+void Person::takeWeapon(int weaponId)
+{
+ weaponactive = 0;
+ weapons[weaponId].owner = id;
+ if (num_weapons > 0) {
+ weaponids[num_weapons] = weaponids[0];
+ }
+ num_weapons++;
+ weaponids[0] = weaponId;
+}
+
+void Person::addClothes()
+{
+ if (numclothes > 0) {
+ for (int i = 0; i < numclothes; i++) {
+ addClothes(i);
+ }
+ DoMipmaps();
+ }
+}
+
+bool Person::addClothes(const int& clothesId)
+{
+ LOGFUNC;
+ const char* fileName = clothes[clothesId];
+
+ GLubyte* array = &skeleton.skinText[0];
+
+ //Load Image
+ ImageRec texture;
+ bool opened = load_image(fileName, texture);
+
+ float alphanum;
+ //Is it valid?
+ if (opened) {
+ float tintr = clothestintr[clothesId];
+ float tintg = clothestintg[clothesId];
+ float tintb = clothestintb[clothesId];
+
+ if (tintr > 1) tintr = 1;
+ if (tintg > 1) tintg = 1;
+ if (tintb > 1) tintb = 1;
+
+ if (tintr < 0) tintr = 0;
+ if (tintg < 0) tintg = 0;
+ if (tintb < 0) tintb = 0;
+
+ int bytesPerPixel = texture.bpp / 8;
+
+ int tempnum = 0;
+ alphanum = 255;
+ for (int i = 0; i < (int)(texture.sizeY * texture.sizeX * bytesPerPixel); i++) {
+ if (bytesPerPixel == 3)
+ alphanum = 255;
+ else if ((i + 1) % 4 == 0)
+ alphanum = texture.data[i];
+ if ((i + 1) % 4 || bytesPerPixel == 3) {
+ if ((i % 4) == 0)
+ texture.data[i] *= tintr;
+ if ((i % 4) == 1)
+ texture.data[i] *= tintg;
+ if ((i % 4) == 2)
+ texture.data[i] *= tintb;
+ array[tempnum] = (float)array[tempnum] * (1 - alphanum / 255) + (float)texture.data[i] * (alphanum / 255);
+ tempnum++;
+ }
+ }
+ return 1;
+ } else {
+ return 0;
+ }
+}