Exemple #1
0
    private void OnVictory()
    {
        StateManager.GetSingleton.State = StateManager.GameState.Victory;
        SoundManager.GetSingularity.CleanProjectileSound();
        currentState = VictoryStates.PlayerComingOut;

        inputInfo.SetActive(false);
        lettersInfo.SetActive(true);

        gameManager.OnWin();

        playersLife = new LifeBehavior[numberPlayers];
        for (int i = 0; i < numberPlayers; i++)
        {
            if (gameManager.PlayerControllers[i])
            {
                playersLife[i] = gameManager.PlayerControllers[i].gameObject.GetComponent <LifeBehavior>();
            }
        }
        var connected = PlayerConnected.GetSingleton.playerArrayConnected;

        for (int i = 0; i < connected.Length; i++)
        {
            if (connected[i])
            {
                playerConnected.Add(PlayerConnected.GetSingleton.getPlayer(i));
            }
        }
    }
Exemple #2
0
    public void Init()
    {
        currentState = VictoryStates.NotWin;
        BaseEnemy[] allEnemies = GameObject.FindObjectsOfType <BaseEnemy>();
        numberEnemyInLevel   = allEnemies.Length;
        currentEnemiesKilled = 0;
        //print("enemies = " + string.Join(" ", allEnemies.Select(e => e.name).ToArray()));

        playerUIReady = 0;
    }
Exemple #3
0
 public static void EndRound(VictoryStates VictoryState, byte TeamWon, byte RoundEndMusicIndex)
 {
     RoundTimer = 10; RoundEnded = true;
     if (MultiPlayer.Type() == MultiPlayer.Types.Server)
     {
         List <object> Details = new List <object>();
         Details.Add((byte)VictoryState);
         if (VictoryState == VictoryStates.Team)
         {
             Details.Add(TeamWon);
         }
         Details.Add(RoundEndMusicIndex);
         MultiPlayer.Send(MultiPlayer.Construct(Packets.EndRound, Details));
     }
 }
Exemple #4
0
    private void Victory()
    {
        switch (currentState)
        {
        case VictoryStates.NotWin:
            // Rien a faire tant que la partie n'est pas gagnée
            break;

        case VictoryStates.PlayerComingOut:
            if (lastState != currentState)
            {
                // On change le layer des players pour qu'ils ne soient plus bloqués
                //GameObject[] players = GameObject.FindGameObjectsWithTag("Player");

                //ici changement, on a déjà une liste des players dans le gameManager
                PlayerController[] players = GameManager.GetSingleton.PlayerControllers;

                for (int i = 0; i < players.Length; i++)
                {
                    //players[i].layer = 14;
                    if (players[i] != null)
                    {
                        players[i].gameObject.layer = 14;
                    }
                }
            }

            // On attends que tous les players aient disparus de l'écran (kill) avant de passer à la phase suivante
            int numberDeath = 0;
            for (int i = 0; i < playersLife.Length; i++)
            {
                if (!playersLife[i] || playersLife[i].CurrentLife <= 0)
                {
                    numberDeath++;
                }
            }
            //print("number death : " + numberDeath);
            if (numberDeath >= numberPlayers)     // si tous les joueurs sont mort -> étape suivante
            {
                NextState();
            }

            break;

        case VictoryStates.DisplayUI:
            // TODO : Fade in ?
            if (lastState != currentState)
            {
                SoundManager.GetSingularity.PlayMenuMusic();

                //print("Victory State : DisplayUI");
                panelWin.SetActive(true);
                NextState();
            }
            break;

        case VictoryStates.PlayerUIComing:
            if (lastState != currentState)     // Activation que la première fois, on risque de passer plusieurs fois ici
            {
                //print("Victory State : PlayerUIComing");

                foreach (var playerInUI in playerUiWin)
                {
                    playerInUI.SetActive(true);
                }
            }

            if (playerUIReady >= numberPlayers)
            {
                NextState();
            }
            break;

        case VictoryStates.DisplayScore:
            if (lastState != currentState)
            {
                SoundManager.GetSingularity.PlayScoreSound();
                for (int i = 0; i < playerScoreInUI.Count; i++)
                {
                    playerScoreInUI[i].enabled = true;
                }

                foreach (var name in playerNameInUI)
                {
                    name.SetActive(true);
                }

                foreach (var playerLetters in playerLettersInUI)
                {
                    playerLetters.SetActive(true);
                }

                if (!coroutineScoreLaunched)
                {
                    StartCoroutine(AddScoreToPlayer(frequencyAddScore, scoreToAdd, gameManager.ScoreManager.Data));
                }
            }

            break;

        case VictoryStates.DisplayWinner:
            if (lastState != currentState)
            {
                NextState();     // pour l'instant on passe à la suite
                setCourone();
            }

            break;

        case VictoryStates.EnteringNames:
            if (lastState != currentState)
            {
                StartCoroutine(BlinkLetters(blinkFrequency));
                bool[] arePlayersConnected = gameManager.PlayersInGame;
                for (int i = 0; i < arePlayersConnected.Length; i++)
                {
                    if (!arePlayersConnected[i])
                    {
                        currentLetterEditing[i] = 3;
                    }
                }
            }

            int numberPlayersReady = currentLetterEditing.Where(l => l == 3).Count();
            if (numberPlayersReady >= 4)
            {
                NextState();
            }
            break;

        case VictoryStates.Ready:
            if (lastState != currentState)
            {
                inputInfo.SetActive(true);
                lettersInfo.SetActive(false);

                PlayerData datas = gameManager.ScoreManager.Data;
                for (int i = 0; i < datas.scorePlayer.Count; i++)
                {
                    if (datas.scorePlayer[i] > 0 && i < 4)
                    {
                        string playerName = playerNames[i][0].ToString() + playerNames[i][1].ToString() + playerNames[i][2].ToString();
                        Leaderboard.GetSingleton.AddNewHighscore(playerName, datas.scorePlayer[i]);
                    }
                }
            }
            break;

        default:
            Debug.LogError("Etat de victoire non géré (voir le WinManager)");
            break;
        }

        lastState = currentState;
    }
