]> git.jsancho.org Git - lugaru.git/blobdiff - Source/Devtools/ConsoleCmds.cpp
Devtools: Enhance ddialog command
[lugaru.git] / Source / Devtools / ConsoleCmds.cpp
index 94cb002bf9676318bff690b099923bc3d9165ddc..3ae5e20c149856410f78cd9d6524b6ea5e9d1e1c 100644 (file)
@@ -121,7 +121,7 @@ static void set_noclothes(int pnum, const char*)
 {
     Person::players[pnum]->numclothes = 0;
     Person::players[pnum]->skeleton.drawmodel.textureptr.load(
-        creatureskin[Person::players[pnum]->creature][Person::players[pnum]->whichskin], 1,
+        PersonType::types[Person::players[pnum]->creature].skins[Person::players[pnum]->whichskin], 1,
         &Person::players[pnum]->skeleton.skinText[0], &Person::players[pnum]->skeleton.skinsize);
 }
 
@@ -160,6 +160,18 @@ static void set_clothes(int pnum, const char* args)
     Person::players[pnum]->DoMipmaps();
 }
 
+static void list_clothes(int pnum)
+{
+    printf("Clothes from player %d:\n", pnum);
+    for (int i = 0; i < Person::players[pnum]->numclothes; i++) {
+        printf("%s (%f %f %f)\n",
+               Person::players[pnum]->clothes[i],
+               Person::players[pnum]->clothestintr[i],
+               Person::players[pnum]->clothestintg[i],
+               Person::players[pnum]->clothestintb[i]);
+    }
+}
+
 /* Console commands themselves */
 
 void ch_quit(const char*)
@@ -311,7 +323,7 @@ void ch_save(const char* args)
 
 void ch_cellar(const char*)
 {
-    Person::players[0]->skeleton.drawmodel.textureptr.load("Textures/Furdarko.jpg", 1, &Person::players[0]->skeleton.skinText[0], &Person::players[0]->skeleton.skinsize);
+    Person::players[0]->skeleton.drawmodel.textureptr.load("Textures/FurDarko.jpg", 1, &Person::players[0]->skeleton.skinText[0], &Person::players[0]->skeleton.skinsize);
 }
 
 void ch_tint(const char* args)
@@ -438,6 +450,19 @@ void ch_clothesnear(const char* args)
     }
 }
 
