switch(game_state){
case train.prep:
text_state = "prep"
supply_runner = 0;
oSupplyArea.yield_rate = 180;
break;
case train.drop_off:
last_pos_count--;
if(last_pos_count<=0){
last_pos_count = 5;
last_pos = [x,y];
}
text_state = "drop off"
if(mp_grid_path(tg.track_path_grid,track_path,x,y,tg.supply_pos[0],tg.supply_pos[1],false)){
path_start(track_path,run_speed,path_action_continue,0);
}
if(path_position>=0.75){
mp_grid_add_rectangle(tg.track_path_grid,0,0,room_width,room_height);
for(var _x=tg.midx;_x<tg.grid_width;_x++){
for(var _y=0;_y<tg.grid_height;_y++){
if(tg.track_grid[# _x,_y]){
mp_grid_clear_cell(tg.track_path_grid,_x,_y)
}
}
}
game_state = train.dropping;
}
break;
case train.dropping:
text_state = "dropping";
if(supply_runner!=0){
wait_timer--;
if(wait_timer<=0){
wait_timer = 120;
game_state = train.roundabout;
}
}
break;
case train.roundabout:
last_pos_count--;
if(last_pos_count<=0){
last_pos_count = 5;
last_pos = [x,y];
}
text_state = "roundabout"
if(state){
if(mp_grid_path(tg.track_path_grid,track_path,x,y,tg.base_pos[0],tg.base_pos[1],false)){
path_start(track_path,run_speed,path_action_stop,0);
}
}else{
if(mp_grid_path(tg.track_path_grid,track_path,x,y,tg.supply_pos[0],tg.supply_pos[1],false)){
path_start(track_path,run_speed,path_action_stop,0);
}
}
if(path_position>=0.75){
state = !state;
if(state){//going to base camp
//cover right
mp_grid_add_rectangle(tg.track_path_grid,tg.midx*16,0,room_width,room_height);
for(var _x=0;_x<tg.midx+1;_x++){
for(var _y=0;_y<tg.grid_height;_y++){
if(tg.track_grid[# _x,_y]){
mp_grid_clear_cell(tg.track_path_grid,_x,_y)
}
}
}
roundabout_passes++;
if(roundabout_passes==2){
roundabout_passes = 0;
state = 0;
game_state = train.picking;
}
}else{//going to supply area
//cover left
mp_grid_add_rectangle(tg.track_path_grid,(tg.midx+1)*16,0,0,room_height);
for(var _x=tg.midx;_x<tg.grid_width;_x++){
for(var _y=0;_y<tg.grid_height;_y++){
if(tg.track_grid[# _x,_y]){
mp_grid_clear_cell(tg.track_path_grid,_x,_y)
}
}
}
}
}
break;
case train.picking:
text_state = "picking"
wait_timer--;
if(wait_timer<=0){
wait_timer = 120;
game_state = train.final_trip;
for(var i=0;i<4;i++){
oBaseCamp.resource_values[|i] = clamp(oBaseCamp.resource_values[|i]+oSupplyArea.yield[|i],0,10)
}
}
break;
case train.final_trip:
last_pos_count--;
if(last_pos_count<=0){
last_pos_count = 5;
last_pos = [x,y];
}
text_state = "final_trip";
if(mp_grid_path(tg.track_path_grid,track_path,x,y,tg.base_pos[0],tg.base_pos[1],false)){
path_start(track_path,run_speed,path_action_stop,0);
}
if(path_position>=0.75){
mp_grid_add_rectangle(tg.track_path_grid,(tg.midx+1)*16,0,0,room_height);
for(var _x=tg.midx;_x<tg.grid_width;_x++){
for(var _y=0;_y<tg.grid_height;_y++){
if(tg.track_grid[# _x,_y]){
mp_grid_clear_cell(tg.track_path_grid,_x,_y)
}
}
}
game_state = train.prep;
oBaseCamp.runs++;
}
break;
}