Merge branch 'master' into level-select-screen
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 78 KiB |
Before Width: | Height: | Size: 138 KiB After Width: | Height: | Size: 46 KiB |
@ -49,5 +49,5 @@
|
|||||||
188
|
188
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"animation_fps": 15
|
"animation_fps": 23
|
||||||
}
|
}
|
||||||
|
BIN
game/assets/levels/level_1/Level_2.psd
Normal file
BIN
game/assets/levels/level_1/appearing_platforms.png
Normal file
After Width: | Height: | Size: 40 KiB |
BIN
game/assets/levels/level_1/background.png
Normal file
After Width: | Height: | Size: 265 KiB |
86
game/assets/levels/level_1/colliders.json
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"x": -500,
|
||||||
|
"y": 800,
|
||||||
|
"width": 16000,
|
||||||
|
"height": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 576,
|
||||||
|
"y": 512,
|
||||||
|
"width": 352,
|
||||||
|
"height": 32
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 960,
|
||||||
|
"y": 352,
|
||||||
|
"width": 352,
|
||||||
|
"height": 32
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 1728,
|
||||||
|
"y": 352,
|
||||||
|
"width": 352,
|
||||||
|
"height": 32
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 2112,
|
||||||
|
"y": 512,
|
||||||
|
"width": 352,
|
||||||
|
"height": 32
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 4256,
|
||||||
|
"y": 544,
|
||||||
|
"width": 352,
|
||||||
|
"height": 32
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 4608,
|
||||||
|
"y": 480,
|
||||||
|
"width": 352,
|
||||||
|
"height": 96
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 5632,
|
||||||
|
"y": 288,
|
||||||
|
"width": 608,
|
||||||
|
"height": 64
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 6976,
|
||||||
|
"y": 480,
|
||||||
|
"width": 608,
|
||||||
|
"height": 64
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 7968,
|
||||||
|
"y": 480,
|
||||||
|
"width": 608,
|
||||||
|
"height": 64
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 1344,
|
||||||
|
"y": 512,
|
||||||
|
"width": 352,
|
||||||
|
"height": 32
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 4928,
|
||||||
|
"y": 544,
|
||||||
|
"width": 5280,
|
||||||
|
"height": 32
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 2496,
|
||||||
|
"y": 736,
|
||||||
|
"width": 640,
|
||||||
|
"height": 64
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 4608,
|
||||||
|
"y": 768,
|
||||||
|
"width": 5376,
|
||||||
|
"height": 32
|
||||||
|
}
|
||||||
|
]
|
BIN
game/assets/levels/level_1/disappearing_platforms.png
Normal file
After Width: | Height: | Size: 41 KiB |
BIN
game/assets/levels/level_1/level0.xcf
Normal file
BIN
game/assets/levels/level_1/platforms.png
Normal file
After Width: | Height: | Size: 72 KiB |
54
game/assets/levels/level_1/zones.json
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
{
|
||||||
|
"appear": [
|
||||||
|
{
|
||||||
|
"x": 2496,
|
||||||
|
"y": 736,
|
||||||
|
"width": 640,
|
||||||
|
"height": 64
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 4608,
|
||||||
|
"y": 768,
|
||||||
|
"width": 5376,
|
||||||
|
"height": 32
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 10176,
|
||||||
|
"y": 0,
|
||||||
|
"width": 64,
|
||||||
|
"height": 576
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"disappear": [
|
||||||
|
{
|
||||||
|
"x": 2880,
|
||||||
|
"y": 352,
|
||||||
|
"width": 352,
|
||||||
|
"height": 32
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 4256,
|
||||||
|
"y": 576,
|
||||||
|
"width": 352,
|
||||||
|
"height": 224
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 7520,
|
||||||
|
"y": 0,
|
||||||
|
"width": 64,
|
||||||
|
"height": 480
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 9216,
|
||||||
|
"y": 480,
|
||||||
|
"width": 704,
|
||||||
|
"height": 64
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"win": {
|
||||||
|
"x": 12000,
|
||||||
|
"y": 0,
|
||||||
|
"width": 100,
|
||||||
|
"height": 3000
|
||||||
|
}
|
||||||
|
}
|
@ -1,3 +1,3 @@
|
|||||||
[
|
[
|
||||||
"level_0"
|
"level_1"
|
||||||
]
|
]
|
||||||
|
@ -40,13 +40,13 @@ impl MainCharacter {
|
|||||||
movement_force: Vector2::zero(),
|
movement_force: Vector2::zero(),
|
||||||
velocity: Vector2::zero(),
|
velocity: Vector2::zero(),
|
||||||
base_velocity: Vector2::new(0.0, GRAVITY_PPS),
|
base_velocity: Vector2::new(0.0, GRAVITY_PPS),
|
||||||
size: Vector2::new(60.0, 100.0),
|
size: Vector2::new(85.0, 100.0),
|
||||||
sprite_sheet: AnimatedSpriteSheet::new(
|
sprite_sheet: AnimatedSpriteSheet::new(
|
||||||
sprite_sheet,
|
sprite_sheet,
|
||||||
Vector2::new(300.0, 300.0),
|
Vector2::new(258.0, 277.0),
|
||||||
3,
|
4,
|
||||||
8,
|
15,
|
||||||
6,
|
0,
|
||||||
),
|
),
|
||||||
current_state: CharacterState::default(),
|
current_state: CharacterState::default(),
|
||||||
state_set_timestamp: Utc::now(),
|
state_set_timestamp: Utc::now(),
|
||||||
|
@ -22,7 +22,7 @@ pub fn render_character_in_camera_space(
|
|||||||
|
|
||||||
// Calculate the frame ID to render
|
// Calculate the frame ID to render
|
||||||
let frame_id = match player.current_state {
|
let frame_id = match player.current_state {
|
||||||
crate::character::CharacterState::Jumping => 4,
|
crate::character::CharacterState::Jumping => 6,
|
||||||
_ => (frames_since_state_change % player.sprite_sheet.sprite_count as f32).floor() as usize,
|
_ => (frames_since_state_change % player.sprite_sheet.sprite_count as f32).floor() as usize,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -35,7 +35,7 @@ pub fn render_character_in_camera_space(
|
|||||||
raylib,
|
raylib,
|
||||||
player
|
player
|
||||||
.position
|
.position
|
||||||
.sub(Vector2::new(player.size.y, player.size.y).div(4.0)),
|
.sub(Vector2::new(player.size.y, player.size.y).div(3.0)),
|
||||||
Some(Vector2::new(player.size.y, player.size.y)),
|
Some(Vector2::new(player.size.y, player.size.y)),
|
||||||
Some(frame_id),
|
Some(frame_id),
|
||||||
);
|
);
|
||||||
|