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,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, AU,32,requires_and=lever-1;button-1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
AJ,33,id=lever-1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, AJ,33,id=lever-1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
Q,34,id=button-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", "id": "test_1",
"subsheets": [ "subsheets": [

View File

@ -1,6 +1,7 @@
from typing import Optional from typing import Optional
from level.Level import Level from level.Level import Level
from level.elements.dynamic.BouncingBallLevelElement import BouncingBallLevelElement
from level.elements.dynamic.PushableBoxLevelElement import PushableBoxLevelElement from level.elements.dynamic.PushableBoxLevelElement import PushableBoxLevelElement
from level.elements.static.ButtonInputLevelElement import ButtonInputLevelElement from level.elements.static.ButtonInputLevelElement import ButtonInputLevelElement
from level.elements.static.GateReceiverLevelElement import GateReceiverLevelElement from level.elements.static.GateReceiverLevelElement import GateReceiverLevelElement
@ -27,6 +28,7 @@ TILES = {
'G': GateReceiverLevelElement, 'G': GateReceiverLevelElement,
'M': PushableBoxLevelElement, '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.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 collides_with_last = collider
collided[0] = True collided[0] = True
@ -153,14 +153,15 @@ class PhysicsElementsHandler:
sprite.position_scale.position[1] - motion_step[1] 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 collides_with_last = collider
collided[1] = True collided[1] = True
return collides_with_last 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 = [] collides_with = []
for collider in colliders: for collider in colliders:
@ -171,7 +172,7 @@ class PhysicsElementsHandler:
continue continue
if sprite.collides_with(collider, TOLERANCE): if sprite.collides_with(collider, TOLERANCE):
collides_with.append(collider) collides_with.append(collider)
if len(collides_with) >= 2: if len(collides_with) > 5:
break break
return collides_with return collides_with

View File

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