00001 #include <game.h>
00002
00003
00004
00005
00006
00007
00008 inventaire::inventaire() : base("inventaire")
00009 {
00010
00011 }
00012
00013 inventaire::~inventaire()
00014 {
00015
00016 }
00017
00018 int inventaire::init(int i,coeur *c,IGUIEnvironment *e,stringc path,rect<s32> pos,int v,INVENTAIRE_POS p, stringc pathvoid)
00019 {
00020 base::init(i,c);
00021 env = e;
00022
00023 vtot = v;
00024 volume=0;
00025
00026 position = p;
00027
00028 image = env->addImage(pos);
00029 image->setImage(mycore->getTexture(path));
00030
00031 ITexture* texvoid = mycore->getTexture(pathvoid);
00032
00033 switch (p)
00034 {
00035 case INVENTAIRE_POS_GAUCHE:
00036 maxItem=6;
00037 it = new item [6];
00038 images = new IGUIImage* [6];
00039 for (int i=0;i<6;i++)
00040 {
00041 images[i] = env->addImage(texvoid,position2d<s32>(10,110+90*i),true,image);
00042 images[i]->setImage(0);
00043 it[i]=item();
00044 }
00045 break;
00046 case INVENTAIRE_POS_DROITE:
00047 maxItem=6;
00048 it = new item [6];
00049 images = new IGUIImage* [6];
00050 for (int i=0;i<6;i++)
00051 {
00052 images[i] = env->addImage(texvoid,position2d<s32>(10,110+90*i),true,image);
00053 images[i]->setImage(0);
00054 it[i]=item();
00055 }
00056 break;
00057 case INVENTAIRE_POS_HAUT:
00058 maxItem=8;
00059 it = new item [8];
00060 images = new IGUIImage* [8];
00061 for (int i=0;i<8;i++)
00062 {
00063 images[i] = env->addImage(texvoid,position2d<s32>(934,110+90*i),true,image);
00064 images[i]->setImage(0);
00065 it[i]=item();
00066 }
00067 break;
00068 case INVENTAIRE_POS_BAS:
00069 maxItem=10;
00070 it = new item [10];
00071 images = new IGUIImage* [10];
00072 for (int i=0;i<10;i++)
00073 {
00074 images[i] = env->addImage(texvoid,position2d<s32>(110+90*i,10),true,image);
00075 images[i]->setImage(0);
00076 it[i]=item();
00077 }
00078 break;
00079 }
00080
00081 afficher(false);
00082 return 1;
00083 }
00084
00085 int inventaire::update()
00086 {
00087 return 1;
00088 }
00089
00090 int inventaire::close()
00091 {
00092 base::close();
00093 return 1;
00094 }
00095
00096 int inventaire::afficher(bool a)
00097 {
00098 image->setVisible(a);
00099 return 1;
00100 }
00101
00102 IGUIImage* inventaire::getImage()
00103 {
00104 return image;
00105 }
00106
00107 int inventaire::addItem(int n,item m)
00108 {
00109 if (((n<0)||(n>maxItem))||(it[n].getId()!=-1))
00110 return -1;
00111 it[n] = m;
00112 images[n]->setImage(mycore->getTexture(m.getTexture()));
00113 return n;
00114 }
00115
00116 int inventaire::removeItem(int n)
00117 {
00118 if ((n<0)||(it[n].getId()==-1)||(n>maxItem))
00119 return -1;
00120 it[n] = item();
00121 images[n]->setImage(0);
00122 return n;
00123 }
00124
00125 int inventaire::getNumItem(const position2d<s32> pos)
00126 {
00127 for (int i=0;i<maxItem;i++)
00128 if (images[i]->isPointInside(pos))
00129 return i;
00130 return -1;
00131 }
00132
00133 item inventaire::getItem(int n)
00134 {
00135 if ((n<0)||(n>maxItem))
00136 return item();
00137 return it[n];
00138 }
00139
00140 item inventaire::getItem(const position2d<s32> pos)
00141 {
00142 return it[getNumItem(pos)];
00143 }
00144
00145 int inventaire::getFreePlace()
00146 {
00147 for (int i=0;i<maxItem;i++)
00148 if (it[i].getId()==-1)
00149 return i;
00150 return -1;
00151 }
00152
00153 bool inventaire::OnEvent(const SEvent& event)
00154 {
00155 return false;
00156 }
00157