Пример #1
0
    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();
        }
    }
Пример #2
0
 public void AddEnergyTankEntity(EnergyTankEntity energyTankEntity)
 {
     if (m_energyTankEntities.ContainsKey(energyTankEntity.MyEnergyTankData.energy_tank_id))
     {
         m_energyTankEntities[energyTankEntity.MyEnergyTankData.energy_tank_id] = energyTankEntity;
     }
     else
     {
         m_energyTankEntities.Add(energyTankEntity.MyEnergyTankData.energy_tank_id, energyTankEntity);
     }
 }
Пример #3
0
    public override void ApplyEvent(GameWorldController gameWorldController, GameEvent.OnEventCompleteDelegate onComplete)
    {
        base.ApplyEvent(gameWorldController, onComplete);

        EnergyTankEntity energyTankEntity = gameWorldController.Model.GetEnergyTankEntity(EnergyTankId);

        energyTankEntity.Ownership = EnergyTankFaction;

        // Completes immediately
        if (onComplete != null)
        {
            onComplete();
        }
    }
Пример #4
0
    public override void UndoEvent(GameWorldController gameWorldController)
    {
        EnergyTankEntity energyTankEntity = gameWorldController.Model.GetEnergyTankEntity(EnergyTankId);

        // AI is un-hacking
        if (HackerFaction == GameConstants.eFaction.ai)
        {
            switch (EnergyTankFaction)
            {
            case GameConstants.eFaction.ai:
                energyTankEntity.Ownership = GameConstants.eFaction.neutral;
                break;

            case GameConstants.eFaction.neutral:
                energyTankEntity.Ownership = GameConstants.eFaction.player;
                break;

            case GameConstants.eFaction.player:
                energyTankEntity.Ownership = GameConstants.eFaction.player;
                break;
            }
        }
        // Player is un-hacking
        else if (HackerFaction == GameConstants.eFaction.player)
        {
            switch (EnergyTankFaction)
            {
            case GameConstants.eFaction.player:
                energyTankEntity.Ownership = GameConstants.eFaction.neutral;
                break;

            case GameConstants.eFaction.neutral:
                energyTankEntity.Ownership = GameConstants.eFaction.ai;
                break;

            case GameConstants.eFaction.ai:
                energyTankEntity.Ownership = GameConstants.eFaction.ai;
                break;
            }
        }

        base.UndoEvent(gameWorldController);
    }
Пример #5
0
    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);
    }
Пример #6
0
 public void RemoveEnergyTankEntity(EnergyTankEntity energyTankEntity)
 {
     m_energyTankEntities.Remove(energyTankEntity.MyEnergyTankData.energy_tank_id);
 }
Пример #7
0
 public void AddEnergyTankEntity(EnergyTankEntity energyTankEntity)
 {
     if (m_energyTankEntities.ContainsKey(energyTankEntity.MyEnergyTankData.energy_tank_id))
     {
         m_energyTankEntities[energyTankEntity.MyEnergyTankData.energy_tank_id]= energyTankEntity;
     }
     else
     {
         m_energyTankEntities.Add(energyTankEntity.MyEnergyTankData.energy_tank_id, energyTankEntity);
     }
 }
Пример #8
0
 public void RemoveEnergyTankEntity(EnergyTankEntity energyTankEntity)
 {
     m_energyTankEntities.Remove(energyTankEntity.MyEnergyTankData.energy_tank_id);
 }
    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);
    }
Пример #10
0
    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);
    }