public override void Initialise() { base.Initialise(); EntityFactory = ModuleMatch.GetModule <MapStateModule>().GetWorldState().GetData <BloodAndBileEngine.WorldState.WorldStateData.WorldEntityFactory>(); EntityFactory.RegisterOnEntityCreatedCallback(OnEntitySpawned); SpawnPlayers(); }
/// <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(); } }
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é !"); } } }
BloodAndBileEngine.WorldState.WorldState GetWorldState() { return(ModuleMatch.GetModule <MapStateModule>().GetWorldState()); }