Player options dialogue, let the player choose a clonk skin

Felix Wagner 2012-01-29 02:16:22 +00:00
parent af699844de
commit d468862159
9 changed files with 78 additions and 31 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -160,6 +160,7 @@ IDS_CTL_CHAT=Cha&t:
IDS_CTL_CLIMATE2=heiß IDS_CTL_CLIMATE2=heiß
IDS_CTL_CLIMATE3=kalt IDS_CTL_CLIMATE3=kalt
IDS_CTL_CLIMATE=Klima IDS_CTL_CLIMATE=Klima
IDS_CTL_CLONKSKIN=Clonk-Stil:
IDS_CTL_COLOR=Farbe IDS_CTL_COLOR=Farbe
IDS_CTL_COMMENT=Kommentar IDS_CTL_COMMENT=Kommentar
IDS_CTL_CONTROL=Steuerung IDS_CTL_CONTROL=Steuerung
@ -435,6 +436,7 @@ IDS_DLGTIP_PLAYERCOLORSTGB=Mischt eine eigene Spielerfarbe aus Rot, Grün und Bl
IDS_DLGTIP_PLAYERCONTROL=Wählt eine Steuerungsmethode aus. IDS_DLGTIP_PLAYERCONTROL=Wählt eine Steuerungsmethode aus.
IDS_DLGTIP_PLAYERCONTROLMOUSE=Schaltet zur ausgewählten Steuerungsmethode zusätzlich Maussteurung ein. IDS_DLGTIP_PLAYERCONTROLMOUSE=Schaltet zur ausgewählten Steuerungsmethode zusätzlich Maussteurung ein.
IDS_DLGTIP_PLAYERCREW=Zeigt die Stammcrew des Spielers an. IDS_DLGTIP_PLAYERCREW=Zeigt die Stammcrew des Spielers an.
IDS_DLGTIP_PLAYERCREWSKIN=Wählt das Aussehen der Clonks aus.
IDS_DLGTIP_PLAYERDELETE=Löscht den ausgewählten Spieler. IDS_DLGTIP_PLAYERDELETE=Löscht den ausgewählten Spieler.
IDS_DLGTIP_PLAYERFILES=Liste aller Spielerdateien auf diesem Rechner IDS_DLGTIP_PLAYERFILES=Liste aller Spielerdateien auf diesem Rechner
IDS_DLGTIP_PLAYERPROPERTIES=Ändert die Spielereigenschaften. IDS_DLGTIP_PLAYERPROPERTIES=Ändert die Spielereigenschaften.

View File

@ -160,6 +160,7 @@ IDS_CTL_CHAT=Cha&t:
IDS_CTL_CLIMATE2=hot IDS_CTL_CLIMATE2=hot
IDS_CTL_CLIMATE3=cold IDS_CTL_CLIMATE3=cold
IDS_CTL_CLIMATE=Climate IDS_CTL_CLIMATE=Climate
IDS_CTL_CLONKSKIN=Clonk style:
IDS_CTL_COLOR=Color IDS_CTL_COLOR=Color
IDS_CTL_COMMENT=Comment IDS_CTL_COMMENT=Comment
IDS_CTL_CONTROL=Control IDS_CTL_CONTROL=Control
@ -434,6 +435,7 @@ IDS_DLGTIP_PLAYERCOLORSTGB=Composes a custom player color from red, green, and b
IDS_DLGTIP_PLAYERCONTROL=Selects a control method. IDS_DLGTIP_PLAYERCONTROL=Selects a control method.
IDS_DLGTIP_PLAYERCONTROLMOUSE=Activates mouse control in addition to the selected control method. IDS_DLGTIP_PLAYERCONTROLMOUSE=Activates mouse control in addition to the selected control method.
IDS_DLGTIP_PLAYERCREW=Display the permanent crew of the selected player. IDS_DLGTIP_PLAYERCREW=Display the permanent crew of the selected player.
IDS_DLGTIP_PLAYERCREWSKIN=Selects the appearance of the player's clonks.
IDS_DLGTIP_PLAYERDELETE=Delete the selected player file. IDS_DLGTIP_PLAYERDELETE=Delete the selected player file.
IDS_DLGTIP_PLAYERFILES=List of all player files stored on this computer. IDS_DLGTIP_PLAYERFILES=List of all player files stored on this computer.
IDS_DLGTIP_PLAYERPROPERTIES=Change player color and preferred controls. IDS_DLGTIP_PLAYERPROPERTIES=Change player color and preferred controls.

