Class: AppDelegate

Inherits:
Object
  • Object
show all
Defined in:
app/osx/menu.rb,
app/ios/app_delegate.rb,
app/osx/app_delegate.rb

Instance Method Summary collapse

Instance Method Details

#application(application, didFinishLaunchingWithOptions: launchOptions) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'app/ios/app_delegate.rb', line 3

def application(application, didFinishLaunchingWithOptions:launchOptions)

  @director = Joybox::Configuration.setup do
    director display_stats: true
    debug repl: true,
          physics: [:shapes, :aabb]
  end

  @navigation_controller = UINavigationController.alloc.initWithRootViewController(@director)
  @navigation_controller.navigationBarHidden = true

  @window = UIWindow.alloc.initWithFrame(UIScreen.mainScreen.bounds)
  @window.setRootViewController(@navigation_controller)
  @window.makeKeyAndVisible

  true
end

#applicationDidBecomeActive(app) ⇒ Object



25
26
27
# File 'app/ios/app_delegate.rb', line 25

def applicationDidBecomeActive(app)
  @director.resume if @navigation_controller.visibleViewController == @director
end

#applicationDidEnterBackground(app) ⇒ Object



29
30
31
# File 'app/ios/app_delegate.rb', line 29

def applicationDidEnterBackground(app)
  @director.stop_animation if @navigation_controller.visibleViewController == @director
end

#applicationDidFinishLaunching(notification) ⇒ Object



3
4
5
6
# File 'app/osx/app_delegate.rb', line 3

def applicationDidFinishLaunching(notification)
  buildMenu
  buildWindow
end

#applicationDidReceiveMemoryWarning(app) ⇒ Object



41
42
43
# File 'app/ios/app_delegate.rb', line 41

def applicationDidReceiveMemoryWarning(app)
  @director.purge_cached_data
end

#applicationSignificantTimeChange(app) ⇒ Object



45
46
47
# File 'app/ios/app_delegate.rb', line 45

def applicationSignificantTimeChange(app)
  @director.set_next_delta_time_zero true
end

#applicationWillEnterForeground(app) ⇒ Object



33
34
35
# File 'app/ios/app_delegate.rb', line 33

def applicationWillEnterForeground(app)
  @director.start_animation if @navigation_controller.visibleViewController == @director
end

#applicationWillResignActive(app) ⇒ Object



21
22
23
# File 'app/ios/app_delegate.rb', line 21

def applicationWillResignActive(app)
  @director.pause if @navigation_controller.visibleViewController == @director
end

#applicationWillTerminate(app) ⇒ Object



37
38
39
# File 'app/ios/app_delegate.rb', line 37

def applicationWillTerminate(app)
  @director.end
end

#buildMenuObject



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'app/osx/menu.rb', line 2

def buildMenu
  @mainMenu = NSMenu.new

  appName = NSBundle.mainBundle.infoDictionary['CFBundleName']
  addMenu(appName) do
    addItemWithTitle("About #{appName}", action: 'orderFrontStandardAboutPanel:', keyEquivalent: '')
    addItem(NSMenuItem.separatorItem)
    addItemWithTitle('Preferences', action: 'openPreferences:', keyEquivalent: ',')
    addItem(NSMenuItem.separatorItem)
    servicesItem = addItemWithTitle('Services', action: nil, keyEquivalent: '')
    NSApp.servicesMenu = servicesItem.submenu = NSMenu.new
    addItem(NSMenuItem.separatorItem)
    addItemWithTitle("Hide #{appName}", action: 'hide:', keyEquivalent: 'h')
    item = addItemWithTitle('Hide Others', action: 'hideOtherApplications:', keyEquivalent: 'H')
    item.keyEquivalentModifierMask = NSCommandKeyMask|NSAlternateKeyMask
    addItemWithTitle('Show All', action: 'unhideAllApplications:', keyEquivalent: '')
    addItem(NSMenuItem.separatorItem)
    addItemWithTitle("Quit #{appName}", action: 'terminate:', keyEquivalent: 'q')
  end

  NSApp.windowsMenu = addMenu('Window') do
    addItemWithTitle('Minimize', action: 'performMiniaturize:', keyEquivalent: 'm')
    addItemWithTitle('Zoom', action: 'performZoom:', keyEquivalent: '')
    addItem(NSMenuItem.separatorItem)
    addItemWithTitle('Bring All To Front', action: 'arrangeInFront:', keyEquivalent: '')
  end.menu

  NSApp.helpMenu = addMenu('Help') do
    addItemWithTitle("#{appName} Help", action: 'showHelp:', keyEquivalent: '?')
  end.menu

  NSApp.mainMenu = @mainMenu
end

#buildWindowObject



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'app/osx/app_delegate.rb', line 8

def buildWindow
  @director = Joybox::Configuration.setup do
    director display_stats: true
    debug repl:true,
          physics: [:shapes, :aabb, :center_of_mass]
  end

  @main_window = NSWindow.alloc.initWithContentRect([[240, 180], [480, 320]],
    styleMask: NSTitledWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask|NSResizableWindowMask,
    backing: NSBackingStoreBuffered,
    defer: false)

  @main_window.title = NSBundle.mainBundle.infoDictionary['CFBundleName']
  @main_window.contentView.addSubview(@director.view)
  @main_window.orderFrontRegardless

  @director.run_with_scene(GameLayer.scene)
end