Entrance of a level
This commit is contained in:
parent
5c54974159
commit
93d1678955
|
@ -191,6 +191,10 @@ impl Updatable for Character {
|
||||||
self.speed.x *= physics::GROUND_FRICTION.x;
|
self.speed.x *= physics::GROUND_FRICTION.x;
|
||||||
self.speed += accel * duration + force * 64.0;
|
self.speed += accel * duration + force * 64.0;
|
||||||
|
|
||||||
|
if self.speed.y > physics::MAXIMUM_VERTICAL_SPEED {
|
||||||
|
self.speed.y = physics::MAXIMUM_VERTICAL_SPEED;
|
||||||
|
}
|
||||||
|
|
||||||
// Compute position
|
// Compute position
|
||||||
self.position += self.speed * duration;
|
self.position += self.speed * duration;
|
||||||
|
|
||||||
|
|
|
@ -274,6 +274,9 @@ impl Drawable for PositionedTile {
|
||||||
/// The map represents the tiles contained in a level.
|
/// The map represents the tiles contained in a level.
|
||||||
pub struct Map {
|
pub struct Map {
|
||||||
|
|
||||||
|
/// The entrace point of the character in the map.
|
||||||
|
entrance: (usize, usize),
|
||||||
|
|
||||||
/// The tiles contained in the level.
|
/// The tiles contained in the level.
|
||||||
tiles: Matrix<(CollisionTile, GraphicTile)>,
|
tiles: Matrix<(CollisionTile, GraphicTile)>,
|
||||||
|
|
||||||
|
@ -359,10 +362,21 @@ impl Map {
|
||||||
}
|
}
|
||||||
|
|
||||||
Map {
|
Map {
|
||||||
|
entrance: Map::find_entrance(&matrix),
|
||||||
tiles: matrix,
|
tiles: matrix,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Finds a possible entrance.
|
||||||
|
pub fn find_entrance(tiles: &Matrix<(CollisionTile, GraphicTile)>) -> (usize, usize) {
|
||||||
|
(tiles.rows() - 5, 1)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Returns the entrance of the map.
|
||||||
|
pub fn entrance(&self) -> (usize, usize) {
|
||||||
|
self.entrance
|
||||||
|
}
|
||||||
|
|
||||||
/// Returns an iterator to the positioned tiles.
|
/// Returns an iterator to the positioned tiles.
|
||||||
pub fn at(&self, row: usize, col: usize) -> PositionedTile {
|
pub fn at(&self, row: usize, col: usize) -> PositionedTile {
|
||||||
PositionedTile {
|
PositionedTile {
|
||||||
|
|
|
@ -1,10 +1,13 @@
|
||||||
use sfml::system::Vector2;
|
use sfml::system::Vector2;
|
||||||
|
|
||||||
/// The gravity force.
|
/// The gravity force.
|
||||||
pub const G: Vector2<f32> = Vector2 { x: 0.0, y: 50.0 * 32.0 };
|
pub const G: Vector2<f32> = Vector2 { x: 0.0, y: 25.0 * 32.0 };
|
||||||
|
|
||||||
/// The friction with the ground.
|
/// The friction with the ground.
|
||||||
pub const GROUND_FRICTION: Vector2<f32> = Vector2 { x: 0.5, y: 1.0 };
|
pub const GROUND_FRICTION: Vector2<f32> = Vector2 { x: 0.5, y: 1.0 };
|
||||||
|
|
||||||
/// The speed of a jump.
|
/// The speed of a jump.
|
||||||
pub const JUMP_SPEED: Vector2<f32> = Vector2 { x: 0.0, y: -600.0 };
|
pub const JUMP_SPEED: Vector2<f32> = Vector2 { x: 0.0, y: -12.5 * 32.0 };
|
||||||
|
|
||||||
|
/// The maximum vertical speed.
|
||||||
|
pub const MAXIMUM_VERTICAL_SPEED: f32 = 10.0 * 32.0;
|
||||||
|
|
|
@ -30,6 +30,10 @@ impl Scene {
|
||||||
|
|
||||||
/// Adds a character to the scene.
|
/// Adds a character to the scene.
|
||||||
pub fn add(&mut self, character: Character) {
|
pub fn add(&mut self, character: Character) {
|
||||||
|
let mut character = character;
|
||||||
|
character.position.x = self.map.entrance().1 as f32 * 16.0;
|
||||||
|
character.position.y = self.map.entrance().0 as f32 * 16.0;
|
||||||
|
|
||||||
self.characters.push(character);
|
self.characters.push(character);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue