Mercurial > malikania
annotate client/main.cpp @ 26:56cc058200b5
Client: add basic mlk-client code with an example, #472
author | David Demelier <markand@malikania.fr> |
---|---|
date | Fri, 08 Apr 2016 14:16:47 +0200 |
parents | e33b246ac2d3 |
children | 0a1adf7dcca0 |
rev | line source |
---|---|
0 | 1 /* |
26
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
2 * main.cpp -- main client file |
0 | 3 * |
26
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
4 * Copyright (c) 2013-2016 David Demelier <markand@malikania.fr> |
0 | 5 * |
6 * Permission to use, copy, modify, and/or distribute this software for any | |
7 * purpose with or without fee is hereby granted, provided that the above | |
8 * copyright notice and this permission notice appear in all copies. | |
9 * | |
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
17 */ | |
18 | |
26
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
19 #include <chrono> |
0 | 20 #include <iostream> |
21 #include <thread> | |
26
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
22 |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
23 #include <malikania/client-resources-loader.h> |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
24 #include <malikania/resources-locator.h> |
0 | 25 |
26
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
26 #include <malikania/js-animation.h> |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
27 #include <malikania/js-animator.h> |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
28 #include <malikania/js-color.h> |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
29 #include <malikania/js-font.h> |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
30 #include <malikania/js-image.h> |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
31 #include <malikania/js-line.h> |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
32 #include <malikania/js-point.h> |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
33 #include <malikania/js-rectangle.h> |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
34 #include <malikania/js-size.h> |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
35 #include <malikania/js-sprite.h> |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
36 #include <malikania/js-window.h> |
0 | 37 |
26
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
38 using namespace malikania; |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
39 |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
40 namespace { |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
41 |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
42 int usage() |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
43 { |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
44 std::cerr << "usage: mlk-client directory\n"; |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
45 |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
46 return 1; |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
47 } |
0 | 48 |
26
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
49 duk::Context init() |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
50 { |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
51 duk::Context ctx; |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
52 |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
53 /* TODO: Put Malikania global somewhere else */ |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
54 duk::putGlobal(ctx, "Malikania", duk::Object()); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
55 |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
56 loadMalikaniaAnimation(ctx); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
57 loadMalikaniaAnimator(ctx); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
58 loadMalikaniaColor(ctx); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
59 loadMalikaniaFont(ctx); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
60 loadMalikaniaImage(ctx); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
61 loadMalikaniaLine(ctx); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
62 loadMalikaniaPoint(ctx); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
63 loadMalikaniaRectangle(ctx); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
64 loadMalikaniaSize(ctx); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
65 loadMalikaniaSprite(ctx); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
66 loadMalikaniaWindow(ctx); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
67 |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
68 return ctx; |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
69 } |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
70 |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
71 void start(duk::Context &ctx) |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
72 { |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
73 duk::getGlobal<void>(ctx, "start"); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
74 |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
75 if (duk::is<duk::Function>(ctx, -1)) { |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
76 duk::getGlobal<void>(ctx, "\xff""\xff""window"); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
77 duk::pcall(ctx, 1); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
78 duk::pop(ctx); |
0 | 79 } else { |
26
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
80 duk::pop(ctx); |
0 | 81 } |
82 } | |
83 | |
26
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
84 void update(duk::Context &ctx) |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
85 { |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
86 duk::getGlobal<void>(ctx, "update"); |
0 | 87 |
26
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
88 if (duk::is<duk::Function>(ctx, -1)) { |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
89 duk::pcall(ctx, 0); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
90 duk::pop(ctx); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
91 } else { |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
92 duk::pop(ctx); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
93 } |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
94 } |
0 | 95 |
26
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
96 void draw(duk::Context &ctx) |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
97 { |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
98 duk::getGlobal<void>(ctx, "draw"); |
0 | 99 |
26
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
100 if (duk::is<duk::Function>(ctx, -1)) { |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
101 duk::getGlobal<void>(ctx, "\xff""\xff""window"); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
102 duk::pcall(ctx, 1); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
103 duk::pop(ctx); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
104 } else { |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
105 duk::pop(ctx); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
106 } |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
107 } |
0 | 108 |
26
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
109 int run(duk::Context &ctx) |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
110 { |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
111 bool running = true; |
0 | 112 |
26
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
113 /* js-window use duk::Pointer at the moment so store it from there temporarily */ |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
114 duk::putGlobal(ctx, "\xff""\xff""window", duk::Pointer<Window>{new Window}); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
115 |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
116 Window *window = duk::getGlobal<duk::Pointer<Window>>(ctx, "\xff""\xff""window"); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
117 |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
118 window->setOnQuit([&] () { |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
119 running = false; |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
120 }); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
121 window->setOnKeyDown([&] (unsigned key) { |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
122 duk::getGlobal<void>(ctx, "keyDown"); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
123 |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
124 if (duk::is<duk::Function>(ctx, -1)) { |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
125 duk::push(ctx, static_cast<int>(key)); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
126 duk::pcall(ctx, 1); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
127 duk::pop(ctx); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
128 } else { |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
129 duk::pop(ctx); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
130 } |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
131 }); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
132 window->setOnKeyDown([&] (unsigned key) { |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
133 duk::getGlobal<void>(ctx, "keyUp"); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
134 |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
135 if (duk::is<duk::Function>(ctx, -1)) { |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
136 duk::push(ctx, static_cast<int>(key)); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
137 duk::pcall(ctx, 1); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
138 duk::pop(ctx); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
139 } else { |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
140 duk::pop(ctx); |
0 | 141 } |
142 }); | |
143 | |
26
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
144 start(ctx); |
0 | 145 |
26
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
146 while (running) { |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
147 window->poll(); |
0 | 148 |
26
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
149 update(ctx); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
150 draw(ctx); |
0 | 151 |
26
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
152 // TODO: remove this with an appropriate FPS calculation. |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
153 std::this_thread::sleep_for(std::chrono::milliseconds(50)); |
0 | 154 } |
155 | |
156 return 0; | |
157 } | |
158 | |
26
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
159 int boot(const std::string &directory) |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
160 { |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
161 std::string path = directory + "/client.js"; |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
162 duk::Context ctx = init(); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
163 |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
164 /* Store the loader */ |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
165 ResourcesLocatorDirectory locator(directory); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
166 ClientResourcesLoader loader(locator); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
167 |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
168 duk::putGlobal(ctx, "\xff""\xff""loader", duk::RawPointer<ClientResourcesLoader>{&loader}); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
169 |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
170 if (duk::pevalFile(ctx, path) != 0) { |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
171 duk::ErrorInfo info = duk::error(ctx, -1); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
172 |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
173 std::cerr << info.fileName << ":" << info.lineNumber << ": " << info.stack << std::endl; |
0 | 174 |
26
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
175 return 1; |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
176 } |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
177 |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
178 return run(ctx); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
179 } |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
180 |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
181 } // !namespace |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
182 |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
183 int main(int argc, char **argv) |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
184 { |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
185 -- argc; |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
186 ++ argv; |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
187 |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
188 if (argc < 1) { |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
189 return usage(); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
190 } |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
191 |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
192 return boot(argv[0]); |
56cc058200b5
Client: add basic mlk-client code with an example, #472
David Demelier <markand@malikania.fr>
parents:
8
diff
changeset
|
193 } |