CnC_Remastered_Collection/CnCTDRAMapEditor/Program.cs

106 lines
4.4 KiB
C#

//
// Copyright 2020 Electronic Arts Inc.
//
// The Command & Conquer Map Editor and corresponding source code is free
// software: you can redistribute it and/or modify it under the terms of
// the GNU General Public License as published by the Free Software Foundation,
// either version 3 of the License, or (at your option) any later version.
// The Command & Conquer Map Editor and corresponding source code is distributed
// in the hope that it will be useful, but with permitted additional restrictions
// under Section 7 of the GPL. See the GNU General Public License in LICENSE.TXT
// distributed with this program. You should have received a copy of the
// GNU General Public License along with permitted additional restrictions
// with this program. If not, see https://github.com/electronicarts/CnC_Remastered_Collection
using MobiusEditor.Dialogs;
using MobiusEditor.Utility;
using System;
using System.Globalization;
using System.IO;
using System.Threading;
using System.Windows.Forms;
namespace MobiusEditor
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
// Change current culture to en-US
if (Thread.CurrentThread.CurrentCulture.Name != "en-US")
{
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US");
}
// Initialize megafiles
var runPath = Environment.CurrentDirectory;
Globals.TheMegafileManager = new MegafileManager(runPath);
var megafilesLoaded = true;
var megafilePath = Path.Combine(runPath, "DATA");
megafilesLoaded &= Globals.TheMegafileManager.Load(Path.Combine(megafilePath, "CONFIG.MEG"));
megafilesLoaded &= Globals.TheMegafileManager.Load(Path.Combine(megafilePath, "TEXTURES_COMMON_SRGB.MEG"));
megafilesLoaded &= Globals.TheMegafileManager.Load(Path.Combine(megafilePath, "TEXTURES_RA_SRGB.MEG"));
megafilesLoaded &= Globals.TheMegafileManager.Load(Path.Combine(megafilePath, "TEXTURES_SRGB.MEG"));
megafilesLoaded &= Globals.TheMegafileManager.Load(Path.Combine(megafilePath, "TEXTURES_TD_SRGB.MEG"));
#if !DEVELOPER
if (!megafilesLoaded)
{
MessageBox.Show("Required data is missing or corrupt, please validate your installation.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
#endif
// Initialize texture, tileset, team color, and game text managers
Globals.TheTextureManager = new TextureManager(Globals.TheMegafileManager);
Globals.TheTilesetManager = new TilesetManager(Globals.TheMegafileManager, Globals.TheTextureManager, Globals.TilesetsXMLPath, Globals.TexturesPath);
Globals.TheTeamColorManager = new TeamColorManager(Globals.TheMegafileManager);
var cultureName = CultureInfo.CurrentUICulture.Name;
var gameTextFilename = string.Format(Globals.GameTextFilenameFormat, cultureName.ToUpper());
if (!Globals.TheMegafileManager.Exists(gameTextFilename))
{
gameTextFilename = string.Format(Globals.GameTextFilenameFormat, "EN-US");
}
Globals.TheGameTextManager = new GameTextManager(Globals.TheMegafileManager, gameTextFilename);
// Initialize Steam if this is a Steam build
if (SteamworksUGC.IsSteamBuild)
{
if (!SteamworksUGC.Init())
{
#if !DEVELOPER
MessageBox.Show("Unable to initialize Steam interface.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
#endif
}
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
if (Properties.Settings.Default.ShowInviteWarning)
{
var inviteMessageBox = new InviteMessageBox();
inviteMessageBox.ShowDialog();
Properties.Settings.Default.ShowInviteWarning = !inviteMessageBox.DontShowAgain;
Properties.Settings.Default.Save();
}
Application.Run(new MainForm());
if (SteamworksUGC.IsSteamBuild)
{
SteamworksUGC.Shutdown();
}
Globals.TheMegafileManager.Dispose();
}
}
}