2 #ifndef WORLDSIM_MENU_ADVENTUREMODE_HPP 3 #define WORLDSIM_MENU_ADVENTUREMODE_HPP 29 Vector <Recipe*> vRecipe;
50 for (
int _y=0;_y<10;++_y)
52 for (
int _x=0;_x<10;++_x)
65 for (
int i=0;i<vValidRecipe->size();++i)
67 vRecipe.push((*vValidRecipe)(i));
74 Renderer::placeColour4a(150,150,250,250,panelX1+240,panelY1+40,panelX2-20,panelY2-20);
75 font8x8.drawText(
"Available recipes:",panelX1+250,(panelY2-40),panelX1+500,(panelY2-50),
false,
true);
77 if (vRecipe.size() > 0)
79 Renderer::placeColour4a(180,180,180,255,panelX1+250,(panelY2-50)-(selectedRecipe*10),panelX1+600,(panelY2-50)-((selectedRecipe+1)*10));
81 for (
int i=0;i<vRecipe.size();++i)
83 font8x8.drawText(vRecipe(i)->getName(),panelX1+250,(panelY2-50)-(i*10),panelX1+500,(panelY2-50)-((i+1)*10),
false,
true);
90 if (_mouse->isWheelDown)
93 if (selectedRecipe>=vRecipe.size()) {selectedRecipe=0;}
94 _mouse->isWheelDown=
false;
95 _mouse->isWheelUp=
false;
97 else if (_mouse->isWheelUp)
100 if (selectedRecipe<0) { selectedRecipe=vRecipe.size()-1; }
101 _mouse->isWheelDown=
false;
102 _mouse->isWheelUp=
false;
105 if (_mouse->isLeftClick)
109 _mouse->isLeftClick=
false;
125 int selectedInteraction;
130 std::string description;
135 Interaction( std::string _description,
int _vType,
int _vIndex,
int _interactID )
137 description=_description;
140 interactID = _interactID;
146 unsigned long int x,
y;
168 selectedInteraction = 0;
179 selectedInteraction = 0;
184 if ( _keyboard->isPressed(Keyboard::UP) )
186 --selectedInteraction;
187 if (selectedInteraction<0) { selectedInteraction=vInteraction.size()-1; }
190 else if ( _keyboard->isPressed(Keyboard::DOWN) )
192 ++selectedInteraction;
193 if (selectedInteraction>=vInteraction.size()) {selectedInteraction=0;}
205 if (_mouse->isWheelDown)
207 ++selectedInteraction;
208 if (selectedInteraction>=vInteraction.size()) {selectedInteraction=0;}
209 _mouse->isWheelDown=
false;
210 _mouse->isWheelUp=
false;
212 else if (_mouse->isWheelUp)
214 --selectedInteraction;
215 if (selectedInteraction<0) { selectedInteraction=vInteraction.size()-1; }
216 _mouse->isWheelDown=
false;
217 _mouse->isWheelUp=
false;
220 else if (_mouse->isLeftClick)
230 std::cout<<
"Using interaction: "<<vInteraction(selectedInteraction)->description<<
".\n";
231 std::cout<<
"Using item: "<<sourceItem->
getName()<<
".\n";
233 Interaction* _interaction = vInteraction(selectedInteraction);
234 int selectedVector = _interaction->vType;
235 int selectedIndex = _interaction->vIndex;
236 int interactionType = _interaction->interactID;
238 if (localSelected == 0 )
243 if ( selectedVector == 0 )
245 sourceItem->
interact(vGeneric(selectedIndex),interactionType);
247 else if ( selectedVector == 1 )
249 sourceItem->
interact(vItem(selectedIndex),interactionType);
251 else if ( selectedVector == 2 )
253 sourceItem->
interact(vCharacter(selectedIndex),interactionType);
255 else if ( selectedVector == 3 )
257 sourceItem->
interact(vCreature(selectedIndex),interactionType);
259 else if ( selectedVector == 4 )
262 sourceItem->
interact(localSelected,interactionType);
265 _mouse->isLeftClick=
false;
274 bool build(
Item* _sourceItem,
unsigned long int _x,
unsigned long int _y)
285 vInteraction.deleteAll();
297 sourceItem = _sourceItem;
299 std::cout<<
"Building interactions for: "<<x<<
", "<<y<<
".\n";
303 vInteraction.push(
new Interaction (
"Punch ground",4,0,0) );
311 for (
int i2=0;i2<vInteract->size();++i2)
314 vInteraction.push(
new Interaction ((*vInteract)(i2),0,i,i2) );
318 for (
int i=0; i<localSelected->
vItem.size();++i)
320 vGeneric.push(localSelected->
vItem(i));
321 vInteraction.push(
new Interaction (
"Punch "+localSelected->
vItem(i)->getName(),0,i,0) );
323 for (
int i=0; i<localSelected->
vCharacter.size();++i)
326 vInteraction.push(
new Interaction (
"Punch "+localSelected->
vCharacter(i)->getName(),0,i,0) );
328 for (
int i=0; i<localSelected->
vCreature.size();++i)
330 vGeneric.push(localSelected->
vCreature(i));
331 vInteraction.push(
new Interaction (
"Punch "+localSelected->
vCreature(i)->getName(),0,i,0) );
336 std::cout<<
"STATIC\n";
337 vInteraction.push(
new Interaction (
"Pick "+localSelected->
objStatic->
getName(),0,0,0) );
341 std::cout<<
"NO STATIC\n";
349 if ( vInteractTerrain !=0 )
351 for (
int i2=0;i2<vInteractTerrain->size();++i2)
353 vInteraction.push(
new Interaction ((*vInteractTerrain)(i2),4,0,i2) );
364 for (
int i2=0;i2<vInteract->size();++i2)
367 vInteraction.push(
new Interaction ((*vInteract)(i2),0,i,i2) );
371 for (
int i=0; i<localSelected->
vItem.size();++i)
377 for (
int i2=0;i2<vInteract->size();++i2)
379 vItem.push(localSelected->
vItem(i2));
380 vInteraction.push(
new Interaction ((*vInteract)(i2),1,i,i2) );
384 for (
int i=0; i<localSelected->
vCharacter.size();++i)
390 for (
int i2=0;i2<vInteract->size();++i2)
392 vCharacter.push(localSelected->
vCharacter(i2));
393 vInteraction.push(
new Interaction ((*vInteract)(i2),2,i,i2) );
397 for (
int i=0; i<localSelected->
vCreature.size();++i)
403 for (
int i2=0;i2<vInteract->size();++i2)
405 vCreature.push(localSelected->
vCreature(i2));
406 vInteraction.push(
new Interaction ((*vInteract)(i2),3,i,i2) );
412 std::cout<<
"STATIC\n";
417 for (
int i2=0;i2<vInteract->size();++i2)
419 vInteraction.push(
new Interaction ((*vInteract)(i2),3,0,i2) );
425 std::cout<<
"NO STATIC\n";
430 return (vInteraction.size() > 0);
436 Renderer::placeColour4a(120,120,120,255,panelX1+250,panelY2,panelX1+600,(panelY2)-(vInteraction.size()*10));
437 Renderer::placeColour4a(180,180,180,255,panelX1+250,panelY2-(selectedInteraction*10),panelX1+600,panelY2-((selectedInteraction+1)*10));
439 for (
int i=0;i<vInteraction.size();++i)
441 font8x8.drawText(vInteraction(i)->description,panelX1+250,(panelY2)-(i*10),panelX1+500,(panelY2)-(i*10)-10,
false,
true);
453 GUI_Manager guiManager;
456 ColourRGB <unsigned char> cNormal;
457 ColourRGB <unsigned char> cSelected;
458 ColourRGB <unsigned char> cDropPanel;
459 ColourRGB <unsigned char> cHighlight;
464 Texture* backgroundTexture;
468 GUI_Button buttonCenterCamera;
471 GUI_Button buttonSneak;
475 GUI_Button buttonInventory;
479 GUI_Button buttonRevealMap;
484 GUI_Button buttonManual;
488 GUI_Button buttonCharacterSheet;
491 GUI_Button buttonCrafting;
492 bool craftingMenuActive;
498 bool conversationActive;
502 bool characterSheetActive;
505 bool inventoryActive;
507 Vector <Item*> vItemsOnFloor;
513 int hoveredInventoryX, hoveredInventoryY;
516 bool itemSelectionActive;
517 unsigned long int tileSelectAbsoluteX, tileSelectAbsoluteY;
526 int selectedItemSlot;
527 bool subItemSelectionActive;
536 Vector <HasXY2 <unsigned long int> * > * vLineOfFire;
545 backgroundTexture=&TEX_NEW_GAME_BACKGROUND;
552 if ( conversationActive )
556 conversationActive=
false;
557 characterSheetActive=
false;
558 inventoryActive=
false;
559 itemSelectionActive=
false;
562 subItemSelectionActive=
false;
563 itemSelectionActive=
false;
569 for (
int i=0;i<vLineOfFire->size();++i)
571 world((*vLineOfFire)(i))->shotOverlay=
false;
573 vLineOfFire->deleteAll();
575 vLineOfFire=
new Vector <HasXY2 <unsigned long int> * >;
577 craftingMenuActive=
false;
584 cNormal.set(200,200,200);
585 cSelected.set(180,180,180);
586 cDropPanel.set(170,170,170);
587 cHighlight.set(170,170,170);
589 buttonCenterCamera.text=
"";
590 buttonSneak.text=
"SNK";
591 buttonSneak.font = font;
592 buttonCenterCamera.setColours(cNormal,cHighlight,0);
593 buttonSneak.setColours(cNormal,cHighlight,0);
594 guiManager.add(&buttonCenterCamera);
595 guiManager.add(&buttonSneak);
596 buttonCenterCamera.active=
true;
597 buttonSneak.active=
true;
601 buttonInventory.active =
true;
602 buttonInventory.text =
"INV";
603 buttonInventory.font = font;
604 buttonInventory.setColours(cNormal,cHighlight,0);
605 guiManager.add(&buttonInventory);
607 buttonRevealMap.active =
true;
608 buttonRevealMap.text =
"RVL";
609 buttonRevealMap.font = font;
610 buttonRevealMap.setColours(cNormal,cHighlight,0);
611 guiManager.add(&buttonRevealMap);
613 buttonManual.active =
true;
614 buttonManual.text =
"MAN";
615 buttonManual.font = font;
616 buttonManual.setColours(cNormal,cHighlight,0);
617 guiManager.add(&buttonManual);
619 buttonCharacterSheet.active =
true;
620 buttonCharacterSheet.text =
"CHR";
621 buttonCharacterSheet.font = font;
622 buttonCharacterSheet.setColours(cNormal,cHighlight,0);
623 guiManager.add(&buttonCharacterSheet);
625 buttonCrafting.active =
true;
626 buttonCrafting.text =
"CFT";
627 buttonCrafting.font = font;
628 buttonCrafting.setColours(cNormal,cHighlight,0);
629 guiManager.add(&buttonCrafting);
632 craftingMenuActive=
false;
634 itemSelectionActive=
false;
635 tileSelectAbsoluteX=-1;
636 tileSelectAbsoluteY=-1;
639 subItemSelectionActive=
false;
643 characterSheetActive=
false;
646 conversationActive =
false;
647 conversationCharacter=0;
649 inventoryActive=
false;
652 hoveredInventoryX=-1;
653 hoveredInventoryY=-1;
663 vLineOfFire=
new Vector <HasXY2 <unsigned long int> * >;
666 for (
int _y=0;_y<10;++_y)
668 for (
int _x=0;_x<10;++_x)
693 const int nY = panelY2-panelY1;
694 Renderer::placeColour4a(200,200,250,125,panelX1,panelY1+120,panelX1+220,panelY2);
695 int currentY = panelY2-2;
700 while (currentY>panelY1+120 && iMessage>=0 && iMessage<
vConsoleMessage.size() )
702 linesDrawn =
font8x8.drawText(
vConsoleMessage(iMessage),panelX1,currentY,panelX1+220,currentY-38,
false,
false);
704 currentY-=linesDrawn*9;
709 Renderer::placeColour4a(200,200,250,250,panelX1,panelY1,panelX1+220,panelY1+220);
710 font8x8.drawText(
"Minimap",panelX1,panelY1,panelX1+220,panelY1+220,
true,
true);
713 Renderer::placeColour4a(150,150,150,250,panelX1,panelY1+220,panelX1+220,panelY1+320);
714 font8x8.drawText(
"Action Menu",panelX1,panelY1+220,panelX1+220,panelY1+320,
true,
true);
717 Renderer::placeColour4a(150,150,150,250,panelX1,panelY1+320,panelX1+220,panelY1+420);
736 font8x8.drawText(localSelected->
getAll(10),panelX1,panelY1+420,panelX1+220,panelY1+320,
false,
false,
false,0,0,0,255,1);
745 font8x8.drawText(
"OOB",panelX1,panelY1+410,panelX1+220,panelY1+420,
false,
true);
753 font8x8.drawText(
"THIRSTY",panelX1+230,panelY1+230,panelX1+400,panelY1+240,
false,
true,255,0,0);
757 font8x8.drawText(
"HUNGRY",panelX1+230,panelY1+220,panelX1+400,panelY1+230,
false,
true,255,0,0);
761 font8x8.drawText(
"RIP (TAB TO EXIT)",panelX1+230,panelY1+210,panelX1+500,panelY1+220,
false,
true,255,0,0);
765 double barWidth = 220;
770 Renderer::placeColour4a(255,0,0,255,panelX1,panelY1+232,panelX1+healthWidth,panelY1+234);
771 Renderer::placeColour4a(0,0,255,255,panelX1,panelY1+229,panelX1+thirstWidth,panelY1+231);
772 Renderer::placeColour4a(128,64,0,255,panelX1,panelY1+226,panelX1+hungerWidth,panelY1+228);
773 Renderer::placeColour4a(128,128,255,255,panelX1,panelY1+223,panelX1+220,panelY1+225);
774 Renderer::placeColour4a(255,128,0,255,panelX1,panelY1+220,panelX1+220,panelY1+222);
781 font8x8.drawText(
"DATE: "+strDate,panelX1,panelY1+235,panelX1+220,panelY1+245,
true,
true);
784 int currentX2 = panelX1 + 240;
785 for (
int i=0;i<10;++i)
786 { Renderer::placeColour4a(120,120,120,250,currentX2,panelY1+5,currentX2+32,panelY1+37);
788 { Renderer::placeTexture4(currentX2,panelY1+5,currentX2+32,panelY1+37,
inventoryGrid[i][0]->currentTexture(),
false);
791 if ( i==selectedHotbar )
792 { Renderer::placeTexture4(currentX2,panelY1+5,currentX2+32,panelY1+37, &TEX_GUI_TILE_SELECTION,
false);
799 if (itemSelectionActive && localTileSelected != 0)
812 Renderer::placeColour4a(150,150,250,250,panelX1+240,panelY1+40,panelX2-20,panelY2-20);
817 if (craftingMenuActive)
824 if (characterSheetActive)
826 Renderer::placeColour4a(150,150,250,250,panelX1+240,panelY1+40,panelX2-20,panelY2-20);
827 linesDrawn =
font8x8.drawText(
"CHARACTER SHEET\nSkills:\nFishing: "+DataTools::toString((
int)
playerCharacter->
skillFishing),panelX1+250,panelY1+45,panelX2-25,panelY2-25,
false,
false);
831 if (conversationActive && conversationCharacter != 0)
833 Renderer::placeColour4a(30,140,40,250,panelX1+235,panelY1+40,panelX2-15,panelY2-10);
835 Renderer::placeColour4a(150,150,250,250,panelX1+240,panelY1+40,panelX2-162,panelY2-220);
836 linesDrawn =
font8x8.drawText(
playerCharacter->
getFullName()+
" talks to "+conversationCharacter->
getFullName()+
".\n\n["+
playerCharacter->
getFullName()+
"]: COLONEL, WHAT'S A CONVERSATION SYSTEM DOING HERE?\n["+conversationCharacter->
getFullName()+
"]: Snake, remember what De Gaulle said \"The graveyards are full of indispensable men.\" Snake, you're all alone and surrounded by bad guys. Try to be careful and avoid getting into a fight whenever you can.\n["+
playerCharacter->
getFullName()+
"]: I FEEL ASLEEP.\n\n(Press ESC to exit)",panelX1+242,panelY1+42,panelX2-164,panelY2-222,
false,
false);
838 Renderer::placeColour4a(150,150,250,250,panelX2-160,panelY1+40,panelX2-20,panelY2-220);
839 linesDrawn =
font8x8.drawText(
"WE\nMORROWIND\nNOW",panelX2-158,panelY1+42,panelX2-22,panelY2-222,
false,
false);
841 Renderer::placeColour4a(150,150,250,250,panelX1+350,panelY2-210,panelX2-130,panelY2-20);
842 linesDrawn =
font8x8.drawText(
"Disposition: Solid",panelX1+355,panelY2-215,panelX2-135,panelY2-25,
false,
false);
845 Renderer::placeTexture4(panelX1+240, panelY2-160, panelX1+340, panelY2-60, &
TEX_PORTRAIT_SNEK,
true);
846 Renderer::placeTexture4(panelX2-120, panelY2-160, panelX2-20, panelY2-60, &
TEX_PORTRAIT_LING,
true);
855 Renderer::placeColour4a(30,140,40,250,panelX1+235,panelY1+35,panelX2-15,panelY2-10);
856 Renderer::placeColour4a(150,150,250,250,panelX1+240,panelY1+40,panelX2-20,panelY2-220);
857 Renderer::placeColour4a(150,150,250,250,panelX1+350,panelY2-210,panelX2-130,panelY2-20);
860 Renderer::placeTexture4(panelX1+350,panelY2-210,panelX2-130,panelY2-20, &
TEX_NPC,
false);
862 hoveredInventoryX=-1;
863 hoveredInventoryY=-1;
866 int inventoryY = panelY2-250;
867 int currentFloorItem = 0;
869 for (
int row = 0;row<12;++row)
870 {
int currentX = panelX1+250;
871 for (
int i=0;i<10;++i)
873 Renderer::placeColour4a(120,120,120,250,currentX,inventoryY,currentX+32,inventoryY-32);
875 if (mouseX >= currentX && mouseX <= currentX+32
876 && mouseY >=inventoryY-32 && mouseY <= inventoryY)
878 hoveredInventoryX = i;
879 hoveredInventoryY = row;
885 Renderer::placeTexture4(currentX,inventoryY-32,currentX+32,inventoryY,
inventoryGrid[i][row]->currentTexture(),
false);
889 if (row == 10 || row == 11 )
891 if ( currentFloorItem < vItemsOnFloor.size() && vItemsOnFloor(currentFloorItem) != carriedItem )
893 Renderer::placeTexture4(currentX,inventoryY-32,currentX+32,inventoryY, vItemsOnFloor(currentFloorItem)->currentTexture(),
false);
900 font8x8.drawText(DataTools::toString(i),currentX,inventoryY,currentX+32,inventoryY-32,
true,
true);
906 if ( row == 9) {inventoryY -= 5;}
909 inventoryY = panelY2-250;
911 for (
int row = 0;row<12;++row)
912 {
int currentX = panelX1+650;
913 for (
int i=0;i<10;++i)
915 Renderer::placeColour4a(120,120,120,250,currentX,inventoryY,currentX+32,inventoryY-32);
918 font8x8.drawText(DataTools::toString(i),currentX,inventoryY,currentX+32,inventoryY-32,
true,
true);
923 if ( row == 9) {inventoryY -= 5;}
930 std::string carriedItemStats =
"";
933 carriedItemStats = carriedItem->
getName();
935 std::string hoveredItemStats =
"";
936 if ( hoveredInventoryX >= 0 && hoveredInventoryX < 10
937 && hoveredInventoryY >= 0 && hoveredInventoryY < 10)
946 font8x8.drawText(
"Inventory", panelX1 + 250,panelY2-230,panelX1 + 450,panelY2-250,
true,
true);
947 font8x8.drawText(
"Storage", panelX1 + 650,panelY2-230,panelX1 + 850,panelY2-250,
true,
true);
948 font8x8.drawText(
"Carried stats:\n "+carriedItemStats, panelX1+350,panelY2-210,panelX1+(panelNX/2) ,panelY2-25,
false,
false);
949 font8x8.drawText(
"Hovered stats\n "+hoveredItemStats, panelX1+(panelNX/2),panelY2-210,panelX2-130,panelY2-25,
false,
false);
952 if ( carriedItem != 0)
954 Renderer::placeTexture4(mouseX,mouseY-32,mouseX+32,mouseY, carriedItem->
currentTexture(),
false);
963 for (
int i=0;i<vLineOfFire->size();++i)
965 world((*vLineOfFire)(i))->shotOverlay=
false;
967 vLineOfFire->deleteAll();
969 vLineOfFire=
new Vector <HasXY2 <unsigned long int> * >;
982 for (
int i=0;i<vLineOfFire->size();++i)
984 world((*vLineOfFire)(i))->shotOverlay=
true;
1001 if(_keyboard->isPressed(Keyboard::ESCAPE))
1004 _keyboard->keyUp(Keyboard::ESCAPE);
1007 else if (itemSelectionActive && localTileSelected != 0 && interactManager.
keyboardEvent(_keyboard))
1013 if(_keyboard->isPressed(Keyboard::SPACE) && conversationActive==
false)
1028 conversationCharacter = 0;
1030 if ( vNearbyCharacter != 0)
1032 for (
int i=0;i<vNearbyCharacter->size(); ++i)
1034 std::cout<<(*vNearbyCharacter)(i)->getFullName()<<
".\n";
1037 conversationCharacter = (*vNearbyCharacter)(i);
1042 if (conversationCharacter != 0)
1045 conversationActive=
true;
1049 _keyboard->keyUp(Keyboard::SPACE);
1053 if(_keyboard->isPressed(Keyboard::I) || _keyboard->isPressed(Keyboard::i))
1055 inventoryActive = !inventoryActive;
1058 if (inventoryActive)
1060 vItemsOnFloor.clear();
1064 for (
int i=0;i<wl->
vItem.size();++i)
1068 vItemsOnFloor.push(wl->
vItem(i));
1074 _keyboard->keyUp(Keyboard::I);
1075 _keyboard->keyUp(Keyboard::i);
1079 if(_keyboard->isPressed(Keyboard::E) || _keyboard->isPressed(Keyboard::e))
1081 itemSelectionActive = !itemSelectionActive;
1085 for (
int i=0;i<vLineOfFire->size();++i)
1087 world((*vLineOfFire)(i))->shotOverlay=
false;
1089 vLineOfFire->deleteAll();
1091 vLineOfFire=
new Vector <HasXY2 <unsigned long int> * >;
1093 if ( selectedHotbar >= 0 && selectedHotbar < 10 )
1099 localTileSelected=0;
1100 subItemSelectionActive=
false;
1103 _keyboard->keyUp(Keyboard::E);
1104 _keyboard->keyUp(Keyboard::e);
1125 if (itemSelectionActive || subItemSelectionActive || manualActive || conversationActive || inventoryActive)
1127 _keyboard->clearAll();
1133 if(_keyboard->isPressed(Keyboard::TAB))
1143 _keyboard->keyUp(Keyboard::TAB);
1146 if(_keyboard->isPressed(Keyboard::RIGHT) || _keyboard->isPressed(Keyboard::D) || _keyboard->isPressed(Keyboard::d))
1169 _keyboard->keyUp(Keyboard::RIGHT);
1170 _keyboard->keyUp(Keyboard::D);
1171 _keyboard->keyUp(Keyboard::d);
1174 if(_keyboard->isPressed(Keyboard::LEFT) || _keyboard->isPressed(Keyboard::A) || _keyboard->isPressed(Keyboard::a))
1195 _keyboard->keyUp(Keyboard::LEFT);
1196 _keyboard->keyUp(Keyboard::A);
1197 _keyboard->keyUp(Keyboard::a);
1200 if(_keyboard->isPressed(Keyboard::UP) || _keyboard->isPressed(Keyboard::W) || _keyboard->isPressed(Keyboard::w))
1220 _keyboard->keyUp(Keyboard::UP);
1221 _keyboard->keyUp(Keyboard::W);
1222 _keyboard->keyUp(Keyboard::w);
1225 if(_keyboard->isPressed(Keyboard::DOWN) || _keyboard->isPressed(Keyboard::S) || _keyboard->isPressed(Keyboard::s))
1245 _keyboard->keyUp(Keyboard::DOWN);
1246 _keyboard->keyUp(Keyboard::S);
1247 _keyboard->keyUp(Keyboard::s);
1251 if(_keyboard->isPressed(Keyboard::PERIOD))
1254 _keyboard->keyUp(Keyboard::PERIOD);
1261 if(_keyboard->isPressed(Keyboard::RIGHT_CHEVRON))
1278 Console(
"There's no way down here");
1283 _keyboard->keyUp(Keyboard::RIGHT_CHEVRON);
1284 _keyboard->keyUp(Keyboard::LEFT_CHEVRON);
1287 if(_keyboard->isPressed(Keyboard::LEFT_CHEVRON))
1304 Console(
"There's no way up here");
1309 _keyboard->keyUp(Keyboard::RIGHT_CHEVRON);
1310 _keyboard->keyUp(Keyboard::LEFT_CHEVRON);
1313 if(_keyboard->isPressed(Keyboard::Q) || _keyboard->isPressed(Keyboard::q))
1333 Console(
"There's no way up here");
1346 Console(
"There's no way down here");
1352 Console(
"There's no way up or down here");
1357 _keyboard->keyUp(Keyboard::Q);
1358 _keyboard->keyUp(Keyboard::q);
1362 if(_keyboard->isPressed(Keyboard::ONE))
1365 _keyboard->keyUp(Keyboard::ONE);
1367 if(_keyboard->isPressed(Keyboard::TWO))
1370 _keyboard->keyUp(Keyboard::TWO);
1372 if(_keyboard->isPressed(Keyboard::THREE))
1375 _keyboard->keyUp(Keyboard::THREE);
1377 if(_keyboard->isPressed(Keyboard::FOUR))
1380 _keyboard->keyUp(Keyboard::FOUR);
1382 if(_keyboard->isPressed(Keyboard::FIVE))
1385 _keyboard->keyUp(Keyboard::FIVE);
1387 if(_keyboard->isPressed(Keyboard::SIX))
1390 _keyboard->keyUp(Keyboard::SIX);
1392 if(_keyboard->isPressed(Keyboard::SEVEN))
1395 _keyboard->keyUp(Keyboard::SEVEN);
1397 if(_keyboard->isPressed(Keyboard::EIGHT))
1400 _keyboard->keyUp(Keyboard::EIGHT);
1402 if(_keyboard->isPressed(Keyboard::NINE))
1405 _keyboard->keyUp(Keyboard::NINE);
1407 if(_keyboard->isPressed(Keyboard::ZERO))
1410 _keyboard->keyUp(Keyboard::ZERO);
1413 guiManager.keyboardEvent(_keyboard);
1428 if (craftingMenuActive)
1433 if (itemSelectionActive)
1436 if (subItemSelectionActive==
false && _mouse->isRightClick)
1441 else if (subItemSelectionActive && (_mouse->isRightClick || localTileSelected == 0) )
1443 _mouse->isRightClick=
false;
1444 _mouse->isLeftClick=
false;
1447 else if (subItemSelectionActive)
1452 subItemSelectionActive=
false;
1453 itemSelectionActive=
false;
1455 localTileSelected=0;
1459 for (
int i=0;i<vLineOfFire->size();++i)
1461 world((*vLineOfFire)(i))->shotOverlay=
false;
1463 vLineOfFire->deleteAll();
1465 vLineOfFire=
new Vector <HasXY2 <unsigned long int> * >;
1468 else if (subItemSelectionActive==
false && _mouse->isLeftClick)
1473 if (
world.
isSafe(tileSelectAbsoluteX,tileSelectAbsoluteY))
1475 if (interactManager.
build(useItem, tileSelectAbsoluteX,tileSelectAbsoluteY))
1477 localTileSelected=
world(tileSelectAbsoluteX,tileSelectAbsoluteY);
1478 subItemSelectionActive=
true;
1479 interactManager.
clear();
1491 Console(
"Nothing to use here.");
1497 for (
int i=0;i<vLineOfFire->size();++i)
1499 world((*vLineOfFire)(i))->shotOverlay=
false;
1501 vLineOfFire->deleteAll();
1503 vLineOfFire=
new Vector <HasXY2 <unsigned long int> * >;
1505 _mouse->isLeftClick=
false;
1514 if(_mouse->isWheelDown && _mouse->ctrlPressed)
1517 if (selectedHotbar>9) {selectedHotbar=0;}
1518 _mouse->isWheelDown=
false;
1519 _mouse->isWheelUp=
false;
1522 subItemSelectionActive=
false;
1523 itemSelectionActive=
false;
1525 localTileSelected=0;
1529 if(_mouse->isWheelUp && _mouse->ctrlPressed)
1532 if (selectedHotbar<0) {selectedHotbar=9;}
1533 _mouse->isWheelDown=
false;
1534 _mouse->isWheelUp=
false;
1537 subItemSelectionActive=
false;
1538 itemSelectionActive=
false;
1540 localTileSelected=0;
1546 if (inventoryActive)
1548 if (_mouse->isLeftClick)
1551 int inventoryY = panelY2-250;
1552 int currentFloorItem = 0;
1554 for (
int row = 0;row<12;++row)
1556 int currentX = panelX1+250;
1558 for (
int i=0;i<10;++i)
1560 if (_mouse->x >= currentX && _mouse->x <= currentX+32
1561 && _mouse->y >=inventoryY-32 && _mouse->y <= inventoryY)
1563 clickedItemSlot = row*10 + i;
1565 if (clickedItemSlot < 100)
1570 Item * tempItem = carriedItem;
1574 _mouse->isLeftClick=
false;
1576 else if ( clickedItemSlot-100 >= 0)
1578 if (_mouse->ctrlPressed)
1580 if (clickedItemSlot-100 < vItemsOnFloor.size() )
1583 Item* tempItem = carriedItem;
1584 carriedItem = vItemsOnFloor(clickedItemSlot-100);
1586 vItemsOnFloor.removeSlot(clickedItemSlot-100);
1587 _mouse->isLeftClick=
false;
1597 wl->
vItem.push(tempItem);
1598 tempItem->
owner = 0;
1604 if (carriedItem != 0)
1611 wl->
vItem.push(carriedItem);
1612 vItemsOnFloor.push(carriedItem);
1613 carriedItem->
owner = 0;
1621 if (clickedItemSlot-100 < vItemsOnFloor.size() )
1623 Item* tempItem = carriedItem;
1624 carriedItem = vItemsOnFloor(clickedItemSlot-100);
1625 vItemsOnFloor.removeSlot(clickedItemSlot-100);
1626 _mouse->isLeftClick=
false;
1636 wl->
vItem.push(tempItem);
1643 if (carriedItem != 0)
1650 wl->
vItem.push(carriedItem);
1651 vItemsOnFloor.push(carriedItem);
1652 carriedItem->
owner=0;
1662 if (row == 10 || row == 11 )
1675 if ( row == 9) {inventoryY -= 5;}
1686 && _mouse->x > panelX1+220 )
1695 std::cout<<
"Default hand action\n";
1699 for (
int i=0;i<vLineOfFire->size();++i)
1701 world((*vLineOfFire)(i))->shotOverlay=
false;
1703 vLineOfFire->deleteAll();
1705 vLineOfFire=
new Vector <HasXY2 <unsigned long int> * >;
1710 guiManager.mouseEvent(_mouse);
1712 if (buttonCenterCamera.clicked==
true)
1716 buttonCenterCamera.unclick();
1720 if (buttonManual.clicked==
true)
1722 std::cout<<
"MANUAL\n";
1723 manualActive = !manualActive;
1724 buttonManual.unclick();
1728 if (buttonCharacterSheet.clicked==
true)
1730 std::cout<<
"CHARACTER SHEET\n";
1731 characterSheetActive = !characterSheetActive;
1732 buttonCharacterSheet.unclick();
1736 if (buttonCrafting.clicked==
true)
1738 std::cout<<
"CRAFTING\n";
1739 craftingMenuActive = !craftingMenuActive;
1740 menuCrafting.
build();
1741 buttonCrafting.unclick();
1746 if (buttonRevealMap.clicked==
true)
1748 std::cout<<
"REVEAL MAP\n";
1750 buttonRevealMap.unclick();
1755 if (buttonInventory.clicked==
true)
1757 std::cout<<
"INVENTORY\n";
1758 inventoryActive = !inventoryActive;
1761 if (inventoryActive)
1763 vItemsOnFloor.clear();
1767 for (
int i=0;i<wl->
vItem.size();++i)
1771 vItemsOnFloor.push(wl->
vItem(i));
1777 buttonInventory.unclick();
1781 if (buttonSneak.clicked==
true)
1786 {
Console(
"Entered sneaking mode");
1791 {
Console(
"Exited sneaking mode");
1793 buttonSneak.unclick();
1797 if (_mouse->isRightClick)
1799 std::cout<<
"Move here\n";
1802 _mouse->isRightClick=
false;
1817 buttonCenterCamera.setPanel(panelX1,panelY1+304,panelX1+32,panelY1+320);
1818 buttonSneak.setPanel(panelX1+33,panelY1+304,panelX1+65,panelY1+320);
1819 buttonInventory.setPanel(panelX1+66,panelY1+304,panelX1+98,panelY1+320);
1820 buttonManual.setPanel(panelX1+99,panelY1+304,panelX1+131,panelY1+320);
1821 buttonCharacterSheet.setPanel(panelX1+132,panelY1+304,panelX1+164,panelY1+320);
1822 buttonCrafting.setPanel(panelX1+165,panelY1+304,panelX1+197,panelY1+320);
1823 buttonRevealMap.setPanel(panelX1+33,panelY1+287,panelX1+66,panelY1+303);
1827 interactManager.setPanel(panelX1,panelY1,panelX2,panelY2);
1828 menuCrafting.setPanel(panelX1,panelY1,panelX2,panelY2);
Texture TEX_NPC
Definition: Driver_TextureList.hpp:41
WorldViewer worldViewer
Definition: Driver.cpp:35
bool mouseEvent(Mouse *_mouse)
Definition: Menu_AdventureMode.hpp:201
void Console(std::string s)
Definition: Driver_GlobalObjects.hpp:47
Item * inventoryGrid[10][10]
Definition: Driver_Settings.cpp:108
short int thirst
Definition: Character.hpp:65
Vector< Character * > * getAdjacentCharacters(int, int)
Definition: World_Local.cpp:2913
const int LOCAL_MAP_SIZE
Definition: Driver_Settings.cpp:156
short int health
Definition: Character.hpp:63
unsigned long int hoveredAbsoluteX
Definition: World_Viewer.hpp:101
virtual std::string getName()
Definition: Static.hpp:43
int worldX
Definition: WorldObject.hpp:34
bool moveObject(WorldObject *, int, int)
Definition: World_Local.cpp:1855
World world
Definition: Driver.cpp:45
Item * sourceItem
Definition: Menu_AdventureMode.hpp:150
void setCenterTile(const double _centerTileX, const double _centerTileY, const int _subTileX=LOCAL_MAP_SIZE/2, const int _subTileY=LOCAL_MAP_SIZE/2)
Definition: World_Viewer.hpp:334
Definition: Static.hpp:24
void render()
Definition: World_Viewer.hpp:523
Vector< Item * > vItem
Definition: World_Local.hpp:273
const int MAX_THIRST
Definition: Driver_Settings.cpp:205
void updateKnowledge()
Definition: Character.cpp:1174
const std::string ADVENTURE_MODE_MANUAL
Definition: Driver_Settings.cpp:326
Vector< Item * > vItem
Definition: Menu_AdventureMode.hpp:154
int hoveredXTile
Definition: World_Viewer.hpp:99
Texture TEX_PORTRAIT_LING
Definition: Driver_TextureList.hpp:322
int hoveredXTileLocal
Definition: World_Viewer.hpp:100
Wildcat::Font font8x8
Definition: Driver_GlobalObjects.hpp:55
Static * objStaticSelected
Definition: Menu_AdventureMode.hpp:148
Character * owner
Definition: Item.hpp:77
Vector< Interaction * > vInteraction
Definition: Menu_AdventureMode.hpp:158
unsigned char skillFishing
Definition: Character.hpp:72
bool isGenerated(unsigned long int _absoluteX, unsigned long int _absoluteY)
Definition: World.cpp:515
Vector< WorldObject * > vObjectGeneric
Definition: LocalTile.hpp:86
std::string getAll(int)
Definition: LocalTile.cpp:334
bool updateKnowledgeIdle()
Definition: Character.cpp:1257
void incrementTicksBacklog(long long unsigned int)
Definition: World.cpp:1016
unsigned long int y
Definition: Menu_AdventureMode.hpp:146
Definition: World_Local.hpp:58
Definition: Driver_Settings_Enums.hpp:24
unsigned long int hoveredAbsoluteY
Definition: World_Viewer.hpp:101
Vector< std::string > vConsoleMessage
Definition: Driver_GlobalObjects.hpp:40
Vector< Creature * > vCreature
Definition: LocalTile.hpp:92
bool isUnderground
Definition: WorldObject.hpp:24
void revealMap(unsigned int _range)
Definition: Character.cpp:1119
Character * playerCharacter
Definition: Driver_Settings.cpp:107
virtual std::string getName()
Definition: Item.cpp:42
#define ABSOLUTE_COORDINATE_NULL
Definition: Driver_Settings.cpp:247
Texture TEX_PORTRAIT_SNEK
Definition: Driver_TextureList.hpp:319
virtual Vector< std::string > * getInteractNames(WorldObject *) override
Definition: Item_All.cpp:14
short int y
Definition: WorldObject.hpp:22
int worldY
Definition: WorldObject.hpp:34
Calendar globalCalendar
Definition: Driver_GlobalObjects.hpp:28
bool showHoveredTile
Definition: World_Viewer.hpp:102
long unsigned int fullY
Definition: WorldObject.hpp:28
bool remove(WorldObject *)
Definition: World_Local.cpp:2378
enumMenu activeMenu
Definition: Driver_Settings_Enums.hpp:29
Vector< Item * > vItem
Definition: LocalTile.hpp:88
void consoleMessage(std::string s)
Definition: Driver_GlobalObjects.hpp:42
short int hunger
Definition: Character.hpp:64
void setPanel(const int _x1, const int _y1, const int _x2, const int _y2)
Definition: World_Viewer.hpp:318
bool isSneaking
Definition: Character.hpp:97
InteractManager()
Definition: Menu_AdventureMode.hpp:162
Vector< Recipe * > * getValidRecipes()
Definition: Recipe.hpp:335
void makeRecipe(Character *_character, int _index)
Definition: Recipe.hpp:361
void clear()
Definition: Menu_AdventureMode.hpp:173
Definition: Character.hpp:38
Vector< WorldObject * > vGeneric
Definition: Menu_AdventureMode.hpp:153
virtual void addToRecipeManager()
Definition: Item.cpp:47
Static * objStatic
Definition: LocalTile.hpp:94
bool isSafe(int _x, int _y)
Definition: World.cpp:504
LocalTile * localSelected
Definition: Menu_AdventureMode.hpp:147
short int x
Definition: WorldObject.hpp:22
Item_Hand itemHand
Definition: Item.hpp:271
bool moveUp(WorldObject *)
Definition: World_Local.cpp:2212
bool mouseEvent(Mouse *mouse)
Definition: World_Viewer.hpp:261
Definition: LocalTile.hpp:34
bool keyboardEvent(Keyboard *_keyboard)
Definition: Menu_AdventureMode.hpp:182
bool build(Item *_sourceItem, unsigned long int _x, unsigned long int _y)
Definition: Menu_AdventureMode.hpp:274
bool moveDown(WorldObject *)
Definition: World_Local.cpp:2173
Vector< Creature * > vCreature
Definition: Menu_AdventureMode.hpp:156
const int MAX_VIEW_RANGE
Definition: Driver_Settings.cpp:201
virtual Vector< std::string > * getInteractNames(WorldObject *_w)
Definition: Item.hpp:189
Vector< Character * > vCharacter
Definition: Menu_AdventureMode.hpp:155
Definition: Menu_AdventureMode.hpp:123
void render()
Definition: Menu_AdventureMode.hpp:433
Texture TEX_GUI_CENTER_CAMERA
Definition: Driver_TextureList.hpp:38
int hoveredYTile
Definition: World_Viewer.hpp:99
bool RENDER_NEXT_FRAME
Definition: Driver_Settings.cpp:240
std::string getFullName() const
Definition: Character.cpp:397
bool keyboardEvent(Keyboard *_keyboard)
Definition: World_Viewer.hpp:181
int hoveredYTileLocal
Definition: World_Viewer.hpp:100
bool put(WorldObject *, int, int, bool subterranean=false)
Definition: World_Local.cpp:1652
void updateMaps()
Definition: World.cpp:1163
RecipeManager recipeManager
Definition: Recipe.hpp:395
bool subterraneanMode
Definition: World_Viewer.hpp:108
void rayTrace(unsigned long int _x1, unsigned long int _y1, unsigned long int _x2, unsigned long int _y2, Vector< HasXY2< unsigned long int > *> *vVisibleTiles, bool subterranean=false)
Definition: World.cpp:649
short int maxHealth
Definition: Character.hpp:62
virtual Texture * currentTexture()
Definition: Item.cpp:45
long unsigned int fullX
Definition: WorldObject.hpp:28
bool isAlive
Definition: Character.hpp:57
virtual void interact(WorldObject *obj, int interactionType=0)
Definition: Item.hpp:162
Vector< Character * > vCharacter
Definition: LocalTile.hpp:90
const int MAX_HUNGER
Definition: Driver_Settings.cpp:204