diff --git a/front_edits/CSS/game-style.css b/front_edits/CSS/game-style.css index bf68115140358fc1ec0f96da6daf3d49f69056e0..ab2a539bfbed26326707d4d3179a1234f16f5973 100644 --- a/front_edits/CSS/game-style.css +++ b/front_edits/CSS/game-style.css @@ -98,7 +98,7 @@ body { } .assistant-message { - color: white; + color: black; margin-right: auto; border-radius: 20px 20px 20px 4px; } diff --git a/front_edits/Img/how_to_play/coffeetableusable_1.png b/front_edits/Img/how_to_play/coffeetableusable_1.png new file mode 100644 index 0000000000000000000000000000000000000000..cfcb4cc07b1d0a0d44110eb4e8ae490e004ed56a Binary files /dev/null and b/front_edits/Img/how_to_play/coffeetableusable_1.png differ diff --git a/front_edits/Img/how_to_play/tvunused_1.png b/front_edits/Img/how_to_play/tvunused_1.png new file mode 100644 index 0000000000000000000000000000000000000000..bd1152029314b627e0c08f98c66105114766ef89 Binary files /dev/null and b/front_edits/Img/how_to_play/tvunused_1.png differ diff --git a/front_edits/Img/how_to_play/untitled_artwork.png b/front_edits/Img/how_to_play/untitled_artwork.png new file mode 100644 index 0000000000000000000000000000000000000000..32f51f696c5a8138b393bf3cfa6db96a32c33688 Binary files /dev/null and b/front_edits/Img/how_to_play/untitled_artwork.png differ diff --git a/front_edits/howto/.DS_Store b/front_edits/howto/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 Binary files /dev/null and b/front_edits/howto/.DS_Store differ diff --git a/front_edits/howto/how-to-play-2.html b/front_edits/howto/how-to-play-2.html new file mode 100644 index 0000000000000000000000000000000000000000..84733d8070a7e11209daed5d2c0630b8aeeeaf4a --- /dev/null +++ b/front_edits/howto/how-to-play-2.html @@ -0,0 +1,72 @@ + + + + + + Through Their Eyes - How to Play + + + + +
+
+
+ +
+ + + + +
+ +
+
+

How to Play

+
+
+
+ Green object example +
+

Green objects

+

can be searched

+
+ +
+
+ Red object example +
+

Red objects

+

require an item

+
+ +
+
+ White object example +
+

White objects

+

do nothing

+
+
+ + +
+
+ + + + diff --git a/front_edits/howto/how-to-play-3.html b/front_edits/howto/how-to-play-3.html new file mode 100644 index 0000000000000000000000000000000000000000..9e7802154457e76676feb81aef883af72d8aabb0 --- /dev/null +++ b/front_edits/howto/how-to-play-3.html @@ -0,0 +1,64 @@ + + + + + + Through Their Eyes - How to Play + + + + +
+
+
+ +
+ + + + +
+ +
+
+

How to Play

+

+ Make sure the murderous ghost clown doesn't see you +

+ +
+
+
+ Monster warning +
+

Don't let him see

+

or catch your girlfriend

+
+ +
+
+ Hiding spot example +
+

Yellow objects

+

are hiding spots

+
+
+ + +
+
+ + + + diff --git a/front_edits/howto/how-to-play-4.html b/front_edits/howto/how-to-play-4.html new file mode 100644 index 0000000000000000000000000000000000000000..8873b03086df4859a1c0c5f46b8feff3c2a05248 --- /dev/null +++ b/front_edits/howto/how-to-play-4.html @@ -0,0 +1,45 @@ + + + + + + Through Their Eyes - How to Play + + + + +
+
+
+ +
+ + + + +
+ +
+
+

How to Play

+

+ You can only communicate by texting. Keep her calm and focused. +

+ +
+ Communication example +
+ + +
+
+ + + + diff --git a/front_edits/howto/how-to-play.html b/front_edits/howto/how-to-play.html new file mode 100644 index 0000000000000000000000000000000000000000..5a002ba05b26d24cb4056fef3ca12daa2a47fd82 --- /dev/null +++ b/front_edits/howto/how-to-play.html @@ -0,0 +1,42 @@ + + + + + + Through Their Eyes - How to Play + + + + +
+
+
+ +
+ + + + +
+ +
+
+

How to Play

+
+

Your girlfriend is trapped in your apartment

