/// <summary> /// Converts the domain model into an entity. /// </summary> /// <returns>The entity.</returns> /// <param name="mob">Mob.</param> internal static MobEntity ToEntity(this Mob mob) { MobEntity mobEntity = new MobEntity { Id = mob.Id, Name = mob.Name, Description = mob.Description, Command = mob.Command, IsAttackable = mob.IsAttackable, IsAggressive = mob.IsAggressive, RespawnTime = mob.RespawnTime, CombatStyle = mob.CombatStyle.ToString(), Drops = mob.Drops?.ToEntities().ToArray(), AttackLevel = mob.AttackLevel, HitpointsLevel = mob.HitpointsLevel, StrengthLevel = mob.StrengthLevel, DefenceLevel = mob.DefenceLevel, RangedLevel = mob.RangedLevel, MagicLevel = mob.MagicLevel, }; return(mobEntity); }
/// <summary> /// Converts the entity into a domain model. /// </summary> /// <returns>The domain model.</returns> /// <param name="mobEntity">Mob entity.</param> internal static Mob ToDomainModel(this MobEntity mobEntity) { Mob mob = new Mob { Id = mobEntity.Id, Name = mobEntity.Name, Description = mobEntity.Description, Command = mobEntity.Command, IsAttackable = mobEntity.IsAttackable, IsAggressive = mobEntity.IsAggressive, RespawnTime = mobEntity.RespawnTime, CombatStyle = (CombatStyle)Enum.Parse(typeof(CombatStyle), mobEntity.CombatStyle), Drops = mobEntity.Drops?.ToDomainModels().ToArray(), AttackLevel = mobEntity.AttackLevel, HitpointsLevel = mobEntity.HitpointsLevel, StrengthLevel = mobEntity.StrengthLevel, DefenceLevel = mobEntity.DefenceLevel, RangedLevel = mobEntity.RangedLevel, MagicLevel = mobEntity.MagicLevel }; return(mob); }
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 override void ApplyEvent(GameWorldController gameWorldController, GameEvent.OnEventCompleteDelegate onComplete) { base.ApplyEvent(gameWorldController, onComplete); EnergyTankEntity energyTankEntity = gameWorldController.Model.GetEnergyTankEntity(EnergyTankId); energyTankEntity.Energy = (uint)Math.Max((int)energyTankEntity.Energy - EnergyDrained, 0); if (DrainerFaction == GameConstants.eFaction.ai) { MobEntity mobEntity = gameWorldController.Model.GetMobEntity(DrainerId); mobEntity.Energy = mobEntity.Energy + EnergyDrained; } else if (DrainerFaction == GameConstants.eFaction.player) { CharacterEntity characterEntity = gameWorldController.Model.GetCharacterEntity(DrainerId); characterEntity.Energy = characterEntity.Energy + EnergyDrained; } // Completes immediately if (onComplete != null) { onComplete(); } }
public override void UndoEvent(GameWorldController gameWorldController) { base.UndoEvent(gameWorldController); MobEntity entity = gameWorldController.Model.GetMobEntity(MobID); entity.SnapTo(FromPosition, FromAngle); }
public override void Initialize() { HistoryLog.Initialize(_assetManager.Font, 400, _assetManager); HistoryLog.Instance.SortOrder = Camera2D.SortUI + 100; HistoryLog.Instance.Hidden = false; AddAndInitializeRootEntity(HistoryLog.Instance, _assetManager); var cursorSprite = _assetManager[AssetManager.CrosshairCursor]; var crosshairCursor = CreateRootEntity(Camera2D.SortUI + 10000); crosshairCursor.Renderer = new SpriteRenderer(cursorSprite); crosshairCursor.AddComponent(() => { crosshairCursor.Position = InputManager.Instance.MousePosition.ToVector2() - cursorSprite.Bounds.Size.ToVector2() / 2; }); Camera2D.Instance.Translate = new Vector3(600, 400, 0); var gameBoardEntity = CreateRootEntity(Camera2D.SortBackground); gameBoardEntity.AddComponent(() => { if (InputManager.Instance.IsKeyJustPressed(Keys.P)) { Terminate(); } }); _gameBoardController = new GameBoardController(_game, crosshairCursor, this, _replay); _gameBoardController.GameFinishedCallback = () => GameFinishedCallback?.Invoke(); gameBoardEntity.AddComponent(_gameBoardController); gameBoardEntity.CustomBatch = true; BuildUi(); foreach (var mobId in _game.MobManager.Mobs) { var mobAnimationController = new MobAnimationController(_game); var mobEntity = new MobEntity(mobId, _game) { SortOrder = Camera2D.SortMobs, Renderer = new MobRenderer(_game, mobId, mobAnimationController), Transform = () => Camera2D.Instance.Transform }; mobEntity.AddComponent(mobAnimationController); AddAndInitializeRootEntity(mobEntity, _assetManager); MobEntities[mobId] = mobEntity; } }
public void AddMobEntity(MobEntity mobEntity) { if (m_mobEntities.ContainsKey(mobEntity.MyMobData.mob_id)) { m_mobEntities[mobEntity.MyMobData.mob_id] = mobEntity; } else { m_mobEntities.Add(mobEntity.MyMobData.mob_id, mobEntity); } }
/// <summary> /// Converts the entity into a domain model. /// </summary> /// <returns>The domain model.</returns> /// <param name="mobEntity">Mob entity.</param> internal static MobDefinition ToDomainModel(this MobEntity mobEntity) { MobDefinition mob = new MobDefinition { Id = mobEntity.Id, Name = mobEntity.Name, Description = mobEntity.Description }; return(mob); }
/// <summary> /// Converts the domain model into an entity. /// </summary> /// <returns>The entity.</returns> /// <param name="mob">Mob.</param> internal static MobEntity ToEntity(this MobDefinition mob) { MobEntity mobEntity = new MobEntity { Id = mob.Id, Name = mob.Name, Description = mob.Description }; return(mobEntity); }
/// <summary> /// Sends a MobUpdate message(Health) to /// the entity's GridCell and it's neighbours. /// /// </summary> /// <param name="entity">The updated entity.</param> public void SendEntityUpdate(MobEntity entity) { NetBuffer buffer = new NetBuffer(); buffer.Write((byte)MessageType.MobUpdate); buffer.Write(entity.Id); buffer.Write((ushort)entity.Health.Value, 16); SendDataToNeigbours(buffer.Data, entity.GridCell, NetDeliveryMethod.UnreliableSequenced); }
public override void ApplyEvent(GameWorldController gameWorldController, GameEvent.OnEventCompleteDelegate onComplete) { base.ApplyEvent(gameWorldController, onComplete); MobEntity entity = gameWorldController.Model.GetMobEntity(MobId); entity.PostDialogEvent(Dialog); // Completes immediately if (onComplete != null) { onComplete(); } }
//------------------------------------------------------------ //MOB message handling //------------------------------------------------------------ /// <summary> /// Sends entity respawn message to /// the entity's GridCell and it's neighbours. /// </summary> /// <param name="entity">The entity that respawned</param> public void SendEntityRespawn(MobEntity entity) { if (entity.GridCell == null) { return; } NetBuffer data = new NetBuffer(); data.Write((byte)MessageType.MobRespawn); data.Write(CreateMobRespawnPackage(entity)); SendDataToNeigbours(data.Data, entity.GridCell); }
public void OnNewMapLoaded(Game game) { UpdateScore(); string[] models = { "sheep", "pig", "skeleton", "zombie", "creeper", "spider" }; for (int i = 0; i < 254; i++) { MobEntity fail = new MobEntity(game, models[rnd.Next(models.Length)]); float x = rnd.Next(0, game.World.Width) + 0.5f; float z = rnd.Next(0, game.World.Length) + 0.5f; Vector3 pos = Respawn.FindSpawnPosition(game, x, z, fail.Size); fail.SetLocation(LocationUpdate.MakePos(pos, false), false); game.Entities[i] = fail; } }
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); }
void IGameComponent.OnNewMapLoaded(Game game) { UpdateScore(); wasOnGround = true; showedDeathScreen = false; game.LocalPlayer.Health = 20; string[] models = { "sheep", "pig", "skeleton", "zombie", "creeper", "spider" }; for (int i = 0; i < 254; i++) { MobEntity fail = new MobEntity(game, models[rnd.Next(models.Length)]); float x = rnd.Next(0, game.World.Width) + 0.5f; float z = rnd.Next(0, game.World.Length) + 0.5f; Vector3 pos = Respawn.FindSpawnPosition(game, x, z, fail.Size); fail.SetLocation(LocationUpdate.MakePos(pos, false), false); game.Entities.List[i] = fail; } }
public override void UndoEvent(GameWorldController gameWorldController) { EnergyTankEntity energyTankEntity = gameWorldController.Model.GetEnergyTankEntity(EnergyTankId); energyTankEntity.Energy = energyTankEntity.Energy + (uint)EnergyDrained; if (DrainerFaction == GameConstants.eFaction.ai) { MobEntity mobEntity = gameWorldController.Model.GetMobEntity(DrainerId); mobEntity.Energy = mobEntity.Energy - EnergyDrained; } else if (DrainerFaction == GameConstants.eFaction.player) { CharacterEntity characterEntity = gameWorldController.Model.GetCharacterEntity(DrainerId); characterEntity.Energy = characterEntity.Energy - EnergyDrained; } base.UndoEvent(gameWorldController); }
private static void killWorms(long x0, long y0, long z0, int size) { int count = MobManager.instance.mActiveMobs.Count; for (int index = 0; index < count; index++) { MobEntity e = MobManager.instance.mActiveMobs[index]; if (e != null && e.mType == MobType.WormBoss && e.mnHealth > 0) { Vector3 vec = Vector3.zero; vec.x = (float)(e.mnX - x0); vec.y = (float)(e.mnY - y0); vec.z = (float)(e.mnZ - z0); if (vec.magnitude <= size * 1.25) { e.TakeDamage(Int32.MaxValue); //DIE DIE DIE DIE DIE FloatingCombatTextManager.instance.QueueText(e.mnX, e.mnY + 4L, e.mnZ, 1.5f, "Worm Killed!", Color.magenta, 2F, 4096F); } } } }
public void OnNewMapLoaded(Game game) { for (int i = 0; i < ((int)((oldlength + oldwidth / 2) / 5)); i++) { game.Entities[i] = null; } game.Chat.Add("&fScore: &e" + score, MessageType.Status1); string[] models = { "sheep", "pig", "skeleton", "zombie", "creeper", "spider" }; for (int i = 0; i < ((int)((game.World.Length + game.World.Width / 2) / 5)); i++) { MobEntity fail = new MobEntity(game, models[rnd.Next(models.Length)]); float x = rnd.Next(0, game.World.Width) + 0.5f; float z = rnd.Next(0, game.World.Length) + 0.5f; Vector3 pos = Respawn.FindSpawnPosition(game, x, z, fail.Size); fail.SetLocation(LocationUpdate.MakePos(pos, false), false); game.Entities[i] = fail; game.Entities[i].Health = 10; } oldwidth = game.World.Width; oldlength = game.World.Length; }
public override void ApplyEvent(GameWorldController gameWorldController, OnEventCompleteDelegate onComplete) { base.ApplyEvent(gameWorldController, onComplete); MobEntity entity = gameWorldController.Model.GetMobEntity(MobID); if (onComplete != null) { entity.RequestMoveTo(ToPosition, ToAngle, (PathComputer.eResult resultCode) => { if (resultCode != PathComputer.eResult.success) { Debug.Log("GameEvent_CharacterMoved:apply_event - Failed to compute path to event target, ResultCode=" + resultCode); entity.SnapTo(ToPosition, ToAngle); } onComplete(); }); } else { entity.SnapTo(ToPosition, ToAngle); } }
public SpawnMob(MobEntity entity) { Entity = entity; }
/// <summary> /// Generic machine inventory class with list inventory support /// </summary> /// <param name="mobentity">For associating the owner mob</param> /// <param name="storagecapacity">The storage capacity of the inventory</param> public MachineInventory(MobEntity mobentity, int storagecapacity) { this.Mob = mobentity; this.StorageCapacity = storagecapacity; this.Inventory = new List <ItemBase>(); }
public void RemoveMobEntity(MobEntity mobEntity) { m_mobEntities.Remove(mobEntity.MyMobData.mob_id); }
public void AddMobEntity(MobEntity mobEntity) { if (m_mobEntities.ContainsKey(mobEntity.MyMobData.mob_id)) { m_mobEntities[mobEntity.MyMobData.mob_id]= mobEntity; } else { m_mobEntities.Add(mobEntity.MyMobData.mob_id, mobEntity); } }
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); }
void Awake() { parentEntity = GetComponentInParent <MobEntity>(); }