Пример #1
0
    public void PlayerCard(RuntimeCard _card)
    {
        //RUN LOCAL SIMULATION
        GameFunctions.MoveCard(playerData.handZone, playerData.boardZone, _card.guid);
        //SEND MESSAGE TO SERVER
        MoveCardMessage moveCardMessgae = new MoveCardMessage()
        {
            playerGuid  = playerData.guid,
            cardGuid    = _card.guid,
            from_ZoneId = 0,
            to_ZoneId   = 1
        };

        GameClient.Active.SendMessageToServer(moveCardMessgae);
    }
    private void OnCardMoved(MessageBase _msg, NetworkConnection _connection)
    {
        if (server.madeMoves < 1)
        {
            //convert message
            MoveCardMessage _moveCardMessgae = _msg as MoveCardMessage;
            //get the server player
            int playerIndex = server.players.IndexOf(server.players.Find(x => x.guid == _moveCardMessgae.playerGuid));
            //move the card on the server
            GameFunctions.MoveCard(server.players[playerIndex].GetZone(_moveCardMessgae.from_ZoneId), server.players[playerIndex].GetZone(_moveCardMessgae.to_ZoneId), _moveCardMessgae.cardGuid);
            //tell other players that the card has moved
            BroadcastMoveCardMessgae(server.players[playerIndex].guid, _moveCardMessgae.cardGuid, _moveCardMessgae.from_ZoneId, _moveCardMessgae.to_ZoneId);

            server.madeMoves++;
        }
        else
        {
            UnityEngine.Debug.Log(server.LogPrefix + "Illigal move detected");
        }
    }