From 3ed57a17e76602cdf130ef315679dd6779057548 Mon Sep 17 00:00:00 2001 From: Si Bartha Date: Sun, 3 Apr 2022 14:39:14 -0400 Subject: [PATCH 01/10] Shrinkage --- game/game_logic/src/model/player.rs | 11 ++++++++++- game/game_logic/src/scenes/player_interaction.rs | 2 ++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/game/game_logic/src/model/player.rs b/game/game_logic/src/model/player.rs index 69a7fe9f..7f59fcc3 100644 --- a/game/game_logic/src/model/player.rs +++ b/game/game_logic/src/model/player.rs @@ -1,11 +1,14 @@ use nalgebra as na; +use raylib::prelude::*; -#[derive(Debug, Clone)] +#[derive(Debug)] pub struct Player { pub position: na::Vector2, pub velocity: na::Vector2, pub size: f32, + pub active_texture: i32, + pub textures: [String; 3], } impl Player { @@ -16,6 +19,12 @@ impl Player { position, velocity: na::Vector2::zeros(), size: 1.0, + active_texture: 0, + textures: [ + "assets/chr/chr_cubee/chr_cubeeLarge.png".to_string(), + "assets/chr/chr_cubee/chr_cubeeMedium.png".to_string(), + "assets/chr/chr_cubee/chr_cubeeSmall.png".to_string() + ] } } diff --git a/game/game_logic/src/scenes/player_interaction.rs b/game/game_logic/src/scenes/player_interaction.rs index bff9ca0a..e3593dcd 100644 --- a/game/game_logic/src/scenes/player_interaction.rs +++ b/game/game_logic/src/scenes/player_interaction.rs @@ -197,6 +197,8 @@ impl PlayableScene { player.position += velocity_modifier; + player.size -= 0.001; + self.update_camera(raylib); } From c024ee78dd2d21c39818d83635033b3b0f973364 Mon Sep 17 00:00:00 2001 From: Evan Pratten Date: Sun, 3 Apr 2022 14:43:37 -0400 Subject: [PATCH 02/10] Load textures --- game/game_logic/src/model/player.rs | 44 ++++++++++++++----- .../src/scenes/player_interaction.rs | 17 ++++--- 2 files changed, 45 insertions(+), 16 deletions(-) diff --git a/game/game_logic/src/model/player.rs b/game/game_logic/src/model/player.rs index 7f59fcc3..4b84c14f 100644 --- a/game/game_logic/src/model/player.rs +++ b/game/game_logic/src/model/player.rs @@ -2,30 +2,52 @@ use nalgebra as na; use raylib::prelude::*; +use crate::asset_manager::load_texture_from_internal_data; + #[derive(Debug)] pub struct Player { pub position: na::Vector2, pub velocity: na::Vector2, pub size: f32, pub active_texture: i32, - pub textures: [String; 3], + pub textures: Vec, } impl Player { - /// Construct a new player. - pub fn new(position: na::Vector2) -> Self { + pub fn new( + raylib_handle: &mut raylib::RaylibHandle, + thread: &raylib::RaylibThread, + position: na::Vector2, + ) -> Self { + // Load all the textures + let textures = vec![ + load_texture_from_internal_data( + raylib_handle, + thread, + "assets/chr/chr_cubee/chr_cubeeLarge.png", + ) + .unwrap(), + load_texture_from_internal_data( + raylib_handle, + thread, + "assets/chr/chr_cubee/chr_cubeeMedium.png", + ) + .unwrap(), + load_texture_from_internal_data( + raylib_handle, + thread, + "assets/chr/chr_cubee/chr_cubeeSmall.png", + ) + .unwrap(), + ]; + Self { position, velocity: na::Vector2::zeros(), - size: 1.0, - active_texture: 0, - textures: [ - "assets/chr/chr_cubee/chr_cubeeLarge.png".to_string(), - "assets/chr/chr_cubee/chr_cubeeMedium.png".to_string(), - "assets/chr/chr_cubee/chr_cubeeSmall.png".to_string() - ] + size: 1.0, + active_texture: 0, + textures, } } - } diff --git a/game/game_logic/src/scenes/player_interaction.rs b/game/game_logic/src/scenes/player_interaction.rs index e3593dcd..56906373 100644 --- a/game/game_logic/src/scenes/player_interaction.rs +++ b/game/game_logic/src/scenes/player_interaction.rs @@ -44,12 +44,19 @@ impl PlayableScene { let game_soundtrack = load_music_from_internal_data(thread, "assets/audio/gameSoundtrack.mp3").unwrap(); - Self { - has_updated_discord_rpc: false, - player: Player::new(na::Vector2::new( + // Load the player + let player = Player::new( + raylib_handle, + thread, + na::Vector2::new( 10.0 * constants.tile_size as f32, -10.0 * constants.tile_size as f32, - )), + ), + ); + + Self { + has_updated_discord_rpc: false, + player, world_map: map_renderer, camera: raylib::camera::Camera2D { target: raylib::math::Vector2 { x: 0.0, y: 0.0 }, @@ -197,7 +204,7 @@ impl PlayableScene { player.position += velocity_modifier; - player.size -= 0.001; + player.size -= 0.001; self.update_camera(raylib); } From 75c6c22a63d66b0b7b56dcb79bc252d714c9407a Mon Sep 17 00:00:00 2001 From: Si Bartha Date: Sun, 3 Apr 2022 14:39:14 -0400 Subject: [PATCH 03/10] Shrinkage --- game/game_logic/src/model/player.rs | 11 ++++++++++- game/game_logic/src/scenes/player_interaction.rs | 2 ++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/game/game_logic/src/model/player.rs b/game/game_logic/src/model/player.rs index 69a7fe9f..7f59fcc3 100644 --- a/game/game_logic/src/model/player.rs +++ b/game/game_logic/src/model/player.rs @@ -1,11 +1,14 @@ use nalgebra as na; +use raylib::prelude::*; -#[derive(Debug, Clone)] +#[derive(Debug)] pub struct Player { pub position: na::Vector2, pub velocity: na::Vector2, pub size: f32, + pub active_texture: i32, + pub textures: [String; 3], } impl Player { @@ -16,6 +19,12 @@ impl Player { position, velocity: na::Vector2::zeros(), size: 1.0, + active_texture: 0, + textures: [ + "assets/chr/chr_cubee/chr_cubeeLarge.png".to_string(), + "assets/chr/chr_cubee/chr_cubeeMedium.png".to_string(), + "assets/chr/chr_cubee/chr_cubeeSmall.png".to_string() + ] } } diff --git a/game/game_logic/src/scenes/player_interaction.rs b/game/game_logic/src/scenes/player_interaction.rs index 41374b14..3dddabd6 100644 --- a/game/game_logic/src/scenes/player_interaction.rs +++ b/game/game_logic/src/scenes/player_interaction.rs @@ -343,6 +343,8 @@ impl PlayableScene { player.velocity.y = 0.0; } + player.size -= 0.001; + self.update_camera(raylib); } From 486a14861488eda52ff14795a05fa2259b103e62 Mon Sep 17 00:00:00 2001 From: Evan Pratten Date: Sun, 3 Apr 2022 14:43:37 -0400 Subject: [PATCH 04/10] Load textures --- game/game_logic/src/model/player.rs | 44 ++++++++++++++----- .../src/scenes/player_interaction.rs | 11 ++++- 2 files changed, 42 insertions(+), 13 deletions(-) diff --git a/game/game_logic/src/model/player.rs b/game/game_logic/src/model/player.rs index 7f59fcc3..4b84c14f 100644 --- a/game/game_logic/src/model/player.rs +++ b/game/game_logic/src/model/player.rs @@ -2,30 +2,52 @@ use nalgebra as na; use raylib::prelude::*; +use crate::asset_manager::load_texture_from_internal_data; + #[derive(Debug)] pub struct Player { pub position: na::Vector2, pub velocity: na::Vector2, pub size: f32, pub active_texture: i32, - pub textures: [String; 3], + pub textures: Vec, } impl Player { - /// Construct a new player. - pub fn new(position: na::Vector2) -> Self { + pub fn new( + raylib_handle: &mut raylib::RaylibHandle, + thread: &raylib::RaylibThread, + position: na::Vector2, + ) -> Self { + // Load all the textures + let textures = vec![ + load_texture_from_internal_data( + raylib_handle, + thread, + "assets/chr/chr_cubee/chr_cubeeLarge.png", + ) + .unwrap(), + load_texture_from_internal_data( + raylib_handle, + thread, + "assets/chr/chr_cubee/chr_cubeeMedium.png", + ) + .unwrap(), + load_texture_from_internal_data( + raylib_handle, + thread, + "assets/chr/chr_cubee/chr_cubeeSmall.png", + ) + .unwrap(), + ]; + Self { position, velocity: na::Vector2::zeros(), - size: 1.0, - active_texture: 0, - textures: [ - "assets/chr/chr_cubee/chr_cubeeLarge.png".to_string(), - "assets/chr/chr_cubee/chr_cubeeMedium.png".to_string(), - "assets/chr/chr_cubee/chr_cubeeSmall.png".to_string() - ] + size: 1.0, + active_texture: 0, + textures, } } - } diff --git a/game/game_logic/src/scenes/player_interaction.rs b/game/game_logic/src/scenes/player_interaction.rs index 3dddabd6..54871bc4 100644 --- a/game/game_logic/src/scenes/player_interaction.rs +++ b/game/game_logic/src/scenes/player_interaction.rs @@ -60,11 +60,18 @@ impl PlayableScene { let game_soundtrack = load_music_from_internal_data(thread, "assets/audio/gameSoundtrack.mp3").unwrap(); + // Load the player + let player = Player::new( + raylib_handle, + thread, + player_start_position, + ); + Self { has_updated_discord_rpc: false, player_start_position, - player: Player::new(player_start_position), world_map: map_renderer, + player, camera: raylib::camera::Camera2D { target: raylib::math::Vector2 { x: 0.0, y: 0.0 }, offset: raylib::math::Vector2 { x: 0.0, y: 0.0 }, @@ -343,7 +350,7 @@ impl PlayableScene { player.velocity.y = 0.0; } - player.size -= 0.001; + player.size -= 0.001; self.update_camera(raylib); } From c955f2370bf5dd0a9f9cbf1bf0fa4f55c7f3ff07 Mon Sep 17 00:00:00 2001 From: Si Bartha Date: Sun, 3 Apr 2022 14:39:14 -0400 Subject: [PATCH 05/10] Shrinkage --- game/game_logic/src/model/player.rs | 11 ++++++++++- game/game_logic/src/scenes/player_interaction.rs | 2 ++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/game/game_logic/src/model/player.rs b/game/game_logic/src/model/player.rs index 69a7fe9f..7f59fcc3 100644 --- a/game/game_logic/src/model/player.rs +++ b/game/game_logic/src/model/player.rs @@ -1,11 +1,14 @@ use nalgebra as na; +use raylib::prelude::*; -#[derive(Debug, Clone)] +#[derive(Debug)] pub struct Player { pub position: na::Vector2, pub velocity: na::Vector2, pub size: f32, + pub active_texture: i32, + pub textures: [String; 3], } impl Player { @@ -16,6 +19,12 @@ impl Player { position, velocity: na::Vector2::zeros(), size: 1.0, + active_texture: 0, + textures: [ + "assets/chr/chr_cubee/chr_cubeeLarge.png".to_string(), + "assets/chr/chr_cubee/chr_cubeeMedium.png".to_string(), + "assets/chr/chr_cubee/chr_cubeeSmall.png".to_string() + ] } } diff --git a/game/game_logic/src/scenes/player_interaction.rs b/game/game_logic/src/scenes/player_interaction.rs index 9ff4ab04..6c3f41c3 100644 --- a/game/game_logic/src/scenes/player_interaction.rs +++ b/game/game_logic/src/scenes/player_interaction.rs @@ -347,6 +347,8 @@ impl PlayableScene { player.velocity.y = 0.0; } + player.size -= 0.001; + self.update_camera(raylib); } From 22f50bbd03481dbfd12b3de63e6e62d8b5b8f08b Mon Sep 17 00:00:00 2001 From: Evan Pratten Date: Sun, 3 Apr 2022 14:43:37 -0400 Subject: [PATCH 06/10] Load textures --- game/game_logic/src/model/player.rs | 44 ++++++++++++++----- .../src/scenes/player_interaction.rs | 11 ++++- 2 files changed, 42 insertions(+), 13 deletions(-) diff --git a/game/game_logic/src/model/player.rs b/game/game_logic/src/model/player.rs index 7f59fcc3..4b84c14f 100644 --- a/game/game_logic/src/model/player.rs +++ b/game/game_logic/src/model/player.rs @@ -2,30 +2,52 @@ use nalgebra as na; use raylib::prelude::*; +use crate::asset_manager::load_texture_from_internal_data; + #[derive(Debug)] pub struct Player { pub position: na::Vector2, pub velocity: na::Vector2, pub size: f32, pub active_texture: i32, - pub textures: [String; 3], + pub textures: Vec, } impl Player { - /// Construct a new player. - pub fn new(position: na::Vector2) -> Self { + pub fn new( + raylib_handle: &mut raylib::RaylibHandle, + thread: &raylib::RaylibThread, + position: na::Vector2, + ) -> Self { + // Load all the textures + let textures = vec![ + load_texture_from_internal_data( + raylib_handle, + thread, + "assets/chr/chr_cubee/chr_cubeeLarge.png", + ) + .unwrap(), + load_texture_from_internal_data( + raylib_handle, + thread, + "assets/chr/chr_cubee/chr_cubeeMedium.png", + ) + .unwrap(), + load_texture_from_internal_data( + raylib_handle, + thread, + "assets/chr/chr_cubee/chr_cubeeSmall.png", + ) + .unwrap(), + ]; + Self { position, velocity: na::Vector2::zeros(), - size: 1.0, - active_texture: 0, - textures: [ - "assets/chr/chr_cubee/chr_cubeeLarge.png".to_string(), - "assets/chr/chr_cubee/chr_cubeeMedium.png".to_string(), - "assets/chr/chr_cubee/chr_cubeeSmall.png".to_string() - ] + size: 1.0, + active_texture: 0, + textures, } } - } diff --git a/game/game_logic/src/scenes/player_interaction.rs b/game/game_logic/src/scenes/player_interaction.rs index 6c3f41c3..8d6802c4 100644 --- a/game/game_logic/src/scenes/player_interaction.rs +++ b/game/game_logic/src/scenes/player_interaction.rs @@ -60,11 +60,18 @@ impl PlayableScene { let game_soundtrack = load_music_from_internal_data(thread, "assets/audio/gameSoundtrack.mp3").unwrap(); + // Load the player + let player = Player::new( + raylib_handle, + thread, + player_start_position, + ); + Self { has_updated_discord_rpc: false, player_start_position, - player: Player::new(player_start_position), world_map: map_renderer, + player, camera: raylib::camera::Camera2D { target: raylib::math::Vector2 { x: 0.0, y: 0.0 }, offset: raylib::math::Vector2 { x: 0.0, y: 0.0 }, @@ -347,7 +354,7 @@ impl PlayableScene { player.velocity.y = 0.0; } - player.size -= 0.001; + player.size -= 0.001; self.update_camera(raylib); } From f48e5c11b958499c8e44bba40123aa5469d835cc Mon Sep 17 00:00:00 2001 From: Si Bartha Date: Sun, 3 Apr 2022 14:39:14 -0400 Subject: [PATCH 07/10] Shrinkage --- game/game_logic/src/scenes/player_interaction.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/game/game_logic/src/scenes/player_interaction.rs b/game/game_logic/src/scenes/player_interaction.rs index 8d6802c4..c54c06d5 100644 --- a/game/game_logic/src/scenes/player_interaction.rs +++ b/game/game_logic/src/scenes/player_interaction.rs @@ -356,6 +356,8 @@ impl PlayableScene { player.size -= 0.001; + player.size -= 0.001; + self.update_camera(raylib); } From 46830e0f9384459777dcb84d06ec830fb47f2330 Mon Sep 17 00:00:00 2001 From: Evan Pratten Date: Sun, 3 Apr 2022 14:43:37 -0400 Subject: [PATCH 08/10] Load textures --- game/game_logic/src/scenes/player_interaction.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/game/game_logic/src/scenes/player_interaction.rs b/game/game_logic/src/scenes/player_interaction.rs index c54c06d5..ed8c8a40 100644 --- a/game/game_logic/src/scenes/player_interaction.rs +++ b/game/game_logic/src/scenes/player_interaction.rs @@ -60,7 +60,7 @@ impl PlayableScene { let game_soundtrack = load_music_from_internal_data(thread, "assets/audio/gameSoundtrack.mp3").unwrap(); - // Load the player + // Load the player let player = Player::new( raylib_handle, thread, @@ -356,7 +356,7 @@ impl PlayableScene { player.size -= 0.001; - player.size -= 0.001; + player.size -= 0.001; self.update_camera(raylib); } From bd713c3e751f25d1e5ff0e37696ae423ab7a6e67 Mon Sep 17 00:00:00 2001 From: Si Bartha Date: Sun, 3 Apr 2022 22:59:51 -0400 Subject: [PATCH 09/10] Merge Stash --- game/dist/project-constants.json | 3 +- game/game_logic/src/project_constants.rs | 3 ++ .../src/scenes/player_interaction.rs | 43 ++++++++++++++----- 3 files changed, 38 insertions(+), 11 deletions(-) diff --git a/game/dist/project-constants.json b/game/dist/project-constants.json index 46f8c02e..ec52701f 100644 --- a/game/dist/project-constants.json +++ b/game/dist/project-constants.json @@ -21,6 +21,7 @@ "max_velocity": 3, "acceleration": 2, "deceleration": 1, - "start_size": 0.8 + "start_size": 0.8, + "melt_speed": 0.00944443 } } diff --git a/game/game_logic/src/project_constants.rs b/game/game_logic/src/project_constants.rs index 6df497d3..dde085bb 100644 --- a/game/game_logic/src/project_constants.rs +++ b/game/game_logic/src/project_constants.rs @@ -43,6 +43,9 @@ pub struct PlayerConstants { /// Starting size of player in tiles pub start_size: f32, + + /// Base melting speed in percent per second + pub melt_speed: f32, } /// This structure is filled with the contents of `dist/project-constants.json` at runtime diff --git a/game/game_logic/src/scenes/player_interaction.rs b/game/game_logic/src/scenes/player_interaction.rs index ed8c8a40..b3c03a4d 100644 --- a/game/game_logic/src/scenes/player_interaction.rs +++ b/game/game_logic/src/scenes/player_interaction.rs @@ -78,7 +78,7 @@ impl PlayableScene { rotation: 0.0, zoom: 1.0, }, - last_update: SystemTime::UNIX_EPOCH, + last_update: SystemTime::now(), game_soundtrack, world_colliders, show_debug_info: false, @@ -134,13 +134,18 @@ impl PlayableScene { self.draw_ui(&mut draw, constants); // NOTE: If you want to trigger a cutscene, do it here by using one of: - // return MenuStateSignal::DoMeltedDeathCutscene { - // playtime: Utc::now().signed_duration_since(self.play_start_time), - // }; + // return MenuStateSignal::DoOceanCutscene { // playtime: Utc::now().signed_duration_since(self.play_start_time), // }; + // Handle Losing + if self.player.size < 0.15 { + return MenuStateSignal::DoMeltedDeathCutscene { + playtime: Utc::now().signed_duration_since(self.play_start_time), + }; + } + // Handle winning if self .world_map @@ -188,6 +193,14 @@ impl PlayableScene { let mouse_x = draw.get_mouse_x(); let mouse_y = draw.get_mouse_y(); + let current_temperature = self.world_map.sample_temperature_at( + self.player.position.component_mul(&na::Vector2::new(1.0, -1.0)) + ); + let mut current_temperature_val: f32 = 1.0; + if let Some(val) = current_temperature { + current_temperature_val = val; + } + // Optionally display debug info if draw.is_key_pressed(KeyboardKey::KEY_F3) { self.show_debug_info = !self.show_debug_info; @@ -231,6 +244,12 @@ impl PlayableScene { // 32, // Color::BLACK, // ); + let melt_amount = constants.player.melt_speed * (current_temperature_val)/(-247.51879); + + draw.draw_text( + format!("Funny Temperature: ({})[{}]", current_temperature_val, melt_amount).as_str(), + 10, 10, 20, Color::PAPAYAWHIP + ); } // Physics @@ -249,11 +268,11 @@ impl PlayableScene { let player = &mut self.player; - // NOTE: This is how to check friction and temperature let current_friction = self.world_map.sample_friction_at(player.position); - let current_temperature = self.world_map.sample_temperature_at(player.position); + let current_temperature = self.world_map.sample_temperature_at( + player.position.component_mul(&na::Vector2::new(1.0, -1.0)) + ); let map_size = self.world_map.get_map_size(); - // TODO: You can access the colission list with: self.world_colliders // Get input direction components let h_axis = raylib.is_key_down(KeyboardKey::KEY_D) as i8 @@ -354,10 +373,14 @@ impl PlayableScene { player.velocity.y = 0.0; } - player.size -= 0.001; - - player.size -= 0.001; + let mut current_temperature_val: f32 = -247.51879; + if let Some(val) = current_temperature { + current_temperature_val = val - 273.15; + } + let melt_amount = constants.player.melt_speed * (-247.51879)/(current_temperature_val); + player.size -= melt_amount * delta_time; + self.update_camera(raylib); } From 064d14f97efb2a34334e28b94ea621f0fa579b50 Mon Sep 17 00:00:00 2001 From: Si Bartha Date: Sun, 3 Apr 2022 23:26:19 -0400 Subject: [PATCH 10/10] funny --- game/game_logic/src/scenes/player_interaction.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/game/game_logic/src/scenes/player_interaction.rs b/game/game_logic/src/scenes/player_interaction.rs index b3c03a4d..9ef0c2d9 100644 --- a/game/game_logic/src/scenes/player_interaction.rs +++ b/game/game_logic/src/scenes/player_interaction.rs @@ -196,7 +196,7 @@ impl PlayableScene { let current_temperature = self.world_map.sample_temperature_at( self.player.position.component_mul(&na::Vector2::new(1.0, -1.0)) ); - let mut current_temperature_val: f32 = 1.0; + let mut current_temperature_val: f32 = -247.51879; if let Some(val) = current_temperature { current_temperature_val = val; } @@ -244,7 +244,7 @@ impl PlayableScene { // 32, // Color::BLACK, // ); - let melt_amount = constants.player.melt_speed * (current_temperature_val)/(-247.51879); + let melt_amount = (current_temperature_val)/(-247.51879); draw.draw_text( format!("Funny Temperature: ({})[{}]", current_temperature_val, melt_amount).as_str(), @@ -378,7 +378,8 @@ impl PlayableScene { current_temperature_val = val - 273.15; } - let melt_amount = constants.player.melt_speed * (-247.51879)/(current_temperature_val); + let melt_amount = constants.player.melt_speed * (current_temperature_val)/(-247.51879); + player.size -= melt_amount * delta_time; self.update_camera(raylib);