v1 #4
36
public_html/about.html
Normal file
|
@ -0,0 +1,36 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<link rel="stylesheet" href="./css/style.css">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta charset="UTF-8">
|
||||
<link rel="icon" href="./assets/logo.ico" type="image/x-icon">
|
||||
</head>
|
||||
|
||||
<body id="background-image">
|
||||
<header>
|
||||
<nav>
|
||||
<label for="toggle" class="lab">☰</label>
|
||||
<input type="checkbox" id="toggle">
|
||||
<div class="menu">
|
||||
<img id="logo" src="./assets/logo.png" alt="background">
|
||||
<a href="index.html">Accueil</a>
|
||||
<a href="commands.html">Commandes</a>
|
||||
<a href="about.html">À Propos</a>
|
||||
</div>
|
||||
</nav>
|
||||
</header>
|
||||
<main>
|
||||
<div class="box">
|
||||
<p id="about"> Ce site a été fait par RODRIGUEZ Leandro, LASSERRE Victor, Marty Killian , et REBILLARD Baptiste.</p>
|
||||
<p id="about"> Ce jeu a été fait dans le cadre de la formation de L'INSA Toulouse option IR.</p>
|
||||
|
||||
</div>
|
||||
</main>
|
||||
<footer>
|
||||
<p>© 2023 - Grand Tabernacle Auto</p>
|
||||
</footer>
|
||||
</body>
|
||||
|
||||
</html>
|
BIN
public_html/assets/map/map10.jpg
Executable file
After Width: | Height: | Size: 147 KiB |
BIN
public_html/assets/map/map11.jpg
Normal file
After Width: | Height: | Size: 199 KiB |
BIN
public_html/assets/map/map4.png
Normal file
After Width: | Height: | Size: 1.4 MiB |
BIN
public_html/assets/map/map5.jpg
Normal file
After Width: | Height: | Size: 198 KiB |
BIN
public_html/assets/map/map6.jpg
Normal file
After Width: | Height: | Size: 141 KiB |
BIN
public_html/assets/map/map7.jpg
Normal file
After Width: | Height: | Size: 308 KiB |
BIN
public_html/assets/map/map8.jpg
Normal file
After Width: | Height: | Size: 356 KiB |
BIN
public_html/assets/map/map9.jpg
Normal file
After Width: | Height: | Size: 376 KiB |
BIN
public_html/assets/phone/lester.jpeg
Normal file
After Width: | Height: | Size: 5.2 KiB |
70
public_html/assets/phone/webview/lester.html
Normal file
|
@ -0,0 +1,70 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Lester</title>
|
||||
<style type="text/css">
|
||||
body {
|
||||
margin:0;
|
||||
padding:0;
|
||||
text-align:center;
|
||||
}
|
||||
.button {
|
||||
display:inline-block;
|
||||
padding:3px;
|
||||
width:90%;
|
||||
text-align:center;
|
||||
margin:4px;
|
||||
cursor:pointer;
|
||||
}
|
||||
.yellow {
|
||||
background-color: yellow;
|
||||
}
|
||||
.red {
|
||||
background-color: red;
|
||||
}
|
||||
.green {
|
||||
background-color: green;
|
||||
}
|
||||
.blue {
|
||||
background-color: skyblue;
|
||||
}
|
||||
.fifty {
|
||||
width:40%;
|
||||
}
|
||||
.thirty {
|
||||
width:30%;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<script type="text/javascript">
|
||||
function kill_someone() {
|
||||
id=document.getElementById("id").value
|
||||
if(id>0) {
|
||||
window.parent.Lester(3,id)
|
||||
} else {
|
||||
alert("Vous devez entrer l'identifiant de celui que vous souhaitez tuer !")
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<input type="number" id="id" class="button thirty" placeholder="id"><a onclick="kill_someone()" class="button fifty red" width="50%">KILL</a>
|
||||
<a onclick="window.parent.Lester(4,null)" class="button red" width="50%">KILL EVERYONE</a>
|
||||
<a onclick="window.parent.Lester(5,null)" class="button blue" width="50%">COLLISIONS</a>
|
||||
<a onclick="window.parent.Lester(2,null)" class="button yellow">FULL LIFE</a>
|
||||
<a onclick="window.parent.Lester(1,[363,282,5])" class="button green">SAFE ZONE</a>
|
||||
<a onclick="window.parent.Lester(1,[200,100,0])" class="button green">MAP 0</a>
|
||||
<a onclick="window.parent.Lester(1,[516,789,1])" class="button green">MAP 1</a>
|
||||
<a onclick="window.parent.Lester(1,[484,898,2])" class="button green">MAP 2</a>
|
||||
<a onclick="window.parent.Lester(1,[583,810,3])" class="button green">MAP 3</a>
|
||||
<a onclick="window.parent.Lester(1,[50,852,4])" class="button green">MAP 4</a>
|
||||
<a onclick="window.parent.Lester(1,[200,147,5])" class="button green">MAP 5</a>
|
||||
<a onclick="window.parent.Lester(1,[131,313,6])" class="button green">MAP 6</a>
|
||||
<a onclick="window.parent.Lester(1,[917,547,7])" class="button green">MAP 7</a>
|
||||
<a onclick="window.parent.Lester(1,[1056,449,8])" class="button green">MAP 8</a>
|
||||
<a onclick="window.parent.Lester(1,[871,856,9])" class="button green">MAP 9</a>
|
||||
<a onclick="window.parent.Lester(1,[58,269,10])" class="button green">MAP 10</a>
|
||||
<a onclick="window.parent.Lester(1,[276,860,11])" class="button green">MAP 11</a>
|
||||
</body>
|
||||
</html>
|
BIN
public_html/assets/portal.png
Normal file
After Width: | Height: | Size: 38 KiB |
BIN
public_html/assets/portal3.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
public_html/assets/sounds/notification.mp3
Normal file
Before Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 49 KiB |
43
public_html/commands.html
Normal file
|
@ -0,0 +1,43 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<link rel="stylesheet" href="./css/style.css">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta charset="UTF-8">
|
||||
<link rel="icon" href="./assets/logo.ico" type="image/x-icon">
|
||||
</head>
|
||||
|
||||
<body id="background-image">
|
||||
<header>
|
||||
<nav>
|
||||
<label for="toggle" class="lab">☰</label>
|
||||
<input type="checkbox" id="toggle">
|
||||
<div class="menu">
|
||||
<img id="logo" src="./assets/logo.png" alt="background">
|
||||
<a href="index.html">Accueil</a>
|
||||
<a href="commands.html">Commandes</a>
|
||||
<a href="about.html">À Propos</a>
|
||||
</div>
|
||||
</nav>
|
||||
</header>
|
||||
<main>
|
||||
<div class="box">
|
||||
<h3> Commandes : </h3>
|
||||
<ul>
|
||||
<li>Haut: Z ou fleche du haut</li>
|
||||
<li>Bas: S ou fleche du bas</li>
|
||||
<li>Gauche: Q ou fleche de gauche</li>
|
||||
<li>Droite: D ou fleche de droite</li>
|
||||
<li>Tirer: Clic Gauche </li>
|
||||
<li>Viser: Souris</li>
|
||||
<li>Ouvrir le telephone: P</li>
|
||||
</ul>
|
||||
</div>
|
||||
</main>
|
||||
<footer>
|
||||
<p>© 2023 - Grand Tabernacle Auto</p>
|
||||
</footer>
|
||||
</body>
|
||||
|
||||
</html>
|
|
@ -28,6 +28,12 @@ html, body{
|
|||
user-select: none;
|
||||
}
|
||||
|
||||
#phoneContainer.notification{
|
||||
position: absolute;
|
||||
right: 20px;
|
||||
top: calc(100% - 40px);
|
||||
}
|
||||
|
||||
#phoneDiv{
|
||||
position: relative;
|
||||
}
|
||||
|
|
|
@ -17,13 +17,15 @@ body {
|
|||
}
|
||||
|
||||
|
||||
footer{
|
||||
|
||||
|
||||
footer {
|
||||
color: rgb(180, 167, 167);
|
||||
font-weight: bold;
|
||||
|
||||
|
||||
}
|
||||
|
||||
header{
|
||||
header {
|
||||
display: block;
|
||||
width: 100vw;
|
||||
}
|
||||
|
@ -33,21 +35,127 @@ h1 {
|
|||
color: #ffffff;
|
||||
}
|
||||
|
||||
h2{
|
||||
h2 {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#logo{
|
||||
display:none;
|
||||
#logo {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 1200px) {
|
||||
#about{
|
||||
color: rgb(255, 255, 255);
|
||||
font-weight: bold;
|
||||
font-family:sans-serif,calibri;
|
||||
}
|
||||
|
||||
|
||||
@media screen and (max-width: 700px) { /*petit*/
|
||||
|
||||
|
||||
nav {
|
||||
height: 60px;
|
||||
background: #00000050;
|
||||
}
|
||||
|
||||
#toggle {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.menu {
|
||||
display: none;
|
||||
flex-direction: column;
|
||||
background: #00000050;
|
||||
height: 10vh;
|
||||
margin-top: 1.29vh;
|
||||
}
|
||||
|
||||
nav a {
|
||||
margin: 0.8vh;
|
||||
font-size: 1.5em;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
nav a:hover {
|
||||
color: #dadd0f;
|
||||
}
|
||||
|
||||
.lab {
|
||||
width: 30px;
|
||||
display: flex;
|
||||
margin: 0 auto;
|
||||
font-size: 40px;
|
||||
color: white;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#toggle:checked+.menu {
|
||||
display: flex;
|
||||
font-weight: bold;
|
||||
}
|
||||
.box{
|
||||
font-size: 1.5em;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@media screen and (min-width: 700px) { /*grand*/
|
||||
|
||||
.box{
|
||||
font-size: 2.5em;
|
||||
}
|
||||
.lab {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#toggle {
|
||||
display: none;
|
||||
}
|
||||
|
||||
nav {
|
||||
|
||||
margin: 0;
|
||||
width: 100%;
|
||||
height: 9.5vh;
|
||||
display: flex;
|
||||
background: #00000050;
|
||||
}
|
||||
|
||||
|
||||
|
||||
nav a {
|
||||
width: 15%;
|
||||
margin-left: 1vw;
|
||||
margin-right: 1vw;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
height: 100px;
|
||||
text-decoration: none;
|
||||
font-size: 1.5em;
|
||||
font-weight: bold;
|
||||
color: white;
|
||||
}
|
||||
|
||||
nav a:hover {
|
||||
color: #dadd0f;
|
||||
}
|
||||
|
||||
nav .menu {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
|
||||
#logo {
|
||||
display: block;
|
||||
width: 100px;
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
display: block;
|
||||
/*background-color: rgba(255, 255, 255, 0.466);*/
|
||||
|
@ -83,8 +191,33 @@ main {
|
|||
}
|
||||
|
||||
|
||||
ul{
|
||||
color:rgb(255, 255, 255);
|
||||
font-weight: bold;
|
||||
list-style-type: none;
|
||||
font-family: sans-serif,calibri;
|
||||
}
|
||||
|
||||
|
||||
h3{
|
||||
color: rgb(255, 255, 255);
|
||||
font-weight: bold ;
|
||||
text-decoration: underline;
|
||||
margin-bottom: 0;
|
||||
|
||||
}
|
||||
.box {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
width: 60vw;
|
||||
height: 60vh;
|
||||
background-color: rgba(0, 0, 0, 0.5);
|
||||
border-radius: 20px;
|
||||
margin: 10px;
|
||||
padding: 10px;
|
||||
|
||||
}
|
||||
|
||||
#background-image {
|
||||
background-image: url('../assets/bg.webp');
|
||||
|
|
|
@ -43,6 +43,7 @@
|
|||
<img src="./assets/phone/facebook.png" class="icon" id="appli-fb">
|
||||
<img src="./assets/phone/utube.png" class="icon" id="appli-utube">
|
||||
<img src="./assets/phone/gogole.png" class="icon" id="appli-goo">
|
||||
<img src="./assets/phone/lester.jpeg" class="icon" id="appli-lest" style="display:none">
|
||||
</div>
|
||||
<iframe id="webview" style="overflow: hidden;"></iframe>
|
||||
<div id="chatInputDiv">
|
||||
|
|
|
@ -10,7 +10,16 @@
|
|||
|
||||
<body id="background-image">
|
||||
<header>
|
||||
<img id="logo" src="./assets/logo.png" alt="background">
|
||||
<nav>
|
||||
<label for="toggle" class="lab">☰</label>
|
||||
<input type="checkbox" id="toggle">
|
||||
<div class="menu">
|
||||
<img id="logo" src="./assets/logo.png" alt="background">
|
||||
<a href="index.html">Accueil</a>
|
||||
<a href="commands.html">Commandes</a>
|
||||
<a href="about.html">À Propos</a>
|
||||
</div>
|
||||
</nav>
|
||||
</header>
|
||||
<main>
|
||||
<h1>Grand Tabernacle Auto</h1>
|
||||
|
@ -23,7 +32,7 @@
|
|||
<label id="form_buttonLabel" for="checkbox">
|
||||
<button id="form_button" type="submit">Go!</button>
|
||||
</label>
|
||||
<label id="form_toggle" for="checkbox" data-title="Jouer"></label>
|
||||
<label id="form_toggle" for="checkbox" data-title="Jouer" onclick="moveFocus()"></label>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -40,4 +49,10 @@
|
|||
window.addEventListener('keyup', (event) => {
|
||||
document.cookie = "pseudo=" + pseudo.value
|
||||
})
|
||||
</script>
|
||||
|
||||
function moveFocus(){
|
||||
setTimeout(function () {
|
||||
document.getElementById('form_input').focus();
|
||||
}, 200)
|
||||
}
|
||||
</script>
|
|
@ -41,6 +41,12 @@ class Player
|
|||
this.death++;
|
||||
this.health=defaulthealth;
|
||||
|
||||
players.forEach((p) => {
|
||||
if(p.id==killerId) {
|
||||
p.kill++;
|
||||
}
|
||||
});
|
||||
|
||||
net.died(this.id,killerId);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,13 +1,15 @@
|
|||
let dt = 0;
|
||||
let currentTime = new Date();
|
||||
function game() {
|
||||
if(player==null)
|
||||
if(player==null){
|
||||
return;
|
||||
}
|
||||
|
||||
player.update(maps[player.z].squares, maps[player.z].circles, dt);
|
||||
players.forEach((p)=>{
|
||||
if(p.z>=0)
|
||||
p.update(maps[p.z].squares,maps[p.z].circles);
|
||||
if(p.z>=0) {
|
||||
p.update(maps[p.z].squares,maps[p.z].circles, dt);
|
||||
}
|
||||
});
|
||||
|
||||
cars.forEach((c) => {
|
||||
|
@ -35,6 +37,7 @@ function game() {
|
|||
let newTime = new Date();
|
||||
dt=newTime - currentTime;
|
||||
currentTime=newTime;
|
||||
Donjon()
|
||||
}
|
||||
|
||||
net.connect(); //connect to server, create a player, and retrieve all players info
|
||||
|
|
|
@ -4,6 +4,7 @@ let renderer = new Render("canvas");
|
|||
let LB = new LeaderBoard("canvas");
|
||||
let bulletSound = new Sound("./assets/sounds/shoot.mp3");
|
||||
let driftSound = new Sound("./assets/sounds/drift.mp3");
|
||||
let notificationSound = new Sound("./assets/sounds/notification.mp3");
|
||||
let net = new Network("wss://ws.gta6.insat.fr:8080?name=" + getCookie("pseudo"));
|
||||
let inp = new Input("canvas");
|
||||
let phone = new Phone();
|
||||
|
@ -28,28 +29,72 @@ let cars = [new Car(1, 7),
|
|||
//new Car(0, 45),
|
||||
new Car(0, 52)];
|
||||
let portals = [new Portal(250,457,0,516,789,1),//O
|
||||
new Portal(344,758,0,500,500,0), // SO
|
||||
new Portal(1190,211,0,500,500,0),// NE
|
||||
new Portal(862,213,0,500,500,0), // N
|
||||
new Portal(1126,472,0,583,810,3),// E
|
||||
new Portal(344,758,0,50,852,4), // SO
|
||||
new Portal(1190,211,0,871,856,9),// NE
|
||||
new Portal(862,213,0,200,147,5), // N
|
||||
new Portal(1126,472,0,583,800,3),// E
|
||||
new Portal(1076,768,0,484,898,2),// SE
|
||||
new Portal(721,767,0,500,500,0), // S
|
||||
new Portal(970,476,0,500,500,0),//Mid
|
||||
new Portal(721,767,0,917,547,7), // S -> grotte chelou
|
||||
new Portal(970,476,0,1056,449,8),//Mid -> Poudlar
|
||||
new Portal(617,154,1,274,244,0),//out map 1
|
||||
new Portal(95,561,2,989,694,0), //out map 2
|
||||
new Portal(569,828,3,1152,519,0)];//out map 3
|
||||
new Portal(569,810,3,1152,519,0),//out map 3
|
||||
new Portal(105, 852,4,365,800,0), //out map 4
|
||||
new Portal(110,122,5,880,255,0), //out map 5
|
||||
new Portal(231,475,5,131,313,6), //pour aller a l'étage (map6)
|
||||
new Portal(115,353,6,317,493,5), //out map6 (pour aller a map5)
|
||||
new Portal(948,517,7,740,815,0), //out map7
|
||||
new Portal(1075,421,8,985,520,0), //out map8
|
||||
new Portal(209,731,8,235,182,8), //troll map8
|
||||
new Portal(209,110,8,235,730,8), //troll map8
|
||||
new Portal(500,340,9,58,269,10), //out map 9 (vers suite du donjon map 10)
|
||||
new Portal(786,254,10,276,860,11), //out map 10 (vers suite du donjon map 11)
|
||||
new Portal(260,399,11,1089,227,0) //sortie vers la map 0
|
||||
];
|
||||
|
||||
let map0Squares = [new Square(1064,371,0,126,125),new Square(1160,113,0,143,126),new Square(1017,113,0,146,80),new Square(1018,192,0,10,47),new Square(1028,227,0,45,12),new Square(1101,227,0,66,12),new Square(791,113,0,176,126),new Square(522,129,0,103,13),new Square(654,128,0,104,15),new Square(747,144,0,12,34),new Square(748,194,0,10,44),new Square(655,224,0,101,15),new Square(520,227,0,106,13),new Square(522,195,0,11,39),new Square(522,131,0,8,46),new Square(588,154,0,10,22),new Square(651,153,0,10,21),new Square(698,188,0,12,19),new Square(697,373,0,318,124),new Square(697,497,0,158,112),new Square(1001,629,0,188,155),new Square(696,626,0,159,158),new Square(281,627,0,173,156),new Square(168,243,0,61,250),new Square(229,259,0,87,218),new Square(311,242,0,62,254),new Square(296,112,0,79,95),new Square(2,0,0,1350,14),new Square(1337,2,0,130,927),new Square(119,909,0,1250,17),new Square(4,1,0,129,923),new Square(543,156,0,16,18),new Square(559,207,0,16,17),new Square(598,179,0,17,29),new Square(721,157,0,13,17),new Square(673,205,0,14,17)];
|
||||
let map1Squares = [new Square(1,0,1,1020,160),new Square(868,48,1,153,969),new Square(2,838,1,1019,182),new Square(1,0,1,148,998)];
|
||||
let map2Squares = [new Square(25,936,2,989,83),new Square(1,1,2,98,974),new Square(5,8,2,1002,250),new Square(941,10,2,80,1002),new Square(816,617,2,146,168),new Square(764,252,2,48,214),new Square(805,282,2,154,92),new Square(406,233,2,195,166),new Square(94,418,2,155,88),new Square(94,277,2,127,68),new Square(198,762,2,60,103),new Square(225,880,2,53,30),new Square(116,854,2,35,32)];
|
||||
let map3Squares = [new Square(19,836,3,857,48),new Square(706,324,3,180,531),new Square(640,321,3,75,168),new Square(832,10,3,60,325),new Square(3,2,3,843,165),new Square(354,48,3,90,302),new Square(256,321,3,287,165),new Square(1,1,3,62,374),new Square(51,320,3,109,157),new Square(4,434,3,90,436),new Square(146,680,3,124,71),new Square(92,754,3,32,88),new Square(290,554,3,220,36),new Square(708,150,3,87,68),new Square(323,206,3,39,59),new Square(50,127,3,72,93),new Square(448,648,3,61,44),new Square(578,645,3,92,45),new Square(802,236,3,36,60)];
|
||||
|
||||
let maps = [new Game_Map(portals.slice(0,8),0,map0Squares,[]),
|
||||
new Game_Map(portals.slice(8,9),1,map1Squares,[]),
|
||||
new Game_Map(portals.slice(9,10),2,map2Squares,[]),
|
||||
new Game_Map(portals.slice(10,11),3,map3Squares,[])];
|
||||
let map0Squares = [new Square(1,2,0,135,924),new Square(1337,0,0,132,929),new Square(124,0,0,1235,13),new Square(125,908,0,1218,18),new Square(169,240,0,63,258),new Square(313,241,0,63,257),new Square(231,258,0,82,222),new Square(297,112,0,80,97),new Square(527,129,0,100,13),new Square(792,112,0,177,129),new Square(1018,112,0,151,81),new Square(1161,112,0,145,129),new Square(1020,192,0,8,48),new Square(1020,226,0,55,15),new Square(1104,226,0,58,14),new Square(1065,370,0,126,128),new Square(1001,626,0,192,159),new Square(697,626,0,159,158),new Square(696,370,0,160,240),new Square(853,370,0,165,127),new Square(281,627,0,176,158),new Square(656,129,0,97,14),new Square(750,128,0,5,49),new Square(749,193,0,7,48),new Square(655,224,0,101,17),new Square(527,226,0,100,15),new Square(527,193,0,4,47),new Square(527,129,0,5,47),new Square(590,155,0,7,20),new Square(654,156,0,7,20),new Square(701,186,0,9,22)]
|
||||
let map1Squares = [new Square(1,164,1,171,833),new Square(157,847,1,864,175),new Square(855,260,1,168,608),new Square(533,2,1,489,168),new Square(354,3,1,183,169),new Square(3,3,1,361,135),new Square(203,819,1,134,40),new Square(683,816,1,217,36)]
|
||||
let map2Squares = [new Square(2,4,2,101,949),new Square(89,2,2,703,193),new Square(286,185,2,496,80),new Square(289,242,2,280,83),new Square(411,302,2,189,107),new Square(563,263,2,50,43),new Square(246,180,2,54,84),new Square(91,277,2,138,96),new Square(95,417,2,152,86),new Square(220,402,2,32,60),new Square(767,278,2,157,130),new Square(770,400,2,39,69),new Square(870,424,2,50,43),new Square(774,2,2,247,208),new Square(922,202,2,100,816),new Square(911,424,2,22,226),new Square(895,532,2,32,97),new Square(819,614,2,103,184),new Square(781,758,2,26,62),new Square(1,934,2,928,85),new Square(195,829,2,42,36),new Square(129,809,2,12,54),new Square(223,874,2,60,42),new Square(221,758,2,44,42),new Square(203,775,2,39,38)]
|
||||
let map3Squares = [new Square(3,367,3,94,526),new Square(86,829,3,807,64),new Square(703,365,3,188,479),new Square(640,318,3,253,61),new Square(831,18,3,63,310),new Square(2,0,3,839,64),new Square(1,58,3,62,314),new Square(57,322,3,103,62),new Square(69,130,3,54,85),new Square(257,142,3,103,36),new Square(351,57,3,99,282),new Square(255,319,3,288,159),new Square(289,470,3,223,26),new Square(637,370,3,76,109),new Square(83,370,3,80,109),new Square(287,554,3,225,38),new Square(707,137,3,88,79),new Square(672,54,3,182,129),new Square(442,136,3,98,40),new Square(441,54,3,233,106),new Square(443,254,3,32,28),new Square(802,237,3,31,58),new Square(453,645,3,54,45),new Square(576,645,3,94,45),new Square(145,679,3,127,69),new Square(132,690,3,20,43),new Square(267,689,3,17,39),new Square(161,738,3,91,28),new Square(164,653,3,88,26),new Square(85,754,3,40,84),new Square(59,57,3,326,102),new Square(320,206,3,35,61),new Square(116,150,3,41,33)]
|
||||
let map4Squares = [new Square(101,64,4,47,45),new Square(281,46,4,42,39),new Square(343,58,4,47,41),new Square(334,237,4,37,38),new Square(383,209,4,39,39),new Square(516,53,4,91,91),new Square(531,139,4,65,11),new Square(605,68,4,11,59),new Square(510,70,4,8,60),new Square(531,45,4,66,16),new Square(700,48,4,85,39),new Square(854,159,4,50,67),new Square(528,377,4,45,26),new Square(944,109,4,25,273),new Square(1106,137,4,47,122),new Square(1107,302,4,46,125),new Square(611,674,4,46,122),new Square(617,810,4,128,48),new Square(847,52,4,11,39),new Square(857,35,4,64,74),new Square(919,34,4,23,409),new Square(921,432,4,100,16),new Square(1102,432,4,89,16),new Square(661,39,4,19,252),new Square(665,278,4,97,19),new Square(839,279,4,84,15),new Square(28,279,4,93,19),new Square(198,279,4,246,19),new Square(429,32,4,18,266),new Square(1,1,4,39,904),new Square(32,1,4,6,0),new Square(35,0,4,1181,36),new Square(1184,22,4,32,882),new Square(0,872,4,1,0),new Square(0,870,4,1215,35),new Square(481,354,4,119,16),new Square(177,650,4,98,15),new Square(175,650,4,20,223),new Square(356,647,4,246,15),new Square(584,647,4,22,223),new Square(478,640,4,123,7),new Square(681,443,4,15,126),new Square(502,546,4,84,46),new Square(525,596,4,46,46),new Square(403,432,4,18,19),new Square(412,418,4,20,21),new Square(426,401,4,24,23),new Square(442,386,4,21,21),new Square(456,367,4,28,25),new Square(593,359,4,0,0),new Square(593,359,4,19,16),new Square(603,366,4,22,20),new Square(616,381,4,23,17),new Square(626,386,4,25,23),new Square(641,401,4,25,23),new Square(659,418,4,22,16),new Square(675,427,4,12,19),new Square(601,634,4,18,15),new Square(611,618,4,21,21),new Square(627,600,4,22,22),new Square(643,591,4,18,14),new Square(655,571,4,23,24),new Square(671,561,4,15,19),new Square(401,563,4,17,16),new Square(411,572,4,19,23),new Square(422,586,4,19,17),new Square(437,598,4,22,17),new Square(448,610,4,17,16),new Square(463,622,4,15,16),new Square(470,629,4,16,14)]
|
||||
let map5Squares = [new Square(520,51,5,84,114),new Square(639,52,5,80,115),new Square(750,51,5,81,116),new Square(641,395,5,79,116),new Square(752,396,5,86,126),new Square(846,7,5,49,547),new Square(10,3,5,840,53),new Square(221,44,5,228,60),new Square(10,0,5,101,356),new Square(502,221,5,35,200),new Square(386,396,5,151,29),new Square(102,213,5,214,15),new Square(9,349,5,343,100),new Square(11,447,5,74,108),new Square(206,506,5,688,51),new Square(13,520,5,193,35),new Square(76,432,5,223,44)]
|
||||
let map6Squares = [new Square(8,27,6,103,510),new Square(99,509,6,789,27),new Square(851,30,6,47,501),new Square(100,28,6,755,24),new Square(103,255,6,29,53),new Square(561,253,6,174,58),new Square(744,269,6,25,26),new Square(697,224,6,22,23),new Square(694,315,6,22,26),new Square(641,314,6,25,29),new Square(638,224,6,30,24),new Square(579,223,6,27,24),new Square(106,177,6,53,45),new Square(97,42,6,50,42),new Square(130,79,6,32,25),new Square(167,46,6,67,36),new Square(201,68,6,34,26),new Square(381,66,6,34,21),new Square(509,46,6,55,49),new Square(524,88,6,34,31),new Square(555,46,6,49,28),new Square(787,63,6,30,27),new Square(813,43,6,40,65),new Square(601,461,6,91,44),new Square(583,482,6,131,27),new Square(155,481,6,182,31),new Square(157,341,6,21,146),new Square(232,208,6,28,79),new Square(232,207,6,103,13),new Square(347,349,6,69,24)]
|
||||
let map7Squares = [new Square(865,306,7,5,356),new Square(289,60,7,667,32),new Square(934,59,7,27,445),new Square(292,635,7,579,31),new Square(867,653,7,89,13),new Square(933,579,7,24,85),new Square(934,577,7,79,16),new Square(936,490,7,76,13),new Square(58,296,7,149,54),new Square(44,377,7,165,50),new Square(175,654,7,118,14),new Square(178,56,7,113,17),new Square(289,84,7,4,136),new Square(287,506,7,8,148),new Square(289,214,7,49,7),new Square(288,505,7,48,6),new Square(427,90,7,92,50),new Square(566,90,7,94,54),new Square(711,89,7,93,53),new Square(715,585,7,90,49),new Square(572,585,7,93,52),new Square(427,585,7,93,53),new Square(31,248,7,51,250),new Square(1001,497,7,10,93)]
|
||||
let map8Squares = [new Square(180,739,8,245,12),new Square(328,508,8,9,232),new Square(325,126,8,11,238),new Square(1118,176,8,17,588),new Square(1099,117,8,45,62),new Square(1000,115,8,101,24),new Square(995,106,8,27,41),new Square(1060,113,8,28,35),new Square(989,91,8,12,32),new Square(1002,85,8,0,0),new Square(1002,85,8,0,0),new Square(1002,85,8,0,0),new Square(756,75,8,268,25),new Square(661,71,8,92,77),new Square(405,68,8,260,32),new Square(395,72,8,37,52),new Square(400,111,8,26,35),new Square(325,106,8,77,29),new Square(328,109,8,29,37),new Square(180,108,8,167,26),new Square(1123,727,8,5,37),new Square(1101,694,8,43,80),new Square(1058,725,8,31,33),new Square(1082,735,8,41,16),new Square(995,727,8,29,44),new Square(1000,736,8,62,27),new Square(986,750,8,26,31),new Square(762,771,8,276,30),new Square(664,725,8,23,28),new Square(680,735,8,64,19),new Square(734,726,8,19,77),new Square(424,769,8,260,27),new Square(401,726,8,24,31),new Square(407,750,8,22,39),new Square(335,728,8,21,11),new Square(371,573,8,286,28),new Square(755,574,8,289,28),new Square(756,655,8,288,28),new Square(373,656,8,284,25),new Square(373,187,8,283,29),new Square(757,187,8,287,28),new Square(756,269,8,288,29),new Square(372,269,8,287,28),new Square(388,179,8,254,46),new Square(770,176,8,261,51),new Square(773,260,8,257,48),new Square(388,259,8,256,50),new Square(386,565,8,258,47),new Square(387,641,8,255,49),new Square(660,745,8,20,46),new Square(772,561,8,253,49),new Square(774,643,8,255,50),new Square(272,158,8,28,169),new Square(270,541,8,29,173),new Square(244,675,8,31,17),new Square(243,617,8,33,18),new Square(246,559,8,30,20),new Square(246,174,8,33,21),new Square(244,231,8,32,21),new Square(244,281,8,32,25),new Square(145,694,8,35,75),new Square(144,91,8,37,84),new Square(132,169,8,25,561),new Square(153,323,8,14,221)]
|
||||
let map9Squares = [new Square(1,2,9,15,429),new Square(55,179,9,16,303),new Square(2,469,9,67,14),new Square(13,424,9,46,5),new Square(55,110,9,15,31),new Square(71,69,9,0,0),new Square(57,1,9,14,68),new Square(15,0,9,883,14),new Square(885,1,9,15,823),new Square(863,810,9,36,15),new Square(808,755,9,21,70),new Square(629,755,9,268,17),new Square(702,702,9,16,57),new Square(704,810,9,71,16),new Square(704,816,9,12,71),new Square(709,864,9,190,32),new Square(1,880,9,711,16),new Square(164,829,9,31,53),new Square(182,809,9,15,72),new Square(628,756,9,37,87),new Square(0,471,9,16,418),new Square(468,7,9,16,61),new Square(468,53,9,68,16),new Square(522,52,9,16,189),new Square(449,234,9,0,0),new Square(450,232,9,216,19),new Square(577,158,9,15,75),new Square(576,53,9,15,72),new Square(577,52,9,195,17),new Square(813,10,9,13,105),new Square(813,74,9,32,51),new Square(108,52,9,324,18),new Square(415,61,9,15,53),new Square(397,107,9,87,17),new Square(468,107,9,17,63),new Square(450,163,9,34,15),new Square(397,161,9,15,132),new Square(402,178,9,65,18),new Square(162,108,9,195,16),new Square(343,116,9,16,133),new Square(108,56,9,15,192),new Square(110,234,9,87,16),new Square(165,181,9,14,53),new Square(164,180,9,106,16),new Square(254,160,9,16,36),new Square(181,162,9,33,19),new Square(52,521,9,199,17),new Square(217,504,9,34,34),new Square(216,360,9,17,160),new Square(232,341,9,18,87),new Square(578,111,9,85,14),new Square(703,109,9,14,31),new Square(703,109,9,68,13),new Square(755,63,9,18,131),new Square(756,177,9,63,18),new Square(812,160,9,34,33),new Square(810,186,9,15,51),new Square(758,234,9,85,16),new Square(758,244,9,14,175),new Square(630,118,9,14,77),new Square(631,181,9,89,13),new Square(639,163,9,25,22),new Square(702,191,9,15,110),new Square(340,289,9,377,12),new Square(576,298,9,14,122),new Square(632,343,9,31,30),new Square(661,342,9,56,14),new Square(703,342,9,14,34),new Square(703,412,9,139,17),new Square(812,394,9,31,31),new Square(829,396,9,13,320),new Square(758,702,9,83,15),new Square(757,632,9,13,75),new Square(757,577,9,75,13),new Square(810,584,9,25,61),new Square(648,648,9,112,14),new Square(648,648,9,15,67),new Square(525,703,9,139,14),new Square(632,666,9,21,40),new Square(704,520,9,12,130),new Square(705,520,9,86,17),new Square(654,468,9,118,15),new Square(648,369,9,15,167),new Square(812,289,9,12,61),new Square(811,342,9,36,16),new Square(813,287,9,76,15),new Square(52,521,9,19,53),new Square(111,579,9,13,83),new Square(111,576,9,83,14),new Square(182,585,9,11,24),new Square(118,587,9,22,20),new Square(54,648,9,69,15),new Square(53,647,9,17,120),new Square(10,757,9,60,15),new Square(110,288,9,14,233),new Square(162,294,9,17,189),new Square(112,287,9,135,16),new Square(236,235,9,13,64),new Square(237,233,9,121,16),new Square(290,244,9,14,119),new Square(290,357,9,119,22),new Square(345,342,9,64,33),new Square(397,342,9,14,130),new Square(451,413,9,200,15),new Square(290,415,9,15,110),new Square(290,414,9,69,16),new Square(290,523,9,242,15),new Square(344,468,9,266,16),new Square(524,482,9,14,114),new Square(524,595,9,67,15),new Square(577,595,9,14,68),new Square(526,651,9,12,66),new Square(472,651,9,66,12),new Square(472,577,9,11,86),new Square(416,577,9,67,33),new Square(414,577,9,14,139),new Square(416,704,9,68,14),new Square(470,704,9,14,85),new Square(524,756,9,15,77),new Square(577,711,9,16,131),new Square(234,826,9,358,20),new Square(235,811,9,86,18),new Square(234,721,9,18,118),new Square(289,758,9,14,55),new Square(294,758,9,31,13),new Square(109,755,9,131,17),new Square(219,702,9,15,54),new Square(107,700,9,71,17),new Square(162,648,9,14,55),new Square(162,649,9,90,15),new Square(236,579,9,16,85),new Square(290,578,9,15,31),new Square(245,594,9,60,15),new Square(126,716,9,17,39),new Square(107,757,9,18,89),new Square(55,830,9,70,16),new Square(74,809,9,40,25),new Square(291,650,9,14,66),new Square(290,702,9,63,16),new Square(363,773,9,68,16),new Square(414,757,9,16,16),new Square(362,668,9,14,120),new Square(343,535,9,21,182),new Square(359,533,9,18,78),new Square(579,522,9,13,31),new Square(588,522,9,74,14),new Square(631,533,9,15,74),new Square(632,576,9,34,32),new Square(894,822,9,5,44)]
|
||||
let map10Squares = [new Square(0,0,10,32,560),new Square(30,0,10,76,70),new Square(105,0,10,705,33),new Square(2,493,10,104,69),new Square(103,528,10,706,32),new Square(212,492,10,69,36),new Square(353,492,10,77,44),new Square(421,457,10,37,72),new Square(69,315,10,37,143),new Square(71,104,10,33,142),new Square(599,29,10,35,25),new Square(352,26,10,105,43),new Square(211,28,10,70,42),new Square(422,29,10,35,76),new Square(455,105,10,37,35),new Square(527,106,10,103,34),new Square(599,86,10,36,90),new Square(563,136,10,71,41),new Square(775,31,10,35,119),new Square(740,100,10,70,110),new Square(740,206,10,34,40),new Square(740,316,10,34,46),new Square(740,352,10,70,108),new Square(776,458,10,32,72),new Square(456,422,10,37,36),new Square(528,421,10,79,37),new Square(598,388,10,36,87),new Square(563,387,10,70,36),new Square(598,509,10,35,21),new Square(806,206,10,4,148)]
|
||||
let map11Squares = [new Square(1,2,11,555,89),new Square(1,57,11,117,86),new Square(446,2,11,117,140),new Square(2,625,11,101,354),new Square(2,979,11,0,0),new Square(460,625,11,104,357),new Square(97,908,11,371,72),new Square(187,884,11,189,31),new Square(0,137,11,6,490),new Square(556,136,11,7,494)]
|
||||
|
||||
let map0Circles = [new Circle(609,190,0,16),new Circle(729,164,0,11),new Circle(569,213,0,10),new Circle(552,165,0,11),new Circle(680,211,0,10)]
|
||||
let map1Circles = [new Circle(142,100,1,151),new Circle(66,806,1,155),new Circle(377,902,1,104),new Circle(441,895,1,74),new Circle(155,502,1,51),new Circle(650,869,1,63),new Circle(609,870,1,49),new Circle(965,946,1,248),new Circle(864,244,1,64),new Circle(841,190,1,64),new Circle(374,184,1,28),new Circle(497,172,1,31),new Circle(439,145,1,62),new Circle(391,167,1,42)]
|
||||
let map2Circles = [new Circle(132,874,2,17),new Circle(812,767,2,29),new Circle(183,212,2,21),new Circle(101,187,2,57),new Circle(111,298,2,42),new Circle(131,795,2,34),new Circle(217,824,2,26)]
|
||||
let map3Circles = [new Circle(687,517,3,14),new Circle(710,485,3,35),new Circle(690,813,3,13),new Circle(54,210,3,37),new Circle(87,467,3,39)]
|
||||
let map4Circles = [new Circle(1057.96875,16,4,61.07372593840988),new Circle(962.96875,54,4,14.866068747318506),new Circle(404.96875,132,4,22.02271554554524),new Circle(184.96875,69,4,20.024984394500787),new Circle(59.96875,67,4,20),new Circle(882.96875,133,4,14.142135623730951),new Circle(890.96875,249,4,17.029386365926403)]
|
||||
let map5Circles = [new Circle(389.96875,280,5,71.06335201775947),new Circle(346.96875,280,5,77.92945527847606),new Circle(425.96875,439,5,8),new Circle(470.96875,438,5,12),new Circle(518.96875,438,5,9.055385138137417),new Circle(552.96875,397,5,11.045361017187261),new Circle(551.96875,362,5,13.038404810405298),new Circle(299.96875,447,5,25.238858928247925),new Circle(324.96875,443,5,18.867962264113206)]
|
||||
let map6Circles = [new Circle(599.96875,330,6,13.892443989449804),new Circle(366.96875,278,6,76.00657866263946),new Circle(386.96875,284,6,73.10950690573696),new Circle(142.96875,178,6,12.041594578792296),new Circle(130.04409510198778,174.0078125,6,13.601480697536704),new Circle(232.0449785630765,60.0078125,6,20.518379508122223),new Circle(419.0465982417392,62.0078125,6,17.117244792645977),new Circle(415.04656359620634,90.0078125,6,22.803582948232627),new Circle(659.0486769737126,63.0078125,6,13.152949072028138),new Circle(690.0489454765926,61.0078125,6,13.928403823519659),new Circle(607.0482265817851,68.0078125,6,16.031220082165973),new Circle(628.0484084708328,75.0078125,6,14),new Circle(584.048027369971,81.0078125,6,16.124517645231),new Circle(831.0501667316271,454.0078125,6,28.42548828525679),new Circle(765.0495950803344,490.0078125,6,22.472229721633212),new Circle(808.0499675198129,492.0078125,6,45.65094067218403),new Circle(684.0488935082933,463.0078125,6,14.866127010225155),new Circle(744.0494131912867,479.0078125,6,11.313757495273405),new Circle(394.0463817071586,497.0078125,6,14.56022929645903),new Circle(256.04518643627387,475.0078125,6,17.20470087749703),new Circle(229.04495257892685,467.0078125,6,17.00003260767031),new Circle(194.04464943051406,475.0078125,6,20.808711985348125),new Circle(382.04627777056,380.0078125,6,15.264373837857004),new Circle(409.04651162790697,370.0078125,6,15.000083149408585),new Circle(252.045151790741,298.0078125,6,13.45367619463759),new Circle(260.04522108180674,319.0078125,6,12.530047727914598),new Circle(265.0452643887229,337.0078125,6,13.000095941537126)]
|
||||
let map7Circles = [new Circle(829.96875,545,7,17.204650534085253),new Circle(253.96875,491,7,25.079872407968907),new Circle(256.96875,227,7,22),new Circle(686.96875,541,7,19.026297590440446),new Circle(540.96875,181,7,18.110770276274835),new Circle(395.96875,180,7,19),new Circle(251.96875,178,7,21.37755832643195),new Circle(251.96875,542,7,20),new Circle(395.96875,542,7,20.223748416156685),new Circle(541.96875,543,7,18.027756377319946),new Circle(686.96875,182,7,17.029386365926403),new Circle(827.96875,183,7,19),new Circle(75.96875,233,7,23.08679276123039),new Circle(91.96875,171,7,27.80287754891569),new Circle(127.96875,131,7,19.1049731745428),new Circle(168.96875,86,7,20.591260281974),new Circle(74.96875,494,7,21.18962010041709),new Circle(93.96875,551,7,21.095023109728988),new Circle(127.96875,603,7,17.804493814764857),new Circle(175.96875,647,7,17.69180601295413),new Circle(53.96875,353,7,52.773099207835045),new Circle(70.96875,191,7,29.68164415931166),new Circle(92.96875,125,7,37.48332962798263),new Circle(128.96875,81,7,38.8329756778952),new Circle(177.96875,45,7,41.182520563948),new Circle(59.96875,531,7,34.92849839314596),new Circle(89.96875,595,7,36.40054944640259),new Circle(128.96875,649,7,39.6232255123179),new Circle(190.96875,668,7,21.470910553583888)]
|
||||
let map8Circles = [new Circle(746,80.79999923706055,8,31.304951684997057),new Circle(740,789.2000045776367,8,32.64965543462902),new Circle(158,176.79999923706055,8,18.439088914585774),new Circle(157,257.79999923706055,8,16.0312195418814),new Circle(160,341.79999923706055,8,16.0312195418814),new Circle(160,531.2000045776367,8,14.035668847618199),new Circle(150,615.2000045776367,8,26.076809620810597),new Circle(152,701.2000045776367,8,26.1725046566048),new Circle(505,767.2000045776367,8,7.0710678118654755),new Circle(587,765.2000045776367,8,5),new Circle(831,772.2000045776367,8,11),new Circle(916,772.2000045776367,8,8.246211251235321),new Circle(503,100.79999923706055,8,10),new Circle(585,98.79999923706055,8,12.041594578792296),new Circle(830,96.79999923706055,8,13),new Circle(920,95.79999923706055,8,16.76305461424021),new Circle(445,365.79999923706055,8,15.033296378372908),new Circle(587,366.79999923706055,8,12.041594578792296),new Circle(447,503.79999923706055,8,14.035668847618199),new Circle(587,505.79999923706055,8,12),new Circle(830,366.79999923706055,8,12),new Circle(970,366.79999923706055,8,15.620499351813308),new Circle(969,506.79999923706055,8,14.422205101855956),new Circle(836,506.79999923706055,8,15.231546211727817),new Circle(984,361.79999923706055,8,12),new Circle(985,506.79999923706055,8,12.165525060596439),new Circle(840,363.79999923706055,8,13),new Circle(1120,196.79999923706055,8,13),new Circle(1114,270.79999923706055,8,10),new Circle(1116,346.79999923706055,8,12),new Circle(1118,526.2000045776367,8,13.038404810405298),new Circle(1120,602.2000045776367,8,13.038404810405298),new Circle(1115,680.2000045776367,8,10)]
|
||||
let map10Circles = [new Circle(448,448,10,10),new Circle(436,458,10,9),new Circle(459,440,10,12),new Circle(446,113,10,11),new Circle(436,99,10,13),new Circle(457,121,10,11),new Circle(316,174,10,20),new Circle(316,386,10,20),new Circle(475,228,10,10),new Circle(687,156,10,10),new Circle(686,403,10,11),new Circle(686,333,10,9),new Circle(687,228,10,10),new Circle(582,228,10,10),new Circle(581,333,10,11),new Circle(474,334,10,10)]
|
||||
let map11Circles = [new Circle(281,240,11,20),new Circle(282,210,11,14),new Circle(104,342,11,14),new Circle(461,339,11,14),new Circle(457,505,11,12),new Circle(104,505,11,13),new Circle(189,908,11,17),new Circle(373,907,11,19),new Circle(99,63,11,74),new Circle(460,76,11,60),new Circle(255,349,11,9),new Circle(309,348,11,8),new Circle(236,529,11,7),new Circle(327,530,11,7),new Circle(328,623,11,5),new Circle(236,624,11,7),new Circle(237,716,11,5),new Circle(328,718,11,5),new Circle(328,811,11,5),new Circle(236,812,11,7)]
|
||||
|
||||
|
||||
let maps = [new Game_Map(portals.slice(0,8),0,map0Squares,map0Circles),
|
||||
new Game_Map(portals.slice(8,9),1,map1Squares,map1Circles),
|
||||
new Game_Map(portals.slice(9,10),2,map2Squares,map2Circles),
|
||||
new Game_Map(portals.slice(10,11),3,map3Squares,map3Circles),
|
||||
new Game_Map(portals.slice(11,12),4,map4Squares,map4Circles),
|
||||
new Game_Map(portals.slice(12,14),5,map5Squares,map5Circles),
|
||||
new Game_Map(portals.slice(14,15),6,map6Squares,map6Circles),
|
||||
new Game_Map(portals.slice(15,16),7,map7Squares,map7Circles),
|
||||
new Game_Map(portals.slice(16,19),8,map8Squares,map8Circles),
|
||||
new Game_Map(portals.slice(19,20),9,map9Squares,[]),
|
||||
new Game_Map(portals.slice(20,21),10,map10Squares,map10Circles),
|
||||
new Game_Map(portals.slice(21,22),11,map11Squares,map11Circles)];
|
||||
maps[-1]=maps[0]
|
||||
|
||||
players.push(new Player(-1,-50,-50,-1,"VOITURES",0));
|
||||
|
||||
players.push(new Player(-2,-50,-50,-1,"DONJON",0));
|
||||
|
||||
function updatePlayer(data)
|
||||
{
|
||||
|
@ -57,10 +102,11 @@ function updatePlayer(data)
|
|||
{
|
||||
player.x=data.x;
|
||||
player.y=data.y;
|
||||
if(data.z==undefined)
|
||||
if(data.z==undefined){
|
||||
player.z=0;
|
||||
else
|
||||
} else {
|
||||
player.z=data.z;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -70,10 +116,11 @@ function updatePlayer(data)
|
|||
{
|
||||
players[i].x=data.x;
|
||||
players[i].y=data.y;
|
||||
if(data.z==undefined)
|
||||
if(data.z==undefined){
|
||||
players[i].z=0;
|
||||
else
|
||||
} else {
|
||||
players[i].z=data.z;
|
||||
}
|
||||
players[i].dir=data.dir;
|
||||
players[i].visibleDir=data.visibleDir;
|
||||
break;
|
||||
|
@ -109,10 +156,12 @@ function addKill(idKilled,idKiller)
|
|||
player.death++;
|
||||
}
|
||||
players.forEach((p) => {
|
||||
if(p.id==idKilled)
|
||||
if(p.id==idKilled) {
|
||||
p.death++;
|
||||
if(p.id==idKiller)
|
||||
}
|
||||
if(p.id==idKiller) {
|
||||
p.kill++;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -128,3 +177,62 @@ function updateBullets(dt)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
let lastbulletdonjon=[0,0]
|
||||
function Donjon() {
|
||||
if(player.z==10) {
|
||||
if(lastbulletdonjon[1]>=7) {
|
||||
lastbulletdonjon[1]=0
|
||||
bullets.push(new Bullet(107,95+(Date.now()*0.1)%365,10,1,0,-2));
|
||||
bullets.push(new Bullet(107,460-(Date.now()*0.1)%365,10,1,0,-2));
|
||||
} else {
|
||||
lastbulletdonjon[1]++
|
||||
}
|
||||
if(lastbulletdonjon[0]==59 && Math.floor(Date.now()/1000)%60 !=59) { lastbulletdonjon[0]=0 }
|
||||
if(Math.floor(Date.now()/1000)%60 > lastbulletdonjon[0]) {
|
||||
lastbulletdonjon[0]=Math.floor(Date.now()/1000)%60
|
||||
for(let i=0;i<5;i++){
|
||||
bullets.push(new Bullet(235,65,10,0,2,-2));
|
||||
bullets.push(new Bullet(235,491,10,0,-2,-2));
|
||||
bullets.push(new Bullet(395,65,10,0,2,-2));
|
||||
bullets.push(new Bullet(395,491,10,0,-2,-2));
|
||||
bullets.push(new Bullet(615,178,10,0,2,-2));
|
||||
bullets.push(new Bullet(615,385,10,0,-2,-2));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function Lester(type, data) {
|
||||
switch(type) {
|
||||
case 1:
|
||||
player.x=data[0]
|
||||
player.y=data[1]
|
||||
player.z=data[2]
|
||||
net.update(player);
|
||||
break;
|
||||
case 2:
|
||||
player.health=defaulthealth
|
||||
break;
|
||||
case 3:
|
||||
addKill(data, player.id)
|
||||
net.died(data, player.id)
|
||||
break;
|
||||
case 4:
|
||||
players.forEach((p) => {
|
||||
if(p.id>0) {
|
||||
net.died(p.id, player.id)
|
||||
addKill(data, player.id)
|
||||
p.death++
|
||||
}
|
||||
});
|
||||
break;
|
||||
case 5:
|
||||
if(drawCollisions) {
|
||||
drawCollisions=false
|
||||
} else {
|
||||
drawCollisions=true
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
|
@ -52,7 +52,7 @@ class Input {
|
|||
|
||||
window.addEventListener("keydown", (e)=>{
|
||||
//blocks the action of the key (cf. Killian)
|
||||
if(["Space","ArrowUp","ArrowDown","ArrowLeft","ArrowRight"].includes(e.code)) {
|
||||
if(["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"].includes(e.code)) {
|
||||
e.preventDefault();
|
||||
}
|
||||
this.keysDown.add(e.key.toLowerCase())
|
||||
|
|
|
@ -10,7 +10,7 @@ class LeaderBoard {
|
|||
ReloadAff() {
|
||||
let LBplayers=[];
|
||||
players.forEach((p) => {
|
||||
if(p != null) {
|
||||
if(p != null && (p.id >0 || p.kill>0 || p.death>0)) {
|
||||
LBplayers.push(p);
|
||||
}
|
||||
})
|
||||
|
@ -52,8 +52,8 @@ class LeaderBoard {
|
|||
this.ctx.fillText((this.nbjoueur+1), this.px+10, this.py+120+20*this.nbjoueur);
|
||||
this.ctx.fillText(p.name, this.px+30, this.py+120+20*this.nbjoueur);
|
||||
this.ctx.fillText(p.kill, this.px+180, this.py+120+20*this.nbjoueur);
|
||||
this.ctx.fillText(p.death, this.px+200, this.py+120+20*this.nbjoueur);
|
||||
this.ctx.fillText(Math.round(10*p.kill/p.death)/10, this.px+220, this.py+120+20*this.nbjoueur);
|
||||
this.ctx.fillText(p.id>0 ? p.death : "-", this.px+200, this.py+120+20*this.nbjoueur);
|
||||
this.ctx.fillText(p.id>0 ? Math.round(10*p.kill/p.death)/10 : "-", this.px+220, this.py+120+20*this.nbjoueur);
|
||||
|
||||
this.nbjoueur++;
|
||||
}
|
||||
|
|
|
@ -34,13 +34,22 @@ class Network{
|
|||
bullets.push(new Bullet(data.data.x,data.data.y,data.data.z==undefined?0:data.data.z,data.data.dx,data.data.dy,data.data.id));
|
||||
break;
|
||||
|
||||
case "died":
|
||||
case "died":
|
||||
console.log("player",data.data.id,"was killed by",data.data.killerId);
|
||||
addKill(data.data.id,data.data.killerId);
|
||||
break;
|
||||
|
||||
case "message":
|
||||
phone.addMessage(data.data);
|
||||
break;
|
||||
|
||||
case "kick":
|
||||
if(data.data.player_id == player.id){
|
||||
alert("Vous avez essayé de tricher, vous jouez maintenant en solo.");
|
||||
}else{
|
||||
console.log("Player " + data.data.player_id.toString() + " caught cheating.")
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
console.log("received unknown data:",data);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
class Phone{
|
||||
constructor(){
|
||||
this.position = 0;
|
||||
this.position = 0; //0: hidden 1: visible 2: notification
|
||||
this.messages = [];
|
||||
this.name = document.getElementById("TitlePage");
|
||||
|
||||
|
@ -38,6 +38,10 @@ class Phone{
|
|||
document.getElementById("appli-goo").addEventListener("click", (e) => {
|
||||
this.webviewName = "Gogole"
|
||||
this.changeWindow("https://mrdoob.com/projects/chromeexperiments/google-space/")
|
||||
});
|
||||
document.getElementById("appli-lest").addEventListener("click", (e) => {
|
||||
this.webviewName = "Lester"
|
||||
this.changeWindow("assets/phone/webview/lester.html")
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -99,10 +103,20 @@ class Phone{
|
|||
|
||||
this.contentmsg.appendChild(msg);
|
||||
this.contentmsg.scrollTop = this.contentmsg.scrollHeight;
|
||||
|
||||
//notification
|
||||
if(message.playerId!=player.id){
|
||||
notificationSound.play();
|
||||
if(this.position == 0){
|
||||
this.position = 2;
|
||||
document.getElementById("phoneContainer").className = "notification";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sendMessage(title, content){
|
||||
let message = {
|
||||
playerId: player.id,
|
||||
title: player.name,
|
||||
content: content
|
||||
}
|
||||
|
@ -122,7 +136,7 @@ class Phone{
|
|||
|
||||
changePosition(){
|
||||
if(!document.getElementById("phoneContainer").contains(document.activeElement)){
|
||||
if(this.position == 0){
|
||||
if(this.position == 0 || this.position == 2){
|
||||
document.getElementById("phoneContainer").className = "visible";
|
||||
this.position = 1;
|
||||
}else{
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
let drawPortals = true;
|
||||
let drawPortals = false;
|
||||
let drawCollisions = false;
|
||||
|
||||
const imgPlayer = new Image();
|
||||
|
@ -11,8 +11,17 @@ const map0_night = new Image();
|
|||
const map1 = new Image();
|
||||
const map2 = new Image();
|
||||
const map3 = new Image();
|
||||
const map4 = new Image();
|
||||
const map5 = new Image();
|
||||
const map6 = new Image();
|
||||
const map7 = new Image();
|
||||
const map8 = new Image();
|
||||
const map9 = new Image();
|
||||
const map10 = new Image();
|
||||
const map11 = new Image();
|
||||
const orange_portal = new Image();
|
||||
const blue_portal = new Image();
|
||||
const portal = new Image();
|
||||
imgPlayer.src = "./assets/body.png";
|
||||
imgBullet.src = "./assets/bullet2.png";
|
||||
imgCar.src = "./assets/car.png";
|
||||
|
@ -23,16 +32,26 @@ map0_night.src = "./assets/map/map_principale_nuit.png"
|
|||
map1.src = "./assets/map/map1.png";
|
||||
map2.src = "./assets/map/map2.png";
|
||||
map3.src = "./assets/map/map3.png";
|
||||
map4.src = "./assets/map/map4.png";
|
||||
map5.src = "./assets/map/map5.jpg";
|
||||
map6.src = "./assets/map/map6.jpg";
|
||||
map7.src = "./assets/map/map7.jpg";
|
||||
map8.src = "./assets/map/map8.jpg";
|
||||
map9.src = "./assets/map/map9.jpg";
|
||||
map10.src = "./assets/map/map10.jpg";
|
||||
map11.src = "./assets/map/map11.jpg";
|
||||
orange_portal.src = "./assets/orange_portal.webp";
|
||||
blue_portal.src = "./assets/blue_portal.webp";
|
||||
portal.src = "./assets/portal.png";
|
||||
|
||||
const mapImages = [map0,map1,map2,map3];
|
||||
const mapImages = [map0,map1,map2,map3, map4, map5, map6, map7, map8, map9, map10, map11];
|
||||
|
||||
class Render {
|
||||
constructor(idCanvas) {
|
||||
let canvas = document.getElementById(idCanvas);
|
||||
this.ctx = canvas.getContext("2d");
|
||||
this.ctx.imageSmoothingEnabled=false;//does not lerp pixels
|
||||
this.timer=0
|
||||
}
|
||||
|
||||
RenderPlayer(p,isClient) {
|
||||
|
@ -96,17 +115,30 @@ class Render {
|
|||
}
|
||||
}
|
||||
|
||||
RenderPortal(x,y,orange)
|
||||
RenderPortalDebug(x,y,debug)
|
||||
{
|
||||
this.ctx.save();
|
||||
this.ctx.translate(x,y);
|
||||
if(orange)
|
||||
if(debug) {
|
||||
this.ctx.drawImage(orange_portal,0,0,portalSize,portalSize);
|
||||
else
|
||||
} else {
|
||||
this.ctx.drawImage(blue_portal,0,0,portalSize,portalSize);
|
||||
}
|
||||
this.ctx.restore();
|
||||
}
|
||||
|
||||
RenderPortal(x,y)
|
||||
{
|
||||
this.ctx.save();
|
||||
this.ctx.translate(x+portalSize/2, y+portalSize/2);
|
||||
this.ctx.rotate(this.timer * Math.PI / 180);
|
||||
this.ctx.globalAlpha = 0.5;
|
||||
this.ctx.drawImage(portal, -portalSize / 2, -portalSize / 2, portalSize, portalSize);
|
||||
this.ctx.globalAlpha = 1;
|
||||
this.ctx.restore();
|
||||
}
|
||||
|
||||
|
||||
ReloadAff() {
|
||||
let background;
|
||||
|
||||
|
@ -121,14 +153,23 @@ class Render {
|
|||
}
|
||||
else
|
||||
{
|
||||
background=mapImages[Math.min(player.z,3)];
|
||||
background=mapImages[Math.min(player.z,11)];
|
||||
}
|
||||
|
||||
let mapWidth = background.width;
|
||||
let mapHeight = background.height;
|
||||
this.ctx.canvas.width = mapWidth;
|
||||
this.ctx.canvas.height = mapHeight;
|
||||
this.ctx.drawImage(background, 0, 0, mapWidth, mapHeight);
|
||||
|
||||
if(player.z==9) {
|
||||
this.ctx.save();
|
||||
this.ctx.beginPath();
|
||||
this.ctx.arc(player.x, player.y, 100, 0, 2 * Math.PI);
|
||||
this.ctx.clip();
|
||||
}
|
||||
|
||||
this.ctx.drawImage(background, 0, 0, mapWidth, mapHeight);
|
||||
|
||||
this.RenderPlayer(player,true);
|
||||
|
||||
if(drawCollisions)
|
||||
|
@ -137,6 +178,27 @@ class Render {
|
|||
this.ctx.fillStyle = "rgba(255, 0, 0, 0.5)";
|
||||
this.ctx.fillRect(s.x,s.y,s.w,s.h);
|
||||
});
|
||||
maps[player.z].circles.forEach((s) => {
|
||||
this.ctx.beginPath();
|
||||
this.ctx.arc(s.x, s.y, s.r, 0, 3 * Math.PI);
|
||||
this.ctx.fillStyle = "rgba(255, 0, 0, 0.5)";
|
||||
this.ctx.fill();
|
||||
this.ctx.stroke();
|
||||
this.ctx.closePath();
|
||||
});
|
||||
//on draw le centre du joueur
|
||||
this.ctx.beginPath();
|
||||
this.ctx.fillStyle="blue"
|
||||
this.ctx.arc(player.x, player.y, 3, 0, 2 * Math.PI);
|
||||
this.ctx.fill();
|
||||
this.ctx.closePath();
|
||||
//on draw les collisions autour du joueur
|
||||
this.ctx.beginPath();
|
||||
this.ctx.strokeStyle="red"
|
||||
this.ctx.arc(player.x, player.y, playerSize/2, 0, 2 * Math.PI);
|
||||
this.ctx.lineWidth="2";
|
||||
this.ctx.stroke();
|
||||
this.ctx.closePath();
|
||||
}
|
||||
|
||||
cars.forEach((car) => {
|
||||
|
@ -151,14 +213,23 @@ class Render {
|
|||
PNJS.forEach((pnj)=>{
|
||||
this.RenderPnj(pnj.x, pnj.y, pnj.z, (pnj.dir-1)*Math.PI/4, pnj.dir!=0);
|
||||
})
|
||||
if(drawPortals)
|
||||
{
|
||||
portals.forEach((portal) => {
|
||||
if(portal.in.z==player.z)
|
||||
this.RenderPortal(portal.in.x,portal.in.y,true);
|
||||
if(portal.out.z==player.z)
|
||||
this.RenderPortal(portal.out.x,portal.out.y,false);
|
||||
});
|
||||
|
||||
this.timer=(this.timer+1)%360
|
||||
portals.forEach((portal) => {
|
||||
if(portal.in.z==player.z) {
|
||||
this.RenderPortal(portal.in.x,portal.in.y)
|
||||
}
|
||||
if(portal.out.z==player.z && drawPortals){
|
||||
this.RenderPortalDebug(portal.out.x,portal.out.y,false)
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
if(player.z==9) {
|
||||
this.ctx.restore();
|
||||
this.ctx.beginPath();
|
||||
this.ctx.arc(player.x, player.y, 100, 0, 2 * Math.PI);
|
||||
this.ctx.lineWidth = 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ class Sound{
|
|||
constructor(url){
|
||||
this.sound = new Audio(url);
|
||||
this.sound.type = "audio/mp3";
|
||||
this.sound.volume = 0.2;
|
||||
}
|
||||
|
||||
play(){
|
||||
|
|
|
@ -5,7 +5,6 @@ const fs = require('fs');
|
|||
const objectsModule = require('./objects');
|
||||
|
||||
|
||||
|
||||
const options = {
|
||||
cert: fs.readFileSync("/home/ubuntu/servers/keys/gta6/cert.pem"),
|
||||
key: fs.readFileSync("/home/ubuntu/servers/keys/gta6/privkey.pem")
|
||||
|
@ -23,8 +22,9 @@ const wss = new WebSocket.Server({
|
|||
|
||||
const spawnPoints = [{"x":218,"y":193},{"x":601,"y":715},{"x":1264,"y":57},{"x":274,"y":506},{"x":921,"y":854},{"x":1041,"y":442},{"x":638,"y":124},{"x":483,"y":436}]
|
||||
const connections = new Set();
|
||||
var playerCount = 0;
|
||||
var players = []
|
||||
let playerCount = 0;
|
||||
let players = []
|
||||
const MAX_HEALTH = 10;
|
||||
|
||||
const NAME_MAXLEN = 25;
|
||||
|
||||
|
@ -52,6 +52,7 @@ function createNewPlayer(socket, name) {
|
|||
id: playerCount,
|
||||
x: pos[0],
|
||||
y: pos[1],
|
||||
z: 0,
|
||||
dir: 0,
|
||||
visibleDir: 0,
|
||||
name: name
|
||||
|
@ -76,10 +77,28 @@ function createNewPlayer(socket, name) {
|
|||
connections.add(socket);
|
||||
}
|
||||
|
||||
function kick_player(player_id, socket, reason){
|
||||
//send cheating info to all players
|
||||
broadcast(JSON.stringify({
|
||||
type: "kick",
|
||||
data: {
|
||||
player_id: player_id,
|
||||
reason: reason
|
||||
}
|
||||
}));
|
||||
deletePlayer(socket); //delete player of players list
|
||||
socket.terminate(); //disconnect cheating player
|
||||
}
|
||||
|
||||
function update(message, socket){
|
||||
for (var i = players.length - 1; i >= 0; i--) {
|
||||
if (players[i].id == message.data.id) {
|
||||
players[i] = message.data;
|
||||
if(message.data.health <= MAX_HEALTH) {
|
||||
if (players[i].id == message.data.id) {
|
||||
players[i] = message.data;
|
||||
}
|
||||
}else{
|
||||
//cheat detected
|
||||
kick_player(message.data.id, socket, "health cheat");
|
||||
}
|
||||
}
|
||||
broadcast(JSON.stringify(message), socket.id);
|
||||
|
@ -97,6 +116,7 @@ function died(message, socket){
|
|||
let pos = generatePosition();
|
||||
players[i].x = pos[0];
|
||||
players[i].y = pos[1];
|
||||
players[i].z = 0;
|
||||
|
||||
broadcast(JSON.stringify({
|
||||
type: "update",
|
||||
|
|
|
@ -2,7 +2,7 @@ var ctx = document.getElementById("canvas").getContext("2d");
|
|||
var cv = document.getElementById("canvas");
|
||||
|
||||
const fond = new Image();
|
||||
fond.src = "../../public_html/assets/map/map_principale.png";
|
||||
fond.src = "../../public_html/assets/map/map11.jpg";
|
||||
var mapWidth = fond.width
|
||||
var mapHeith = fond.height
|
||||
ctx.canvas.width = mapWidth
|
||||
|
|
51
tools/parsing_json.html
Normal file
|
@ -0,0 +1,51 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Conversion json to js let</title>
|
||||
<script>
|
||||
function convertInput() {
|
||||
const jsonString = document.getElementById('jsonInput').value;
|
||||
const z = document.getElementById('numberInput').value;
|
||||
|
||||
const data = JSON.parse(jsonString);
|
||||
|
||||
data.squares.forEach(s => {
|
||||
if(s.h<0) {
|
||||
s.h=-1*s.h
|
||||
s.y=s.y-s.h
|
||||
}
|
||||
if(s.w<0) {
|
||||
s.w=-1*s.w
|
||||
s.x=s.x-s.w
|
||||
}
|
||||
})
|
||||
|
||||
const squareArray = data.squares.map(square => `new Square(${Math.round(square.x)},${Math.round(square.y)},${z},${Math.round(square.w)},${Math.round(square.h)})`);
|
||||
const circleArray = data.circles.map(circle => `new Circle(${Math.round(circle.x)},${Math.round(circle.y)},${z},${Math.round(circle.r)})`);
|
||||
|
||||
const resultString = `let map${z}Squares = [${squareArray.join(',')}]<br>let map${z}Circles = [${circleArray.join(',')}]`;
|
||||
document.getElementById('output').innerHTML = resultString;
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Conversion json to js let</h1>
|
||||
|
||||
<label for="jsonInput">Entrée JSON :</label>
|
||||
<textarea id="jsonInput" rows="5" cols="50" placeholder='{"squares":[{"x":100.96875,"y":64,"w":47,"h":45},{"x":280.96875,"y":46,"w":42,"h":39}],"circles":[{"x":882.96875,"y":133,"r":14.142135623730951},{"x":890.96875,"y":249,"r":17.029386365926403}]}'></textarea>
|
||||
|
||||
<br>
|
||||
|
||||
<label for="numberInput">z :</label>
|
||||
<input type="number" id="numberInput" placeholder="Entrez le z de la map">
|
||||
|
||||
<br>
|
||||
|
||||
<button onclick="convertInput()">Convertir</button>
|
||||
|
||||
<h2>Résultat :</h2>
|
||||
<div id="output"></div>
|
||||
</body>
|
||||
</html>
|