mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 08:54:53 +00:00
55 lines
1.4 KiB
Nim
55 lines
1.4 KiB
Nim
# bug #2316
|
|
|
|
type
|
|
EventType = enum
|
|
QuitEvent = 5
|
|
AppMain* = ref object of RootObj
|
|
width: int
|
|
height: int
|
|
title: string
|
|
running: bool
|
|
event_type: EventType
|
|
App* = ref object of AppMain
|
|
draw_proc: proc(app: AppMain): void {.closure.}
|
|
events_proc: proc(app: AppMain): void {.closure.}
|
|
update_proc: proc(app: AppMain, dt: float): void {.closure.}
|
|
load_proc: proc(app: AppMain): void {.closure.}
|
|
|
|
|
|
proc initApp*(t: string, w, h: int): App =
|
|
App(width: w, height: h, title: t, event_type: EventType.QuitEvent)
|
|
|
|
|
|
method getTitle*(self: AppMain): string = self.title
|
|
method getWidth*(self: AppMain): int = self.width
|
|
method getHeight*(self: AppMain): int = self.height
|
|
|
|
|
|
method draw*(self: App, draw: proc(app: AppMain)): void =
|
|
self.draw_proc = draw
|
|
|
|
method load*(self: App, load: proc(a: AppMain)): void =
|
|
self.load_proc = load
|
|
|
|
method events*(self: App, events: proc(app: AppMain)): void =
|
|
self.events_proc = events
|
|
|
|
method update*(self: App, update: proc(app: AppMain, delta: float)): void =
|
|
self.update_proc = update
|
|
|
|
method run*(self: App): void = discard
|
|
|
|
var mygame = initApp("Example", 800, 600)
|
|
|
|
mygame.load(proc(app: AppMain): void =
|
|
echo app.getTitle()
|
|
echo app.getWidth()
|
|
echo app.getHeight()
|
|
)
|
|
|
|
mygame.events(proc(app: AppMain): void =
|
|
discard
|
|
)
|
|
|
|
mygame.run()
|