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(); } }
// Parsing public static RoomData FromObject(JsonData jsonData) { RoomData roomData = new RoomData(); int gameID = SessionData.GetInstance().GameID; int room_x = (int)jsonData["room_x"]; int room_y = (int)jsonData["room_y"]; int room_z = (int)jsonData["room_z"]; float world_x = jsonData["world_x"].IsInt ? (float)((int)jsonData["world_x"]) : (float)((double)jsonData["world_x"]); float world_y = jsonData["world_y"].IsInt ? (float)((int)jsonData["world_y"]) : (float)((double)jsonData["world_y"]); float world_z = jsonData["world_z"].IsInt ? (float)((int)jsonData["world_z"]) : (float)((double)jsonData["world_z"]); roomData.RoomKey.Set(gameID, room_x, room_y, room_z); roomData.WorldPosition.Set(world_x, world_y, world_z); roomData.StaticRoomData = StaticRoomData.FromObject(roomData.RoomKey, jsonData["data"]); { JsonData portalList = jsonData["portals"]; for (int portalIndex = 0; portalIndex < portalList.Count; portalIndex++) { JsonData portalObject = portalList[portalIndex]; RoomPortal portal = RoomPortal.FromObject(portalObject); roomData.RoomPortals.Add(portal); } } { JsonData mobObjects = jsonData["mobs"]; roomData.m_mobs = new Dictionary <int, MobData>(); for (int mobIndex = 0; mobIndex < mobObjects.Count; mobIndex++) { JsonData mobObject = mobObjects[mobIndex]; MobData mobData = MobData.FromObject(mobObject); roomData.SetMobById(mobData.mob_id, mobData); } } { JsonData energyTankObjects = jsonData["energyTanks"]; roomData.m_energyTanks = new Dictionary <int, EnergyTankData>(); for (int energyTankIndex = 0; energyTankIndex < energyTankObjects.Count; energyTankIndex++) { JsonData energyTankObject = energyTankObjects[energyTankIndex]; EnergyTankData energyTankData = EnergyTankData.FromObject(energyTankObject); roomData.SetEnergyTankById(energyTankData.energy_tank_id, energyTankData); } } return(roomData); }
public override void UndoEvent(GameWorldController gameWorldController) { RoomData currentRoom = gameWorldController.Model.CurrentGame.CurrentRoom; if (currentRoom.RoomKey.Equals(m_mobState.CurrentRoomKey)) { MobEntity mobEntity = gameWorldController.Model.GetMobEntity(m_mobState.mob_id); // Clean up the entity mobEntity.RemoveFromGameWorld(gameWorldController); // Remove the mob data from the current game state currentRoom.SetMobById(m_mobState.mob_id, null); } base.UndoEvent(gameWorldController); }
// Parsing public static RoomData FromObject(JsonData jsonData) { RoomData roomData = new RoomData(); int gameID = SessionData.GetInstance().GameID; int room_x = (int)jsonData["room_x"]; int room_y = (int)jsonData["room_y"]; int room_z = (int)jsonData["room_z"]; float world_x= jsonData["world_x"].IsInt ? (float)((int)jsonData["world_x"]) : (float)((double)jsonData["world_x"]); float world_y= jsonData["world_y"].IsInt ? (float)((int)jsonData["world_y"]) : (float)((double)jsonData["world_y"]); float world_z= jsonData["world_z"].IsInt ? (float)((int)jsonData["world_z"]) : (float)((double)jsonData["world_z"]); roomData.RoomKey.Set(gameID, room_x, room_y, room_z); roomData.WorldPosition.Set(world_x, world_y, world_z); roomData.StaticRoomData = StaticRoomData.FromObject(roomData.RoomKey, jsonData["data"]); { JsonData portalList = jsonData["portals"]; for (int portalIndex= 0; portalIndex < portalList.Count; portalIndex++) { JsonData portalObject = portalList[portalIndex]; RoomPortal portal = RoomPortal.FromObject(portalObject); roomData.RoomPortals.Add(portal); } } { JsonData mobObjects = jsonData["mobs"]; roomData.m_mobs = new Dictionary<int, MobData>(); for (int mobIndex= 0; mobIndex < mobObjects.Count; mobIndex++) { JsonData mobObject = mobObjects[mobIndex]; MobData mobData = MobData.FromObject(mobObject); roomData.SetMobById(mobData.mob_id, mobData); } } { JsonData energyTankObjects = jsonData["energyTanks"]; roomData.m_energyTanks = new Dictionary<int, EnergyTankData>(); for (int energyTankIndex = 0; energyTankIndex < energyTankObjects.Count; energyTankIndex++) { JsonData energyTankObject = energyTankObjects[energyTankIndex]; EnergyTankData energyTankData = EnergyTankData.FromObject(energyTankObject); roomData.SetEnergyTankById(energyTankData.energy_tank_id, energyTankData); } } return roomData; }