openclonk/src/editor/C4Console.cpp

595 lines
15 KiB
C++
Raw Normal View History

2009-05-08 13:28:41 +00:00
/*
* OpenClonk, http://www.openclonk.org
*
* Copyright (c) 1998-2000, 2003-2004, 2008 Matthes Bender
* Copyright (c) 2001-2002, 2004-2007 Sven Eberhardt
* Copyright (c) 2004, 2007, 2009 Peter Wortmann
2011-09-01 14:58:52 +00:00
* Copyright (c) 2005-2007, 2009-2011 Günther Brammer
* Copyright (c) 2006 Armin Burgmeier
* Copyright (c) 2009 Nicolas Hake
* Copyright (c) 2010 Benjamin Herr
* Copyright (c) 2010 Martin Plicht
2009-05-08 13:28:41 +00:00
* Copyright (c) 2001-2009, RedWolf Design GmbH, http://www.clonk.de
*
* Portions might be copyrighted by other authors who have contributed
* to OpenClonk.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
* See isc_license.txt for full license and disclaimer.
*
* "Clonk" is a registered trademark of Matthes Bender.
* See clonk_trademark_license.txt for full license.
*/
/* Handles engine execution in developer mode */
#include <C4Include.h>
#include <C4Console.h>
#include <C4Application.h>
#include <C4Def.h>
2009-05-08 13:28:41 +00:00
#include <C4GameSave.h>
#include <C4Game.h>
#include <C4MessageInput.h>
2009-05-08 13:28:41 +00:00
#include <C4Version.h>
#include <C4Language.h>
#include <C4Player.h>
#include <C4Landscape.h>
#include <C4GraphicsSystem.h>
#include <C4Viewport.h>
#include <C4ScriptHost.h>
2009-06-12 23:09:32 +00:00
#include <C4PlayerList.h>
2009-06-15 22:06:37 +00:00
#include <C4GameControl.h>
2009-05-08 13:28:41 +00:00
#include <StdFile.h>
#include <StdRegistry.h>
#define FILE_SELECT_FILTER_FOR_C4S "Clonk 4 Scenario\0" \
2011-03-13 15:38:33 +00:00
"*.ocs;*.ocf;Scenario.txt\0" \
2010-03-28 18:58:01 +00:00
"\0"
using namespace OpenFileFlags;
C4Console::C4Console(): C4ConsoleGUI()
2010-03-28 18:58:01 +00:00
{
Active = false;
Editing = true;
2009-05-08 13:28:41 +00:00
FrameCounter=0;
fGameOpen=false;
2009-05-08 13:28:41 +00:00
#ifdef USE_WIN32_WINDOWS
2009-05-08 13:28:41 +00:00
hWindow=NULL;
#endif
2010-03-28 18:58:01 +00:00
}
2009-05-08 13:28:41 +00:00
C4Console::~C4Console()
2010-03-28 18:58:01 +00:00
{
}
2009-05-08 13:28:41 +00:00
2011-08-27 21:12:01 +00:00
C4Window * C4Console::Init(C4AbstractApp * pApp)
2010-03-28 18:58:01 +00:00
{
return C4ConsoleGUI::CreateConsoleWindow(pApp);
2009-05-08 13:28:41 +00:00
}
bool C4Console::In(const char *szText)
2010-03-28 18:58:01 +00:00
{
if (!Active || !szText) return false;
2009-05-08 13:28:41 +00:00
// begins with '/'? then it's a command
if (*szText == '/')
2010-03-28 18:58:01 +00:00
{
::MessageInput.ProcessCommand(szText);
2009-05-08 13:28:41 +00:00
// done
return true;
2010-03-28 18:58:01 +00:00
}
// begins with '#'? then it's a message. Route via ProcessInput to allow #/sound
2009-05-08 13:28:41 +00:00
if (*szText == '#')
2010-03-28 18:58:01 +00:00
{
::MessageInput.ProcessInput(szText + 1);
return true;
2010-03-28 18:58:01 +00:00
}
2009-05-08 13:28:41 +00:00
// editing enabled?
if (!EditCursor.EditingOK()) return false;
2009-05-08 13:28:41 +00:00
// pass through network queue
::Control.DoInput(CID_Script, new C4ControlScript(szText, C4ControlScript::SCOPE_Console), CDT_Decide);
return true;
2010-03-28 18:58:01 +00:00
}
2009-05-08 13:28:41 +00:00
// Someone defines Status as int....
#ifdef Status
#undef Status
#endif
void C4Console::DoPlay()
{
Game.Unpause();
}
void C4Console::DoHalt()
{
Game.Pause();
}
void C4Console::UpdateStatusBars()
2010-03-28 18:58:01 +00:00
{
if (!Active) return;
2009-05-08 13:28:41 +00:00
// Frame counter
if (Game.FrameCounter!=FrameCounter)
2010-03-28 18:58:01 +00:00
{
2009-05-08 13:28:41 +00:00
FrameCounter=Game.FrameCounter;
2009-05-11 13:09:53 +00:00
StdStrBuf str;
str.Format("Frame: %i",FrameCounter);
C4ConsoleGUI::DisplayInfoText(CONSOLE_FrameCounter, str);
2010-03-28 18:58:01 +00:00
}
2009-05-08 13:28:41 +00:00
// Time & FPS
if ((Game.Time!=Time) || (Game.FPS!=FPS))
2010-03-28 18:58:01 +00:00
{
2009-05-08 13:28:41 +00:00
Time=Game.Time;
FPS=Game.FPS;
2009-05-11 13:09:53 +00:00
StdStrBuf str;
str.Format("%02d:%02d:%02d (%i FPS)",Time/3600,(Time%3600)/60,Time%60,FPS);
C4ConsoleGUI::DisplayInfoText(CONSOLE_TimeFPS, str);
2009-05-08 13:28:41 +00:00
}
2010-03-28 18:58:01 +00:00
}
2009-05-08 13:28:41 +00:00
bool C4Console::SaveGame(const char * path)
2010-03-28 18:58:01 +00:00
{
2009-05-08 13:28:41 +00:00
// Network hosts only
2009-06-05 15:19:46 +00:00
if (::Network.isEnabled() && !::Network.isHost())
{ Message(LoadResStr("IDS_GAME_NOCLIENTSAVE")); return false; }
2009-05-08 13:28:41 +00:00
// Save game to open scenario file
bool fOkay=true;
SetCursor(C4ConsoleGUI::CURSOR_Wait);
2009-05-08 13:28:41 +00:00
C4GameSave *pGameSave = new C4GameSaveSavegame();
if (!pGameSave->Save(path))
{ Out("Save failed"); fOkay=false; }
2009-05-08 13:28:41 +00:00
delete pGameSave;
SetCursor(C4ConsoleGUI::CURSOR_Normal);
2009-05-08 13:28:41 +00:00
// Status report
if (!fOkay) Message(LoadResStr("IDS_CNS_SAVERROR"));
else Out(LoadResStr("IDS_CNS_GAMESAVED"));
2009-05-08 13:28:41 +00:00
return fOkay;
2010-03-28 18:58:01 +00:00
}
2009-05-08 13:28:41 +00:00
bool C4Console::SaveScenario(const char * path)
2010-03-28 18:58:01 +00:00
{
// Network hosts only
if (::Network.isEnabled() && !::Network.isHost())
{ Message(LoadResStr("IDS_GAME_NOCLIENTSAVE")); return false; }
// Open new scenario file
if (path)
{
// Close current scenario file
Game.ScenarioFile.Close();
// Copy current scenario file to target
if (!C4Group_CopyItem(Game.ScenarioFilename,path))
{
Message(FormatString(LoadResStr("IDS_CNS_SAVEASERROR"),path).getData());
return false;
}
SCopy(path, Game.ScenarioFilename);
SetCaptionToFilename(Game.ScenarioFilename);
if (!Game.ScenarioFile.Open(Game.ScenarioFilename))
{
Message(FormatString(LoadResStr("IDS_CNS_SAVEASERROR"),Game.ScenarioFilename).getData());
return false;
}
}
// Can't save to child groups
if (Game.ScenarioFile.GetMother())
{
StdStrBuf str;
str.Format(LoadResStr("IDS_CNS_NOCHILDSAVE"),
GetFilename(Game.ScenarioFile.GetName()));
Message(str.getData());
return false;
}
// Save game to open scenario file
SetCursor(C4ConsoleGUI::CURSOR_Wait);
bool fOkay=true;
C4GameSave *pGameSave = new C4GameSaveScenario(!Console.Active || ::Landscape.Mode==C4LSC_Exact, false);
if (!pGameSave->Save(Game.ScenarioFile, false))
{ Out("Game::Save failed"); fOkay=false; }
delete pGameSave;
// Close and reopen scenario file to fix file changes
if (!Game.ScenarioFile.Close())
{ Out("ScenarioFile::Close failed"); fOkay=false; }
if (!Game.ScenarioFile.Open(Game.ScenarioFilename))
{ Out("ScenarioFile::Open failed"); fOkay=false; }
SetCursor(C4ConsoleGUI::CURSOR_Normal);
// Initialize/script notification
if (Game.fScriptCreatedObjects)
{
StdStrBuf str(LoadResStr("IDS_CNS_SCRIPTCREATEDOBJECTS"));
str += LoadResStr("IDS_CNS_WARNDOUBLE");
Message(str.getData());
Game.fScriptCreatedObjects=false;
}
// Status report
if (!fOkay) Message(LoadResStr("IDS_CNS_SAVERROR"));
else Out(LoadResStr("IDS_CNS_SCENARIOSAVED"));
return fOkay;
}
bool C4Console::FileSave()
{
2009-05-08 13:28:41 +00:00
// Save game
// FIXME: What about editing a savegame inplace? (Game.C4S.Head.SaveGame)
return SaveScenario(NULL);
2010-03-28 18:58:01 +00:00
}
2009-05-08 13:28:41 +00:00
bool C4Console::FileSaveAs(bool fSaveGame)
2010-03-28 18:58:01 +00:00
{
2009-05-08 13:28:41 +00:00
// Do save-as dialog
StdStrBuf filename;
filename.Copy(Game.ScenarioFile.GetName());
if (!FileSelect(&filename,
2011-03-13 15:11:55 +00:00
"Clonk 4 Scenario\0*.ocs\0\0",
2010-03-28 18:58:01 +00:00
OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY,
true)) return false;
DefaultExtension(&filename,"ocs");
if (fSaveGame)
// Save game
return SaveGame(filename.getData());
else
return SaveScenario(filename.getData());
2010-03-28 18:58:01 +00:00
}
2009-05-08 13:28:41 +00:00
bool C4Console::Message(const char *szMessage, bool fQuery)
2010-03-28 18:58:01 +00:00
{
if (!Active) return false;
return C4ConsoleGUI::Message(szMessage, fQuery);
2010-03-28 18:58:01 +00:00
}
2009-05-08 13:28:41 +00:00
bool C4Console::FileOpen()
2010-03-28 18:58:01 +00:00
{
2009-05-08 13:28:41 +00:00
// Get scenario file name
StdStrBuf c4sfile ("");
if (!FileSelect(&c4sfile,
FILE_SELECT_FILTER_FOR_C4S,
OFN_HIDEREADONLY | OFN_FILEMUSTEXIST))
return false;
Application.ClearCommandLine();
2009-05-08 13:28:41 +00:00
// Open game
Application.OpenGame(c4sfile.getData());
return true;
2010-03-28 18:58:01 +00:00
}
2009-05-08 13:28:41 +00:00
bool C4Console::FileOpenWPlrs()
2010-03-28 18:58:01 +00:00
{
2009-05-08 13:28:41 +00:00
// Get scenario file name
StdStrBuf c4sfile ("");
if (!FileSelect(&c4sfile,
FILE_SELECT_FILTER_FOR_C4S,
OFN_HIDEREADONLY | OFN_FILEMUSTEXIST))
return false;
2009-05-08 13:28:41 +00:00
// Get player file name(s)
StdStrBuf c4pfile ("");
if (!FileSelect(&c4pfile,
2011-03-13 15:39:48 +00:00
"Clonk 4 Player\0*.ocp\0\0",
2010-03-28 18:58:01 +00:00
OFN_HIDEREADONLY | OFN_ALLOWMULTISELECT | OFN_EXPLORER
)) return false;
2009-05-08 13:28:41 +00:00
// Compose command line
Application.ClearCommandLine();
if (DirectoryExists(c4pfile.getData())) // Multiplayer
2010-03-28 18:58:01 +00:00
{
const char *cptr = c4pfile.getData() + SLen(c4pfile.getData()) + 1;
2009-05-08 13:28:41 +00:00
while (*cptr)
2010-03-28 18:58:01 +00:00
{
char c4pfile2[512 + 1] = "";
SAppend(c4pfile.getData(), c4pfile2, 512);
SAppend(DirSep, c4pfile2, 512);
SAppend(cptr, c4pfile2, 512);
SAddModule(Game.PlayerFilenames, c4pfile2);
cptr += SLen(cptr) + 1;
2009-05-08 13:28:41 +00:00
}
2010-03-28 18:58:01 +00:00
}
2009-05-08 13:28:41 +00:00
else // Single player
2010-03-28 18:58:01 +00:00
{
SAddModule(Game.PlayerFilenames, c4pfile.getData());
2010-03-28 18:58:01 +00:00
}
2009-05-08 13:28:41 +00:00
// Open game
Application.OpenGame(c4sfile.getData());
return true;
2010-03-28 18:58:01 +00:00
}
2009-05-08 13:28:41 +00:00
bool C4Console::FileClose()
2010-03-28 18:58:01 +00:00
{
if (!fGameOpen) return false;
Application.QuitGame();
return true;
2010-03-28 18:58:01 +00:00
}
2009-05-08 13:28:41 +00:00
bool C4Console::FileSelect(StdStrBuf * sFilename, const char * szFilter, DWORD dwFlags, bool fSave)
2010-03-28 18:58:01 +00:00
{
return C4ConsoleGUI::FileSelect(sFilename, szFilter, dwFlags, fSave);
2010-03-28 18:58:01 +00:00
}
2009-05-08 13:28:41 +00:00
bool C4Console::FileRecord()
2010-03-28 18:58:01 +00:00
{
2009-05-08 13:28:41 +00:00
// only in running mode
if (!Game.IsRunning || !::Control.IsRuntimeRecordPossible()) return false;
2009-05-08 13:28:41 +00:00
// start record!
2009-06-15 22:06:37 +00:00
::Control.RequestRuntimeRecord();
2009-05-08 13:28:41 +00:00
// disable menuitem
RecordingEnabled();
return true;
2010-03-28 18:58:01 +00:00
}
2009-05-08 13:28:41 +00:00
void C4Console::ClearPointers(C4Object *pObj)
2010-03-28 18:58:01 +00:00
{
2009-05-08 13:28:41 +00:00
EditCursor.ClearPointers(pObj);
2010-03-28 18:58:01 +00:00
}
2009-05-08 13:28:41 +00:00
void C4Console::Default()
2010-03-28 18:58:01 +00:00
{
2009-05-08 13:28:41 +00:00
EditCursor.Default();
PropertyDlgObject = 0;
2009-05-08 13:28:41 +00:00
ToolsDlg.Default();
2010-03-28 18:58:01 +00:00
}
2009-05-08 13:28:41 +00:00
void C4Console::Clear()
2010-03-28 18:58:01 +00:00
{
2012-04-11 02:15:33 +00:00
C4Window::Clear();
2009-05-08 13:28:41 +00:00
EditCursor.Clear();
ToolsDlg.Clear();
PropertyDlgClose();
2009-05-08 13:28:41 +00:00
ClearViewportMenu();
ClearPlayerMenu();
ClearNetMenu();
2010-03-28 18:58:01 +00:00
if (pSurface) delete pSurface;
pSurface = 0;
2009-05-08 13:28:41 +00:00
#ifndef _WIN32
Application.Quit();
#endif
2010-03-28 18:58:01 +00:00
}
2009-05-08 13:28:41 +00:00
void C4Console::Close()
2010-03-28 18:58:01 +00:00
{
2009-05-08 13:28:41 +00:00
Application.Quit();
2010-03-28 18:58:01 +00:00
}
2009-05-08 13:28:41 +00:00
bool C4Console::FileQuit()
2010-03-28 18:58:01 +00:00
{
2009-05-08 13:28:41 +00:00
Close();
return true;
2010-03-28 18:58:01 +00:00
}
2009-05-08 13:28:41 +00:00
void C4Console::HelpAbout()
2010-03-28 18:58:01 +00:00
{
2009-05-08 13:28:41 +00:00
StdStrBuf strCopyright;
strCopyright.Format("Copyright (c) %s %s", C4COPYRIGHT_YEAR, C4COPYRIGHT_COMPANY);
ShowAboutWithCopyright(strCopyright);
2010-03-28 18:58:01 +00:00
}
2009-05-08 13:28:41 +00:00
void C4Console::ViewportNew()
2010-03-28 18:58:01 +00:00
{
::Viewports.CreateViewport(NO_OWNER);
2010-03-28 18:58:01 +00:00
}
2009-05-08 13:28:41 +00:00
bool C4Console::UpdateViewportMenu()
2010-03-28 18:58:01 +00:00
{
if (!Active) return false;
2009-05-08 13:28:41 +00:00
ClearViewportMenu();
2009-06-12 23:09:32 +00:00
for (C4Player *pPlr=::Players.First; pPlr; pPlr=pPlr->Next)
2010-03-28 18:58:01 +00:00
{
2009-05-08 13:28:41 +00:00
StdStrBuf sText;
sText.Format(LoadResStr("IDS_CNS_NEWPLRVIEWPORT"),pPlr->GetName());
C4ConsoleGUI::AddMenuItemForPlayer(pPlr, sText);
2009-05-08 13:28:41 +00:00
}
2010-03-28 18:58:01 +00:00
return true;
}
2009-05-08 13:28:41 +00:00
void C4Console::ClearViewportMenu()
2010-03-28 18:58:01 +00:00
{
2009-05-08 13:28:41 +00:00
if (!Active) return;
C4ConsoleGUI::ClearViewportMenu();
2010-03-28 18:58:01 +00:00
}
2009-05-08 13:28:41 +00:00
void C4Console::UpdateInputCtrl()
2010-03-28 18:58:01 +00:00
{
ClearInput();
2009-05-08 13:28:41 +00:00
// add global and standard functions
std::list <const char*> functions = ::ScriptEngine.GetFunctionNames(::GameScript.ScenPropList._getPropList());
SetInputFunctions(functions);
2010-03-28 18:58:01 +00:00
}
2009-05-08 13:28:41 +00:00
bool C4Console::UpdatePlayerMenu()
2010-03-28 18:58:01 +00:00
{
if (!Active) return false;
2009-05-08 13:28:41 +00:00
ClearPlayerMenu();
2009-06-12 23:09:32 +00:00
for (C4Player *pPlr=::Players.First; pPlr; pPlr=pPlr->Next)
2010-03-28 18:58:01 +00:00
{
2009-05-08 13:28:41 +00:00
StdStrBuf sText;
2009-06-05 15:19:46 +00:00
if (::Network.isEnabled())
2009-05-08 13:28:41 +00:00
sText.Format(LoadResStr("IDS_CNS_PLRQUITNET"),pPlr->GetName(),pPlr->AtClientName);
else
sText.Format(LoadResStr("IDS_CNS_PLRQUIT"),pPlr->GetName());
AddKickPlayerMenuItem(pPlr, sText, (!::Network.isEnabled() || ::Network.isHost()) && Editing);
2009-05-08 13:28:41 +00:00
}
2010-03-28 18:58:01 +00:00
return true;
}
2009-05-08 13:28:41 +00:00
void C4Console::UpdateMenus()
2010-03-28 18:58:01 +00:00
{
2009-05-08 13:28:41 +00:00
if (!Active) return;
EnableControls(fGameOpen);
UpdatePlayerMenu();
UpdateViewportMenu();
UpdateNetMenu();
2010-03-28 18:58:01 +00:00
}
2009-05-08 13:28:41 +00:00
void C4Console::PlayerJoin()
2010-03-28 18:58:01 +00:00
{
2009-05-08 13:28:41 +00:00
// Get player file name(s)
StdStrBuf c4pfile ("");
if (!FileSelect(&c4pfile,
2011-03-13 15:39:48 +00:00
"Clonk 4 Player\0*.ocp\0\0",
2010-03-28 18:58:01 +00:00
OFN_HIDEREADONLY | OFN_ALLOWMULTISELECT | OFN_EXPLORER
)) return;
2009-05-08 13:28:41 +00:00
// Multiple players
if (DirectoryExists(c4pfile.getData()))
2010-03-28 18:58:01 +00:00
{
const char *cptr = c4pfile.getData() + SLen(c4pfile.getData()) + 1;
2009-05-08 13:28:41 +00:00
while (*cptr)
2010-03-28 18:58:01 +00:00
{
StdStrBuf f;
f.Copy(c4pfile.getData());
f.AppendBackslash(); f.Append(cptr);
2009-05-08 13:28:41 +00:00
cptr += SLen(cptr)+1;
::Players.JoinNew(f.getData());
2009-05-08 13:28:41 +00:00
}
2010-03-28 18:58:01 +00:00
}
2009-05-08 13:28:41 +00:00
// Single player
else
2010-03-28 18:58:01 +00:00
{
::Players.JoinNew(c4pfile.getData());
2010-03-28 18:58:01 +00:00
}
}
2009-05-08 13:28:41 +00:00
void C4Console::UpdateNetMenu()
2010-03-28 18:58:01 +00:00
{
2009-05-08 13:28:41 +00:00
// Active & network hosting check
if (!Active) return;
2009-06-05 15:19:46 +00:00
if (!::Network.isHost() || !::Network.isEnabled()) return;
2009-05-08 13:28:41 +00:00
// Clear old
ClearNetMenu();
// Insert menu
2011-01-04 19:31:55 +00:00
C4ConsoleGUI::AddNetMenu();
2009-05-08 13:28:41 +00:00
// Host
2009-05-11 13:09:53 +00:00
StdStrBuf str;
str.Format(LoadResStr("IDS_MNU_NETHOST"),Game.Clients.getLocalName(),Game.Clients.getLocalID());
AddNetMenuItemForPlayer(IDM_NET_CLIENT1+Game.Clients.getLocalID(), str);
2009-05-08 13:28:41 +00:00
// Clients
2009-06-05 15:19:46 +00:00
for (C4Network2Client *pClient=::Network.Clients.GetNextClient(NULL); pClient; pClient=::Network.Clients.GetNextClient(pClient))
2010-03-28 18:58:01 +00:00
{
str.Format(LoadResStr(pClient->isActivated() ? "IDS_MNU_NETCLIENT" : "IDS_MNU_NETCLIENTDE"),
pClient->getName(), pClient->getID());
AddNetMenuItemForPlayer(IDM_NET_CLIENT1+pClient->getID(), str);
2010-03-28 18:58:01 +00:00
}
2009-05-08 13:28:41 +00:00
return;
2010-03-28 18:58:01 +00:00
}
2009-05-08 13:28:41 +00:00
void C4Console::ClearNetMenu()
2010-03-28 18:58:01 +00:00
{
2009-05-08 13:28:41 +00:00
if (!Active) return;
2011-01-04 19:31:55 +00:00
C4ConsoleGUI::ClearNetMenu();
2010-03-28 18:58:01 +00:00
}
2009-05-08 13:28:41 +00:00
void C4Console::SetCaptionToFilename(const char* szFilename)
2010-03-28 18:58:01 +00:00
{
SetTitle(GetFilename(szFilename));
C4ConsoleGUI::SetCaptionToFileName(szFilename);
2010-03-28 18:58:01 +00:00
}
2009-05-08 13:28:41 +00:00
void C4Console::Execute()
2010-03-28 18:58:01 +00:00
{
2009-05-08 13:28:41 +00:00
EditCursor.Execute();
ObjectListDlg.Execute();
UpdateStatusBars();
::GraphicsSystem.Execute();
2010-03-28 18:58:01 +00:00
}
2009-05-08 13:28:41 +00:00
void C4Console::InitGame()
2010-03-28 18:58:01 +00:00
{
if (!Active) return;
2009-05-08 13:28:41 +00:00
// Default game dependent members
Default();
SetCaptionToFilename(Game.ScenarioFilename);
2009-05-08 13:28:41 +00:00
// Init game dependent members
EditCursor.Init();
2009-05-08 13:28:41 +00:00
// Console updates
fGameOpen=true;
2009-05-08 13:28:41 +00:00
UpdateInputCtrl();
EnableControls(fGameOpen);
UpdatePlayerMenu();
UpdateViewportMenu();
2010-03-28 18:58:01 +00:00
}
2009-05-08 13:28:41 +00:00
void C4Console::CloseGame()
2010-03-28 18:58:01 +00:00
{
if (!Active || !fGameOpen) return;
fGameOpen=false;
2009-05-08 13:28:41 +00:00
EnableControls(fGameOpen);
SetTitle(LoadResStr("IDS_CNS_CONSOLE"));
2010-03-28 18:58:01 +00:00
}
2009-05-08 13:28:41 +00:00
bool C4Console::TogglePause()
2010-03-28 18:58:01 +00:00
{
2009-05-08 13:28:41 +00:00
return Game.TogglePause();
2010-03-28 18:58:01 +00:00
}
#if !(defined(USE_WIN32_WINDOWS) || defined(USE_COCOA) || defined(WITH_DEVELOPER_MODE))
class C4ConsoleGUI::State: public C4ConsoleGUI::InternalState<class C4ConsoleGUI>
{
public: State(C4ConsoleGUI *console): Super(console) {}
};
class C4ToolsDlg::State: public C4ConsoleGUI::InternalState<class C4ToolsDlg>
{
public: State(C4ToolsDlg* dlg): Super(dlg) {}
void Clear() {}
void Default() {}
};
void C4ConsoleGUI::AddKickPlayerMenuItem(C4Player*, StdStrBuf&, bool) {}
void C4ConsoleGUI::AddMenuItemForPlayer(C4Player*, StdStrBuf&) {}
void C4ConsoleGUI::AddNetMenuItemForPlayer(int, StdStrBuf&) {}
void C4ConsoleGUI::AddNetMenu() {}
void C4ConsoleGUI::ToolsDlgClose() {}
void C4ConsoleGUI::ClearInput() {}
bool C4ConsoleGUI::ClearLog() {return 0;}
void C4ConsoleGUI::ClearNetMenu() {}
void C4ConsoleGUI::ClearPlayerMenu() {}
void C4ConsoleGUI::ClearViewportMenu() {}
2012-11-15 23:05:58 +00:00
C4Window * C4ConsoleGUI::CreateConsoleWindow(C4AbstractApp*) { return this; }
void C4ConsoleGUI::DisplayInfoText(C4ConsoleGUI::InfoTextType, StdStrBuf&) {}
void C4ConsoleGUI::DoEnableControls(bool) {}
bool C4ConsoleGUI::DoUpdateHaltCtrls(bool) {return 0;}
bool C4ConsoleGUI::FileSelect(StdStrBuf *, char const*, DWORD, bool) {return 0;}
bool C4ConsoleGUI::Message(char const*, bool) {return 0;}
void C4ConsoleGUI::Out(char const*) {}
bool C4ConsoleGUI::PropertyDlgOpen() {return 0;}
void C4ConsoleGUI::PropertyDlgClose() {}
void C4ConsoleGUI::PropertyDlgUpdate(C4ObjectList &rSelection) {}
void C4ConsoleGUI::RecordingEnabled() {}
void C4ConsoleGUI::SetCaptionToFileName(char const*) {}
void C4ConsoleGUI::SetCursor(C4ConsoleGUI::Cursor) {}
2012-03-09 16:42:48 +00:00
void C4ConsoleGUI::SetInputFunctions(std::list<const char*>&) {}
void C4ConsoleGUI::ShowAboutWithCopyright(StdStrBuf&) {}
void C4ConsoleGUI::ToolsDlgInitMaterialCtrls(C4ToolsDlg*) {}
bool C4ConsoleGUI::ToolsDlgOpen(C4ToolsDlg*) {return 0;}
void C4ConsoleGUI::ToolsDlgSelectTexture(C4ToolsDlg*, char const*) {}
void C4ConsoleGUI::ToolsDlgSetMaterial(C4ToolsDlg*, char const*) {}
void C4ConsoleGUI::ToolsDlgSetTexture(C4ToolsDlg*, char const*) {}
bool C4ConsoleGUI::UpdateModeCtrls(int) {return 0;}
void C4ToolsDlg::EnableControls() {}
void C4ToolsDlg::InitGradeCtrl() {}
void C4ToolsDlg::NeedPreviewUpdate() {}
bool C4ToolsDlg::PopMaterial() {return 0;}
bool C4ToolsDlg::PopTextures() {return 0;}
void C4ToolsDlg::UpdateIFTControls() {}
void C4ToolsDlg::UpdateLandscapeModeCtrls() {}
void C4ToolsDlg::UpdateTextures() {}
void C4ToolsDlg::UpdateToolCtrls() {}
bool C4Viewport::ScrollBarsByViewPosition() {return 0;}
bool C4Viewport::TogglePlayerLock() {return 0;}
#include "C4ConsoleGUICommon.h"
#endif