static void Main(string[] args) { var gameLocator = new WindowsLocator(); var useDX = true; var path = gameLocator.FindTheSimsOnline(); 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; } } } } #endregion 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 = gameLocator.FindTheSims1(); GlobalSettings.Default.ClientVersion = "0"; GlobalSettings.Default.LightingMode = 3; GlobalSettings.Default.AntiAlias = aa ? 2 : 0; GlobalSettings.Default.ComplexShaders = true; GameFacade.DirectX = useDX; World.DirectX = useDX; if (ide) { new FSO.IDE.VolcanicStartProxy().InitVolcanic(); } 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); SimitoneGame game = new SimitoneGame(); var form = (Form)Form.FromHandle(game.Window.Handle); if (form != null) { form.FormClosing += Form_FormClosing; } game.Run(); game.Dispose(); } }
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); } }