1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2025-12-24 00:03:11 +01:00

consolidate actions list

This commit is contained in:
zsilencer
2016-01-23 11:34:05 -07:00
parent 6d81369e1a
commit ef4fc84634
4 changed files with 87 additions and 209 deletions

View File

@@ -3984,66 +3984,23 @@ STR_5642 :Group:
STR_5643 :Add Group
STR_5644 :Remove Group
STR_5645 :Chat
STR_5646 :Set Ride Appearance
STR_5647 :Pause/Unpause
STR_5648 :Place Track
STR_5649 :Remove Track
STR_5650 :Create Ride
STR_5651 :Remove Ride
STR_5652 :Set Ride Status
STR_5653 :Set Ride Vehicles
STR_5654 :Set Ride Name
STR_5655 :Set Ride Setting
STR_5656 :Place Ride Entrance/Exit
STR_5657 :Remove Ride Entrance/Exit
STR_5658 :Remove Scenery
STR_5659 :Place Scenery
STR_5660 :Place Path
STR_5661 :Place Path From Track
STR_5662 :Remove Path
STR_5663 :Change Surface Style
STR_5664 :Set Ride Price
STR_5665 :Set Peep Name
STR_5666 :Raise Land
STR_5667 :Lower Land
STR_5668 :Smooth Land
STR_5669 :Raise Water
STR_5670 :Lower Water
STR_5671 :Set Brakes Speed
STR_5672 :Hire New Staff
STR_5673 :Set Staff Patrol
STR_5674 :Fire Staff
STR_5675 :Set Staff Order
STR_5676 :Set Park Name
STR_5677 :Open/Close Park
STR_5678 :Buy Land Rights
STR_5679 :Place Park Entrance
STR_5680 :Remove Park Entrance
STR_5681 :Set Maze Track
STR_5682 :Set Park Entrance Fee
STR_5683 :Set Staff Colour
STR_5684 :Place Fence
STR_5685 :Remove Fence
STR_5686 :Place Large Scenery
STR_5687 :Set Current Loan
STR_5688 :Set Research Funding
STR_5689 :Place Track Design
STR_5690 :Start Marketing Campaign
STR_5691 :Place Maze Design
STR_5692 :Place Banner
STR_5693 :Remove Banner
STR_5694 :Set Scenery Colour
STR_5695 :Set Fence Colour
STR_5696 :Set Large Scenery Colour
STR_5697 :Set Banner Colour
STR_5698 :Set Land Ownership
STR_5699 :Clear Scenery
STR_5700 :Set Banner Name
STR_5701 :Set Sign Name
STR_5702 :Set Banner Style
STR_5703 :Set Sign Style
STR_5704 :Set Player Group
STR_5705 :Modify Groups
STR_5646 :Terraform
STR_5647 :Toggle Pause
STR_5648 :Set Water Level
STR_5649 :Create Ride
STR_5650 :Remove Ride
STR_5651 :Build Ride
STR_5652 :Ride Properties
STR_5653 :Scenery
STR_5654 :Path
STR_5655 :Guest
STR_5656 :Staff
STR_5657 :Park Properties
STR_5658 :Park Funding
STR_5659 :Kick Player
STR_5660 :Modify Groups
STR_5661 :Set Player Group
STR_5705 :Can't set to this group
STR_5706 :Can't remove group that players belong to
STR_5707 :This group cannot be modified
STR_5708 :Can't change the group that the host belongs to

View File

