public static bool InitWithArguments(string[] args) { AppDomain.CurrentDomain.AssemblyResolve += OnAssemblyResolve; //Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadException); AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); ClipboardHandler.Default = new WinFormsClipboard(); OperatingSystem os = Environment.OSVersion; PlatformID pid = os.Platform; ILocator gameLocator; bool linux = pid == PlatformID.MacOSX || pid == PlatformID.Unix; if (linux && Directory.Exists("/Users")) { gameLocator = new MacOSLocator(); } else if (linux) { gameLocator = new LinuxLocator(); } else { gameLocator = new WindowsLocator(); } bool useDX = false; #region User resolution parmeters foreach (var arg in args) { if (char.IsDigit(arg[0])) { //attempt parsing resoulution try { var split = arg.Split("x".ToCharArray()); int ScreenWidth = int.Parse(split[0]); int ScreenHeight = int.Parse(split[1]); GlobalSettings.Default.GraphicsWidth = ScreenWidth; GlobalSettings.Default.GraphicsHeight = ScreenHeight; } catch (Exception) { } } else if (arg[0] == '-') { var cmd = arg.Substring(1); if (cmd.StartsWith("lang")) { GlobalSettings.Default.LanguageCode = byte.Parse(cmd.Substring(4)); } else if (cmd.StartsWith("hz")) { GlobalSettings.Default.TargetRefreshRate = int.Parse(cmd.Substring(2)); } else { //normal style param switch (cmd) { case "dx11": case "dx": useDX = true; break; case "gl": case "ogl": useDX = false; break; } } } else { if (arg.Equals("w", StringComparison.InvariantCultureIgnoreCase)) { GlobalSettings.Default.Windowed = true; } else if (arg.Equals("f", StringComparison.InvariantCultureIgnoreCase)) { GlobalSettings.Default.Windowed = false; } } } #endregion UseDX = MonogameLinker.Link(useDX); /*if (GlobalSettings.Default.Windowed == false && !UseDX) * { * //temporary while SDL issues are fixed * MessageBox.Show("Fullscreen is currently disabled on OpenGL. Please switch to DirectX (-dx flag) if you really need to use fullscreen."); * }*/ var path = gameLocator.FindTheSimsOnline(); if (UseDX) { GlobalSettings.Default.AntiAlias = false; } if (path != null) { FSOEnvironment.ContentDir = "Content/"; FSOEnvironment.GFXContentDir = "Content/" + (UseDX ? "DX/" : "OGL/"); FSOEnvironment.Linux = linux; FSOEnvironment.DirectX = UseDX; FSOEnvironment.GameThread = Thread.CurrentThread; if (GlobalSettings.Default.LanguageCode == 0) { GlobalSettings.Default.LanguageCode = 1; } Files.Formats.IFF.Chunks.STR.DefaultLangCode = (Files.Formats.IFF.Chunks.STRLangCode)GlobalSettings.Default.LanguageCode; GlobalSettings.Default.StartupPath = path; GlobalSettings.Default.ClientVersion = GetClientVersion(); return(true); } else { //MessageBox.Show("The Sims Online was not found on your system. FreeSO will not be able to run without access to the original game files."); return(false); } }
public static bool InitWithArguments(string[] args) { AppDomain.CurrentDomain.AssemblyResolve += OnAssemblyResolve; //Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadException); AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); OperatingSystem os = Environment.OSVersion; PlatformID pid = os.Platform; ILocator gameLocator; bool linux = pid == PlatformID.MacOSX || pid == PlatformID.Unix; if (linux) { gameLocator = new LinuxLocator(); } else { gameLocator = new WindowsLocator(); } bool useDX = false; UseDX = MonogameLinker.Link(useDX); var path = gameLocator.FindTheSimsOnline(); if (UseDX) { GlobalSettings.Default.AntiAlias = false; } if (path != null) { GlobalSettings.Default.Load(); var simspath = gameLocator.FindTheSimsComplete(); FSOEnvironment.SimsCompleteDir = simspath; FSOEnvironment.ContentDir = "Content/"; FSOEnvironment.GFXContentDir = "Content/" + (useDX ? "DX/" : "OGL/"); FSOEnvironment.Linux = linux; FSOEnvironment.DirectX = useDX; if (GlobalSettings.Default.Language == 0) { GlobalSettings.Default.Language = 1; } Files.Formats.IFF.Chunks.STR.DefaultLangCode = (Files.Formats.IFF.Chunks.STRLangCode)GlobalSettings.Default.Language; GlobalSettings.Default.StartupPath = path; string DocumentsPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "/Sims Ville"; if (!Directory.Exists(DocumentsPath)) { Directory.CreateDirectory(DocumentsPath); } GlobalSettings.Default.DocumentsPath = DocumentsPath; GlobalSettings.Default.Save(); return(true); } else { return(false); } }
static void Main(string[] args) { AppDomain.CurrentDomain.AssemblyResolve += OnAssemblyResolve; OperatingSystem os = Environment.OSVersion; PlatformID pid = os.Platform; ILocator gameLocator; bool linux = pid == PlatformID.MacOSX || pid == PlatformID.Unix; if (linux && Directory.Exists("/Users")) { gameLocator = new MacOSLocator(); } else if (linux) { gameLocator = new LinuxLocator(); } else { gameLocator = new WindowsLocator(); } var useDX = !linux; var path = gameLocator.FindTheSims1(); FSOEnvironment.Enable3D = false; bool ide = false; bool aa = false; bool jit = false; #region User resolution parmeters foreach (var arg in args) { if (arg[0] == '-') { var cmd = arg.Substring(1); if (cmd.StartsWith("lang")) { GlobalSettings.Default.LanguageCode = byte.Parse(cmd.Substring(4)); } else if (cmd.StartsWith("hz")) { GlobalSettings.Default.TargetRefreshRate = int.Parse(cmd.Substring(2)); } else { //normal style param switch (cmd) { case "ide": ide = true; break; case "3d": FSOEnvironment.Enable3D = true; break; case "aa": aa = true; break; case "jit": jit = true; break; case "dx": case "dx11": useDX = true; break; case "gl": case "ogl": useDX = false; break; case "touch": FSOEnvironment.SoftwareKeyboard = true; break; case "nosound": FSOEnvironment.NoSound = true; break; } } } } #endregion useDX = MonogameLinker.Link(useDX); FSO.Files.ImageLoaderHelpers.BitmapFunction = BitmapReader; AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; FSOEnvironment.SoftwareDepth = false; FSOEnvironment.UseMRT = true; if (path != null) { FSOEnvironment.ContentDir = "Content/"; FSOEnvironment.GFXContentDir = "Content/" + (useDX ? "DX/" : "OGL/"); FSOEnvironment.UserDir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "Simitone/").Replace('\\', '/'); Directory.CreateDirectory(FSOEnvironment.UserDir); FSOEnvironment.Linux = false; FSOEnvironment.DirectX = useDX; FSOEnvironment.GameThread = Thread.CurrentThread; if (GlobalSettings.Default.LanguageCode == 0) { GlobalSettings.Default.LanguageCode = 1; } FSO.Files.Formats.IFF.Chunks.STR.DefaultLangCode = (FSO.Files.Formats.IFF.Chunks.STRLangCode)GlobalSettings.Default.LanguageCode; GlobalSettings.Default.StartupPath = path; GlobalSettings.Default.TS1HybridEnable = true; GlobalSettings.Default.TS1HybridPath = path; GlobalSettings.Default.ClientVersion = "0"; GlobalSettings.Default.LightingMode = 3; GlobalSettings.Default.AntiAlias = aa ? 1 : 0; GlobalSettings.Default.ComplexShaders = true; GlobalSettings.Default.EnableTransitions = true; if (ide) { new FSO.IDE.VolcanicStartProxy().InitVolcanic(args); } var assemblies = new FSO.SimAntics.JIT.Runtime.AssemblyStore(); //var globals = new TS1.Scripts.Dummy(); //make sure scripts assembly is loaded if (jit) { assemblies.InitAOT(); } FSO.SimAntics.Engine.VMTranslator.INSTANCE = new FSO.SimAntics.JIT.Runtime.VMAOTTranslator(assemblies); var start = new GameStartProxy(); start.Start(useDX); } }
public bool InitWithArguments(string[] args) { string baseDir = AppDomain.CurrentDomain.BaseDirectory; Directory.SetCurrentDirectory(baseDir); AppDomain.CurrentDomain.AssemblyResolve += OnAssemblyResolve; AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); OperatingSystem os = Environment.OSVersion; PlatformID pid = os.Platform; ILocator gameLocator; bool linux = pid == PlatformID.MacOSX || pid == PlatformID.Unix; if (linux && Directory.Exists("/Users")) { gameLocator = new MacOSLocator(); } else if (linux) { gameLocator = new LinuxLocator(); } else { gameLocator = new WindowsLocator(); } bool useDX = false; #region User resolution parmeters foreach (var arg in args) { if (char.IsDigit(arg[0])) { //attempt parsing resoulution try { var split = arg.Split("x".ToCharArray()); int ScreenWidth = int.Parse(split[0]); int ScreenHeight = int.Parse(split[1]); GlobalSettings.Default.GraphicsWidth = ScreenWidth; GlobalSettings.Default.GraphicsHeight = ScreenHeight; } catch (Exception) { } } else if (arg[0] == '-') { var cmd = arg.Substring(1); if (cmd.StartsWith("lang")) { GlobalSettings.Default.LanguageCode = byte.Parse(cmd.Substring(4)); } else if (cmd.StartsWith("hz")) { GlobalSettings.Default.TargetRefreshRate = int.Parse(cmd.Substring(2)); } else { //normal style param switch (cmd) { case "dx11": case "dx": useDX = true; break; case "gl": case "ogl": useDX = false; break; case "ts1": GlobalSettings.Default.TS1HybridEnable = true; break; case "tso": GlobalSettings.Default.TS1HybridEnable = false; break; case "3d": FSOEnvironment.Enable3D = true; break; case "touch": FSOEnvironment.SoftwareKeyboard = true; break; case "nosound": FSOEnvironment.NoSound = true; break; } } } else { if (arg.Equals("w", StringComparison.InvariantCultureIgnoreCase)) { GlobalSettings.Default.Windowed = true; } else if (arg.Equals("f", StringComparison.InvariantCultureIgnoreCase)) { GlobalSettings.Default.Windowed = false; } } } #endregion UseDX = MonogameLinker.Link(useDX); var path = gameLocator.FindTheSimsOnline(); if (path != null) { //check if this path has tso in it. tuning.dat should be a good indication. if (!File.Exists(Path.Combine(path, "tuning.dat"))) { ShowDialog("The Sims Online appears to be missing. The game expects TSO at directory '" + path + "', but some core files are missing from that folder. If you know you installed TSO into a different directory, please move it into the directory specified."); return(false); } FSOEnvironment.Args = string.Join(" ", args); FSOEnvironment.ContentDir = "Content/"; FSOEnvironment.GFXContentDir = "Content/" + (UseDX ? "DX/" : "OGL/"); FSOEnvironment.Linux = linux; FSOEnvironment.DirectX = UseDX; FSOEnvironment.GameThread = Thread.CurrentThread; if (GlobalSettings.Default.LanguageCode == 0) { GlobalSettings.Default.LanguageCode = 1; } Files.Formats.IFF.Chunks.STR.DefaultLangCode = (Files.Formats.IFF.Chunks.STRLangCode)GlobalSettings.Default.LanguageCode; GlobalSettings.Default.StartupPath = path; GlobalSettings.Default.ClientVersion = GetClientVersion(); return(true); } else { ShowDialog("The Sims Online was not found on your system. FreeSO will not be able to run without access to the original game files."); return(false); } }
public static bool InitWithArguments(string[] args) { AppDomain.CurrentDomain.AssemblyResolve += OnAssemblyResolve; //Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadException); AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); Console.WriteLine("Loading Content..."); ILocator locator; OperatingSystem os = Environment.OSVersion; PlatformID pid = os.Platform; bool linux = pid == PlatformID.MacOSX || pid == PlatformID.Unix; if (linux) { locator = new LinuxLocator(); } else { locator = new WindowsLocator(); } string path = locator.FindTheSimsOnline(); bool useDX = false; UseDX = MonogameLinker.Link(useDX); if (path != null) { GlobalSettings.Default.Load(); var simspath = locator.FindTheSimsComplete(); FSOEnvironment.SimsCompleteDir = simspath; FSOEnvironment.ContentDir = "Content/"; FSOEnvironment.GFXContentDir = "Content/" + (useDX ? "DX/" : "OGL/"); GlobalSettings.Default.StartupPath = path; GlobalSettings.Default.Save(); } FSO.Content.Content.Init(path, null); Console.WriteLine("Success!"); Console.WriteLine("Starting VM server..."); PacketHandlers.Register((byte)PacketType.VM_PACKET, false, 0, new OnPacketReceive(VMPacket)); StartVM(); Stream inputStream = Console.OpenStandardInput(); while (true) { Inst.SendMessage(Console.ReadLine()); } }