Exemple #5
0
        public static void Read(Packets Packet, NetIncomingMessage I)
        {
            switch (Packet)
            {
            case Packets.Connection:
                if (MultiPlayer.Type("Game") == MultiPlayer.Types.Server)
                {
                    var ClientVersion = I.ReadUInt64();
                    if (ClientVersion == Globe.Version)
                    {
                        var Connector = Player.Add(new Player(I.ReadString())
                        {
                            Connection = I.SenderConnection
                        });
                        if (Connector != null)
                        {
                            if ((GameType == GameTypes.TeamDeathmatch) || (GameType == GameTypes.TeamStandard))
                            {
                                Connector.Team = (byte)((TeamCount(1) > TeamCount(2)) ? 2 : ((TeamCount(2) > TeamCount(1)) ? 1 : Globe.Random(1, 2)));
                            }
                            MultiPlayer.Send("Game", MultiPlayer.Construct("Game", Packet, Connector.Slot, Connector.Name, Connector.Team), I.SenderConnection);
                            var Details = new List <object>();
                            Details.Add((byte)GameType); Details.Add(RespawnTimer);
                            Details.Add(Connector.Team);
                            for (byte i = 0; i < Players.Length; i++)
                            {
                                if ((Players[i] != null) && (Players[i] != Connector))
                                {
                                    Details.Add(true);
                                    Details.Add(Players[i].Name);
                                    Details.Add(Players[i].Team);
                                }
                                else
                                {
                                    Details.Add(false);
                                }
                            }
                            I.SenderConnection.Approve(MultiPlayer.Construct("Game", Packets.Initial, (byte)Players.Length, Connector.Slot, Details));
                        }
                        else
                        {
                            I.SenderConnection.Deny("Full");
                        }
                    }
                    else
                    {
                        I.SenderConnection.Deny("Version indifference, Client: " + ClientVersion + " - Server: " + Globe.Version);
                    }
                }
                else if (MultiPlayer.Type("Game") == MultiPlayer.Types.Client)
                {
                    var Slot = I.ReadByte();
                    Player.Set(Slot, new Player(I.ReadString())
                    {
                        Team = I.ReadByte()
                    });
                }
                break;

            case Packets.Disconnection:
                var Disconnector = ((MultiPlayer.Type("Game") == MultiPlayer.Types.Server)
                        ? Player.Get(I.SenderConnection)
                        : ((MultiPlayer.Type("Game") == MultiPlayer.Types.Client) ? Players[I.ReadByte()] : null));
                if (Disconnector != null)
                {
                    Player.Remove(Disconnector);
                }
                if (MultiPlayer.Type("Game") == MultiPlayer.Types.Server)
                {
                    MultiPlayer.Send("Game", MultiPlayer.Construct("Game", Packets.Disconnection, Disconnector.Slot),
                                     I.SenderConnection);
                }
                break;

            case Packets.Initial:
                if (MultiPlayer.Type("Game") == MultiPlayer.Types.Client)
                {
                    Players   = new Player[I.ReadByte()];
                    Self      = Player.Set(I.ReadByte(), new Player(MpName));
                    GameType  = (GameTypes)I.ReadByte(); RespawnTimer = I.ReadDouble();
                    Self.Team = I.ReadByte();
                    for (byte i = 0; i < Players.Length; i++)
                    {
                        if (I.ReadBoolean())
                        {
                            Players[i] = new Player(i, I.ReadString())
                            {
                                Team = I.ReadByte()
                            };
                        }
                    }
                    State = States.RequestMap;
                    Timers.Add("Positions", (1 / 30d));
                }
                break;

            case Packets.RequestMap:
                if (MultiPlayer.Type() == MultiPlayer.Types.Server)
                {
                    List <object> Details = new List <object>();
                    Details.AddRange(GetSyncedMap);
                    Details.Add((byte)State);
                    MultiPlayer.SendTo(MultiPlayer.Construct(Packet, Details), I.SenderConnection);
                }
                else if (MultiPlayer.Type() == MultiPlayer.Types.Client)
                {
                    Map = ReadSyncedMap(I); State = (States)I.ReadByte();
                }
                break;

            case Packets.Position:
                var Sender = ((MultiPlayer.Type("Game") == MultiPlayer.Types.Server)
                        ? Player.Get(I.SenderConnection)
                        : null);
                Vector2 Position;
                float   Angle;
                if (MultiPlayer.Type("Game") == MultiPlayer.Types.Server)
                {
                    if (Sender != null)
                    {
                        Sender.Position = I.ReadVector2();
                        Sender.Angle    = I.ReadFloat();
                    }
                }
                else if (MultiPlayer.Type("Game") == MultiPlayer.Types.Client)
                {
                    var Count = (byte)((I.LengthBytes - 1) / 12);
                    for (byte i = 0; i < Count; i++)
                    {
                        Sender   = Players[I.ReadByte()];
                        Position = I.ReadVector2();
                        Angle    = I.ReadFloat();
                        if (Sender != null)
                        {
                            Sender.Position = Position;
                            Sender.Angle    = Angle;
                        }
                    }
                }
                break;

            case Packets.PlaceFore:
                byte ID = I.ReadByte(); ushort x = I.ReadUInt16(), y = I.ReadUInt16(); byte TAngle = I.ReadByte();
                Map.PlaceFore(ID, x, y, TAngle);
                if (MultiPlayer.Type("Game") == MultiPlayer.Types.Server)
                {
                    MultiPlayer.Send(MultiPlayer.Construct(Packet, ID, x, y, TAngle), I.SenderConnection);
                }
                break;

            case Packets.ClearFore:
                x = I.ReadUInt16(); y = I.ReadUInt16();
                Map.ClearFore(x, y);
                if (MultiPlayer.Type("Game") == MultiPlayer.Types.Server)
                {
                    MultiPlayer.Send(MultiPlayer.Construct(Packet, x, y), I.SenderConnection);
                }
                break;

            case Packets.PlaceBack:
                ID = I.ReadByte(); x = I.ReadUInt16(); y = I.ReadUInt16();
                Map.PlaceBack(ID, x, y);
                if (MultiPlayer.Type("Game") == MultiPlayer.Types.Server)
                {
                    MultiPlayer.Send(MultiPlayer.Construct(Packet, ID, x, y), I.SenderConnection);
                }
                break;

            case Packets.ClearBack:
                x = I.ReadUInt16(); y = I.ReadUInt16();
                Map.ClearBack(x, y);
                if (MultiPlayer.Type("Game") == MultiPlayer.Types.Server)
                {
                    MultiPlayer.Send(MultiPlayer.Construct(Packet, x, y), I.SenderConnection);
                }
                break;

            case Packets.Fire:
                Sender   = ((MultiPlayer.Type("Game") == MultiPlayer.Types.Server) ? Player.Get(I.SenderConnection) : Players[I.ReadByte()]);
                Position = I.ReadVector2(); Angle = I.ReadFloat();
                Sender.Fire(Position, Angle);
                if (MultiPlayer.Type() == MultiPlayer.Types.Server)
                {
                    MultiPlayer.Send(MultiPlayer.Construct(Packet, Sender.Slot, Position, Angle), I.SenderConnection);
                }
                break;

            case Packets.Death:
                Sender        = ((MultiPlayer.Type("Game") == MultiPlayer.Types.Server) ? Player.Get(I.SenderConnection) : Players[I.ReadByte()]);
                Sender.Killer = Players[I.ReadByte()];
                Sender.Die();
                if (MultiPlayer.Type() == MultiPlayer.Types.Server)
                {
                    MultiPlayer.Send(MultiPlayer.Construct(Packet, Sender.Slot, Sender.Killer.Slot), I.SenderConnection);
                }
                break;

            case Packets.Respawn:
                Sender   = ((MultiPlayer.Type("Game") == MultiPlayer.Types.Server) ? Player.Get(I.SenderConnection) : Players[I.ReadByte()]);
                Position = I.ReadVector2();
                Sender.Respawn(Position);
                if (MultiPlayer.Type() == MultiPlayer.Types.Server)
                {
                    MultiPlayer.Send(MultiPlayer.Construct(Packet, Sender.Slot, Position), I.SenderConnection);
                }
                break;

            case Packets.EndRound:
                VictoryStates VictoryState = (VictoryStates)I.ReadByte();
                byte          TeamWon = ((VictoryState == VictoryStates.Team) ? I.ReadByte() : (byte)0);
                byte          RoundEndMusicIndex = I.ReadByte();
                EndRound(VictoryState, TeamWon, RoundEndMusicIndex);
                break;

            case Packets.NewRound: NewRound(); break;
            }
        }