Could be useful to someone else, and Lax if you're reading this, something along these lines in the bundled libraries would be helpful.
Code: Select all
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using InnerSpaceAPI;
using LavishScriptAPI;
using System.Threading;
using LavishVMAPI;
namespace ISExtender
{
public class InnerSpaceSession
{
public static string Name
{
get
{
string name = "";
LavishScript.DataParse<string>("${Session}", ref name);
return name;
}
set
{
LavishScript.ExecuteCommand(String.Format("uplink name {0}", value));
}
}
public static int Number
{
get
{
int number = 0;
LavishScript.DataParse<int>("${Session.Right[-2]}", ref number);
return number;
}
}
public static void Log(string Text)
{
InnerSpace.Echo(String.Format("[{0}:{1}:{2}]: {3}", DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second, Text));
}
public static void LoadExtension(string extension)
{
LavishScript.ExecuteCommand(String.Format("extension {0}", extension));
}
public static void UnloadExtension(string extension)
{
LavishScript.ExecuteCommand(String.Format("extension -unload {0}", extension));
}
public static void FrameWaitSleep(double millisecondsTimeout)
{
DateTime end = DateTime.Now.AddMilliseconds(millisecondsTimeout);
while (end.Ticks > DateTime.Now.Ticks)
Frame.Wait(false);
}
public static void SetMaxFPS(int fps)
{
SetMaxBackgroundFPS(fps);
SetMaxForegroundFPS(fps);
}
public static void SetMaxBackgroundFPS(int fps)
{
LavishScript.ExecuteCommand(String.Format("maxfps -bg {0}", fps));
}
public static void SetMaxForegroundFPS(int fps)
{
LavishScript.ExecuteCommand(String.Format("maxfps -fg {0}", fps));
}
public static void Exit()
{
LavishScript.ExecuteCommand("exit");
}
}
public class InnerSpaceScript
{
public string Name { get; set; }
public InnerSpaceScript(string name)
{
Name = name;
}
public bool Running
{
get
{
try
{
LavishScriptObject Script = LavishScript.Objects.GetObject("Script", Name);
return Script.IsValid;
}
catch
{
return false;
}
}
}
public void WaitForExit()
{
while (Running)
InnerSpaceSession.FrameWaitSleep(1000);
}
public void WaitForExit(int Timeout)
{
for (int i = 0; i * 1000 < Timeout && Running; i++)
InnerSpaceSession.FrameWaitSleep(1000);
}
public void Run()
{
if (!Running)
LavishScript.ExecuteCommand(String.Format("runscript {0}", Name));
}
public static InnerSpaceScript Run(string script)
{
LavishScript.ExecuteCommand(String.Format("runscript {0}", script));
return new InnerSpaceScript(script);
}
public static void End(string script)
{
LavishScript.ExecuteCommand(String.Format("endscript {0}", script));
}
public void End()
{
if (Running)
LavishScript.ExecuteCommand(String.Format("endscript {0}", Name));
}
}
}