Пример #1
0
    void PlayerAction()
    {
        Vector3 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);

        mousePosition.z = -1;
        RaycastHit hit;

        if (Physics.Raycast(mousePosition, Vector3.forward, out hit, Mathf.Infinity, cardLayer))
        {
            ChangeMyCard(hit);
            m_MyActionPhase = m_Action.Wait;
        }

        if (Physics.Raycast(mousePosition, Vector3.forward, out hit, Mathf.Infinity, targetLayer))
        {
            if (hit.collider.gameObject.GetComponent <CellData>().CanPlantBomb&& m_MyBomb != Bomb.Nothing)
            {
                foreach (var item in m_Neighbours)
                {
                    item.GetComponent <CellData>().ShowTile(gameObject.name);
                    item.GetComponent <CellData>().CanPlantBomb = false;
                }
                hit.collider.gameObject.GetComponent <CellData>().PlantBomb(m_MyBomb, gameObject.name);

                SendDropMine(m_MyBomb, hit.collider.gameObject.transform.parent.name);


                m_MyBomb = Bomb.Nothing;

                SendActionDone();
            }
        }
    }
Пример #2
0
    /// <summary>
    /// This method checks if the chest who you're looking for is in the 8 tiles around you.
    ///     <remarks>
    ///         This method is called during the action phase.
    ///     </remarks>
    /// </summary>
    public void CheckIsNearChest()
    {
        if (m_MyBomb != Bomb.Nothing)
        {
            foreach (var item in m_Neighbours)
            {
                item.GetComponent <CellData>().ShowTile(gameObject.name);
                item.GetComponent <CellData>().CanPlantBomb = false;
            }
        }

        bool result = false;

        Debug.Log(m_Neighbours.Count);
        foreach (GameObject item in m_Neighbours)
        {
            if (item.GetComponent <CellData>().isTreasure)
            {
                //call l'affichage d'un message
                result = true;
                break;
            }
            result = false;
        }

        Debug.Log("is CheckIsNearChest =" + result);
        StartCoroutine(m_Canvas.ShowInformation(result, false));

        if (view.IsMine)
        {
            m_MyActionPhase = m_Action.Wait;
            SendActionDone();
        }
    }
Пример #3
0
    void LaunchGame()
    {
        m_Canvas.StartGameUI();
        GestionCartes deck = gameDeck.GetComponent <GestionCartes>();

        terrain = GameObject.FindObjectOfType <GridGen>();
        Instantiate(handGO).transform.parent = GameObject.Find("GamePanel").transform;

        m_MyActionPhase = m_Action.Mouvement;

        m_Canvas.UpdateInterface(m_MyActionPhase, hand);
    }
Пример #4
0
    /// <summary>
    /// This method sends a message to other players that she/he can change his action phase.
    /// </summary>
    void SendChangeTurn()
    {
        m_MyActionPhase = m_Action.Wait;

        m_Canvas.UpdateInterface(m_MyActionPhase, hand);
        byte evCode = 8;                                                                                                         // Custom Event 1: Used as "MoveUnitsToTargetPosition" event

        object[] content = new object[] { transform.GetChild(0).transform.position, FOV, "Je sais pas encore", name, PlayerID }; // Array contains the target position and the IDs of the selected units

        RaiseEventOptions raiseEventOptions = new RaiseEventOptions();

        //raiseEventOptions.CachingOption = EventCaching.AddToRoomCacheGlobal;
        raiseEventOptions.Receivers = ReceiverGroup.All;
        SendOptions sendOptions = new SendOptions();

        sendOptions.DeliveryMode = DeliveryMode.Reliable;
        PhotonNetwork.RaiseEvent(evCode, content, raiseEventOptions, sendOptions);
    }
