From b1d1573702f21e3104606d6ade5f5d39ec86a33a Mon Sep 17 00:00:00 2001 From: Hannes Schulze Date: Thu, 23 Jan 2025 22:02:11 +0100 Subject: restructure project --- app/mac/main.mm | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 app/mac/main.mm (limited to 'app/mac/main.mm') diff --git a/app/mac/main.mm b/app/mac/main.mm new file mode 100644 index 0000000..5ca7c5c --- /dev/null +++ b/app/mac/main.mm @@ -0,0 +1,60 @@ +#import "scene.hh" +#import + +#import +#import + +int main(int argc, char** argv) +{ + if (argc != 2) + { + std::cerr << "Usage: " << argv[0] << " " << std::endl; + return 1; + } + + auto filePath = [NSString stringWithUTF8String:argv[1]]; + + auto app = [NSApplication sharedApplication]; + [app setActivationPolicy:NSApplicationActivationPolicyRegular]; + + auto quitItem = [[NSMenuItem alloc] init]; + [quitItem setTitle:@"Quit NES"]; + [quitItem setKeyEquivalent:@"q"]; + [quitItem setKeyEquivalentModifierMask:NSEventModifierFlagCommand]; + [quitItem setTarget:app]; + [quitItem setAction:@selector(terminate:)]; + + auto menu = [[NSMenu alloc] init]; + [menu addItem:quitItem]; + + auto item = [[NSMenuItem alloc] init]; + [item setSubmenu:menu]; + + auto mainMenu = [[NSMenu alloc] init]; + [mainMenu addItem:item]; + [app setMainMenu:mainMenu]; + + auto scene = [[Scene alloc] initWithFilePath:filePath]; + auto minSize = [scene size]; + + auto view = [[SKView alloc] init]; + [view setIgnoresSiblingOrder:YES]; + [view setShowsFPS:YES]; + [view presentScene:scene]; + + auto window = [[NSWindow alloc] initWithContentRect:NSMakeRect(0., 0., minSize.width * 2, minSize.height * 2) + styleMask:(NSWindowStyleMaskTitled | NSWindowStyleMaskClosable | + NSWindowMiniaturizeButton | NSWindowStyleMaskResizable) + backing:NSBackingStoreBuffered + defer:false]; + [window setTitle:@"NES"]; + [window setContentAspectRatio:minSize]; + [window setContentMinSize:minSize]; + [window setContentView:view]; + [window makeKeyAndOrderFront:nil]; + + [app activateIgnoringOtherApps:YES]; + [app run]; + + return 0; +} \ No newline at end of file -- cgit v1.3.1