View File

@ -51,6 +51,7 @@ void C4PlayerInfoCore::Default(C4RankSystem *pRanks)
SCopy("Neuling",PrefName); SCopy("Neuling",PrefName);
if (pRanks) SCopy(pRanks->GetRankName(Rank,false).getData(),RankName); if (pRanks) SCopy(pRanks->GetRankName(Rank,false).getData(),RankName);
else SCopy("Rang",RankName); else SCopy("Rang",RankName);
PrefClonkSkin=0;
PrefColor=0; PrefColor=0;
PrefColorDw=0xff; PrefColorDw=0xff;
PrefColor2Dw=0; PrefColor2Dw=0;
@ -164,6 +165,7 @@ void C4PlayerInfoCore::CompileFunc(StdCompiler *pComp)
pComp->Value(mkNamingAdapt(OldPrefControlStyle, "AutoStopControl", 0)); pComp->Value(mkNamingAdapt(OldPrefControlStyle, "AutoStopControl", 0));
pComp->Value(mkNamingAdapt(OldPrefAutoContextMenu, "AutoContextMenu", -1)); // compiling default is -1 (if this is detected, AutoContextMenus will be defaulted by control style) pComp->Value(mkNamingAdapt(OldPrefAutoContextMenu, "AutoContextMenu", -1)); // compiling default is -1 (if this is detected, AutoContextMenus will be defaulted by control style)
pComp->Value(mkNamingAdapt(PrefControl, "ControlSet", StdStrBuf())); pComp->Value(mkNamingAdapt(PrefControl, "ControlSet", StdStrBuf()));
pComp->Value(mkNamingAdapt(PrefClonkSkin, "ClonkSkin", 0));
pComp->NameEnd(); pComp->NameEnd();
pComp->Value(mkNamingAdapt(LastRound, "LastRound")); pComp->Value(mkNamingAdapt(LastRound, "LastRound"));

View File

@ -105,6 +105,7 @@ public:
int32_t PrefColor; int32_t PrefColor;
uint32_t PrefColorDw, PrefColor2Dw; uint32_t PrefColorDw, PrefColor2Dw;
int32_t PrefPosition; int32_t PrefPosition;
int32_t PrefClonkSkin;
// Old control method - loaded for backwards compatilibity if PrefControl is unassigned // Old control method - loaded for backwards compatilibity if PrefControl is unassigned
// and stored back so you can use the same player file for CR and OC // and stored back so you can use the same player file for CR and OC
int32_t OldPrefControl; int32_t OldPrefControl;

View File

