SHOW:
|
|
- or go back to the newest paste.
1 | //NOTE: Code is not in this specific order, Sprite and ItemContainer are taken from the program itself where the other functions and classes are cut down(very large program) | |
2 | namespace Carp | |
3 | { | |
4 | struct Sprite{ | |
5 | Gorilla::Rectangle *spr; | |
6 | Ogre::String name/*Sprite name*/, index/*directional/frame index*/, codex; | |
7 | Coord2 pos, siz, sect, scale/*x=pos, y=siz*/; | |
8 | Color clr; | |
9 | ///---------------------------Constructor------------------------- | |
10 | Sprite(){setter("BLANK","");codex="";spr=0;}; | |
11 | Sprite(Ogre::String n,Ogre::String i){setter(n,i);codex="";spr=0;}; | |
12 | Sprite(Ogre::String n,Ogre::String i,Coord2 p,Coord2 sz,Coord2 st,Coord2 sc,Color c){ | |
13 | setter(n,i,p,sz,st,sc,c);codex="";spr=0;} | |
14 | Sprite(const Carp::Sprite& s) : | |
15 | name(s.name),index(s.index),codex(s.codex),pos(s.pos),siz(s.siz),sect(s.sect), | |
16 | scale(s.scale),clr(s.clr),spr(0){} | |
17 | ///---------------------------Setters----------------------------- | |
18 | void setter(Sprite s){setter(s.name,s.index,s.pos,s.siz,s.sect,s.scale,s.clr);}; | |
19 | void setter(Ogre::String n,Ogre::String i){name=n;index=i;} | |
20 | void setter(Ogre::String n,Ogre::String i,Coord2 p,Coord2 sz,Coord2 st,Coord2 sc,Color c){ | |
21 | name=n;index=i;pos.setter(p);siz.setter(sz);sect.setter(st);scale.setter(sc);clr.setter(c);} | |
22 | ///---------------------------Functions--------------------------- | |
23 | void changeSpr(Ogre::String n,Ogre::String i){setter(n,i);update();} | |
24 | void init(Gorilla::Layer *layer);///-> | |
25 | void update();///-> | |
26 | }; | |
27 | ||
28 | ///ItemPtr is a shared_ptr of class Item(below) | |
29 | struct ItemContainer{ | |
30 | ItemPtr inventory[60]; | |
31 | ItemPtr equip[2][7]; | |
32 | ItemPtr storage[10][100]; | |
33 | int limit,eGems[10]; | |
34 | ItemContainer(){ | |
35 | limit=28; | |
36 | for(int a=0;a<10;a++) | |
37 | eGems[a]=0; | |
38 | for(int b=0;b<60;b++) | |
39 | inventory[b].reset(); | |
40 | for(int c=0;c<2;c++) | |
41 | for(int d=0;d<7;d++) | |
42 | equip[c][d].reset(); | |
43 | for(int e=0;e<10;e++) | |
44 | for(int f=0;f<100;f++) | |
45 | storage[e][f].reset(); | |
46 | } | |
47 | bool addItem(ItemPtr t);///-> | |
48 | bool storeItem(ItemPtr t);///-> | |
49 | ItemPtr dropItem(int p);///-> | |
50 | bool fillDupesI(ItemPtr t);///-> | |
51 | void delItem(int p);///-> | |
52 | void equipItem(int i,int s,int e);///-> | |
53 | void unequipItem(int s,int e);///-> | |
54 | bool useItem(int i);///-> | |
55 | void addGem(int i,int a){ | |
56 | eGems[i]+=a;} | |
57 | }; | |
58 | ||
59 | class Item{ | |
60 | protected: | |
61 | Sprite spr; | |
62 | public: | |
63 | Sprite _spr() {return spr;}; | |
64 | }; | |
65 | ||
66 | class Character{ | |
67 | protected: | |
68 | ItemContainer *items; | |
69 | public: | |
70 | ItemContainer *_items(){return items;}; | |
71 | }; | |
72 | ||
73 | class Interface{ | |
74 | public: | |
75 | Sprite sItemP[28],sItemK[28]; | |
76 | } | |
77 | ||
78 | void Interface::updateGUI{ | |
79 | for(int a=0;a<28;a++){ | |
80 | if(myWatch->_items()->inventory[a].get()!=0){ | |
81 | - | ///This is where the SEGFAULT happened |
81 | + | |
82 | myWatch->_items()<<"\nItem: "<< | |
83 | myWatch->_items()->inventory[a].get()<<"\nSprite: "<< | |
84 | myWatch->_items()->inventory[a]->_spr()<<"\nSprite Name: "<< ///ERROR!! | |
85 | - | myWatch->_items()->inventory[a]->_spr()<<"\nSprite Name: "<< |
85 | + | |
86 | myWatch->_items()->inventory[a]->_spr().index<<"\n"<<std::endl; | |
87 | sItemP[a].changeSpr(myWatch->_items()->inventory[a]->_spr().name,myWatch->_items()->inventory[a]->_spr().index); | |
88 | - | ///end of the cout line |
88 | + | |
89 | sItemP[a].clr.setter(myWatch->_items()->inventory[a]->_spr().clr); | |
90 | if(myWatch->_items()->inventory[a]->_amount().maxim!=-1){cItem[a].changeText(ogreSTR(myWatch->_items()->inventory[a]->_amount().current));} | |
91 | else if(myWatch->_items()->inventory[a]->_durability().maxim!=-1){cItem[a].changeText(ogreSTR(myWatch->_items()->inventory[a]->_durability().current));} | |
92 | else{cItem[a].changeText("");} | |
93 | } | |
94 | else{ | |
95 | sItemP[a].changeSpr("BLANK",""); | |
96 | sItemK[a].changeSpr("BLANK",""); | |
97 | cItem[a].changeText(""); | |
98 | } | |
99 | } | |
100 | } | |
101 | } |