Implement dynamic clientless free-flight travel
Integrate transient flight alternatives with graph routing, native flying mounts, phased terrain and collision checks, bounded avoidance and confirmed landing. Add safe-return recovery, node and location integration, profile settings, diagnostic commands, regression tests and flight documentation.
This commit is contained in:
1 parent
4474714c00
commit
8df9591c99
21 files changed
+1536
-16
No files matched your search
@@ -174,11 +174,11 @@ std::unordered_map<std::string, float> ReadFloatDictionary(lua_State* L, int tab
|
||||
return out;
|
||||
}
|
||||
|
||||
std::vector<ClientlessWeightedMount> ReadMountDictionary(lua_State* L, int movementTable)
|
||||
std::vector<ClientlessWeightedMount> ReadMountDictionary(lua_State* L, int movementTable, char const* field = "ground_mounts")
|
||||
{
|
||||
std::vector<ClientlessWeightedMount> mounts;
|
||||
movementTable = lua_absindex(L, movementTable);
|
||||
lua_getfield(L, movementTable, "ground_mounts");
|
||||
lua_getfield(L, movementTable, field);
|
||||
if (!lua_istable(L, -1))
|
||||
{
|
||||
lua_pop(L, 1);
|
||||
@@ -371,6 +371,8 @@ bool ClientlessLuaEngine::LoadAdventureProfile(Player* player)
|
||||
profile.GroundMountSpeedRate = std::max(1.0f,
|
||||
ReadFloatField(_state, -1, "ground_mount_speed_rate", 1.6f));
|
||||
profile.GroundMounts = ReadMountDictionary(_state, -1);
|
||||
profile.CanFreeFly = ReadBoolField(_state, -1, "can_free_fly", false);
|
||||
profile.FlightMounts = ReadMountDictionary(_state, -1, "flight_mounts");
|
||||
}
|
||||
lua_pop(_state, 1);
|
||||
|
||||
|
||||
Reference in new issue
Block a user