move most of the registration code to Lua, include harmony, add useful perf methods to Time and a more useful(but still useless) error handling in the hook call

This commit is contained in:
Evil Factory
2021-11-04 11:30:36 -03:00
parent 2048389896
commit a8a0c96d57
15 changed files with 481 additions and 229 deletions
+11
View File
@@ -0,0 +1,11 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "MoonSharp Attach",
"type": "moonsharp-debug",
"debugServer": 41912,
"request": "attach"
}
]
}
+39
View File
@@ -0,0 +1,39 @@
{
"Lua.diagnostics.globals": [
"Game",
"Player",
"Random",
"Hook",
"Timer",
"bit32",
"TotalTime",
"DoFile",
"WayPoint",
"SpawnType",
"Level",
"Submarine",
"Vector2",
"PositionType",
"ServerLog_MessageType",
"Character",
"TraitorMessageType",
"ChatMessageType",
"CauseOfDeathType",
"CreateVector2",
"Item",
"ChatMessage",
"AfflictionPrefab",
"Gap",
"File",
"Networking",
"printNoLog",
"Client",
"SERVER",
"setmodulepaths",
"Type",
"BindingFlags",
"UserData",
"LuaUserData",
"CLIENT"
]
}
@@ -0,0 +1,56 @@
local defaultLib = {}
require("DefaultRegister")
local CreateStatic = function (typeName)
return LuaUserData.CreateStatic("Barotrauma." .. typeName)
end
defaultLib["WayPoint"] = CreateStatic("WayPoint")
defaultLib["SpawnType"] = CreateStatic("SpawnType")
defaultLib["ChatMessageType"] = CreateStatic("Networking.ChatMessageType")
defaultLib["ServerLog_MessageType"] = CreateStatic("Networking.ServerLog+MessageType")
defaultLib["ServerLogMessageType"] = CreateStatic("Networking.ServerLog+MessageType")
defaultLib["Submarine"] = CreateStatic("Submarine")
defaultLib["Client"] = CreateStatic("Networking.Client")
defaultLib["Character"] = CreateStatic("Character")
defaultLib["CharacterInfo"] = CreateStatic("CharacterInfo")
defaultLib["Item"] = CreateStatic("Item")
defaultLib["ItemPrefab"] = CreateStatic("ItemPrefab")
defaultLib["Level"] = CreateStatic("Level")
defaultLib["PositionType"] = CreateStatic("Level+PositionType")
defaultLib["JobPrefab"] = CreateStatic("JobPrefab")
defaultLib["TraitorMessageType"] = CreateStatic("Networking.TraitorMessageType")
defaultLib["CauseOfDeathType"] = CreateStatic("CauseOfDeathType")
defaultLib["AfflictionPrefab"] = CreateStatic("AfflictionPrefab")
defaultLib["CharacterTeamType"] = CreateStatic("CharacterTeamType")
defaultLib["Vector2"] = LuaUserData.RegisterType("Microsoft.Xna.Framework.Vector2")
defaultLib["Vector3"] = LuaUserData.RegisterType("Microsoft.Xna.Framework.Vector3")
defaultLib["Vector4"] = LuaUserData.RegisterType("Microsoft.Xna.Framework.Vector4")
defaultLib["Color"] = LuaUserData.RegisterType("Microsoft.Xna.Framework.Color")
defaultLib["Point"] = LuaUserData.RegisterType("Microsoft.Xna.Framework.Point")
defaultLib["ChatMessage"] = CreateStatic("Networking.ChatMessage")
defaultLib["Hull"] = CreateStatic("Hull")
defaultLib["InvSlotType"] = CreateStatic("InvSlotType")
defaultLib["Gap"] = CreateStatic("Gap")
defaultLib["ContentPackage"] = CreateStatic("ContentPackage")
defaultLib["ClientPermissions"] = CreateStatic("Networking.ClientPermissions")
defaultLib["Signal"] = CreateStatic("Items.Components.Signal")
defaultLib["DeliveryMethod"] = CreateStatic("Networking.DeliveryMethod")
defaultLib["ClientPacketHeader"] = CreateStatic("Networking.ClientPacketHeader")
defaultLib["ServerPacketHeader"] = CreateStatic("Networking.ServerPacketHeader")
defaultLib["RandSync"] = CreateStatic("Rand+RandSync")
defaultLib["SubmarineInfo"] = CreateStatic("SubmarineInfo")
defaultLib["Rectangle"] = LuaUserData.RegisterType("Microsoft.Xna.Framework.Rectangle")
defaultLib["Entity"] = CreateStatic("Entity")
defaultLib["Physics"] = CreateStatic("Physics")
if SERVER then
elseif CLIENT then
defaultLib["Sprite"] = CreateStatic("Sprite")
defaultLib["Keys"] = LuaUserData.RegisterType("Microsoft.Xna.Framework.Input.Keys")
defaultLib["PlayerInput"] = CreateStatic("PlayerInput")
end
return defaultLib
@@ -0,0 +1,157 @@
local function RegisterBarotrauma(typeName)
return LuaUserData.RegisterType("Barotrauma." .. typeName)
end
local AddCallMetaMember = LuaUserData.AddCallMetaMember
RegisterBarotrauma("CauseOfDeathType")
RegisterBarotrauma("Level+InterestingPosition")
RegisterBarotrauma("Level+PositionType")
RegisterBarotrauma("Networking.TraitorMessageType")
RegisterBarotrauma("SpawnType")
RegisterBarotrauma("Networking.ChatMessageType")
RegisterBarotrauma("InputType")
RegisterBarotrauma("Job")
RegisterBarotrauma("JobPrefab")
RegisterBarotrauma("Level")
RegisterBarotrauma("Items.Components.Steering")
RegisterBarotrauma("Networking.ServerLog+MessageType")
RegisterBarotrauma("WayPoint")
RegisterBarotrauma("Character")
RegisterBarotrauma("Item")
RegisterBarotrauma("Submarine")
RegisterBarotrauma("Networking.Client")
RegisterBarotrauma("AfflictionPrefab")
RegisterBarotrauma("Affliction")
RegisterBarotrauma("CharacterHealth")
RegisterBarotrauma("AnimController")
RegisterBarotrauma("Limb")
RegisterBarotrauma("Ragdoll")
RegisterBarotrauma("Networking.ChatMessage")
RegisterBarotrauma("CharacterHealth+LimbHealth")
RegisterBarotrauma("AttackResult")
RegisterBarotrauma("Entity")
RegisterBarotrauma("EntitySpawner")
RegisterBarotrauma("MapEntity")
RegisterBarotrauma("MapEntityPrefab")
RegisterBarotrauma("CauseOfDeath")
RegisterBarotrauma("CharacterTeamType")
RegisterBarotrauma("Items.Components.Connection")
RegisterBarotrauma("CharacterInventory")
RegisterBarotrauma("Hull")
RegisterBarotrauma("Gap")
RegisterBarotrauma("PhysicsBody")
RegisterBarotrauma("InvSlotType")
RegisterBarotrauma("ItemPrefab")
RegisterBarotrauma("SerializableProperty")
RegisterBarotrauma("StatusEffect")
RegisterBarotrauma("FireSource")
RegisterBarotrauma("ContentPackage")
RegisterBarotrauma("SubmarineBody")
RegisterBarotrauma("Explosion")
RegisterBarotrauma("Networking.ServerSettings")
RegisterBarotrauma("Inventory")
RegisterBarotrauma("ItemInventory")
RegisterBarotrauma("Items.Components.Fabricator")
RegisterBarotrauma("Items.Components.ItemComponent")
RegisterBarotrauma("Items.Components.WifiComponent")
RegisterBarotrauma("Items.Components.LightComponent")
RegisterBarotrauma("Items.Components.Holdable")
RegisterBarotrauma("Items.Components.CustomInterface")
RegisterBarotrauma("Items.Components.CustomInterface+CustomInterfaceElement")
RegisterBarotrauma("Items.Components.ItemContainer")
RegisterBarotrauma("Items.Components.PowerContainer")
RegisterBarotrauma("Items.Components.Pickable")
RegisterBarotrauma("Items.Components.Reactor")
RegisterBarotrauma("Items.Components.RelayComponent")
RegisterBarotrauma("Items.Components.MemoryComponent")
RegisterBarotrauma("Items.Components.Engine")
RegisterBarotrauma("AIController")
RegisterBarotrauma("EnemyAIController")
RegisterBarotrauma("HumanAIController")
RegisterBarotrauma("AICharacter")
RegisterBarotrauma("AITarget")
RegisterBarotrauma("AITargetMemory")
RegisterBarotrauma("TalentPrefab")
RegisterBarotrauma("TalentOption")
RegisterBarotrauma("TalentSubTree")
RegisterBarotrauma("TalentTree")
RegisterBarotrauma("CharacterTalent")
RegisterBarotrauma("Screen")
RegisterBarotrauma("GameScreen")
RegisterBarotrauma("GameSession")
RegisterBarotrauma("CampaignMode")
local descriptor = RegisterBarotrauma("NetLobbyScreen")
LuaUserData.MakeFieldAccessible(descriptor, "subs")
RegisterBarotrauma("Networking.IWriteMessage")
RegisterBarotrauma("Networking.IReadMessage")
RegisterBarotrauma("Networking.ServerPacketHeader")
RegisterBarotrauma("Networking.ClientPacketHeader")
RegisterBarotrauma("Networking.DeliveryMethod")
RegisterBarotrauma("Rand+RandSync")
RegisterBarotrauma("Skill")
RegisterBarotrauma("SkillPrefab")
RegisterBarotrauma("TraitorMissionPrefab")
RegisterBarotrauma("TraitorMissionResult")
LuaUserData.RegisterType("FarseerPhysics.Dynamics.World")
LuaUserData.RegisterType("FarseerPhysics.Dynamics.Fixture")
RegisterBarotrauma("Physics")
RegisterBarotrauma("Camera")
RegisterBarotrauma("InputType")
RegisterBarotrauma("Key")
AddCallMetaMember(RegisterBarotrauma("CharacterInfo"))
AddCallMetaMember(RegisterBarotrauma("Items.Components.Signal"))
AddCallMetaMember(RegisterBarotrauma("SubmarineInfo"))
AddCallMetaMember(LuaUserData.RegisterType("Microsoft.Xna.Framework.Vector2"))
AddCallMetaMember(LuaUserData.RegisterType("Microsoft.Xna.Framework.Vector3"))
AddCallMetaMember(LuaUserData.RegisterType("Microsoft.Xna.Framework.Vector4"))
AddCallMetaMember(LuaUserData.RegisterType("Microsoft.Xna.Framework.Color"))
AddCallMetaMember(LuaUserData.RegisterType("Microsoft.Xna.Framework.Point"))
AddCallMetaMember(LuaUserData.RegisterType("Microsoft.Xna.Framework.Rectangle"))
if SERVER then
RegisterBarotrauma("Traitor")
RegisterBarotrauma("Traitor+TraitorMission")
elseif CLIENT then
RegisterBarotrauma("LuaSetup+LuaGUI")
RegisterBarotrauma("ChatBox")
RegisterBarotrauma("GUICanvas")
RegisterBarotrauma("Anchor")
RegisterBarotrauma("Alignment")
RegisterBarotrauma("Pivot")
RegisterBarotrauma("Key")
RegisterBarotrauma("PlayerInput")
LuaUserData.RegisterType("Microsoft.Xna.Framework.Graphics.Texture2D")
LuaUserData.RegisterType("EventInput.KeyEventArgs")
LuaUserData.RegisterType("Microsoft.Xna.Framework.Input.Keys")
AddCallMetaMember(RegisterBarotrauma("Sprite"))
AddCallMetaMember(RegisterBarotrauma("GUILayoutGroup"))
AddCallMetaMember(RegisterBarotrauma("GUITextBox"))
AddCallMetaMember(RegisterBarotrauma("GUITextBlock"))
AddCallMetaMember(RegisterBarotrauma("GUIButton"))
AddCallMetaMember(RegisterBarotrauma("RectTransform"))
AddCallMetaMember(RegisterBarotrauma("GUIFrame"))
AddCallMetaMember(RegisterBarotrauma("GUITickBox"))
AddCallMetaMember(RegisterBarotrauma("GUICustomComponent"))
AddCallMetaMember(RegisterBarotrauma("GUIImage"))
AddCallMetaMember(RegisterBarotrauma("GUIListBox"))
AddCallMetaMember(RegisterBarotrauma("GUIScrollBar"))
AddCallMetaMember(RegisterBarotrauma("GUIDropDown"))
end
@@ -1,4 +1,14 @@
-- Config
local runDisabledMods = false
local modulePaths = {"Lua/?.lua"}
setmodulepaths(modulePaths)
local defaultLib = require("DefaultLib")
for key, value in pairs(defaultLib) do
_G[key] = value
end
if SERVER and Game.IsDedicated then
runDisabledMods = true
@@ -30,8 +40,6 @@ local function runFolder(folder)
end
end
local modulePaths = {}
if not runDisabledMods then
for _, package in pairs(enabledPackages) do