Add: admin company buttons
This commit is contained in:
@@ -157,6 +157,38 @@ enum LoginWindowQueryWidgets {
|
||||
LQW_ADMIN_PW
|
||||
};
|
||||
|
||||
enum AdminCompanyButtonsWidgets {
|
||||
WID_AC_CAPTION,
|
||||
WID_C_COMPANY_EMPTY,
|
||||
WID_C_COMPANY_LOCK,
|
||||
WID_C_COMPANY_UNLOCK,
|
||||
WID_C_COMPANY_NEWSTICKET,
|
||||
WID_C_COMPANY_NEWSTICKET_COMP,
|
||||
WID_C_COMPANY_RESET,
|
||||
WID_C_COMPANY_RESET_SPEC,
|
||||
WID_C_COMPANY_RESET_KICK,
|
||||
WID_C_COMPANY_KNOWN,
|
||||
WID_C_COMPANY_RESET_KNOWN,
|
||||
WID_C_COMPANY_MOVE_PLAYER,
|
||||
WID_C_RESET_COMPANY_TIMER_120,
|
||||
WID_C_RESET_COMPANY_TIMER,
|
||||
WID_C_RESET_COMPANY_TIMER_CANCEL,
|
||||
WID_C_COMPANY_SUSPEND,
|
||||
WID_C_COMPANY_UNSUSPEND,
|
||||
WID_C_COMPANY_AWARNING,
|
||||
WID_C_COMPANY_JOIN2,
|
||||
WID_C_COMPANY_LEAVE,
|
||||
WID_C_COMPANY_CANCEL,
|
||||
WID_C_COMPANY_CAPTION,
|
||||
};
|
||||
|
||||
enum AdminCompanyButtonsQueryWidgets {
|
||||
WID_CQ_RESET_COMPANY_TIMER,
|
||||
WID_CQ_COMPANY_NEWSTICKET,
|
||||
WID_CQ_COMPANY_NEWSTICKET_COMP,
|
||||
WID_CQ_COMPANY_MOVE_PLAYER,
|
||||
};
|
||||
|
||||
enum CommunityName {
|
||||
CITYMANIA,
|
||||
NICE,
|
||||
@@ -179,11 +211,14 @@ char _inilogindata[9][MAX_COMMUNITY_STRING_LEN];
|
||||
|
||||
void AccountLogin(CommunityName community);
|
||||
void IniReloadLogin();
|
||||
void ShowAdminCompanyButtons(int companyid = INVALID_COMPANY);
|
||||
|
||||
bool novahost() {
|
||||
return _novahost;
|
||||
}
|
||||
|
||||
bool GetAdmin() { return _admin; }
|
||||
|
||||
// void strtomd5(char * buf, char * bufend, int length){
|
||||
// MD5Hash digest;
|
||||
// Md5 checksum;
|
||||
@@ -209,7 +244,7 @@ bool novahost() {
|
||||
|
||||
|
||||
//ini login hadling
|
||||
void IniLoginInitiate(){
|
||||
void IniInitiate(){
|
||||
if(_inilogin != NULL) return; //it was already set
|
||||
_inilogin = new IniFile({CFG_LOGIN_KEY});
|
||||
_inilogin->LoadFromDisk(CFG_FILE, BASE_DIR);
|
||||
@@ -256,10 +291,13 @@ void SetServerItem(const std::string &itemname, const std::string &value) {
|
||||
IniItem &item = group.GetOrCreateItem(itemname);
|
||||
item.SetValue(value);
|
||||
_inilogin->SaveToDisk(fmt::format("{}{}", _personal_dir, CFG_FILE));
|
||||
//IniReloadLogin();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/** Commands toolbar window handler. */
|
||||
/*
|
||||
struct CommandsToolbarWindow : Window {
|
||||
@@ -708,12 +746,6 @@ struct LoginWindow : Window {
|
||||
LoginWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc)
|
||||
{
|
||||
if ((_community == 1) || (_community == 2) || (_community == 3)) this->InitNested(window_number);
|
||||
//this->InitNested(window_number);
|
||||
// if(_novahost || !_networking){
|
||||
// this->DisableWidget(LWW_NICE);
|
||||
// this->DisableWidget(LWW_BTPRO);
|
||||
// }
|
||||
// if(!_novahost || !_networking) this->DisableWidget(LWW_NOVAPOLIS);
|
||||
|
||||
//no need for citymania
|
||||
if (_community == 3) {
|
||||
@@ -762,7 +794,6 @@ struct LoginWindow : Window {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -860,6 +891,168 @@ struct LoginWindow : Window {
|
||||
}
|
||||
};
|
||||
|
||||
struct AdminCompanyButtonsWindow : Window {
|
||||
AdminCompanyButtonsQueryWidgets query_widget;
|
||||
//CompanyID company;
|
||||
|
||||
AdminCompanyButtonsWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc) {
|
||||
|
||||
this->InitNested(window_number);
|
||||
|
||||
/* disable not supported buttons for n-ice */
|
||||
if (GetServerItem(COMMUNITY) == "1") {
|
||||
this->DisableWidget(WID_C_COMPANY_SUSPEND);
|
||||
this->DisableWidget(WID_C_COMPANY_UNSUSPEND);
|
||||
this->DisableWidget(WID_C_COMPANY_AWARNING);
|
||||
}
|
||||
}
|
||||
|
||||
static void CWCompanyResetCallback(Window* w, bool confirmed)
|
||||
{
|
||||
if (confirmed) NetworkClientSendChatToServer(fmt::format("!resetcompany {}",w->window_number));
|
||||
}
|
||||
|
||||
static void CWCompanyResetSpecCallback(Window* w, bool confirmed)
|
||||
{
|
||||
if (confirmed) NetworkClientSendChatToServer(fmt::format("!resetcompanyspec {}",w->window_number));
|
||||
}
|
||||
|
||||
static void CWCompanyResetKickCallback(Window* w, bool confirmed)
|
||||
{
|
||||
if (confirmed) NetworkClientSendChatToServer(fmt::format("!resetcompanykick {}",w->window_number));
|
||||
}
|
||||
|
||||
|
||||
virtual void OnClick(Point pt, int widget, int click_count)
|
||||
{
|
||||
if(!_networking) return;
|
||||
int _company = this->window_number;
|
||||
switch (widget) {
|
||||
case WID_C_COMPANY_EMPTY:
|
||||
NetworkClientSendChatToServer(fmt::format("!emptycompany {}",_company));
|
||||
MarkWholeScreenDirty();
|
||||
break;
|
||||
case WID_C_COMPANY_RESET_KICK:
|
||||
ShowQuery(STR_XI_RESET_COMP, STR_XI_RESET_KICK_SURE, this, CWCompanyResetKickCallback);
|
||||
MarkWholeScreenDirty();
|
||||
break;
|
||||
case WID_C_COMPANY_RESET_SPEC:
|
||||
ShowQuery(STR_XI_RESET_COMP, STR_XI_RESET_SPEC_SURE, this, CWCompanyResetSpecCallback);
|
||||
MarkWholeScreenDirty();
|
||||
break;
|
||||
case WID_C_COMPANY_RESET:
|
||||
ShowQuery(STR_XI_RESET_COMP, STR_XI_RESET_COMP_SURE, this, CWCompanyResetCallback);
|
||||
MarkWholeScreenDirty();
|
||||
break;
|
||||
case WID_C_RESET_COMPANY_TIMER:
|
||||
this->query_widget = WID_CQ_RESET_COMPANY_TIMER;
|
||||
SetDParam(0, _company);
|
||||
ShowQueryString(STR_EMPTY, STR_XI_RESET_TIMER_VALUE, 25, this, CS_NUMERAL, QSF_NONE);
|
||||
break;
|
||||
case WID_C_RESET_COMPANY_TIMER_120:
|
||||
NetworkClientSendChatToServer(fmt::format("!resetcompanytimer {} 120",_company));
|
||||
MarkWholeScreenDirty();
|
||||
break;
|
||||
case WID_C_RESET_COMPANY_TIMER_CANCEL:
|
||||
NetworkClientSendChatToServer(fmt::format("!cancelresetcompany {}",_company));
|
||||
break;
|
||||
case WID_C_COMPANY_LOCK:
|
||||
NetworkClientSendChatToServer(fmt::format("!lockcompany {}",_company));
|
||||
MarkWholeScreenDirty();
|
||||
break;
|
||||
case WID_C_COMPANY_UNLOCK:
|
||||
NetworkClientSendChatToServer(fmt::format("!unlockcompany {}",_company));
|
||||
MarkWholeScreenDirty();
|
||||
break;
|
||||
case WID_C_COMPANY_KNOWN:
|
||||
NetworkClientSendChatToServer(fmt::format("!known {}",_company));
|
||||
MarkWholeScreenDirty();
|
||||
break;
|
||||
case WID_C_COMPANY_RESET_KNOWN:
|
||||
NetworkClientSendChatToServer(fmt::format("!resetknown {}",_company));
|
||||
MarkWholeScreenDirty();
|
||||
break;
|
||||
case WID_C_COMPANY_MOVE_PLAYER:
|
||||
this->query_widget = WID_CQ_COMPANY_MOVE_PLAYER;
|
||||
SetDParam(0, _company);
|
||||
ShowQueryString(STR_EMPTY, STR_NETWORK_SERVER_LIST_PLAYER_NAME, 250, this, CS_ALPHANUMERAL, QSF_NONE);
|
||||
break;
|
||||
case WID_C_COMPANY_NEWSTICKET:
|
||||
this->query_widget = WID_CQ_COMPANY_NEWSTICKET;
|
||||
SetDParam(0, _company);
|
||||
ShowQueryString(STR_EMPTY, STR_XI_PLAYER_NEWSTICKET, 250, this, CS_ALPHANUMERAL, QSF_NONE);
|
||||
break;
|
||||
case WID_C_COMPANY_NEWSTICKET_COMP:
|
||||
this->query_widget = WID_CQ_COMPANY_NEWSTICKET_COMP;
|
||||
SetDParam(0, _company);
|
||||
ShowQueryString(STR_EMPTY, STR_XI_PLAYER_NEWSTICKET, 250, this, CS_ALPHANUMERAL, QSF_NONE);
|
||||
break;
|
||||
case WID_C_COMPANY_SUSPEND:
|
||||
NetworkClientSendChatToServer(fmt::format("!suspend {}",_company));
|
||||
MarkWholeScreenDirty();
|
||||
break;
|
||||
case WID_C_COMPANY_UNSUSPEND:
|
||||
NetworkClientSendChatToServer(fmt::format("!unsuspend {}",_company));
|
||||
MarkWholeScreenDirty();
|
||||
break;
|
||||
case WID_C_COMPANY_AWARNING:
|
||||
NetworkClientSendChatToServer(fmt::format("!awarning {}",_company));
|
||||
MarkWholeScreenDirty();
|
||||
break;
|
||||
case WID_C_COMPANY_JOIN2:
|
||||
NetworkClientSendChatToServer(fmt::format("!move #{} {}",_network_own_client_id ,_company));
|
||||
MarkWholeScreenDirty();
|
||||
break;
|
||||
case WID_C_COMPANY_LEAVE:
|
||||
NetworkClientRequestMove(COMPANY_SPECTATOR);
|
||||
break;
|
||||
case WID_C_COMPANY_CANCEL:
|
||||
this->Close();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void SetStringParameters(WidgetID widget) const override
|
||||
{
|
||||
switch (widget) {
|
||||
case WID_C_COMPANY_CAPTION:
|
||||
SetDParam(0, this->window_number);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void OnQueryTextFinished(char *str)
|
||||
{
|
||||
if (str == NULL) return;
|
||||
switch (this->query_widget) {
|
||||
default: NOT_REACHED();
|
||||
|
||||
case WID_CQ_RESET_COMPANY_TIMER:
|
||||
NetworkClientSendChatToServer(fmt::format("!resetcompanytimer {} {}",this->window_number,str));
|
||||
MarkWholeScreenDirty();
|
||||
break;
|
||||
case WID_CQ_COMPANY_NEWSTICKET: {
|
||||
std::string buffer = GetString(STR_COMPANY_NAME);
|
||||
NetworkClientSendChatToServer(fmt::format("!news {}: {}", buffer, str));
|
||||
MarkWholeScreenDirty();
|
||||
break;
|
||||
}
|
||||
case WID_CQ_COMPANY_NEWSTICKET_COMP: {
|
||||
std::string buffer = GetString(STR_COMPANY_NAME);
|
||||
NetworkClientSendChatToServer(fmt::format("!news {} {}", this->window_number, str));
|
||||
MarkWholeScreenDirty();
|
||||
break;
|
||||
}
|
||||
case WID_CQ_COMPANY_MOVE_PLAYER: {
|
||||
NetworkClientSendChatToServer(fmt::format("!move #{} {}",str, this->window_number));
|
||||
MarkWholeScreenDirty();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
static const NWidgetPart _nested_login_window_widgets[] = {
|
||||
NWidget(NWID_HORIZONTAL),
|
||||
NWidget(WWT_CLOSEBOX, COLOUR_GREY),
|
||||
@@ -957,11 +1150,43 @@ static const NWidgetPart _nested_admin_window_widgets[] = {
|
||||
EndContainer(),
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
static const NWidgetPart _nested_admin_company_window_widgets[] = {
|
||||
NWidget(NWID_HORIZONTAL),
|
||||
NWidget(WWT_CLOSEBOX, COLOUR_GREY),
|
||||
NWidget(WWT_CAPTION, COLOUR_RED, WID_C_COMPANY_CAPTION), SetDataTip(STR_XI_COMPANY_ADMIN_CAPTION, 0),
|
||||
NWidget(WWT_STICKYBOX, COLOUR_GREY),
|
||||
EndContainer(),
|
||||
NWidget(WWT_PANEL, COLOUR_GREY), SetFill(0, 1),
|
||||
NWidget(NWID_HORIZONTAL),
|
||||
NWidget(NWID_SPACER), SetMinimalSize(5, 0), SetFill(1, 0),
|
||||
NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(5, 3, 5),
|
||||
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_COMPANY_LOCK), SetMinimalSize(10, 13), SetFill(1, 0), SetDataTip(STR_XI_LOCK, STR_XI_LOCK_TOOLTIP),
|
||||
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_COMPANY_UNLOCK), SetMinimalSize(10, 13), SetFill(1, 0), SetDataTip(STR_XI_UNLOCK, STR_XI_UNLOCK_TOOLTIP),
|
||||
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_COMPANY_KNOWN), SetMinimalSize(10, 13), SetFill(1, 0), SetDataTip(STR_XI_KNOWN, STR_XI_KNOWN_TOOLTIP),
|
||||
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_COMPANY_RESET_KNOWN), SetMinimalSize(10, 13), SetFill(1, 0), SetDataTip(STR_XI_RESET_KNOWN, STR_XI_RESET_KNOWN_TOOLTIP),
|
||||
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_COMPANY_MOVE_PLAYER), SetMinimalSize(10, 13), SetFill(1, 0), SetDataTip(STR_XI_MOVE_PLAYER_TO, STR_XI_MOVE_PLAYER_TO_TOOLTIP),
|
||||
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_COMPANY_NEWSTICKET_COMP), SetMinimalSize(10, 13), SetFill(1, 0), SetDataTip(STR_XI_COMPANY_NEWSTICKET_BUTTON_COMP, STR_XI_COMPANY_NEWSTICKET_BUTTON_COMP_TOOLTIP),
|
||||
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_COMPANY_SUSPEND), SetMinimalSize(10, 13), SetFill(1, 0), SetDataTip(STR_XI_SUSPEND, STR_XI_SUSPEND_TOOLTIP),
|
||||
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_COMPANY_UNSUSPEND), SetMinimalSize(10, 13), SetFill(1, 0), SetDataTip(STR_XI_UNSUSPEND, STR_XI_UNSUSPEND_TOOLTIP),
|
||||
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_COMPANY_JOIN2),SetMinimalSize(10, 13), SetFill(1, 0),SetDataTip(STR_XI_COMPANY_JOIN2, STR_XI_COMPANY_JOIN2_TOOLTIP),
|
||||
EndContainer(),
|
||||
NWidget(NWID_SPACER), SetMinimalSize(5, 0), SetFill(1, 0),
|
||||
NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(5, 3, 5),
|
||||
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_COMPANY_EMPTY), SetMinimalSize(10, 13), SetFill(1, 0), SetDataTip(STR_XI_EMPTY, STR_XI_EMPTY_TOOLTIP),
|
||||
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_COMPANY_RESET), SetMinimalSize(10, 13), SetFill(1, 0), SetDataTip(STR_XI_RESET, STR_XI_RESET_TOOLTIP),
|
||||
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_COMPANY_RESET_SPEC), SetMinimalSize(10, 13), SetFill(1, 0), SetDataTip(STR_XI_RESET_SPEC, STR_XI_RESET_SPEC_TOOLTIP),
|
||||
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_COMPANY_RESET_KICK), SetMinimalSize(10, 13), SetFill(1, 0), SetDataTip(STR_XI_RESET_KICK, STR_XI_RESET_KICK_TOOLTIP),
|
||||
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_RESET_COMPANY_TIMER_120), SetMinimalSize(10, 13), SetFill(1, 0), SetDataTip(STR_XI_RESET_TIMER_120, STR_XI_RESET_TIMER_120_TOOLTIP),
|
||||
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_RESET_COMPANY_TIMER), SetMinimalSize(10, 13), SetFill(1, 0), SetDataTip(STR_XI_RESET_TIMER, STR_XI_RESET_TIMER_TOOLTIP),
|
||||
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_RESET_COMPANY_TIMER_CANCEL), SetMinimalSize(10, 13), SetFill(1, 0), SetDataTip(STR_XI_RESET_TIMER_CANCEL, STR_XI_RESET_TIMER_CANCEL_TOOLTIP),
|
||||
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_COMPANY_AWARNING), SetMinimalSize(10, 13), SetFill(1, 0), SetDataTip(STR_XI_AWARNING, STR_XI_AWARNING_TOOLTIP),
|
||||
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_COMPANY_LEAVE),SetMinimalSize(10, 13), SetFill(1, 0),SetDataTip(STR_NETWORK_COMPANY_LIST_SPECTATE, STR_NETWORK_COMPANY_LIST_SPECTATE),
|
||||
EndContainer(),
|
||||
NWidget(NWID_SPACER), SetMinimalSize(5, 0), SetFill(1, 0),
|
||||
EndContainer(),
|
||||
NWidget(NWID_SPACER), SetMinimalSize(0, 5), SetFill(0, 1),
|
||||
EndContainer(),
|
||||
};
|
||||
|
||||
/* Identify the current community */
|
||||
void CheckCommunity() {
|
||||
@@ -975,8 +1200,7 @@ void CheckCommunity() {
|
||||
SetServerItem(COMMUNITY, "2");
|
||||
// GetCommunityServerListText();
|
||||
}
|
||||
} else if (_network_server_name.find("CityMania.org") !=
|
||||
std::string::npos) {
|
||||
} else if (_network_server_name.find("CityMania.org") != std::string::npos) {
|
||||
if (GetServerItem(COMMUNITY) != "3") {
|
||||
SetServerItem(COMMUNITY, "3");
|
||||
// GetCommunityServerListText();
|
||||
@@ -992,7 +1216,7 @@ void CheckCommunity() {
|
||||
};
|
||||
|
||||
void CheckAdmin(){
|
||||
|
||||
IniInitiate();
|
||||
if (GetLoginItem(ADMIN) == "1")
|
||||
_admin = true;
|
||||
};
|
||||
@@ -1012,8 +1236,15 @@ static WindowDesc _admin_window_desc(__FILE__, __LINE__,
|
||||
std::begin(_nested_admin_window_widgets), std::end(_nested_admin_window_widgets)
|
||||
);
|
||||
|
||||
static WindowDesc _admin_company_buttons_desc(__FILE__, __LINE__,
|
||||
WDP_AUTO, NULL, 0, 0,
|
||||
CM_WC_ADMIN_COMPANY_BUTTONS, WC_NONE,
|
||||
WDF_CONSTRUCTION,
|
||||
std::begin(_nested_admin_company_window_widgets), std::end(_nested_admin_company_window_widgets)
|
||||
);
|
||||
|
||||
void ShowLoginWindow() {
|
||||
IniLoginInitiate();
|
||||
IniInitiate();
|
||||
CheckCommunity();
|
||||
CheckAdmin();
|
||||
CloseWindowByClass(CM_WC_LOGIN_WINDOW);
|
||||
@@ -1021,4 +1252,16 @@ void ShowLoginWindow() {
|
||||
else AllocateWindowDescFront<LoginWindow>(&_admin_window_desc, 0);
|
||||
};
|
||||
|
||||
void ShowAdminCompanyButtons(int left, int top, int width, int company2) {
|
||||
IniInitiate();
|
||||
CheckCommunity();
|
||||
if (!Company::IsValidID((CompanyID)(company2-1))) return;
|
||||
Window *w;
|
||||
CloseWindowById(CM_WC_ADMIN_COMPANY_BUTTONS, company2);
|
||||
w = new AdminCompanyButtonsWindow(&_admin_company_buttons_desc, company2);
|
||||
w->top = top;
|
||||
w->left = left + width;
|
||||
w->SetDirty();
|
||||
};
|
||||
|
||||
} // namespace citymania
|
||||
|
||||
@@ -5,7 +5,10 @@ namespace citymania {
|
||||
|
||||
void ShowCommandsToolbar();
|
||||
void ShowLoginWindow();
|
||||
void CheckCommunity();
|
||||
void CheckAdmin();
|
||||
void ShowAdminCompanyButtons(int left, int top, int width, int company2);
|
||||
|
||||
bool GetAdmin();
|
||||
|
||||
} // namespace citymania
|
||||
|
||||
|
||||
@@ -49,6 +49,7 @@
|
||||
|
||||
#include "citymania/cm_hotkeys.hpp"
|
||||
#include "citymania/cm_main.hpp"
|
||||
#include "citymania/cm_commands_gui.hpp"
|
||||
|
||||
#include "safeguards.h"
|
||||
|
||||
@@ -2196,6 +2197,10 @@ static constexpr NWidgetPart _nested_company_widgets[] = {
|
||||
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_C_RELOCATE_HQ), SetDataTip(STR_COMPANY_VIEW_RELOCATE_HQ, STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS),
|
||||
NWidget(NWID_SPACER),
|
||||
EndContainer(),
|
||||
/* Admin company buttons */
|
||||
NWidget(NWID_SELECTION, INVALID_COLOUR, CM_WID_C_SELECT_ADMINBUTTONS),
|
||||
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, CM_WID_C_ADMINBUTTONS), SetDataTip(STR_XI_COMPANY_ADMIN_BUTTON, STR_XI_COMPANY_ADMIN_BUTTON),
|
||||
EndContainer(),
|
||||
EndContainer(),
|
||||
EndContainer(),
|
||||
|
||||
@@ -2225,15 +2230,7 @@ static constexpr NWidgetPart _nested_company_widgets[] = {
|
||||
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_COMPANY_PASSWORD), SetDataTip(STR_COMPANY_VIEW_PASSWORD, STR_COMPANY_VIEW_PASSWORD_TOOLTIP),
|
||||
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_COMPANY_JOIN), SetDataTip(STR_COMPANY_VIEW_JOIN, STR_COMPANY_VIEW_JOIN_TOOLTIP),
|
||||
EndContainer(),
|
||||
// NWidget(NWID_SELECTION, INVALID_COLOUR, WID_C_SELECT_MOD),
|
||||
// NWidget(NWID_SPACER), SetMinimalSize(0, 0), SetFill(0, 1),
|
||||
// NWidget(NWID_VERTICAL), SetPIP(4, 2, 4),
|
||||
// NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_MOD_COMPANY_JOIN), SetFill(1, 0), SetDataTip(STR_MOD_COMPANY_JOIN_BUTTON, STR_NULL),
|
||||
// NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_C_MOD_COMPANY_TOGGLE_LOCK), SetFill(1, 0), SetDataTip(STR_MOD_TOGGLE_LOCK_BUTTON, STR_NULL),
|
||||
// NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_C_MOD_COMPANY_RESET), SetFill(1, 0), SetDataTip(STR_MOD_COMPANY_RESET_BUTTON, STR_NULL),
|
||||
// EndContainer(),
|
||||
// EndContainer(),
|
||||
EndContainer(),
|
||||
EndContainer(),
|
||||
EndContainer(),
|
||||
EndContainer(),
|
||||
EndContainer(),
|
||||
@@ -2257,14 +2254,6 @@ static const StringID _company_view_vehicle_count_strings[] = {
|
||||
/**
|
||||
* Window with general information about a company
|
||||
*/
|
||||
static void ResetCallback(Window *w, bool confirmed)
|
||||
{
|
||||
if (confirmed) {
|
||||
CompanyID company2 = (CompanyID)w->window_number;
|
||||
citymania::NetworkClientSendChatToServer(fmt::format("!reset {}", company2 + 1));
|
||||
}
|
||||
}
|
||||
|
||||
struct CompanyWindow : Window
|
||||
{
|
||||
CompanyWidgets query_widget;
|
||||
@@ -2302,6 +2291,10 @@ struct CompanyWindow : Window
|
||||
/* Button bar selection. */
|
||||
reinit |= this->GetWidget<NWidgetStacked>(WID_C_SELECT_BUTTONS)->SetDisplayedPlane(local ? 0 : SZSP_NONE);
|
||||
|
||||
/* Admin company buttons */
|
||||
citymania::CheckAdmin();
|
||||
reinit |= this->GetWidget<NWidgetStacked>(CM_WID_C_SELECT_ADMINBUTTONS)->SetDisplayedPlane(citymania::GetAdmin() ? 0 : SZSP_NONE);
|
||||
|
||||
/* Build HQ button handling. */
|
||||
reinit |= this->GetWidget<NWidgetStacked>(WID_C_SELECT_VIEW_BUILD_HQ)->SetDisplayedPlane((local && c->location_of_HQ == INVALID_TILE) ? CWP_VB_BUILD : CWP_VB_VIEW);
|
||||
|
||||
@@ -2325,13 +2318,6 @@ struct CompanyWindow : Window
|
||||
}
|
||||
}
|
||||
|
||||
// if(!_networking) {
|
||||
// this->SetWidgetDisabledState(CW_WIDGET_COMPANY_RESUME, true);
|
||||
// this->SetWidgetDisabledState(CW_WIDGET_COMPANY_SUSPEND, true);
|
||||
// this->SetWidgetDisabledState(CW_WIDGET_COMPANY_RESET, true);
|
||||
// this->SetWidgetDisabledState(CW_WIDGET_COMPANY_JOIN2, true);
|
||||
// }
|
||||
|
||||
this->DrawWidgets();
|
||||
}
|
||||
|
||||
@@ -2389,19 +2375,13 @@ struct CompanyWindow : Window
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_GIVE_MONEY_BUTTON).width);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_HOSTILE_TAKEOVER_BUTTON).width);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_PASSWORD).width);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_JOIN).width);
|
||||
|
||||
size->width += padding.width;
|
||||
break;
|
||||
|
||||
// case CW_WIDGET_COMPANY_RESUME:
|
||||
// case CW_WIDGET_COMPANY_SUSPEND:
|
||||
// case CW_WIDGET_COMPANY_RESET:
|
||||
// case CW_WIDGET_COMPANY_JOIN2:
|
||||
// if(!_novarole){
|
||||
// size->width = 0;
|
||||
// size->height = 0;
|
||||
// }
|
||||
// break;
|
||||
case CM_WID_C_ADMINBUTTONS:
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_XI_COMPANY_ADMIN_BUTTON).width);
|
||||
|
||||
case WID_C_HAS_PASSWORD:
|
||||
if (_networking) *size = maxdim(*size, GetSpriteSize(SPR_LOCK));
|
||||
break;
|
||||
@@ -2624,28 +2604,12 @@ struct CompanyWindow : Window
|
||||
MarkWholeScreenDirty();
|
||||
break;
|
||||
}
|
||||
|
||||
case WID_C_MOD_COMPANY_JOIN: {
|
||||
if (!_novarole) return;
|
||||
CompanyID company2 = (CompanyID)this->window_number;
|
||||
// this->query_widget = WID_C_MOD_COMPANY_JOIN;
|
||||
citymania::NetworkClientSendChatToServer(fmt::format("!move {}", company2 + 1));
|
||||
MarkWholeScreenDirty();
|
||||
break;
|
||||
}
|
||||
case WID_C_MOD_COMPANY_RESET: {
|
||||
if (!_networking) return;
|
||||
this->query_widget = WID_C_MOD_COMPANY_RESET;
|
||||
ShowQuery(CM_STR_XI_RESET_CAPTION, CM_STR_XI_REALY_RESET, this, ResetCallback);
|
||||
MarkWholeScreenDirty();
|
||||
break;
|
||||
}
|
||||
case WID_C_MOD_COMPANY_TOGGLE_LOCK: {
|
||||
if (!_novarole) return;
|
||||
CompanyID company2 = (CompanyID)this->window_number;
|
||||
citymania::NetworkClientSendChatToServer(fmt::format("!lockp {}", company2 + 1));
|
||||
MarkWholeScreenDirty();
|
||||
break;
|
||||
/* Admin company buttons */
|
||||
case CM_WID_C_ADMINBUTTONS:
|
||||
{
|
||||
CompanyID company2 = (CompanyID)this->window_number;
|
||||
citymania::ShowAdminCompanyButtons(this->left, this->top, this->width, company2+1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6322,3 +6322,50 @@ CM_STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Show
|
||||
CM_STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Show hidden ({NUM})
|
||||
CM_STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Show hidden ({NUM})
|
||||
CM_STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Show hidden ({NUM})
|
||||
|
||||
### Admin Buttons ###
|
||||
STR_XI_COMPANY_ADMIN_CAPTION :{WHITE}Admin buttons #{NUM}
|
||||
STR_XI_COMPANY_ADMIN_BUTTON :{WHITE}Admin buttons
|
||||
STR_XI_LOCK :{BLACK}Lock
|
||||
STR_XI_LOCK_TOOLTIP :{BLACK}Lock Company. All players on it will be sent to spectators.
|
||||
STR_XI_UNLOCK :{BLACK}Unlock
|
||||
STR_XI_UNLOCK_TOOLTIP :{BLACK}Unlock Company making possible player(s) joining it again.
|
||||
STR_XI_KNOWN :{BLACK}Known
|
||||
STR_XI_KNOWN_TOOLTIP :{BLACK}Show the known player(s) of company.
|
||||
STR_XI_RESET_KNOWN :{BLACK}Reset Known
|
||||
STR_XI_RESET_KNOWN_TOOLTIP :{BLACK}Reset list of known players of company.
|
||||
STR_XI_MOVE_PLAYER_TO :{BLACK}Move to ...
|
||||
STR_XI_MOVE_PLAYER_TO_TOOLTIP :{BLACK}Move a player (number #.. or name) to company
|
||||
STR_XI_COMPANY_NEWSTICKET_BUTTON :{BLACK}News
|
||||
STR_XI_COMPANY_NEWSTICKET_BUTTON_TOOLTIP :{BLACK}Open a Newspapper message directed to Company
|
||||
STR_XI_COMPANY_NEWSTICKET_BUTTON_COMP :{BLACK}News (P. C.)
|
||||
STR_XI_COMPANY_NEWSTICKET_BUTTON_COMP_TOOLTIP :{BLACK}Open a Newspapper message only showed to Company
|
||||
STR_XI_SUSPEND :{BLACK}Suspend
|
||||
STR_XI_SUSPEND_TOOLTIP :{BLACK}Suspend Company actions keeping player in the company.
|
||||
STR_XI_UNSUSPEND :{BLACK}Unsuspend
|
||||
STR_XI_UNSUSPEND_TOOLTIP :{BLACK}Unsuspend Company actions.
|
||||
STR_XI_EMPTY :{BLACK}Empty
|
||||
STR_XI_EMPTY_TOOLTIP :{BLACK}Send players in company to Spectators.
|
||||
STR_XI_RESET :{BLACK}Reset
|
||||
STR_XI_RESET_TOOLTIP :{BLACK}Reset the company. The company must be empty.
|
||||
STR_XI_RESET_SPEC :{BLACK}Reset Spec
|
||||
STR_XI_RESET_SPEC_TOOLTIP :{BLACK}Reset company and send player(s) to spectators.
|
||||
STR_XI_RESET_KICK :{BLACK}Reset Kick
|
||||
STR_XI_RESET_KICK_TOOLTIP :{BLACK}Reset company and Kick out of the game player(s) on it.
|
||||
STR_XI_RESET_TIMER_120 :{BLACK}Reset T. 2m
|
||||
STR_XI_RESET_TIMER_120_TOOLTIP :{BLACK}Starts a timer to reset company when after 2 minutes countdown.
|
||||
STR_XI_RESET_TIMER :{BLACK}Reset T....
|
||||
STR_XI_RESET_TIMER_TOOLTIP :{BLACK}Starts a timer to reset company when time expire (time is Admin input).
|
||||
STR_XI_RESET_TIMER_VALUE :{BLACK}Time to Reset (seconds):
|
||||
STR_XI_RESET_TIMER_CANCEL :{BLACK}Cancel Reset
|
||||
STR_XI_RESET_TIMER_CANCEL_TOOLTIP :{BLACK}Cancel the Reset timer.
|
||||
STR_XI_AWARNING :{BLACK}Warning
|
||||
STR_XI_AWARNING_TOOLTIP :{BLACK}Sends a Warning to company that an admin is trying to contact.
|
||||
STR_XI_RESET_COMP :{BLACK}RESET Company
|
||||
STR_XI_RESET_COMP_SURE :{WHITE}Sure to RESET this company?
|
||||
STR_XI_RESET_SPEC_SURE :{WHITE}Sure to RESET this company, send players to SPECTATORS?
|
||||
STR_XI_RESET_KICK_SURE :{WHITE}Sure to RESET this company, and KICK players on it?
|
||||
STR_XI_PLAYER_NEWSTICKET :{BLACK}Type message as newspapper ticket to this Player
|
||||
STR_XI_COMPANY_NEWSTICKET :{BLACK}Type message as newspapper ticket to this Company
|
||||
STR_XI_COMPANY_JOIN2 :{BLACK}A. Join
|
||||
STR_XI_COMPANY_JOIN2_TOOLTIP :{BLACK}Join as an admin
|
||||
|
||||
@@ -52,11 +52,8 @@ enum CompanyWidgets : WidgetID {
|
||||
WID_C_COMPANY_PASSWORD, ///< Button to set company password.
|
||||
WID_C_COMPANY_JOIN, ///< Button to join company.
|
||||
|
||||
WID_C_SELECT_MOD,
|
||||
WID_C_SELECT_MOD_JOIN,
|
||||
WID_C_MOD_COMPANY_JOIN,
|
||||
WID_C_MOD_COMPANY_RESET,
|
||||
WID_C_MOD_COMPANY_TOGGLE_LOCK,
|
||||
CM_WID_C_SELECT_ADMINBUTTONS,
|
||||
CM_WID_C_ADMINBUTTONS,
|
||||
};
|
||||
|
||||
/** Widgets of the #CompanyFinancesWindow class. */
|
||||
|
||||
@@ -732,6 +732,7 @@ enum WindowClass {
|
||||
CM_WC_COMMAND_TOOLBAR,
|
||||
CM_WC_LOGIN_WINDOW,
|
||||
CM_WC_CB_TOWN,
|
||||
CM_WC_ADMIN_COMPANY_BUTTONS,
|
||||
|
||||
WC_INVALID = 0xFFFF, ///< Invalid window.
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user