You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

87 lines
3.0 KiB

using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using Networking.Server;
public class blockSpawn : MonoBehaviour
{
[SerializeField]
public Inventory.Data[] spawnLogicList;
public List<ClientData> ConnectedClients;
public ClientList clientDataList;
public Block[] SpawnBlocks;
bool spawned = false;
void Awake()
{
ConnectedClients = clientDataList.ConnectedClients;
SpawnBlocks = FindObjectsOfType<Block>().Where(p => p.is_Walkable).ToArray();
}
public void getPlayerScores()
{
ConnectedClients.Sort((b, a) => a.SceneScore.CompareTo(b.SceneScore));
}
public void checkValid(Vector3 spawnposition)
{
for(int i = 0; i < SpawnBlocks.Length; i++)
{
if(spawned == false){
if (SpawnBlocks[i].position.x == spawnposition.x && SpawnBlocks[i].position.z == spawnposition.z)
{
GameObject prefab = Resources.Load("Logic Block") as GameObject;
GameObject block = Instantiate(prefab);
int number = (int)Random.Range(1.0f, spawnLogicList.Length);
block.GetComponent<LogicCollectable_Multiplayer>().Collectable.element = spawnLogicList[number].element;
block.GetComponent<LogicCollectable_Multiplayer>().Collectable.Count = spawnLogicList[number].Count;
block.transform.position = spawnposition;
Debug.Log("Instantiated new logic block: " + spawnLogicList[number].element + " at position: " + block.transform.position);
spawned = true;
break;
}
}
}
if (spawned == false){
//needs to be changed, can get caught in an infinite loop when z is 7/8
if (spawnposition.z >= 2 && spawnposition.z <= 8)
{
spawnposition.z += 1;
checkValid(spawnposition);
}
else if (spawnposition.z >= 8 && spawnposition.z <= 12)
{
spawnposition.z -= 1;
checkValid(spawnposition);
}
}
}
public void getPlayerLocations()
{
Vector3 spawnposition = new Vector3(0, 1, 0);
Vector2 playerTwo = new Vector2(ConnectedClients[1].playerCharacter.CurrentBlock.VisualPosition.x, ConnectedClients[1].playerCharacter.CurrentBlock.VisualPosition.z);
Vector2 playerOne = new Vector2(ConnectedClients[0].playerCharacter.CurrentBlock.VisualPosition.x, ConnectedClients[0].playerCharacter.CurrentBlock.VisualPosition.z);
//x
if (playerOne.x > playerTwo.x)
{
spawnposition.x = ((playerOne.x - playerTwo.x)/2) + playerTwo.x;
}
else
{
spawnposition.x = ((playerTwo.x - playerOne.x)/2) + playerOne.x;
}
//z
if (playerOne.y > playerTwo.y)
{
spawnposition.z = ((playerOne.y - playerTwo.y)/2) + playerTwo.y;
}
else
{
spawnposition.z = ((playerTwo.y - playerOne.y)/2) + playerOne.y;
}
checkValid(spawnposition);
}
}