Beispiel #1
0
    public PlayerTurnData(PutPlayRequestData lastPutPlay, ClientController.PlayerState role)
    {
        this.lastPlay       = lastPutPlay;
        this.playedThisTurn = false;
        this.role           = role;
        playingRole         = role;

        int colorToGet = nextUiColor;

        IncrementeNextUIColor();
        _uiColor = (UIColors)colorToGet;
    }
Beispiel #2
0
    protected override void PutPlayCommand(UdpNetworkDriver driver, NetworkConnection connection, DataStreamReader strm)
    {
        PutPlayRequestData requestReceived = new PutPlayRequestData(strm);

        TimeLogger.Log("SERVER - {0}[{1}] request - PutPlay (({2:00},{3:00}) ({4:00},{5:00}) ({6}))",
                       requestReceived.playerId, connection.InternalId, requestReceived.movementTo.x, requestReceived.movementTo.y, requestReceived.sound.x, requestReceived.sound.y, requestReceived.PlayerAttacked);

        PutPlayEvent?.Invoke(requestReceived);

        PutPlayResponseData response = new PutPlayResponseData(requestReceived.playerId);
        IJob job = DataPackageWrapper.CreateSendDataJob(driver, connection, response.DataToArray());

        jobHandler.QueueJob(job);
    }
Beispiel #3
0
    public void InsertNewPlayTurnData(PutPlayRequestData putPlayData)
    {
        int playerId = putPlayData.playerId;

        PlayerTurnData turnData;

        if (playerTurnDict.TryGetValue(playerId, out turnData))
        {
            turnData.InputNewPutPlay(putPlayData);
        }
        else
        {
            throw new System.Exception(string.Format("SERVER - client {0} should have a play entry already", putPlayData.playerId));
        }
    }
Beispiel #4
0
    public void SchedulePutPlayRequest(Vector2Int movementTo, Vector2Int sound, bool attacked)
    {
        int  id   = ClientId;
        int  movX = movementTo.x;
        int  movY = movementTo.y;
        int  sndX = sound.x;
        int  sndY = sound.y;
        bool atk  = attacked;

        PutPlayRequestData request = new PutPlayRequestData(id, movX, movY, sndX, sndY, atk);

        TimeLogger.Log("CLIENT {0} - schedule request - PutPlay (({1:00},{2:00}) ({3:00},{4:00}) ({5}))", id, movX, movY, sndX, sndY, atk);

        IJob job = DataPackageWrapper.CreateSendDataJob(m_ClientDriver, m_clientToServerConnection[0], request.DataToArray());

        jobHandler.QueueJob(job);
    }
Beispiel #5
0
    List <int> ProcessAttacks()
    {
        List <Color> attackingColors = new List <Color>();

        // Get attacks positions
        List <Vector2Int> attackList = new List <Vector2Int>();

        foreach (int key in serverController.PlayerTurnDict.Keys)
        {
            PlayerTurnData data;
            serverController.PlayerTurnDict.TryGetValue(key, out data);
            PutPlayRequestData lastPlay = data.lastPlay;
            if (lastPlay.PlayerAttacked)
            {
                attackList.Add(lastPlay.movementTo);
                attackingColors.Add(data.GetUIColorMaterial().color);
            }
        }

        uiController.SetAlienFeedback(attackingColors);

        // Check if players was in attack positions
        List <int> playersAttacked = new List <int>();

        foreach (int key in serverController.PlayerTurnDict.Keys)
        {
            PlayerTurnData data;
            serverController.PlayerTurnDict.TryGetValue(key, out data);
            PutPlayRequestData lastPlay = data.lastPlay;

            foreach (Vector2Int attackPosition in attackList)
            {
                if (!lastPlay.PlayerAttacked && lastPlay.movementTo == attackPosition)
                {
                    playersAttacked.Add(lastPlay.playerId);
                    serverController.State.IncreaseDead();
                    TimeLogger.Log("SERVER - player {0} attacked!", lastPlay.playerId);
                    break;
                }
            }
        }

        return(playersAttacked);
    }
Beispiel #6
0
    List <int> ProcessHumanEscapees()
    {
        List <int> playersEscapees = new List <int>();

        foreach (int key in serverController.PlayerTurnDict.Keys)
        {
            PlayerTurnData data;
            serverController.PlayerTurnDict.TryGetValue(key, out data);
            PutPlayRequestData lastPlay = data.lastPlay;

            if (data.role == ClientController.PlayerState.Human && serverController.GetTileType(BoardManager.TranslateTilePositionToCode(lastPlay.movementTo)) == BoardManager.PossibleTypes.EscapePod)
            {
                playersEscapees.Add(lastPlay.playerId);
                TimeLogger.Log("SERVER - player {0} escaped!", lastPlay.playerId);
                serverController.State.IncreaseEscapees();
                break;
            }
        }

        return(playersEscapees);
    }
Beispiel #7
0
 void PutPlayEventCallback(PutPlayRequestData requestReceived)
 {
     PutPlayEvent?.Invoke(requestReceived);
 }
Beispiel #8
0
 void PutPlayEvent(PutPlayRequestData requestReceived)
 {
     this.InsertNewPlayTurnData(requestReceived);
 }
Beispiel #9
0
    public void InsertNewPlayTurnData(int playerId, Vector2Int movementTo, Vector2Int soundIn, bool attacked)
    {
        PutPlayRequestData playerData = new PutPlayRequestData(playerId, movementTo.x, movementTo.y, soundIn.x, soundIn.y, attacked);

        InsertNewPlayTurnData(playerData);
    }
Beispiel #10
0
 public void InputNewPutPlay(PutPlayRequestData newPutPlay)
 {
     this.lastPlay       = newPutPlay;
     this.playedThisTurn = true;
 }