@ -1346,11 +1346,20 @@ C4StartupPlrPropertiesDlg::C4StartupPlrPropertiesDlg(C4StartupPlrSelDlg::PlayerL
AddElement(pNameEdit); AddElement(pNameEdit);
SetFocus(pNameEdit, false); SetFocus(pNameEdit, false);
caMain.ExpandTop(-BetweenElementDist); caMain.ExpandTop(-BetweenElementDist);
int32_t iControlPicSize = C4GUI::ArrowButton::GetDefaultHeight(); // GetGridCell(0,3,0,1,-1,-1,false,2)
int32_t label_hgt = pSmallFont->GetLineHeight();
// place color label // place color label
AddElement(new C4GUI::Label(FormatString("%s:", LoadResStr("IDS_CTL_COLOR")).getData(), caMain.GetFromTop(pSmallFont->GetLineHeight()), ALeft, C4StartupFontClr, pSmallFont, false)); C4GUI::ComponentAligner caColorArea(caMain.GetFromTop(iControlPicSize + BetweenElementDist + label_hgt), 2, 0);
// place color controls C4GUI::ComponentAligner caPictureArea(caColorArea.GetFromRight(iControlPicSize, iControlPicSize + BetweenElementDist + label_hgt), 2,0);
C4GUI::ComponentAligner caColorArea(caMain.GetFromTop(C4GUI::ArrowButton::GetDefaultHeight()), 2, 0);
caColorArea.ExpandLeft(2); caColorArea.ExpandLeft(2);
AddElement(new C4GUI::Label(FormatString("%s:", LoadResStr("IDS_CTL_COLOR")).getData(), caColorArea.GetFromTop(label_hgt), ALeft, C4StartupFontClr, pSmallFont, false));
caColorArea.ExpandTop(-BetweenElementDist);
// place picture label
AddElement(new C4GUI::Label(LoadResStr("IDS_CTL_PICTURE"), caPictureArea.GetFromTop(label_hgt), ALeft, C4StartupFontClr, pSmallFont, false));
caPictureArea.ExpandTop(-BetweenElementDist);
// place color controls
C4GUI::Button *pBtn; const char *szTip; C4GUI::Button *pBtn; const char *szTip;
szTip = LoadResStr("IDS_DLGTIP_PLAYERCOLORS"); szTip = LoadResStr("IDS_DLGTIP_PLAYERCOLORS");
AddElement(pBtn = new C4GUI::CallbackButton<C4StartupPlrPropertiesDlg, C4GUI::ArrowButton>(C4GUI::ArrowButton::Left, caColorArea.GetFromLeft(C4GUI::ArrowButton::GetDefaultWidth()), &C4StartupPlrPropertiesDlg::OnClrChangeLeft)); AddElement(pBtn = new C4GUI::CallbackButton<C4StartupPlrPropertiesDlg, C4GUI::ArrowButton>(C4GUI::ArrowButton::Left, caColorArea.GetFromLeft(C4GUI::ArrowButton::GetDefaultWidth()), &C4StartupPlrPropertiesDlg::OnClrChangeLeft));
@ -1362,39 +1371,50 @@ C4StartupPlrPropertiesDlg::C4StartupPlrPropertiesDlg(C4StartupPlrSelDlg::PlayerL
AddElement(pBtn = new C4GUI::CallbackButton<C4StartupPlrPropertiesDlg, C4GUI::ArrowButton>(C4GUI::ArrowButton::Right, caColorArea.GetFromLeft(C4GUI::ArrowButton::GetDefaultWidth()), &C4StartupPlrPropertiesDlg::OnClrChangeRight)); AddElement(pBtn = new C4GUI::CallbackButton<C4StartupPlrPropertiesDlg, C4GUI::ArrowButton>(C4GUI::ArrowButton::Right, caColorArea.GetFromLeft(C4GUI::ArrowButton::GetDefaultWidth()), &C4StartupPlrPropertiesDlg::OnClrChangeRight));
pBtn->SetToolTip(szTip); pBtn->SetToolTip(szTip);
if (!C4P.PrefColorDw) C4P.PrefColorDw=0xff; if (!C4P.PrefColorDw) C4P.PrefColorDw=0xff;
// Place picture controls
AddElement(pPictureBtn = new C4GUI::CallbackButton<C4StartupPlrPropertiesDlg, C4GUI::IconButton>(C4GUI::Ico_Player, caPictureArea.GetAll(), 'P' /* 2do */, &C4StartupPlrPropertiesDlg::OnPictureBtn));
pPictureBtn->SetToolTip(LoadResStr("IDS_DESC_SELECTAPICTUREANDORLOBBYI"));
UpdateBigIcon();
UpdatePlayerColor(true);
caMain.ExpandTop(-BetweenElementDist); caMain.ExpandTop(-BetweenElementDist);
// place control and picture label // place control label
int32_t iControlPicSize = C4GUI::ArrowButton::GetDefaultHeight(); // GetGridCell(0,3,0,1,-1,-1,false,2) C4GUI::ComponentAligner caControlArea(caMain.GetFromTop(iControlPicSize + label_hgt + BetweenElementDist), 0,0, false);
C4GUI::ComponentAligner caControlArea(caMain.GetFromTop(iControlPicSize + pSmallFont->GetLineHeight() + BetweenElementDist), 0,0, false); C4GUI::ComponentAligner caSkinArea(caControlArea.GetFromRight(iControlPicSize + label_hgt + BetweenElementDist), 0,0, false);
C4GUI::ComponentAligner caPictureArea(caControlArea.GetFromRight(iControlPicSize), 0,0, false); AddElement(new C4GUI::Label(FormatString("%s:", LoadResStr("IDS_CTL_CONTROL")).getData(), caControlArea.GetFromTop(label_hgt), ALeft, C4StartupFontClr, pSmallFont, false));
AddElement(new C4GUI::Label(FormatString("%s:", LoadResStr("IDS_CTL_CONTROL")).getData(), caControlArea.GetFromTop(pSmallFont->GetLineHeight()), ALeft, C4StartupFontClr, pSmallFont, false)); caControlArea.ExpandTop(-BetweenElementDist);
AddElement(new C4GUI::Label(LoadResStr("IDS_CTL_PICTURE"), caPictureArea.GetFromTop(pSmallFont->GetLineHeight()), ACenter, C4StartupFontClr, pSmallFont, false)); // place clonk style label
caControlArea.ExpandTop(-BetweenElementDist); caPictureArea.ExpandTop(-BetweenElementDist); AddElement(new C4GUI::Label(LoadResStr("IDS_CTL_CLONKSKIN"), caSkinArea.GetFromTop(label_hgt), ALeft, C4StartupFontClr, pSmallFont, false));
caSkinArea.ExpandTop(-BetweenElementDist);
// place control controls // place control controls
C4GUI::ComponentAligner caControl(caControlArea.GetFromTop(iControlPicSize), 2,0); C4GUI::ComponentAligner caControl(caControlArea.GetFromTop(iControlPicSize), 2,0);
szTip = LoadResStr("IDS_DLGTIP_PLAYERCONTROL"); szTip = LoadResStr("IDS_DLGTIP_PLAYERCONTROL");
AddElement(pBtn = new C4GUI::CallbackButton<C4StartupPlrPropertiesDlg, C4GUI::ArrowButton>(C4GUI::ArrowButton::Left, caControl.GetFromLeft(C4GUI::ArrowButton::GetDefaultWidth()), &C4StartupPlrPropertiesDlg::OnCtrlChangeLeft)); AddElement(pBtn = new C4GUI::CallbackButton<C4StartupPlrPropertiesDlg, C4GUI::ArrowButton>(C4GUI::ArrowButton::Left, caControl.GetFromLeft(C4GUI::ArrowButton::GetDefaultWidth()), &C4StartupPlrPropertiesDlg::OnCtrlChangeLeft));
pBtn->SetToolTip(szTip); pBtn->SetToolTip(szTip);
int32_t ctrl_name_hgt = pSmallFont->GetLineHeight(); caControl.ExpandBottom(label_hgt); C4Rect ctrl_name_rect = caControl.GetFromBottom(label_hgt);
caControl.ExpandBottom(ctrl_name_hgt); C4Rect ctrl_name_rect = caControl.GetFromBottom(ctrl_name_hgt);
C4Facet &rfctCtrlPic = ::GraphicsResource.fctKeyboard; // UpdatePlayerControl() will alternatively set fctGamepad C4Facet &rfctCtrlPic = ::GraphicsResource.fctKeyboard; // UpdatePlayerControl() will alternatively set fctGamepad
AddElement(pCtrlImg = new C4GUI::Picture(caControl.GetFromLeft(rfctCtrlPic.GetWidthByHeight(caControl.GetHeight())), true)); AddElement(pCtrlImg = new C4GUI::Picture(caControl.GetFromLeft(rfctCtrlPic.GetWidthByHeight(caControl.GetHeight())), true));
pCtrlImg->SetToolTip(szTip); pCtrlImg->SetToolTip(szTip);
AddElement(pBtn = new C4GUI::CallbackButton<C4StartupPlrPropertiesDlg, C4GUI::ArrowButton>(C4GUI::ArrowButton::Right, caControl.GetFromLeft(C4GUI::ArrowButton::GetDefaultWidth()), &C4StartupPlrPropertiesDlg::OnCtrlChangeRight)); AddElement(pBtn = new C4GUI::CallbackButton<C4StartupPlrPropertiesDlg, C4GUI::ArrowButton>(C4GUI::ArrowButton::Right, caControl.GetFromLeft(C4GUI::ArrowButton::GetDefaultWidth()), &C4StartupPlrPropertiesDlg::OnCtrlChangeRight));
pBtn->SetToolTip(szTip); pBtn->SetToolTip(szTip);
caControl.ExpandLeft(-10); caControl.ExpandLeft(-10);
// Mouse control, currently mandatory with keyboard and this will probably never change again!
// AddElement(pMouseBtn = new C4GUI::CallbackButton<C4StartupPlrPropertiesDlg, C4GUI::IconButton>(C4GUI::Ico_MouseOff, caControl.GetFromLeft(caControl.GetHeight()), 'M' /* 2do */, &C4StartupPlrPropertiesDlg::OnCtrlChangeMouse));
// pMouseBtn->SetToolTip(LoadResStr("IDS_DLGTIP_PLAYERCONTROLMOUSE"));
C4P.OldPrefControl = BoundBy<int32_t>(C4P.OldPrefControl, 0, C4MaxControlSet-1); C4P.OldPrefControl = BoundBy<int32_t>(C4P.OldPrefControl, 0, C4MaxControlSet-1);
ctrl_name_lbl = new C4GUI::Label("CtrlName", ctrl_name_rect, ALeft, C4StartupFontClr, pSmallFont, false, false, true); ctrl_name_lbl = new C4GUI::Label("CtrlName", ctrl_name_rect, ALeft, C4StartupFontClr, pSmallFont, false, false, true);
AddElement(ctrl_name_lbl); AddElement(ctrl_name_lbl);
UpdatePlayerControl(); UpdatePlayerControl();
// place picture button
AddElement(pPictureBtn = new C4GUI::CallbackButton<C4StartupPlrPropertiesDlg, C4GUI::IconButton>(C4GUI::Ico_Player, caPictureArea.GetAll(), 'P' /* 2do */, &C4StartupPlrPropertiesDlg::OnPictureBtn)); C4GUI::ComponentAligner caSkin(caSkinArea.GetFromTop(iControlPicSize), 2,0);
pPictureBtn->SetToolTip(LoadResStr("IDS_DESC_SELECTAPICTUREANDORLOBBYI")); szTip = LoadResStr("IDS_DLGTIP_PLAYERCREWSKIN");
UpdateBigIcon(); AddElement(pBtn = new C4GUI::CallbackButton<C4StartupPlrPropertiesDlg, C4GUI::ArrowButton>(C4GUI::ArrowButton::Left, caSkin.GetFromLeft(C4GUI::ArrowButton::GetDefaultWidth()), &C4StartupPlrPropertiesDlg::OnSkinChangeLeft));
UpdatePlayerColor(true); pBtn->SetToolTip(szTip);
C4Facet &rfctSkinPic = ::GraphicsResource.fctClonkSkin.GetPhase(0);
AddElement(pSkinImg = new C4GUI::Picture(caSkin.GetFromLeft(rfctSkinPic.GetWidthByHeight(caSkin.GetHeight())), true));
pSkinImg->SetToolTip(szTip);
pSkinImg->SetFacet(::GraphicsResource.fctClonkSkin.GetPhase(0));
AddElement(pBtn = new C4GUI::CallbackButton<C4StartupPlrPropertiesDlg, C4GUI::ArrowButton>(C4GUI::ArrowButton::Right, caSkin.GetFromLeft(C4GUI::ArrowButton::GetDefaultWidth()), &C4StartupPlrPropertiesDlg::OnSkinChangeRight));
pBtn->SetToolTip(szTip);
caSkin.ExpandLeft(-10);
UpdatePlayerSkin();
caMain.ExpandTop(-BetweenElementDist); caMain.ExpandTop(-BetweenElementDist);
// AutoStopControl: currently unused // AutoStopControl: currently unused
// once we have an idea how many control schemes we have, we might revive this for selecting e.g. between "Mouse+Keyboard" and "Gamepad". // once we have an idea how many control schemes we have, we might revive this for selecting e.g. between "Mouse+Keyboard" and "Gamepad".
@ -1475,10 +1495,6 @@ void C4StartupPlrPropertiesDlg::UpdatePlayerControl()
ctrl_name_lbl->SetText(control_set->GetGUIName()); ctrl_name_lbl->SetText(control_set->GetGUIName());
else else
ctrl_name_lbl->SetText("???"); ctrl_name_lbl->SetText("???");
// update mouse image
// button only available if selected control set offers mouse control
// pMouseBtn->SetVisibility(control_set && control_set->HasMouse());
// pMouseBtn->SetIcon((C4P.PrefMouse) ? C4GUI::Ico_MouseOn : C4GUI::Ico_MouseOff);
} }
void C4StartupPlrPropertiesDlg::OnCtrlChangeLeft(C4GUI::Control *pBtn) void C4StartupPlrPropertiesDlg::OnCtrlChangeLeft(C4GUI::Control *pBtn)
@ -1505,11 +1521,22 @@ void C4StartupPlrPropertiesDlg::OnCtrlChangeRight(C4GUI::Control *pBtn)
UpdatePlayerControl(); UpdatePlayerControl();
} }
void C4StartupPlrPropertiesDlg::OnCtrlChangeMouse(C4GUI::Control *pBtn) void C4StartupPlrPropertiesDlg::UpdatePlayerSkin()
{ {
// toggle mouse usage pSkinImg->SetFacet(::GraphicsResource.fctClonkSkin.GetPhase(C4P.PrefClonkSkin));
C4P.PrefMouse = !C4P.PrefMouse; }
UpdatePlayerControl();
void C4StartupPlrPropertiesDlg::OnSkinChangeLeft(C4GUI::Control *pBtn)
{
// previous skin in list
C4P.PrefClonkSkin = C4P.PrefClonkSkin ? C4P.PrefClonkSkin - 1 : 3;
UpdatePlayerSkin();
}
void C4StartupPlrPropertiesDlg::OnSkinChangeRight(C4GUI::Control *pBtn)
{
// next skin in list
C4P.PrefClonkSkin = (C4P.PrefClonkSkin + 1) % 4;
UpdatePlayerSkin();
} }
void C4StartupPlrPropertiesDlg::UserClose(bool fOK) void C4StartupPlrPropertiesDlg::UserClose(bool fOK)

