summary refs log blame commit diff stats
path: root/tests/init/tuninit2.nim
blob: 950895c023207e6e7f3d71039c8e81f276412267 (plain) (tree)





















































                                                                           
# 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()