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 += accel * duration + force * 64.0;
|
||||
|
||||
if self.speed.y > physics::MAXIMUM_VERTICAL_SPEED {
|
||||
self.speed.y = physics::MAXIMUM_VERTICAL_SPEED;
|
||||
}
|
||||
|
||||
// Compute position
|
||||
self.position += self.speed * duration;
|
||||
|
||||
|
|
|
@ -274,6 +274,9 @@ impl Drawable for PositionedTile {
|
|||
/// The map represents the tiles contained in a level.
|
||||
pub struct Map {
|
||||
|
||||
/// The entrace point of the character in the map.
|
||||
entrance: (usize, usize),
|
||||
|
||||
/// The tiles contained in the level.
|
||||
tiles: Matrix<(CollisionTile, GraphicTile)>,
|
||||
|
||||
|
@ -359,10 +362,21 @@ impl Map {
|
|||
}
|
||||
|
||||
Map {
|
||||
entrance: Map::find_entrance(&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.
|
||||
pub fn at(&self, row: usize, col: usize) -> PositionedTile {
|
||||
PositionedTile {
|
||||
|
|
|
@ -1,10 +1,13 @@
|
|||
use sfml::system::Vector2;
|
||||
|
||||
/// 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.
|
||||
pub const GROUND_FRICTION: Vector2<f32> = Vector2 { x: 0.5, y: 1.0 };
|
||||
|
||||
/// 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.
|
||||
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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue