Skip to content

Commit 78548f1

Browse files
author
StarArawn
committed
Back to where we were, but now with better tiles.
1 parent 67df940 commit 78548f1

File tree

13 files changed

+229
-231
lines changed

13 files changed

+229
-231
lines changed

src/game/gameplay/camera/movement.rs

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
use bevy::{prelude::*, render::camera::{Camera, CameraProjection, OrthographicProjection}};
22

3-
use crate::game::{camera::{CameraData, CustomOrthographicProjection}, gameplay::character::PlayerSprite};
3+
use crate::game::{camera::{CameraData}, gameplay::character::PlayerSprite};
44

55
pub fn movement(
6-
time: Res<Time>,
7-
windows: Res<Windows>,
6+
87
player_query: Query<&Transform, (With<PlayerSprite>, Without<Camera>)>,
98
mut camera_query: Query<(
109
&mut CameraData,
@@ -17,16 +16,9 @@ pub fn movement(
1716
for player_transform in player_query.iter() {
1817
player_position = player_transform.translation;
1918
}
20-
for (mut camera_data, mut camera, mut camera_transform, mut projection) in camera_query.iter_mut() {
19+
for (_camera_data, mut camera, mut camera_transform, mut projection) in camera_query.iter_mut() {
2120
let camera_z = camera_transform.translation.z;
2221

23-
// camera_transform.translation = camera_transform.translation.truncate().lerp(player_position.truncate(), 0.01).extend(camera_z);
24-
25-
projection.update(
26-
windows.get_primary().unwrap().width(),
27-
windows.get_primary().unwrap().height(),
28-
);
29-
camera.projection_matrix = projection.get_projection_matrix();
30-
camera.depth_calculation = projection.depth_calculation();
22+
camera_transform.translation = camera_transform.translation.truncate().lerp(player_position.truncate(), 0.05).extend(camera_z);
3123
}
3224
}

src/game/gameplay/character/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ pub fn spawn_player(
2727
.id();
2828
build_basic_character_attributes(&mut commands, character);
2929

30-
let map_player_texture_handle = asset_server.load("textures/player_sprite.png");
30+
let map_player_texture_handle = asset_server.get_handle("textures/player_sprite.png");
3131
let map_player_sprite_material = materials.add(map_player_texture_handle.into());
3232
commands
3333
.spawn_bundle(SpriteBundle {
@@ -39,7 +39,7 @@ pub fn spawn_player(
3939
.insert(RenderLayers::layer(0));
4040

4141

42-
let battle_player_texture_handle = asset_server.load("textures/characters/huntress/idle.png");
42+
let battle_player_texture_handle = asset_server.get_handle("textures/characters/huntress/idle.png");
4343
let texture_atlas =
4444
TextureAtlas::from_grid(battle_player_texture_handle, Vec2::new(150.0, 150.0), 8, 1);
4545
let texture_atlas_handle = texture_atlases.add(texture_atlas);

src/game/gameplay/character/movement.rs

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,39 @@
1-
use crate::game::map::MapData;
21
use bevy::prelude::*;
32

3+
use crate::game::map::{MAP_LAYER, MapData, MapQuery};
4+
45
use super::PlayerSprite;
56

67
pub fn movement(
78
time: Res<Time>,
8-
map: Res<MapData>,
99
mut player_query: Query<(&mut PlayerSprite, &mut Transform)>,
10+
map_query: MapQuery,
11+
map_data_query: Query<&MapData>,
1012
) {
11-
if map.road_path.len() > 0 {
12-
for (mut player, mut transform) in player_query.iter_mut() {
13-
let current_road_position = map.road_path[player.current_position];
14-
let current_road_position = Vec2::new(
15-
(current_road_position.0 as f32 * 16.0) + 8.0,
16-
(current_road_position.1 as f32 * 16.0) + 8.0,
17-
);
18-
let mut player_position = transform.translation.truncate();
13+
if let Some((entity, _)) = map_query.get_layer(MAP_LAYER) {
14+
if let Ok(map_data) = map_data_query.get(entity) {
15+
if map_data.road_path.len() > 0 {
16+
for (mut player, mut transform) in player_query.iter_mut() {
17+
let current_road_position = map_data.road_path[player.current_position];
18+
let current_road_position = Vec2::new(
19+
(current_road_position.x as f32 * 16.0) + 8.0,
20+
(current_road_position.y as f32 * 16.0) + 8.0,
21+
);
22+
let mut player_position = transform.translation.truncate();
1923

2024

21-
let direction = (current_road_position - player_position).normalize();
22-
player_position += direction * 100.0 * time.delta_seconds();
25+
let direction = (current_road_position - player_position).normalize();
26+
player_position += direction * 100.0 * time.delta_seconds();
2327

24-
transform.translation = player_position.extend(10.0);
28+
transform.translation = player_position.extend(10.0);
2529

26-
let distance = current_road_position.distance_squared(player_position);
27-
if distance <= 1.0 {
28-
player.current_position += 1;
29-
if player.current_position >= map.road_path.len() {
30-
player.current_position = 0;
30+
let distance = current_road_position.distance_squared(player_position);
31+
if distance <= 1.0 {
32+
player.current_position += 1;
33+
if player.current_position >= map_data.road_path.len() {
34+
player.current_position = 0;
35+
}
36+
}
3137
}
3238
}
3339
}

src/game/gameplay/enemy/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ pub fn spawn_enemy(
2222
.insert(Transform::from_xyz(position.x, position.y, 11.0))
2323
.insert(Enemy::default())
2424
.with_children(|child_builder| {
25-
let texture_handle: Handle<Texture> = asset_server.load("textures/enemies/skeleton/idle.png");
25+
let texture_handle: Handle<Texture> = asset_server.get_handle("textures/enemies/skeleton/idle.png");
2626
let texture_atlas = TextureAtlas::from_grid(texture_handle, Vec2::new(150.0, 150.0), 4, 1);
2727
let texture_atlas_handle = texture_atlases.add(texture_atlas);
2828
child_builder
@@ -46,7 +46,7 @@ pub fn create_battle_enemy(
4646
asset_server: &Res<AssetServer>,
4747
texture_atlases: &mut ResMut<Assets<TextureAtlas>>,
4848
) {
49-
let texture_handle: Handle<Texture> = asset_server.load("textures/enemies/skeleton/idle.png");
49+
let texture_handle: Handle<Texture> = asset_server.get_handle("textures/enemies/skeleton/idle.png");
5050
let texture_atlas = TextureAtlas::from_grid(texture_handle, Vec2::new(150.0, 150.0), 4, 1);
5151
let texture_atlas_handle = texture_atlases.add(texture_atlas);
5252

src/game/gameplay/enemy/spawner.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use bevy::prelude::*;
1+
use bevy::{prelude::*, render::camera::RenderLayers};
22
use crate::game::GameState;
33
use super::spawn_enemy;
44

@@ -17,15 +17,16 @@ pub fn spawn(
1717
materials: &mut ResMut<Assets<ColorMaterial>>,
1818
position: Vec2,
1919
) {
20-
let texture_handle: Handle<Texture> = asset_server.load("textures/cave_sprite.png");
20+
dbg!(position);
21+
let texture_handle: Handle<Texture> = asset_server.get_handle("textures/cave_sprite.png");
2122
let cave_sprite_material = materials.add(texture_handle.into());
2223
commands
2324
.spawn_bundle(SpriteBundle {
2425
material: cave_sprite_material,
2526
transform: Transform::from_xyz(position.x, position.y, 10.0),
2627
..Default::default()
2728
})
28-
.insert(GameState::MapView)
29+
.insert(RenderLayers::layer(0))
2930
.insert(Spawner {
3031
wait_time: 10.0,
3132
last_time: 0.0,

src/game/gameplay/scenes/battle.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ pub fn handle_battle_events(
3939
) {
4040
for event in battle_events.iter() {
4141
let texture_handle: Handle<Texture> =
42-
asset_server.load(get_battle_location_texture(event.battle_location));
42+
asset_server.get_handle(get_battle_location_texture(event.battle_location));
4343
let background_sprite = materials.add(texture_handle.into());
4444

4545
// Get character entity..
@@ -103,7 +103,7 @@ pub fn handle_battle_events(
103103
// Accepts a `String` or any type that converts into a `String`, such as `&str`
104104
"Health: ",
105105
TextStyle {
106-
font: asset_server.load("FiraMono-Medium.ttf"),
106+
font: asset_server.get_handle("FiraMono-Medium.ttf"),
107107
font_size: 24.0,
108108
color: Color::WHITE,
109109
},

src/game/gameplay/scenes/map_view.rs

Lines changed: 1 addition & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ use crate::game::{camera::{CameraData, CurrentCamera}};
66
pub fn spawn(
77
mut commands: Commands,
88
mut current_camera: ResMut<CurrentCamera>,
9-
mut tilemap_query: Query<&mut Map>,
109
) {
1110
let mut ortho = OrthographicCameraBundle::new_2d();
1211
ortho.orthographic_projection.scale = 0.5;
@@ -15,42 +14,15 @@ pub fn spawn(
1514
.spawn()
1615
.insert_bundle(ortho)
1716
.insert(CameraData::default())
18-
// .insert(RenderLayers::layer(0))
17+
.insert(RenderLayers::layer(0))
1918
.id();
2019

2120
current_camera.camera = Some(camera_entity);
22-
23-
for mut tilemap in tilemap_query.iter_mut() {
24-
// let map_width = tilemap.width().unwrap() as i32;
25-
// let map_height = tilemap.height().unwrap() as i32;
26-
// let half_map_width = map_width / 2;
27-
// let half_map_height = map_height / 2;
28-
29-
// for x in -half_map_width..half_map_width {
30-
// for y in -half_map_height..half_map_height {
31-
// tilemap.spawn_chunk((x, y)).unwrap();
32-
// }
33-
// }
34-
}
3521
}
3622

3723
pub fn destroy(
3824
mut commands: Commands,
3925
mut current_camera: ResMut<CurrentCamera>,
40-
mut tilemap_query: Query<&mut Map>,
4126
) {
4227
commands.entity(current_camera.camera.take().unwrap()).despawn_recursive();
43-
44-
for mut tilemap in tilemap_query.iter_mut() {
45-
// let map_width = tilemap.width().unwrap() as i32;
46-
// let map_height = tilemap.height().unwrap() as i32;
47-
// let half_map_width = map_width / 2;
48-
// let half_map_height = map_height / 2;
49-
50-
// for x in -half_map_width..half_map_width {
51-
// for y in -half_map_height..half_map_height {
52-
// tilemap.despawn_chunk((x, y)).unwrap();
53-
// }
54-
// }
55-
}
5628
}

src/game/loading.rs

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,14 @@
11
use bevy::{asset::LoadState, prelude::*};
2-
use super::map::TilemapAtlasHandles;
3-
use super::{map::get_has_map_assets, GameState};
2+
use super::{GameState, LoadingHandles};
43

54
// A system to determin if we have finished loading and should change states.
65
pub fn loading(
76
asset_server: Res<AssetServer>,
87
mut game_state: ResMut<State<GameState>>,
9-
tilemap_atlas_handles: Res<TilemapAtlasHandles>,
10-
textures: Res<Assets<Texture>>,
8+
loading_handles: Res<LoadingHandles>,
119
) {
12-
asset_server.load::<Font, &'static str>("FiraMono-Medium.ttf");
13-
14-
if asset_server.get_group_load_state(textures.iter().map(|(handle_id, _)| handle_id)) == LoadState::Loaded &&
15-
get_has_map_assets(asset_server, tilemap_atlas_handles)
10+
dbg!(loading_handles.0.len());
11+
if asset_server.get_group_load_state(loading_handles.0.iter().map(|handle_id| handle_id.id)) == LoadState::Loaded
1612
{
1713
game_state.set(GameState::SpawnMap).unwrap();
1814
}

0 commit comments

Comments
 (0)