-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrules.js
More file actions
119 lines (116 loc) · 5.86 KB
/
rules.js
File metadata and controls
119 lines (116 loc) · 5.86 KB
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
let animRot = 0;
let animStep = .3;
let animDist = 200;
const rules = {
"nothing": () => {
document.getElementById("currentRule").innerText = "Nothing"
},
"weirdCorridor": () => {
document.getElementById("currentRule").innerText = "Weird corridor"
set2Dctx()
polygon([cameraOffsetX(40), cameraOffsetY(25),
cameraOffsetX(40), cameraOffsetY(50),
cameraOffsetX(110), cameraOffsetY(50),
cameraOffsetX(110), cameraOffsetY(25)], "rgba(255, 255, 255, .5)")
polygon([cameraOffsetX(-160), cameraOffsetY(-200),
cameraOffsetX(-160), cameraOffsetY(-270),
cameraOffsetX(-135), cameraOffsetY(-270),
cameraOffsetX(-135), cameraOffsetY(-200)], "rgba(255, 255, 255, .5)")
polygon([cameraOffsetX(-160), cameraOffsetY(200),
cameraOffsetX(-160), cameraOffsetY(270),
cameraOffsetX(-135), cameraOffsetY(270),
cameraOffsetX(-135), cameraOffsetY(200)], "rgba(255, 0, 255, .5)")
set3Dctx();
if (player.pos.x > -160 && player.pos.x < -135 &&
player.pos.y > 200 && player.pos.y < 270) {
const xDiff = Math.abs(player.pos.x + 40);
const yDiff = 270 - player.pos.y;
player.pos.x = 250 - yDiff;
player.pos.y = -70 + xDiff;
player.setAngle(degrees(player.rotation) - 90)
}
if (player.pos.x > 40 && player.pos.x < 110 &&
player.pos.y > 25 && player.pos.y < 50) {
const yDiff = Math.abs(player.pos.y - 70);
const xDiff = player.pos.x - 40;
player.pos.x = -180 + yDiff;
player.pos.y = -270 + xDiff;
player.setAngle(degrees(player.rotation) + 90)
}
},
"rotatingScene": () => {
document.getElementById("currentRule").innerText = "Rotating the player around the middle"
animStep = 1
if (keysPressed[" "]) animStep = .3;
if (animRot >= 0) animRot += animStep;
player.pos.x = Math.cos(radians(-animRot)) * animDist;
player.pos.y = Math.sin(radians(-animRot)) * animDist;
player.setAngle(-animRot + 180);
if (animRot >= 360) animRot = 0;
},
"infiniteCorridor": () => {
document.getElementById("currentRule").innerText = "Infinite corridor";
set2Dctx()
polygon([cameraOffsetX(-155), cameraOffsetY(-40),
cameraOffsetX(-135), cameraOffsetY(-40),
cameraOffsetX(-135), cameraOffsetY(-110),
cameraOffsetX(-155), cameraOffsetY(-110)], "rgba(255, 255, 255, .5)")
polygon([cameraOffsetX(155), cameraOffsetY(-40),
cameraOffsetX(135), cameraOffsetY(-40),
cameraOffsetX(135), cameraOffsetY(-110),
cameraOffsetX(155), cameraOffsetY(-110)], "rgba(255, 255, 255, .5)")
polygon([cameraOffsetX(155), cameraOffsetY(180),
cameraOffsetX(135), cameraOffsetY(180),
cameraOffsetX(135), cameraOffsetY(250),
cameraOffsetX(155), cameraOffsetY(250)], "rgba(255, 255, 255, .5)")
polygon([cameraOffsetX(-155), cameraOffsetY(180),
cameraOffsetX(-135), cameraOffsetY(180),
cameraOffsetX(-135), cameraOffsetY(250),
cameraOffsetX(-155), cameraOffsetY(250)], "rgba(255, 255, 255, .5)")
set3Dctx();
if (player.pos.x > -155 && player.pos.x < -135 &&
player.pos.y > -110 && player.pos.y < -40) {
if ((player.rotation < Math.PI/2 && player.rotation > -Math.PI/2) ||
(player.rotation < Math.PI/2 && player.rotation > -Math.PI*3/4)) {
const xDiff = -40 - player.pos.x;
const yDiff = -40 - player.pos.y;
player.pos.x = 40 + xDiff;
player.pos.y = -250 + yDiff;
player.setAngle(degrees(player.rotation) + 180)
}
}
if (player.pos.x > 135 && player.pos.x < 155 &&
player.pos.y > -110 && player.pos.y < -40) {
if ((player.rotation < Math.PI/2 && player.rotation > -Math.PI/2) ||
(player.rotation < Math.PI/2 && player.rotation > -Math.PI*3/4)) {
const xDiff = 250 - player.pos.x;
const yDiff = -40 - player.pos.y;
player.pos.x = 40 + xDiff;
player.pos.y = 40 + yDiff;
player.setAngle(degrees(player.rotation) + 180)
}
}
if (player.pos.x > 135 && player.pos.x < 155 &&
player.pos.y > 180 && player.pos.y < 250) {
if ((player.rotation < Math.PI/2 && player.rotation > -Math.PI/2) ||
(player.rotation < Math.PI/2 && player.rotation > -Math.PI*3/4)) {
const xDiff = 250 - player.pos.x;
const yDiff = 250 - player.pos.y;
player.pos.x = -250 + xDiff;
player.pos.y = 40 + yDiff;
player.setAngle(degrees(player.rotation) + 180)
}
}
if (player.pos.x > -155 && player.pos.x < -135 &&
player.pos.y > 180 && player.pos.y < 250) {
if ((player.rotation < Math.PI/2 && player.rotation > -Math.PI/2) ||
(player.rotation < Math.PI/2 && player.rotation > -Math.PI*3/4)) {
const xDiff = -40 - player.pos.x
const yDiff = 250 - player.pos.y;
player.pos.x = -250 + xDiff;
player.pos.y = -250 + yDiff;
player.setAngle(degrees(player.rotation) + 180)
}
}
}
}