+ Trapped girlfriend +
+ +
+
+ + + + diff --git a/static/.DS_Store b/static/.DS_Store index 7ccddc90ebba382fdec81b52e2d0effff29e4866..d175132f0aa5b8357dd9a4905a0b037ecfb89c97 100644 Binary files a/static/.DS_Store and b/static/.DS_Store differ diff --git a/static/assets/.DS_Store b/static/assets/.DS_Store index e8a9d331f978a801724362b7d9c863fdf3a5ac44..8d28a4f8ef925db613a383a9798e749ecacff4c2 100644 Binary files a/static/assets/.DS_Store and b/static/assets/.DS_Store differ diff --git a/static/assets/css/how-to-play.css b/static/assets/css/how-to-play.css new file mode 100644 index 0000000000000000000000000000000000000000..d0ec455b92db586dce3874554b6ebb13b6ae108f --- /dev/null +++ b/static/assets/css/how-to-play.css @@ -0,0 +1,429 @@ +/* Styles généraux pour toutes les pages How to Play */ +.content { + color: #fff; + text-align: center; + max-width: 1200px; + margin: 0 auto; + padding: 20px; + display: flex; + flex-direction: column; + align-items: center; + margin-top: 20px; +} + +.content h1 { + font-family: "HorrorBrush", cursive; + font-size: 64px; + color: #9b0000; + position: relative; + margin-bottom: 30px; + letter-spacing: 4px; +} + +/* Styles pour la première page */ +.game-description p { + font-size: 2.5rem; + margin-bottom: 2rem; + color: #fff; +} + +.gf-image { + width: 400px; + height: auto; + margin-top: 50px; +} + +/* Styles pour la deuxième page */ +.objects-container { + display: flex; + justify-content: center; + gap: 50px; + margin: 50px 0 30px 0; + width: 100%; +} + +.object-type { + display: flex; + flex-direction: column; + align-items: center; + width: 300px; +} + +.object-title { + font-family: "HorrorBrush", cursive; + font-size: 2.5rem; + color: #fff; + margin-bottom: 10px; +} + +.sub-text { + font-size: 2rem; + color: #ffffff; + margin-bottom: 20px; +} + +.image-container { + width: 100%; + display: flex; + justify-content: center; +} + +/* Styles pour les images tutorielles */ +.tutorial-image { + width: 250px; + height: 250px; + object-fit: contain; +} + +/* Styles de navigation */ +.navigation-buttons { + display: flex; + justify-content: center; + align-items: center; + gap: 50px; + margin-top: 30px; + width: 100%; + height: auto; +} + +.navigation-buttons .back-button, +.navigation-buttons .next-button { + display: inline-block; + font-family: "HorrorBrush", cursive; + font-size: 36px; + color: #fff; + text-decoration: none; + transition: all 0.3s ease; + letter-spacing: 4px; + text-transform: uppercase; + background-color: rgba(155, 0, 0, 0.3); + padding: 10px 30px; + border: 2px solid #9b0000; + border-radius: 5px; + line-height: 1; + margin: 0; +} + +.navigation-buttons .back-button { + position: static; + transform: none; + bottom: auto; + left: auto; +} + +.navigation-buttons .next-button:hover, +.navigation-buttons .back-button:hover { + color: #9b0000; + background-color: rgba(155, 0, 0, 0.1); + box-shadow: 0 0 15px rgba(155, 0, 0, 0.5); +} + +/* Style spécifique pour le bouton Back to Menu */ +.back-to-menu { + position: absolute; + bottom: 40px; + left: 50%; + transform: translateX(-50%); +} + +/* Styles pour la deuxième page */ +.object-type.green .object-title { + color: #20bb43; +} + +.object-type.red .object-title { + color: #d25658; +} + +.object-type.white .object-title { + color: white; +} + +/* Media Queries pour la responsivité */ +@media screen and (max-width: 1200px) { + .content { + max-width: 95%; + padding: 15px; + } +} + +@media screen and (max-width: 900px) { + .objects-container { + flex-direction: column; + align-items: center; + gap: 40px; + margin: 50px 0 30px 0; + } + + .object-type { + width: 100%; + max-width: 400px; + } + + .tutorial-image { + width: 200px; + height: 200px; + } + + .content h1 { + font-size: 48px; + } + + .object-title { + font-size: 2rem; + } + + .sub-text { + font-size: 1.5rem; + } +} + +@media screen and (max-width: 600px) { + .gf-image { + width: 90%; + max-width: 300px; + } + + .content h1 { + font-size: 36px; + } + + .game-description p { + font-size: 1.8rem; + } + + .navigation-buttons { + flex-direction: column; + gap: 20px; + } + + .navigation-buttons .back-button, + .navigation-buttons .next-button { + font-size: 28px; + padding: 8px 20px; + } + + .object-title { + font-size: 1.8rem; + } + + .sub-text { + font-size: 1.2rem; + } + + .tutorial-image { + width: 180px; + height: 180px; + } +} + +@media screen and (max-width: 400px) { + .content h1 { + font-size: 32px; + } + + .game-description p { + font-size: 1.5rem; + } + + .navigation-buttons .back-button, + .navigation-buttons .next-button { + font-size: 24px; + padding: 6px 16px; + } +} + +@media screen and (max-height: 800px) { + .content { + margin-top: 10px; + } + + .content h1 { + font-size: 48px; + margin-bottom: 20px; + } + + .game-description p { + font-size: 2rem; + margin-bottom: 1.5rem; + } + + .gf-image { + width: 300px; + margin-top: 30px; + } + + .objects-container { + margin: 50px 0 20px 0; + } + + .object-type { + width: 250px; + } + + .tutorial-image { + width: 200px; + height: 200px; + } +} + +@media screen and (max-height: 600px) { + .content { + margin-top: 5px; + } + + .content h1 { + font-size: 36px; + margin-bottom: 15px; + } + + .game-description p { + font-size: 1.8rem; + margin-bottom: 1rem; + } + + .gf-image { + width: 250px; + margin-top: 20px; + } + + .objects-container { + margin: 30px 0 15px 0; + } + + .object-type { + width: 200px; + } + + .tutorial-image { + width: 180px; + height: 180px; + } + + .navigation-buttons { + margin-top: 30px; + } + + .navigation-buttons .back-button, + .navigation-buttons .next-button { + font-size: 28px; + padding: 8px 20px; + } +} + +@media screen and (max-height: 500px) { + .content h1 { + font-size: 32px; + margin-bottom: 10px; + } + + .game-description p { + font-size: 1.5rem; + } + + .gf-image { + width: 200px; + margin-top: 15px; + } + + .objects-container { + margin: 20px 0 10px 0; + } + + .object-type { + width: 180px; + } + + .tutorial-image { + width: 130px; + height: 130px; + } + + .navigation-buttons { + margin-top: 20px; + } + + .navigation-buttons .back-button, + .navigation-buttons .next-button { + font-size: 24px; + padding: 6px 16px; + } +} + +/* Styles pour la page 3 */ +.main-description { + font-size: 2.5rem; + color: #fff; + font-family: "HorrorBrush", cursive; +} + +.object-type.yellow .object-title { + color: #ffd700; +} + +/* Ajustement pour deux objets au lieu de trois */ +.objects-container.two-items { + justify-content: center; + gap: 100px; /* Plus d'espace entre deux éléments */ +} + +/* Media queries pour la page 3 */ +@media screen and (max-width: 900px) { + .main-description { + font-size: 2rem; + margin: 20px 0; + } +} + +@media screen and (max-width: 600px) { + .main-description { + font-size: 1.8rem; + margin: 15px 0; + } +} + +@media screen and (max-height: 600px) { + .main-description { + font-size: 1.8rem; + margin: 10px 0; + } +} + +/* Styles pour la page 4 */ +.video-container { + margin-top: 20px; + width: 100%; + display: flex; + justify-content: center; +} + +.tutorial-video { + max-width: 200px; + width: 100%; + border-radius: 30px; +} + +/* Media queries pour la page 4 */ +@media screen and (max-width: 900px) { + .tutorial-video { + max-width: 350px; + } +} + +@media screen and (max-width: 600px) { + .tutorial-video { + max-width: 300px; + } +} + +@media screen and (max-height: 800px) { + .video-container { + margin: 30px 0; + } +} + +@media screen and (max-height: 600px) { + .video-container { + margin: 20px 0; + } +} diff --git a/static/assets/css/index-style.css b/static/assets/css/index-style.css index af4955694973568ebd35c34e2edb5f72aeaa36af..2ad3c5666ca1f1e5c0bf623f8ebcbc34fd676f2f 100644 --- a/static/assets/css/index-style.css +++ b/static/assets/css/index-style.css @@ -72,7 +72,6 @@ main { align-items: center; gap: 100px; z-index: 1; - margin-top: 200px; } .logo { @@ -90,6 +89,7 @@ main { .menu { display: flex; + margin-top: 250px; flex-direction: column; gap: 30px; align-items: center; @@ -317,21 +317,29 @@ main { color: #fff; text-align: center; max-width: 800px; - margin: 40px auto; + margin: 0 auto; padding: 20px; + display: flex; + flex-direction: column; + align-items: center; + margin-top: 0px; } .content h1 { font-family: "HorrorBrush", cursive; font-size: 64px; color: #9b0000; - position: absolute; - top: 40px; - left: 50%; - transform: translateX(-50%); + position: relative; + margin-bottom: 30px; letter-spacing: 4px; } +.game-description p { + font-size: 2.5rem; + margin-bottom: 2rem; + color: #fff; +} + .back-button { font-family: "HorrorBrush", cursive; font-size: 36px; @@ -444,3 +452,31 @@ main { height: 100%; object-fit: contain; } + +.gf-image { + width: 400px; + height: auto; + margin-top: 50px; +} + +.next-button { + font-family: "HorrorBrush", cursive; + font-size: 36px; + color: #fff; + text-decoration: none; + transition: all 0.3s ease; + letter-spacing: 4px; + text-transform: uppercase; + display: block; + margin-top: 50px; + background-color: rgba(155, 0, 0, 0.3); + padding: 10px 30px; + border: 2px solid #9b0000; + border-radius: 5px; +} + +.next-button:hover { + color: #9b0000; + background-color: rgba(155, 0, 0, 0.1); + box-shadow: 0 0 15px rgba(155, 0, 0, 0.5); +} diff --git a/static/assets/img/.DS_Store b/static/assets/img/.DS_Store index 725a257e0e67d0ddb2a3f703bbd8bfa7a9710151..bc39fc5e9ddc637d48b8258172918c56deb4489e 100644 Binary files a/static/assets/img/.DS_Store and b/static/assets/img/.DS_Store differ diff --git a/static/assets/img/appartment/.DS_Store b/static/assets/img/appartment/.DS_Store index ed53d85b57af3f59a874e1f6e6f1c5e4fad4bca8..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 100644 Binary files a/static/assets/img/appartment/.DS_Store and b/static/assets/img/appartment/.DS_Store differ diff --git a/static/assets/img/appartment/basemap.png b/static/assets/img/appartment/basemap.png new file mode 100644 index 0000000000000000000000000000000000000000..a54fd86eb10555d06d878cf3519aaa70fe2bc243 Binary files /dev/null and b/static/assets/img/appartment/basemap.png differ diff --git a/static/assets/img/appartment/bedroomdoorlocked.png b/static/assets/img/appartment/bedroomdoorlocked.png new file mode 100644 index 0000000000000000000000000000000000000000..abc1cb7c6324e704942828c68dc367f50f7261b5 Binary files /dev/null and b/static/assets/img/appartment/bedroomdoorlocked.png differ diff --git a/static/assets/img/appartment/bedroomdoorunlocked.png b/static/assets/img/appartment/bedroomdoorunlocked.png new file mode 100644 index 0000000000000000000000000000000000000000..be014abddcca57c7b21b536b5a48dc7c0e905597 Binary files /dev/null and b/static/assets/img/appartment/bedroomdoorunlocked.png differ diff --git a/static/assets/img/appartment/bookcasesearchable.png b/static/assets/img/appartment/bookcasesearchable.png new file mode 100644 index 0000000000000000000000000000000000000000..fb02650bbe98874222ef85a3c5feb825ec2d6b88 Binary files /dev/null and b/static/assets/img/appartment/bookcasesearchable.png differ diff --git a/static/assets/img/appartment/bookcaseunusuable.png b/static/assets/img/appartment/bookcaseunusuable.png new file mode 100644 index 0000000000000000000000000000000000000000..a49fd9d7ff5c12f7e3c5d3ae0f06175e7e5ea36e Binary files /dev/null and b/static/assets/img/appartment/bookcaseunusuable.png differ diff --git a/static/assets/img/appartment/bookcaseusable.png b/static/assets/img/appartment/bookcaseusable.png new file mode 100644 index 0000000000000000000000000000000000000000..486920f1896f20ac751ec92358956cffe6cb9e91 Binary files /dev/null and b/static/assets/img/appartment/bookcaseusable.png differ diff --git a/static/assets/img/appartment/cabinetsearchable.png b/static/assets/img/appartment/cabinetsearchable.png new file mode 100644 index 0000000000000000000000000000000000000000..3dbe2161d2437958de2586ff14e5261151bbed56 Binary files /dev/null and b/static/assets/img/appartment/cabinetsearchable.png differ diff --git a/static/assets/img/appartment/cabinetunsearchable.png b/static/assets/img/appartment/cabinetunsearchable.png new file mode 100644 index 0000000000000000000000000000000000000000..4b21ee96ff269f3adc2a429d1e81510a7bfee5b3 Binary files /dev/null and b/static/assets/img/appartment/cabinetunsearchable.png differ diff --git a/static/assets/img/appartment/coffeetableunusable.png b/static/assets/img/appartment/coffeetableunusable.png new file mode 100644 index 0000000000000000000000000000000000000000..f2f62934cb96d71efef7c9d3ea6d81ab875a2af7 Binary files /dev/null and b/static/assets/img/appartment/coffeetableunusable.png differ diff --git a/static/assets/img/appartment/coffeetableusable.png b/static/assets/img/appartment/coffeetableusable.png new file mode 100644 index 0000000000000000000000000000000000000000..4bfd68bb5c2fabd833adf6002f5d5fadd6631601 Binary files /dev/null and b/static/assets/img/appartment/coffeetableusable.png differ diff --git a/static/assets/img/appartment/deadbodyunusable.png b/static/assets/img/appartment/deadbodyunusable.png new file mode 100644 index 0000000000000000000000000000000000000000..8c09ae3ba550cdb0b6885fec3a4ce8329eeea701 Binary files /dev/null and b/static/assets/img/appartment/deadbodyunusable.png differ diff --git a/static/assets/img/appartment/deadbodyusable.png b/static/assets/img/appartment/deadbodyusable.png new file mode 100644 index 0000000000000000000000000000000000000000..fb9bdabbbcb8420df1ec3512ac7a86f7947558b7 Binary files /dev/null and b/static/assets/img/appartment/deadbodyusable.png differ diff --git a/static/assets/img/appartment/desksearchable.png b/static/assets/img/appartment/desksearchable.png new file mode 100644 index 0000000000000000000000000000000000000000..b2048460fa349ecbd0789d258b65584bf51f8936 Binary files /dev/null and b/static/assets/img/appartment/desksearchable.png differ diff --git a/static/assets/img/appartment/deskunsearchable.png b/static/assets/img/appartment/deskunsearchable.png new file mode 100644 index 0000000000000000000000000000000000000000..8a7a2fc86f9707f426a111a23d2b23afdd350730 Binary files /dev/null and b/static/assets/img/appartment/deskunsearchable.png differ diff --git a/static/assets/img/appartment/dressersearchable.png b/static/assets/img/appartment/dressersearchable.png new file mode 100644 index 0000000000000000000000000000000000000000..6d6a32903e473fe1a3911c6b0257dcd7a2b33127 Binary files /dev/null and b/static/assets/img/appartment/dressersearchable.png differ diff --git a/static/assets/img/appartment/dresserunsearchable.png b/static/assets/img/appartment/dresserunsearchable.png new file mode 100644 index 0000000000000000000000000000000000000000..833a10311ffe32d61edc524154472d6ab54e0fbd Binary files /dev/null and b/static/assets/img/appartment/dresserunsearchable.png differ diff --git a/static/assets/img/appartment/finalmap.png b/static/assets/img/appartment/finalmap.png new file mode 100644 index 0000000000000000000000000000000000000000..0744faa5ba4eb84a12da8b97c46c9eb119b44ed0 Binary files /dev/null and b/static/assets/img/appartment/finalmap.png differ diff --git a/static/assets/img/appartment/fridgesearchable.png b/static/assets/img/appartment/fridgesearchable.png new file mode 100644 index 0000000000000000000000000000000000000000..28ae5f231a3a603c6b9013ea5938fa63ed30fbda Binary files /dev/null and b/static/assets/img/appartment/fridgesearchable.png differ diff --git a/static/assets/img/appartment/fridgeunsearchable.png b/static/assets/img/appartment/fridgeunsearchable.png new file mode 100644 index 0000000000000000000000000000000000000000..5fbeedb115d6040a166675333836c490c75f64bb Binary files /dev/null and b/static/assets/img/appartment/fridgeunsearchable.png differ diff --git a/static/assets/img/appartment/generatoroff.png b/static/assets/img/appartment/generatoroff.png new file mode 100644 index 0000000000000000000000000000000000000000..00361e54672653d31a4a021286e8f034ac31a8d8 Binary files /dev/null and b/static/assets/img/appartment/generatoroff.png differ diff --git a/static/assets/img/appartment/generatoron.png b/static/assets/img/appartment/generatoron.png new file mode 100644 index 0000000000000000000000000000000000000000..5c329b34cb11da5188548e6c622702ad6f46540a Binary files /dev/null and b/static/assets/img/appartment/generatoron.png differ diff --git a/static/assets/img/appartment/mainentranceopen.png b/static/assets/img/appartment/mainentranceopen.png new file mode 100644 index 0000000000000000000000000000000000000000..236c5b8d469feaa536747279aaa9145126da771b Binary files /dev/null and b/static/assets/img/appartment/mainentranceopen.png differ diff --git a/static/assets/img/appartment/storagelocked.png b/static/assets/img/appartment/storagelocked.png new file mode 100644 index 0000000000000000000000000000000000000000..70e01fc57e8bb61a454290d16bac0ab73fbcc5a2 Binary files /dev/null and b/static/assets/img/appartment/storagelocked.png differ diff --git a/static/assets/img/appartment/storageunlocked.png b/static/assets/img/appartment/storageunlocked.png new file mode 100644 index 0000000000000000000000000000000000000000..e5060fe72e45303e02f00677614d5881ce923f79 Binary files /dev/null and b/static/assets/img/appartment/storageunlocked.png differ diff --git a/static/assets/img/appartment/stovesearchable.png b/static/assets/img/appartment/stovesearchable.png new file mode 100644 index 0000000000000000000000000000000000000000..a83683cfbbbca1a4393ce6673df44e30e11f37a5 Binary files /dev/null and b/static/assets/img/appartment/stovesearchable.png differ diff --git a/static/assets/img/appartment/stoveunsearchable.png b/static/assets/img/appartment/stoveunsearchable.png new file mode 100644 index 0000000000000000000000000000000000000000..04b89e03acc5d48fdb30784577ae11ad122d33d4 Binary files /dev/null and b/static/assets/img/appartment/stoveunsearchable.png differ diff --git a/static/assets/img/appartment/theexit.png b/static/assets/img/appartment/theexit.png new file mode 100644 index 0000000000000000000000000000000000000000..ff946e5a66f786fb8830e40ab0ff2480feeec815 Binary files /dev/null and b/static/assets/img/appartment/theexit.png differ diff --git a/static/assets/img/appartment/tvunused.png b/static/assets/img/appartment/tvunused.png new file mode 100644 index 0000000000000000000000000000000000000000..8d5de282862c9022e38c963b6ee2877cb4ccc604 Binary files /dev/null and b/static/assets/img/appartment/tvunused.png differ diff --git a/static/assets/img/appartment/tvused.png b/static/assets/img/appartment/tvused.png new file mode 100644 index 0000000000000000000000000000000000000000..02b66a41dbf27bcbff0ce1a528d892950caf325f Binary files /dev/null and b/static/assets/img/appartment/tvused.png differ diff --git a/static/assets/img/clown.png b/static/assets/img/clown.png new file mode 100644 index 0000000000000000000000000000000000000000..0fef91c8084f74b728c8ceb381bedda30a6ccaab Binary files /dev/null and b/static/assets/img/clown.png differ diff --git a/static/assets/img/how_to_play/bed.png b/static/assets/img/how_to_play/bed.png new file mode 100644 index 0000000000000000000000000000000000000000..87e2a5db1f43fbfc79fc79048ec3e84b0a99ac08 Binary files /dev/null and b/static/assets/img/how_to_play/bed.png differ diff --git a/static/assets/img/how_to_play/coffeetableusable_1.png b/static/assets/img/how_to_play/coffeetableusable_1.png new file mode 100644 index 0000000000000000000000000000000000000000..cfcb4cc07b1d0a0d44110eb4e8ae490e004ed56a Binary files /dev/null and b/static/assets/img/how_to_play/coffeetableusable_1.png differ diff --git a/static/assets/img/how_to_play/monster.png b/static/assets/img/how_to_play/monster.png new file mode 100644 index 0000000000000000000000000000000000000000..349fcbf8c16837e0f3db7dbbdd5d287c33b9b097 Binary files /dev/null and b/static/assets/img/how_to_play/monster.png differ diff --git a/static/assets/img/how_to_play/tvunused_1.png b/static/assets/img/how_to_play/tvunused_1.png new file mode 100644 index 0000000000000000000000000000000000000000..bd1152029314b627e0c08f98c66105114766ef89 Binary files /dev/null and b/static/assets/img/how_to_play/tvunused_1.png differ diff --git a/static/assets/img/how_to_play/untitled_artwork.png b/static/assets/img/how_to_play/untitled_artwork.png new file mode 100644 index 0000000000000000000000000000000000000000..32f51f696c5a8138b393bf3cfa6db96a32c33688 Binary files /dev/null and b/static/assets/img/how_to_play/untitled_artwork.png differ diff --git a/static/assets/img/how_to_play/video.gif b/static/assets/img/how_to_play/video.gif new file mode 100644 index 0000000000000000000000000000000000000000..1f123760d52a31399aa49a43c3ff67ee60319bcc Binary files /dev/null and b/static/assets/img/how_to_play/video.gif differ diff --git a/static/assets/img/profil_pictures/.DS_Store b/static/assets/img/profil_pictures/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..9a52327ddf2a7819ee3acbfaabf22b41180cd78c Binary files /dev/null and b/static/assets/img/profil_pictures/.DS_Store differ diff --git a/static/assets/img/profil_pictures/bit_stress.webp b/static/assets/img/profil_pictures/bit_stress.webp new file mode 100644 index 0000000000000000000000000000000000000000..9fca85356b82d03df99d422e060f0212e744f057 Binary files /dev/null and b/static/assets/img/profil_pictures/bit_stress.webp differ diff --git a/static/assets/img/profil_pictures/no_stress.webp b/static/assets/img/profil_pictures/no_stress.webp new file mode 100644 index 0000000000000000000000000000000000000000..5a9e2905e23e087499df1ad82b9016e1496f379a Binary files /dev/null and b/static/assets/img/profil_pictures/no_stress.webp differ diff --git a/static/assets/img/profil_pictures/very_stress.webp b/static/assets/img/profil_pictures/very_stress.webp new file mode 100644 index 0000000000000000000000000000000000000000..731c4a78358828fc386f107ba956767c39312216 Binary files /dev/null and b/static/assets/img/profil_pictures/very_stress.webp differ diff --git a/static/game/dev/index.html b/static/game/dev/index.html index c1acf56f4f0ed35ed5fddf0516c79f81210d1f49..b6c5bfc770013f3f678bbc9163cabd8021c1f562 100644 --- a/static/game/dev/index.html +++ b/static/game/dev/index.html @@ -75,7 +75,7 @@ left: 0; width: 100%; height: 100%; - background: url('/assets/img/appartment/FinalMap.PNG') no-repeat center center; + background: url('/assets/img/appartment/finalmap.png') no-repeat center center; background-size: 100% 100%; pointer-events: none; z-index: -1; diff --git a/static/game/elmnts/clown.js b/static/game/elmnts/clown.js index 918f6df68e2de6e8597fbf4184f8be1efeb20dfd..5b636831ff341728629de93754a9072710b43b7e 100644 --- a/static/game/elmnts/clown.js +++ b/static/game/elmnts/clown.js @@ -8,8 +8,8 @@ class Clown extends Character { this.setCharacterPosition(this.gameState.map_data.clown_start_pos); // Add initial speed properties - this.baseSpeed = 600; // Starting movement delay in milliseconds - this.minSpeed = 100; // Fastest possible speed + this.baseSpeed = 900; // Starting movement delay in milliseconds + this.minSpeed = 300; // Fastest possible speed this.speedIncreaseInterval = 150000; // Speed increases every 30 seconds this.speedIncreaseAmount = 100; // How much to decrease delay each time diff --git a/static/game/elmnts/furniture.js b/static/game/elmnts/furniture.js index ff1c9c567233cc1431864eaa7ebf09f5b21d52db..71a910287e80ef093786eae3464c7b404f3903e9 100644 --- a/static/game/elmnts/furniture.js +++ b/static/game/elmnts/furniture.js @@ -1,3 +1,5 @@ + +// Start of Selection function getFurniture() { return [ { @@ -14,11 +16,11 @@ function getFurniture() { "sprite": [ { "for": "searchable", - "img": "/assets/img/appartment/DresserSearchable.PNG" + "img": "/assets/img/appartment/dressersearchable.png" }, { "for": "unsearchable", - "img": "/assets/img/appartment/DresserUnsearchable.PNG" + "img": "/assets/img/appartment/dresserunsearchable.png" } ] }, @@ -42,11 +44,11 @@ function getFurniture() { "sprite": [ { "for": "locked", - "img": "/assets/img/appartment/BedroomDoorLocked.PNG" + "img": "/assets/img/appartment/bedroomdoorlocked.png" }, { "for": "unlocked", - "img": "/assets/img/appartment/BedroomDoorUnlocked.PNG" + "img": "/assets/img/appartment/bedroomdoorunlocked.png" } ] }, @@ -66,11 +68,11 @@ function getFurniture() { "sprite": [ { "for": "usable", - "img": "/assets/img/appartment/CoffeeTableUsable.PNG" + "img": "/assets/img/appartment/coffeetableusable.png" }, { "for": "unusable", - "img": "/assets/img/appartment/CoffeeTableUnusable.PNG" + "img": "/assets/img/appartment/coffeetableunusable.png" } ] }, @@ -91,11 +93,11 @@ function getFurniture() { "sprite": [ { "for": "used", - "img": "/assets/img/appartment/TVUsed.PNG" + "img": "/assets/img/appartment/tvused.png" }, { "for": "unused", - "img": "/assets/img/appartment/TVUnused.PNG" + "img": "/assets/img/appartment/tvunused.png" } ] }, @@ -115,15 +117,15 @@ function getFurniture() { "sprite": [ { "for": "searchable", - "img": "/assets/img/appartment/BookcaseSearchable.PNG" + "img": "/assets/img/appartment/bookcasesearchable.png" }, { "for": "usable", - "img": "/assets/img/appartment/BookcaseUsable.PNG" + "img": "/assets/img/appartment/bookcaseusable.png" }, { "for": "unusable", - "img": "/assets/img/appartment/BookcaseUnusuable.PNG" + "img": "/assets/img/appartment/bookcaseunusuable.png" } ] }, @@ -140,11 +142,11 @@ function getFurniture() { "sprite": [ { "for": "off", - "img": "/assets/img/appartment/GeneratorOff.PNG" + "img": "/assets/img/appartment/generatoroff.png" }, { "for": "on", - "img": "/assets/img/appartment/GeneratorOn.PNG" + "img": "/assets/img/appartment/generatoron.png" } ] }, @@ -163,11 +165,11 @@ function getFurniture() { "sprite": [ { "for": "usable", - "img": "/assets/img/appartment/DeadBodyUsable.PNG" + "img": "/assets/img/appartment/deadbodyusable.png" }, { "for": "unusable", - "img": "/assets/img/appartment/DeadBodyUnusable.PNG" + "img": "/assets/img/appartment/deadbodyunusable.png" } ] }, @@ -185,11 +187,11 @@ function getFurniture() { "sprite": [ { "for": "searchable", - "img": "/assets/img/appartment/DeskSearchable.PNG" + "img": "/assets/img/appartment/desksearchable.png" }, { "for": "unsearchable", - "img": "/assets/img/appartment/DeskUnsearchable.PNG" + "img": "/assets/img/appartment/deskunsearchable.png" } ] }, @@ -207,11 +209,11 @@ function getFurniture() { "sprite": [ { "for": "searchable", - "img": "/assets/img/appartment/CabinetSearchable.PNG" + "img": "/assets/img/appartment/cabinetsearchable.png" }, { "for": "unsearchable", - "img": "/assets/img/appartment/CabinetUnsearchable.PNG" + "img": "/assets/img/appartment/cabinetunsearchable.png" } ] }, @@ -228,11 +230,11 @@ function getFurniture() { "sprite": [ { "for": "searchable", - "img": "/assets/img/appartment/FridgeSearchable.PNG" + "img": "/assets/img/appartment/fridgesearchable.png" }, { "for": "unsearchable", - "img": "/assets/img/appartment/FridgeUnsearchable.PNG" + "img": "/assets/img/appartment/fridgeunsearchable.png" } ] }, @@ -250,11 +252,11 @@ function getFurniture() { "sprite": [ { "for": "searchable", - "img": "/assets/img/appartment/StoveSearchable.PNG" + "img": "/assets/img/appartment/stovesearchable.png" }, { "for": "unsearchable", - "img": "/assets/img/appartment/StoveUnsearchable.PNG" + "img": "/assets/img/appartment/stoveunsearchable.png" } ] },{ @@ -275,27 +277,29 @@ function getFurniture() { "sprite": [ { "for": "locked", - "img": "/assets/img/appartment/StorageLocked.PNG" + "img": "/assets/img/appartment/storagelocked.png" }, { "for": "unlocked", - "img": "/assets/img/appartment/StorageUnlocked.PNG" + "img": "/assets/img/appartment/storageunlocked.png" } ] },{ - "name":"Entrance", + "name":"The Exit", "room":"Main Hallway", + "in_use": true, + "pos":{ - "x": 15, - "y": 18 + "x": 14, + "y": 19 }, "state":"locked", - "locked_message":"I seem to need a key to get out of here", + "locked_message":"Omg I can't get out, I need a key... there's a note here that says REMINDER: CHECK STORAGE. shit.", "unlocked_message":"IM OUT, AND THIS RELATIONSHIP IS OVER", "sprite": [ { "for": "locked", - "img": "/assets/img/appartment/TheExit.png" + "img": "/assets/img/appartment/theexit.png" } ] } diff --git a/static/game/elmnts/girlfriend.js b/static/game/elmnts/girlfriend.js index 2b09b2a131bc3fe656534d5254906273b72b3438..4798c722a0be9efafd5331bd84bad367a44acbe0 100644 --- a/static/game/elmnts/girlfriend.js +++ b/static/game/elmnts/girlfriend.js @@ -7,6 +7,7 @@ class Girlfriend extends Character { this.setCharacterPosition(this.gameState.map_data.girlfriend_start_pos); this.currentHidingSpot = null; this.stressLevel = 30; + this.inventory = []; } draw(CELL_SIZE) { @@ -60,6 +61,9 @@ class Girlfriend extends Character { break; case "hide": this.hide(response.target); + break; + case "exit": + this.exit(); break; } } @@ -73,6 +77,17 @@ class Girlfriend extends Character { return currentRoom ? currentRoom.hiding_places : []; } + getAvailableFurniture() { + // Get current room + const currentRoom = this.getCurrentRoom(); + if (!currentRoom) return []; + + // Filter furniture list to only include items in current room that are in use + return this.gameState.map_data.furniture.filter( + furniture => furniture.room === currentRoom && furniture.in_use === true + ); + } + getIsHiding() { const hidingSpots = this.getAvailableHidingSpots(); if (!this.characterPos || hidingSpots.length === 0) return false; @@ -106,7 +121,7 @@ class Girlfriend extends Character { .trim() .includes(spot.name.toLowerCase().trim()) ); - console.log(hidingSpot); + if (!hidingSpot) return; // Move to the hiding spot position @@ -114,4 +129,18 @@ class Girlfriend extends Character { this.currentHidingSpot = hidingSpotName; }); } + + exit() { + let the_exit = this.gameState.getTheExit(); + let x = the_exit.pos.x; + let y = the_exit.pos.y-1; + let pos = {"x": x, "y": y}; + this.moveToPosition(pos, () => { + if (!this.inventory || !this.inventory.includes("Key")) { + addProgramaticMessage(the_exit.locked_message); + } else { + addProgramaticMessage(the_exit.unlocked_message); + } + }); + } } diff --git a/static/game/game.js b/static/game/game.js index 7fb60aff32242efd048017e1d886eb7ad9879d36..78a0b5b78090cd3f811d7df3992e67934e9032ee 100644 --- a/static/game/game.js +++ b/static/game/game.js @@ -23,7 +23,7 @@ let chatMessages = []; let furnitureSprites = {}; function setup() { - baseMapImg = loadImage("/assets/img/appartment/BaseMap.PNG"); + baseMapImg = loadImage("/assets/img/appartment/basemap.png"); girlfriendImg = loadImage("/assets/img/gf.png"); clownImg = loadImage("/assets/img/clown.png"); @@ -59,7 +59,10 @@ function draw() { //drawGrid(); // drawWallsAndDoors(); - drawLabels(gameState.map_data.rooms); + drawLabels(gameState.map_data.rooms); + + drawStorage() + if (girlfriend) { girlfriend.drawPath(CELL_SIZE); diff --git a/static/game/gameState.js b/static/game/gameState.js index 2c624b8b25e0565f6aaa015d21ecaeacd435cae4..8bec84285879586ce71caffe4a317404fc862c7c 100644 --- a/static/game/gameState.js +++ b/static/game/gameState.js @@ -38,6 +38,14 @@ class GameState { this.isHiding = false; } + getTheExit() { + return this.map_data.furniture.find(furniture => furniture.name === "The Exit"); + } + + getStorage() { + return this.map_data.furniture.find(furniture => furniture.name === "Storage"); + } + getStressPrompt() { const currentStress = this.girlfriend ? this.girlfriend.stressLevel : 50; // Default to 50 if girlfriend not initialized @@ -85,21 +93,28 @@ RESPONSE FORMAT: You must ALWAYS respond with a JSON object. Your response should reflect a girlfriend's reaction to her boyfriend's message given this context and following the following structure: -1. For movement instructions ("go" action): +For movement instructions ("go" action): { "action": "go", "target": "[room name]", "textMessage": "[girlfriend's response]" } -2. For hiding instructions ("hide" action): +For hiding instructions ("hide" action): { "action": "hide", "target": "[hiding place name]", "textMessage": "[girlfriend's response]" } -3. For any other input: +For exiting the house by the exit in the mainhallway instructions ("exit" action): +{ + "action": "exit", + "target": "The Exit", + "textMessage": "[girlfriend's response]" +} + +For any other input: { "textMessage": "[girlfriend's response]" } diff --git a/static/game/index.html b/static/game/index.html index 827f341571e897a9fc35ab0db4730fe7dc95c94a..c167137671b4ba1dd449b1d3e870fd79876e1d34 100644 --- a/static/game/index.html +++ b/static/game/index.html @@ -78,7 +78,6 @@ - diff --git a/static/game/utilities/chat.js b/static/game/utilities/chat.js index a12788e166ad318577acaa12b82861b0f3e4c870..7516a184a4d91da1ca7d5c6e52c9baea441e4868 100644 --- a/static/game/utilities/chat.js +++ b/static/game/utilities/chat.js @@ -11,6 +11,15 @@ function createLoadingIndicator() { return loadingDiv; } +async function addProgramaticMessage(message) { + const chatHistory = document.getElementById("chatHistory"); + const loadingIndicator = createLoadingIndicator(); + chatHistory.appendChild(loadingIndicator); + await new Promise(resolve => setTimeout(resolve, 2000)); + chatHistory.removeChild(loadingIndicator); + addMessageToChat("assistant", message); +} + async function sendMessage() { const prompt = document.getElementById("prompt").value.trim(); if (!prompt) return; @@ -33,17 +42,12 @@ async function sendMessage() { ]; console.log("stressMessages", stressMessages); - // Get stress level change const stressResponse = await mistralAPI.sendMessage(stressMessages); const stressChange = JSON.parse(stressResponse).stressChange || 0; - // Update girlfriend's stress level girlfriend.updateStressLevel(stressChange); - console.log("girlfriend.stressLevel", girlfriend.stressLevel); - - console.log("stressChange", stressChange); + - // Now continue with the regular chat flow let masterPrompt = gameState.getPrompt(); const recentMessages = chatMessages.slice(-5); diff --git a/static/game/utilities/draw.js b/static/game/utilities/draw.js index a60f0e5e02429a6a5843b5371485e1141764d3df..34cd1adccbdbe32ffb557570a165abe520b734f6 100644 --- a/static/game/utilities/draw.js +++ b/static/game/utilities/draw.js @@ -28,9 +28,27 @@ function drawLabels(rooms) { rect(room.start_col * CELL_SIZE, room.start_row * CELL_SIZE, width, height); // Draw room label - fill(0); textAlign(CENTER, CENTER); textSize(14); + + if (room.name === 'Storage') { + // For Storage room, add white background + const labelWidth = textWidth(room.name); + const labelHeight = textAscent() + textDescent(); + push(); + rectMode(CENTER); + fill(255); // White background + noStroke(); + rect( + room.label_position.x * CELL_SIZE + CELL_SIZE / 2, + room.label_position.y * CELL_SIZE + CELL_SIZE / 2, + labelWidth, + labelHeight + ); + pop(); + } + + fill(0); text( room.name, room.label_position.x * CELL_SIZE + CELL_SIZE / 2, @@ -54,14 +72,14 @@ function drawLabels(rooms) { // Measure exactly the text size (no extra padding) const labelWidth = textWidth(hidingSpot.name); - const labelHeight = textAscent() + textDescent(); + const labelHeight = textAscent() ; // Draw a centered background rectangle // that's just as wide/tall as the text rectMode(CENTER); fill('#f1c94f'); noStroke(); - rect(x, y, labelWidth, labelHeight / 2, 2); + rect(x, y, labelWidth, labelHeight/2, 2); pop(); // Draw the text on top @@ -108,7 +126,6 @@ function drawWallsAndDoors() { } function loadFurnitureSprites(furniture) { - console.log(furniture); const sprites = []; for (let i = 0; i < furniture.length; i++) { for (let j = 0; j < furniture[i].sprite.length; j++) { @@ -119,6 +136,7 @@ function loadFurnitureSprites(furniture) { } return sprites; } + function drawFurniture(furniture, sprites) { // Draw all sprites first for (let item of furniture) { @@ -130,7 +148,7 @@ function drawFurniture(furniture, sprites) { // Draw all labels second for (let item of furniture) { - if (item.pos && item.in_use == true) { + if (item.pos && item.in_use == true && item.name !== "Storage") { push(); // Draw light gray background fill(220); @@ -148,4 +166,28 @@ function drawFurniture(furniture, sprites) { pop(); } } +} + +function drawStorage() { + let storage = gameState.getStorage(); + if (storage && storage.pos && storage.in_use == true) { + push(); + // Draw light gray background + fill(220); + noStroke(); + const padding = 4; + const textWidth = textSize() * storage.name.length * 0.6; + rectMode(CENTER); + rect((storage.pos.x + 0.5) * CELL_SIZE, (storage.pos.y + 0.5) * CELL_SIZE, textWidth, 20); + + // Draw black text + fill(0); + textAlign(CENTER, CENTER); + textSize(12); + text(storage.name, (storage.pos.x + 0.5) * CELL_SIZE, (storage.pos.y + 0.5) * CELL_SIZE); + + // Draw second "Storage" text on top + text(storage.name, (storage.pos.x + 0.5) * CELL_SIZE, (storage.pos.y + 0.5) * CELL_SIZE - 20); + pop(); + } } \ No newline at end of file diff --git a/static/howto/.DS_Store b/static/howto/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 Binary files /dev/null and b/static/howto/.DS_Store differ diff --git a/static/howto/how-to-play-2.html b/static/howto/how-to-play-2.html new file mode 100644 index 0000000000000000000000000000000000000000..93b3b9753774db3acf405f06e7b9816e8ea3ee44 --- /dev/null +++ b/static/howto/how-to-play-2.html @@ -0,0 +1,73 @@ + + + + + + + Through Their Eyes - How to Play + + + + +
+
+
+ +
+ + + + +
+ +
+
+

How to Play

+
+
+
+ Green object example +
+

Green objects

+

can be searched

+
+ +
+
+ Red object example +
+

Red objects

+

require an item

+
+ +
+
+ White object example +
+

White objects

+

do nothing

+
+
+ + +
+
+ + + + diff --git a/static/howto/how-to-play-3.html b/static/howto/how-to-play-3.html new file mode 100644 index 0000000000000000000000000000000000000000..d32ffa9b148bb60ccc614ee0602235f216007c0c --- /dev/null +++ b/static/howto/how-to-play-3.html @@ -0,0 +1,63 @@ + + + + + + Through Their Eyes - How to Play + + + + +
+
+
+ +
+ + + + +
+ +
+
+

How to Play

+

+ Make sure the murderous ghost clown doesn't see you +

+ +
+
+
+ Monster warning +
+

Don't let him see

+

or catch your girlfriend

+
+ +
+
+ Hiding spot example +
+

Yellow objects

+

are hiding spots

+
+
+ + +
+
+ + + diff --git a/static/howto/how-to-play-4.html b/static/howto/how-to-play-4.html new file mode 100644 index 0000000000000000000000000000000000000000..c4e511caa3b9ac187bad8d00687f6a6c28348be9 --- /dev/null +++ b/static/howto/how-to-play-4.html @@ -0,0 +1,44 @@ + + + + + + Through Their Eyes - How to Play + + + + +
+
+
+ +
+ + + + +
+ +
+
+

How to Play

+

+ You can only communicate by texting. Keep her calm and focused. +

+ +
+ Communication example +
+ + +
+
+ + + diff --git a/static/howto/how-to-play.html b/static/howto/how-to-play.html new file mode 100644 index 0000000000000000000000000000000000000000..30ffaa16e1f9227347e7e856fa4cff1e3776f758 --- /dev/null +++ b/static/howto/how-to-play.html @@ -0,0 +1,40 @@ + + + + + + Through Their Eyes - How to Play + + + + +
+
+
+ +
+ + + + +
+ +
+
+

How to Play

+
+

Your girlfriend is trapped in your apartment

+ Trapped girlfriend +
+ +
+
+ + diff --git a/static/index.html b/static/index.html index 7f654620d7d8612cc7cdec67dc64f46a9c1cfe12..2a1b46726e1af3844de9796030e2d7494ddcf993 100644 --- a/static/index.html +++ b/static/index.html @@ -24,7 +24,7 @@
Character