From 6cb5eee6acdd73d4696173d271bd73f67d60be3a Mon Sep 17 00:00:00 2001 From: Caball009 <82909616+Caball009@users.noreply.github.com> Date: Wed, 11 Feb 2026 00:45:52 +0100 Subject: [PATCH 1/3] tweak(worldbuilder): Skip EULA window after first successful launch. --- .../Tools/WorldBuilder/include/WorldBuilder.h | 2 ++ .../Tools/WorldBuilder/src/WorldBuilder.cpp | 26 ++++++++++++------- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/GeneralsMD/Code/Tools/WorldBuilder/include/WorldBuilder.h b/GeneralsMD/Code/Tools/WorldBuilder/include/WorldBuilder.h index 17db0268232..9ff7873825a 100644 --- a/GeneralsMD/Code/Tools/WorldBuilder/include/WorldBuilder.h +++ b/GeneralsMD/Code/Tools/WorldBuilder/include/WorldBuilder.h @@ -133,6 +133,8 @@ class CWorldBuilderApp : public CWinApp MapObject *m_pasteMapObjList; ///< List of copied/cut map objects. + Bool m_acceptEULA; + protected: void deletePasteObjList(void) { diff --git a/GeneralsMD/Code/Tools/WorldBuilder/src/WorldBuilder.cpp b/GeneralsMD/Code/Tools/WorldBuilder/src/WorldBuilder.cpp index de45c06efc0..1195103046a 100644 --- a/GeneralsMD/Code/Tools/WorldBuilder/src/WorldBuilder.cpp +++ b/GeneralsMD/Code/Tools/WorldBuilder/src/WorldBuilder.cpp @@ -95,6 +95,7 @@ void initSubsystem(SUBSYSTEM*& sysref, SUBSYSTEM* sys, const char* path1 = nullp #define APP_SECTION "WorldbuilderApp" +#define ACCEPT_EULA "AcceptEULA" #define OPEN_FILE_DIR "OpenDirectory" Win32Mouse *TheWin32Mouse = nullptr; @@ -200,7 +201,8 @@ CWorldBuilderApp::CWorldBuilderApp() : m_selTool(nullptr), m_lockCurTool(0), m_3dtemplate(nullptr), - m_pasteMapObjList(nullptr) + m_pasteMapObjList(nullptr), + m_acceptEULA(FALSE) { for (Int i=0; iGetProfileInt(APP_SECTION, ACCEPT_EULA, 0)) + { + EulaDialog eulaDialog; + if( eulaDialog.DoModal() == IDCANCEL ) + { + return FALSE; + } + } + + m_acceptEULA = TRUE; + // ensure the user maps dir exists snprintf(buf, ARRAY_SIZE(buf), "%sMaps\\", TheGlobalData->getPath_UserData().str()); CreateDirectory(buf, nullptr); @@ -643,6 +649,8 @@ void CWorldBuilderApp::OnAppAbout() int CWorldBuilderApp::ExitInstance() { + WriteProfileInt(APP_SECTION, ACCEPT_EULA, m_acceptEULA); + WriteProfileString(APP_SECTION, OPEN_FILE_DIR, m_currentDirectory.str()); m_currentDirectory.clear(); From 37d55bacb18c068f2d23403eb52cf185c05b077b Mon Sep 17 00:00:00 2001 From: Caball009 <82909616+Caball009@users.noreply.github.com> Date: Sun, 15 Feb 2026 01:52:34 +0100 Subject: [PATCH 2/3] Revert "tweak(worldbuilder): Skip EULA window after first successful launch." This reverts commit 6cb5eee6acdd73d4696173d271bd73f67d60be3a. --- .../Tools/WorldBuilder/include/WorldBuilder.h | 2 -- .../Tools/WorldBuilder/src/WorldBuilder.cpp | 26 +++++++------------ 2 files changed, 9 insertions(+), 19 deletions(-) diff --git a/GeneralsMD/Code/Tools/WorldBuilder/include/WorldBuilder.h b/GeneralsMD/Code/Tools/WorldBuilder/include/WorldBuilder.h index 9ff7873825a..17db0268232 100644 --- a/GeneralsMD/Code/Tools/WorldBuilder/include/WorldBuilder.h +++ b/GeneralsMD/Code/Tools/WorldBuilder/include/WorldBuilder.h @@ -133,8 +133,6 @@ class CWorldBuilderApp : public CWinApp MapObject *m_pasteMapObjList; ///< List of copied/cut map objects. - Bool m_acceptEULA; - protected: void deletePasteObjList(void) { diff --git a/GeneralsMD/Code/Tools/WorldBuilder/src/WorldBuilder.cpp b/GeneralsMD/Code/Tools/WorldBuilder/src/WorldBuilder.cpp index 1195103046a..de45c06efc0 100644 --- a/GeneralsMD/Code/Tools/WorldBuilder/src/WorldBuilder.cpp +++ b/GeneralsMD/Code/Tools/WorldBuilder/src/WorldBuilder.cpp @@ -95,7 +95,6 @@ void initSubsystem(SUBSYSTEM*& sysref, SUBSYSTEM* sys, const char* path1 = nullp #define APP_SECTION "WorldbuilderApp" -#define ACCEPT_EULA "AcceptEULA" #define OPEN_FILE_DIR "OpenDirectory" Win32Mouse *TheWin32Mouse = nullptr; @@ -201,8 +200,7 @@ CWorldBuilderApp::CWorldBuilderApp() : m_selTool(nullptr), m_lockCurTool(0), m_3dtemplate(nullptr), - m_pasteMapObjList(nullptr), - m_acceptEULA(FALSE) + m_pasteMapObjList(nullptr) { for (Int i=0; iGetProfileInt(APP_SECTION, ACCEPT_EULA, 0)) - { - EulaDialog eulaDialog; - if( eulaDialog.DoModal() == IDCANCEL ) - { - return FALSE; - } - } - - m_acceptEULA = TRUE; - // ensure the user maps dir exists snprintf(buf, ARRAY_SIZE(buf), "%sMaps\\", TheGlobalData->getPath_UserData().str()); CreateDirectory(buf, nullptr); @@ -649,8 +643,6 @@ void CWorldBuilderApp::OnAppAbout() int CWorldBuilderApp::ExitInstance() { - WriteProfileInt(APP_SECTION, ACCEPT_EULA, m_acceptEULA); - WriteProfileString(APP_SECTION, OPEN_FILE_DIR, m_currentDirectory.str()); m_currentDirectory.clear(); From e5b11af291aa26939562e3f7a0daeb402d532170 Mon Sep 17 00:00:00 2001 From: Caball009 <82909616+Caball009@users.noreply.github.com> Date: Sun, 15 Feb 2026 02:02:54 +0100 Subject: [PATCH 3/3] Removed EULA related code and data. --- .../Code/Tools/WorldBuilder/CMakeLists.txt | 2 - .../Tools/WorldBuilder/include/euladialog.h | 58 ------------- .../Tools/WorldBuilder/res/WorldBuilder.rc | 24 ----- .../Tools/WorldBuilder/src/EulaDialog.cpp | 87 ------------------- .../Tools/WorldBuilder/src/WorldBuilder.cpp | 9 -- 5 files changed, 180 deletions(-) delete mode 100644 GeneralsMD/Code/Tools/WorldBuilder/include/euladialog.h delete mode 100644 GeneralsMD/Code/Tools/WorldBuilder/src/EulaDialog.cpp diff --git a/GeneralsMD/Code/Tools/WorldBuilder/CMakeLists.txt b/GeneralsMD/Code/Tools/WorldBuilder/CMakeLists.txt index c6e309238db..317b8dffd65 100644 --- a/GeneralsMD/Code/Tools/WorldBuilder/CMakeLists.txt +++ b/GeneralsMD/Code/Tools/WorldBuilder/CMakeLists.txt @@ -22,7 +22,6 @@ set(WORLDBUILDER_SRC "src/EditGroup.cpp" "src/EditObjectParameter.cpp" "src/EditParameter.cpp" - "src/EulaDialog.cpp" "src/ExportScriptsOptions.cpp" "src/EyedropperTool.cpp" "src/FeatherOptions.cpp" @@ -122,7 +121,6 @@ set(WORLDBUILDER_SRC "include/EditGroup.h" "include/EditObjectParameter.h" "include/EditParameter.h" - "include/euladialog.h" "include/ExportScriptsOptions.h" "include/EyedropperTool.h" "include/FeatherOptions.h" diff --git a/GeneralsMD/Code/Tools/WorldBuilder/include/euladialog.h b/GeneralsMD/Code/Tools/WorldBuilder/include/euladialog.h deleted file mode 100644 index e7fa8b4745d..00000000000 --- a/GeneralsMD/Code/Tools/WorldBuilder/include/euladialog.h +++ /dev/null @@ -1,58 +0,0 @@ -/* -** Command & Conquer Generals Zero Hour(tm) -** Copyright 2025 Electronic Arts Inc. -** -** This program 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. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU General Public License for more details. -** -** You should have received a copy of the GNU General Public License -** along with this program. If not, see . -*/ - -#pragma once - -// euladialog.h : header file -// - -///////////////////////////////////////////////////////////////////////////// -// EulaDialog dialog - -class EulaDialog : public CDialog -{ -// Construction -public: - EulaDialog(CWnd* pParent = nullptr); // standard constructor - -// Dialog Data - //{{AFX_DATA(EulaDialog) - enum { IDD = IDD_EULA_AGREEMENT }; - // NOTE: the ClassWizard will add data members here - //}}AFX_DATA - - -// Overrides - // ClassWizard generated virtual function overrides - //{{AFX_VIRTUAL(EulaDialog) - protected: - virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support - //}}AFX_VIRTUAL - -// Implementation -protected: - - // Generated message map functions - //{{AFX_MSG(EulaDialog) - virtual BOOL OnInitDialog(); - //}}AFX_MSG - DECLARE_MESSAGE_MAP() -}; - -//{{AFX_INSERT_LOCATION}} -// Microsoft Visual C++ will insert additional declarations immediately before the previous line. diff --git a/GeneralsMD/Code/Tools/WorldBuilder/res/WorldBuilder.rc b/GeneralsMD/Code/Tools/WorldBuilder/res/WorldBuilder.rc index ef28eed189c..6cbb57e5ac1 100644 --- a/GeneralsMD/Code/Tools/WorldBuilder/res/WorldBuilder.rc +++ b/GeneralsMD/Code/Tools/WorldBuilder/res/WorldBuilder.rc @@ -1693,17 +1693,6 @@ BEGIN BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,40,51,95,14 END -IDD_EULA_AGREEMENT DIALOG DISCARDABLE 0, 0, 267, 289 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "EA TOOLS END USER LICENSE" -FONT 8, "MS Sans Serif" -BEGIN - PUSHBUTTON "Cancel",IDCANCEL,210,268,50,14 - DEFPUSHBUTTON "Accept Terms",IDOK,154,268,50,14 - EDITTEXT IDC_EDIT1,17,18,230,246,ES_MULTILINE | ES_READONLY | - WS_VSCROLL -END - IDD_TeamObjectProperties DIALOG DISCARDABLE 0, 0, 213, 327 STYLE DS_MODALFRAME | WS_CHILD | WS_DISABLED | WS_CAPTION | WS_SYSMENU CAPTION "Common Object Properties" @@ -2366,14 +2355,6 @@ BEGIN BOTTOMMARGIN, 88 END - IDD_EULA_AGREEMENT, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 260 - TOPMARGIN, 7 - BOTTOMMARGIN, 282 - END - IDD_TeamObjectProperties, DIALOG BEGIN BOTTOMMARGIN, 321 @@ -2795,11 +2776,6 @@ BEGIN IDS_SINGLE_SELECTION_ONLY "Single Selection Only" IDS_NO_UPGRADES "No Upgrades Available" IDS_TEAMS_FIXED "One or more teams have been fixed. Please save and re-open the file." - IDS_EULA_AGREEMENT1 "Electronic Arts Inc, and its subsidiaries, affiliates and licensors (collectively, ""EA"") grants you a non- transferable license to download and use one copy of the software tool (""Tool""), other materials accompanying the tool, and the materials created with the tool (collectively the ""Tools & Materials"") solely for your personal noncommercial use in connection with EA products." - IDS_EULA_AGREEMENT2 "\r\n\r\nEA and its Licensors own all of the rights in the Tools & Materials. You may not alter any of EA's trademarks or logos, or alter or remove any of EA's or its Licensor's trademark or copyright notices included in or with the Tools & Materials. Your right to use Tools & Materials is limited to the license grant above, and you may not otherwise copy, display, distribute, perform, publish, modify, or use any of the Tools & Materials. Without limiting the preceding sentence, you may not modify, reverse engineer, disassemble, license, transfer, distribute, create derivative works from, or sell the Tool, or use the Tools & Materials to further any commercial or unlawful purpose. Without limiting the foregoing, you may not use the Tools & Materials to sell advertising, to promote another product or business, or on any site that operates or promotes a server emulator." - IDS_EULA_AGREEMENT3 "\r\n\r\nEA does not represent or warrant that you will be able to use any of the Tools & Materials. You expressly agree that your use of the Tools & Materials is at your sole risk. The Tools & Materials are provided on an ""as is,"" ""as available"" basis. EA disclaims all implied warranties and conditions, including without limitation any implied warranties of merchantability, fitness for a particular purpose, or non-infringement of third party rights. EA assumes no responsibility for any damages suffered by you. At EA's request, you agree to defend, indemnify and hold harmless EA from all liabilities, claims and expenses, including attorneys' fees, arising from any breach of this License by you and/or your use or misuse of the Tools & Materials." - IDS_EULA_AGREEMENT4 "\r\n\r\nEA may make the Tools & Materials available at its site(s) located in the United States and/or Canada and/or the European Union. You are solely responsible for knowing and complying with all federal, state, and local laws that may apply to your use of Tools & Materials in your own locale. By downloading any Tools & Materials, you warrant that you are not located in any country, or exporting the Tools & Materials to any person or place, to which the United States and/or Canada and/or European Union or its member countries has embargoed goods." - IDS_EULA_AGREEMENT5 "\r\n\r\nEA may terminate this License at any time. Upon termination, you must destroy or return to EA all Tools & Materials. This License is governed by United States Copyright and California law (without regard to conflicts of law), and is the entire agreement between EA and you regarding the Tools & Materials." IDS_MAPOBJECT_PROPS_TITLE "Object Properties" IDS_NO_PROBLEMS "No problems were detected." IDS_DUPLICATE_TEAM_REMOVED "Duplicate instance of team ""%s"" removed." diff --git a/GeneralsMD/Code/Tools/WorldBuilder/src/EulaDialog.cpp b/GeneralsMD/Code/Tools/WorldBuilder/src/EulaDialog.cpp deleted file mode 100644 index 0814e7f5a5d..00000000000 --- a/GeneralsMD/Code/Tools/WorldBuilder/src/EulaDialog.cpp +++ /dev/null @@ -1,87 +0,0 @@ -/* -** Command & Conquer Generals Zero Hour(tm) -** Copyright 2025 Electronic Arts Inc. -** -** This program 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. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU General Public License for more details. -** -** You should have received a copy of the GNU General Public License -** along with this program. If not, see . -*/ - -// EulaDialog.cpp : implementation file -// - -#include "StdAfx.h" -#include "WorldBuilder.h" -#include "euladialog.h" - -#ifdef RTS_DEBUG -#define new DEBUG_NEW -#undef THIS_FILE -static char THIS_FILE[] = __FILE__; -#endif - -///////////////////////////////////////////////////////////////////////////// -// EulaDialog dialog - - -EulaDialog::EulaDialog(CWnd* pParent /*=nullptr*/) - : CDialog(EulaDialog::IDD, pParent) -{ - //{{AFX_DATA_INIT(EulaDialog) - // NOTE: the ClassWizard will add member initialization here - //}}AFX_DATA_INIT -} - - -void EulaDialog::DoDataExchange(CDataExchange* pDX) -{ - CDialog::DoDataExchange(pDX); - //{{AFX_DATA_MAP(EulaDialog) - // NOTE: the ClassWizard will add DDX and DDV calls here - //}}AFX_DATA_MAP -} - - -BEGIN_MESSAGE_MAP(EulaDialog, CDialog) - //{{AFX_MSG_MAP(EulaDialog) - //}}AFX_MSG_MAP -END_MESSAGE_MAP() - -///////////////////////////////////////////////////////////////////////////// -// EulaDialog message handlers - -BOOL EulaDialog::OnInitDialog() -{ - CDialog::OnInitDialog(); - - CString theText; - theText.LoadString( IDS_EULA_AGREEMENT1 ); - - CString concatText; - concatText.LoadString( IDS_EULA_AGREEMENT2 ); - theText += concatText; - concatText.LoadString( IDS_EULA_AGREEMENT3 ); - theText += concatText; - concatText.LoadString( IDS_EULA_AGREEMENT4 ); - theText += concatText; - concatText.LoadString( IDS_EULA_AGREEMENT5 ); - theText += concatText; - - CWnd *theEditDialog = GetDlgItem( IDC_EDIT1 ); - if( theEditDialog ) - { - theEditDialog->SetWindowText( theText ); - } - - return TRUE; // return TRUE unless you set the focus to a control - // EXCEPTION: OCX Property Pages should return FALSE -} diff --git a/GeneralsMD/Code/Tools/WorldBuilder/src/WorldBuilder.cpp b/GeneralsMD/Code/Tools/WorldBuilder/src/WorldBuilder.cpp index de45c06efc0..4231962e10f 100644 --- a/GeneralsMD/Code/Tools/WorldBuilder/src/WorldBuilder.cpp +++ b/GeneralsMD/Code/Tools/WorldBuilder/src/WorldBuilder.cpp @@ -21,7 +21,6 @@ #include "StdAfx.h" #include "WorldBuilder.h" -#include "euladialog.h" #include "MainFrm.h" #include "OpenMap.h" #include "SplashScreen.h" @@ -275,14 +274,6 @@ static LONG WINAPI UnHandledExceptionFilter(struct _EXCEPTION_POINTERS* e_info) BOOL CWorldBuilderApp::InitInstance() { -//#ifdef RTS_RELEASE - EulaDialog eulaDialog; - if( eulaDialog.DoModal() == IDCANCEL ) - { - return FALSE; - } -//#endif - ApplicationHWnd = GetDesktopWindow(); // initialization