diff options
-rw-r--r-- | src/guiInventoryMenu.cpp | 21 | ||||
-rw-r--r-- | src/inventory.cpp | 80 |
2 files changed, 59 insertions, 42 deletions
diff --git a/src/guiInventoryMenu.cpp b/src/guiInventoryMenu.cpp index 165d4d862..7d49acaa2 100644 --- a/src/guiInventoryMenu.cpp +++ b/src/guiInventoryMenu.cpp @@ -27,6 +27,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include <IGUIButton.h> #include <IGUIStaticText.h> #include <IGUIFont.h> +#include "log.h" void drawInventoryItem(video::IVideoDriver *driver, gui::IGUIFont *font, @@ -326,11 +327,11 @@ bool GUIInventoryMenu::OnEvent(const SEvent& event) if(amount >= 0) { v2s32 p(event.MouseInput.X, event.MouseInput.Y); - //dstream<<"Mouse down at p=("<<p.X<<","<<p.Y<<")"<<std::endl; + //infostream<<"Mouse down at p=("<<p.X<<","<<p.Y<<")"<<std::endl; ItemSpec s = getItemAtPos(p); if(s.isValid()) { - dstream<<"Mouse down on "<<s.inventoryname + infostream<<"Mouse down on "<<s.inventoryname <<"/"<<s.listname<<" "<<s.i<<std::endl; if(m_selected_item) { @@ -345,15 +346,15 @@ bool GUIInventoryMenu::OnEvent(const SEvent& event) InventoryList *list_to = inv_to->getList(s.listname); if(list_from == NULL) - dstream<<"from list doesn't exist"<<std::endl; + infostream<<"from list doesn't exist"<<std::endl; if(list_to == NULL) - dstream<<"to list doesn't exist"<<std::endl; + infostream<<"to list doesn't exist"<<std::endl; // Indicates whether source slot completely empties bool source_empties = false; if(list_from && list_to && list_from->getItem(m_selected_item->i) != NULL) { - dstream<<"Handing IACTION_MOVE to manager"<<std::endl; + infostream<<"Handing IACTION_MOVE to manager"<<std::endl; IMoveAction *a = new IMoveAction(); a->count = amount; a->from_inv = m_selected_item->inventoryname; @@ -408,7 +409,7 @@ bool GUIInventoryMenu::OnEvent(const SEvent& event) { if(!canTakeFocus(event.GUIEvent.Element)) { - dstream<<"GUIInventoryMenu: Not allowing focus change." + infostream<<"GUIInventoryMenu: Not allowing focus change." <<std::endl; // Returning true disables focus change return true; @@ -474,7 +475,7 @@ v2s16 GUIInventoryMenu::makeDrawSpecArrayFromString( while(f.atend() == false) { std::string type = trim(f.next("[")); - //dstream<<"type="<<type<<std::endl; + //infostream<<"type="<<type<<std::endl; if(type == "list") { std::string name = f.next(";"); @@ -485,7 +486,7 @@ v2s16 GUIInventoryMenu::makeDrawSpecArrayFromString( s32 pos_y = stoi(f.next(";")); s32 geom_x = stoi(f.next(",")); s32 geom_y = stoi(f.next(";")); - dstream<<"list name="<<name<<", subname="<<subname + infostream<<"list name="<<name<<", subname="<<subname <<", pos=("<<pos_x<<","<<pos_y<<")" <<", geom=("<<geom_x<<","<<geom_y<<")" <<std::endl; @@ -498,14 +499,14 @@ v2s16 GUIInventoryMenu::makeDrawSpecArrayFromString( { invsize.X = stoi(f.next(",")); invsize.Y = stoi(f.next(";")); - dstream<<"invsize ("<<invsize.X<<","<<invsize.Y<<")"<<std::endl; + infostream<<"invsize ("<<invsize.X<<","<<invsize.Y<<")"<<std::endl; f.next("]"); } else { // Ignore others std::string ts = f.next("]"); - dstream<<"Unknown DrawSpec: type="<<type<<", data=\""<<ts<<"\"" + infostream<<"Unknown DrawSpec: type="<<type<<", data=\""<<ts<<"\"" <<std::endl; } } diff --git a/src/inventory.cpp b/src/inventory.cpp index b8afbc81f..92ef3b011 100644 --- a/src/inventory.cpp +++ b/src/inventory.cpp @@ -32,6 +32,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "content_inventory.h" #include "content_sao.h" #include "player.h" +#include "log.h" /* InventoryItem @@ -117,7 +118,7 @@ InventoryItem* InventoryItem::deSerialize(std::istream &is) } else { - dstream<<"Unknown InventoryItem name=\""<<name<<"\""<<std::endl; + infostream<<"Unknown InventoryItem name=\""<<name<<"\""<<std::endl; throw SerializationError("Unknown InventoryItem name"); } } @@ -738,51 +739,56 @@ InventoryAction * InventoryAction::deSerialize(std::istream &is) return a; } -void IMoveAction::apply(InventoryContext *c, InventoryManager *mgr) +static std::string describeC(const struct InventoryContext *c) { -#if 1 - - /*dstream<<"from_inv="<<from_inv<<" to_inv="<<to_inv<<std::endl; - dstream<<"from_list="<<from_list<<" to_list="<<to_list<<std::endl; - dstream<<"from_i="<<from_i<<" to_i="<<to_i<<std::endl;*/ + if(c->current_player == NULL) + return "current_player=NULL"; + else + return std::string("current_player=") + c->current_player->getName(); +} +void IMoveAction::apply(InventoryContext *c, InventoryManager *mgr) +{ Inventory *inv_from = mgr->getInventory(c, from_inv); Inventory *inv_to = mgr->getInventory(c, to_inv); - - if(!inv_from || !inv_to) - { - dstream<<__FUNCTION_NAME<<": Operation not allowed " - <<"(inventories not found)"<<std::endl; + + if(!inv_from){ + infostream<<"IMoveAction::apply(): FAIL: source inventory not found: " + <<"context=["<<describeC(c)<<"], from_inv=\""<<from_inv<<"\"" + <<", to_inv=\""<<to_inv<<"\""<<std::endl; + return; + } + if(!inv_to){ + infostream<<"IMoveAction::apply(): FAIL: destination inventory not found: " + "context=["<<describeC(c)<<"], from_inv=\""<<from_inv<<"\"" + <<", to_inv=\""<<to_inv<<"\""<<std::endl; return; } InventoryList *list_from = inv_from->getList(from_list); InventoryList *list_to = inv_to->getList(to_list); - /*dstream<<"list_from="<<list_from<<" list_to="<<list_to - <<std::endl;*/ - /*if(list_from) - dstream<<" list_from->getItem(from_i)="<<list_from->getItem(from_i) - <<std::endl; - if(list_to) - dstream<<" list_to->getItem(to_i)="<<list_to->getItem(to_i) - <<std::endl;*/ - /* If a list doesn't exist or the source item doesn't exist */ - if(!list_from || !list_to) - { - dstream<<__FUNCTION_NAME<<": Operation not allowed " - <<"(a list doesn't exist)" - <<std::endl; + if(!list_from){ + infostream<<"IMoveAction::apply(): FAIL: source list not found: " + <<"context=["<<describeC(c)<<"], from_inv=\""<<from_inv<<"\"" + <<", from_list=\""<<from_list<<"\""<<std::endl; + return; + } + if(!list_to){ + infostream<<"IMoveAction::apply(): FAIL: destination list not found: " + <<"context=["<<describeC(c)<<"], to_inv=\""<<to_inv<<"\"" + <<", to_list=\""<<to_list<<"\""<<std::endl; return; } if(list_from->getItem(from_i) == NULL) { - dstream<<__FUNCTION_NAME<<": Operation not allowed " - <<"(the source item doesn't exist)" - <<std::endl; + infostream<<"IMoveAction::apply(): FAIL: source item not found: " + <<"context=["<<describeC(c)<<"], from_inv=\""<<from_inv<<"\"" + <<", from_list=\""<<from_list<<"\"" + <<" from_i="<<from_i<<std::endl; return; } /* @@ -790,8 +796,9 @@ void IMoveAction::apply(InventoryContext *c, InventoryManager *mgr) */ if(inv_from == inv_to && list_from == list_to && from_i == to_i) { - dstream<<__FUNCTION_NAME<<": Operation not allowed " - <<"(source and the destination slots are the same)"<<std::endl; + infostream<<"IMoveAction::apply(): FAIL: source and destination slots " + <<"are the same: inv=\""<<from_inv<<"\" list=\""<<from_list + <<"\" i="<<from_i<<std::endl; return; } @@ -832,7 +839,16 @@ void IMoveAction::apply(InventoryContext *c, InventoryManager *mgr) mgr->inventoryModified(c, from_inv); if(from_inv != to_inv) mgr->inventoryModified(c, to_inv); -#endif + + infostream<<"IMoveAction::apply(): moved at " + <<"["<<describeC(c)<<"]" + <<" from inv=\""<<from_inv<<"\"" + <<" list=\""<<from_list<<"\"" + <<" i="<<from_i + <<" to inv=\""<<to_inv<<"\"" + <<" list=\""<<to_list<<"\"" + <<" i="<<to_i + <<std::endl; } /* |