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 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); }