Skip to content
This repository was archived by the owner on Feb 7, 2024. It is now read-only.

Commit 093d77e

Browse files
committed
basic slides
1 parent 1a44203 commit 093d77e

File tree

4 files changed

+84
-7
lines changed

4 files changed

+84
-7
lines changed

demo/game/index.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,12 @@ export default class Game extends Component {
5151
Matter.World.addBody(engine.world, rightWall);
5252
}
5353

54-
handleEnterBuilding = () => {
54+
handleEnterBuilding = (index) => {
5555
this.setState({
5656
fade: true,
5757
});
5858
setTimeout(() => {
59-
this.props.onLeave();
59+
this.props.onLeave(index);
6060
}, 500);
6161
}
6262

@@ -68,7 +68,7 @@ export default class Game extends Component {
6868
};
6969
this.keyListener = new KeyListener();
7070
window.AudioContext = window.AudioContext || window.webkitAudioContext;
71-
window.context = new AudioContext();
71+
window.context = window.context || new AudioContext();
7272
}
7373

7474
componentDidMount() {

demo/presentation.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,10 @@ export default class Presentation extends Component {
1818
});
1919
};
2020

21-
handleLeave = () => {
21+
handleLeave = (index) => {
2222
this.setState({
2323
mode: 3,
24+
slideIndex: index,
2425
});
2526
};
2627

@@ -29,6 +30,7 @@ export default class Presentation extends Component {
2930

3031
this.state = {
3132
mode: 0,
33+
slideIndex: 0,
3234
};
3335
}
3436
render() {
@@ -43,7 +45,7 @@ export default class Presentation extends Component {
4345
break;
4446
}
4547
case 3: {
46-
componentToRender = <Slides onDone={this.handleDone} />;
48+
componentToRender = <Slides onDone={this.handleDone} index={this.state.slideIndex} />;
4749
break;
4850
}
4951
}

demo/slides/basics.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
/* eslint-disable react/jsx-key */
2+
import React from 'react';
3+
4+
import Slide from './slide';
5+
6+
export default {
7+
slides: [
8+
<Slide>
9+
<h1>test</h1>
10+
</Slide>,
11+
<Slide>
12+
<h1>test2</h1>
13+
</Slide>,
14+
],
15+
};

demo/slides/index.js

Lines changed: 62 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,92 @@
11
import React, { Component, PropTypes } from 'react';
22
import Gamepad from 'html5-gamepad';
33

4-
import Slide from './slide';
4+
import Basics from './basics';
5+
6+
const slides = [Basics];
57

68
const gamepad = new Gamepad();
79

810
export default class Slides extends Component {
911

1012
static propTypes = {
13+
index: PropTypes.number,
1114
onDone: PropTypes.func,
1215
};
1316

17+
restartLoop = () => {
18+
setTimeout(() => {
19+
this.startUpdate();
20+
}, 300);
21+
}
22+
1423
startUpdate = () => {
1524
gamepad.update();
1625
if (gamepad.button(0, 'y')) {
1726
this.props.onDone();
1827
return;
1928
}
29+
30+
if (gamepad.button(0, 'button 14')) {
31+
this.handlePrev();
32+
return;
33+
}
34+
35+
if (gamepad.button(0, 'button 15')) {
36+
this.handleNext();
37+
return;
38+
}
39+
2040
this.animationFrame = requestAnimationFrame(this.startUpdate);
2141
}
2242

2343
handleKeyPress = (e) => {
2444
if (e.keyCode === 27) {
2545
this.props.onDone();
2646
}
47+
48+
if (e.keyCode === 37) {
49+
this.handlePrev();
50+
}
51+
52+
if (e.keyCode === 39) {
53+
this.handleNext();
54+
}
55+
}
56+
57+
handleNext() {
58+
const { currentSlide } = this.state;
59+
const { index } = this.props;
60+
61+
if (currentSlide + 1 === slides[index].slides.length) {
62+
this.props.onDone();
63+
} else {
64+
this.setState({
65+
currentSlide: currentSlide + 1,
66+
}, () => {
67+
this.restartLoop();
68+
});
69+
}
70+
}
71+
72+
handlePrev() {
73+
const { currentSlide } = this.state;
74+
75+
if (currentSlide !== 0) {
76+
this.setState({
77+
currentSlide: currentSlide - 1,
78+
}, () => {
79+
this.restartLoop();
80+
});
81+
}
2782
}
2883

2984
constructor(props) {
3085
super(props);
86+
87+
this.state = {
88+
currentSlide: 0,
89+
};
3190
}
3291

3392
componentDidMount() {
@@ -37,6 +96,7 @@ export default class Slides extends Component {
3796
}
3897

3998
componentWillUnmount() {
99+
window.removeEventListener('keyup', this.handleKeyPress);
40100
window.removeEventListener('keypress', this.handleKeyPress);
41101
cancelAnimationFrame(this.animationFrame);
42102
}
@@ -54,7 +114,7 @@ export default class Slides extends Component {
54114
render() {
55115
return (
56116
<div style={this.getWrapperStyles()}>
57-
<Slide>test</Slide>
117+
{slides[this.props.index].slides[this.state.currentSlide]}
58118
</div>
59119
);
60120
}

0 commit comments

Comments
 (0)