void ISystem.OperateOnEntity(Entity entity) { EnergyHaver comp = entity.GetComponent <EnergyHaver>(); comp.Energy += comp.Speed; if (comp.Energy >= GameManager.ENERGY_CAP) { comp.Energy = GameManager.ENERGY_CAP; } }
void ISystem.OperateOnEntity(Entity e) { EnergyHaver energyComp = e.GetComponent <EnergyHaver>(); AI ai = e.GetComponent <AI>(); // keep taking moves until out of energy while (energyComp.CanTakeAction()) { // assign a target if needed if (ai.Target == null) { AssignTarget(e); } if (ai.State == AIState.Pursuing) { Position posComp = e.GetComponent <Position>(); Position targetPosComp = ai.Target.GetComponent <Position>(); // if the entity is adjacent to its target if (OrderedPair.Adjacent(posComp.Pos, targetPosComp.Pos)) { // attack the target energyComp.Energy -= GameManager.COST_ATTACK; AttackFunctions.BumpAttack(e, ai.Target); } else { // move towards the target energyComp.Energy -= GameManager.COST_MOVE; OrderedPair towards = OrderedPair.Towards(posComp.Pos, targetPosComp.Pos); MoveFunctions.Move(e, posComp.Pos + towards); } continue; } break; } }