void ScoutEffect(int q, int r, CubeScout scout) { Vector2Int curr = new Vector2Int(scout.Q, scout.R); Vector2Int next = new Vector2Int(q, r); if (structureStore.HasStructure(next[0], next[1])) { boardState.AddNode(q, r, scout.GetPlayer(), scout.GetDamage()); } else { boardState.AddNode(q, r, scout.GetPlayer(), scout.GetInfluence()); } if (scoutPos.ContainsKey(next)) { RemoveScout(scout, curr); RemoveScout(scoutPos[next], next); } else if (structureStore.HasStructure(next[0], next[1]) && structureStore.GetStructure(next[0], next[1]).GetPlayer() != scout.GetPlayer()) { RemoveScout(scout, curr); } else { scoutPos.Remove(curr); scout.SetCoords(next[0], next[1]); scoutPos[next] = scout; } scout.DecMoves(); if (scout.GetMoves() <= 0) { RemoveScout(scout, next); } }
public void SpawnScout(Cube cube, Color color) { float cubeY = cube.transform.position.y; Vector3 tilePos = boardState.GetNodeTile(cube.Q, cube.R).gameObject.transform.position; Vector3 pos = new Vector3(tilePos.x, cubeY - 0.25f, tilePos.z); GameObject scout = Instantiate(cubeScoutPrefab, pos, cubeScoutPrefab.transform.rotation, this.transform) as GameObject; scout.GetComponent <MeshRenderer>().material.SetColor("_BaseColor", color * 5); CubeScout currScout = scout.GetComponent <CubeScout>(); currScout.SetHome(cube.Q, cube.R); currScout.SetCoords(cube.Q, cube.R); currScout.SetPlayer(cube.Player); currScout.SetMoveRate(cube.GetMoveRate()); currScout.SetMoves(cube.GetNumMoves()); currScout.AddVisited(cube.Q, cube.R); currScout.SetDamage(cube.GetDamage()); currScout.SetInfluence(cube.GetInfluence()); scouts.Add(currScout); scoutPos[new Vector2Int(currScout.Q, currScout.R)] = currScout; StartCoroutine(Drop(currScout, color)); }