+void ch_clotheslist(const char*)
+{
+    list_clothes(0);
+}
+
+void ch_clotheslistnear(const char*)
+{
+    int closest = findClosestPlayer();
+    if (closest >= 0) {
+        list_clothes(closest);
+    }
+}
+
 void ch_belt(const char*)
 {
     Person::players[0]->skeleton.clothes = !Person::players[0]->skeleton.clothes;
@@ -469,37 +494,37 @@ void ch_wolfie(const char*)
 
 void ch_wolf(const char*)
 {
-    Person::players[0]->skeleton.drawmodel.textureptr.load("Textures/Wolf.jpg", 1, &Person::players[0]->skeleton.skinText[0], &Person::players[0]->skeleton.skinsize);
+    Person::players[0]->skeleton.drawmodel.textureptr.load("Textures/FurWolfGrey.jpg", 1, &Person::players[0]->skeleton.skinText[0], &Person::players[0]->skeleton.skinsize);
 }
 
 void ch_snowwolf(const char*)
 {
-    Person::players[0]->skeleton.drawmodel.textureptr.load("Textures/SnowWolf.jpg", 1, &Person::players[0]->skeleton.skinText[0], &Person::players[0]->skeleton.skinsize);
+    Person::players[0]->skeleton.drawmodel.textureptr.load("Textures/FurWolfSnow.jpg", 1, &Person::players[0]->skeleton.skinText[0], &Person::players[0]->skeleton.skinsize);
 }
 
 void ch_darkwolf(const char*)
 {
-    Person::players[0]->skeleton.drawmodel.textureptr.load("Textures/DarkWolf.jpg", 1, &Person::players[0]->skeleton.skinText[0], &Person::players[0]->skeleton.skinsize);
+    Person::players[0]->skeleton.drawmodel.textureptr.load("Textures/FurWolfDark.jpg", 1, &Person::players[0]->skeleton.skinText[0], &Person::players[0]->skeleton.skinsize);
 }
 
 void ch_lizardwolf(const char*)
 {
-    Person::players[0]->skeleton.drawmodel.textureptr.load("Textures/LizardWolf.jpg", 1, &Person::players[0]->skeleton.skinText[0], &Person::players[0]->skeleton.skinsize);
+    Person::players[0]->skeleton.drawmodel.textureptr.load("Textures/FurWolfLizard.jpg", 1, &Person::players[0]->skeleton.skinText[0], &Person::players[0]->skeleton.skinsize);
 }
 
 void ch_white(const char*)
 {
-    Person::players[0]->skeleton.drawmodel.textureptr.load("Textures/Fur.jpg", 1, &Person::players[0]->skeleton.skinText[0], &Person::players[0]->skeleton.skinsize);
+    Person::players[0]->skeleton.drawmodel.textureptr.load("Textures/FurWhite.jpg", 1, &Person::players[0]->skeleton.skinText[0], &Person::players[0]->skeleton.skinsize);
 }
 
 void ch_brown(const char*)
 {
-    Person::players[0]->skeleton.drawmodel.textureptr.load("Textures/Fur3.jpg", 1, &Person::players[0]->skeleton.skinText[0], &Person::players[0]->skeleton.skinsize);
+    Person::players[0]->skeleton.drawmodel.textureptr.load("Textures/FurBrown.jpg", 1, &Person::players[0]->skeleton.skinText[0], &Person::players[0]->skeleton.skinsize);
 }
 
 void ch_black(const char*)
 {
-    Person::players[0]->skeleton.drawmodel.textureptr.load("Textures/Fur2.jpg", 1, &Person::players[0]->skeleton.skinText[0], &Person::players[0]->skeleton.skinsize);
+    Person::players[0]->skeleton.drawmodel.textureptr.load("Textures/FurBlack.jpg", 1, &Person::players[0]->skeleton.skinText[0], &Person::players[0]->skeleton.skinsize);
 }
 
 void ch_sizemin(const char*)
@@ -555,7 +580,7 @@ void ch_hs(const char* args)
     strcat(Hotspot::hotspots.back().text, "\n");
 }
 
-void ch_dialogue(const char* args)
+void ch_dialog(const char* args)
 {
     int type;
     char buf1[32];
@@ -570,7 +595,7 @@ void ch_dialogue(const char* args)
     Dialog::whichdialogue = Dialog::dialogs.size();
 }
 
-void ch_fixdialogue(const char* args)
+void ch_fixdialog(const char* args)
 {
     char buf1[32];
     int whichdi;
@@ -594,11 +619,27 @@ void ch_fixrotation(const char*)
     Dialog::currentDialog().participantyaw[playerId] = Person::players[playerId]->yaw;
 }
 
-void ch_ddialogue(const char*)
+void ch_ddialog(const char* args)
 {
-    if (!Dialog::dialogs.empty()) {
+    if (Dialog::dialogs.empty() || Dialog::inDialog()) {
+        return;
+    }
+
+    int dlg = -1;
+    sscanf(args, "%d", &dlg);
+    if (dlg == -1) {
+        // Remove last entry
         Dialog::dialogs.pop_back();
+        return;
     }
+
+    if (dlg >= int(Dialog::dialogs.size())) {
+        // Invalid index, abort
+        return;
+    }
+
+    // Erase given index, higher indexes will be decreased by 1
+    Dialog::dialogs.erase(Dialog::dialogs.begin() + dlg);
 }
 
 void ch_dhs(const char*)
@@ -648,7 +689,7 @@ void ch_default(const char*)
 
     Person::players[0]->numclothes = 0;
     Person::players[0]->skeleton.drawmodel.textureptr.load(
-        creatureskin[Person::players[0]->creature][Person::players[0]->whichskin], 1,
+        PersonType::types[Person::players[0]->creature].skins[Person::players[0]->whichskin], 1,
         &Person::players[0]->skeleton.skinText[0], &Person::players[0]->skeleton.skinsize);
 
     editoractive = typeactive;