forked from Mirrors/openclonk
196 lines
4.0 KiB
Plaintext
196 lines
4.0 KiB
Plaintext
/*
|
|
* OpenClonk, http://www.openclonk.org
|
|
*
|
|
* 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.
|
|
*/
|
|
|
|
#include <C4Include.h>
|
|
#include <C4Fullscreen.h>
|
|
#include <C4GraphicsSystem.h>
|
|
#include <C4Viewport.h>
|
|
#include <C4Console.h>
|
|
#include <C4Game.h>
|
|
|
|
#import <StdGL.h>
|
|
|
|
#import "ClonkMainMenuActions.h"
|
|
#import "ClonkOpenGLView.h"
|
|
#import "ConsoleWindowController.h"
|
|
|
|
@implementation ClonkAppDelegate (ClonkMainMenuActions)
|
|
|
|
- (IBAction) openScenario:(id)sender
|
|
{
|
|
Console.FileOpen();
|
|
}
|
|
|
|
- (IBAction) openScenarioWithPlayers:(id)sender
|
|
{
|
|
Console.FileOpenWPlrs();
|
|
}
|
|
|
|
- (IBAction) closeScenario:(id)sender
|
|
{
|
|
Console.FileClose();
|
|
[consoleController.window setRepresentedFilename:@""];
|
|
}
|
|
|
|
- (IBAction) saveGame:(id)sender
|
|
{
|
|
Console.FileSave(true);
|
|
}
|
|
|
|
- (IBAction) saveGameAs:(id)sender
|
|
{
|
|
Console.FileSaveAs(true);
|
|
}
|
|
|
|
- (IBAction) saveScenario:(id)sender
|
|
{
|
|
Console.FileSave(false);
|
|
}
|
|
|
|
- (IBAction) saveScenarioAs:(id)sender
|
|
{
|
|
Console.FileSaveAs(false);
|
|
}
|
|
|
|
- (IBAction) record:(id)sender
|
|
{
|
|
Console.FileRecord();
|
|
}
|
|
|
|
- (IBAction) newViewport:(id)sender
|
|
{
|
|
Console.ViewportNew();
|
|
}
|
|
|
|
- (IBAction) newViewportForPlayer:(id)sender
|
|
{
|
|
::Viewports.CreateViewport([sender tag]);
|
|
}
|
|
|
|
- (IBAction) joinPlayer:(id)sender
|
|
{
|
|
Console.PlayerJoin();
|
|
}
|
|
|
|
- (IBAction) openPropTools:(id)sender;
|
|
{
|
|
Console.EditCursor.OpenPropTools();
|
|
}
|
|
|
|
- (IBAction) showAbout:(id)sender;
|
|
{
|
|
Console.HelpAbout();
|
|
}
|
|
|
|
- (IBAction) toggleFullscreen:(id)sender
|
|
{
|
|
if (Application.isEditor)
|
|
{
|
|
NSBeep();
|
|
return;
|
|
}
|
|
Config.Graphics.Windowed = !Config.Graphics.Windowed;
|
|
Application.SetVideoMode(Config.Graphics.ResX, Config.Graphics.ResY, Config.Graphics.BitDepth, Config.Graphics.Monitor, !Config.Graphics.Windowed);
|
|
}
|
|
|
|
- (IBAction) simulateKeyPressed:(C4KeyCode)key
|
|
{
|
|
Game.DoKeyboardInput(
|
|
key,
|
|
KEYEV_Down,
|
|
false, false, false,
|
|
false, NULL
|
|
);
|
|
Game.DoKeyboardInput(
|
|
key,
|
|
KEYEV_Up,
|
|
false, false, false,
|
|
false, NULL
|
|
);
|
|
}
|
|
|
|
- (IBAction) togglePause:(id)sender
|
|
{
|
|
[self simulateKeyPressed:K_PAUSE];
|
|
}
|
|
|
|
- (IBAction) setConsoleMode:(id)sender
|
|
{
|
|
[consoleController selectMode:sender];
|
|
[consoleController.modeSelector selectSegmentWithTag:[sender tag]];
|
|
}
|
|
|
|
- (IBAction) setDrawingTool:(id)sender
|
|
{
|
|
[consoleController selectTool:sender];
|
|
[consoleController.toolSelector selectSegmentWithTag:[sender tag]];
|
|
}
|
|
|
|
- (IBAction) suggestQuitting:(id)sender;
|
|
{
|
|
// don't directly quit when running in fullscreen mode but rather just send escape
|
|
// which will quit the game when in the startup menu and ask whether to leave the round when playing a round
|
|
if (Application.isEditor)
|
|
[NSApp terminate:self];
|
|
else
|
|
Application.fQuitMsgReceived = true;
|
|
|
|
}
|
|
|
|
- (BOOL)validateUserInterfaceItem:(id<NSValidatedUserInterfaceItem>)item
|
|
{
|
|
// enabled when running in fullscreen
|
|
if ([item action] == @selector(toggleFullscreen:))
|
|
return !Application.isEditor;
|
|
|
|
// game running no matter whether console or fullscreen
|
|
if ([item action] == @selector(togglePause:))
|
|
return Game.IsRunning;
|
|
|
|
// enabled when game running and console mode
|
|
SEL gameRunningInConsoleModeSelectors[] =
|
|
{
|
|
@selector(saveScenario:),
|
|
@selector(saveScenarioAs:),
|
|
@selector(saveGame:),
|
|
@selector(saveGameAs:),
|
|
@selector(record:),
|
|
@selector(closeScenario:),
|
|
@selector(newViewport:),
|
|
@selector(newViewportForPlayer:),
|
|
@selector(joinPlayer:),
|
|
@selector(openPropTools:),
|
|
@selector(setConsoleMode:),
|
|
nil
|
|
};
|
|
int i = 0;
|
|
SEL s;
|
|
while (s = gameRunningInConsoleModeSelectors[i++])
|
|
{
|
|
if (s == [item action])
|
|
return Application.isEditor && Game.IsRunning;
|
|
}
|
|
|
|
// always enabled
|
|
return YES;
|
|
}
|
|
|
|
- (IBAction) visitWebsite:(id)sender;
|
|
{
|
|
OpenURL("http://wiki.openclonk.org");
|
|
}
|
|
|
|
@end
|