Ejemplo n.º 1
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;
    }
Ejemplo n.º 2
0
    void OnXPChanged(XPData newXP)
    {
        if (xpData.TotalXP > 0)
        {
            int xpGain = newXP.TotalXP - xpData.TotalXP;
            MessageLog_Manager.NewMessage("You gain " + xpGain + " XP!", Color.yellow);

            if (newXP.CurXPLevel > xpData.CurXPLevel)
            {
                MessageLog_Manager.NewMessage("You are now level " + newXP.CurXPLevel, Color.yellow);
                // do level gain effect (gain max hp)
                fighter.IncreaseMaxHealth();

                if (xpData.CurXPLevel == 3)
                {
                    // gain teleport
                    abilityComponent.AddAbility(AbilityID.Teleport, true, "40% HP");
                }
            }
        }

        xpData = new XPData(newXP.TotalXP, newXP.CurXPLevel);
        UI_Manager.instance.HandlePlayerXPLevel(xpData.TotalXP, xpData.CurXPLevel);
    }