#include "ConsoleCmds.h"
#include "Game.h"
#include "Dialog.h"
+#include "Hotspot.h"
+#include "Utils/Folders.h"
const char *cmd_names[cmd_count] = {
#define DECLARE_COMMAND(cmd) #cmd,
extern float slomofreq;
extern int tutoriallevel;
extern int hostile;
-extern XYZ hotspot[40];
-extern int hotspottype[40];
-extern float hotspotsize[40];
-extern char hotspottext[40][256];
extern int maptype;
-extern int numhotspots;
extern Objects objects;
extern int slomo;
extern float slomodelay;
static void set_clothes(int pnum, const char *args)
{
char buf[64];
- snprintf(buf, 63, ":Data:Textures:%s.png", args);
+ snprintf(buf, 63, "Textures/%s.png", args);
int id = Person::players[pnum]->numclothes;
strcpy(Person::players[pnum]->clothes[id], buf);
void ch_save(const char *args)
{
- char buf[64];
- snprintf(buf, 63, ":Data:Maps:%s", args);
+ std::string map_path = Folders::getUserDataPath() + "/Maps/" + args;
int mapvers = 12;
FILE *tfile;
- tfile = fopen( ConvertFileName(buf), "wb" );
+ tfile = fopen( map_path.c_str(), "wb" );
fpackf(tfile, "Bi", mapvers);
fpackf(tfile, "Bi", maptype);
fpackf(tfile, "Bi", hostile);
fpackf(tfile, "Bi Bf Bf Bf Bf Bf Bf", objects.type[k], objects.yaw[k], objects.pitch[k],
objects.position[k].x, objects.position[k].y, objects.position[k].z, objects.scale[k]);
- fpackf(tfile, "Bi", numhotspots);
- for (int i = 0; i < numhotspots; i++) {
- fpackf(tfile, "Bi Bf Bf Bf Bf", hotspottype[i], hotspotsize[i], hotspot[i].x, hotspot[i].y, hotspot[i].z);
- int templength = strlen(hotspottext[i]);
+ fpackf(tfile, "Bi", Hotspot::hotspots.size());
+ for (int i = 0; i < Hotspot::hotspots.size(); i++) {
+ fpackf(tfile, "Bi Bf Bf Bf Bf", Hotspot::hotspots[i].type, Hotspot::hotspots[i].size, Hotspot::hotspots[i].position.x, Hotspot::hotspots[i].position.y, Hotspot::hotspots[i].position.z);
+ int templength = strlen(Hotspot::hotspots[i].text);
fpackf(tfile, "Bi", templength);
for (int l = 0; l < templength; l++)
- fpackf(tfile, "Bb", hotspottext[i][l]);
+ fpackf(tfile, "Bb", Hotspot::hotspots[i].text[l]);
}
fpackf(tfile, "Bi", Person::players.size());
void ch_cellar(const char *args)
{
- Person::players[0]->skeleton.drawmodel.textureptr.load(":Data: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)
void ch_funnybunny(const char *args)
{
- Person::players[0]->skeleton.id = 0;
- Person::players[0]->skeleton.Load(":Data:Skeleton:Basic Figure", ":Data:Skeleton:Basic Figurelow",
- ":Data:Skeleton:Rabbitbelt", ":Data:Models:Body.solid",
- ":Data:Models:Body2.solid", ":Data:Models:Body3.solid",
- ":Data:Models:Body4.solid", ":Data:Models:Body5.solid",
- ":Data:Models:Body6.solid", ":Data:Models:Body7.solid",
- ":Data:Models:Bodylow.solid", ":Data:Models:Belt.solid", 1);
- Person::players[0]->skeleton.drawmodel.textureptr.load(":Data:Textures:fur3.jpg", 1, &Person::players[0]->skeleton.skinText[0], &Person::players[0]->skeleton.skinsize);
Person::players[0]->creature = rabbittype;
+ Person::players[0]->skeletonLoad(true);
Person::players[0]->scale = .2;
Person::players[0]->headless = 0;
Person::players[0]->damagetolerance = 200;
void ch_wolfie(const char *args)
{
- Person::players[0]->skeleton.id = 0;
- Person::players[0]->skeleton.Load(":Data:Skeleton:Basic Figure Wolf", ":Data:Skeleton:Basic Figure Wolf Low",
- ":Data:Skeleton:Rabbitbelt", ":Data:Models:Wolf.solid",
- ":Data:Models:Wolf2.solid", ":Data:Models:Wolf3.solid",
- ":Data:Models:Wolf4.solid", ":Data:Models:Wolf5.solid",
- ":Data:Models:Wolf6.solid", ":Data:Models:Wolf7.solid",
- ":Data:Models:Wolflow.solid", ":Data:Models:Belt.solid", 0);
- Person::players[0]->skeleton.drawmodel.textureptr.load(":Data:Textures:Wolf.jpg", 1, &Person::players[0]->skeleton.skinText[0], &Person::players[0]->skeleton.skinsize);
Person::players[0]->creature = wolftype;
+ Person::players[0]->skeletonLoad();
Person::players[0]->damagetolerance = 300;
set_proportion(0, "1 1 1 1");
}
void ch_wolf(const char *args)
{
- Person::players[0]->skeleton.drawmodel.textureptr.load(":Data:Textures:Wolf.jpg", 1, &Person::players[0]->skeleton.skinText[0], &Person::players[0]->skeleton.skinsize);
+ Person::players[0]->skeleton.drawmodel.textureptr.load("Textures/Wolf.jpg", 1, &Person::players[0]->skeleton.skinText[0], &Person::players[0]->skeleton.skinsize);
}
void ch_snowwolf(const char *args)
{
- Person::players[0]->skeleton.drawmodel.textureptr.load(":Data:Textures:SnowWolf.jpg", 1, &Person::players[0]->skeleton.skinText[0], &Person::players[0]->skeleton.skinsize);
+ Person::players[0]->skeleton.drawmodel.textureptr.load("Textures/SnowWolf.jpg", 1, &Person::players[0]->skeleton.skinText[0], &Person::players[0]->skeleton.skinsize);
}
void ch_darkwolf(const char *args)
{
- Person::players[0]->skeleton.drawmodel.textureptr.load(":Data:Textures:DarkWolf.jpg", 1, &Person::players[0]->skeleton.skinText[0], &Person::players[0]->skeleton.skinsize);
+ Person::players[0]->skeleton.drawmodel.textureptr.load("Textures/DarkWolf.jpg", 1, &Person::players[0]->skeleton.skinText[0], &Person::players[0]->skeleton.skinsize);
}
void ch_lizardwolf(const char *args)
{
- Person::players[0]->skeleton.drawmodel.textureptr.load(":Data:Textures:Lizardwolf.jpg", 1, &Person::players[0]->skeleton.skinText[0], &Person::players[0]->skeleton.skinsize);
+ Person::players[0]->skeleton.drawmodel.textureptr.load("Textures/LizardWolf.jpg", 1, &Person::players[0]->skeleton.skinText[0], &Person::players[0]->skeleton.skinsize);
}
void ch_white(const char *args)
{
- Person::players[0]->skeleton.drawmodel.textureptr.load(":Data:Textures:fur.jpg", 1, &Person::players[0]->skeleton.skinText[0], &Person::players[0]->skeleton.skinsize);
+ Person::players[0]->skeleton.drawmodel.textureptr.load("Textures/Fur.jpg", 1, &Person::players[0]->skeleton.skinText[0], &Person::players[0]->skeleton.skinsize);
}
void ch_brown(const char *args)
{
- Person::players[0]->skeleton.drawmodel.textureptr.load(":Data:Textures:fur3.jpg", 1, &Person::players[0]->skeleton.skinText[0], &Person::players[0]->skeleton.skinsize);
+ Person::players[0]->skeleton.drawmodel.textureptr.load("Textures/Fur3.jpg", 1, &Person::players[0]->skeleton.skinText[0], &Person::players[0]->skeleton.skinsize);
}
void ch_black(const char *args)
{
- Person::players[0]->skeleton.drawmodel.textureptr.load(":Data:Textures:fur2.jpg", 1, &Person::players[0]->skeleton.skinText[0], &Person::players[0]->skeleton.skinsize);
+ Person::players[0]->skeleton.drawmodel.textureptr.load("Textures/Fur2.jpg", 1, &Person::players[0]->skeleton.skinText[0], &Person::players[0]->skeleton.skinsize);
}
void ch_sizemin(const char *args)
void ch_hs(const char *args)
{
- hotspot[numhotspots] = Person::players[0]->coords;
-
float size;
int type, shift;
sscanf(args, "%f%d %n", &size, &type, &shift);
- hotspotsize[numhotspots] = size;
- hotspottype[numhotspots] = type;
-
- strcpy(hotspottext[numhotspots], args + shift);
- strcat(hotspottext[numhotspots], "\n");
+ Hotspot::hotspots.emplace_back(Person::players[0]->coords, type, size);
- numhotspots++;
+ strcpy(Hotspot::hotspots.back().text, args + shift);
+ strcat(Hotspot::hotspots.back().text, "\n");
}
void ch_dialogue(const char *args)
{
int type;
- char buf1[32], filename[64];
+ char buf1[32];
sscanf(args, "%d %31s", &type, buf1);
- snprintf(filename, 63, ":Data:Dialogues:%s.txt", buf1);
+ std::string filename = std::string("Dialogues/") + buf1 + ".txt";
Dialog::dialogs.push_back(Dialog(type, filename));
void ch_fixdialogue(const char *args)
{
- char buf1[32], filename[64];
+ char buf1[32];
int whichdi;
sscanf(args, "%d %31s", &whichdi, buf1);
- snprintf(filename, 63, ":Data:Dialogues:%s.txt", buf1);
+ std::string filename = std::string("Dialogues/") + buf1 + ".txt";
Dialog::dialogs[whichdi] = Dialog(Dialog::dialogs[whichdi].type, filename);
}
void ch_ddialogue(const char *args)
{
- Dialog::dialogs.pop_back();
+ if (!Dialog::dialogs.empty()) {
+ Dialog::dialogs.pop_back();
+ }
}
void ch_dhs(const char *args)
{
- if (numhotspots)
- numhotspots--;
+ if (!Hotspot::hotspots.empty()) {
+ Hotspot::hotspots.pop_back();
+ }
}
void ch_immobile(const char *args)