Example #1
0
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;
}