Пример #5
0
    /// <summary>
    /// This method sends a message to other players that he's/she's waiting to be on action phase .
    /// </summary>
    void SendMouvementDone()
    {
        m_MyActionPhase = m_Action.Wait;
        m_Canvas.UpdateInterface(m_MyActionPhase, hand);

        byte evCode = 4;                                        // Custom Event 1: Used as "MoveUnitsToTargetPosition" event

        object[] content = new object[] { gameObject.name, 2 }; // Array contains the target position and the IDs of the selected units

        RaiseEventOptions raiseEventOptions = new RaiseEventOptions();

        //raiseEventOptions.CachingOption = EventCaching.AddToRoomCacheGlobal;
        raiseEventOptions.Receivers = ReceiverGroup.Others;
        SendOptions sendOptions = new SendOptions();

        sendOptions.DeliveryMode = DeliveryMode.Reliable;
        PhotonNetwork.RaiseEvent(evCode, content, raiseEventOptions, sendOptions);
    }
Пример #6
0
    /// <summary>
    /// This method is call when a player don't want to make an action during the action phase
    /// </summary>
    public void PassTurn()
    {
        if (m_MyBomb != Bomb.Nothing)
        {
            foreach (var item in m_Neighbours)
            {
                item.GetComponent <CellData>().ShowTile(gameObject.name);
                item.GetComponent <CellData>().CanPlantBomb = false;
            }
        }

        Debug.Log("Je passe");
        if (view.IsMine)
        {
            m_MyActionPhase = m_Action.Wait;
            SendActionDone();
        }
    }
Пример #7
0
    public void SendDeckHasChange(Carte drop, Carte get)
    {
        m_MyActionPhase = m_Action.Wait;

        m_Canvas.UpdateInterface(m_MyActionPhase, hand);
        Debug.Log("A player have draw");
        byte evCode = 3;                                             // Custom Event 1: Used as "MoveUnitsToTargetPosition" event

        object[] content = new object[] { drop.cardId, get.cardId }; // Array contains the target position and the IDs of the selected units

        RaiseEventOptions raiseEventOptions = new RaiseEventOptions();

        //raiseEventOptions.CachingOption = EventCaching.AddToRoomCacheGlobal;
        raiseEventOptions.Receivers = ReceiverGroup.Others;
        SendOptions sendOptions = new SendOptions();

        sendOptions.DeliveryMode = DeliveryMode.Reliable;
        PhotonNetwork.RaiseEvent(evCode, content, raiseEventOptions, sendOptions);
    }
Пример #8
0
    /// <summary>
    /// This method checks if the time where you contain the chest who you're looking for
    ///     <remarks>
    ///         This method is called during the action phase.
    ///     </remarks>
    /// </summary>
    public void CheckIsChest()
    {
        if (m_MyBomb != Bomb.Nothing)
        {
            foreach (var item in m_Neighbours)
            {
                item.GetComponent <CellData>().ShowTile(gameObject.name);
                item.GetComponent <CellData>().CanPlantBomb = false;
            }
        }

        RaycastHit hit;

        Physics.Raycast(transform.position + offset, Vector3.forward * 2, out hit, Mathf.Infinity);

        Color color = hit.collider.gameObject != null ? Color.green : Color.red;

        Debug.DrawRay(transform.position + offset, Vector3.forward * 2, color);

        bool result = hit.collider.gameObject.GetComponent <CellData>().isTreasure;

        Debug.Log(hit.collider.gameObject.name);
        Debug.Log("is CheckIsChest =" + result);
        StartCoroutine(m_Canvas.ShowInformation(result, true));

        if (view.IsMine)
        {
            if (!result)
            {
                m_MyActionPhase = m_Action.Wait;
                SendActionDone();
            }
            else
            {
                SendPlayerGetTreasure();
            }
        }
    }
