From 22f50bbd03481dbfd12b3de63e6e62d8b5b8f08b Mon Sep 17 00:00:00 2001 From: Evan Pratten Date: Sun, 3 Apr 2022 14:43:37 -0400 Subject: [PATCH] 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); }