//-------- Begin of function World::generate_map2 ----------// // void World::generate_map2() { gen_dirt(25,10,15); game.disp_gen_game_status(5); //---------------------------------// plant_init(60, 2); game.disp_gen_game_status(10); //---------------------------------// init_fire(); game.disp_gen_game_status(5); //----- debug code: validate terrain_id -----// #ifdef DEBUG Location* locPtr = loc_matrix; for( int i=0 ; i<MAX_WORLD_X_LOC*MAX_WORLD_Y_LOC ; i++, locPtr++ ) { err_when( locPtr->terrain_id < 1 || locPtr->terrain_id > terrain_res.terrain_count ); } #endif }
/* Function block execution function */ void plantrun(plant* me) { me->_output.events = 0; for (;;) { switch (me->_state) { case 0: // State: Start if (!me->_entered) { plant_init(me); me->_output.event.update = 1; me->_entered = true; } else { me->_state = 1; me->_entered = false; continue; } break; case 1: // State: State1 if (!me->_entered) { plant_norod(me); me->_output.event.update = 1; me->_entered = true; } else { if (me->_input.event.add2) { me->_state = 2; me->_entered = false; continue; } else if (me->_input.event.add1) { me->_state = 5; me->_entered = false; continue; } else { me->_state = 1; me->_entered = false; continue; } } break; case 2: // State: State6 if (!me->_entered) { plant_initval2(me); me->_entered = true; } else { me->_state = 3; me->_entered = false; continue; } break; case 3: // State: State3 if (!me->_entered) { plant_rod2(me); me->_output.event.update = 1; me->_entered = true; } else { if (me->_input.event.remove2) { me->_state = 4; me->_entered = false; continue; } else { me->_state = 3; me->_entered = false; continue; } } break; case 4: // State: State5 if (!me->_entered) { plant_initvalno(me); me->_entered = true; } else { me->_state = 1; me->_entered = false; continue; } break; case 5: // State: State4 if (!me->_entered) { plant_initval1(me); me->_entered = true; } else { me->_state = 6; me->_entered = false; continue; } break; case 6: // State: State2 if (!me->_entered) { plant_rod1(me); me->_output.event.update = 1; me->_entered = true; } else { if (me->_input.event.remove1) { me->_state = 4; me->_entered = false; continue; } else { me->_state = 6; me->_entered = false; continue; } } break; } break; } if (me->_output.event.update) { me->_x = me->x; } me->_input.events = 0; }