summary refs log tree commit diff stats
path: root/tests/init/tuninit2.nim
blob: 950895c023207e6e7f3d71039c8e81f276412267 (plain) (blame)
1
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# 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()