Add in loadout system to Player class.
This commit is contained in:
parent
795d59f1a4
commit
7e371f6779
@ -17,6 +17,7 @@ typedef std::function<bool(Crawler*,ItemProps)> ItemScript;
|
||||
|
||||
class Item{
|
||||
friend class Inventory;
|
||||
friend class Palyer;
|
||||
private:
|
||||
uint32_t amt;
|
||||
ItemInfo*it;
|
||||
|
||||
@ -718,4 +718,27 @@ void Player::ConsumeMana(int amt){
|
||||
|
||||
void Player::SetSizeMult(float size){
|
||||
this->size=size;
|
||||
}
|
||||
|
||||
Item&Player::GetLoadoutItem(int slot){
|
||||
if(slot<0||slot>loadout.size()-1)ERR("Invalid inventory slot "+std::to_string(slot)+", please choose a slot in range (0-"+std::to_string(loadout.size()-1)+").");
|
||||
return loadout[slot];
|
||||
}
|
||||
|
||||
void Player::SetLoadoutItem(int slot,std::string itemName){
|
||||
if(slot<0||slot>loadout.size()-1)ERR("Invalid inventory slot "+std::to_string(slot)+", please choose a slot in range (0-"+std::to_string(loadout.size()-1)+").");
|
||||
if(Inventory::GetItemCount(itemName)>0){
|
||||
GetLoadoutItem(slot)=Inventory::GetItem(itemName);
|
||||
GetLoadoutItem(slot).amt=std::min((uint32_t)"Player.Item Loadout Limit"_I,GetLoadoutItem(slot).Amt()); //We are only allowed to have up to 10 maximum of an item on a journey.
|
||||
}else{
|
||||
ERR("Trying to set item "+itemName+" in Loadout slot "+std::to_string(slot)+" when said item does not exist in our inventory!");
|
||||
}
|
||||
}
|
||||
void Player::UseLoadoutItem(int slot){
|
||||
if(slot<0||slot>loadout.size()-1)ERR("Invalid inventory slot "+std::to_string(slot)+", please choose a slot in range (0-"+std::to_string(loadout.size()-1)+").");
|
||||
if(GetLoadoutItem(slot).Amt()>0){
|
||||
Inventory::UseItem(loadout[slot].Name());
|
||||
GetLoadoutItem(slot).OnUseAction();
|
||||
GetLoadoutItem(slot).amt--;
|
||||
}
|
||||
}
|
||||
@ -45,6 +45,7 @@ private:
|
||||
float spin_angle=0;
|
||||
float lastAnimationFlip=0;
|
||||
float manaTickTimer=0;
|
||||
std::array<Item,3>loadout;
|
||||
std::pair<std::string,float> notEnoughManaDisplay={"",0};
|
||||
float teleportAttemptWaitTime=0; //If a teleport fails, we wait awhile before trying again, it's expensive.
|
||||
State::State state=State::NORMAL;
|
||||
@ -157,6 +158,9 @@ public:
|
||||
Key GetLastReleasedMovementKey();
|
||||
float GetSwordSwingTimer();
|
||||
bool OnUpperLevel();
|
||||
Item&GetLoadoutItem(int slot);
|
||||
void SetLoadoutItem(int slot,std::string itemName);
|
||||
void UseLoadoutItem(int slot);
|
||||
//Triggers when the player has moved.
|
||||
void Moved();
|
||||
virtual ~Player()=default;
|
||||
|
||||
@ -9,6 +9,9 @@ Player
|
||||
# How much speed the player loses while no momentum is being added.
|
||||
Friction = 400
|
||||
|
||||
# How many of any one type of item we can bring to the battlefield max per slot.
|
||||
Item Loadout Limit = 10
|
||||
|
||||
# Each attack will have _N,_E,_S,_W appended to them once read in-game.
|
||||
PLAYER_ANIMATION[0] = WARRIOR_WALK
|
||||
PLAYER_ANIMATION[1] = WARRIOR_IDLE
|
||||
|
||||
@ -2,5 +2,5 @@ ItemConfiguration
|
||||
{
|
||||
Item Database = "ItemDatabase.txt"
|
||||
Item Scripts = "ItemScript.txt"
|
||||
Item Categories = "ItemCategory.txt"
|
||||
Item Categories = "ItemCategory.txt
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user