(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.
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
Reference in New Issue
Block a user