View File

@ -242,6 +242,7 @@ protected:
C4GUI::CheckBox *pAutoStopControl; // wether the player uses AutoStopControl C4GUI::CheckBox *pAutoStopControl; // wether the player uses AutoStopControl
C4GUI::IconButton *pClrPreview; C4GUI::IconButton *pClrPreview;
C4GUI::Picture *pCtrlImg; C4GUI::Picture *pCtrlImg;
C4GUI::Picture *pSkinImg;
C4GUI::IconButton *pMouseBtn, *pJumpNRunBtn, *pClassicBtn, *pPictureBtn; C4GUI::IconButton *pMouseBtn, *pJumpNRunBtn, *pClassicBtn, *pPictureBtn;
C4GUI::Label *ctrl_name_lbl; C4GUI::Label *ctrl_name_lbl;
C4PlayerInfoCore C4P; // player info core copy currently being edited C4PlayerInfoCore C4P; // player info core copy currently being edited
@ -264,12 +265,14 @@ protected:
void OnClrChangeCustom(C4GUI::Control *pBtn); void OnClrChangeCustom(C4GUI::Control *pBtn);
void OnCtrlChangeLeft(C4GUI::Control *pBtn); void OnCtrlChangeLeft(C4GUI::Control *pBtn);
void OnCtrlChangeRight(C4GUI::Control *pBtn); void OnCtrlChangeRight(C4GUI::Control *pBtn);
void OnCtrlChangeMouse(C4GUI::Control *pBtn); void OnSkinChangeLeft(C4GUI::Control *pBtn);
void OnSkinChangeRight(C4GUI::Control *pBtn);
void OnPictureBtn(C4GUI::Control *pBtn); void OnPictureBtn(C4GUI::Control *pBtn);
private: private:
void UpdatePlayerColor(bool fUpdateSliders); void UpdatePlayerColor(bool fUpdateSliders);
void UpdatePlayerControl(); void UpdatePlayerControl();
void UpdatePlayerSkin();
void UpdateBigIcon(); void UpdateBigIcon();
bool SetNewPicture(C4Surface &srcSfc, C4FacetSurface *trgFct, int32_t iMaxSize, bool fColorize); bool SetNewPicture(C4Surface &srcSfc, C4FacetSurface *trgFct, int32_t iMaxSize, bool fColorize);

