diff options
author | peter1138 <peter1138@openttd.org> | 2007-05-22 19:48:11 +0000 |
---|---|---|
committer | peter1138 <peter1138@openttd.org> | 2007-05-22 19:48:11 +0000 |
commit | 2125b963871bee82d48cd9b684352e54ab2610ed (patch) | |
tree | 2f72d3272da86043ee08907353ec8e4e0d74b928 /src/group_gui.cpp | |
parent | b7748a686eca83d53eddf0be888e6f58eb12d054 (diff) | |
download | openttd-2125b963871bee82d48cd9b684352e54ab2610ed.tar.xz |
(svn r9898) -Fix (r9874): Many...
- Group protection status wasn't changed via a command.
- Group renaming didn't check group owner (and in fact changed the owner,
just like renaming a sign...).
- Added owner checks to other group commands.
- Invalidate window data after the command has been completed instead of after
the command has been sent. This fixes gui issues in network play.
Diffstat (limited to 'src/group_gui.cpp')
-rw-r--r-- | src/group_gui.cpp | 52 |
1 files changed, 21 insertions, 31 deletions
diff --git a/src/group_gui.cpp b/src/group_gui.cpp index 4d5ab44eb..4d19ba925 100644 --- a/src/group_gui.cpp +++ b/src/group_gui.cpp @@ -296,6 +296,13 @@ static void GroupWndProc(Window *w, WindowEvent *e) gv->vehicle_type = (VehicleType)GB(w->window_number, 11, 5); switch(e->event) { + case WE_INVALIDATE_DATA: + gv->l.flags |= VL_REBUILD; + gl->l.flags |= VL_REBUILD; + UpdateGroupActionDropdown(w, gv->group_sel); + SetWindowDirty(w); + break; + case WE_CREATE: CreateVehicleGroupWindow(w); break; @@ -543,22 +550,16 @@ static void GroupWndProc(Window *w, WindowEvent *e) } case GRP_WIDGET_CREATE_GROUP: // Create a new group - if (!CmdFailed(DoCommandP(0, gv->vehicle_type, 0, NULL, CMD_CREATE_GROUP | CMD_MSG(STR_GROUP_CAN_T_CREATE)))) { - gl->l.flags |= VL_REBUILD; - UpdateGroupActionDropdown(w, gv->group_sel); - SetWindowDirty(w); - } + DoCommandP(0, gv->vehicle_type, 0, NULL, CMD_CREATE_GROUP | CMD_MSG(STR_GROUP_CAN_T_CREATE)); break; - case GRP_WIDGET_DELETE_GROUP: // Delete the selected group - if (!CmdFailed(DoCommandP(0, gv->group_sel, 0, NULL, CMD_DELETE_GROUP | CMD_MSG(STR_GROUP_CAN_T_DELETE)))) { - gv->group_sel = DEFAULT_GROUP; - gv->l.flags |= VL_REBUILD; - gl->l.flags |= VL_REBUILD; - UpdateGroupActionDropdown(w, gv->group_sel); - SetWindowDirty(w); - } + case GRP_WIDGET_DELETE_GROUP: { // Delete the selected group + GroupID group = gv->group_sel; + gv->group_sel = DEFAULT_GROUP; + + DoCommandP(0, group, 0, NULL, CMD_DELETE_GROUP | CMD_MSG(STR_GROUP_CAN_T_DELETE)); break; + } case GRP_WIDGET_RENAME_GROUP: { // Rename the selected roup assert(!IsDefaultGroupID(gv->group_sel)); @@ -593,9 +594,9 @@ static void GroupWndProc(Window *w, WindowEvent *e) case GRP_WIDGET_REPLACE_PROTECTION: if (!IsDefaultGroupID(gv->group_sel)) { - Group *g = GetGroup(gv->group_sel); + const Group *g = GetGroup(gv->group_sel); - g->replace_protection = !g->replace_protection; + DoCommandP(0, gv->group_sel, !g->replace_protection, NULL, CMD_SET_GROUP_REPLACE_PROTECTION); } break; } @@ -605,9 +606,7 @@ static void GroupWndProc(Window *w, WindowEvent *e) case WE_DRAGDROP: { switch (e->we.click.widget) { case GRP_WIDGET_ALL_VEHICLES: // All trains - if (!CmdFailed(DoCommandP(0, DEFAULT_GROUP , gv->vehicle_sel, NULL, CMD_ADD_VEHICLE_GROUP | CMD_MSG(STR_GROUP_CAN_T_ADD_VEHICLE)))) { - gv->l.flags |= VL_REBUILD; - } + DoCommandP(0, DEFAULT_GROUP, gv->vehicle_sel, NULL, CMD_ADD_VEHICLE_GROUP | CMD_MSG(STR_GROUP_CAN_T_ADD_VEHICLE)); gv->vehicle_sel = INVALID_VEHICLE; @@ -629,9 +628,7 @@ static void GroupWndProc(Window *w, WindowEvent *e) if (id_g >= gl->l.list_length) return; - if (!CmdFailed(DoCommandP(0, gl->sort_list[id_g]->index , vindex, NULL, CMD_ADD_VEHICLE_GROUP | CMD_MSG(STR_GROUP_CAN_T_ADD_VEHICLE)))) { - gv->l.flags |= VL_REBUILD; - } + DoCommandP(0, gl->sort_list[id_g]->index, vindex, NULL, CMD_ADD_VEHICLE_GROUP | CMD_MSG(STR_GROUP_CAN_T_ADD_VEHICLE)); break; } @@ -673,10 +670,7 @@ static void GroupWndProc(Window *w, WindowEvent *e) if (!StrEmpty(e->we.edittext.str)) { _cmd_text = e->we.edittext.str; - if (!CmdFailed(DoCommandP(0, gv->group_sel, 0, NULL, CMD_RENAME_GROUP | CMD_MSG(STR_GROUP_CAN_T_RENAME)))) { - SetWindowDirty(w); - gl->l.flags |= VL_REBUILD; - } + DoCommandP(0, gv->group_sel, 0, NULL, CMD_RENAME_GROUP | CMD_MSG(STR_GROUP_CAN_T_RENAME)); } break; @@ -719,16 +713,12 @@ static void GroupWndProc(Window *w, WindowEvent *e) case 3: // Add shared Vehicles assert(!IsDefaultGroupID(gv->group_sel)); - if (!CmdFailed(DoCommandP(0, gv->group_sel, gv->vehicle_type, NULL, CMD_ADD_SHARED_VEHICLE_GROUP | CMD_MSG(STR_GROUP_CAN_T_ADD_SHARED_VEHICLE)))) { - gv->l.flags |= VL_REBUILD; - } + DoCommandP(0, gv->group_sel, gv->vehicle_type, NULL, CMD_ADD_SHARED_VEHICLE_GROUP | CMD_MSG(STR_GROUP_CAN_T_ADD_SHARED_VEHICLE)); break; case 4: // Remove all Vehicles from the selected group assert(!IsDefaultGroupID(gv->group_sel)); - if (!CmdFailed(DoCommandP(0, gv->group_sel, gv->vehicle_type, NULL, CMD_REMOVE_ALL_VEHICLES_GROUP | CMD_MSG(STR_GROUP_CAN_T_REMOVE_ALL_VEHICLES)))) { - gv->l.flags |= VL_REBUILD; - } + DoCommandP(0, gv->group_sel, gv->vehicle_type, NULL, CMD_REMOVE_ALL_VEHICLES_GROUP | CMD_MSG(STR_GROUP_CAN_T_REMOVE_ALL_VEHICLES)); break; default: NOT_REACHED(); } |