Пример #9
0
    public void OnEvent(EventData photonEvent)
    {
        byte eventCode = photonEvent.Code;

        object[] data;
        switch (eventCode)
        {
        case 0:
            data = (object[])photonEvent.CustomData;
            string playerName = (string)data[0];
            int    playerID   = (int)data[1];
            SetId(playerName, playerID);
            break;

        case 1:
            data = (object[])photonEvent.CustomData;
            LaunchGame();
            break;

        case 2:
            data     = (object[])photonEvent.CustomData;
            playerID = (int)data[0];
            string handID       = (string)data[1];
            int    nbCardInHand = (int)data[2];

            ModifDeck(handID);
            if (PlayerID == playerID + 1 && nbCardInHand == 2)
            {
                MakeHand();
            }
            break;

        case 3:
            data = (object[])photonEvent.CustomData;
            int carteToDeckId = (int)data[0];
            int carteToHandId = (int)data[1];

            UpdateDeck(carteToDeckId, carteToHandId);
            break;

        case 4:
            data       = (object[])photonEvent.CustomData;
            playerName = (string)data[0];
            int phase = (int)data[1];
            Debug.Log("mouvement " + playerName);
            ChangePhase(playerName, phase, true);
            break;

        case 5:
            data       = (object[])photonEvent.CustomData;
            playerName = (string)data[0];

            /*if(view.IsMine)
             *  SendActionDone();*/
            Debug.Log("reçu 5 de la part de +" + playerName);
            m_MyActionPhase = m_Action.Action;
            m_Canvas.UpdateInterface(m_MyActionPhase, hand);
            break;

        case 6:
            //ChangeTurn();
            data       = (object[])photonEvent.CustomData;
            playerName = (string)data[3];

            ChangePhase(playerName, 2, false);

            break;

        case 7:
            data = (object[])photonEvent.CustomData;
            int    typeofMine = (int)data[0];
            string tileName   = (string)data[1];
            string ownerName  = (string)data[2];

            switch (typeofMine)
            {
            case 0:
                GameObject.Find(tileName).transform.GetChild(0).GetComponent <CellData>().UpdateBombState(Bomb.RED, ownerName);
                break;

            case 1:
                GameObject.Find(tileName).transform.GetChild(0).GetComponent <CellData>().UpdateBombState(Bomb.BLACK, ownerName);
                break;

            case 2:
                GameObject.Find(tileName).transform.GetChild(0).GetComponent <CellData>().UpdateBombState(Bomb.WHITE, ownerName);
                break;

            case 3:
                GameObject.Find(tileName).transform.GetChild(0).GetComponent <CellData>().UpdateBombState(Bomb.Nothing, ownerName);
                break;

            default:
                GameObject.Find(tileName).transform.GetChild(0).GetComponent <CellData>().UpdateBombState(Bomb.Nothing, ownerName);
                break;
            }
            ChangeTurn();
            break;

        case 8:
            data = (object[])photonEvent.CustomData;
            Vector3 pos    = (Vector3)data[0];
            float   radius = (float)data[1];
            string  tag    = (string)data[2];
            playerName = (string)data[3];
            int playerId = (int)data[4];

            if (playerId != this.PlayerID)
            {
                UpdateBoard(pos, radius, tag);
            }
            if (m_MyActionPhase == m_Action.Wait)
            {
                SendChangeTurn();
            }

            m_MyActionPhase = m_Action.Mouvement;
            m_Canvas.UpdateInterface(m_MyActionPhase, hand);
            break;

        case 9:
            data = (object[])photonEvent.CustomData;
            int typeOfMine = (int)data[0];
            tileName  = (string)data[1];
            ownerName = (string)data[2];

            Debug.LogWarning(tileName + "   " + ownerName + "   " + typeOfMine);
            GameObject tileGO = GameObject.Find(tileName).transform.GetChild(0).gameObject;

            if (ownerName == this.name)
            {
                Debug.Log("trigger");
                BombTrigger(tileGO.GetComponent <CellData>());
            }
            //tileGO.GetComponent<CellData>().ResetTile();
            break;

        case 10:
            data = (object[])photonEvent.CustomData;
            string cardName = (string)data[0];

            foreach (Carte card in gameDeck.GetComponent <GestionCartes>().allCardsInPlayerHand)
            {
                if (card.cardName == cardName)
                {
                    card.CanTurnCard = true;
                }
            }
            break;

        case 11:
            data            = (object[])photonEvent.CustomData;
            playerName      = (string)data[0];
            m_MyActionPhase = m_Action.End;
            m_Canvas.UpdateInterface(m_MyActionPhase, hand);
            m_Canvas.ShowWinner(playerName);
            break;
        }
    }