public override void ApplyEvent(GameWorldController gameWorldController, GameEvent.OnEventCompleteDelegate onComplete) { RoomData currentRoom = gameWorldController.Model.CurrentGame.CurrentRoom; base.ApplyEvent(gameWorldController, onComplete); if (currentRoom.RoomKey.Equals(m_mobState.CurrentRoomKey)) { // Add the mob state to the current game state currentRoom.SetMobById(m_mobState.mob_id, m_mobState); // Create a new mob entity using the mob data just set in the game state { MobEntity mobEntity = new MobEntity(m_mobState.mob_id); mobEntity.AddToGameWorld(gameWorldController); } } // Completes immediately if (onComplete != null) { onComplete(); } }
public void OnRoomLoaded(RoomKey roomKey) { RoomData currentRoom = m_gameWorldModel.GetRoomData(roomKey); // Get a list of all the characters that are in the same room as my character List <int> characterIDList = m_gameWorldModel.GetCharacterIDListInRoom(roomKey); // Remove any existing character List <int> allCharacterIds = new List <int>(m_gameWorldModel.GetCharacterEntityMap().Keys); foreach (int characterEntityId in allCharacterIds) { CharacterEntity characterEntity = m_gameWorldModel.GetCharacterEntity(characterEntityId); characterEntity.RemoveFromGameWorld(this); } // (Re)Create character entities for each character in the room foreach (int characterID in characterIDList) { CharacterEntity newCharacterEntity = new CharacterEntity(characterID); newCharacterEntity.AddToGameWorld(this); } // Remove any existing mobs List <int> allMobIds = new List <int>(m_gameWorldModel.GetMobEntityMap().Keys); foreach (int mobEntityId in allMobIds) { MobEntity mobEntity = m_gameWorldModel.GetMobEntity(mobEntityId); mobEntity.RemoveFromGameWorld(this); } // (Re)Create mob entities for each mob in the room foreach (MobData mobData in currentRoom.MobMap.Values) { MobEntity newMobEntity = new MobEntity(mobData.mob_id); newMobEntity.AddToGameWorld(this); } // Remove any existing energy tanks List <int> allEnergyTankIds = new List <int>(m_gameWorldModel.GetEnergyTankEntityMap().Keys); foreach (int energyTankId in allEnergyTankIds) { EnergyTankEntity energyTankEntity = m_gameWorldModel.GetEnergyTankEntity(energyTankId); energyTankEntity.RemoveFromGameWorld(this); } // (Re)Create energy tank entities for each energy tank in the room foreach (EnergyTankData energyTankData in currentRoom.EnergyTankMap.Values) { EnergyTankEntity newEnergyTankEntity = new EnergyTankEntity(energyTankData.energy_tank_id); newEnergyTankEntity.AddToGameWorld(this); } // generate all of the terrain tiles and static objects in the room gameWorldView.RebuildRoom(currentRoom); // Notify the overlay of a room reload m_contextOverlayController.OnRoomLoaded(currentRoom); }
public void OnRoomLoaded(RoomKey roomKey) { RoomData currentRoom = m_gameWorldModel.GetRoomData(roomKey); // Get a list of all the characters that are in the same room as my character List<int> characterIDList = m_gameWorldModel.GetCharacterIDListInRoom(roomKey); // Remove any existing character List<int> allCharacterIds = new List<int>(m_gameWorldModel.GetCharacterEntityMap().Keys); foreach (int characterEntityId in allCharacterIds) { CharacterEntity characterEntity= m_gameWorldModel.GetCharacterEntity(characterEntityId); characterEntity.RemoveFromGameWorld(this); } // (Re)Create character entities for each character in the room foreach (int characterID in characterIDList) { CharacterEntity newCharacterEntity = new CharacterEntity(characterID); newCharacterEntity.AddToGameWorld(this); } // Remove any existing mobs List<int> allMobIds = new List<int>(m_gameWorldModel.GetMobEntityMap().Keys); foreach (int mobEntityId in allMobIds) { MobEntity mobEntity = m_gameWorldModel.GetMobEntity(mobEntityId); mobEntity.RemoveFromGameWorld(this); } // (Re)Create mob entities for each mob in the room foreach (MobData mobData in currentRoom.MobMap.Values) { MobEntity newMobEntity = new MobEntity(mobData.mob_id); newMobEntity.AddToGameWorld(this); } // Remove any existing energy tanks List<int> allEnergyTankIds = new List<int>(m_gameWorldModel.GetEnergyTankEntityMap().Keys); foreach (int energyTankId in allEnergyTankIds) { EnergyTankEntity energyTankEntity = m_gameWorldModel.GetEnergyTankEntity(energyTankId); energyTankEntity.RemoveFromGameWorld(this); } // (Re)Create energy tank entities for each energy tank in the room foreach (EnergyTankData energyTankData in currentRoom.EnergyTankMap.Values) { EnergyTankEntity newEnergyTankEntity = new EnergyTankEntity(energyTankData.energy_tank_id); newEnergyTankEntity.AddToGameWorld(this); } // generate all of the terrain tiles and static objects in the room gameWorldView.RebuildRoom(currentRoom); // Notify the overlay of a room reload m_contextOverlayController.OnRoomLoaded(currentRoom); }