View File

@ -52,9 +52,12 @@ void C4GraphicsResource::Default()
sfcControl.Default(); sfcControl.Default();
idSfcControl = 0; idSfcControl = 0;
sfcClonkSkins.Default();
idSfcClonkSkins = 0;
fctPlayer.Default(); fctPlayer.Default();
fctFlag.Default(); fctFlag.Default();
fctClonkSkin.Default();
fctCrew.Default(); fctCrew.Default();
fctWealth.Default(); fctWealth.Default();
fctRank.Default(); fctRank.Default();
@ -97,6 +100,8 @@ void C4GraphicsResource::Clear()
sfcControl.Clear(); sfcControl.Clear();
idSfcControl = 0; idSfcControl = 0;
sfcClonkSkins.Clear();
idSfcClonkSkins = 0;
fctCrewClr.Clear(); fctCrewClr.Clear();
fctFlagClr.Clear(); fctFlagClr.Clear();
@ -224,6 +229,10 @@ bool C4GraphicsResource::Init()
fctOKCancel.Set(&sfcControl,128,100,32,32); fctOKCancel.Set(&sfcControl,128,100,32,32);
fctMouse.Set(&sfcControl,198,100,32,32); fctMouse.Set(&sfcControl,198,100,32,32);
// Clonk style selection
if (!LoadFile(sfcClonkSkins, "ClonkSkins", Files, idSfcClonkSkins)) return false;
fctClonkSkin.Set(&sfcClonkSkins,0,0,64,64);
// Facet bitmap resources // Facet bitmap resources
if (!LoadFile(fctFire, "Fire", Files, C4FCT_Height)) return false; if (!LoadFile(fctFire, "Fire", Files, C4FCT_Height)) return false;
if (!LoadFile(fctBackground, "Background", Files)) return false; if (!LoadFile(fctBackground, "Background", Files)) return false;

