public void SplaceShip(int id, int r) { Room room = Rooms[r - 1]; GameObject piece; GameObject clone; piece = GameObject.Find(id.ToString() + "S"); if (id < 7) { clone = Instantiate(piece); clone.name = s + "S"; clone.GetComponent <Piece>().id = s; s += 1; PieceLabel cloneL = clone.GetComponent <PieceLabel>(); Destroy(cloneL); } else { clone = piece; } Piece cloneS = clone.GetComponent <Piece>(); gs.shipCost(1); cloneS.picked = false; clone.transform.position = new Vector3(room.transform.position.x, piece.transform.position.y, room.transform.position.z); int pieces = 0; foreach (int k in room.shipPieces.Keys) { if (room.shipPieces[k] == null) { room.shipPieces[k] = cloneS; pieces = k; cloneS.home = room.gameObject; cloneS.placed = true; break; } } if (pieces == 1) { clone.transform.position += (1.5f * Vector3.forward + 2 * Vector3.left); } else if (pieces == 2) { clone.transform.position += 1.5f * Vector3.forward + 2 * Vector3.right; } else if (pieces == 3) { clone.transform.position += 1.5f * Vector3.back + 2 * Vector3.left; } else if (pieces == 4) { clone.transform.position += 1.5f * Vector3.back + 2 * Vector3.right; } }
// Use this for initialization void Start() { camera = GameObject.Find("Camera1").GetComponent <Camera>(); cameraS = camera.GetComponent <cameraController>(); server = GameObject.FindObjectOfType <Server>(); home = null; g = FindObjectOfType <gameState>(); label = gameObject.AddComponent <PieceLabel>() as PieceLabel; label.target = this; /* * if (transform.parent.parent.gameObject.name == "pirateBoard") * server = GameObject.Find("PirateServer").GetComponent<Server>(); * else * server = GameObject.Find("ShipServer").GetComponent<Server>(); */ }
public void SplacePirate(int id, int r) { Room room = Rooms[r - 1]; GameObject piece; GameObject clone; piece = GameObject.Find(id.ToString() + "P"); if (id < 9) { clone = Instantiate(piece); clone.name = p + "P"; clone.GetComponent <Piece>().id = p; p += 1; PieceLabel cloneL = clone.GetComponent <PieceLabel>(); Destroy(cloneL); } else { clone = Instantiate(piece); PieceLabel cloneL = clone.GetComponent <PieceLabel>(); Destroy(cloneL); Destroy(piece.GetComponent <PieceLabel>().text); Destroy(piece.GetComponent <PieceLabel>()); Destroy(piece); clone.name = clone.GetComponent <Piece>().id.ToString() + "P"; } Piece cloneS = clone.GetComponent <Piece>(); cloneS.picked = false; clone.transform.position = new Vector3(room.transform.position.x, piece.transform.position.y, room.transform.position.z); int pieces = 0; foreach (int k in room.piratePieces.Keys) { if (room.piratePieces[k] == null) { room.piratePieces[k] = cloneS; pieces = k; cloneS.home = room.gameObject; cloneS.placed = true; break; } } if (pieces == 1) { clone.transform.position += 1.5f * Vector3.forward; } else if (pieces == 2) { clone.transform.position += 1.5f * Vector3.left; } else if (pieces == 3) { clone.transform.position += 1.5f * Vector3.right; } else if (pieces == 4) { clone.transform.position += 1.5f * Vector3.back; } gs.reveal(room); cloneS.T = true; if (id < 9) { gs.pirateCost(cloneS.Cost); } }
void OnMouseDown() { if ((g.phase % 2 == 1 || cameraS.type == "Ship") && type == "Pirate") { return; } if ((g.phase % 2 == 0 || cameraS.type == "Pirate") && type == "Ship") { return; } if ((g.phase > 2 && !placed && type == "Ship") || (g.phase < 3 && placed)) { return; } if (type == "Pirate" && T == true && placed) { return; } if (Name == "Generators") { if (g.shipCost(1)) { g.gen++; server.genAdd(); } return; } RaycastHit hit; Physics.Raycast(transform.position, Vector3.down, out hit); if (!picked) { if (!placed) { GameObject clone = Instantiate(this.gameObject); Piece cloneS = clone.GetComponent <Piece>(); cloneS.picked = true; clone.transform.position += Vector3.up; PieceLabel cloneL = clone.GetComponent <PieceLabel>(); Destroy(cloneL); return; } picked = true; transform.position += Vector3.up; if (hit.transform.gameObject.tag == "Room") { Room room = (Room)hit.transform.gameObject.GetComponent(typeof(Room)); if (type == "Ship") { if (E == false) { picked = false; transform.position -= Vector3.up; if (!g.shipCost(Cost)) { return; } server.Cost(Cost); foreach (Piece p in room.piratePieces.Values) { attack(p); } } } else { foreach (int k in room.piratePieces.Keys) { if (room.piratePieces[k] == this) { room.piratePieces[k] = null; break; } } } } } else { if (!Physics.Raycast(transform.position, Vector3.down, out hit)) { if (!placed) { Destroy(label.text); Destroy(label.gameObject); Destroy(gameObject); } else { Return(); } return; } if (hit.transform.gameObject.tag == "Room") { if (type == "Ship" && placed) { Return(); return; } picked = false; transform.position -= Vector3.up; transform.position = new Vector3(hit.transform.position.x, transform.position.y, hit.transform.position.z); Room room = (Room)hit.transform.gameObject.GetComponent(typeof(Room)); int pieces = 0; if (type == "Ship") { if (room.Breach) { transform.position += Vector3.up; picked = true; return; } foreach (int k in room.shipPieces.Keys) { if (room.shipPieces[k] == null) { if (!placed && !g.shipCost(1)) { Destroy(label.text); Destroy(label.gameObject); Destroy(gameObject); return; } room.shipPieces[k] = this; pieces = k; home = hit.transform.gameObject; placed = true; break; } } if (pieces == 1) { transform.position += (1.5f * Vector3.forward + 2 * Vector3.left); } else if (pieces == 2) { transform.position += 1.5f * Vector3.forward + 2 * Vector3.right; } else if (pieces == 3) { transform.position += 1.5f * Vector3.back + 2 * Vector3.left; } else if (pieces == 4) { transform.position += 1.5f * Vector3.back + 2 * Vector3.right; } else { picked = true; transform.position += Vector3.up; } server.placePiece(this, room.roomNumber); id = server.s; name = id + "S"; server.s++; } else if (type == "Pirate") { foreach (int k in room.piratePieces.Keys) { if (room.piratePieces[k] == null) { if (!placed) { if (!placed && !g.pirateCost(Cost)) { Destroy(label.text); Destroy(label.gameObject); Destroy(gameObject); return; } if (!room.Breach) { picked = true; transform.position += Vector3.up; return; } } else if (home != hit.transform.gameObject) { if (!room.neighbors.Contains(home.gameObject)) { picked = true; transform.position += Vector3.up; return; } T = true; g.reveal(room); } room.piratePieces[k] = this; home = hit.transform.gameObject; pieces = k; break; } } if (pieces == 1) { transform.position += 1.5f * Vector3.forward; } else if (pieces == 2) { transform.position += 1.5f * Vector3.left; } else if (pieces == 3) { transform.position += 1.5f * Vector3.right; } else if (pieces == 4) { transform.position += 1.5f * Vector3.back; } else { picked = true; transform.position += Vector3.up; } server.placePiece(this, room.roomNumber); if (!placed) { placed = true; id = server.p; name = server.p + "P"; server.p++; } } } else if (hit.transform.gameObject.tag == "Piece") { Piece target = (Piece)hit.transform.GetComponent(typeof(Piece)); if (target.type != type) { attack(target); } } } }