Skip to content

Commit f0496ba

Browse files
authored
Merge pull request #43 from JohnDog3112/dev2
Minor Changes
2 parents 44572c6 + 49d7d36 commit f0496ba

File tree

6 files changed

+41
-16
lines changed

6 files changed

+41
-16
lines changed

examples/pong/index.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212
</script>
1313
</head>
1414
<body>
15-
<canvas id="twr_d2dcanvas" width="900" height="600"></canvas>
15+
<canvas id="twr_d2dcanvas" width="900" height="600"></canvas><br>
16+
<a id="control_text"></a>
1617

1718
<script type="module">
1819
import {twrWasmModule, twrWasmModuleAsync} from "twr-wasm";

examples/pong/jsEventsLib.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ export default class jsEventsLib extends twrLibrary {
1010
registerAnimationLoop: {},
1111
registerMousePressEvent: {},
1212
registerMouseMoveEvent: {},
13+
14+
setElementText: {},
1315
};
1416

1517
// every library should have this line
@@ -89,6 +91,16 @@ export default class jsEventsLib extends twrLibrary {
8991
}
9092
}
9193

94+
setElementText(mod:IWasmModule|IWasmModuleAsync, elementIDPtr: number, textPtr: number) {
95+
const elementID = mod.wasmMem.getString(elementIDPtr);
96+
const text = mod.wasmMem.getString(textPtr);
97+
98+
const element = document.getElementById(elementID)!;
99+
if (!element) throw new Error(`setElementText was given an invalid ID (${elementID})`);
100+
101+
element.innerText = text;
102+
}
103+
92104
}
93105

94106

examples/pong/pong-menu.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,10 @@ const colorRGB_t s_pong_background_color = 0xFFFFFF;
199199
const colorRGB_t s_pong_paddle_color = 0xFF0000;
200200
const colorRGB_t s_pong_ball_color = 0x00FF00;
201201

202+
extern "C" {
203+
__attribute__((import_name("setElementText")))
204+
void set_element_text(const char* element_id, const char* text);
205+
}
202206
void Menu::tryButtonPress(long x, long y) {
203207
this->updateButtonSelections(x, y);
204208
for (LinkedList<MenuButton>* node = this->buttons.root; node; node = node->next) {
@@ -208,16 +212,19 @@ void Menu::tryButtonPress(long x, long y) {
208212
case 0:
209213
this->state = MenuState::SinglePlayerPong;
210214
this->s_pong = Pong(600, 600, s_pong_border_color, s_pong_background_color, s_pong_paddle_color, s_pong_ball_color);
215+
set_element_text("control_text", "Move the paddle using a and d or the left and right arrow keys.");
211216
break;
212217

213218
case 1:
214219
this->state = MenuState::TwoPlayerPong;
215220
this->t_pong = TwoPlayerPong(this->width, this->height, true);
221+
set_element_text("control_text", "Move the paddle using w and s or the up and down arrow keys.");
216222
break;
217223

218224
case 2:
219225
this->state = MenuState::TwoPlayerPong;
220226
this->t_pong = TwoPlayerPong(this->width, this->height, false);
227+
set_element_text("control_text", "Move the left paddle using w and s. Move the right one with the up and down arrow keys.");
221228
break;
222229

223230
default:

examples/pong/pong.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ void Pong::resetGame() {
1616
this->paddle_x = this->width/2.0 - this->paddle_width/2.0;
1717

1818
const double start_speed = 200.0/1000.0;
19-
double start_dir = rand()%360;
19+
double start_dir = rand()%90 - 90;
2020
double start_dir_rad = start_dir * M_PI/180;
2121

2222
this->ball_velocity_x = start_speed*cos(start_dir_rad);
@@ -44,7 +44,8 @@ Pong::Pong(double width, double height, colorRGB_t border_color, colorRGB_t back
4444
assert(image_loaded);
4545
#endif
4646
//initialized random number generator
47-
srand(time(NULL));
47+
48+
srand(twr_epoch_timems());
4849

4950
this->resetGame();
5051
}

examples/pong/two-player-pong.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ TwoPlayerPong::TwoPlayerPong(double width, double height, bool hasAI) {
3333
this->width = width;
3434
this->height = height;
3535
this->hasAI = hasAI;
36-
this->bounce_noise = load_square_wave(493.883, 0.025, 48000);
36+
this->bounce_noise = load_square_wave(493.883, 0.05, 48000);
3737
this->score_noise = load_square_wave(440, 0.05, 48000);
3838
srand(time(NULL));
3939

@@ -274,6 +274,10 @@ void TwoPlayerPong::keyDownEvent(long keycode) {
274274
paddleOne.dir = PaddleDir::DOWN;
275275
break;
276276

277+
case KeyCode::enter:
278+
if(!this->running)
279+
this->resetGame();
280+
277281
default:
278282
break;
279283
}

examples/server.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,19 @@
22
from http import server # Python 3
33

44
class MyHTTPRequestHandler(server.SimpleHTTPRequestHandler):
5-
def end_headers(self):
6-
self.send_my_headers()
7-
server.SimpleHTTPRequestHandler.end_headers(self)
5+
def end_headers(self):
6+
self.send_my_headers()
7+
server.SimpleHTTPRequestHandler.end_headers(self)
88

9-
def send_my_headers(self):
10-
self.send_header("Access-Control-Allow-Origin", "*")
11-
self.send_header("Cross-Origin-Embedder-Policy", "require-corp")
12-
self.send_header("Cross-Origin-Opener-Policy", "same-origin")
13-
# Turn off caching
14-
self.send_header("Cache-Control", "no-cache, no-store, must-revalidate")
15-
self.send_header("Pragma", "no-cache")
16-
self.send_header("Expires", "0")
9+
def send_my_headers(self):
10+
self.send_header("Access-Control-Allow-Origin", "*")
11+
self.send_header("Cross-Origin-Embedder-Policy", "require-corp")
12+
self.send_header("Cross-Origin-Opener-Policy", "same-origin")
13+
# Turn off caching
14+
self.send_header("Cache-Control", "no-cache, no-store, must-revalidate")
15+
self.send_header("Pragma", "no-cache")
16+
self.send_header("Expires", "0")
1717

1818
if __name__ == '__main__':
19-
server.test(HandlerClass=MyHTTPRequestHandler)
19+
server.test(HandlerClass=MyHTTPRequestHandler)
2020

0 commit comments

Comments
 (0)