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 objects
+
can be searched
+
+
+
+
+
+
+
Red objects
+
require an item
+
+
+
+
+
+
+
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
+
+
+
+
+
+
+
+
Don't let him see
+
or catch your girlfriend
+
+
+
+
+
+
+
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.
+
+
+
+
+
+
+
+
+
+
+
+
+
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
+
+
+
+
+
+
+
+
+
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 @@
-
+
+
+
+
+
+
+
How to Play
+
+
+
+
+
+
Green objects
+
can be searched
+
+
+
+
+
+
+
Red objects
+
require an item
+
+
+
+
+
+
+
White objects
+
do nothing
+
+
+
+
+
+
+
+
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
+
+
+
+
+