Index: client/control.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/client/control.c,v retrieving revision 1.72 diff -u -r1.72 control.c --- client/control.c 2002/02/26 19:57:07 1.72 +++ client/control.c 2002/03/13 10:13:07 @@ -619,7 +619,7 @@ struct unit req_unit; req_unit=*punit; req_unit.activity=act; - req_unit.activity_target=0; + req_unit.activity_target = S_NO_SPECIAL; send_unit_info(&req_unit); } @@ -627,7 +627,7 @@ ... **************************************************************************/ void request_new_unit_activity_targeted(struct unit *punit, enum unit_activity act, - int tgt) + enum tile_special_type tgt) { struct unit req_unit; req_unit=*punit; @@ -652,7 +652,7 @@ info.type=punit->type; info.movesleft=punit->moves_left; info.activity=ACTIVITY_IDLE; - info.activity_target=0; + info.activity_target = S_NO_SPECIAL; info.select_it = TRUE; info.packet_use = UNIT_INFO_IDENTITY; @@ -684,17 +684,14 @@ **************************************************************************/ void request_unit_pillage(struct unit *punit) { - struct tile * ptile; - int pspresent; - int psworking; - int what; - int would; - - ptile = map_get_tile(punit->x, punit->y); - pspresent = get_tile_infrastructure_set(ptile); - psworking = get_unit_tile_pillage_set(punit->x, punit->y); - what = get_preferred_pillage(pspresent & (~psworking)); - would = what | map_get_infrastructure_prerequisite (what); + struct tile *ptile = map_get_tile(punit->x, punit->y); + enum tile_special_type pspresent = get_tile_infrastructure_set(ptile); + enum tile_special_type psworking = + get_unit_tile_pillage_set(punit->x, punit->y); + enum tile_special_type what = + get_preferred_pillage(pspresent & (~psworking)); + enum tile_special_type would = + what | map_get_infrastructure_prerequisite(what); if ((game.rgame.pillage_select) && ((pspresent & (~(psworking | would))) != S_NO_SPECIAL)) { Index: client/control.h =================================================================== RCS file: /home/freeciv/CVS/freeciv/client/control.h,v retrieving revision 1.27 diff -u -r1.27 control.h --- client/control.h 2002/02/19 16:41:17 1.27 +++ client/control.h 2002/03/13 10:13:07 @@ -40,8 +40,9 @@ void request_center_focus_unit(void); void request_move_unit_direction(struct unit *punit, int dir); void request_new_unit_activity(struct unit *punit, enum unit_activity act); -void request_new_unit_activity_targeted(struct unit *punit, enum unit_activity act, - int tgt); +void request_new_unit_activity_targeted(struct unit *punit, + enum unit_activity act, + enum tile_special_type tgt); void request_unit_auto(struct unit *punit); void request_unit_build_city(struct unit *punit); void request_unit_caravan_action(struct unit *punit, enum packet_type action); Index: common/packets.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/common/packets.c,v retrieving revision 1.198 diff -u -r1.198 packets.c --- common/packets.c 2002/03/08 18:01:51 1.198 +++ common/packets.c 2002/03/13 10:13:13 @@ -2636,7 +2636,7 @@ iget_uint8(&iter, &packet->activity_count); iget_uint8(&iter, &packet->goto_dest_x); iget_uint8(&iter, &packet->goto_dest_y); - iget_uint16(&iter, &packet->activity_target); + iget_uint16(&iter, (int *) &packet->activity_target); iget_uint8(&iter, &packet->packet_use); iget_uint16(&iter, &packet->info_city_id); iget_uint16(&iter, &packet->serial_num); Index: common/packets.h =================================================================== RCS file: /home/freeciv/CVS/freeciv/common/packets.h,v retrieving revision 1.109 diff -u -r1.109 packets.h --- common/packets.h 2002/03/05 10:14:20 1.109 +++ common/packets.h 2002/03/13 10:13:14 @@ -309,7 +309,7 @@ bool ai; int fuel; int goto_dest_x, goto_dest_y; - int activity_target; + enum tile_special_type activity_target; bool paradropped; bool connecting; /* in packet only, not in unit struct */ Index: common/unit.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/common/unit.c,v retrieving revision 1.154 diff -u -r1.154 unit.c --- common/unit.c 2002/02/26 16:58:13 1.154 +++ common/unit.c 2002/03/13 10:13:15 @@ -580,7 +580,7 @@ bool can_unit_continue_current_activity(struct unit *punit) { enum unit_activity current = punit->activity; - int target = punit->activity_target; + enum tile_special_type target = punit->activity_target; int current2 = current == ACTIVITY_FORTIFIED ? ACTIVITY_FORTIFYING : current; bool result; @@ -588,7 +588,7 @@ return can_unit_do_connect(punit, current); punit->activity = ACTIVITY_IDLE; - punit->activity_target = 0; + punit->activity_target = S_NO_SPECIAL; result = can_unit_do_activity_targeted(punit, current2, target); @@ -603,7 +603,7 @@ **************************************************************************/ bool can_unit_do_activity(struct unit *punit, enum unit_activity activity) { - return can_unit_do_activity_targeted(punit, activity, 0); + return can_unit_do_activity_targeted(punit, activity, S_NO_SPECIAL); } /************************************************************************** @@ -612,7 +612,8 @@ as it would be a ajor CPU hog. **************************************************************************/ bool can_unit_do_activity_targeted(struct unit *punit, - enum unit_activity activity, int target) + enum unit_activity activity, + enum tile_special_type target) { struct player *pplayer; struct tile *ptile; @@ -778,7 +779,7 @@ { punit->activity=new_activity; punit->activity_count=0; - punit->activity_target=0; + punit->activity_target = S_NO_SPECIAL; punit->connecting = FALSE; } @@ -786,7 +787,8 @@ assign a new targeted task to a unit. **************************************************************************/ void set_unit_activity_targeted(struct unit *punit, - enum unit_activity new_activity, int new_target) + enum unit_activity new_activity, + enum tile_special_type new_target) { punit->activity=new_activity; punit->activity_count=0; @@ -811,7 +813,7 @@ **************************************************************************/ int get_unit_tile_pillage_set(int x, int y) { - int tgt_ret = S_NO_SPECIAL; + enum tile_special_type tgt_ret = S_NO_SPECIAL; unit_list_iterate(map_get_tile(x, y)->units, punit) if(punit->activity==ACTIVITY_PILLAGE) tgt_ret |= punit->activity_target; @@ -903,7 +905,7 @@ case ACTIVITY_PATROL: return get_activity_text (punit->activity); case ACTIVITY_PILLAGE: - if(punit->activity_target == 0) { + if(punit->activity_target == S_NO_SPECIAL) { return get_activity_text (punit->activity); } else { my_snprintf(text, sizeof(text), "%s: %s", Index: common/unit.h =================================================================== RCS file: /home/freeciv/CVS/freeciv/common/unit.h,v retrieving revision 1.86 diff -u -r1.86 unit.h --- common/unit.h 2002/03/13 09:56:23 1.86 +++ common/unit.h 2002/03/13 10:13:15 @@ -123,7 +123,7 @@ enum unit_activity activity; int goto_dest_x, goto_dest_y; int activity_count; - int activity_target; + enum tile_special_type activity_target; enum unit_focus_status focus_status; int ord_map, ord_city; /* ord_map and ord_city are the order index of this unit in tile.units @@ -196,10 +196,12 @@ bool can_unit_continue_current_activity(struct unit *punit); bool can_unit_do_activity(struct unit *punit, enum unit_activity activity); bool can_unit_do_activity_targeted(struct unit *punit, - enum unit_activity activity, int target); + enum unit_activity activity, + enum tile_special_type target); void set_unit_activity(struct unit *punit, enum unit_activity new_activity); void set_unit_activity_targeted(struct unit *punit, - enum unit_activity new_activity, int new_target); + enum unit_activity new_activity, + enum tile_special_type new_target); bool can_unit_do_auto(struct unit *punit); bool is_unit_activity_on_tile(enum unit_activity activity, int x, int y); int get_unit_tile_pillage_set(int x, int y); Index: server/savegame.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/server/savegame.c,v retrieving revision 1.71 diff -u -r1.71 savegame.c --- server/savegame.c 2002/03/08 15:14:08 1.71 +++ server/savegame.c 2002/03/13 10:13:17 @@ -956,9 +956,9 @@ punit->activity_count=secfile_lookup_int(file, "player%d.u%d.activity_count", plrno, i); - punit->activity_target=secfile_lookup_int_default(file, 0, - "player%d.u%d.activity_target", - plrno, i); + punit->activity_target = + secfile_lookup_int_default(file, S_NO_SPECIAL, + "player%d.u%d.activity_target", plrno, i); punit->connecting=secfile_lookup_bool_default(file, FALSE, "player%d.u%d.connecting", Index: server/unithand.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/server/unithand.c,v retrieving revision 1.221 diff -u -r1.221 unithand.c --- server/unithand.c 2002/03/05 10:44:44 1.221 +++ server/unithand.c 2002/03/13 10:13:18 @@ -1280,8 +1280,9 @@ switch (punit->activity) { case ACTIVITY_IDLE: if (old_activity == ACTIVITY_PILLAGE) { - int prereq = map_get_infrastructure_prerequisite(old_target); - if (prereq != 0) { + enum tile_special_type prereq = + map_get_infrastructure_prerequisite(old_target); + if (prereq != S_NO_SPECIAL) { unit_list_iterate (map_get_tile(punit->x, punit->y)->units, punit2) if ((punit2->activity == ACTIVITY_PILLAGE) && (punit2->activity_target == prereq)) { @@ -1317,7 +1318,7 @@ { if (can_unit_do_activity(punit, new_activity)) { enum unit_activity old_activity = punit->activity; - int old_target = punit->activity_target; + enum tile_special_type old_target = punit->activity_target; set_unit_activity(punit, new_activity); if (punit->pgr) { free(punit->pgr->pos); @@ -1332,13 +1333,14 @@ /************************************************************************** ... **************************************************************************/ -void handle_unit_activity_request_targeted(struct unit *punit, +void handle_unit_activity_request_targeted(struct unit *punit, enum unit_activity new_activity, - int new_target, bool select_unit) + enum tile_special_type new_target, + bool select_unit) { if (can_unit_do_activity_targeted(punit, new_activity, new_target)) { enum unit_activity old_activity = punit->activity; - int old_target = punit->activity_target; + enum tile_special_type old_target = punit->activity_target; set_unit_activity_targeted(punit, new_activity, new_target); if (punit->pgr) { Index: server/unithand.h =================================================================== RCS file: /home/freeciv/CVS/freeciv/server/unithand.h,v retrieving revision 1.31 diff -u -r1.31 unithand.h --- server/unithand.h 2002/02/14 15:17:40 1.31 +++ server/unithand.h 2002/03/13 10:13:18 @@ -52,7 +52,8 @@ enum unit_activity new_activity); void handle_unit_activity_request_targeted(struct unit *punit, enum unit_activity new_activity, - int new_target, bool select_unit); + enum tile_special_type new_target, + bool select_unit); void handle_unit_unload_request(struct player *pplayer, struct packet_unit_request *req); void handle_unit_nuke(struct player *pplayer, Index: server/unittools.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/server/unittools.c,v retrieving revision 1.167 diff -u -r1.167 unittools.c --- server/unittools.c 2002/03/13 09:56:26 1.167 +++ server/unittools.c 2002/03/13 10:13:20 @@ -653,15 +653,12 @@ Calculate the total amount of activity performed by all units on a tile for a given task and target. **************************************************************************/ -static int total_activity_targeted (int x, int y, - enum unit_activity act, - int tgt) +static int total_activity_targeted(int x, int y, enum unit_activity act, + enum tile_special_type tgt) { - struct tile *ptile; int total = 0; - ptile = map_get_tile (x, y); - unit_list_iterate (ptile->units, punit) + unit_list_iterate (map_get_tile (x, y)->units, punit) if ((punit->activity == act) && (punit->activity_target == tgt)) total += punit->activity_count; unit_list_iterate_end; @@ -811,7 +808,7 @@ } if (activity==ACTIVITY_PILLAGE) { - if (punit->activity_target == 0) { /* case for old save files */ + if (punit->activity_target == S_NO_SPECIAL) { /* case for old save files */ if (punit->activity_count >= 1) { int what = get_preferred_pillage( @@ -842,7 +839,7 @@ } else if (total_activity_targeted (punit->x, punit->y, ACTIVITY_PILLAGE, punit->activity_target) >= 1) { - int what_pillaged = punit->activity_target; + enum tile_special_type what_pillaged = punit->activity_target; map_clear_special(punit->x, punit->y, what_pillaged); unit_list_iterate (map_get_tile(punit->x, punit->y)->units, punit2) if ((punit2->activity == ACTIVITY_PILLAGE) &&