示例#1
0
 public override void Initialise()
 {
     base.Initialise();
     EntityFactory = ModuleMatch.GetModule <MapStateModule>().GetWorldState().GetData <BloodAndBileEngine.WorldState.WorldStateData.WorldEntityFactory>();
     EntityFactory.RegisterOnEntityCreatedCallback(OnEntitySpawned);
     SpawnPlayers();
 }
示例#2
0
    /// <summary>
    /// Renvoi true si toutes les conditions de victoire sont réunies.
    /// </summary>
    protected virtual void CheckVictoryConditions()
    {
        int livingPlayersAmount = -1;

        EntitiesManagerModule entitiesModule = ModuleMatch.GetModule <EntitiesManagerModule>();

        if (entitiesModule != null)
        {
            livingPlayersAmount = entitiesModule.GetPlayerControlledEntityLinks().Length;
        }

        if (livingPlayersAmount > -1 && livingPlayersAmount <= VICTORIOUS_PLAYER_AMOUNT)
        {
            BloodAndBileEngine.Debugger.Log("FIN DU MATCH");
            // Envoi d'un message de victoire à tous les joueurs en vie.
            List <int> victoriousPlayers = new List <int>();
            foreach (EntitiesManagerModule.PlayerToEntityLink link in entitiesModule.GetPlayerControlledEntityLinks())
            {
                OnVictoriousPlayer(link.ConnectionID);
                victoriousPlayers.Add(link.ConnectionID);
            }
            // Envoi d'un message de défaite à tous les joueurs morts
            foreach (int coID in ModuleMatch.GetPlayerConnectionIDs())
            {
                if (!victoriousPlayers.Contains(coID))
                {
                    OnDefeatedPlayer(coID);
                }
            }
            ModuleMatch.EndMatch();
        }
    }
示例#3
0
    void SpawnPlayers()
    {
        //Création des joueurs, placement sur la map, et assignation d'un connexionID pour chaque

        List <int> usedCells = new List <int>();

        foreach (int coId in ModuleMatch.GetPlayerConnectionIDs())
        {
            BloodAndBileEngine.WorldState.Cell cell = ModuleMatch.GetModule <MapStateModule>().GetWorldState().GetData <BloodAndBileEngine.WorldState.CellSystem>().FindSpawnPoint(usedCells.ToArray());
            if (cell != null)
            {
                usedCells.Add(cell.ID);
                BloodAndBileEngine.Entity player = SpawnPlayer(coId, cell);
                SetControlledEntity(coId, player);
                BloodAndBileEngine.Debugger.Log("Entité joueur d'ID " + player.ID + " associée à la connexion d'ID " + coId);
            }
            else
            {
                BloodAndBileEngine.Debugger.Log("Aucun point de spawn trouvé !");
            }
        }
    }
示例#4
0
 BloodAndBileEngine.WorldState.WorldState GetWorldState()
 {
     return(ModuleMatch.GetModule <MapStateModule>().GetWorldState());
 }