30 BaseClass(
C4Rect(0, 0, 0, 0)), pForDlg(pForDlg), pPrimarySubcomponent(nullptr)
46 C4GameOptionsList::OptionDropdown::OptionDropdown(
class C4GameOptionsList *pForDlg,
const char *szCaption,
bool fReadOnly)
47 : Option(pForDlg), fReadOnly(fReadOnly)
54 int32_t iCaptWidth, iCaptHeight;
65 iCaptWidth = iCaptWidth * 5 / 4;
70 rUseFont.
GetTextExtent(szCaption, iCaptWidth, iCaptHeight,
true);
73 int iHorizontalMargin = 1;
74 int iVerticalMargin = 1;
77 SetBounds(
C4Rect(0, 0, pForDlg->
GetItemWidth(), (!fTabular) * (iCaptHeight + iVerticalMargin*2) + iVerticalMargin*2 + iSelComboHgt));
80 AddElement(pCaption =
new C4GUI::Label(
FormatString(
"%s:", szCaption).getData(), fTabular ? ca.GetFromLeft(iCaptWidth, iCaptHeight) : ca.GetFromTop(iCaptHeight),
ALeft, dwFontClr, &rUseFont,
false,
false));
81 ca.ExpandLeft(-iComboMargin);
82 AddElement(pPrimarySubcomponent = pDropdownList =
new C4GUI::ComboBox(ca.GetAll()));
83 pDropdownList->SetReadOnly(fReadOnly);
88 pDropdownList->SetFont(&rUseFont);
89 pDropdownList->SetDecoration(&(
C4Startup::Get()->Graphics.fctContext));
100 :
C4GameOptionsList::OptionDropdown(pForDlg, parameter_def->GetName(), !pForDlg->IsPreGame() && (!::
Control.isCtrlHost() || ::
Game.C4S.Head.SaveGame)), ParameterDef(parameter_def), LastValue(0), LastValueValid(false)
109 while ((option = ParameterDef->GetOptionByIndex(idx++)))
115 void C4GameOptionsList::OptionScenarioParameter::DoDropdownSelChange(int32_t idNewSelection)
131 void C4GameOptionsList::OptionScenarioParameter::Update()
135 bool fLeagueReadOnly =
false;
138 fLeagueReadOnly =
true;
141 if (!fReadOnly) pDropdownList->SetReadOnly(fLeagueReadOnly);
143 if (LastValueValid && val == LastValue)
return;
148 pDropdownList->SetText(
FormatString(
"%d", (
int)val).getData());
149 LastValueValid =
true;
158 C4GameOptionsList::OptionControlMode::OptionControlMode(
class C4GameOptionsList *pForDlg)
161 SetToolTip(
LoadResStr(
"IDS_DESC_CHANGESTHEWAYCONTROLDATAI"));
173 void C4GameOptionsList::OptionControlMode::DoDropdownSelChange(int32_t idNewSelection)
183 void C4GameOptionsList::OptionControlMode::Update()
185 const char *szControlMode;
194 default: szControlMode =
LoadResStr(
"IDS_NET_CTRLMODE_NONE");
break;
197 pDropdownList->SetText(szControlMode);
203 C4GameOptionsList::OptionControlRate::OptionControlRate(
class C4GameOptionsList *pForDlg)
206 SetToolTip(
LoadResStr(
"IDS_CTL_CONTROLRATE_DESC"));
215 void C4GameOptionsList::OptionControlRate::DoDropdownSelChange(int32_t idNewSelection)
218 int32_t iNewRate = idNewSelection;
223 void C4GameOptionsList::OptionControlRate::Update()
232 C4GameOptionsList::OptionRuntimeJoin::OptionRuntimeJoin(
class C4GameOptionsList *pForDlg)
235 SetToolTip(
LoadResStr(
"IDS_NET_RUNTIMEJOIN_DESC"));
244 void C4GameOptionsList::OptionRuntimeJoin::DoDropdownSelChange(int32_t idNewSelection)
247 bool fAllowed = !!idNewSelection;
252 void C4GameOptionsList::OptionRuntimeJoin::Update()
256 szText =
LoadResStr(
"IDS_NET_RUNTIMEJOINBARRED");
258 szText =
LoadResStr(
"IDS_NET_RUNTIMEJOINFREE");
259 pDropdownList->SetText(szText);
265 C4GameOptionsList::OptionTeamDist::OptionTeamDist(
class C4GameOptionsList *pForDlg)
268 SetToolTip(
LoadResStr(
"IDS_MSG_TEAMDIST_DESC"));
276 void C4GameOptionsList::OptionTeamDist::DoDropdownSelChange(int32_t idNewSelection)
282 void C4GameOptionsList::OptionTeamDist::Update()
285 pDropdownList->SetText(sOption.
getData());
291 C4GameOptionsList::OptionTeamColors::OptionTeamColors(
class C4GameOptionsList *pForDlg)
294 SetToolTip(
LoadResStr(
"IDS_MSG_TEAMCOLORS_DESC"));
303 void C4GameOptionsList::OptionTeamColors::DoDropdownSelChange(int32_t idNewSelection)
305 bool fEnabled = !!idNewSelection;
309 void C4GameOptionsList::OptionTeamColors::Update()
317 :
C4GUI::ListBox(rcBounds), source(source), param_defs(param_defs), params(params)
330 void C4GameOptionsList::InitOptions()
338 new OptionScenarioParameter(
this, def);
343 new OptionControlMode(
this);
344 new OptionControlRate(
this);
354 void C4GameOptionsList::ClearOptions()
363 for (Option *pItem =
static_cast<Option *
>(
pClientWindow->
GetFirst()); pItem; pItem = pItem->GetNext())
385 this->param_defs = param_defs;
386 this->params = params;
const int C4MaxControlRate
C4Application Application
C4GraphicsResource GraphicsResource
const char * LoadResStr(const char *id)
C4NetIOPacket MkC4NetIOPacket(char cStatus, const class C4PacketBase &Pkt, const C4NetIO::addr_t &addr=C4NetIO::addr_t())
@ PID_SetScenarioParameter
const int32_t C4StartupEditBorderColor
const int32_t C4StartupEditBGColor
const int32_t C4StartupFontClr
StdStrBuf FormatString(const char *szFmt,...)
int32_t LeagueServerSignUp
void AddEntry(const char *szText, int32_t id)
static int32_t GetDefaultHeight()
bool AddElement(Element *pChild, int32_t iIndent=0)
ScrollWindow * pClientWindow
C4GameControlNetwork Network
void AdjustControlRate(int32_t iBy)
class C4ScenarioParameterDefs & ScenarioParameterDefs
C4GameParameters & Parameters
bool IsPreGameSingle() const
C4ScenarioParameters * GetParameters()
void SetParameters(C4ScenarioParameterDefs *param_defs, C4ScenarioParameters *params)
C4GameOptionsList(const C4Rect &rcBounds, bool fActive, C4GameOptionsListSource source, class C4ScenarioParameterDefs *param_defs=nullptr, class C4ScenarioParameters *params=nullptr)
C4ScenarioParameters ScenarioParameters
bool BroadcastMsgToClients(const C4NetIOPacket &rPkt)
void AllowJoin(bool fAllow)
void SetCtrlMode(int32_t iCtrlMode)
C4Network2ClientList Clients
int32_t getCtrlMode() const
bool IsAchievement() const
const char * GetDescription() const
const C4ScenarioParameterDef * GetParameterDefByIndex(size_t idx) const
int32_t GetValueByID(const char *id, int32_t default_value) const
void SetValue(const char *id, int32_t value, bool only_if_larger)
C4StartupGraphics Graphics
bool IsMultiTeams() const
bool IsTeamColors() const
void FillTeamDistOptions(C4GUI::ComboBox_FillCB *pFiller) const
StdStrBuf GetTeamDistString() const
void SendSetTeamDist(TeamDist eNewDist)
void SendSetTeamColors(bool fEnabled)
bool HasTeamDistOptions() const
bool GetTextExtent(const char *szText, int32_t &rsx, int32_t &rsy, bool fCheckMarkup=true)
void Remove(StdSchedulerProc *pProc)
void Add(StdSchedulerProc *pProc)
const char * getData() const