@@ -2272,67 +2272,24 @@ enum {
STR_REMOVE_GROUP = 5644,
STR_ACTION_CHAT = 5645,
STR_ACTION_SET_RIDE_APPEARANCE = 5646,
STR_ACTION_TERRAFORM = 5646,
STR_ACTION_TOGGLE_PAUSE = 5647,
STR_ACTION_PLACE_TRACK = 5648,
STR_ACTION_REMOVE_TRACK = 5649,
STR_ACTION_CREATE_RIDE = 5650,
STR_ACTION_REMOVE_RIDE = 5651,
STR_ACTION_SET_RIDE_STATUS = 5652,
STR_ACTION_SET_RIDE_VEHICLES = 5653,
STR_ACTION_SET_RIDE_NAME = 5654,
STR_ACTION_SET_RIDE_SETTING = 5655,
STR_ACTION_PLACE_RIDE_ENTRANCE_EXIT = 5656,
STR_ACTION_REMOVE_RIDE_ENTRANCE_EXIT = 5657,
STR_ACTION_REMOVE_SCENERY = 5658,
STR_ACTION_PLACE_SCENERY = 5659,
STR_ACTION_PLACE_PATH = 5660,
STR_ACTION_PLACE_PATH_FROM_TRACK = 5661,
STR_ACTION_REMOVE_PATH = 5662,
STR_ACTION_CHANGE_SURFACE_STYLE = 5663,
STR_ACTION_SET_RIDE_PRICE = 5664,
STR_ACTION_SET_PEEP_NAME = 5665,
STR_ACTION_RAISE_LAND = 5666,
STR_ACTION_LOWER_LAND = 5667,
STR_ACTION_SMOOTH_LAND = 5668,
STR_ACTION_RAISE_WATER = 5669,
STR_ACTION_LOWER_WATER = 5670,
STR_ACTION_SET_BRAKES_SPEED = 5671,
STR_ACTION_HIRE_NEW_STAFF = 5672,
STR_ACTION_SET_STAFF_PATROL = 5673,
STR_ACTION_FIRE_STAFF = 5674,
STR_ACTION_SET_STAFF_ORDER = 5675,
STR_ACTION_SET_PARK_NAME = 5676,
STR_ACTION_OPEN_CLOSE_PARK = 5677,
STR_ACTION_BUY_LAND_RIGHTS = 5678,
STR_ACTION_PLACE_PARK_ENTRANCE = 5679,
STR_ACTION_REMOVE_PARK_ENTRANCE = 5680,
STR_ACTION_SET_MAZE_TRACK = 5681,
STR_ACTION_SET_PARK_ENTRANCE_FEE = 5682,
STR_ACTION_SET_STAFF_COLOUR = 5683,
STR_ACTION_PLACE_FENCE = 5684,
STR_ACTION_REMOVE_FENCE = 5685,
STR_ACTION_PLACE_LARGE_SCENERY = 5686,
STR_ACTION_SET_CURRENT_LOAN = 5687,
STR_ACTION_SET_RESEARCH_FUNDING = 5688,
STR_ACTION_PLACE_TRACK_DESIGN = 5689,
STR_ACTION_START_MARKETING_CAMPAIGN = 5690,
STR_ACTION_PLACE_MAZE_DESIGN = 5691,
STR_ACTION_PLACE_BANNER = 5692,
STR_ACTION_REMOVE_BANNER = 5693,
STR_ACTION_SET_SCENERY_COLOUR = 5694,
STR_ACTION_SET_FENCE_COLOUR = 5695,
STR_ACTION_SET_LARGE_SCENERY_COLOUR = 5696,
STR_ACTION_SET_BANNER_COLOUR = 5697,
STR_ACTION_SET_LAND_OWNERSHIP = 5698,
STR_ACTION_CLEAR_SCENERY = 5699,
STR_ACTION_SET_BANNER_NAME = 5700,
STR_ACTION_SET_SIGN_NAME = 5701,
STR_ACTION_SET_BANNER_STYLE = 5702,
STR_ACTION_SET_SIGN_STYLE = 5703,
STR_ACTION_SET_PLAYER_GROUP = 5704,
STR_ACTION_MODIFY_GROUPS = 5705,
STR_ACTION_SET_WATER_LEVEL = 5648,
STR_ACTION_CREATE_RIDE = 5649,
STR_ACTION_REMOVE_RIDE = 5650,
STR_ACTION_BUILD_RIDE = 5651,
STR_ACTION_RIDE_PROPERTIES = 5652,
STR_ACTION_SCENERY = 5653,
STR_ACTION_PATH = 5654,
STR_ACTION_GUEST = 5655,
STR_ACTION_STAFF = 5656,
STR_ACTION_PARK_PROPERTIES = 5657,
STR_ACTION_PARK_FUNDING = 5658,
STR_ACTION_KICK_PLAYER = 5659,
STR_ACTION_MODIFY_GROUPS = 5660,
STR_ACTION_SET_PLAYER_GROUP = 5661,
STR_CANT_SET_TO_THIS_GROUP = 5705,
STR_CANT_REMOVE_GROUP_THAT_PLAYERS_BELONG_TO = 5706,
STR_THIS_GROUP_CANNOT_BE_MODIFIED = 5707,
STR_CANT_CHANGE_GROUP_THAT_THE_HOST_BELONGS_TO = 5708,
@@ -2341,8 +2298,6 @@ enum {
STR_ENTER_NEW_NAME_FOR_THIS_GROUP = 5711,
STR_CANT_MODIFY_PERMISSION_THAT_YOU_DO_NOT_HAVE_YOURSELF = 5712,
STR_ACTION_KICK_PLAYER = 5713,
// Have to include resource strings (from scenarios and objects) for the time being now that language is partially working
STR_COUNT = 32768
};

View File

@@ -219,9 +219,16 @@ void NetworkPlayer::AddMoneySpent(money32 cost)
window_invalidate_by_number(WC_PLAYER, id);
}
int NetworkActions::FindGameCommand(int command)
int NetworkActions::FindCommand(int command)
{
auto it = std::find_if(actions.begin(), actions.end(), [&command](NetworkAction const& action) { return action.game_command == command; });
auto it = std::find_if(actions.begin(), actions.end(), [&command](NetworkAction const& action) {
for (auto it = action.commands.begin(); it != action.commands.end(); it++) {
if ((*it) == command) {
return true;
}
}
return false;
});
if (it != actions.end()) {
return it - actions.begin();
}
@@ -285,9 +292,9 @@ bool NetworkGroup::CanPerformAction(size_t index)
return (actions_allowed[byte] & (1 << bit)) ? true : false;
}
bool NetworkGroup::CanPerformGameCommand(int command)
bool NetworkGroup::CanPerformCommand(int command)
{
int action = gNetworkActions.FindGameCommand(command);
int action = gNetworkActions.FindCommand(command);
if (action != -1) {
return CanPerformAction(action);
}
@@ -566,15 +573,15 @@ bool Network::Init()
group_list.push_back(std::move(admin));
std::unique_ptr<NetworkGroup> spectator(new NetworkGroup()); // change to make_unique in c++14
spectator->SetName("Spectator");
spectator->ToggleActionPermission(0);
spectator->ToggleActionPermission(0); // Chat
spectator->id = 1;
group_list.push_back(std::move(spectator));
std::unique_ptr<NetworkGroup> user(new NetworkGroup()); // change to make_unique in c++14
user->SetName("User");
user->actions_allowed.fill(0xFF);
user->ToggleActionPermission(59);
user->ToggleActionPermission(60);
user->ToggleActionPermission(61);
user->ToggleActionPermission(14); // Kick Player
user->ToggleActionPermission(15); // Modify Groups
user->ToggleActionPermission(16); // Set Player Group
user->id = 2;
group_list.push_back(std::move(user));
SetDefaultGroup(1);
@@ -1643,10 +1650,8 @@ void Network::Server_Handle_CHAT(NetworkConnection& connection, NetworkPacket& p
{
if (connection.player) {
NetworkGroup* group = GetGroupByID(connection.player->group);
if (group) {
if (!group->CanPerformGameCommand(-1)) {
return;
}
if (!group || (group && !group->CanPerformCommand(-1))) {
return;
}
}
const char* text = packet.ReadString();
@@ -1688,7 +1693,7 @@ void Network::Server_Handle_GAMECMD(NetworkConnection& connection, NetworkPacket
// Check if player's group permission allows command to run
NetworkGroup* group = GetGroupByID(connection.player->group);
if (group && !group->CanPerformGameCommand(commandCommand)) {
if (!group || (group && !group->CanPerformCommand(commandCommand))) {
Server_Send_SHOWERROR(connection, STR_CANT_DO_THIS, STR_PERMISSION_DENIED);
return;
}
@@ -1967,6 +1972,7 @@ void game_command_set_player_group(int* eax, int* ebx, int* ecx, int* edx, int*
uint8 playerid = (uint8)*ecx;
uint8 groupid = (uint8)*edx;
NetworkPlayer* player = gNetwork.GetPlayerByID(playerid);
NetworkGroup* fromgroup = gNetwork.GetGroupByID(game_command_playerid);
if (!player) {
*ebx = MONEY32_UNDEFINED;
return;
@@ -1980,6 +1986,11 @@ void game_command_set_player_group(int* eax, int* ebx, int* ecx, int* edx, int*
*ebx = MONEY32_UNDEFINED;
return;
}
if (groupid == 0 && fromgroup && fromgroup->id != 0) {
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TITLE, uint16) = STR_CANT_SET_TO_THIS_GROUP;
*ebx = MONEY32_UNDEFINED;
return;
}
if (*ebx & GAME_COMMAND_FLAG_APPLY) {
player->group = groupid;
window_invalidate_by_number(WC_PLAYER, playerid);
@@ -2035,14 +2046,12 @@ void game_command_modify_groups(int *eax, int *ebx, int *ecx, int *edx, int *esi
}
NetworkGroup* mygroup = nullptr;
NetworkPlayer* player = gNetwork.GetPlayerByID(game_command_playerid);
if (player) {
if (player && !all) {
mygroup = gNetwork.GetGroupByID(player->group);
if (mygroup) {
if (!all && !mygroup->CanPerformAction(index)) {
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TITLE, uint16) = STR_CANT_MODIFY_PERMISSION_THAT_YOU_DO_NOT_HAVE_YOURSELF;
*ebx = MONEY32_UNDEFINED;
return;
}
if (!mygroup || (mygroup && !mygroup->CanPerformAction(index))) {
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TITLE, uint16) = STR_CANT_MODIFY_PERMISSION_THAT_YOU_DO_NOT_HAVE_YOURSELF;
*ebx = MONEY32_UNDEFINED;
return;
}
}
if (*ebx & GAME_COMMAND_FLAG_APPLY) {
@@ -2096,6 +2105,11 @@ void game_command_modify_groups(int *eax, int *ebx, int *ecx, int *edx, int *esi
}
}break;
case 4:{ // set default group
if (groupid == 0) {
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TITLE, uint16) = STR_CANT_SET_TO_THIS_GROUP;
*ebx = MONEY32_UNDEFINED;
return;
}
if (*ebx & GAME_COMMAND_FLAG_APPLY) {
gNetwork.SetDefaultGroup(groupid);
}

View File

@@ -166,79 +166,31 @@ class NetworkAction
{
public:
rct_string_id name;
int game_command;
std::vector<int> commands;
};
class NetworkActions
{
public:
int FindGameCommand(int command);
int FindCommand(int command);
const std::vector<NetworkAction> actions = {
{STR_ACTION_CHAT, -1},
{STR_ACTION_SET_RIDE_APPEARANCE, GAME_COMMAND_SET_RIDE_APPEARANCE},
//{STR_NONE, GAME_COMMAND_SET_LAND_HEIGHT},
{STR_ACTION_TOGGLE_PAUSE, GAME_COMMAND_TOGGLE_PAUSE},
{STR_ACTION_PLACE_TRACK, GAME_COMMAND_PLACE_TRACK},
{STR_ACTION_REMOVE_TRACK, GAME_COMMAND_REMOVE_TRACK},
//{STR_NONE, GAME_COMMAND_LOAD_OR_QUIT},
{STR_ACTION_CREATE_RIDE, GAME_COMMAND_CREATE_RIDE},
{STR_ACTION_REMOVE_RIDE, GAME_COMMAND_DEMOLISH_RIDE},
{STR_ACTION_SET_RIDE_STATUS, GAME_COMMAND_SET_RIDE_STATUS},
{STR_ACTION_SET_RIDE_VEHICLES, GAME_COMMAND_SET_RIDE_VEHICLES},
{STR_ACTION_SET_RIDE_NAME, GAME_COMMAND_SET_RIDE_NAME},
{STR_ACTION_SET_RIDE_SETTING, GAME_COMMAND_SET_RIDE_SETTING},
{STR_ACTION_PLACE_RIDE_ENTRANCE_EXIT, GAME_COMMAND_PLACE_RIDE_ENTRANCE_OR_EXIT},
{STR_ACTION_REMOVE_RIDE_ENTRANCE_EXIT, GAME_COMMAND_REMOVE_RIDE_ENTRANCE_OR_EXIT},
{STR_ACTION_REMOVE_SCENERY, GAME_COMMAND_REMOVE_SCENERY},
{STR_ACTION_PLACE_SCENERY, GAME_COMMAND_PLACE_SCENERY},
//{STR_NONE, GAME_COMMAND_SET_WATER_HEIGHT},
{STR_ACTION_PLACE_PATH, GAME_COMMAND_PLACE_PATH},
{STR_ACTION_PLACE_PATH_FROM_TRACK, GAME_COMMAND_PLACE_PATH_FROM_TRACK},
{STR_ACTION_REMOVE_PATH, GAME_COMMAND_REMOVE_PATH},
{STR_ACTION_CHANGE_SURFACE_STYLE, GAME_COMMAND_CHANGE_SURFACE_STYLE},
{STR_ACTION_SET_RIDE_PRICE, GAME_COMMAND_SET_RIDE_PRICE},
{STR_ACTION_SET_PEEP_NAME, GAME_COMMAND_SET_PEEP_NAME},
{STR_ACTION_RAISE_LAND, GAME_COMMAND_RAISE_LAND},
{STR_ACTION_LOWER_LAND, GAME_COMMAND_LOWER_LAND},
{STR_ACTION_SMOOTH_LAND, GAME_COMMAND_EDIT_LAND_SMOOTH},
{STR_ACTION_RAISE_WATER, GAME_COMMAND_RAISE_WATER},
{STR_ACTION_LOWER_WATER, GAME_COMMAND_LOWER_WATER},
{STR_ACTION_SET_BRAKES_SPEED, GAME_COMMAND_SET_BRAKES_SPEED},
{STR_ACTION_HIRE_NEW_STAFF, GAME_COMMAND_HIRE_NEW_STAFF_MEMBER},
{STR_ACTION_SET_STAFF_PATROL, GAME_COMMAND_SET_STAFF_PATROL},
{STR_ACTION_FIRE_STAFF, GAME_COMMAND_FIRE_STAFF_MEMBER},
{STR_ACTION_SET_STAFF_ORDER, GAME_COMMAND_SET_STAFF_ORDER},
{STR_ACTION_SET_PARK_NAME, GAME_COMMAND_SET_PARK_NAME},
{STR_ACTION_OPEN_CLOSE_PARK, GAME_COMMAND_SET_PARK_OPEN},
{STR_ACTION_BUY_LAND_RIGHTS, GAME_COMMAND_BUY_LAND_RIGHTS},
{STR_ACTION_PLACE_PARK_ENTRANCE, GAME_COMMAND_PLACE_PARK_ENTRANCE},
{STR_ACTION_REMOVE_PARK_ENTRANCE, GAME_COMMAND_REMOVE_PARK_ENTRANCE},
{STR_ACTION_SET_MAZE_TRACK, GAME_COMMAND_SET_MAZE_TRACK},
{STR_ACTION_SET_PARK_ENTRANCE_FEE, GAME_COMMAND_SET_PARK_ENTRANCE_FEE},
{STR_ACTION_SET_STAFF_COLOUR, GAME_COMMAND_SET_STAFF_COLOUR},
{STR_ACTION_PLACE_FENCE, GAME_COMMAND_PLACE_FENCE},
{STR_ACTION_REMOVE_FENCE, GAME_COMMAND_REMOVE_FENCE},
{STR_ACTION_PLACE_LARGE_SCENERY, GAME_COMMAND_PLACE_LARGE_SCENERY},
{STR_ACTION_SET_CURRENT_LOAN, GAME_COMMAND_SET_CURRENT_LOAN},
{STR_ACTION_SET_RESEARCH_FUNDING, GAME_COMMAND_SET_RESEARCH_FUNDING},
{STR_ACTION_PLACE_TRACK_DESIGN, GAME_COMMAND_PLACE_TRACK_DESIGN},
{STR_ACTION_START_MARKETING_CAMPAIGN, GAME_COMMAND_START_MARKETING_CAMPAIGN},
{STR_ACTION_PLACE_MAZE_DESIGN, GAME_COMMAND_PLACE_MAZE_DESIGN},
{STR_ACTION_PLACE_BANNER, GAME_COMMAND_PLACE_BANNER},
{STR_ACTION_REMOVE_BANNER, GAME_COMMAND_REMOVE_BANNER},
{STR_ACTION_SET_SCENERY_COLOUR, GAME_COMMAND_SET_SCENERY_COLOUR},
{STR_ACTION_SET_FENCE_COLOUR, GAME_COMMAND_SET_FENCE_COLOUR},
{STR_ACTION_SET_LARGE_SCENERY_COLOUR, GAME_COMMAND_SET_LARGE_SCENERY_COLOUR},
{STR_ACTION_SET_BANNER_COLOUR, GAME_COMMAND_SET_BANNER_COLOUR},
{STR_ACTION_SET_LAND_OWNERSHIP, GAME_COMMAND_SET_LAND_OWNERSHIP},
{STR_ACTION_CLEAR_SCENERY, GAME_COMMAND_CLEAR_SCENERY},
{STR_ACTION_SET_BANNER_NAME, GAME_COMMAND_SET_BANNER_NAME},
{STR_ACTION_SET_SIGN_NAME, GAME_COMMAND_SET_SIGN_NAME},
{STR_ACTION_SET_BANNER_STYLE, GAME_COMMAND_SET_BANNER_STYLE},
{STR_ACTION_SET_SIGN_STYLE, GAME_COMMAND_SET_SIGN_STYLE},
{STR_ACTION_SET_PLAYER_GROUP, GAME_COMMAND_SET_PLAYER_GROUP},
{STR_ACTION_MODIFY_GROUPS, GAME_COMMAND_MODIFY_GROUPS},
{STR_ACTION_KICK_PLAYER, GAME_COMMAND_KICK_PLAYER}
{STR_ACTION_CHAT, {-1}},
{STR_ACTION_TERRAFORM, {GAME_COMMAND_SET_LAND_HEIGHT, GAME_COMMAND_RAISE_LAND, GAME_COMMAND_LOWER_LAND, GAME_COMMAND_EDIT_LAND_SMOOTH, GAME_COMMAND_CHANGE_SURFACE_STYLE}},
{STR_ACTION_SET_WATER_LEVEL, {GAME_COMMAND_SET_WATER_HEIGHT, GAME_COMMAND_RAISE_WATER, GAME_COMMAND_LOWER_WATER}},
{STR_ACTION_TOGGLE_PAUSE, {GAME_COMMAND_TOGGLE_PAUSE}},
{STR_ACTION_CREATE_RIDE, {GAME_COMMAND_CREATE_RIDE}},
{STR_ACTION_REMOVE_RIDE, {GAME_COMMAND_DEMOLISH_RIDE}},
{STR_ACTION_BUILD_RIDE, {GAME_COMMAND_PLACE_TRACK, GAME_COMMAND_REMOVE_TRACK, GAME_COMMAND_SET_MAZE_TRACK, GAME_COMMAND_PLACE_TRACK_DESIGN, GAME_COMMAND_PLACE_MAZE_DESIGN, GAME_COMMAND_PLACE_RIDE_ENTRANCE_OR_EXIT, GAME_COMMAND_REMOVE_RIDE_ENTRANCE_OR_EXIT}},
{STR_ACTION_RIDE_PROPERTIES, {GAME_COMMAND_SET_RIDE_NAME, GAME_COMMAND_SET_RIDE_APPEARANCE, GAME_COMMAND_SET_RIDE_STATUS, GAME_COMMAND_SET_RIDE_VEHICLES, GAME_COMMAND_SET_RIDE_SETTING, GAME_COMMAND_SET_RIDE_PRICE, GAME_COMMAND_SET_BRAKES_SPEED}},
{STR_ACTION_SCENERY, {GAME_COMMAND_REMOVE_SCENERY, GAME_COMMAND_PLACE_SCENERY, GAME_COMMAND_SET_BRAKES_SPEED, GAME_COMMAND_REMOVE_FENCE, GAME_COMMAND_PLACE_FENCE, GAME_COMMAND_REMOVE_LARGE_SCENERY, GAME_COMMAND_PLACE_LARGE_SCENERY, GAME_COMMAND_PLACE_BANNER, GAME_COMMAND_REMOVE_BANNER, GAME_COMMAND_SET_SCENERY_COLOUR, GAME_COMMAND_SET_FENCE_COLOUR, GAME_COMMAND_SET_LARGE_SCENERY_COLOUR, GAME_COMMAND_SET_BANNER_COLOUR, GAME_COMMAND_CLEAR_SCENERY, GAME_COMMAND_SET_BANNER_NAME, GAME_COMMAND_SET_SIGN_NAME, GAME_COMMAND_SET_BANNER_STYLE, GAME_COMMAND_SET_SIGN_STYLE}},
{STR_ACTION_PATH, {GAME_COMMAND_PLACE_PATH, GAME_COMMAND_PLACE_PATH_FROM_TRACK, GAME_COMMAND_REMOVE_PATH}},
{STR_ACTION_GUEST, {GAME_COMMAND_SET_PEEP_NAME}},
{STR_ACTION_STAFF, {GAME_COMMAND_HIRE_NEW_STAFF_MEMBER, GAME_COMMAND_SET_STAFF_PATROL, GAME_COMMAND_FIRE_STAFF_MEMBER, GAME_COMMAND_SET_STAFF_ORDER, GAME_COMMAND_SET_STAFF_COLOUR}},
{STR_ACTION_PARK_PROPERTIES, {GAME_COMMAND_SET_PARK_NAME, GAME_COMMAND_SET_PARK_OPEN, GAME_COMMAND_SET_PARK_ENTRANCE_FEE, GAME_COMMAND_SET_LAND_OWNERSHIP, GAME_COMMAND_BUY_LAND_RIGHTS, GAME_COMMAND_PLACE_PARK_ENTRANCE, GAME_COMMAND_REMOVE_PARK_ENTRANCE}},
{STR_ACTION_PARK_FUNDING, {GAME_COMMAND_SET_CURRENT_LOAN, GAME_COMMAND_SET_RESEARCH_FUNDING, GAME_COMMAND_START_MARKETING_CAMPAIGN}},
{STR_ACTION_KICK_PLAYER, {GAME_COMMAND_KICK_PLAYER}},
{STR_ACTION_MODIFY_GROUPS, {GAME_COMMAND_MODIFY_GROUPS}},
{STR_ACTION_SET_PLAYER_GROUP, {GAME_COMMAND_SET_PLAYER_GROUP}}
};
};
@@ -252,7 +204,7 @@ public:
void FreeNameStringId();
void ToggleActionPermission(size_t index);
bool CanPerformAction(size_t index);
bool CanPerformGameCommand(int command);
bool CanPerformCommand(int command);
std::string& GetName();
void SetName(std::string name);
rct_string_id GetNameStringId();