void CastTeleport(FighterComponent casterFighter, PositionComponent positionComponent, string abDesc) { Vector2 moveDir = new Vector2(positionComponent.directionData.X, positionComponent.directionData.Y) * 2; //Vector2 curDest = new Vector2(positionComponent.moveData.X, positionComponent.moveData.Y) + moveDir; //if (MapManager.instance.CanMoveTo(new MoveData(curDest.x, curDest.y)) == false){ // // try normal move // if MapManager.instance.CanMoveTo(new MoveData(curDest.x, curDest.y)) == false) // { // return; // } //} //positionComponent.moveData = new MoveData(positionComponent.moveData.) // Caster takes 40% of its health float dmg = casterFighter.curHP * 0.40f; casterFighter.ReceiveDamage(dmg); MessageLog_Manager.NewMessage(abDesc, Color.green); MoveData destData = new MoveData(moveDir.x, moveDir.y); positionComponent.Move(destData, true); }
public void SpawnPlayer(Vector2 position) { if (pool == null) { pool = ObjectPool.instance; } if (Player != null) { PositionComponent posComp = (PositionComponent)Player.GetEntityComponent(ComponentID.Position); posComp.moveData = new MoveData(position.x, position.y); EntityGOMap[Player].transform.position = position; Player.ChangeActiveStatus(true); EntityActionManager.instance.EntityOnTileChanged(Player, posComp.moveData); return; } EntityPrototype proto = GetProtoType("Player");//EntityProtoMap["Player"]; EntityComponent[] components = ReadProtoComponents(proto.components); GameObject entityGO = pool.GetObjectForType("Player", true, position); if (entityGO == null) { // Make a new one? return; } Player = new Entity(proto.Name, proto.entityType, components, isPlayer: true); PositionComponent posC = (PositionComponent)Player.GetEntityComponent(ComponentID.Position); posC.moveData = new MoveData(position.x, position.y); Player.InitComponent(entityGO); AbilityComponent abilityComponent = (AbilityComponent)Player.GetEntityComponent(ComponentID.Abilities); abilityComponent.AddAbility(AbilityID.Blood_For_Light, true, "25% HP"); //InventoryComponent inventoryComponent = (InventoryComponent)Player.GetEntityComponent(ComponentID.Inventory); //PlayerInputSystem.instance.AddDynamicKeys(() => inventoryComponent.Drop(0), "t"); Player.ChangeActiveStatus(true); EntityGOMap.Add(Player, entityGO); Player.CanEndTurnCB = CanPlayerEndTurn; // Register input callbacks PlayerInputSystem.instance.RegisterOnMoveInputCB((data) => posC.Move(data)); GetPlayerPositionData += posC.GetPositionData; }
void DoNextAction() { //Debug.Log(thisEntity.Name + " does action"); // Figure out the direction this enemy needs to move to MoveData playerPosData = EntityManager.instance.GetPlayerPositionData(); MoveData direction = AiStateSystem.instance.GetDirectionToTarget(position.moveData, playerPosData); position.Move(direction); }