mirror of
https://github.com/electronicarts/CnC_Remastered_Collection.git
synced 2026-04-27 19:26:58 +02:00
C&C Remastered Map Editor
Initial commit of C&C Remastered Map Editor code
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
//
|
||||
// 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user