Merge remote-tracking branch 'origin/main'

main
Eren Saglam 2023-03-27 18:52:41 +02:00
commit 984e056a21
7 changed files with 41 additions and 6 deletions

View File

@ -10,7 +10,7 @@
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,C,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,M,,,C,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,
,,,,,,,,,,,,,,,,+,+,+,+,+,+,+,+,+,,,,,,,,,,,,,,,,,,,,,+,+,+,+,+,,,,,,,,,,,
,,,,,,,,,,,,,,,,#,#,#,#,#,#,#,#,#,,,,,,,,,,,,,,,,,,,,,#,#,#,#,#,+,+,+,+,,,,,,,
,,,,,,,,,,,,,,,,#,#,#,#,#,#,#,#,#,,,,,,,+,+,+,+,+,+,+,,,,,,,,#,#,#,#,#,#,#,#,#,,,,,,,
@ -43,4 +43,4 @@ AQ,18,requires_xor=lever-1;button-1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
AU,32,requires_and=lever-1;button-1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
AJ,33,id=lever-1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
Q,34,id=button-1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
F,23,size=7,,weight=0.5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
F,23,size=8,,weight=0.5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
1
10
11
12
13 M C M
14 + + + + + + + + + + + + + +
15 # # # # # # # # # # # # # # + + + +
16 # # # # # # # # # + + + + + + + # # # # # # # # #
43 AU 32 requires_and=lever-1;button-1
44 AJ 33 id=lever-1
45 Q 34 id=button-1
46 F 23 size=7 size=8 weight=0.5

Binary file not shown.

After

Width:  |  Height:  |  Size: 985 B

View File

@ -473,6 +473,19 @@
}
]
},
{
"id": "debug_1",
"subsheets": [
{
"id": "1",
"delays": [
1
],
"width": 24,
"height": 24
}
]
},
{
"id": "test_1",
"subsheets": [

View File

@ -1,6 +1,7 @@
from typing import Optional
from level.Level import Level
from level.elements.dynamic.BouncingBallLevelElement import BouncingBallLevelElement
from level.elements.dynamic.PushableBoxLevelElement import PushableBoxLevelElement
from level.elements.static.ButtonInputLevelElement import ButtonInputLevelElement
from level.elements.static.GateReceiverLevelElement import GateReceiverLevelElement
@ -27,6 +28,7 @@ TILES = {
'G': GateReceiverLevelElement,
'M': PushableBoxLevelElement,
'q': BouncingBallLevelElement,
}

View File

@ -0,0 +1,17 @@
from level.Level import Level
from level.elements.dynamic.PushableLevelElement import PushableLevelElement
from physics.SpriteManager import SpriteManager
from sprite.SpritesheetManager import SpritesheetManager
class BouncingBallLevelElement(PushableLevelElement):
def __init__(self, tile: dict, loaded_level):
super().__init__(tile, loaded_level)
self.bounce_factor = -1
def load(self, sprite_manager: SpriteManager, spritesheet_manager: SpritesheetManager, level: Level):
self.spritesheet = spritesheet_manager.get_sheet('debug_1')
self.set_animation_state('1')
self.position_scale.position = self.tile['position']
self.position_scale.scale = (0.5, 0.5)

View File

@ -109,7 +109,7 @@ class PhysicsElementsHandler:
sprite.position_scale.position[1]
)
sprite.motion = (0, sprite.motion[1])
sprite.motion = (sprite.motion[0] * sprite.bounce_factor, sprite.motion[1])
collides_with_last = collider
collided[0] = True
@ -153,14 +153,15 @@ class PhysicsElementsHandler:
sprite.position_scale.position[1] - motion_step[1]
)
sprite.motion = (sprite.motion[0], 0)
sprite.motion = (sprite.motion[0], sprite.motion[1] * sprite.bounce_factor)
collides_with_last = collider
collided[1] = True
return collides_with_last
def check_collides(self, sprite: StaticSprite, colliders: list[StaticSprite], screen_transform: PositionScale) -> list[StaticSprite]:
def check_collides(self, sprite: StaticSprite, colliders: list[StaticSprite], screen_transform: PositionScale) -> \
list[StaticSprite]:
collides_with = []
for collider in colliders:
@ -171,7 +172,7 @@ class PhysicsElementsHandler:
continue
if sprite.collides_with(collider, TOLERANCE):
collides_with.append(collider)
if len(collides_with) >= 2:
if len(collides_with) > 5:
break
return collides_with

View File

@ -17,6 +17,8 @@ class DynamicSprite(StaticSprite):
self.deceleration_horizontal_ground = 0.3
self.gravity = 9.81 / 10
self.bounce_factor = 0
def tick(self, tick_data: TickData):
super().tick(tick_data)