Mercurial > hg > openttd
changeset 2989:00a81ec78145 draft
(svn r3564) Several smaller changes:
- Don't treat non-booleans as booleans
- Reduce variable scope
- Bracing
- Use DeMorgan's law to make conditionals easier to read
- if cascade -> switch
- Replace some magic numbers by symbolic names
- Avoid assignments within other statements
author | tron <tron@openttd.org> |
---|---|
date | Mon, 06 Feb 2006 09:18:04 +0000 |
parents | 2682be96ae43 |
children | e67deeca9f3d |
files | ai/default/default.c aircraft_cmd.c clear_cmd.c disaster_cmd.c economy.c industry_gui.c misc.c network_data.c openttd.c order_cmd.c rail.h rail_cmd.c road_cmd.c roadveh_cmd.c smallmap_gui.c sound.c station_cmd.c table/tree_land.h train_cmd.c tunnelbridge_cmd.c vehicle_gui.c water_cmd.c window.c |
diffstat | 23 files changed, 220 insertions(+), 214 deletions(-) [+] |
line wrap: on
line diff
--- a/ai/default/default.c +++ b/ai/default/default.c @@ -2778,8 +2778,7 @@ if (dist <= a->best_dist) { TileIndex tile2 = TILE_MASK(tile + TileOffsByDir(_dir_by_track[track])); - if (IsTileType(tile2, MP_STREET) && - (_m[tile2].m5&0xF0) == 0) { + if (IsTileType(tile2, MP_STREET) && GB(_m[tile2].m5, 4, 4) == 0) { a->best_dist = dist; a->best_tile = tile; a->best_track = track;
--- a/aircraft_cmd.c +++ b/aircraft_cmd.c @@ -98,7 +98,7 @@ if (is_custom_sprite(spritenum)) { int sprite = GetCustomVehicleSprite(v, direction); - if (sprite) return sprite; + if (sprite != 0) return sprite; spritenum = orig_aircraft_vehicle_info[v->engine_type - AIRCRAFT_ENGINES_INDEX].image_index; } return direction + _aircraft_sprite[spritenum];
--- a/clear_cmd.c +++ b/clear_cmd.c @@ -637,10 +637,9 @@ { TileLoopClearHelper(tile); - if (_opt.landscape == LT_DESERT) { - TileLoopClearDesert(tile); - } else if (_opt.landscape == LT_HILLY) { - TileLoopClearAlps(tile); + switch (_opt.landscape) { + case LT_DESERT: TileLoopClearDesert(tile); break; + case LT_HILLY: TileLoopClearAlps(tile); break; } switch (GetClearGround(tile)) {
--- a/disaster_cmd.c +++ b/disaster_cmd.c @@ -898,10 +898,11 @@ static void Disaster7_Init(void) { int index = GB(Random(), 0, 4); - Industry *i; uint m; for (m = 0; m < 15; m++) { + const Industry* i; + FOR_ALL_INDUSTRIES(i) { if (i->xy != 0 && i->type == IT_COAL_MINE && --index < 0) { SetDParam(0, i->town->index);
--- a/economy.c +++ b/economy.c @@ -346,14 +346,12 @@ DeleteVehicle(v); } else { v->owner = new_player; - if (v->type == VEH_Train && IsFrontEngine(v)) - v->unitnumber = ++num_train; - else if (v->type == VEH_Road) - v->unitnumber = ++num_road; - else if (v->type == VEH_Ship) - v->unitnumber = ++num_ship; - else if (v->type == VEH_Aircraft && v->subtype <= 2) - v->unitnumber = ++num_aircraft; + switch (v->type) { + case VEH_Train: if (IsFrontEngine(v)) v->unitnumber = ++num_train; break; + case VEH_Road: v->unitnumber = ++num_road; break; + case VEH_Ship: v->unitnumber = ++num_ship; break; + case VEH_Aircraft: if (v->subtype <= 2) v->unitnumber = ++num_aircraft; break; + } } } } @@ -1190,10 +1188,17 @@ if (DistanceMax(xy, from->xy) > 9) continue; /* Check distance from dest */ - if (cargo_type == CT_PASSENGERS || cargo_type == CT_MAIL || cargo_type == CT_GOODS || cargo_type == CT_FOOD) { - xy = GetTown(s->to)->xy; - } else { - xy = (GetIndustry(s->to))->xy; + switch (cargo_type) { + case CT_PASSENGERS: + case CT_MAIL: + case CT_GOODS: + case CT_FOOD: + xy = GetTown(s->to)->xy; + break; + + default: + xy = GetIndustry(s->to)->xy; + break; } if (DistanceMax(xy, to->xy) > 9) continue; @@ -1256,18 +1261,11 @@ // Modify profit if a subsidy is in effect if (subsidised) { - if (_opt.diff.subsidy_multiplier < 1) { - /* 1.5x */ - profit += profit >> 1; - } else if (_opt.diff.subsidy_multiplier == 1) { - /* 2x */ - profit *= 2; - } else if (_opt.diff.subsidy_multiplier == 2) { - /* 3x */ - profit *= 3; - } else { - /* 4x */ - profit *= 4; + switch (_opt.diff.subsidy_multiplier) { + case 0: profit += profit >> 1; + case 1: profit *= 2; + case 2: profit *= 3; + default: profit *= 4; } } @@ -1353,7 +1351,8 @@ old_player = _current_player; _current_player = v->owner; - st = GetStation(last_visited = v->last_station_visited); + last_visited = v->last_station_visited; + st = GetStation(last_visited); for (; v != NULL; v = v->next) { GoodsEntry* ge; @@ -1413,12 +1412,14 @@ /* update stats */ ge->days_since_pickup = 0; - t = u->max_speed; - if (u->type == VEH_Road) t >>=1; - if (u->type == VEH_Train) t = u->u.rail.cached_max_speed; + switch (u->type) { + case VEH_Train: t = u->u.rail.cached_max_speed; break; + case VEH_Road: t = u->max_speed / 2; break; + default: t = u->max_speed; break; + } // if last speed is 0, we treat that as if no vehicle has ever visited the station. - ge->last_speed = t < 255 ? t : 255; + ge->last_speed = min(t, 255); ge->last_age = _cur_year - v->build_year; // If there's goods waiting at the station, and the vehicle
--- a/industry_gui.c +++ b/industry_gui.c @@ -280,22 +280,22 @@ switch (e->event) { case WE_PAINT: { - const Industry *i; - StringID str; + const Industry* i = GetIndustry(w->window_number); - i = GetIndustry(w->window_number); SetDParam(0, w->window_number); DrawWindowWidgets(w); if (i->accepts_cargo[0] != CT_INVALID) { + StringID str; + SetDParam(0, _cargoc.names_s[i->accepts_cargo[0]]); str = STR_4827_REQUIRES; if (i->accepts_cargo[1] != CT_INVALID) { SetDParam(1, _cargoc.names_s[i->accepts_cargo[1]]); - str++; + str = STR_4828_REQUIRES; if (i->accepts_cargo[2] != CT_INVALID) { SetDParam(2, _cargoc.names_s[i->accepts_cargo[2]]); - str++; + str = STR_4829_REQUIRES; } } DrawString(2, 107, str, 0); @@ -442,17 +442,14 @@ void ShowIndustryViewWindow(int industry) { - Window *w; - Industry *i; + Window* w = AllocateWindowDescFront(&_industry_view_desc, industry); - w = AllocateWindowDescFront(&_industry_view_desc, industry); - if (w) { + if (w != NULL) { w->flags4 |= WF_DISABLE_VP_SCROLL; WP(w,vp2_d).data_1 = 0; WP(w,vp2_d).data_2 = 0; WP(w,vp2_d).data_3 = 0; - i = GetIndustry(w->window_number); - AssignWindowViewport(w, 3, 17, 0xFE, 0x56, i->xy + TileDiffXY(1, 1), 1); + AssignWindowViewport(w, 3, 17, 0xFE, 0x56, GetIndustry(w->window_number)->xy + TileDiffXY(1, 1), 1); } } @@ -550,8 +547,7 @@ error("Could not allocate memory for the industry-sorting-list"); FOR_ALL_INDUSTRIES(i) { - if (i->xy) - _industry_sort[n++] = i->index; + if (i->xy != 0) _industry_sort[n++] = i->index; } _num_industry_sort = n; _last_industry_idx = 0xFFFF; // used for "cache" @@ -568,7 +564,6 @@ case WE_PAINT: { int n; uint p; - Industry *i; static const uint16 _indicator_positions[4] = {88, 187, 284, 387}; if (_industry_sort_dirty) { @@ -585,7 +580,8 @@ n = 0; while (p < _num_industry_sort) { - i = GetIndustry(_industry_sort[p]); + const Industry* i = GetIndustry(_industry_sort[p]); + SetDParam(0, i->index); if (i->produced_cargo[0] != CT_INVALID) { SetDParam(1, _cargoc.names_long[i->produced_cargo[0]]); @@ -638,14 +634,11 @@ case 8: { int y = (e->click.pt.y - 28) / 10; uint16 p; - Industry *c; - if (!IS_INT_INSIDE(y, 0, w->vscroll.cap)) - return; + if (!IS_INT_INSIDE(y, 0, w->vscroll.cap)) return; p = y + w->vscroll.pos; if (p < _num_industry_sort) { - c = GetIndustry(_industry_sort[p]); - ScrollMainWindowToTile(c->xy); + ScrollMainWindowToTile(GetIndustry(_industry_sort[p])->xy); } } break; } @@ -674,11 +667,9 @@ void ShowIndustryDirectory(void) { - /* Industry List */ - Window *w; + Window* w = AllocateWindowDescFront(&_industry_directory_desc, 0); - w = AllocateWindowDescFront(&_industry_directory_desc, 0); - if (w) { + if (w != NULL) { w->vscroll.cap = 16; w->resize.height = w->height - 6 * 10; // minimum 10 items w->resize.step_height = 10;
--- a/misc.c +++ b/misc.c @@ -78,7 +78,9 @@ void SetDate(uint date) { YearMonthDay ymd; - ConvertDayToYMD(&ymd, _date = date); + + _date = date; + ConvertDayToYMD(&ymd, date); _cur_year = ymd.year; _cur_month = ymd.month; #ifdef ENABLE_NETWORK @@ -186,8 +188,6 @@ void GenerateWorld(int mode, uint size_x, uint size_y) { - int i; - // Make sure everything is done via OWNER_NONE _current_player = OWNER_NONE; @@ -223,7 +223,9 @@ // No need to run the tile loop in the scenario editor. if (mode != GW_EMPTY) { - for (i = 0x500; i != 0; i--) RunTileLoop(); + uint i; + + for (i = 0; i < 0x500; i++) RunTileLoop(); } ResetObjectToPlace(); @@ -410,7 +412,7 @@ void InitializeLandscapeVariables(bool only_constants) { const LandscapePredefVar *lpd; - int i; + uint i; StringID str; lpd = &_landscape_predef_var[_opt.landscape]; @@ -487,7 +489,8 @@ */ static void RunVehicleDayProc(uint daytick) { - uint i, total = _vehicle_pool.total_items; + uint total = _vehicle_pool.total_items; + uint i; for (i = daytick; i < total; i += DAY_TICKS) { Vehicle* v = GetVehicle(i); @@ -976,13 +979,13 @@ static void Load_CHTS(void) { - Cheat* cht = (Cheat*) &_cheats; + Cheat* cht = (Cheat*)&_cheats; + uint count = SlGetFieldLength() / 2; + uint i; - uint count = SlGetFieldLength()/2; - for (; count; count--, cht++) - { - cht->been_used = (byte)SlReadByte(); - cht->value = (byte)SlReadByte(); + for (i = 0; i < count; i++) { + cht[i].been_used = SlReadByte(); + cht[i].value = SlReadByte(); } }
--- a/network_data.c +++ b/network_data.c @@ -100,8 +100,8 @@ packet->pos = 0; packet->next = NULL; - packet->buffer[0] = packet->size & 0xFF; - packet->buffer[1] = packet->size >> 8; + packet->buffer[0] = GB(packet->size, 0, 8); + packet->buffer[1] = GB(packet->size, 8, 8); // Locate last packet buffered for the client p = cs->packet_queue;
--- a/openttd.c +++ b/openttd.c @@ -657,7 +657,7 @@ } _opt_ptr = &_opt; - memcpy(&_opt_ptr->diff, &_opt_newgame.diff, sizeof(GameDifficulty)); + memcpy(&_opt_ptr->diff, &_opt_newgame.diff, sizeof(_opt_ptr->diff)); _opt.diff_level = _opt_newgame.diff_level; // Inititalize data @@ -731,7 +731,7 @@ case SM_NEWGAME: /* New Game --> 'Random game' */ #ifdef ENABLE_NETWORK if (_network_server) { - snprintf(_network_game_info.map_name, NETWORK_NAME_LENGTH, "Random Map"); + snprintf(_network_game_info.map_name, lengthof(_network_game_info.map_name), "Random Map"); } #endif /* ENABLE_NETWORK */ MakeNewGame(); @@ -740,7 +740,7 @@ case SM_START_SCENARIO: /* New Game --> Choose one of the preset scenarios */ #ifdef ENABLE_NETWORK if (_network_server) { - snprintf(_network_game_info.map_name, NETWORK_NAME_LENGTH, "%s (Loaded scenario)", _file_to_saveload.title); + snprintf(_network_game_info.map_name, lengthof(_network_game_info.map_name), "%s (Loaded scenario)", _file_to_saveload.title); } #endif /* ENABLE_NETWORK */ StartScenario(); @@ -757,7 +757,7 @@ DoCommandP(0, 0, 0, NULL, CMD_PAUSE); // decrease pause counter (was increased from opening load dialog) #ifdef ENABLE_NETWORK if (_network_server) { - snprintf(_network_game_info.map_name, NETWORK_NAME_LENGTH, "%s (Loaded game)", _file_to_saveload.title); + snprintf(_network_game_info.map_name, lengthof(_network_game_info.map_name), "%s (Loaded game)", _file_to_saveload.title); } #endif /* ENABLE_NETWORK */ }
--- a/order_cmd.c +++ b/order_cmd.c @@ -366,8 +366,7 @@ } } - u = GetFirstVehicleFromSharedList(v); - while (u != NULL) { + for (u = GetFirstVehicleFromSharedList(v); u != NULL; u = u->next_shared) { /* Increase amount of orders */ u->num_orders++; @@ -386,8 +385,6 @@ } /* Update any possible open window of the vehicle */ InvalidateVehicleOrder(u); - - u = u->next_shared; } /* Make sure to rebuild the whole list */ @@ -454,8 +451,7 @@ order->type = OT_NOTHING; order->next = NULL; - u = GetFirstVehicleFromSharedList(v); - while (u != NULL) { + for (u = GetFirstVehicleFromSharedList(v); u != NULL; u = u->next_shared) { u->num_orders--; if (sel_ord < u->cur_order_index) @@ -476,8 +472,6 @@ /* Update any possible open window of the vehicle */ InvalidateVehicleOrder(u); - - u = u->next_shared; } RebuildVehicleLists(); @@ -579,14 +573,15 @@ /* Update the windows and full load flags, also for vehicles that share the same order list */ { - Vehicle *u = GetFirstVehicleFromSharedList(v); - while (u != NULL) { + Vehicle* u; + + for (u = GetFirstVehicleFromSharedList(v); u != NULL; u = u->next_shared) { /* toggle u->current_order "Full load" flag if it changed */ if (sel_ord == u->cur_order_index && - HASBIT(u->current_order.flags, OFB_FULL_LOAD) != HASBIT(order->flags, OFB_FULL_LOAD)) + HASBIT(u->current_order.flags, OFB_FULL_LOAD) != HASBIT(order->flags, OFB_FULL_LOAD)) { TOGGLEBIT(u->current_order.flags, OFB_FULL_LOAD); + } InvalidateVehicleOrder(u); - u = u->next_shared; } } } @@ -632,11 +627,10 @@ /* Is the vehicle already in the shared list? */ { - Vehicle *u = GetFirstVehicleFromSharedList(src); - while (u != NULL) { - if (u == dst) - return CMD_ERROR; - u = u->next_shared; + const Vehicle* u; + + for (u = GetFirstVehicleFromSharedList(src); u != NULL; u = u->next_shared) { + if (u == dst) return CMD_ERROR; } }
--- a/rail.h +++ b/rail.h @@ -635,9 +635,9 @@ /* We know that there are at least two tracks present. When there are more * than 2 tracks, they will surely overlap. When there are two, they will * always overlap unless they are lower & upper or right & left. */ - if ((bits == (TRACK_BIT_UPPER|TRACK_BIT_LOWER)) || (bits == (TRACK_BIT_LEFT | TRACK_BIT_RIGHT))) - return false; - return true; + return + bits != (TRACK_BIT_UPPER | TRACK_BIT_LOWER) && + bits != (TRACK_BIT_LEFT | TRACK_BIT_RIGHT); } void DrawTrainDepotSprite(int x, int y, int image, RailType railtype);
--- a/rail_cmd.c +++ b/rail_cmd.c @@ -1469,10 +1469,11 @@ DrawGroundSprite(image); foreach_draw_tile_seq(seq, cust->seq) { - uint32 image = seq->image + relocation; - DrawSpecialBuilding(image, 0, ti, - seq->delta_x, seq->delta_y, seq->delta_z, - seq->width, seq->height, seq->unk); + DrawSpecialBuilding( + seq->image + relocation, 0, ti, + seq->delta_x, seq->delta_y, seq->delta_z, + seq->width, seq->height, seq->unk + ); } return; }
--- a/road_cmd.c +++ b/road_cmd.c @@ -1112,9 +1112,8 @@ static void GetTileDesc_Road(TileIndex tile, TileDesc *td) { - int i = (_m[tile].m5 >> 4); - if (i == 0) - i = GB(_m[tile].m4, 4, 3) + 3; + int i = GB(_m[tile].m5, 4, 4); + if (i == 0) i = GB(_m[tile].m4, 4, 3) + 3; td->str = _road_tile_strings[i - 1]; td->owner = GetTileOwner(tile); }
--- a/roadveh_cmd.c +++ b/roadveh_cmd.c @@ -66,13 +66,12 @@ if (is_custom_sprite(img)) { image = GetCustomVehicleSprite(v, direction); - if (image) return image; + if (image != 0) return image; img = orig_road_vehicle_info[v->engine_type - ROAD_ENGINES_INDEX].image_index; } image = direction + _roadveh_images[img]; - if (v->cargo_count >= (v->cargo_cap >> 1)) - image += _roadveh_full_adder[img]; + if (v->cargo_count >= v->cargo_cap / 2) image += _roadveh_full_adder[img]; return image; } @@ -509,12 +508,12 @@ static void *EnumCheckRoadVehCrashTrain(Vehicle *v, Vehicle *u) { - if (v->type != VEH_Train || - myabs(v->z_pos - u->z_pos) > 6 || - myabs(v->x_pos - u->x_pos) > 4 || - myabs(v->y_pos - u->y_pos) > 4) - return NULL; - return v; + return + v->type == VEH_Train && + myabs(v->z_pos - u->z_pos) <= 6 && + myabs(v->x_pos - u->x_pos) <= 4 && + myabs(v->y_pos - u->y_pos) <= 4 ? + v : NULL; } static void RoadVehCrash(Vehicle *v) @@ -527,7 +526,7 @@ InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR); pass = 1; - if (v->cargo_type == 0) pass += v->cargo_count; + if (v->cargo_type == CT_PASSENGERS) pass += v->cargo_count; v->cargo_count = 0; SetDParam(0, pass); @@ -573,13 +572,12 @@ if (!(v->vehstatus & VS_HIDDEN)) { Vehicle *u = CreateEffectVehicleRel(v, 4, 4, 5, EV_BREAKDOWN_SMOKE); - if (u) - u->u.special.unk0 = v->breakdown_delay * 2; + if (u != NULL) u->u.special.unk0 = v->breakdown_delay * 2; } } - if (!(v->tick_counter & 1)) { - if (!--v->breakdown_delay) { + if ((v->tick_counter & 1) == 0) { + if (--v->breakdown_delay == 0) { v->breakdown_ctr = 0; InvalidateWindow(WC_VEHICLE_VIEW, v->index); } @@ -1643,7 +1641,7 @@ } // best_stop now contains the best stop we found. - if (best_stop) { + if (best_stop != NULL) { int slot; // Find a free slot in this stop. We know that at least one is free. assert(best_stop->slot[0] == INVALID_SLOT || best_stop->slot[1] == INVALID_SLOT); @@ -1654,7 +1652,7 @@ v->u.road.slot_age = -5; v->u.road.slotindex = slot; DEBUG(ms, 1) ("Multistop: Slot %d at 0x%x assigned to vehicle %d (0x%x)", slot, best_stop->xy, v->unitnumber, v->tile); - } else if (first_stop) { + } else if (first_stop != NULL) { //now we couldn't assign a slot for one reason or another. //so we just go towards the first station DEBUG(ms, 1) ("Multistop: No free slot found for vehicle %d, going to default station", v->unitnumber);
--- a/smallmap_gui.c +++ b/smallmap_gui.c @@ -347,12 +347,10 @@ if (t == MP_TUNNELBRIDGE) { t = _m[tile].m5; if ((t & 0x80) == 0) t >>= 1; - if ((t & 6) == 0) { - t = MP_RAILWAY; - } else if ((t & 6) == 2) { - t = MP_STREET; - } else { - t = MP_WATER; + switch (t & 0x06) { + case 0x00: t = MP_RAILWAY; break; + case 0x02: t = MP_STREET; break; + default: t = MP_WATER; break; } } return t; @@ -642,12 +640,10 @@ y = 0; for (;;) { - uint32 mask; + uint32 mask = 0xFFFFFFFF; int reps; int t; - mask = 0xFFFFFFFF; - /* distance from left edge */ if (x < 0) { if (x < -3) goto skip_column; @@ -895,7 +891,7 @@ int x,y; w = AllocateWindowDescFront(&_smallmap_desc, 0); - if (w) { + if (w != NULL) { w->click_state = ((1<<5) << _smallmap_type) | (_smallmap_show_towns << 12); w->resize.width = 350; w->resize.height = 250; @@ -993,12 +989,10 @@ int i = 0; // find next free window number for extra viewport - while (FindWindowById(WC_EXTRA_VIEW_PORT, i) ) { - i++; - } + while (FindWindowById(WC_EXTRA_VIEW_PORT, i) != NULL) i++; w = AllocateWindowDescFront(&_extra_view_port_desc, i); - if (w) { + if (w != NULL) { int x, y; // the main window with the main view v = FindWindowById(WC_MAIN_WINDOW, 0);
--- a/sound.c +++ b/sound.c @@ -102,7 +102,7 @@ static bool SetBankSource(MixerChannel *mc, uint bank) { - FileEntry* fe; + const FileEntry* fe; int8* mem; uint i;
--- a/station_cmd.c +++ b/station_cmd.c @@ -1325,7 +1325,7 @@ /* Find a station close to us */ if (st == NULL) { st = GetClosestStationFromTile(tile, 8, _current_player); - if (st != NULL && st->facilities) st = NULL; + if (st != NULL && st->facilities != 0) st = NULL; } //give us a road stop in the list, and check if something went wrong @@ -1334,7 +1334,8 @@ return_cmd_error(type ? STR_3008B_TOO_MANY_TRUCK_STOPS : STR_3008A_TOO_MANY_BUS_STOPS); } - if (st != NULL && GetNumRoadStops(st, RS_BUS) + GetNumRoadStops(st, RS_TRUCK) >= ROAD_STOP_LIMIT) { + if (st != NULL && + GetNumRoadStops(st, RS_BUS) + GetNumRoadStops(st, RS_TRUCK) >= ROAD_STOP_LIMIT) { return_cmd_error(type ? STR_3008B_TOO_MANY_TRUCK_STOPS : STR_3008A_TOO_MANY_BUS_STOPS); } @@ -2172,19 +2173,18 @@ static uint32 VehicleEnter_Station(Vehicle *v, TileIndex tile, int x, int y) { - StationID station_id; - byte dir; - if (v->type == VEH_Train) { if (IS_BYTE_INSIDE(_m[tile].m5, 0, 8) && IsFrontEngine(v) && !IsCompatibleTrainStationTile(tile + TileOffsByDir(v->direction >> 1), tile)) { - - station_id = _m[tile].m2; + StationID station_id = _m[tile].m2; + if ((!(v->current_order.flags & OF_NON_STOP) && !_patches.new_nonstop) || (v->current_order.type == OT_GOTO_STATION && v->current_order.station == station_id)) { if (!(_patches.new_nonstop && v->current_order.flags & OF_NON_STOP) && v->current_order.type != OT_LEAVESTATION && v->last_station_visited != station_id) { + byte dir; + x &= 0xF; y &= 0xF;
--- a/table/tree_land.h +++ b/table/tree_land.h @@ -3,11 +3,11 @@ #ifndef TREE_LAND_H #define TREE_LAND_H -static const SpriteID _tree_sprites_1[4] = { - 0x118D, - 0x11A0, - 0x11B3, - 0x11C6, +static const SpriteID _tree_sprites_1[] = { + SPR_FLAT_1_QUART_SNOWY_TILE, + SPR_FLAT_2_QUART_SNOWY_TILE, + SPR_FLAT_3_QUART_SNOWY_TILE, + SPR_FLAT_SNOWY_TILE }; static const byte _tree_base_by_landscape[4] = {0, 12, 20, 32};
--- a/train_cmd.c +++ b/train_cmd.c @@ -44,9 +44,7 @@ for (u = v; u != NULL; u = u->next) { const RailVehicleInfo *rvi = RailVehInfo(u->engine_type); - uint16 vweight = 0; - - vweight += (_cargoc.weights[u->cargo_type] * u->cargo_count) / 16; + uint16 vweight = (_cargoc.weights[u->cargo_type] * u->cargo_count) / 16; // Vehicle weight is not added for articulated parts. if (!IsArticulatedPart(u)) {
--- a/tunnelbridge_cmd.c +++ b/tunnelbridge_cmd.c @@ -1466,12 +1466,12 @@ static uint32 VehicleEnter_TunnelBridge(Vehicle *v, TileIndex tile, int x, int y) { - int z; int dir, vdir; - byte fc; if (GB(_m[tile].m5, 4, 4) == 0) { - z = GetSlopeZ(x, y) - v->z_pos; + int z = GetSlopeZ(x, y) - v->z_pos; + byte fc; + if (myabs(z) > 2) return 8; if (v->type == VEH_Train) {
--- a/vehicle_gui.c +++ b/vehicle_gui.c @@ -981,18 +981,20 @@ byte click_side = 1; switch (e->click.widget) { - case 12: { - WP(w, replaceveh_d).wagon_btnstate = !(WP(w, replaceveh_d).wagon_btnstate); - SetWindowDirty(w); - break; - } - case 14: case 15: { /* Select sorting criteria dropdown menu */ + case 12: + WP(w, replaceveh_d).wagon_btnstate = !(WP(w, replaceveh_d).wagon_btnstate); + SetWindowDirty(w); + break; + + case 14: + case 15: /* Railtype selection dropdown menu */ ShowDropDownMenu(w, _rail_types_list, _railtype_selected_in_replace_gui, 15, 0, ~GetPlayer(_local_player)->avail_railtypes); break; - } - case 17: { /* toggle renew_keep_length */ + + case 17: /* toggle renew_keep_length */ DoCommandP(0, 5, GetPlayer(_local_player)->renew_keep_length ? 0 : 1, NULL, CMD_REPLACE_VEHICLE); - } break; + break; + case 4: { /* Start replacing */ EngineID veh_from = WP(w, replaceveh_d).sel_engine[0]; EngineID veh_to = WP(w, replaceveh_d).sel_engine[1]; @@ -1012,29 +1014,32 @@ click_scroll_pos = w->vscroll.pos; click_scroll_cap = w->vscroll.cap; click_side = 0; + /* FALL THROUGH */ + case 9: { uint i = (e->click.pt.y - 14) / w->resize.step_height; if (i < click_scroll_cap) { WP(w,replaceveh_d).sel_index[click_side] = i + click_scroll_pos; SetWindowDirty(w); } - } break; + break; + } } + break; + } - } break; - - case WE_DROPDOWN_SELECT: { /* we have selected a dropdown item in the list */ + case WE_DROPDOWN_SELECT: /* we have selected a dropdown item in the list */ _railtype_selected_in_replace_gui = e->dropdown.index; SetWindowDirty(w); - } break; + break; - case WE_RESIZE: { + case WE_RESIZE: w->vscroll.cap += e->sizing.diff.y / (int)w->resize.step_height; w->vscroll2.cap += e->sizing.diff.y / (int)w->resize.step_height; w->widget[7].unkA = (w->vscroll.cap << 8) + 1; w->widget[9].unkA = (w->vscroll2.cap << 8) + 1; - } break; + break; } }
--- a/water_cmd.c +++ b/water_cmd.c @@ -375,20 +375,28 @@ if (!(wa & 8)) DrawGroundSprite(SPR_CANALS_BASE + 60); // right corner - if ((wa & 3) == 0) DrawGroundSprite(SPR_CANALS_BASE + 57 + 4); - else if ((wa & 3) == 3 && !IsWateredTile(TILE_ADDXY(tile, -1, 1))) DrawGroundSprite(SPR_CANALS_BASE + 57 + 8); + switch (wa & 0x03) { + case 0: DrawGroundSprite(SPR_CANALS_BASE + 57 + 4); break; + case 3: if (!IsWateredTile(TILE_ADDXY(tile, -1, 1))) DrawGroundSprite(SPR_CANALS_BASE + 57 + 8); break; + } // bottom corner - if ((wa & 6) == 0) DrawGroundSprite(SPR_CANALS_BASE + 57 + 5); - else if ((wa & 6) == 6 && !IsWateredTile(TILE_ADDXY(tile, 1, 1))) DrawGroundSprite(SPR_CANALS_BASE + 57 + 9); + switch (wa & 0x06) { + case 0: DrawGroundSprite(SPR_CANALS_BASE + 57 + 5); break; + case 6: if (!IsWateredTile(TILE_ADDXY(tile, 1, 1))) DrawGroundSprite(SPR_CANALS_BASE + 57 + 9); break; + } // left corner - if ((wa & 12) == 0) DrawGroundSprite(SPR_CANALS_BASE + 57 + 6); - else if ((wa & 12) == 12 && !IsWateredTile(TILE_ADDXY(tile, 1, -1))) DrawGroundSprite(SPR_CANALS_BASE + 57 + 10); + switch (wa & 0x0C) { + case 0: DrawGroundSprite(SPR_CANALS_BASE + 57 + 6); break; + case 12: if (!IsWateredTile(TILE_ADDXY(tile, 1, -1))) DrawGroundSprite(SPR_CANALS_BASE + 57 + 10); break; + } // upper corner - if ((wa & 9) == 0) DrawGroundSprite(SPR_CANALS_BASE + 57 + 7); - else if ((wa & 9) == 9 && !IsWateredTile(TILE_ADDXY(tile, -1, -1))) DrawGroundSprite(SPR_CANALS_BASE + 57 + 11); + switch (wa & 0x09) { + case 0: DrawGroundSprite(SPR_CANALS_BASE + 57 + 7); break; + case 9: if (!IsWateredTile(TILE_ADDXY(tile, -1, -1))) DrawGroundSprite(SPR_CANALS_BASE + 57 + 11); break; + } } typedef struct LocksDrawTileStruct { @@ -403,12 +411,10 @@ uint32 palette, uint base ) { - uint32 image; - DrawGroundSprite(wdts++->image); for (; wdts->delta_x != 0x80; wdts++) { - image = wdts->image + base; + uint32 image = wdts->image + base; if (_display_opt & DO_TRANS_BUILDINGS) { MAKE_TRANSPARENT(image); } else { @@ -624,7 +630,6 @@ // called from tunnelbridge_cmd void TileLoop_Water(TileIndex tile) { - int i; static const TileIndexDiffC _tile_loop_offs_array[][5] = { // tile to mod shore? shore? {{-1, 0}, {0, 0}, {0, 1}, {-1, 0}, {-1, 1}}, @@ -635,6 +640,8 @@ if (IS_INT_INSIDE(TileX(tile), 1, MapSizeX() - 3 + 1) && IS_INT_INSIDE(TileY(tile), 1, MapSizeY() - 3 + 1)) { + uint i; + for (i = 0; i != lengthof(_tile_loop_offs_array); i++) { TileLoopWaterHelper(tile, _tile_loop_offs_array[i]); }
--- a/window.c +++ b/window.c @@ -1144,8 +1144,8 @@ static bool HandleViewportScroll(void) { Window *w; - ViewPort *vp; - int dx,dy, x, y, sub; + int dx; + int dy; if (!_scrolling_viewport) return true; @@ -1168,17 +1168,18 @@ } if (w->window_class != WC_SMALLMAP) { - vp = IsPtInWindowViewport(w, _cursor.pos.x, _cursor.pos.y); + ViewPort* vp = IsPtInWindowViewport(w, _cursor.pos.x, _cursor.pos.y); + if (vp == NULL) goto stop_capt; WP(w,vp_d).scrollpos_x += dx << vp->zoom; WP(w,vp_d).scrollpos_y += dy << vp->zoom; - _cursor.delta.x = _cursor.delta.y = 0; - return false; } else { - // scroll the smallmap ? + int x; + int y; + int sub; int hx; int hy; int hvx; @@ -1233,11 +1234,12 @@ WP(w,smallmap_d).scroll_y = y; WP(w,smallmap_d).subscroll = sub; - _cursor.delta.x = _cursor.delta.y = 0; + SetWindowDirty(w); + } - SetWindowDirty(w); - return false; - } + _cursor.delta.x = 0; + _cursor.delta.y = 0; + return false; } static Window *MaybeBringWindowToFront(Window *w) @@ -1376,7 +1378,7 @@ w = FindWindowFromPt(x, y); if (w == NULL || w->flags4 & WF_DISABLE_VP_SCROLL) return; vp = IsPtInWindowViewport(w, x, y); - if (vp) { + if (vp != NULL) { x -= vp->left; y -= vp->top; //here allows scrolling in both x and y axis @@ -1662,26 +1664,40 @@ IConsoleResize(); - if (w->window_class == WC_MAIN_TOOLBAR) { - top = w->top; - left = PositionMainToolbar(w); // changes toolbar orientation - } else if (w->window_class == WC_SELECT_GAME || w->window_class == WC_GAME_OPTIONS || w->window_class == WC_NETWORK_WINDOW){ - top = (newh - w->height) >> 1; - left = (neww - w->width) >> 1; - } else if (w->window_class == WC_NEWS_WINDOW) { - top = newh - w->height; - left = (neww - w->width) >> 1; - } else if (w->window_class == WC_STATUS_BAR) { - top = newh - w->height; - left = (neww - w->width) >> 1; - } else if (w->window_class == WC_SEND_NETWORK_MSG) { - top = (newh - 26); // 26 = height of status bar + height of chat bar - left = (neww - w->width) >> 1; - } else { - left = w->left; - if (left + (w->width>>1) >= neww) left = neww - w->width; - top = w->top; - if (top + (w->height>>1) >= newh) top = newh - w->height; + switch (w->window_class) { + case WC_MAIN_TOOLBAR: + top = w->top; + left = PositionMainToolbar(w); // changes toolbar orientation + break; + + case WC_SELECT_GAME: + case WC_GAME_OPTIONS: + case WC_NETWORK_WINDOW: + top = (newh - w->height) >> 1; + left = (neww - w->width) >> 1; + break; + + case WC_NEWS_WINDOW: + top = newh - w->height; + left = (neww - w->width) >> 1; + break; + + case WC_STATUS_BAR: + top = newh - w->height; + left = (neww - w->width) >> 1; + break; + + case WC_SEND_NETWORK_MSG: + top = (newh - 26); // 26 = height of status bar + height of chat bar + left = (neww - w->width) >> 1; + break; + + default: + left = w->left; + if (left + (w->width >> 1) >= neww) left = neww - w->width; + top = w->top; + if (top + (w->height >> 1) >= newh) top = newh - w->height; + break; } if (w->viewport != NULL) {