278 lines
12 KiB
C++
278 lines
12 KiB
C++
#pragma once
|
|
|
|
namespace
|
|
{
|
|
enum
|
|
{
|
|
ALPHA_NONE,
|
|
ALPHA_OPEN,
|
|
ALPHA_CLOSE,
|
|
ALPHA_OPENING,
|
|
};
|
|
};
|
|
|
|
|
|
class SUICreateCharSecondDlg : public SUIWnd
|
|
{
|
|
public:
|
|
SUICreateCharSecondDlg( SGameManager* pGameManager ) : SUIWnd( pGameManager )
|
|
, m_nCurHair(0), m_nCurFace(0), m_nCurBody(0), m_nCurHairColor(0), m_nSelectedHairColor(0), m_nCurSkinColor(0), m_bAniCam(false), m_nCurSex(0), m_nCurRace(0), m_nCurDeco(0), m_nHairPosition(0), m_nFacePosition(0),
|
|
m_nBodyPosition(0), m_nHairColorPosition(0), m_nSkinColorPosition(0), m_nDecoPosition(0), m_nSelectFace(0), m_nSelectDeco(0), m_nSelectHair(0), m_nSelectSkinColor(0), m_nSelectBody(0)
|
|
{
|
|
if (nReferences == 0)
|
|
{
|
|
nReferences++;
|
|
|
|
m_CharacterSelectionPoints = new std::map<std::string, int>;
|
|
(*m_CharacterSelectionPoints)["select0000"] = 0; // Face #0
|
|
(*m_CharacterSelectionPoints)["select0001"] = 1; // Face #1
|
|
(*m_CharacterSelectionPoints)["select0002"] = 2; // Face #2
|
|
(*m_CharacterSelectionPoints)["select0003"] = 3; // Face #3
|
|
(*m_CharacterSelectionPoints)["select0004"] = 4; // Face #4
|
|
(*m_CharacterSelectionPoints)["select0005"] = 5; // Face #5
|
|
(*m_CharacterSelectionPoints)["select0006"] = 6; // Face #6
|
|
(*m_CharacterSelectionPoints)["select0007"] = 7; // Face #7
|
|
(*m_CharacterSelectionPoints)["select0008"] = 8; // Face #8
|
|
(*m_CharacterSelectionPoints)["select0009"] = 9; // Face #9
|
|
(*m_CharacterSelectionPoints)["select0010"] = 10; // Face #10
|
|
|
|
(*m_CharacterSelectionPoints)["select0100"] = 100; // Tatoo #0
|
|
(*m_CharacterSelectionPoints)["select0101"] = 101; // Tatoo #1
|
|
(*m_CharacterSelectionPoints)["select0102"] = 102; // Tatoo #2
|
|
(*m_CharacterSelectionPoints)["select0103"] = 103; // Tatoo #3
|
|
(*m_CharacterSelectionPoints)["select0104"] = 104; // Tatoo #4
|
|
(*m_CharacterSelectionPoints)["select0105"] = 105; // Tatoo #5
|
|
(*m_CharacterSelectionPoints)["select0106"] = 106; // Tatoo #6
|
|
(*m_CharacterSelectionPoints)["select0107"] = 107; // Tatoo #7
|
|
(*m_CharacterSelectionPoints)["select0108"] = 108; // Tatoo #8
|
|
(*m_CharacterSelectionPoints)["select0109"] = 109; // Tatoo #9
|
|
(*m_CharacterSelectionPoints)["select0110"] = 110; // Tatoo #10
|
|
(*m_CharacterSelectionPoints)["select0111"] = 111; // Tatoo #11
|
|
(*m_CharacterSelectionPoints)["select0112"] = 112; // Tatoo #12
|
|
(*m_CharacterSelectionPoints)["select0113"] = 113; // Tatoo #13
|
|
(*m_CharacterSelectionPoints)["select0114"] = 114; // Tatoo #14
|
|
(*m_CharacterSelectionPoints)["select0115"] = 115; // Tatoo #15
|
|
(*m_CharacterSelectionPoints)["select0116"] = 116; // Tatoo #16
|
|
(*m_CharacterSelectionPoints)["select0117"] = 117; // Tatoo #17
|
|
(*m_CharacterSelectionPoints)["select0118"] = 118; // Tatoo #18
|
|
(*m_CharacterSelectionPoints)["select0119"] = 119; // Tatoo #19
|
|
|
|
(*m_CharacterSelectionPoints)["select0200"] = 200; // Hair #0
|
|
(*m_CharacterSelectionPoints)["select0201"] = 201; // Hair #1
|
|
(*m_CharacterSelectionPoints)["select0202"] = 202; // Hair #2
|
|
(*m_CharacterSelectionPoints)["select0203"] = 203; // Hair #3
|
|
(*m_CharacterSelectionPoints)["select0204"] = 204; // Hair #4
|
|
(*m_CharacterSelectionPoints)["select0205"] = 205; // Hair #5
|
|
(*m_CharacterSelectionPoints)["select0206"] = 206; // Hair #6
|
|
(*m_CharacterSelectionPoints)["select0207"] = 207; // Hair #7
|
|
|
|
(*m_CharacterSelectionPoints)["select0300"] = 300; // Hairdye #0
|
|
(*m_CharacterSelectionPoints)["select0301"] = 301; // Hairdye #1
|
|
(*m_CharacterSelectionPoints)["select0302"] = 302; // Hairdye #2
|
|
(*m_CharacterSelectionPoints)["select0303"] = 303; // Hairdye #3
|
|
(*m_CharacterSelectionPoints)["select0304"] = 304; // Hairdye #4
|
|
(*m_CharacterSelectionPoints)["select0305"] = 305; // Hairdye #5
|
|
(*m_CharacterSelectionPoints)["select0306"] = 306; // Hairdye #6
|
|
(*m_CharacterSelectionPoints)["select0307"] = 307; // Hairdye #7
|
|
(*m_CharacterSelectionPoints)["select0308"] = 308; // Hairdye #8
|
|
(*m_CharacterSelectionPoints)["select0309"] = 309; // Hairdye #9
|
|
(*m_CharacterSelectionPoints)["select0310"] = 310; // Hairdye #10
|
|
(*m_CharacterSelectionPoints)["select0311"] = 311; // Hairdye #11
|
|
(*m_CharacterSelectionPoints)["select0312"] = 312; // Hairdye #12
|
|
(*m_CharacterSelectionPoints)["select0313"] = 313; // Hairdye #13
|
|
(*m_CharacterSelectionPoints)["select0314"] = 314; // Hairdye #14
|
|
(*m_CharacterSelectionPoints)["select0315"] = 315; // Hairdye #15
|
|
(*m_CharacterSelectionPoints)["select0316"] = 316; // Hairdye #16
|
|
(*m_CharacterSelectionPoints)["select0317"] = 317; // Hairdye #17
|
|
(*m_CharacterSelectionPoints)["select0318"] = 318; // Hairdye #18
|
|
(*m_CharacterSelectionPoints)["select0319"] = 319; // Hairdye #19
|
|
(*m_CharacterSelectionPoints)["select0320"] = 320; // Hairdye #20
|
|
(*m_CharacterSelectionPoints)["select0321"] = 321; // Hairdye #21
|
|
(*m_CharacterSelectionPoints)["select0322"] = 322; // Hairdye #22
|
|
(*m_CharacterSelectionPoints)["select0323"] = 323; // Hairdye #23
|
|
(*m_CharacterSelectionPoints)["select0324"] = 324; // Hairdye #24
|
|
(*m_CharacterSelectionPoints)["select0325"] = 325; // Hairdye #25
|
|
(*m_CharacterSelectionPoints)["select0326"] = 326; // Hairdye #26
|
|
(*m_CharacterSelectionPoints)["select0327"] = 327; // Hairdye #27
|
|
(*m_CharacterSelectionPoints)["select0328"] = 328; // Hairdye #28
|
|
(*m_CharacterSelectionPoints)["select0329"] = 329; // Hairdye #29
|
|
(*m_CharacterSelectionPoints)["select0330"] = 330; // Hairdye #30
|
|
(*m_CharacterSelectionPoints)["select0331"] = 331; // Hairdye #31
|
|
(*m_CharacterSelectionPoints)["select0332"] = 332; // Hairdye #32
|
|
(*m_CharacterSelectionPoints)["select0333"] = 333; // Hairdye #33
|
|
|
|
(*m_CharacterSelectionPoints)["select0400"] = 400; // Clothes (Outfit) #0
|
|
(*m_CharacterSelectionPoints)["select0401"] = 401; // Clothes (Outfit) #1
|
|
(*m_CharacterSelectionPoints)["select0402"] = 402; // Clothes (Outfit) #2
|
|
(*m_CharacterSelectionPoints)["select0403"] = 403; // Clothes (Outfit) #3
|
|
|
|
(*m_CharacterSelectionPoints)["select0500"] = 500; // Skin Color #0
|
|
(*m_CharacterSelectionPoints)["select0501"] = 501; // Skin Color #1
|
|
(*m_CharacterSelectionPoints)["select0502"] = 502; // Skin Color #2
|
|
(*m_CharacterSelectionPoints)["select0503"] = 503; // Skin Color #3
|
|
(*m_CharacterSelectionPoints)["select0504"] = 504; // Skin Color #4
|
|
(*m_CharacterSelectionPoints)["select0505"] = 505; // Skin Color #5
|
|
(*m_CharacterSelectionPoints)["select0506"] = 506; // Skin Color #6
|
|
(*m_CharacterSelectionPoints)["select0507"] = 507; // Skin Color #7
|
|
(*m_CharacterSelectionPoints)["select0508"] = 508; // Skin Color #8
|
|
(*m_CharacterSelectionPoints)["select0509"] = 509; // Skin Color #9
|
|
(*m_CharacterSelectionPoints)["select0510"] = 510; // Skin Color #10
|
|
(*m_CharacterSelectionPoints)["select0511"] = 511; // Skin Color #11
|
|
|
|
m_CharacterHairDyesMap = new std::map<int, int>;
|
|
// Hair colors
|
|
(*m_CharacterHairDyesMap)[300] = 2815;
|
|
(*m_CharacterHairDyesMap)[301] = 11975;
|
|
(*m_CharacterHairDyesMap)[302] = 35583;
|
|
(*m_CharacterHairDyesMap)[303] = 6121882;
|
|
(*m_CharacterHairDyesMap)[304] = 4030637;
|
|
(*m_CharacterHairDyesMap)[305] = 56575;
|
|
(*m_CharacterHairDyesMap)[306] = 38077;
|
|
(*m_CharacterHairDyesMap)[307] = 49075;
|
|
(*m_CharacterHairDyesMap)[308] = 4489344;
|
|
(*m_CharacterHairDyesMap)[309] = 6783118;
|
|
(*m_CharacterHairDyesMap)[310] = 8453915;
|
|
(*m_CharacterHairDyesMap)[311] = 55104;
|
|
(*m_CharacterHairDyesMap)[312] = 2198622;
|
|
(*m_CharacterHairDyesMap)[313] = 3962666;
|
|
(*m_CharacterHairDyesMap)[314] = 13369152;
|
|
(*m_CharacterHairDyesMap)[315] = 15055633;
|
|
(*m_CharacterHairDyesMap)[316] = 10521399;
|
|
(*m_CharacterHairDyesMap)[317] = 9463602;
|
|
(*m_CharacterHairDyesMap)[318] = 4796732;
|
|
(*m_CharacterHairDyesMap)[319] = 9213762;
|
|
(*m_CharacterHairDyesMap)[320] = 15204352;
|
|
(*m_CharacterHairDyesMap)[321] = 11479296;
|
|
(*m_CharacterHairDyesMap)[322] = 11492096;
|
|
(*m_CharacterHairDyesMap)[323] = 9317455;
|
|
(*m_CharacterHairDyesMap)[324] = 10439219;
|
|
(*m_CharacterHairDyesMap)[325] = 16711935;
|
|
(*m_CharacterHairDyesMap)[326] = 10554495;
|
|
(*m_CharacterHairDyesMap)[327] = 5309291;
|
|
(*m_CharacterHairDyesMap)[328] = 5243070;
|
|
(*m_CharacterHairDyesMap)[329] = 12779648;
|
|
|
|
(*m_CharacterHairDyesMap)[330] = 3;
|
|
(*m_CharacterHairDyesMap)[331] = 4;
|
|
(*m_CharacterHairDyesMap)[332] = 5;
|
|
(*m_CharacterHairDyesMap)[333] = 6;
|
|
|
|
m_CharacterSkinColorMap = new std::map<int, int>;
|
|
|
|
(*m_CharacterSkinColorMap)[500] = 8487040; // icon_item_skincolor_asura_8487040
|
|
(*m_CharacterSkinColorMap)[501] = 6192796; // icon_item_skincolor_asura_6192796
|
|
(*m_CharacterSkinColorMap)[502] = 4413801; // icon_item_skincolor_asura_4413801
|
|
(*m_CharacterSkinColorMap)[503] = 1587028; // icon_item_skincolor_asura_1587028
|
|
|
|
(*m_CharacterSkinColorMap)[504] = 8487040; // icon_item_skincolor_deva_8487040
|
|
(*m_CharacterSkinColorMap)[505] = 3752263; // icon_item_skincolor_deva_3752263
|
|
(*m_CharacterSkinColorMap)[506] = 2176583; // icon_item_skincolor_deva_2176583
|
|
(*m_CharacterSkinColorMap)[507] = 6706; // icon_item_skincolor_deva_6706
|
|
|
|
(*m_CharacterSkinColorMap)[508] = 8487040; // icon_item_skincolor_gaia_8487040
|
|
(*m_CharacterSkinColorMap)[509] = 7429206; // icon_item_skincolor_gaia_7429206
|
|
(*m_CharacterSkinColorMap)[510] = 4208182; // icon_item_skincolor_gaia_4208182
|
|
(*m_CharacterSkinColorMap)[511] = 1116426; // icon_item_skincolor_gaia_1116426
|
|
}
|
|
}
|
|
|
|
SUICreateCharSecondDlg::~SUICreateCharSecondDlg();
|
|
|
|
virtual void PumpUpMessage( LPCSTR lpszControlID, DWORD nMessage, DWORD lparam, DWORD wparam );
|
|
virtual void ProcMsgAtStatic( SGameMessage* pMsg );
|
|
virtual bool InitData( bool bReload = false );
|
|
virtual void OnNotifyUIWindowOpen( bool bOpen, bool bLimitWnd = true );
|
|
|
|
void SetCurrentHairColor(int nNewColor) { m_nCurHairColor = nNewColor; };
|
|
|
|
|
|
// Handling static maps because UI made shit way
|
|
static int nReferences;
|
|
static std::map<std::string, int>* m_CharacterSelectionPoints;
|
|
static std::map<int, int>* m_CharacterHairDyesMap;
|
|
static std::map<int, int>* m_CharacterSkinColorMap;
|
|
|
|
private:
|
|
void SetCurrentFaceIcon( int nRace, int nSex, int nIndex );
|
|
void SetCurrentHairIcon( int nRace, int nSex, int nIndex );
|
|
void SetCurrentBodyIcon( int nRace, int nSex, int nIndex );
|
|
void SetCurrentDecoIcon( int nRace, int nSex, int nIndex );
|
|
|
|
// @brief 2010.04.21 DB information for each part's list - prodongi
|
|
struct sPartsListInfo
|
|
{
|
|
sPartsListInfo(std::string const& iconName, int nTextureId)
|
|
{
|
|
m_iconName = iconName;
|
|
m_textureId = nTextureId;
|
|
}
|
|
bool operator == (sPartsListInfo const& info) { return m_iconName == info.m_iconName; }
|
|
bool operator < (sPartsListInfo const& info) { return m_iconName < info.m_iconName; }
|
|
bool operator > (sPartsListInfo const& info) { return m_iconName > info.m_iconName; }
|
|
|
|
std::string m_iconName;
|
|
int m_textureId;
|
|
};
|
|
|
|
typedef std::vector<sPartsListInfo> v_partslist;
|
|
typedef v_partslist::iterator it_partslist;
|
|
|
|
// @brief 2010.04.20 Filters out duplicates when pushing and adds it - prodongi
|
|
void pushList(v_partslist& list, sPartsListInfo const& info);
|
|
|
|
// @brief 2010.04.21 Check index range - prodongi
|
|
void checkValidIndex(v_partslist const& list, int& index) const;
|
|
|
|
// Cleaning every partlist array, cleanup of all the shit (being called in destructor)
|
|
void clear();
|
|
|
|
// Processing messages
|
|
void CharCreationProcMsgAtStatic(char const* iconName, char const* selectControl, sPartsListInfo const* info, int selectIndex);
|
|
|
|
// @brief 2010.04.22 Resets the avatar's hair to the currently selected hair.
|
|
// Should only be done during initialization; it cannot be done when the avatar to customize is created, so it is done here - prodongi
|
|
void VerifyAvatarHair();
|
|
|
|
|
|
private:
|
|
|
|
|
|
bool m_bAniCam;
|
|
bool m_bCreateChar;
|
|
|
|
int m_nCurHair;
|
|
int m_nCurFace;
|
|
int m_nCurBody;
|
|
int m_nCurHairColor;
|
|
int m_nCurSkinColor;
|
|
int m_nCurRace;
|
|
int m_nCurSex;
|
|
int m_nCurDeco;
|
|
|
|
// Position of the selected icon
|
|
int m_nSelectFace;
|
|
int m_nSelectDeco;
|
|
int m_nSelectHair;
|
|
int m_nSelectedHairColor;
|
|
int m_nSelectSkinColor;
|
|
int m_nSelectBody;
|
|
|
|
// Position the icon displayed on the screen
|
|
int m_nHairPosition;
|
|
int m_nFacePosition;
|
|
int m_nBodyPosition;
|
|
int m_nHairColorPosition;
|
|
int m_nSkinColorPosition;
|
|
int m_nDecoPosition;
|
|
|
|
// 2010.04.21 Changed to a struct due to insufficient information - prodongi
|
|
v_partslist m_vHairList; // Hairs
|
|
v_partslist m_vFaceList; // Faces
|
|
v_partslist m_vBodyList; // Outfit (costume)
|
|
v_partslist m_vDecoList; // Face tatoos
|
|
|
|
std::vector<unsigned long> m_vSkinColorList;
|
|
};
|
|
|
|
|