Initial full mirror of c:\VWE (source + assets + toolchain + outputs) via Git LFS

Complete disaster-recovery snapshot: engine/game source, game data assets,
VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive.
Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false,
no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
This commit is contained in:
Cyd
2026-06-24 21:28:16 -05:00
commit 2b8ca921cb
66341 changed files with 7923174 additions and 0 deletions
@@ -0,0 +1,34 @@
#define StockDestruction 0
#define StockTeamDestruction 1
#define StockAttrition 2
#define StockTeamAttrition 3
#define StockCaptureTheFlag 4
#define StockKingOfTheHill 5
#define StockTeamKingOfTheHill 6
#define StockTerritories 7
#define StockStealTheBacon 8
#define StockCaptureBase 9
#define StockDestroyObjective 10
#define StockEscort 11
#define StockMasterTrial 12
#define StockSiegeAssault 13
#define StockCampaign 14
#define CustomDestruction 15
#define CustomTeamDestruction 16
#define CustomAttrition 17
#define CustomTeamAttrition 18
#define CustomCaptureTheFlag 19
#define CustomKingOfTheHill 20
#define CustomTeamKingOfTheHill 21
#define CustomTerritories 22
#define CustomStealTheBacon 23
#define CustomCaptureBase 24
#define CustomDestroyObjective 25
#define CustomEscort 26
#define CustomMasterTrial 27
#define CustomSiegeAssault 28
#define CustomCampaign 29
#define CustomUndefined 30
#define SinglePlayer 31
// make sure this is always set to the number of game types
#define GameTypeCount CustomUndefined + 1
@@ -0,0 +1,103 @@
// NFO File Editor.cpp : Defines the class behaviors for the application.
//
#include "stdafx.h"
#include "NFO File Editor.h"
#include "NFO File EditorDlg.h"
#if !defined(STUFF_STUFF_HPP)
#include "Stuff\Stuff.hpp"
#endif
#include <GameOS\GameOS.hpp>
#include <MFCPlatform\MFCPlatform.hpp>
#if 0 // def _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CNFOFileEditorApp
BEGIN_MESSAGE_MAP(CNFOFileEditorApp, CWinApp)
//{{AFX_MSG_MAP(CNFOFileEditorApp)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG
ON_COMMAND(ID_HELP, CWinApp::OnHelp)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CNFOFileEditorApp construction
CNFOFileEditorApp::CNFOFileEditorApp()
{
}
/////////////////////////////////////////////////////////////////////////////
// The one and only CNFOFileEditorApp object
CNFOFileEditorApp theApp;
/////////////////////////////////////////////////////////////////////////////
// CNFOFileEditorApp initialization
BOOL CNFOFileEditorApp::InitInstance()
{
AfxEnableControlContainer();
// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need.
#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif
CNFOFileEditorDlg dlg;
m_pMainWnd = &dlg;
dlg.DoModal();
// Since the dialog has been closed, return FALSE so that we exit the
// application, rather than start the application's message pump.
return FALSE;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
void _stdcall InitializeGameEngine()
{
Stuff::InitializeClasses();
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
void _stdcall TerminateGameEngine()
{
Stuff::TerminateClasses();
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
void __stdcall GetGameOSEnvironment(char* CommandLine)
{
//
//----------------------------------------------------------
// This is where to set GOS environment settings.
//----------------------------------------------------------
//
Environment.applicationName = "NFO File Editor";
Environment.directoryPath = "\\Tools\\NFO File Editor";
Environment.screenWidth = 640;
Environment.screenHeight = 480;
Environment.bitDepth = 16;
Environment.InitializeGameEngine = InitializeGameEngine;
Environment.TerminateGameEngine = TerminateGameEngine;
Environment.Renderer = 3; // use blade to avoid Voodoo problems
}
@@ -0,0 +1,289 @@
# Microsoft Developer Studio Project File - Name="NFO File Editor" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Application" 0x0101
CFG=NFO File Editor - Win32 Release
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "NFO File Editor.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "NFO File Editor.mak" CFG="NFO File Editor - Win32 Release"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "NFO File Editor - Win32 Release" (based on "Win32 (x86) Application")
!MESSAGE "NFO File Editor - Win32 Profile" (based on "Win32 (x86) Application")
!MESSAGE "NFO File Editor - Win32 Armor" (based on "Win32 (x86) Application")
!MESSAGE "NFO File Editor - Win32 Debug" (based on "Win32 (x86) Application")
!MESSAGE "NFO File Editor - Win32 icecap" (based on "Win32 (x86) Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
CPP=cl.exe
MTL=midl.exe
RSC=rc.exe
!IF "$(CFG)" == "NFO File Editor - Win32 Release"
# PROP BASE Use_MFC 6
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 6
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "../../../rel.bin"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /Yu"stdafx.h" /FD /c
# ADD CPP /nologo /G6 /Zp4 /MD /W4 /WX /Ox /Ot /Oa /Og /Oi /I "..\..\Code" /I "..\..\Libraries" /I "..\..\..\CoreTech\Libraries" /I "..\..\Libraries\stlport" /D "NDEBUG" /D "RELEASE" /D "USE_PROTOTYPES" /D "STRICT" /D "_WINDOWS" /D "WIN32" /D "_AFXDLL" /D "_MBCS" /Yu"stdafx.h" /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL"
# ADD RSC /l 0x409 /fo"Release/NFOEditor.res" /d "NDEBUG" /d "_AFXDLL"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo /o"Release/NFOEditor.bsc"
LINK32=link.exe
# ADD BASE LINK32 /nologo /subsystem:windows /machine:I386
# ADD LINK32 /nologo /subsystem:windows /machine:I386 /out:"../../../rel.bin/NFOEditor.exe"
!ELSEIF "$(CFG)" == "NFO File Editor - Win32 Profile"
# PROP BASE Use_MFC 6
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Profile"
# PROP BASE Intermediate_Dir "Profile"
# PROP BASE Target_Dir ""
# PROP Use_MFC 6
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "../../../pro.bin"
# PROP Intermediate_Dir "Profile"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /Yu"stdafx.h" /FD /c
# ADD CPP /nologo /G6 /Zp4 /MD /W4 /WX /GX /Zi /Ox /Ot /Oa /Og /Oi /Gy /I "..\..\Code" /I "..\..\Libraries" /I "..\..\..\CoreTech\Libraries" /I "..\..\Libraries\stlport" /D "LAB_ONLY" /D "NDEBUG" /D "USE_PROTOTYPES" /D "STRICT" /D "_WINDOWS" /D "WIN32" /D "_AFXDLL" /D "_MBCS" /Yu"stdafx.h" /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL"
# ADD RSC /l 0x409 /fo"Profile/NFOEditor.res" /d "_DEBUG" /d "_AFXDLL"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo /o"Profile/NFOEditor.bsc"
LINK32=link.exe
# ADD BASE LINK32 /nologo /subsystem:windows /machine:I386
# ADD LINK32 /nologo /subsystem:windows /incremental:yes /debug /machine:I386 /out:"../../../pro.bin/NFOEditor.exe" /pdbtype:sept
!ELSEIF "$(CFG)" == "NFO File Editor - Win32 Armor"
# PROP BASE Use_MFC 6
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Armor"
# PROP BASE Intermediate_Dir "Armor"
# PROP BASE Target_Dir ""
# PROP Use_MFC 6
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Armor"
# PROP Intermediate_Dir "Armor"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /Yu"stdafx.h" /FD /c
# ADD CPP /nologo /G6 /Zp4 /MD /W4 /WX /GR /Zi /Ox /Ot /Oa /Og /Oi /I "..\..\Code" /I "..\..\Libraries" /I "..\..\..\CoreTech\Libraries" /I "..\..\Libraries\stlport" /D "LAB_ONLY" /D "NDEBUG" /D "_ARMOR" /D "USE_PROTOTYPES" /D "STRICT" /D "_WINDOWS" /D "WIN32" /D "_AFXDLL" /D "_MBCS" /Yu"stdafx.h" /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL"
# ADD RSC /l 0x409 /fo"Armor/NFOEditor.res" /d "_DEBUG" /d "_AFXDLL"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo /o"Armor/NFOEditor.bsc"
LINK32=link.exe
# ADD BASE LINK32 /nologo /subsystem:windows /machine:I386
# ADD LINK32 /nologo /subsystem:windows /incremental:yes /debug /machine:I386 /pdbtype:sept
# Begin Special Build Tool
SOURCE="$(InputPath)"
PostBuild_Cmds=attrib -r ..\..\NFOEditor.exe copy armor\NFOEditor.exe ..\.. /Y
# End Special Build Tool
!ELSEIF "$(CFG)" == "NFO File Editor - Win32 Debug"
# PROP BASE Use_MFC 6
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 6
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "../../../dbg.bin"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /Yu"stdafx.h" /FD /c
# ADD CPP /nologo /G6 /Zp4 /MDd /W4 /WX /GR /GX /Zi /Od /I "..\..\Code" /I "..\..\Libraries\stlport" /I "..\..\Libraries" /I "..\..\..\CoreTech\Libraries" /D "LAB_ONLY" /D "USE_PROTOTYPES" /D "STRICT" /D "_ARMOR" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /D "WIN32" /D "_DEBUG" /Yu"stdafx.h" /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL"
# ADD RSC /l 0x409 /fo"Debug/NFOEditor.res" /d "_DEBUG" /d "_AFXDLL"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo /o"Debug/NFOEditor.bsc"
LINK32=link.exe
# ADD BASE LINK32 /nologo /subsystem:windows /machine:I386
# ADD LINK32 /nologo /subsystem:windows /incremental:yes /debug /machine:I386 /out:"../../../dbg.bin/NFOEditor.exe" /pdbtype:sept
!ELSEIF "$(CFG)" == "NFO File Editor - Win32 icecap"
# PROP BASE Use_MFC 6
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "icecap"
# PROP BASE Intermediate_Dir "icecap"
# PROP BASE Target_Dir ""
# PROP Use_MFC 6
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "icecap"
# PROP Intermediate_Dir "icecap"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /Yu"stdafx.h" /FD /c
# ADD CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /Yu"stdafx.h" /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL"
# ADD RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 /nologo /subsystem:windows /machine:I386
# ADD LINK32 /nologo /subsystem:windows /machine:I386
!ENDIF
# Begin Target
# Name "NFO File Editor - Win32 Release"
# Name "NFO File Editor - Win32 Profile"
# Name "NFO File Editor - Win32 Armor"
# Name "NFO File Editor - Win32 Debug"
# Name "NFO File Editor - Win32 icecap"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=".\NFO File Editor.cpp"
# End Source File
# Begin Source File
SOURCE=".\NFO File Editor.rc"
# End Source File
# Begin Source File
SOURCE=".\NFO File EditorDlg.cpp"
# End Source File
# Begin Source File
SOURCE=.\NFOAddCycleRuleDlg.cpp
# End Source File
# Begin Source File
SOURCE=.\NFOBotDlg.cpp
# End Source File
# Begin Source File
SOURCE=.\NFOErrorDlg.cpp
# End Source File
# Begin Source File
SOURCE=.\NFOPropertiesDlg.cpp
# End Source File
# Begin Source File
SOURCE=.\NFORuleDlg.cpp
# End Source File
# Begin Source File
SOURCE=.\NFOTeamDlg.cpp
# End Source File
# Begin Source File
SOURCE=.\NFOYesNoDlg.cpp
# End Source File
# Begin Source File
SOURCE=.\StdAfx.cpp
# ADD CPP /Yc"stdafx.h"
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File
SOURCE=".\NFO File Editor.h"
# End Source File
# Begin Source File
SOURCE=".\NFO File EditorDlg.h"
# End Source File
# Begin Source File
SOURCE=.\NFOAddCycleRuleDlg.h
# End Source File
# Begin Source File
SOURCE=.\NFOBotDlg.h
# End Source File
# Begin Source File
SOURCE=.\NFOErrorDlg.h
# End Source File
# Begin Source File
SOURCE=.\NFOPropertiesDlg.h
# End Source File
# Begin Source File
SOURCE=.\NFORuleDlg.h
# End Source File
# Begin Source File
SOURCE=.\NFOTeamDlg.h
# End Source File
# Begin Source File
SOURCE=.\NFOYesNoDlg.h
# End Source File
# Begin Source File
SOURCE=.\Resource.h
# End Source File
# Begin Source File
SOURCE=.\StdAfx.h
# End Source File
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# Begin Source File
SOURCE=".\res\NFO File Editor.ico"
# End Source File
# Begin Source File
SOURCE=".\res\NFO File Editor.rc2"
# End Source File
# End Group
# Begin Source File
SOURCE=.\ReadMe.txt
# End Source File
# End Target
# End Project
@@ -0,0 +1,74 @@
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "GameOS"="..\..\..\CoreTech\Libraries\GameOS\GameOS.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "MFCPlatform"="..\..\..\CoreTech\Libraries\MFCPlatform\MFCPlatform.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "NFO File Editor"=".\NFO File Editor\NFO File Editor.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
Begin Project Dependency
Project_Dep_Name GameOS
End Project Dependency
Begin Project Dependency
Project_Dep_Name MFCPlatform
End Project Dependency
Begin Project Dependency
Project_Dep_Name Stuff
End Project Dependency
}}}
###############################################################################
Project: "Stuff"="..\..\Libraries\Stuff\Stuff.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################
@@ -0,0 +1,51 @@
// NFO File Editor.h : main header file for the NFO FILE EDITOR application
//
#if !defined(AFX_NFOFILEEDITOR_H__1EB16666_09F8_4875_B4FB_8B1325CE1BAC__INCLUDED_)
#define AFX_NFOFILEEDITOR_H__1EB16666_09F8_4875_B4FB_8B1325CE1BAC__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#ifndef __AFXWIN_H__
#error include 'stdafx.h' before including this file for PCH
#endif
#include "resource.h" // main symbols
/////////////////////////////////////////////////////////////////////////////
// CNFOFileEditorApp:
// See NFO File Editor.cpp for the implementation of this class
//
class CNFOFileEditorApp : public CWinApp
{
public:
CNFOFileEditorApp();
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CNFOFileEditorApp)
public:
virtual BOOL InitInstance();
//}}AFX_VIRTUAL
// Implementation
//{{AFX_MSG(CNFOFileEditorApp)
// NOTE - the ClassWizard will add and remove member functions here.
// DO NOT EDIT what you see in these blocks of generated code !
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
void _stdcall InitializeGameEngine();
void _stdcall TerminateGameEngine();
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_NFOFILEEDITOR_H__1EB16666_09F8_4875_B4FB_8B1325CE1BAC__INCLUDED_)
@@ -0,0 +1,485 @@
//Microsoft Developer Studio generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// English (U.S.) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE DISCARDABLE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE DISCARDABLE
BEGIN
"#include ""afxres.h""\r\n"
"\0"
END
3 TEXTINCLUDE DISCARDABLE
BEGIN
"#define _AFX_NO_SPLITTER_RESOURCES\r\n"
"#define _AFX_NO_OLE_RESOURCES\r\n"
"#define _AFX_NO_TRACKER_RESOURCES\r\n"
"#define _AFX_NO_PROPERTY_RESOURCES\r\n"
"\r\n"
"#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n"
"#ifdef _WIN32\r\n"
"LANGUAGE 9, 1\r\n"
"#pragma code_page(1252)\r\n"
"#endif //_WIN32\r\n"
"#include ""res\\NFO File Editor.rc2"" // non-Microsoft Visual C++ edited resources\r\n"
"#include ""afxres.rc"" // Standard components\r\n"
"#endif\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDR_MAINFRAME ICON DISCARDABLE "res\\NFO File Editor.ico"
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_ABOUTBOX DIALOG DISCARDABLE 0, 0, 235, 55
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "About NFO File Editor"
FONT 8, "MS Sans Serif"
BEGIN
ICON IDR_MAINFRAME,IDC_STATIC,11,17,20,20
LTEXT "NFO File Editor Version 1.0",IDC_STATIC,40,10,119,8,
SS_NOPREFIX
LTEXT "Copyright (C) 2001",IDC_STATIC,40,25,119,8
DEFPUSHBUTTON "OK",IDOK,178,7,50,14,WS_GROUP
END
IDD_NFOFILEEDITOR_DIALOG DIALOGEX 0, 0, 467, 266
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_APPWINDOW
CAPTION "MechWarrior 4 NFO File Editor"
FONT 8, "MS Sans Serif", 0, 0, 0x1
BEGIN
PUSHBUTTON "Exit",IDOK,395,5,60,20
COMBOBOX IDC_NFO_MISSIONS,10,30,127,45,CBS_DROPDOWNLIST |
WS_VSCROLL | WS_TABSTOP
LISTBOX IDC_NFO_LIST,10,50,127,158,LBS_SORT |
LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "Remove NFO",IDC_NFO_REMOVE,75,240,61,20,NOT WS_VISIBLE
PUSHBUTTON "Properties",IDC_NFO_PROPERTIES,45,215,60,20
PUSHBUTTON "Add NFO",IDC_NFO_ADD,10,240,61,20,NOT WS_VISIBLE
CONTROL "List2",IDC_SERVER_CYCLE_LIST,"SysListView32",LVS_REPORT |
LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER |
WS_BORDER | WS_TABSTOP,165,30,290,178
LTEXT "Server Cycle List",IDC_STATIC_SERVER_CYCLE,280,10,54,8
PUSHBUTTON "Add Rule",IDC_CYCLE_ADD,200,215,61,20
PUSHBUTTON "Remove Rule",IDC_CYCLE_REMOVE,165,240,61,20
PUSHBUTTON "Move Up",IDC_CYCLE_MOVE_UP,315,215,61,20
PUSHBUTTON "Move Down",IDC_CYCLE_MOVE_DOWN,315,240,61,20
PUSHBUTTON "Save",IDC_CYCLE_SAVE,395,240,61,20
LTEXT "NFO File List",IDC_STATIC_NFO_LIST,50,10,41,8
CONTROL "",IDC_STATIC_SEPARATOR,"Static",SS_BLACKRECT |
SS_SUNKEN,150,5,1,254,WS_EX_STATICEDGE
PUSHBUTTON "Remove All Rules",IDC_CYCLE_REMOVE_ALL,235,240,61,20
PUSHBUTTON "Restore",IDC_CYCLE_RESTORE,395,215,61,20
CONTROL "",IDC_STATIC_SEPARATOR2,"Static",SS_BLACKRECT |
SS_SUNKEN,305,215,1,44,WS_EX_STATICEDGE
CONTROL "",IDC_STATIC_SEPARATOR3,"Static",SS_BLACKRECT |
SS_SUNKEN,385,215,1,44,WS_EX_STATICEDGE
END
IDD_NFOPROPERTY DIALOG DISCARDABLE 0, 0, 422, 330
STYLE DS_MODALFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP |
WS_CAPTION | WS_SYSMENU
CAPTION "NFO Properties"
FONT 8, "MS Sans Serif"
BEGIN
PUSHBUTTON "Save",IDOK,365,5,50,14
PUSHBUTTON "Cancel",IDCANCEL,365,30,50,14
LTEXT "Filename:",IDC_STATIC_NFO_FILENAME,10,5,30,15
LTEXT "Author:",IDC_STATIC_NFO_AUTHOR,10,25,30,15
LTEXT "Map Link:",IDC_STATIC_NFO_LINK,10,45,35,15
LTEXT "Map Name:",IDC_STATIC_NFO_LONGNAME,10,65,40,15
LTEXT "Mission Info:",IDC_STATIC_NFO_INFO,215,25,40,15
EDITTEXT IDC_NFO_AUTHOR,40,25,155,15,ES_READONLY
EDITTEXT IDC_NFO_INFO,260,25,95,15,ES_READONLY
EDITTEXT IDC_NFO_LINK,50,45,305,15,ES_READONLY
EDITTEXT IDC_NFO_LONGNAME,55,65,300,15,ES_READONLY
CONTROL "List2",IDC_NFO_PROPERTY_LIST,"SysListView32",LVS_REPORT |
LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER |
WS_BORDER | WS_TABSTOP,10,95,345,65
CONTROL "List3",IDC_NFO_TEAM_LIST,"SysListView32",LVS_REPORT |
LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER |
WS_BORDER | WS_TABSTOP,10,175,345,65
PUSHBUTTON "Edit Rule",IDC_NFO_EDIT_RULE,365,120,50,15
PUSHBUTTON "Add Rule",IDC_NFO_ADD_RULE,365,95,50,15
PUSHBUTTON "Add Team",IDC_NFO_ADD_TEAM,365,175,50,15
PUSHBUTTON "Edit Team",IDC_NFO_EDIT_TEAM,365,200,50,15
LTEXT "Scenario Rules:",IDC_STATIC_RULE,10,85,55,10
LTEXT "Team Rules:",IDC_STATIC_TEAM,10,165,40,10
PUSHBUTTON "Remove Rule",IDC_NFO_REMOVE_RULE,365,145,50,15
PUSHBUTTON "Remove Team",IDC_NFO_REMOVE_TEAM,365,225,50,15
CONTROL "List3",IDC_NFO_BOT_LIST,"SysListView32",LVS_REPORT |
LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER |
WS_BORDER | WS_TABSTOP,10,255,345,65
PUSHBUTTON "Add Bot",IDC_NFO_ADD_BOT,365,255,50,15
PUSHBUTTON "Edit Bot",IDC_NFO_EDIT_BOT,365,280,50,15
LTEXT "Bot Rules:",IDC_STATIC_BOT,10,245,40,10
PUSHBUTTON "Remove Bot",IDC_NFO_REMOVE_BOT,365,305,50,15
PUSHBUTTON "Restore",IDC_RESTORE,365,60,50,15
LTEXT "Static",IDC_NFO_NAME,45,5,180,15
END
IDD_NFORULE DIALOG DISCARDABLE 0, 0, 302, 206
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Rule"
FONT 8, "MS Sans Serif"
BEGIN
DEFPUSHBUTTON "OK",IDOK,185,185,50,14
PUSHBUTTON "Cancel",IDCANCEL,245,185,50,14
LTEXT "Name:",IDC_STATIC_RULE_NAME,5,5,20,15
EDITTEXT IDC_RULE_NAME,30,5,95,15,ES_AUTOHSCROLL
LTEXT "Rule Set:",IDC_STATIC_RULE_SET,145,5,30,15
LTEXT "Team Count:",IDC_STATIC_TEAM_COUNT,5,25,45,15
COMBOBOX IDC_TEAM_COUNT,55,25,50,80,CBS_DROPDOWNLIST |
WS_DISABLED | WS_VSCROLL | WS_TABSTOP
LTEXT "Scenario Text:",IDC_STATIC_TEXT,5,45,50,15
EDITTEXT IDC_SCENARIO_TEXT,55,45,240,15,ES_AUTOHSCROLL
LTEXT "Kill Limit Count:",IDC_STATIC_KILL_COUNT,5,65,50,15
LTEXT "Respawn Limit Count:",IDC_STATIC_RESPAWN,5,85,70,15
LTEXT "Day/Night:",IDC_STATIC_NIGHT,5,105,35,15
LTEXT "Weather:",IDC_STATIC_WEATHER,5,125,30,15
LTEXT "Radar Mode:",IDC_STATIC_RADAR,5,145,45,15
LTEXT "Stock 'Mechs Only:",IDC_STATIC_STOCK,175,65,65,15
LTEXT "Minimum Tonnage:",IDC_STATIC_MIN_TON,175,85,60,15
LTEXT "Maximum Tonnage:",IDC_STATIC_MAX_TON,175,105,65,15
LTEXT "Game Length:",IDC_STATIC_GAME_LENGTH,175,125,45,15
EDITTEXT IDC_KILL_LIMIT,60,65,50,15,ES_AUTOHSCROLL | ES_NUMBER
EDITTEXT IDC_RESPAWN_LIMIT,80,85,50,15,ES_AUTOHSCROLL | ES_NUMBER
COMBOBOX IDC_STOCK_MECH,245,65,50,195,CBS_DROPDOWNLIST |
WS_VSCROLL | WS_TABSTOP
COMBOBOX IDC_NIGHT,45,105,50,80,CBS_DROPDOWNLIST | WS_VSCROLL |
WS_TABSTOP
COMBOBOX IDC_WEATHER,40,125,50,80,CBS_DROPDOWNLIST | WS_VSCROLL |
WS_TABSTOP
COMBOBOX IDC_RADAR_MODE,50,145,50,80,CBS_DROPDOWNLIST |
WS_VSCROLL | WS_TABSTOP
COMBOBOX IDC_RULE_SET,180,5,115,80,CBS_DROPDOWNLIST | WS_DISABLED |
WS_VSCROLL | WS_TABSTOP
LTEXT "Scenario Name:",IDC_STATIC_MAP_NAME,145,25,52,15
EDITTEXT IDC_MAP_NAME,202,25,93,15,ES_AUTOHSCROLL
COMBOBOX IDC_MIN_TON,245,85,50,200,CBS_DROPDOWNLIST | WS_VSCROLL |
WS_TABSTOP
COMBOBOX IDC_MAX_TON,245,105,50,190,CBS_DROPDOWNLIST | WS_VSCROLL |
WS_TABSTOP
COMBOBOX IDC_GAME_LENGTH,230,125,65,105,CBS_DROPDOWNLIST |
WS_VSCROLL | WS_TABSTOP
LTEXT "Custom Script:",IDC_STATIC_SCRIPT,5,165,45,15
COMBOBOX IDC_SCRIPT,60,165,235,80,CBS_DROPDOWNLIST | WS_DISABLED |
WS_VSCROLL | WS_TABSTOP
END
IDD_NFOADDCYCLERULE DIALOG DISCARDABLE 0, 0, 186, 95
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Add Cycle Rule"
FONT 8, "MS Sans Serif"
BEGIN
DEFPUSHBUTTON "OK",IDOK,65,75,50,14
PUSHBUTTON "Cancel",IDCANCEL,125,75,50,14
LTEXT "NFO File Name",IDC_STATIC_FILE_NAME,5,5,105,15
LTEXT "Scenario Rule Name:",IDC_STATIC_MAP_NAME,5,40,110,15
COMBOBOX IDC_NFO_RULE_NAME,5,55,165,285,CBS_DROPDOWNLIST |
WS_VSCROLL | WS_TABSTOP
COMBOBOX IDC_NFO_FILE_NAME,5,20,165,285,CBS_DROPDOWNLIST |
WS_VSCROLL | WS_TABSTOP
END
IDD_NFO_ERROR DIALOG DISCARDABLE 0, 0, 257, 63
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Alert"
FONT 8, "MS Sans Serif"
BEGIN
DEFPUSHBUTTON "OK",IDOK,105,45,50,14
LTEXT "Static",IDC_STATIC_ERROR,45,15,170,22
END
IDD_NFOTEAM DIALOG DISCARDABLE 0, 0, 287, 106
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Team Rule"
FONT 8, "MS Sans Serif"
BEGIN
DEFPUSHBUTTON "OK",IDOK,170,85,50,14
PUSHBUTTON "Cancel",IDCANCEL,230,85,50,14
LTEXT "Team Number:",IDC_STATIC_TEAM_NUM,5,5,48,15
LTEXT "Maximum # of Players:",IDC_STATIC_MAX_COUNT,5,25,75,15
COMBOBOX IDC_MAX_COUNT,85,25,50,219,CBS_DROPDOWNLIST | WS_VSCROLL |
WS_TABSTOP
LTEXT "Minimum Tonnage:",IDC_STATIC_MIN_TON,5,45,60,15
LTEXT "Maximum Tonnage:",IDC_STATIC_MAX_TON,5,65,65,15
COMBOBOX IDC_MIN_TON,70,45,50,200,CBS_DROPDOWNLIST | WS_VSCROLL |
WS_TABSTOP
COMBOBOX IDC_MAX_TON,75,65,50,190,CBS_DROPDOWNLIST | WS_VSCROLL |
WS_TABSTOP
LTEXT "Skin:",IDC_STATIC_SKIN,190,5,22,15
COMBOBOX IDC_SKIN,225,5,50,260,CBS_DROPDOWNLIST | WS_VSCROLL |
WS_TABSTOP
LTEXT "Alignment:",IDC_STATIC_ALIGNMENT,190,25,37,15
COMBOBOX IDC_ALIGNMENT,230,25,50,130,CBS_DROPDOWNLIST |
WS_VSCROLL | WS_TABSTOP
COMBOBOX IDC_TEAM_NUM,55,5,25,80,CBS_DROPDOWNLIST | WS_VSCROLL |
WS_TABSTOP
LTEXT "Maximum Total Tonnage:",IDC_STATIC_TEAM_MAX_TON,5,85,80,
15
COMBOBOX IDC_TEAM_MAX_TON,90,85,50,190,CBS_DROPDOWNLIST |
WS_VSCROLL | WS_TABSTOP
END
IDD_NFOYESNO DIALOG DISCARDABLE 0, 0, 337, 66
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Exit"
FONT 8, "MS Sans Serif"
BEGIN
DEFPUSHBUTTON "Yes",IDOK,105,45,50,14
PUSHBUTTON "No",IDCANCEL,180,45,50,14
CTEXT "Static",IDC_STATIC_Q,30,10,270,22,SS_CENTERIMAGE
END
IDD_NFOBOT DIALOG DISCARDABLE 0, 0, 262, 86
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Bot"
FONT 8, "MS Sans Serif"
BEGIN
DEFPUSHBUTTON "OK",IDOK,145,65,50,14
PUSHBUTTON "Cancel",IDCANCEL,205,65,50,14
LTEXT "Bot Rule:",IDC_STATIC_BOT_RULE,5,5,30,15
LTEXT "Team #:",IDC_STATIC_BOT_TEAM,5,25,30,15
COMBOBOX IDC_TEAM,35,25,50,115,CBS_DROPDOWNLIST | WS_VSCROLL |
WS_TABSTOP
LTEXT "Minimum Tonnage:",IDC_STATIC_MIN_TON,5,45,60,15
LTEXT "Maximum Tonnage:",IDC_STATIC_MAX_TON,5,65,65,15
COMBOBOX IDC_MIN_TON,70,45,50,200,CBS_DROPDOWNLIST | WS_VSCROLL |
WS_TABSTOP
COMBOBOX IDC_MAX_TON,75,65,50,190,CBS_DROPDOWNLIST | WS_VSCROLL |
WS_TABSTOP
LTEXT "Minimum AI Level:",IDC_STATIC_MIN_LEVEL,135,25,60,15
LTEXT "Maximum AI Level:",IDC_STATIC_MAX_LEVEL,135,46,65,15
COMBOBOX IDC_MIN_LEVEL,205,25,50,200,CBS_DROPDOWNLIST |
WS_VSCROLL | WS_TABSTOP
COMBOBOX IDC_MAX_LEVEL,205,46,50,190,CBS_DROPDOWNLIST |
WS_VSCROLL | WS_TABSTOP
LTEXT "# of Bots:",IDC_STATIC_BOT_NUM,135,5,35,15
COMBOBOX IDC_BOT_NUM,175,5,50,150,CBS_DROPDOWNLIST | WS_VSCROLL |
WS_TABSTOP
EDITTEXT IDC_BOT_RULE,40,5,15,15,ES_AUTOHSCROLL | ES_READONLY
END
#ifndef _MAC
/////////////////////////////////////////////////////////////////////////////
//
// Version
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,1
PRODUCTVERSION 1,0,0,1
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x4L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904B0"
BEGIN
VALUE "CompanyName", "\0"
VALUE "FileDescription", "NFO File Editor MFC Application\0"
VALUE "FileVersion", "1, 0, 0, 1\0"
VALUE "InternalName", "NFO File Editor\0"
VALUE "LegalCopyright", "Copyright (C) 2001\0"
VALUE "LegalTrademarks", "\0"
VALUE "OriginalFilename", "NFO File Editor.EXE\0"
VALUE "ProductName", "NFO File Editor Application\0"
VALUE "ProductVersion", "1, 0, 0, 1\0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END
#endif // !_MAC
/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//
#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO DISCARDABLE
BEGIN
IDD_ABOUTBOX, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 228
TOPMARGIN, 7
BOTTOMMARGIN, 48
END
IDD_NFOFILEEDITOR_DIALOG, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 460
TOPMARGIN, 7
BOTTOMMARGIN, 259
END
IDD_NFOPROPERTY, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 415
TOPMARGIN, 7
BOTTOMMARGIN, 323
END
IDD_NFORULE, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 295
TOPMARGIN, 7
BOTTOMMARGIN, 199
END
IDD_NFOADDCYCLERULE, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 179
TOPMARGIN, 7
BOTTOMMARGIN, 88
END
IDD_NFO_ERROR, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 250
TOPMARGIN, 7
BOTTOMMARGIN, 56
END
IDD_NFOTEAM, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 280
TOPMARGIN, 7
BOTTOMMARGIN, 100
END
IDD_NFOYESNO, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 330
TOPMARGIN, 7
BOTTOMMARGIN, 59
END
IDD_NFOBOT, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 255
TOPMARGIN, 7
BOTTOMMARGIN, 79
END
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Dialog Info
//
IDD_NFOFILEEDITOR_DIALOG DLGINIT
BEGIN
IDC_NFO_MISSIONS, 0x403, 9, 0
0x694d, 0x7373, 0x6f69, 0x736e, "\000"
IDC_NFO_MISSIONS, 0x403, 14, 0
0x7355, 0x7265, 0x4d20, 0x7369, 0x6973, 0x6e6f, 0x0073,
0
END
/////////////////////////////////////////////////////////////////////////////
//
// String Table
//
STRINGTABLE DISCARDABLE
BEGIN
IDS_ABOUTBOX "&About NFO File Editor..."
END
#endif // English (U.S.) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
#define _AFX_NO_SPLITTER_RESOURCES
#define _AFX_NO_OLE_RESOURCES
#define _AFX_NO_TRACKER_RESOURCES
#define _AFX_NO_PROPERTY_RESOURCES
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE 9, 1
#pragma code_page(1252)
#endif //_WIN32
#include "res\NFO File Editor.rc2" // non-Microsoft Visual C++ edited resources
#include "afxres.rc" // Standard components
#endif
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,104 @@
// NFO File EditorDlg.h : header file
//
#if !defined(AFX_NFOFILEEDITORDLG_H__F8C11143_DAE8_4359_AC7E_99F34C8C0F45__INCLUDED_)
#define AFX_NFOFILEEDITORDLG_H__F8C11143_DAE8_4359_AC7E_99F34C8C0F45__INCLUDED_
#include "GameTypes.h"
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
/////////////////////////////////////////////////////////////////////////////
// CNFOFileEditorDlg dialog
class CNFOFileEditorDlg : public CDialog
{
// Construction
public:
CNFOFileEditorDlg(CWnd* pParent = NULL); // standard constructor
~CNFOFileEditorDlg();
// Dialog Data
//{{AFX_DATA(CNFOFileEditorDlg)
enum { IDD = IDD_NFOFILEEDITOR_DIALOG };
CButton m_RestoreButton;
CButton m_RemoveAllRuleButton;
CButton m_SaveButton;
CButton m_MoveCycleUpButton;
CButton m_RemoveRuleButton;
CButton m_MoveCycleDownButton;
CButton m_RemoveNFOButton;
CButton m_AddNFOButton;
CButton m_AddRuleButton;
CListCtrl m_CycleList;
CButton m_PropertiesButton;
CComboBox m_MissionList;
CListBox m_NFOList;
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CNFOFileEditorDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
public:
void InitGos(void);
void GetNFOList(void);
void LoadCycle(void);
void SaveCycle(void);
BOOL LoadScenario(char* nfo_name, char* nfo_text, char* scenario_name, int count);
HWND Window;
bool gosCreated;
BOOL m_bEditNFO;
BOOL m_bSaved;
// Strings
void InitStrings(void);
char* m_szScenarioName[GameTypeCount];
char* m_szScenarioGameTypeName[GameTypeCount];
char* m_szScenarioText[GameTypeCount];
char* m_szYesNo[2];
char* m_szTOD[2];
char* m_szRadar[3];
char* m_szDefault;
char* m_szNone;
int m_iTeam[GameTypeCount];
BOOL m_bBots[GameTypeCount];
// Implementation
protected:
HICON m_hIcon;
// Generated message map functions
//{{AFX_MSG(CNFOFileEditorDlg)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnSelchangeNFOMissions();
afx_msg void OnNFOProperties();
afx_msg void OnCycleAdd();
afx_msg void OnCycleRemove();
afx_msg void OnCycleMoveDown();
afx_msg void OnCycleMoveUp();
afx_msg void OnCycleSave();
afx_msg void OnNFORemove();
afx_msg void OnNFOAdd();
afx_msg void OnSelchangeNFOList();
afx_msg void OnItemchangedServerCycleList(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnDblclkNFOList();
afx_msg void OnCycleRemoveAll();
virtual void OnOK();
afx_msg void OnCycleRestore();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_NFOFILEEDITORDLG_H__F8C11143_DAE8_4359_AC7E_99F34C8C0F45__INCLUDED_)
@@ -0,0 +1,237 @@
// NFOAddCycleRuleDlg.cpp : implementation file
//
#include "stdafx.h"
#include "NFO File Editor.h"
#include "NFO File EditorDlg.h"
#include "NFOAddCycleRuleDlg.h"
#include "NFOErrorDlg.h"
#if !defined(STUFF_STUFF_HPP)
#include "Stuff\Stuff.hpp"
#endif
#include <GameOS\GameOS.hpp>
#include <MFCPlatform\MFCPlatform.hpp>
#include <Stuff\NotationFile.hpp>
#if 0 // def _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CNFOAddCycleRuleDlg dialog
CNFOAddCycleRuleDlg::CNFOAddCycleRuleDlg(CWnd* pParent /*=NULL*/)
: CDialog(CNFOAddCycleRuleDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CNFOAddCycleRuleDlg)
//}}AFX_DATA_INIT
}
void CNFOAddCycleRuleDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CNFOAddCycleRuleDlg)
DDX_Control(pDX, IDOK, m_OK);
DDX_Control(pDX, IDC_NFO_RULE_NAME, m_MapList);
DDX_Control(pDX, IDC_NFO_FILE_NAME, m_FileList);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CNFOAddCycleRuleDlg, CDialog)
//{{AFX_MSG_MAP(CNFOAddCycleRuleDlg)
ON_CBN_SELCHANGE(IDC_NFO_FILE_NAME, OnSelchangeNFOFileName)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CNFOAddCycleRuleDlg message handlers
BOOL CNFOAddCycleRuleDlg::OnInitDialog()
{
CDialog::OnInitDialog();
int value = LoadNFOFileName();
ASSERT(value == TRUE);
value = LoadNFOMapName();
ASSERT(value == TRUE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
BOOL CNFOAddCycleRuleDlg::LoadNFOFileName()
{
CNFOFileEditorDlg* pParent = (CNFOFileEditorDlg*) GetOwner();
// Get the current selected NFO
int count = pParent->m_NFOList.GetCount();
ASSERT(count != LB_ERR);
if (count == LB_ERR)
return FALSE;
// Get the name of the NFO
char filename[256];
for (int i = 0; i < count; i++)
{
int text_value = pParent->m_NFOList.GetText(i, filename);
ASSERT(text_value != LB_ERR);
if (text_value == LB_ERR)
return FALSE;
m_FileList.AddString(filename);
}
// Just set the default as the first one in the list
if (pParent->m_NFOList.GetCurSel() != -1)
m_FileList.SetCurSel(pParent->m_NFOList.GetCurSel());
else
m_FileList.SetCurSel(0);
return TRUE;
}
BOOL CNFOAddCycleRuleDlg::LoadNFOMapName()
{
CNFOFileEditorDlg* pParent = (CNFOFileEditorDlg*) GetOwner();
// Delete every item from the combo box.
while (m_MapList.GetCount())
{
m_MapList.DeleteString(0);
}
// Grab the NFO file that is selected
int curSel = m_FileList.GetCurSel();
ASSERT(curSel != LB_ERR);
if (curSel == LB_ERR)
return FALSE;
char filename[256];
int value = m_FileList.GetLBText(curSel, filename);
ASSERT(value != CB_ERR);
if (value == CB_ERR)
return FALSE;
// choose the directory we need
Stuff::MString nfo_name;
int mission = pParent->m_MissionList.GetCurSel();
switch (mission)
{
case 0:
nfo_name = "resource\\Missions\\";
break;
case 1:
nfo_name = "resource\\UserMissions\\";
break;
default:
ASSERT(!"Mission selection is invalid!");
return FALSE;
}
nfo_name += filename;
Stuff::NotationFile notefile(nfo_name, Stuff::NotationFile::Standard, true);
// Grab the scenarios from the selected NFO file
Stuff::Page* page = notefile.FindPage("scenarios");
if (page != NULL)
{
Stuff::ChainIteratorOf<Stuff::Note*> *note_iterator = page->MakeNoteIterator();
Stuff::Note *note;
while ((note = note_iterator->ReadAndNext()) != NULL)
{
Stuff::NotationFile scenario_file;
note->GetEntry(&scenario_file);
Stuff::Page *server_page = scenario_file.FindPage("server");
if (server_page)
{
const char* scenario_name = note->GetName();
m_MapList.AddString(scenario_name);
}
}
}
else
{
m_MapList.EnableWindow(FALSE);
m_OK.EnableWindow(FALSE);
}
// Just set the default as the first one in the list
m_MapList.SetCurSel(0);
return TRUE;
}
void CNFOAddCycleRuleDlg::OnSelchangeNFOFileName()
{
int value = LoadNFOMapName();
ASSERT(value == TRUE);
}
void CNFOAddCycleRuleDlg::OnOK()
{
CNFOFileEditorDlg* pParent = (CNFOFileEditorDlg*) GetOwner();
// save the NFO file name
int curSel = m_FileList.GetCurSel();
ASSERT(curSel != LB_ERR);
if (curSel == LB_ERR)
return;
char filename[256];
int value = m_FileList.GetLBText(curSel, filename);
ASSERT(value != CB_ERR);
if (value == CB_ERR)
return;
// And save the rule name from that NFO file
curSel = m_MapList.GetCurSel();
ASSERT(curSel != LB_ERR);
if (curSel == LB_ERR)
return;
char mapname[256];
value = m_MapList.GetLBText(curSel, mapname);
ASSERT(value != CB_ERR);
if (value == CB_ERR)
return;
// choose the directory we need
Stuff::MString nfo_name;
int mission = pParent->m_MissionList.GetCurSel();
switch (mission)
{
case 0:
nfo_name = "resource\\Missions\\";
break;
case 1:
nfo_name = "resource\\UserMissions\\";
break;
default:
ASSERT(!"Mission selection is invalid!");
return;
}
nfo_name += filename;
if (pParent->LoadScenario(nfo_name, filename, mapname, pParent->m_CycleList.GetItemCount()) == TRUE)
{
CDialog::OnOK();
return;
}
// We encounter some errors, so print out an error message and return
CNFOErrorDlg dlg;
dlg.m_Error = "The scenario selected is invalid. It will not be added to the Server Cycle List.";
dlg.DoModal();
CDialog::OnOK();
}
@@ -0,0 +1,54 @@
#if !defined(AFX_NFOADDCYCLERULEDLG_H__CC7BBF35_AC2B_423B_AACC_72345167FAD8__INCLUDED_)
#define AFX_NFOADDCYCLERULEDLG_H__CC7BBF35_AC2B_423B_AACC_72345167FAD8__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// NFOAddCycleRuleDlg.h : header file
//
/////////////////////////////////////////////////////////////////////////////
// CNFOAddCycleRuleDlg dialog
class CNFOAddCycleRuleDlg : public CDialog
{
// Construction
public:
CNFOAddCycleRuleDlg(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(CNFOAddCycleRuleDlg)
enum { IDD = IDD_NFOADDCYCLERULE };
CButton m_OK;
CComboBox m_MapList;
CComboBox m_FileList;
//}}AFX_DATA
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CNFOAddCycleRuleDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
public:
BOOL LoadNFOFileName();
BOOL LoadNFOMapName();
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(CNFOAddCycleRuleDlg)
virtual BOOL OnInitDialog();
afx_msg void OnSelchangeNFOFileName();
virtual void OnOK();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_NFOADDCYCLERULEDLG_H__CC7BBF35_AC2B_423B_AACC_72345167FAD8__INCLUDED_)
@@ -0,0 +1,349 @@
// NFOBotDlg.cpp : implementation file
//
#include "stdafx.h"
#include "NFO File Editor.h"
#include "NFO File EditorDlg.h"
#include "NFOPropertiesDlg.h"
#include "NFOBotDlg.h"
#include "NFOErrorDlg.h"
#if 0 // def _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CNFOBotDlg dialog
CNFOBotDlg::CNFOBotDlg(CWnd* pParent /*=NULL*/)
: CDialog(CNFOBotDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CNFOBotDlg)
//}}AFX_DATA_INIT
}
void CNFOBotDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CNFOBotDlg)
DDX_Control(pDX, IDC_BOT_RULE, m_RuleNum);
DDX_Control(pDX, IDC_BOT_NUM, m_BotCount);
DDX_Control(pDX, IDC_TEAM, m_Team);
DDX_Control(pDX, IDC_MIN_TON, m_MinTon);
DDX_Control(pDX, IDC_MIN_LEVEL, m_MinLevel);
DDX_Control(pDX, IDC_MAX_TON, m_MaxTon);
DDX_Control(pDX, IDC_MAX_LEVEL, m_MaxLevel);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CNFOBotDlg, CDialog)
//{{AFX_MSG_MAP(CNFOBotDlg)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CNFOBotDlg message handlers
void CNFOBotDlg::OnOK()
{
CNFOPropertiesDlg* pParent = (CNFOPropertiesDlg*) GetOwner();
// check the validity of the min and max tonnage
if ((m_MinTon.GetCurSel() != m_MinTon.GetCount() - 1) &&
(m_MaxTon.GetCurSel() != m_MaxTon.GetCount() - 1))
{
if (m_MinTon.GetCurSel() > m_MaxTon.GetCurSel())
{
CNFOErrorDlg dlg;
dlg.m_Error = "The minimum tonnage cannot be larger than the maximum tonnage.";
dlg.DoModal();
return;
}
}
// check the validity of the min and max level
if ((m_MinLevel.GetCurSel() != m_MinLevel.GetCount() - 1) &&
(m_MaxLevel.GetCurSel() != m_MaxLevel.GetCount() - 1))
{
if (m_MinLevel.GetCurSel() > m_MaxLevel.GetCurSel())
{
CNFOErrorDlg dlg;
dlg.m_Error = "The minimum AI level cannot be larger than the maximum AI level.";
dlg.DoModal();
return;
}
}
char bot_count[256];
char team[256];
char max_ton[256];
char min_ton[256];
char max_level[256];
char min_level[256];
// make sure that we get everything from the dialog
m_BotCount.GetLBText(m_BotCount.GetCurSel(), bot_count);
if (m_Team.GetCurSel() != -1)
m_Team.GetLBText(m_Team.GetCurSel(), team);
else
team[0] = '\0';
if (m_MaxTon.GetCurSel() != m_MaxTon.GetCount() - 1)
m_MaxTon.GetLBText(m_MaxTon.GetCurSel(), max_ton);
else
max_ton[0] = '\0';
if (m_MinTon.GetCurSel() != m_MinTon.GetCount() - 1)
m_MinTon.GetLBText(m_MinTon.GetCurSel(), min_ton);
else
min_ton[0] = '\0';
if (m_MaxLevel.GetCurSel() != m_MaxLevel.GetCount() - 1)
m_MaxLevel.GetLBText(m_MaxLevel.GetCurSel(), max_level);
else
max_level[0] = '\0';
if (m_MinLevel.GetCurSel() != m_MinLevel.GetCount() - 1)
m_MinLevel.GetLBText(m_MinLevel.GetCurSel(), min_level);
else
min_level[0] = '\0';
// check the validity of the team min and max level against the bots
if (team[0] != '\0')
{
int team_num = atoi(team) - 1;
TEAM_INFO* pInfo = pParent->FindTeamInfo(pParent->m_PropertyList.GetSelectionMark());
ASSERT(pInfo);
for (int i = 0; i < pInfo->team_count; i++)
{
if ((team_num + 1) == pInfo->team_num[team_num])
{
if ((min_ton[0] != '\0') && (pInfo->max_ton[team_num] != -1))
{
int min_ton_num = atoi(min_ton);
if (min_ton_num > pInfo->max_ton[team_num])
{
char team_max_ton[256];
_itoa(pInfo->max_ton[team_num], team_max_ton, 10);
CNFOErrorDlg dlg;
dlg.m_Error = "The minimum bot tonnage cannot be larger than the maximum team tonnage of ";
dlg.m_Error += team_max_ton;
dlg.m_Error += ".";
dlg.DoModal();
return;
}
}
if ((max_ton[0] != '\0') && (pInfo->min_ton[team_num] != -1))
{
int max_ton_num = atoi(max_ton);
if (max_ton_num < pInfo->min_ton[team_num])
{
char team_min_ton[256];
_itoa(pInfo->min_ton[team_num], team_min_ton, 10);
CNFOErrorDlg dlg;
dlg.m_Error = "The maximum bot tonnage cannot be smaller than the minimum team tonnage of ";
dlg.m_Error += team_min_ton;
dlg.m_Error += ".";
dlg.DoModal();
return;
}
}
break;
}
}
}
// store this in the team list
int curSel;
if (pParent->m_bEditRule)
{
curSel = pParent->m_BotList.GetSelectionMark();
}
else
{
char intbuf[256];
curSel = pParent->m_BotList.GetItemCount();
pParent->m_BotList.InsertItem(curSel, _itoa(curSel, intbuf, 10), 0);
}
pParent->m_BotList.SetItemText(curSel, 1, bot_count);
pParent->m_BotList.SetItemText(curSel, 2, team);
pParent->m_BotList.SetItemText(curSel, 3, max_ton);
pParent->m_BotList.SetItemText(curSel, 4, min_ton);
pParent->m_BotList.SetItemText(curSel, 5, max_level);
pParent->m_BotList.SetItemText(curSel, 6, min_level);
// Once we are done setting the text in the team list, we need to save the team data
int curPSel = pParent->m_PropertyList.GetSelectionMark();
BOT_INFO* pBotdata = pParent->FindBotInfo(curPSel);
ASSERT(pBotdata != NULL);
int count = pParent->m_BotList.GetItemCount();
for (int i = 0; i < count; i++)
{
pParent->m_BotList.GetItemText(i, 1, bot_count, 256);
pParent->m_BotList.GetItemText(i, 2, team, 256);
pParent->m_BotList.GetItemText(i, 3, max_ton, 256);
pParent->m_BotList.GetItemText(i, 4, min_ton, 256);
pParent->m_BotList.GetItemText(i, 5, max_level, 256);
pParent->m_BotList.GetItemText(i, 6, min_level, 256);
char cur_count[256];
pParent->m_BotList.GetItemText(i, 0, cur_count, 256);
int cur_num = atoi(cur_count);
if (bot_count[0] != '\0')
pBotdata->bot_count[cur_num] = atoi(bot_count);
else
pBotdata->bot_count[cur_num] = -1;
if (team[0] != '\0')
pBotdata->team_num[cur_num] = atoi(team);
else
pBotdata->team_num[cur_num] = -1;
if (max_ton[0] != '\0')
pBotdata->max_ton[cur_num] = atoi(max_ton);
else
pBotdata->max_ton[cur_num] = -1;
if (min_ton[0] != '\0')
pBotdata->min_ton[cur_num] = atoi(min_ton);
else
pBotdata->min_ton[cur_num] = -1;
if (max_level[0] != '\0')
pBotdata->max_level[cur_num] = atoi(max_level);
else
pBotdata->max_level[cur_num] = -1;
if (min_level[0] != '\0')
pBotdata->min_level[cur_num] = atoi(min_level);
else
pBotdata->min_level[cur_num] = -1;
}
pBotdata->rule_count = count;
CDialog::OnOK();
}
BOOL CNFOBotDlg::OnInitDialog()
{
CDialog::OnInitDialog();
CNFOPropertiesDlg* pParent = (CNFOPropertiesDlg*) GetOwner();
CNFOFileEditorDlg* pPParent = (CNFOFileEditorDlg*) pParent->GetOwner();
char intbuf[256];
int i;
// Handle team option first
char team_allowed[256];
char team_count[256];
pParent->m_PropertyList.GetItemText(pParent->m_PropertyList.GetSelectionMark(), 3, team_allowed, 256);
pParent->m_PropertyList.GetItemText(pParent->m_PropertyList.GetSelectionMark(), 4, team_count, 256);
if (_stricmp(team_allowed, pPParent->m_szYesNo[0]) == 0)
{
m_Team.SetCurSel(-1);
m_Team.EnableWindow(FALSE);
}
else
{
for (i = 1; i < atoi(team_count) + 1; i++)
m_Team.AddString(_itoa(i, intbuf, 10));
m_Team.SetCurSel(0);
}
// inits all the options
for (i = 1; i < 15; i++)
m_BotCount.AddString(_itoa(i, intbuf, 10));
for (i = 25; i <= 100; i += 5)
{
m_MaxTon.AddString(_itoa(i, intbuf, 10));
m_MinTon.AddString(_itoa(i, intbuf, 10));
}
for (i = 0; i < 10; i++)
{
m_MaxLevel.AddString(_itoa(i, intbuf, 10));
m_MinLevel.AddString(_itoa(i, intbuf, 10));
}
m_MaxTon.AddString(pPParent->m_szDefault);
m_MinTon.AddString(pPParent->m_szDefault);
m_MaxLevel.AddString(pPParent->m_szDefault);
m_MinLevel.AddString(pPParent->m_szDefault);
// now either grab the info or set to default
int curSel;
if (pParent->m_bEditRule)
{
// we are editing, so grab the info
curSel = pParent->m_BotList.GetSelectionMark();
char rule_num[256];
char bot_count[256];
char team[256];
char max_ton[256];
char min_ton[256];
char max_level[256];
char min_level[256];
pParent->m_BotList.GetItemText(curSel, 0, rule_num, 256);
pParent->m_BotList.GetItemText(curSel, 1, bot_count, 256);
pParent->m_BotList.GetItemText(curSel, 2, team, 256);
pParent->m_BotList.GetItemText(curSel, 3, max_ton, 256);
pParent->m_BotList.GetItemText(curSel, 4, min_ton, 256);
pParent->m_BotList.GetItemText(curSel, 5, max_level, 256);
pParent->m_BotList.GetItemText(curSel, 6, min_level, 256);
int found = m_BotCount.FindStringExact(0, bot_count);
if (found != CB_ERR)
m_BotCount.SetCurSel(found);
else
m_BotCount.SetCurSel(0);
found = m_Team.FindStringExact(0, team);
if (found != CB_ERR)
m_Team.SetCurSel(found);
else
m_Team.SetCurSel(0);
found = m_MaxTon.FindStringExact(0, max_ton);
if (found != CB_ERR)
m_MaxTon.SetCurSel(found);
else
m_MaxTon.SetCurSel(m_MaxTon.GetCount() - 1);
found = m_MinTon.FindStringExact(0, min_ton);
if (found != CB_ERR)
m_MinTon.SetCurSel(found);
else
m_MinTon.SetCurSel(m_MinTon.GetCount() - 1);
found = m_MaxLevel.FindStringExact(0, max_level);
if (found != CB_ERR)
m_MaxLevel.SetCurSel(found);
else
m_MaxLevel.SetCurSel(m_MaxLevel.GetCount() - 1);
found = m_MinLevel.FindStringExact(0, min_level);
if (found != CB_ERR)
m_MinLevel.SetCurSel(found);
else
m_MinLevel.SetCurSel(m_MinLevel.GetCount() - 1);
// set the current team rule number
m_RuleNum.ReplaceSel(rule_num);
}
else
{
// we are adding a new one, so set them to default
curSel = pParent->m_BotList.GetItemCount();
m_BotCount.SetCurSel(0);
m_MaxTon.SetCurSel(m_MaxTon.GetCount() - 1);
m_MinTon.SetCurSel(m_MinTon.GetCount() - 1);
m_MaxLevel.SetCurSel(m_MaxLevel.GetCount() - 1);
m_MinLevel.SetCurSel(m_MinLevel.GetCount() - 1);
// set the current team rule number
m_RuleNum.ReplaceSel(_itoa(curSel, intbuf, 10));
}
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
@@ -0,0 +1,53 @@
#if !defined(AFX_NFOBOTDLG_H__FDC37140_0F42_11D5_9D43_444553540000__INCLUDED_)
#define AFX_NFOBOTDLG_H__FDC37140_0F42_11D5_9D43_444553540000__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// NFOBotDlg.h : header file
//
/////////////////////////////////////////////////////////////////////////////
// CNFOBotDlg dialog
class CNFOBotDlg : public CDialog
{
// Construction
public:
CNFOBotDlg(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(CNFOBotDlg)
enum { IDD = IDD_NFOBOT };
CEdit m_RuleNum;
CComboBox m_BotCount;
CComboBox m_Team;
CComboBox m_MinTon;
CComboBox m_MinLevel;
CComboBox m_MaxTon;
CComboBox m_MaxLevel;
//}}AFX_DATA
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CNFOBotDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(CNFOBotDlg)
virtual void OnOK();
virtual BOOL OnInitDialog();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_NFOBOTDLG_H__FDC37140_0F42_11D5_9D43_444553540000__INCLUDED_)
@@ -0,0 +1,40 @@
// NFOErrorDlg.cpp : implementation file
//
#include "stdafx.h"
#include "NFO File Editor.h"
#include "NFOErrorDlg.h"
#if 0 // def _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CNFOErrorDlg dialog
CNFOErrorDlg::CNFOErrorDlg(CWnd* pParent /*=NULL*/)
: CDialog(CNFOErrorDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CNFOErrorDlg)
m_Error = _T("");
//}}AFX_DATA_INIT
}
void CNFOErrorDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CNFOErrorDlg)
DDX_Text(pDX, IDC_STATIC_ERROR, m_Error);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CNFOErrorDlg, CDialog)
//{{AFX_MSG_MAP(CNFOErrorDlg)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
@@ -0,0 +1,45 @@
#if !defined(AFX_NFOERRORDLG_H__FD32A87B_DAE2_4230_ABF9_C4546177DEF8__INCLUDED_)
#define AFX_NFOERRORDLG_H__FD32A87B_DAE2_4230_ABF9_C4546177DEF8__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// NFOErrorDlg.h : header file
//
/////////////////////////////////////////////////////////////////////////////
// CNFOErrorDlg dialog
class CNFOErrorDlg : public CDialog
{
// Construction
public:
CNFOErrorDlg(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(CNFOErrorDlg)
enum { IDD = IDD_NFO_ERROR };
CString m_Error;
//}}AFX_DATA
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CNFOErrorDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(CNFOErrorDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_NFOERRORDLG_H__FD32A87B_DAE2_4230_ABF9_C4546177DEF8__INCLUDED_)
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,135 @@
#if !defined(AFX_NFOPROPERTIESDLG_H__7D0F2A09_E333_46EC_98EA_63240423ECB0__INCLUDED_)
#define AFX_NFOPROPERTIESDLG_H__7D0F2A09_E333_46EC_98EA_63240423ECB0__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// NFOPropertiesDlg.h : header file
//
typedef struct _TEAM_INFO
{
int team_count;
int team_num[8];
int max_ton[8];
int min_ton[8];
int max_total_ton[8];
int max_team_count[8];
char skin[8];
int alignment[8];
_TEAM_INFO* pNext;
} TEAM_INFO;
typedef struct _BOT_INFO
{
int rule_count;
int bot_count[14];
int team_num[14];
int max_ton[14];
int min_ton[14];
int max_level[14];
int min_level[14];
_BOT_INFO* pNext;
} BOT_INFO;
typedef struct _SCRIPT_INFO
{
char script[256];
_SCRIPT_INFO* pNext;
} SCRIPT_INFO;
/////////////////////////////////////////////////////////////////////////////
// CNFOPropertiesDlg dialog
class CNFOPropertiesDlg : public CDialog
{
// Construction
public:
CNFOPropertiesDlg(CWnd* pParent = NULL); // standard constructor
~CNFOPropertiesDlg();
// Dialog Data
//{{AFX_DATA(CNFOPropertiesDlg)
enum { IDD = IDD_NFOPROPERTY };
CStatic m_FileName;
CButton m_Restore;
CButton m_RemoveBot;
CButton m_EditBot;
CListCtrl m_BotList;
CButton m_AddBot;
CButton m_RemoveTeam;
CButton m_RemoveRule;
CButton m_EditTeam;
CButton m_EditRule;
CButton m_AddTeam;
CButton m_AddRule;
CListCtrl m_TeamList;
CListCtrl m_PropertyList;
CEdit m_LongName;
CEdit m_Link;
CEdit m_Info;
CEdit m_Author;
//}}AFX_DATA
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CNFOPropertiesDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
public:
TEAM_INFO* m_pTeamInfo;
BOT_INFO* m_pBotInfo;
BOOL m_bTypeAvailable[GameTypeCount];
SCRIPT_INFO* m_pScriptInfo[GameTypeCount];
BOOL m_bSinglePlayer;
INT m_iMaxTeam[GameTypeCount];
INT m_iMaxAlignment[GameTypeCount];
BOOL m_bEditRule;
BOOL LoadNFO();
BOOL SaveNFO();
void RefreshBotList(BOT_INFO* pBotInfo, int nSelected);
TEAM_INFO* FindTeamInfo(int index);
BOOL AppendTeamInfo(TEAM_INFO* info);
BOOL RemoveTeamInfo(int index);
void RemoveAllTeamInfo();
BOT_INFO* FindBotInfo(int index);
BOOL AppendBotInfo(BOT_INFO* info);
BOOL RemoveBotInfo(int index);
void RemoveAllBotInfo();
BOOL RemoveRuleFromBotInfo(BOT_INFO* info, int index);
void RemoveAllScriptInfo();
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(CNFOPropertiesDlg)
virtual BOOL OnInitDialog();
afx_msg void OnItemchangedNFOPropertyList(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnNFOEditRule();
afx_msg void OnNFOAddRule();
virtual void OnOK();
afx_msg void OnNFOAddTeam();
afx_msg void OnNFOEditTeam();
afx_msg void OnNFORemoveRule();
afx_msg void OnNFORemoveTeam();
afx_msg void OnItemchangedNFOTeamList(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnNFOAddBot();
afx_msg void OnItemchangedNFOBotList(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnNFOEditBot();
afx_msg void OnNFORemoveBot();
afx_msg void OnRestore();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_NFOPROPERTIESDLG_H__7D0F2A09_E333_46EC_98EA_63240423ECB0__INCLUDED_)
@@ -0,0 +1,580 @@
// NFORuleDlg.cpp : implementation file
//
#include "stdafx.h"
#include "NFO File Editor.h"
#include "NFO File EditorDlg.h"
#include "NFOPropertiesDlg.h"
#include "NFORuleDlg.h"
#include "NFOErrorDlg.h"
#if 0 // def _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CNFORuleDlg dialog
CNFORuleDlg::CNFORuleDlg(CWnd* pParent /*=NULL*/)
: CDialog(CNFORuleDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CNFORuleDlg)
//}}AFX_DATA_INIT
}
void CNFORuleDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CNFORuleDlg)
DDX_Control(pDX, IDC_SCRIPT, m_Script);
DDX_Control(pDX, IDC_MIN_TON, m_MinTon);
DDX_Control(pDX, IDC_MAX_TON, m_MaxTon);
DDX_Control(pDX, IDC_GAME_LENGTH, m_GameLength);
DDX_Control(pDX, IDC_MAP_NAME, m_MapName);
DDX_Control(pDX, IDC_WEATHER, m_Weather);
DDX_Control(pDX, IDC_TEAM_COUNT, m_TeamCount);
DDX_Control(pDX, IDC_STOCK_MECH, m_StockMech);
DDX_Control(pDX, IDC_SCENARIO_TEXT, m_ScenarioText);
DDX_Control(pDX, IDC_RULE_SET, m_RuleSet);
DDX_Control(pDX, IDC_RULE_NAME, m_RuleName);
DDX_Control(pDX, IDC_RESPAWN_LIMIT, m_RespawnLimit);
DDX_Control(pDX, IDC_RADAR_MODE, m_RadarMode);
DDX_Control(pDX, IDC_NIGHT, m_Night);
DDX_Control(pDX, IDC_KILL_LIMIT, m_KillLimit);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CNFORuleDlg, CDialog)
//{{AFX_MSG_MAP(CNFORuleDlg)
ON_CBN_SELCHANGE(IDC_RULE_SET, OnSelChangeRuleSet)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CNFORuleDlg message handlers
BOOL CNFORuleDlg::OnInitDialog()
{
CDialog::OnInitDialog();
CNFOPropertiesDlg* pParent = (CNFOPropertiesDlg*) GetOwner();
CNFOFileEditorDlg* pPParent = (CNFOFileEditorDlg*) pParent->GetOwner();
// set all the options
char intbuf[256];
for (int i = 0; i < GameTypeCount; i++)
{
if (pParent->m_bTypeAvailable[i] == TRUE)
m_RuleSet.AddString(pPParent->m_szScenarioName[i]);
}
m_Night.AddString(pPParent->m_szTOD[0]);
m_Night.AddString(pPParent->m_szTOD[1]);
m_Night.AddString(pPParent->m_szDefault);
m_Weather.AddString(pPParent->m_szYesNo[0]);
m_Weather.AddString(pPParent->m_szYesNo[1]);
m_Weather.AddString(pPParent->m_szDefault);
m_RadarMode.AddString(pPParent->m_szRadar[0]);
m_RadarMode.AddString(pPParent->m_szRadar[1]);
m_RadarMode.AddString(pPParent->m_szRadar[2]);
m_RadarMode.AddString(pPParent->m_szDefault);
m_StockMech.AddString(pPParent->m_szYesNo[0]);
m_StockMech.AddString(pPParent->m_szYesNo[1]);
m_StockMech.AddString(pPParent->m_szDefault);
for (i = 25; i <= 100; i += 5)
{
m_MaxTon.AddString(_itoa(i, intbuf, 10));
m_MinTon.AddString(_itoa(i, intbuf, 10));
}
m_MaxTon.AddString(pPParent->m_szDefault);
m_MinTon.AddString(pPParent->m_szDefault);
m_GameLength.AddString("1");
m_GameLength.AddString("2");
m_GameLength.AddString("5");
m_GameLength.AddString("10");
m_GameLength.AddString("15");
m_GameLength.AddString("30");
m_GameLength.AddString("60");
m_GameLength.AddString("90");
m_GameLength.AddString("120");
m_GameLength.AddString(pPParent->m_szDefault);
// kill limit and respawn limit max is 99
m_KillLimit.SetLimitText(2);
m_RespawnLimit.SetLimitText(2);
// Text limit is 256
m_MapName.SetLimitText(256);
m_RuleName.SetLimitText(256);
// either grab the info or set to default
if (pParent->m_bEditRule)
{
// grab the info from the property list
int curSel = pParent->m_PropertyList.GetSelectionMark();
char scenario_name[256];
char rule_set_name[256];
char scenario_read_name[256];
char team_count[256];
char scenario_text[256];
char kill_count[256];
char respawn_count[256];
char night[256];
char weather[256];
char radar_mode[256];
char stock_mech[256];
char max_ton[256];
char min_ton[256];
char game_len[256];
char script[256];
int found;
pParent->m_PropertyList.GetItemText(curSel, 0, scenario_name, 256);
pParent->m_PropertyList.GetItemText(curSel, 1, rule_set_name, 256);
pParent->m_PropertyList.GetItemText(curSel, 2, scenario_read_name, 256);
pParent->m_PropertyList.GetItemText(curSel, 4, team_count, 256);
pParent->m_PropertyList.GetItemText(curSel, 5, scenario_text, 256);
pParent->m_PropertyList.GetItemText(curSel, 7, kill_count, 256);
pParent->m_PropertyList.GetItemText(curSel, 9, respawn_count, 256);
pParent->m_PropertyList.GetItemText(curSel, 10, night, 256);
pParent->m_PropertyList.GetItemText(curSel, 11, weather, 256);
pParent->m_PropertyList.GetItemText(curSel, 12, radar_mode, 256);
pParent->m_PropertyList.GetItemText(curSel, 13, stock_mech, 256);
pParent->m_PropertyList.GetItemText(curSel, 14, max_ton, 256);
pParent->m_PropertyList.GetItemText(curSel, 15, min_ton, 256);
pParent->m_PropertyList.GetItemText(curSel, 16, game_len, 256);
pParent->m_PropertyList.GetItemText(curSel, 17, script, 256);
m_RuleSet.SetCurSel(m_RuleSet.FindStringExact(0, rule_set_name));
for (int i = 0; i < GameTypeCount; i++)
{
if (_stricmp(pPParent->m_szScenarioName[i], rule_set_name) == 0)
{
// do team
for (int j = 1; j <= pParent->m_iMaxTeam[i]; j++)
m_TeamCount.AddString(_itoa(j, intbuf, 10));
// do script
SCRIPT_INFO *pInfo = pParent->m_pScriptInfo[i];
while (pInfo != NULL)
{
m_Script.AddString(pInfo->script);
pInfo = pInfo->pNext;
}
break;
}
}
if (m_TeamCount.GetCount() == 0)
m_TeamCount.AddString("0");
if (m_Script.GetCount() == 0)
{
m_Script.AddString("\0");
m_Script.EnableWindow(FALSE);
}
else
m_Script.EnableWindow(TRUE);
found = m_TeamCount.FindStringExact(0, team_count);
if (found != CB_ERR)
m_TeamCount.SetCurSel(found);
else
m_TeamCount.SetCurSel(m_TeamCount.GetCount() - 1);
found = m_Night.FindStringExact(0, night);
if (found != CB_ERR)
m_Night.SetCurSel(found);
else
m_Night.SetCurSel(m_Night.GetCount() - 1);
found = m_Weather.FindStringExact(0, weather);
if (found != CB_ERR)
m_Weather.SetCurSel(found);
else
m_Weather.SetCurSel(m_Weather.GetCount() - 1);
found = m_RadarMode.FindStringExact(0, radar_mode);
if (found != CB_ERR)
m_RadarMode.SetCurSel(found);
else
m_RadarMode.SetCurSel(m_RadarMode.GetCount() - 1);
found = m_StockMech.FindStringExact(0, stock_mech);
if (found != CB_ERR)
m_StockMech.SetCurSel(found);
else
m_StockMech.SetCurSel(m_StockMech.GetCount() - 1);
found = m_MaxTon.FindStringExact(0, max_ton);
if (found != CB_ERR)
m_MaxTon.SetCurSel(found);
else
m_MaxTon.SetCurSel(m_MaxTon.GetCount() - 1);
found = m_MinTon.FindStringExact(0, min_ton);
if (found != CB_ERR)
m_MinTon.SetCurSel(found);
else
m_MinTon.SetCurSel(m_MinTon.GetCount() - 1);
found = m_GameLength.FindStringExact(0, game_len);
if (found != CB_ERR)
m_GameLength.SetCurSel(found);
else
m_GameLength.SetCurSel(m_GameLength.GetCount() - 1);
found = m_Script.FindStringExact(0, script);
if (found != CB_ERR)
m_Script.SetCurSel(found);
else
m_Script.SetCurSel(m_Script.GetCount() - 1);
m_RuleName.ReplaceSel(scenario_name);
m_MapName.ReplaceSel(scenario_read_name);
m_ScenarioText.ReplaceSel(scenario_text);
m_KillLimit.ReplaceSel(kill_count);
m_RespawnLimit.ReplaceSel(respawn_count);
// Do not allow rule name edit
m_RuleName.SetReadOnly();
m_ScenarioText.SetReadOnly();
}
else
{
// since we are adding, just set everything to default
m_RuleSet.SetCurSel(0);
char rule_set_name[256];
m_RuleSet.GetLBText(0, rule_set_name);
for (int i = 0; i < GameTypeCount; i++)
{
if (_stricmp(pPParent->m_szScenarioName[i], rule_set_name) == 0)
{
// do team
for (int j = 1; j <= pParent->m_iMaxTeam[i]; j++)
m_TeamCount.AddString(_itoa(j, intbuf, 10));
// do script
SCRIPT_INFO *pInfo = pParent->m_pScriptInfo[i];
while (pInfo != NULL)
{
m_Script.AddString(pInfo->script);
pInfo = pInfo->pNext;
}
break;
}
}
if (m_TeamCount.GetCount() == 0)
m_TeamCount.AddString("0");
if (m_Script.GetCount() == 0)
{
m_Script.AddString("\0");
m_Script.EnableWindow(FALSE);
}
else
m_Script.EnableWindow(TRUE);
m_TeamCount.SetCurSel(m_TeamCount.GetCount() - 1);
m_ScenarioText.ReplaceSel(pPParent->m_szScenarioText[0]);
m_Night.SetCurSel(m_Night.GetCount() - 1);
m_Weather.SetCurSel(m_Weather.GetCount() - 1);
m_RadarMode.SetCurSel(m_RadarMode.GetCount() - 1);
m_StockMech.SetCurSel(m_StockMech.GetCount() - 1);
m_MaxTon.SetCurSel(m_MaxTon.GetCount() - 1);
m_MinTon.SetCurSel(m_MinTon.GetCount() - 1);
m_GameLength.SetCurSel(m_GameLength.GetCount() - 1);
m_Script.SetCurSel(0);
m_RuleName.Clear();
m_MapName.Clear();
m_ScenarioText.Clear();
m_KillLimit.Clear();
m_RespawnLimit.Clear();
m_RuleSet.EnableWindow(TRUE);
m_ScenarioText.EnableWindow(TRUE);
}
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CNFORuleDlg::OnOK()
{
// first validate the min and max ton
if ((m_MinTon.GetCurSel() != m_MinTon.GetCount() - 1) &&
(m_MaxTon.GetCurSel() != m_MaxTon.GetCount() - 1))
{
if (m_MinTon.GetCurSel() > m_MaxTon.GetCurSel())
{
CNFOErrorDlg dlg;
dlg.m_Error = "The minimum tonnage cannot be larger than the maximum tonnage.";
dlg.DoModal();
return;
}
}
CNFOPropertiesDlg* pParent = (CNFOPropertiesDlg*) GetOwner();
CNFOFileEditorDlg* pPParent = (CNFOFileEditorDlg*) pParent->GetOwner();
char scenario_name[256];
char rule_set_name[256];
char scenario_read_name[256];
char team_count[256];
char scenario_text[256];
char kill_count[256];
char respawn_count[256];
char night[256];
char weather[256];
char radar_mode[256];
char stock_mech[256];
char max_ton[256];
char min_ton[256];
char game_len[256];
char script[256];
int curSel;
int rule_len = m_RuleName.GetLine(0, scenario_name, 256);
int map_len = m_MapName.GetLine(0, scenario_read_name, 256);
int text_len = m_ScenarioText.GetLine(0, scenario_text, 256);
scenario_name[rule_len] = '\0';
scenario_read_name[map_len] = '\0';
scenario_text[text_len] = '\0';
// then check for empty texts
if (rule_len == 0)
{
CNFOErrorDlg dlg;
dlg.m_Error = "Empty Rule Name is not allowed.";
dlg.DoModal();
return;
}
if (map_len == 0)
{
CNFOErrorDlg dlg;
dlg.m_Error = "Empty Map Name is not allowed.";
dlg.DoModal();
return;
}
// finally check for duplicate names if we are adding a new rule
if (pParent->m_bEditRule == FALSE)
{
for (int i = 0; i < pParent->m_PropertyList.GetItemCount(); i++)
{
char existing_name[256];
pParent->m_PropertyList.GetItemText(i, 0, existing_name, 256);
if (_stricmp(scenario_name, existing_name) == 0)
{
CNFOErrorDlg dlg;
dlg.m_Error = "The current Rule Name exists. Duplicated Rule Names are not allowed.";
dlg.DoModal();
return;
}
}
// Check to see if the scenario text file exist
if ((text_len != 0) && ((GetFileAttributes(scenario_text) == -1) || ((GetFileAttributes(scenario_text) & FILE_ATTRIBUTE_DIRECTORY) != 0)))
{
CNFOErrorDlg dlg;
dlg.m_Error = "Can't find the scenario text file. Please either specify a valid text file or leave the scenario text file field blank.";
dlg.DoModal();
return;
}
}
// We are cool, so go ahead and grab all the info from the dialog
int kill_len = m_KillLimit.GetLine(0, kill_count, 256);
int respawn_len = m_RespawnLimit.GetLine(0, respawn_count, 256);
kill_count[kill_len] = '\0';
respawn_count[respawn_len] = '\0';
curSel = m_RuleSet.GetCurSel();
m_RuleSet.GetLBText(curSel, rule_set_name);
curSel = m_TeamCount.GetCurSel();
m_TeamCount.GetLBText(curSel, team_count);
curSel = m_Night.GetCurSel();
if (curSel != m_Night.GetCount() - 1)
m_Night.GetLBText(curSel, night);
else
night[0] = '\0';
curSel = m_Weather.GetCurSel();
if (curSel != m_Weather.GetCount() - 1)
m_Weather.GetLBText(curSel, weather);
else
weather[0] = '\0';
curSel = m_RadarMode.GetCurSel();
if (curSel != m_RadarMode.GetCount() - 1)
m_RadarMode.GetLBText(curSel, radar_mode);
else
radar_mode[0] = '\0';
curSel = m_StockMech.GetCurSel();
if (curSel != m_StockMech.GetCount() - 1)
m_StockMech.GetLBText(curSel, stock_mech);
else
stock_mech[0] = '\0';
curSel = m_MaxTon.GetCurSel();
if (curSel != m_MaxTon.GetCount() - 1)
m_MaxTon.GetLBText(curSel, max_ton);
else
max_ton[0] = '\0';
curSel = m_MinTon.GetCurSel();
if (curSel != m_MinTon.GetCount() - 1)
m_MinTon.GetLBText(curSel, min_ton);
else
min_ton[0] = '\0';
curSel = m_GameLength.GetCurSel();
if (curSel != m_GameLength.GetCount() - 1)
m_GameLength.GetLBText(curSel, game_len);
else
game_len[0] = '\0';
curSel = m_Script.GetCurSel();
m_Script.GetLBText(curSel, script);
// finally if it is a team scenario, make sure that team count is not zero
if (m_TeamCount.IsWindowEnabled() == TRUE)
{
if (m_TeamCount.GetCurSel() == 0)
{
CNFOErrorDlg dlg;
dlg.m_Error = "Zero Team Count is not allowed.";
dlg.DoModal();
return;
}
}
// once we are done grabbing, we either edit the existing one or add a new rule
if (pParent->m_bEditRule)
{
curSel = pParent->m_PropertyList.GetSelectionMark();
pParent->m_PropertyList.SetItemText(curSel, 0, scenario_name);
}
else
{
curSel = pParent->m_PropertyList.GetItemCount();
pParent->m_PropertyList.InsertItem(curSel, scenario_name, 0);
}
// let's go ahead and set the info for the current rule
pParent->m_PropertyList.SetItemText(curSel, 1, rule_set_name);
pParent->m_PropertyList.SetItemText(curSel, 2, scenario_read_name);
if (atoi(team_count) == 0)
pParent->m_PropertyList.SetItemText(curSel, 3, pPParent->m_szYesNo[0]);
else
pParent->m_PropertyList.SetItemText(curSel, 3, pPParent->m_szYesNo[1]);
pParent->m_PropertyList.SetItemText(curSel, 4, team_count);
pParent->m_PropertyList.SetItemText(curSel, 5, scenario_text);
if (kill_len)
{
if (atoi(kill_count) == 0)
pParent->m_PropertyList.SetItemText(curSel, 6, pPParent->m_szYesNo[0]);
else
pParent->m_PropertyList.SetItemText(curSel, 6, pPParent->m_szYesNo[1]);
pParent->m_PropertyList.SetItemText(curSel, 7, kill_count);
}
else
{
pParent->m_PropertyList.SetItemText(curSel, 6, "");
pParent->m_PropertyList.SetItemText(curSel, 7, "");
}
if (respawn_len)
{
if (atoi(respawn_count) == 0)
pParent->m_PropertyList.SetItemText(curSel, 8, pPParent->m_szYesNo[0]);
else
pParent->m_PropertyList.SetItemText(curSel, 8, pPParent->m_szYesNo[1]);
pParent->m_PropertyList.SetItemText(curSel, 9, respawn_count);
}
else
{
pParent->m_PropertyList.SetItemText(curSel, 8, "");
pParent->m_PropertyList.SetItemText(curSel, 9, "");
}
pParent->m_PropertyList.SetItemText(curSel, 10, night);
pParent->m_PropertyList.SetItemText(curSel, 11, weather);
pParent->m_PropertyList.SetItemText(curSel, 12, radar_mode);
pParent->m_PropertyList.SetItemText(curSel, 13, stock_mech);
pParent->m_PropertyList.SetItemText(curSel, 14, max_ton);
pParent->m_PropertyList.SetItemText(curSel, 15, min_ton);
pParent->m_PropertyList.SetItemText(curSel, 16, game_len);
pParent->m_PropertyList.SetItemText(curSel, 17, script);
// just set the team info for the current rule to have no team count
if (pParent->m_bEditRule == FALSE)
{
TEAM_INFO* pTeamInfo = new TEAM_INFO;
pTeamInfo->team_count = 0;
pParent->AppendTeamInfo(pTeamInfo);
BOT_INFO* pBotInfo = new BOT_INFO;
pBotInfo->rule_count = 0;
pParent->AppendBotInfo(pBotInfo);
}
// Done!
CDialog::OnOK();
}
void CNFORuleDlg::OnSelChangeRuleSet()
{
int curSel = m_RuleSet.GetCurSel();
ASSERT(curSel != -1);
char rule_set_name[256];
m_RuleSet.GetLBText(curSel, rule_set_name);
CNFOPropertiesDlg* pParent = (CNFOPropertiesDlg*) GetOwner();
CNFOFileEditorDlg* pPParent = (CNFOFileEditorDlg*) pParent->GetOwner();
// find the rule set
int rule_set = -1;
for (int i = 0; i < GameTypeCount; i++)
{
if (_stricmp(rule_set_name, pPParent->m_szScenarioName[i]) == 0)
{
rule_set = i;
char intbuf[256];
// do team
m_TeamCount.ResetContent();
for (int j = 1; j <= pParent->m_iMaxTeam[i]; j++)
m_TeamCount.AddString(_itoa(j, intbuf, 10));
// do script
m_Script.ResetContent();
SCRIPT_INFO *pInfo = pParent->m_pScriptInfo[i];
while (pInfo != NULL)
{
m_Script.AddString(pInfo->script);
pInfo = pInfo->pNext;
}
break;
}
}
ASSERT(rule_set != -1);
if (m_TeamCount.GetCount() == 0)
m_TeamCount.AddString("0");
if (m_Script.GetCount() == 0)
{
m_Script.AddString("\0");
m_Script.EnableWindow(FALSE);
}
else
{
m_Script.SetCurSel(0);
m_Script.EnableWindow(TRUE);
}
m_TeamCount.SetCurSel(m_TeamCount.GetCount() - 1);
if (pPParent->m_iTeam[rule_set])
{
// if it is a team scenario, enable team dropdown
m_TeamCount.EnableWindow(TRUE);
}
else
{
m_TeamCount.EnableWindow(FALSE);
}
m_ScenarioText.SetSel(0, m_ScenarioText.LineLength());
m_ScenarioText.ReplaceSel(pPParent->m_szScenarioText[rule_set]);
}
@@ -0,0 +1,62 @@
#if !defined(AFX_NFORULEDLG_H__8DA5E5C1_1916_448C_9763_A75BB5B6B33A__INCLUDED_)
#define AFX_NFORULEDLG_H__8DA5E5C1_1916_448C_9763_A75BB5B6B33A__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// NFORuleDlg.h : header file
//
/////////////////////////////////////////////////////////////////////////////
// CNFORuleDlg dialog
class CNFORuleDlg : public CDialog
{
// Construction
public:
CNFORuleDlg(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(CNFORuleDlg)
enum { IDD = IDD_NFORULE };
CComboBox m_Script;
CComboBox m_MinTon;
CComboBox m_MaxTon;
CComboBox m_GameLength;
CEdit m_MapName;
CComboBox m_Weather;
CComboBox m_TeamCount;
CComboBox m_StockMech;
CEdit m_ScenarioText;
CComboBox m_RuleSet;
CEdit m_RuleName;
CEdit m_RespawnLimit;
CComboBox m_RadarMode;
CComboBox m_Night;
CEdit m_KillLimit;
//}}AFX_DATA
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CNFORuleDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(CNFORuleDlg)
virtual BOOL OnInitDialog();
virtual void OnOK();
afx_msg void OnSelChangeRuleSet();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_NFORULEDLG_H__8DA5E5C1_1916_448C_9763_A75BB5B6B33A__INCLUDED_)
@@ -0,0 +1,344 @@
// NFOTeamDlg.cpp : implementation file
//
#include "stdafx.h"
#include "NFO File Editor.h"
#include "NFO File EditorDlg.h"
#include "NFOTeamDlg.h"
#include "NFOPropertiesDlg.h"
#include "NFORuleDlg.h"
#include "NFOErrorDlg.h"
#if 0 // def _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CNFOTeamDlg dialog
CNFOTeamDlg::CNFOTeamDlg(CWnd* pParent /*=NULL*/)
: CDialog(CNFOTeamDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CNFOTeamDlg)
//}}AFX_DATA_INIT
}
void CNFOTeamDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CNFOTeamDlg)
DDX_Control(pDX, IDC_TEAM_MAX_TON, m_MaxTotalTon);
DDX_Control(pDX, IDC_TEAM_NUM, m_TeamNum);
DDX_Control(pDX, IDC_SKIN, m_Skin);
DDX_Control(pDX, IDC_MIN_TON, m_MinTon);
DDX_Control(pDX, IDC_MAX_TON, m_MaxTon);
DDX_Control(pDX, IDC_MAX_COUNT, m_MaxCount);
DDX_Control(pDX, IDC_ALIGNMENT, m_Alignment);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CNFOTeamDlg, CDialog)
//{{AFX_MSG_MAP(CNFOTeamDlg)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CNFOTeamDlg message handlers
void CNFOTeamDlg::OnOK()
{
// check the validity of the min and max tonnage
if ((m_MinTon.GetCurSel() != m_MinTon.GetCount() - 1) &&
(m_MaxTon.GetCurSel() != m_MaxTon.GetCount() - 1))
{
if (m_MinTon.GetCurSel() > m_MaxTon.GetCurSel())
{
CNFOErrorDlg dlg;
dlg.m_Error = "The minimum tonnage cannot be larger than the maximum tonnage.";
dlg.DoModal();
return;
}
}
CNFOPropertiesDlg* pParent = (CNFOPropertiesDlg*) GetOwner();
int curSel = -1;
if (pParent->m_bEditRule)
{
curSel = pParent->m_TeamList.GetSelectionMark();
}
else
{
char team_num[256];
m_TeamNum.GetLBText(m_TeamNum.GetCurSel(), team_num);
int cur_num = atoi(team_num);
// if we are adding, add the new item
for (int i = 0; i < pParent->m_TeamList.GetItemCount(); i++)
{
char cur_count[256];
pParent->m_TeamList.GetItemText(i, 0, cur_count, 256);
if (atoi(cur_count) > cur_num)
{
pParent->m_TeamList.InsertItem(i, team_num, 0);
curSel = i;
break;
}
}
// append the item at the end of the list
if (i == pParent->m_TeamList.GetItemCount())
{
pParent->m_TeamList.InsertItem(i, team_num, 0);
curSel = i;
}
}
ASSERT(curSel != -1);
char max_count[256];
char max_ton[256];
char min_ton[256];
char max_total_ton[256];
char alignment[256];
char skin[256];
// make sure that we get everything from the dialog
if (m_MaxTon.GetCurSel() != m_MaxTon.GetCount() - 1)
m_MaxTon.GetLBText(m_MaxTon.GetCurSel(), max_ton);
else
max_ton[0] = '\0';
if (m_MinTon.GetCurSel() != m_MinTon.GetCount() - 1)
m_MinTon.GetLBText(m_MinTon.GetCurSel(), min_ton);
else
min_ton[0] = '\0';
if (m_MaxTotalTon.GetCurSel() != m_MaxTotalTon.GetCount() - 1)
m_MaxTotalTon.GetLBText(m_MaxTotalTon.GetCurSel(), max_total_ton);
else
max_total_ton[0] = '\0';
if (m_MaxCount.GetCurSel() != m_MaxCount.GetCount() - 1)
m_MaxCount.GetLBText(m_MaxCount.GetCurSel(), max_count);
else
max_count[0] = '\0';
if (m_Skin.GetCurSel() != m_Skin.GetCount() - 1)
m_Skin.GetLBText(m_Skin.GetCurSel(), skin);
else
skin[0] = '\0';
if (m_Alignment.GetCurSel() != m_Alignment.GetCount() - 1)
m_Alignment.GetLBText(m_Alignment.GetCurSel(), alignment);
else
alignment[0] = '\0';
// store this in the team list
pParent->m_TeamList.SetItemText(curSel, 1, max_ton);
pParent->m_TeamList.SetItemText(curSel, 2, min_ton);
pParent->m_TeamList.SetItemText(curSel, 3, max_total_ton);
pParent->m_TeamList.SetItemText(curSel, 4, max_count);
pParent->m_TeamList.SetItemText(curSel, 5, skin);
pParent->m_TeamList.SetItemText(curSel, 6, alignment);
// Once we are done setting the text in the team list, we need to save the team data
int curPSel = pParent->m_PropertyList.GetSelectionMark();
TEAM_INFO* pTeamdata = pParent->FindTeamInfo(curPSel);
ASSERT(pTeamdata != NULL);
int team_count = pParent->m_TeamList.GetItemCount();
int cur_num = 0;
for (int i = 0; i < team_count; i++)
{
pParent->m_TeamList.GetItemText(i, 1, max_ton, 256);
pParent->m_TeamList.GetItemText(i, 2, min_ton, 256);
pParent->m_TeamList.GetItemText(i, 3, max_total_ton, 256);
pParent->m_TeamList.GetItemText(i, 4, max_count, 256);
pParent->m_TeamList.GetItemText(i, 5, skin, 256);
pParent->m_TeamList.GetItemText(i, 6, alignment, 256);
char cur_count[256];
pParent->m_TeamList.GetItemText(i, 0, cur_count, 256);
cur_num = atoi(cur_count) - 1;
pTeamdata->team_num[cur_num] = cur_num + 1;
if (max_ton[0] != '\0')
pTeamdata->max_ton[cur_num] = atoi(max_ton);
else
pTeamdata->max_ton[cur_num] = -1;
if (min_ton[0] != '\0')
pTeamdata->min_ton[cur_num] = atoi(min_ton);
else
pTeamdata->min_ton[cur_num] = -1;
if (max_total_ton[0] != '\0')
pTeamdata->max_total_ton[cur_num] = atoi(max_total_ton);
else
pTeamdata->max_total_ton[cur_num] = -1;
if (max_count[0] != '\0')
pTeamdata->max_team_count[cur_num] = atoi(max_count);
else
pTeamdata->max_team_count[cur_num] = -1;
if (skin[0] != '\0')
pTeamdata->skin[cur_num] = skin[0];
else
pTeamdata->skin[cur_num] = -1;
if (alignment[0] != '\0')
pTeamdata->alignment[cur_num] = atoi(alignment);
else
pTeamdata->alignment[cur_num] = -1;
}
pTeamdata->team_count = cur_num + 1;
// Done!
CDialog::OnOK();
}
BOOL CNFOTeamDlg::OnInitDialog()
{
CDialog::OnInitDialog();
CNFOPropertiesDlg* pParent = (CNFOPropertiesDlg*) GetOwner();
CNFOFileEditorDlg* pPParent = (CNFOFileEditorDlg*) pParent->GetOwner();
int i;
char rule_set_name[256];
pParent->m_PropertyList.GetItemText(pParent->m_PropertyList.GetSelectionMark(), 1, rule_set_name, 256);
int rule_set = -1;
for (i = 0; i < GameTypeCount; i++)
{
if (_stricmp(rule_set_name, pPParent->m_szScenarioName[i]) == 0)
{
rule_set = i;
break;
}
}
ASSERT(rule_set != -1);
// inits all the options
char intbuf[256];
for (i = 1; i < 17; i++)
m_MaxCount.AddString(_itoa(i, intbuf, 10));
for (i = 25; i <= 100; i += 5)
{
m_MaxTon.AddString(_itoa(i, intbuf, 10));
m_MinTon.AddString(_itoa(i, intbuf, 10));
}
for (i = 100; i < 1700; i = i + 100)
m_MaxTotalTon.AddString(_itoa(i, intbuf, 10));
for (i = 0; i < pParent->m_iMaxAlignment[rule_set]; i++)
m_Alignment.AddString(_itoa(i, intbuf, 10));
// 0 to 9 and a to z
for (i = 48; i < 58; i++)
{
char skin[2];
skin[0] = (char) i;
skin[1] = '\0';
m_Skin.AddString(skin);
}
for (i = 97; i < 123; i++)
{
char skin[2];
skin[0] = (char) i;
skin[1] = '\0';
m_Skin.AddString(skin);
}
m_MaxCount.AddString(pPParent->m_szDefault);
m_MaxTon.AddString(pPParent->m_szDefault);
m_MinTon.AddString(pPParent->m_szDefault);
m_MaxTotalTon.AddString(pPParent->m_szDefault);
m_Alignment.AddString(pPParent->m_szDefault);
m_Skin.AddString(pPParent->m_szDefault);
// now either grab the info or set to default
int curSel;
if (pParent->m_bEditRule)
{
// we are editing, so grab the info
curSel = pParent->m_TeamList.GetSelectionMark();
char team_num[256];
char max_count[256];
char max_ton[256];
char min_ton[256];
char max_total_ton[256];
char alignment[256];
char skin[256];
pParent->m_TeamList.GetItemText(curSel, 0, team_num, 256);
pParent->m_TeamList.GetItemText(curSel, 1, max_ton, 256);
pParent->m_TeamList.GetItemText(curSel, 2, min_ton, 256);
pParent->m_TeamList.GetItemText(curSel, 3, max_total_ton, 256);
pParent->m_TeamList.GetItemText(curSel, 4, max_count, 256);
pParent->m_TeamList.GetItemText(curSel, 5, skin, 256);
pParent->m_TeamList.GetItemText(curSel, 6, alignment, 256);
int found = m_MaxCount.FindStringExact(0, max_count);
if (found != CB_ERR)
m_MaxCount.SetCurSel(found);
else
m_MaxCount.SetCurSel(m_MaxCount.GetCount() - 1);
found = m_MaxTon.FindStringExact(0, max_ton);
if (found != CB_ERR)
m_MaxTon.SetCurSel(found);
else
m_MaxTon.SetCurSel(m_MaxTon.GetCount() - 1);
found = m_MinTon.FindStringExact(0, min_ton);
if (found != CB_ERR)
m_MinTon.SetCurSel(found);
else
m_MinTon.SetCurSel(m_MinTon.GetCount() - 1);
found = m_MaxTotalTon.FindStringExact(0, max_total_ton);
if (found != CB_ERR)
m_MaxTotalTon.SetCurSel(found);
else
m_MaxTotalTon.SetCurSel(m_MaxTotalTon.GetCount() - 1);
found = m_Alignment.FindStringExact(0, alignment);
if (found != CB_ERR)
m_Alignment.SetCurSel(found);
else
m_Alignment.SetCurSel(m_Alignment.GetCount() - 1);
found = m_Skin.FindStringExact(0, skin);
if (found != CB_ERR)
m_Skin.SetCurSel(found);
else
m_Skin.SetCurSel(m_Skin.GetCount() - 1);
// set the current team rule number
m_TeamNum.AddString(team_num);
m_TeamNum.SetCurSel(0);
m_TeamNum.EnableWindow(FALSE);
}
else
{
// we are adding a new one, so set them to default
curSel = pParent->m_TeamList.GetItemCount();
m_MaxCount.SetCurSel(m_MaxCount.GetCount() - 1);
m_MaxTon.SetCurSel(m_MaxTon.GetCount() - 1);
m_MinTon.SetCurSel(m_MinTon.GetCount() - 1);
m_MaxTotalTon.SetCurSel(m_MaxTotalTon.GetCount() - 1);
m_Alignment.SetCurSel(m_Alignment.GetCount() - 1);
m_Skin.SetCurSel(m_Skin.GetCount() - 1);
// set the current team rule number
char team_count[256];
pParent->m_PropertyList.GetItemText(pParent->m_PropertyList.GetSelectionMark(), 4, team_count, 256);
int count = atoi(team_count);
for (int i = 0; i < count; i++)
{
char cur_count[256];
itoa(i + 1, cur_count, 10);
LVFINDINFO f_info;
f_info.flags = LVFI_STRING;
f_info.psz = cur_count;
if (pParent->m_TeamList.FindItem(&f_info) == -1)
{
m_TeamNum.AddString(cur_count);
}
}
m_TeamNum.SetCurSel(0);
}
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
@@ -0,0 +1,53 @@
#if !defined(AFX_NFOTEAMDLG_H__132E1940_0274_4099_8CB5_3E0BAC1DCC88__INCLUDED_)
#define AFX_NFOTEAMDLG_H__132E1940_0274_4099_8CB5_3E0BAC1DCC88__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// NFOTeamDlg.h : header file
//
/////////////////////////////////////////////////////////////////////////////
// CNFOTeamDlg dialog
class CNFOTeamDlg : public CDialog
{
// Construction
public:
CNFOTeamDlg(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(CNFOTeamDlg)
enum { IDD = IDD_NFOTEAM };
CComboBox m_MaxTotalTon;
CComboBox m_TeamNum;
CComboBox m_Skin;
CComboBox m_MinTon;
CComboBox m_MaxTon;
CComboBox m_MaxCount;
CComboBox m_Alignment;
//}}AFX_DATA
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CNFOTeamDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(CNFOTeamDlg)
virtual void OnOK();
virtual BOOL OnInitDialog();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_NFOTEAMDLG_H__132E1940_0274_4099_8CB5_3E0BAC1DCC88__INCLUDED_)
@@ -0,0 +1,43 @@
// NFOYesNoDlg.cpp : implementation file
//
#include "stdafx.h"
#include "NFO File Editor.h"
#include "NFOYesNoDlg.h"
#if 0 // def _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CNFOYesNoDlg dialog
CNFOYesNoDlg::CNFOYesNoDlg(CWnd* pParent /*=NULL*/)
: CDialog(CNFOYesNoDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CNFOYesNoDlg)
m_Question = _T("");
//}}AFX_DATA_INIT
}
void CNFOYesNoDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CNFOYesNoDlg)
DDX_Text(pDX, IDC_STATIC_Q, m_Question);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CNFOYesNoDlg, CDialog)
//{{AFX_MSG_MAP(CNFOYesNoDlg)
// NOTE: the ClassWizard will add message map macros here
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CNFOYesNoDlg message handlers
@@ -0,0 +1,46 @@
#if !defined(AFX_NFOYESNODLG_H__4F2170D6_47C1_4039_8A72_9474CDD71679__INCLUDED_)
#define AFX_NFOYESNODLG_H__4F2170D6_47C1_4039_8A72_9474CDD71679__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// NFOYesNoDlg.h : header file
//
/////////////////////////////////////////////////////////////////////////////
// CNFOYesNoDlg dialog
class CNFOYesNoDlg : public CDialog
{
// Construction
public:
CNFOYesNoDlg(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(CNFOYesNoDlg)
enum { IDD = IDD_NFOYESNO };
CString m_Question;
//}}AFX_DATA
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CNFOYesNoDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(CNFOYesNoDlg)
// NOTE: the ClassWizard will add member functions here
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_NFOYESNODLG_H__4F2170D6_47C1_4039_8A72_9474CDD71679__INCLUDED_)
@@ -0,0 +1,8 @@
// stdafx.cpp : source file that includes just the standard includes
// NFO File Editor.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information
#include "stdafx.h"
@@ -0,0 +1,27 @@
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//
#if !defined(AFX_STDAFX_H__14F5A6C6_4166_4578_9D90_F0438393C956__INCLUDED_)
#define AFX_STDAFX_H__14F5A6C6_4166_4578_9D90_F0438393C956__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
#include <afxwin.h> // MFC core and standard components
#include <afxext.h> // MFC extensions
#include <afxdisp.h> // MFC Automation classes
#include <afxdtctl.h> // MFC support for Internet Explorer 4 Common Controls
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h> // MFC support for Windows Common Controls
#endif // _AFX_NO_AFXCMN_SUPPORT
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_STDAFX_H__14F5A6C6_4166_4578_9D90_F0438393C956__INCLUDED_)
@@ -0,0 +1,13 @@
//
// NFO FILE EDITOR.RC2 - resources Microsoft Visual C++ does not edit directly
//
#ifdef APSTUDIO_INVOKED
#error this file is not editable by Microsoft Visual C++
#endif //APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
// Add manually edited resources here...
/////////////////////////////////////////////////////////////////////////////
@@ -0,0 +1,126 @@
//{{NO_DEPENDENCIES}}
// Microsoft Developer Studio generated include file.
// Used by NFO File Editor.rc
//
#define IDC_RESTORE 3
#define IDM_ABOUTBOX 0x0010
#define IDD_ABOUTBOX 100
#define IDS_ABOUTBOX 101
#define IDD_NFOFILEEDITOR_DIALOG 102
#define IDR_MAINFRAME 128
#define IDD_NFOPROPERTY 130
#define IDD_NFORULE 132
#define IDD_NFOADDCYCLERULE 133
#define IDD_NFO_ERROR 135
#define IDD_NFOTEAM 136
#define IDD_NFOYESNO 137
#define IDD_NFOBOT 138
#define IDC_NFO_MISSIONS 1000
#define IDC_NFO_LIST 1001
#define IDC_NFO_REMOVE 1004
#define IDC_NFO_PROPERTIES 1005
#define IDC_NFO_ADD 1006
#define IDC_NFO_NAME 1007
#define IDC_CYCLE_ADD 1007
#define IDC_STATIC_NFO_FILENAME 1008
#define IDC_CYCLE_REMOVE 1008
#define IDC_STATIC_NFO_AUTHOR 1009
#define IDC_CYCLE_MOVE_UP 1009
#define IDC_STATIC_NFO_LINK 1010
#define IDC_CYCLE_MOVE_DOWN 1010
#define IDC_STATIC_NFO_LONGNAME 1011
#define IDC_CYCLE_SAVE 1011
#define IDC_STATIC_NFO_INFO 1012
#define IDC_CYCLE_REMOVE_ALL 1012
#define IDC_CYCLE_RESTORE 1013
#define IDC_NFO_AUTHOR 1014
#define IDC_NFO_INFO 1015
#define IDC_NFO_LINK 1016
#define IDC_NFO_LONGNAME 1017
#define IDC_NFO_PROPERTY_LIST 1018
#define IDC_NFO_TEAM_LIST 1019
#define IDC_NFO_BOT_LIST 1020
#define IDC_STATIC_RULE_NAME 1021
#define IDC_NFO_EDIT_RULE 1022
#define IDC_RULE_NAME 1022
#define IDC_NFO_ADD_RULE 1023
#define IDC_STATIC_RULE_SET 1023
#define IDC_NFO_ADD_TEAM 1024
#define IDC_STATIC_TEAM_COUNT 1024
#define IDC_NFO_EDIT_TEAM 1025
#define IDC_TEAM_COUNT 1025
#define IDC_STATIC_TEXT 1026
#define IDC_STATIC_SKIN 1026
#define IDC_NFO_REMOVE_RULE 1026
#define IDC_SCENARIO_TEXT 1027
#define IDC_SKIN 1027
#define IDC_NFO_REMOVE_TEAM 1027
#define IDC_STATIC_SERVER_CYCLE 1028
#define IDC_STATIC_KILL_COUNT 1028
#define IDC_STATIC_ALIGNMENT 1028
#define IDC_NFO_ADD_BOT 1028
#define IDC_SERVER_CYCLE_LIST 1029
#define IDC_STATIC_RESPAWN 1029
#define IDC_ALIGNMENT 1029
#define IDC_NFO_EDIT_BOT 1029
#define IDC_STATIC_FILE_NAME 1030
#define IDC_STATIC_NIGHT 1030
#define IDC_STATIC_NFO_LIST 1030
#define IDC_TEAM_NUM 1030
#define IDC_NFO_REMOVE_BOT 1030
#define IDC_STATIC_WEATHER 1031
#define IDC_NFO_RULE_NAME 1032
#define IDC_STATIC_RADAR 1032
#define IDC_NFO_FILE_NAME 1033
#define IDC_STATIC_STOCK 1033
#define IDC_STATIC_MAP_NAME 1034
#define IDC_STATIC_RULE 1035
#define IDC_STATIC_MIN_TON 1035
#define IDC_STATIC_TEAM 1036
#define IDC_STATIC_MAX_TON 1036
#define IDC_STATIC_GAME_LENGTH 1037
#define IDC_STATIC_BOT 1037
#define IDC_STATIC_MIN_LEVEL 1037
#define IDC_STATIC_TEAM_MAX_TON 1037
#define IDC_KILL_LIMIT 1038
#define IDC_STATIC_MAX_LEVEL 1038
#define IDC_STATIC_SCRIPT 1039
#define IDC_STATIC_ERROR 1040
#define IDC_STATIC_MAX_COUNT 1041
#define IDC_RESPAWN_LIMIT 1042
#define IDC_MAX_COUNT 1042
#define IDC_STOCK_MECH 1043
#define IDC_STATIC_TEAM_NUM 1043
#define IDC_NIGHT 1044
#define IDC_WEATHER 1045
#define IDC_STATIC_SEPARATOR 1045
#define IDC_RADAR_MODE 1046
#define IDC_STATIC_Q 1046
#define IDC_STATIC_SEPARATOR2 1046
#define IDC_STATIC_BOT_RULE 1047
#define IDC_STATIC_SEPARATOR3 1047
#define IDC_STATIC_BOT_TEAM 1049
#define IDC_RULE_SET 1050
#define IDC_TEAM 1050
#define IDC_STATIC_BOT_NUM 1051
#define IDC_SCRIPT 1051
#define IDC_MAP_NAME 1052
#define IDC_BOT_NUM 1052
#define IDC_MIN_TON 1053
#define IDC_MAX_TON 1054
#define IDC_GAME_LENGTH 1055
#define IDC_MIN_LEVEL 1055
#define IDC_TEAM_MAX_TON 1055
#define IDC_MAX_LEVEL 1056
#define IDC_BOT_RULE 1057
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 139
#define _APS_NEXT_COMMAND_VALUE 32771
#define _APS_NEXT_CONTROL_VALUE 1058
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif