Skip to content

Commit

Permalink
Merge #503
Browse files Browse the repository at this point in the history
503: Item placement r=zicklag a=zicklag

bors merge

Co-authored-by: Zicklag <zicklag@katharostech.com>
  • Loading branch information
bors[bot] and zicklag committed Dec 2, 2022
2 parents f88271c + 1ba80f6 commit 72f0dca
Show file tree
Hide file tree
Showing 5 changed files with 70 additions and 66 deletions.
28 changes: 14 additions & 14 deletions assets/map/levels/level1.map.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1144,16 +1144,24 @@ layers:
kind: !element
elements:
- pos:
- 434.74872
- 361.5
- 434
- 361
element: ../elements/environment/sproinger/sproinger.element.yaml
- pos:
- 84.00006
- 201.5
- 80
- 202
element: ../elements/environment/sproinger/sproinger.element.yaml
- pos:
- 787.7432
- 201.5
- 784
- 202
element: ../elements/environment/sproinger/sproinger.element.yaml
- pos:
- 288.0
- 105.5
element: ../elements/environment/sproinger/sproinger.element.yaml
- pos:
- 576.0
- 105.5
element: ../elements/environment/sproinger/sproinger.element.yaml
- pos:
- 90.666664
Expand Down Expand Up @@ -1262,14 +1270,6 @@ layers:
- 720.9998
- 121.5
element: ../elements/item/cannon/cannon.element.yaml
- pos:
- 312.0
- 105.5
element: ../elements/environment/sproinger/sproinger.element.yaml
- pos:
- 576.0
- 105.5
element: ../elements/environment/sproinger/sproinger.element.yaml
- id: spawners
kind: !element
elements:
Expand Down
34 changes: 17 additions & 17 deletions assets/map/levels/level2.map.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -753,6 +753,22 @@ layers:
- id: decorations
kind: !element
elements:
- pos:
- 336
- 74
element: ../elements/environment/sproinger/sproinger.element.yaml
- pos:
- 752
- 74
element: ../elements/environment/sproinger/sproinger.element.yaml
- pos:
- 944
- 74
element: ../elements/environment/sproinger/sproinger.element.yaml
- pos:
- 706.8572
- 337.5
element: ../elements/item/sword/sword.element.yaml
- pos:
- 536.0
- 185.5
Expand Down Expand Up @@ -824,22 +840,6 @@ layers:
- 1015.1428
- 95.5
element: ../elements/item/kick_bomb/kick_bomb.element.yaml
- pos:
- 343.1112
- 73.5
element: ../elements/environment/sproinger/sproinger.element.yaml
- pos:
- 758.1111
- 73.5
element: ../elements/environment/sproinger/sproinger.element.yaml
- pos:
- 949.4359
- 73.5
element: ../elements/environment/sproinger/sproinger.element.yaml
- pos:
- 706.8572
- 337.5
element: ../elements/item/sword/sword.element.yaml
- pos:
- 224.0
- 311.5
Expand All @@ -852,7 +852,7 @@ layers:
- 192.0
element: ../elements/environment/player_spawner/player_spawner.element.yaml
- pos:
- 320.0
- 290.0
- 96.0
element: ../elements/environment/player_spawner/player_spawner.element.yaml
- pos:
Expand Down
6 changes: 3 additions & 3 deletions assets/map/levels/level3.map.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1420,11 +1420,11 @@ layers:
elements:
- pos:
- 48.0
- 233.5
- 234
element: ../elements/environment/sproinger/sproinger.element.yaml
- pos:
- 820.0
- 233.5
- 816.0
- 234
element: ../elements/environment/sproinger/sproinger.element.yaml
- pos:
- 792.0
Expand Down
18 changes: 9 additions & 9 deletions assets/map/levels/level4.map.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1163,14 +1163,14 @@ layers:
- id: decorations
kind: !element
elements:
- pos:
- 560
- 106
element: ../elements/environment/sproinger/sproinger.element.yaml
- pos:
- 984.5713
- 247.5
element: ../elements/item/sniper_rifle/sniper_rifle.element.yaml
- pos:
- 107.4286
- 225.5
element: ../elements/item/blunderbass/blunderbass.element.yaml
- pos:
- 560.0
- 271.5
Expand Down Expand Up @@ -1221,11 +1221,15 @@ layers:
element: ../elements/decoration/anemones/anemones.element.yaml
- pos:
- 968.0
- 257.5
- 249.5
element: ../elements/decoration/anemones/anemones.element.yaml
- id: items
kind: !element
elements:
- pos:
- 107.4286
- 225.5
element: ../elements/item/blunderbass/blunderbass.element.yaml
- pos:
- 120.40002
- 129.5
Expand Down Expand Up @@ -1274,10 +1278,6 @@ layers:
- 800.0
- 425.5
element: ../elements/item/mines/mines.element.yaml
- pos:
- 564.9702
- 105.5
element: ../elements/environment/sproinger/sproinger.element.yaml
- id: spawners
kind: !element
elements:
Expand Down
50 changes: 27 additions & 23 deletions src/physics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -133,29 +133,33 @@ fn update_kinematic_bodies(

let mut position = transform.translation.truncate() + body.offset;

// Shove objects out of walls
while collision_world.collide_solids(position, body.size.x, body.size.y)
== TileCollision::Solid
{
let rect = collisions::Rect::new(position.x, position.y, body.size.x, body.size.y);

match (
collision_world.collide_tag(1, rect.top_left(), 0.0, 0.0) == TileCollision::Solid,
collision_world.collide_tag(1, rect.top_right(), 0.0, 0.0) == TileCollision::Solid,
collision_world.collide_tag(1, rect.bottom_right(), 0.0, 0.0)
== TileCollision::Solid,
collision_world.collide_tag(1, rect.bottom_left(), 0.0, 0.0)
== TileCollision::Solid,
) {
// Check for collisions on each side of the rectangle
(false, false, _, _) => position.y += 1.0,
(_, false, false, _) => position.x += 1.0,
(_, _, false, false) => position.y -= 1.0,
(false, _, _, false) => position.x -= 1.0,
// If none of the sides of the rectangle are un-collided, then we don't know
// which direction to move to get out of the wall, and we just give up.
_ => {
break;
if body.has_mass {
// Shove objects out of walls
while collision_world.collide_solids(position, body.size.x, body.size.y)
== TileCollision::Solid
{
let rect = collisions::Rect::new(position.x, position.y, body.size.x, body.size.y);

match (
collision_world.collide_tag(1, rect.top_left(), 0.0, 0.0)
== TileCollision::Solid,
collision_world.collide_tag(1, rect.top_right(), 0.0, 0.0)
== TileCollision::Solid,
collision_world.collide_tag(1, rect.bottom_right(), 0.0, 0.0)
== TileCollision::Solid,
collision_world.collide_tag(1, rect.bottom_left(), 0.0, 0.0)
== TileCollision::Solid,
) {
// Check for collisions on each side of the rectangle
(false, false, _, _) => position.y += 1.0,
(_, false, false, _) => position.x += 1.0,
(_, _, false, false) => position.y -= 1.0,
(false, _, _, false) => position.x -= 1.0,
// If none of the sides of the rectangle are un-collided, then we don't know
// which direction to move to get out of the wall, and we just give up.
_ => {
break;
}
}
}
}
Expand Down

0 comments on commit 72f0dca

Please sign in to comment.