Beispiel #1
0
    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;
        }
    }
Beispiel #2
0
    // 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>();
         */
    }
Beispiel #3
0
    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);
        }
    }
Beispiel #4
0
    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);
                }
            }
        }
    }