View File

@ -37,10 +37,10 @@ public:
C4GraphicsResource(); C4GraphicsResource();
~C4GraphicsResource(); ~C4GraphicsResource();
protected: protected:
C4Surface sfcControl; C4Surface sfcControl, sfcClonkSkins;
C4Surface sfcCaption, sfcButton, sfcButtonD; C4Surface sfcCaption, sfcButton, sfcButtonD;
C4Surface sfcScroll, sfcContext; C4Surface sfcScroll, sfcContext;
int32_t idSfcCaption, idSfcButton, idSfcButtonD, idSfcScroll, idSfcContext; int32_t idSfcCaption, idSfcButton, idSfcButtonD, idSfcScroll, idSfcContext, idSfcClonkSkins;
int32_t idSfcControl; // id of source group of control surface int32_t idSfcControl; // id of source group of control surface
// ID of last group in main group set that was already registered into the Files-set // ID of last group in main group set that was already registered into the Files-set
// used to avoid doubled entries by subsequent calls to RegisterMainGroups // used to avoid doubled entries by subsequent calls to RegisterMainGroups
@ -70,6 +70,7 @@ public:
C4FacetID fctHand; C4FacetID fctHand;
C4FacetID fctGamepad; C4FacetID fctGamepad;
C4FacetID fctBuild; C4FacetID fctBuild;
C4Facet fctClonkSkin;
C4Facet fctCursor; C4Facet fctCursor;
C4Facet fctDropTarget; C4Facet fctDropTarget;
C4Facet fctKeyboard; C4Facet fctKeyboard;