View difference between Paste ID: 89gCjH5P and qRSZ1T8W
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
}