Add: admin company buttons

This commit is contained in:
chucky-n-ice
2024-05-15 19:48:17 +02:00
parent ab587a163a
commit a4c524dd06
6 changed files with 335 additions and 80 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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;
}
}
}

View File

@@ -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

View File

@@ -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. */

View File

@@ -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.
};