Пример #1
0
    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);
    }
Пример #2
0
    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;
    }
Пример #3
0
    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);
    }