road_cmd.c
changeset 2690 2f810b43cb7f
parent 2639 8a7342eb3a78
child 2709 d059af96a25b
equal deleted inserted replaced
2689:9b010b734253 2690:2f810b43cb7f
    15 #include "gfx.h"
    15 #include "gfx.h"
    16 #include "sound.h"
    16 #include "sound.h"
    17 #include "depot.h"
    17 #include "depot.h"
    18 #include "pbs.h"
    18 #include "pbs.h"
    19 #include "debug.h"
    19 #include "debug.h"
       
    20 #include "ai/ai_event.h"
    20 
    21 
    21 /* When true, GetTrackStatus for roads will treat roads under reconstruction
    22 /* When true, GetTrackStatus for roads will treat roads under reconstruction
    22  * as normal roads instead of impassable. This is used when detecting whether
    23  * as normal roads instead of impassable. This is used when detecting whether
    23  * a road can be removed. This is of course ugly, but I don't know a better
    24  * a road can be removed. This is of course ugly, but I don't know a better
    24  * solution just like that... */
    25  * solution just like that... */
   669 			MP_SETTYPE(MP_STREET) |
   670 			MP_SETTYPE(MP_STREET) |
   670 			MP_MAPOWNER_CURRENT | MP_MAP5,
   671 			MP_MAPOWNER_CURRENT | MP_MAP5,
   671 			(p1 | 0x20) /* map5 */
   672 			(p1 | 0x20) /* map5 */
   672 		);
   673 		);
   673 
   674 
       
   675 		ai_event(_current_player, ottd_Event_BuildDepot, dep->index, tile);
       
   676 		ai_event(_current_player, ottd_Event_BuildRoadDepot, dep->index, tile);
   674 	}
   677 	}
   675 	return cost + _price.build_road_depot;
   678 	return cost + _price.build_road_depot;
   676 }
   679 }
   677 
   680 
   678 static int32 RemoveRoadDepot(TileIndex tile, uint32 flags)
   681 static int32 RemoveRoadDepot(TileIndex tile, uint32 flags)
  1154 		}
  1157 		}
  1155 	} else if (GB(_m[tile].m5, 4, 4) == 2) {
  1158 	} else if (GB(_m[tile].m5, 4, 4) == 2) {
  1156 		if (v->type == VEH_Road && v->u.road.frame == 11) {
  1159 		if (v->type == VEH_Road && v->u.road.frame == 11) {
  1157 			if (_roadveh_enter_depot_unk0[GB(_m[tile].m5, 0, 2)] == v->u.road.state) {
  1160 			if (_roadveh_enter_depot_unk0[GB(_m[tile].m5, 0, 2)] == v->u.road.state) {
  1158 				RoadVehEnterDepot(v);
  1161 				RoadVehEnterDepot(v);
       
  1162 
       
  1163 				ai_event(v->owner, ottd_Event_VehicleEnterDepot, v->index, tile);
       
  1164 				ai_event(v->owner, ottd_Event_RoadVehicleEnterDepot, v->index, tile);
       
  1165 
  1159 				return 4;
  1166 				return 4;
  1160 			}
  1167 			}
  1161 		}
  1168 		}
  1162 	}
  1169 	}
  1163 	return 0;
  1170 	return 0;