139 lines
3.7 KiB
C++
139 lines
3.7 KiB
C++
/************************************************************************
|
|
* character_creator.h
|
|
* voxelands - 3d voxel world sandbox game
|
|
* Copyright (C) Lisa 'darkrose' Milne 2013-2014 <lisa@ltmnet.com>
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
* See the GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
|
*
|
|
* License updated from GPLv2 or later to GPLv3 or later by Lisa Milne
|
|
* for Voxelands.
|
|
************************************************************************/
|
|
|
|
#include "common_irrlicht.h"
|
|
#include "modalMenu.h"
|
|
#include "utility.h"
|
|
#include <string>
|
|
#include <map>
|
|
#include "main.h"
|
|
#include "mesh.h"
|
|
// For IGameCallback
|
|
#include "guiPauseMenu.h"
|
|
#include "player.h"
|
|
|
|
using namespace irr;
|
|
|
|
enum {
|
|
GUI_ID_CD_QUIT_BUTTON = 101,
|
|
GUI_ID_CD_SAVE_BUTTON,
|
|
GUI_ID_CD_MALE_BUTTON,
|
|
GUI_ID_CD_FEMALE_BUTTON,
|
|
GUI_ID_CD_TALLER_BUTTON,
|
|
GUI_ID_CD_SHORTER_BUTTON,
|
|
GUI_ID_CD_WIDER_BUTTON,
|
|
GUI_ID_CD_THINNER_BUTTON,
|
|
GUI_ID_CD_SKINTONE_PREV_BUTTON,
|
|
GUI_ID_CD_SKINTONE_NEXT_BUTTON,
|
|
GUI_ID_CD_FACE_PREV_BUTTON,
|
|
GUI_ID_CD_FACE_NEXT_BUTTON,
|
|
GUI_ID_CD_HAIRTONE_PREV_BUTTON,
|
|
GUI_ID_CD_HAIRTONE_NEXT_BUTTON,
|
|
GUI_ID_CD_HAIR_PREV_BUTTON,
|
|
GUI_ID_CD_HAIR_NEXT_BUTTON,
|
|
GUI_ID_CD_EYES_PREV_BUTTON,
|
|
GUI_ID_CD_EYES_NEXT_BUTTON,
|
|
GUI_ID_CD_SHIRT_PREV_BUTTON,
|
|
GUI_ID_CD_SHIRT_NEXT_BUTTON,
|
|
GUI_ID_CD_PANTS_PREV_BUTTON,
|
|
GUI_ID_CD_PANTS_NEXT_BUTTON,
|
|
GUI_ID_CD_SHOES_PREV_BUTTON,
|
|
GUI_ID_CD_SHOES_NEXT_BUTTON,
|
|
};
|
|
|
|
class GUICharDefMenu : public GUIModalMenu
|
|
{
|
|
public:
|
|
GUICharDefMenu(
|
|
IrrlichtDevice* device,
|
|
gui::IGUIEnvironment* env,
|
|
gui::IGUIElement* parent, s32 id,
|
|
IMenuManager *menumgr
|
|
);
|
|
~GUICharDefMenu();
|
|
|
|
void removeChildren();
|
|
/*
|
|
Remove and re-add (or reposition) stuff
|
|
*/
|
|
void regenerateGui(v2u32 screensize);
|
|
|
|
void drawMenu();
|
|
|
|
void acceptInput();
|
|
|
|
bool getStatus()
|
|
{
|
|
return m_accepted;
|
|
}
|
|
|
|
bool OnEvent(const SEvent& event);
|
|
|
|
std::string getPlayerSkin();
|
|
video::ITexture* getPlayerTexture()
|
|
{
|
|
std::string tex = getPlayerSkin();
|
|
return g_texturesource->getTextureRaw(tex);
|
|
}
|
|
void fetchPlayerSkin();
|
|
void savePlayerSkin();
|
|
|
|
void printCharDef()
|
|
{
|
|
std::string chardef = m_parts["gender"];
|
|
chardef += std::string(":")+m_parts["Yscale"];
|
|
chardef += std::string(":")+m_parts["XZscale"];
|
|
chardef += std::string(":")+m_parts["skintone"];
|
|
chardef += std::string(":")+m_parts["eyes"];
|
|
chardef += std::string(":")+m_parts["hairtone"];
|
|
chardef += std::string(":")+m_parts["hair"];
|
|
chardef += std::string(":")+m_parts["face"];
|
|
}
|
|
|
|
private:
|
|
bool m_accepted;
|
|
|
|
gui::IGUIEnvironment* env;
|
|
gui::IGUIElement* parent;
|
|
s32 id;
|
|
IMenuManager *menumgr;
|
|
v2u32 m_screensize;
|
|
|
|
scene::IAnimatedMeshSceneNode *m_model;
|
|
scene::ICameraSceneNode* m_cameranode;
|
|
f32 m_model_rotation;
|
|
|
|
std::map<std::string,std::string> m_parts;
|
|
f32 m_y_scale;
|
|
f32 m_xz_scale;
|
|
|
|
std::map<std::string,std::wstring> m_skintone_types;
|
|
std::map<std::string,std::wstring> m_face_types;
|
|
std::map<std::string,std::wstring> m_hairtone_types;
|
|
std::map<std::string,std::wstring> m_hair_types;
|
|
std::map<std::string,std::wstring> m_eyes_types;
|
|
|
|
std::map<std::string,std::wstring> m_shirt_types;
|
|
std::map<std::string,std::wstring> m_pants_types;
|
|
std::map<std::string,std::wstring> m_shoes_types;
|
|
};
|