expose more things to lua

This commit is contained in:
Evil Factory
2021-03-26 16:56:59 -03:00
parent df6332f020
commit d557b4491d
2 changed files with 60 additions and 10 deletions

View File

@@ -84,20 +84,20 @@ namespace Barotrauma
env = e;
}
public static void SendMessage(string msg, int messageType = 0, Client sender = null, Character character = null)
public static void SendMessage(string msg, ChatMessageType messageType = ChatMessageType.Server, Client sender = null, Character character = null)
{
GameMain.Server.SendChatMessage(msg, (ChatMessageType)messageType, sender, character);
GameMain.Server.SendChatMessage(msg, messageType, sender, character);
}
public static void SendTraitorMessage(Client client, string msg, int type)
public static void SendTraitorMessage(Client client, string msg, TraitorMessageType type)
{
GameMain.Server.SendTraitorMessage(client, msg, "", (TraitorMessageType)type);
GameMain.Server.SendTraitorMessage(client, msg, "", type);
}
public static void SendDirectChatMessage(string sendername, string text, Character sender, int messageType = 0, Client client = null)
public static void SendDirectChatMessage(string sendername, string text, Character sender, ChatMessageType messageType = ChatMessageType.Private, Client client = null)
{
ChatMessage cm = ChatMessage.Create(sendername, text, (ChatMessageType)messageType, sender, client);
ChatMessage cm = ChatMessage.Create(sendername, text, messageType, sender, client);
GameMain.Server.SendDirectChatMessage(cm, client);
@@ -113,9 +113,9 @@ namespace Barotrauma
overrideRespawnSub = o;
}
public static void Log(string message, int type)
public static void Log(string message, ServerLog.MessageType type)
{
GameServer.Log(message, (ServerLog.MessageType)type);
GameServer.Log(message, type);
}
public static void Explode(Vector2 pos, float range = 100, float force = 30, float damage = 30, float structureDamage = 30, float itemDamage = 30, float empStrength = 0, float ballastFloraStrength = 0)
@@ -182,10 +182,36 @@ namespace Barotrauma
return GameMain.Server.RespawnManager.RespawnShuttle;
}
public static Items.Components.Steering GetSubmarineSteering(Submarine sub)
{
foreach (Item item in Item.ItemList)
{
if (item.Submarine != sub) continue;
var steering = item.GetComponent<Items.Components.Steering>();
if (steering != null)
{
return steering;
}
}
return null;
}
public static void DispatchRespawnSub()
{
GameMain.Server.RespawnManager.DispatchShuttle();
}
public static void SetRespawnSubTeam(int team)
{
GameMain.Server.RespawnManager.RespawnShuttle.TeamID = (CharacterTeamType)team;
}
public static void ExecuteCommand(string command)
{
DebugConsole.ExecuteCommand(command);
}
}
@@ -284,7 +310,11 @@ namespace Barotrauma
{
try
{
return env.Call(hf.function, args);
var result = env.Call(hf.function, args);
if (result.IsNil() == false)
{
return result;
}
}
catch (Exception e)
{

View File

@@ -83,12 +83,20 @@ namespace Barotrauma
{
Console.WriteLine("Lua!");
LuaScriptLoader luaScriptLoader = new LuaScriptLoader(this);
LuaCustomConverters.RegisterAll();
UserData.RegisterType<Level.InterestingPosition>();
UserData.RegisterType<Level.PositionType>();
UserData.RegisterType<Level>();
UserData.RegisterType<Items.Components.Steering>();
UserData.RegisterType<ServerLog.MessageType>();
UserData.RegisterType<SpawnType>();
UserData.RegisterType<ChatMessageType>();
UserData.RegisterType<WayPoint>();
UserData.RegisterType<Character>();
UserData.RegisterType<Item>();
UserData.RegisterType<Submarine>();
UserData.RegisterType<Client>();
UserData.RegisterType<LuaPlayer>();
@@ -112,6 +120,18 @@ namespace Barotrauma
lua.Globals["Hook"] = hook;
lua.Globals["Random"] = new LuaRandom();
lua.Globals["Timer"] = new LuaTimer(this);
lua.Globals["WayPoint"] = UserData.CreateStatic<WayPoint>();
lua.Globals["SpawnType"] = UserData.CreateStatic<SpawnType>();
lua.Globals["ChatMessageType"] = UserData.CreateStatic<ChatMessageType>();
lua.Globals["ServerLog_MessageType"] = UserData.CreateStatic<ServerLog.MessageType>();
lua.Globals["Submarine"] = UserData.CreateStatic<Submarine>();
lua.Globals["Client"] = UserData.CreateStatic<Client>();
lua.Globals["Character"] = UserData.CreateStatic<Character>();
lua.Globals["Item"] = UserData.CreateStatic<Item>();
lua.Globals["Level"] = UserData.CreateStatic<Level>();
lua.Globals["Vector2"] = UserData.CreateStatic<Vector2>();
lua.Globals["Vector3"] = UserData.CreateStatic<Vector3>();
lua.Globals["PositionType"] = UserData.CreateStatic<Level.PositionType>();
foreach (string d in Directory.GetDirectories("Lua"))
{