forked from Mirrorlandia_minetest/minetest
Keep track of player item
This commit is contained in:
parent
467b3cf4c1
commit
91d1186cbb
@ -1953,6 +1953,14 @@ void Client::setPlayerControl(PlayerControl &control)
|
|||||||
player->control = control;
|
player->control = control;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Client::selectPlayerItem(u16 item)
|
||||||
|
{
|
||||||
|
LocalPlayer *player = m_env.getLocalPlayer();
|
||||||
|
assert(player != NULL);
|
||||||
|
|
||||||
|
player->wieldItem(item);
|
||||||
|
}
|
||||||
|
|
||||||
// Returns true if the inventory of the local player has been
|
// Returns true if the inventory of the local player has been
|
||||||
// updated from the server. If it is true, it is set to false.
|
// updated from the server. If it is true, it is set to false.
|
||||||
bool Client::getLocalInventoryUpdated()
|
bool Client::getLocalInventoryUpdated()
|
||||||
|
@ -211,7 +211,9 @@ public:
|
|||||||
v3f getPlayerPosition(v3f *eye_position=NULL);
|
v3f getPlayerPosition(v3f *eye_position=NULL);
|
||||||
|
|
||||||
void setPlayerControl(PlayerControl &control);
|
void setPlayerControl(PlayerControl &control);
|
||||||
|
|
||||||
|
void selectPlayerItem(u16 item);
|
||||||
|
|
||||||
// Returns true if the inventory of the local player has been
|
// Returns true if the inventory of the local player has been
|
||||||
// updated from the server. If it is true, it is set to false.
|
// updated from the server. If it is true, it is set to false.
|
||||||
bool getLocalInventoryUpdated();
|
bool getLocalInventoryUpdated();
|
||||||
|
@ -2200,6 +2200,7 @@ void the_game(
|
|||||||
if(client.getLocalInventoryUpdated()
|
if(client.getLocalInventoryUpdated()
|
||||||
|| g_selected_item != old_selected_item)
|
|| g_selected_item != old_selected_item)
|
||||||
{
|
{
|
||||||
|
client.selectPlayerItem(g_selected_item);
|
||||||
old_selected_item = g_selected_item;
|
old_selected_item = g_selected_item;
|
||||||
//std::cout<<"Updating local inventory"<<std::endl;
|
//std::cout<<"Updating local inventory"<<std::endl;
|
||||||
client.getLocalInventory(local_inventory);
|
client.getLocalInventory(local_inventory);
|
||||||
|
@ -33,6 +33,7 @@ Player::Player():
|
|||||||
craftresult_is_preview(true),
|
craftresult_is_preview(true),
|
||||||
hp(20),
|
hp(20),
|
||||||
peer_id(PEER_ID_INEXISTENT),
|
peer_id(PEER_ID_INEXISTENT),
|
||||||
|
m_selected_item(0),
|
||||||
m_pitch(0),
|
m_pitch(0),
|
||||||
m_yaw(0),
|
m_yaw(0),
|
||||||
m_speed(0,0,0),
|
m_speed(0,0,0),
|
||||||
@ -47,6 +48,11 @@ Player::~Player()
|
|||||||
delete inventory_backup;
|
delete inventory_backup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Player::wieldItem(u16 item)
|
||||||
|
{
|
||||||
|
m_selected_item = item;
|
||||||
|
}
|
||||||
|
|
||||||
void Player::resetInventory()
|
void Player::resetInventory()
|
||||||
{
|
{
|
||||||
inventory.clear();
|
inventory.clear();
|
||||||
|
10
src/player.h
10
src/player.h
@ -105,6 +105,15 @@ public:
|
|||||||
snprintf(m_name, PLAYERNAME_SIZE, "%s", name);
|
snprintf(m_name, PLAYERNAME_SIZE, "%s", name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virtual void wieldItem(u16 item);
|
||||||
|
virtual const InventoryItem *getWieldItem() const
|
||||||
|
{
|
||||||
|
const InventoryList *list = inventory.getList("main");
|
||||||
|
if (list)
|
||||||
|
return list->getItem(m_selected_item);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
const char * getName()
|
const char * getName()
|
||||||
{
|
{
|
||||||
return m_name;
|
return m_name;
|
||||||
@ -146,6 +155,7 @@ public:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
char m_name[PLAYERNAME_SIZE];
|
char m_name[PLAYERNAME_SIZE];
|
||||||
|
u16 m_selected_item;
|
||||||
f32 m_pitch;
|
f32 m_pitch;
|
||||||
f32 m_yaw;
|
f32 m_yaw;
|
||||||
v3f m_speed;
|
v3f m_speed;
|
||||||
|
Loading…
Reference in New Issue
Block a user