static int _define_station(lua_State *L, SpaceStationType &station) { station.id = s_currentStationFile; LUA_DEBUG_START(L); LuaTable t(L, -1); station.modelName = t.Get<std::string>("model"); station.angVel = t.Get("angular_velocity", 0.f); station.parkingDistance = t.Get("parking_distance", 5000.f); station.parkingGapSize = t.Get("parking_gap_size", 2000.f); station.shipLaunchStage = t.Get<int>("ship_launch_stage"); _get_bay_ids(L, "bay_groups", station.bayGroups, station.numDockingPorts); _get_stage_durations(L, "dock_anim_stage_duration", station.numDockingStages, &station.dockAnimStageDuration); _get_stage_durations(L, "undock_anim_stage_duration", station.numUndockStages, &station.undockAnimStageDuration); LUA_DEBUG_END(L, 0); assert(!station.modelName.empty()); station.model = Pi::FindModel(station.modelName); station.OnSetupComplete(); return 0; }
static int _define_station(lua_State *L, SpaceStationType &station) { station.id = s_currentStationFile; LUA_DEBUG_START(L); _get_string(L, "model", station.modelName); _get_int(L, "num_docking_ports", station.numDockingPorts); _get_bool(L, "dock_one_at_a_time", station.dockOneAtATimePlease, false); _get_float(L, "angular_velocity", station.angVel, 0.f); _get_float(L, "parking_distance", station.parkingDistance, 5000.f); _get_float(L, "parking_gap_size", station.parkingGapSize, 2000.f); _get_stage_durations(L, "dock_anim_stage_duration", station.numDockingStages, &station.dockAnimStageDuration); _get_stage_durations(L, "undock_anim_stage_duration", station.numUndockStages, &station.undockAnimStageDuration); _get_int(L, "ship_launch_stage", station.shipLaunchStage); station.dockAnimFunction = _set_global_function(L, "ship_dock_anim", station.id.c_str()); station.approachWaypointsFunction = _set_global_function(L, "ship_approach_waypoints", station.id.c_str()); LUA_DEBUG_END(L, 0); assert(!station.modelName.empty()); assert(!station.dockAnimFunction.empty()); assert(!station.approachWaypointsFunction.empty()); station.model = Pi::FindModel(station.modelName); return 0; }