batframework 1.0.8a12__py3-none-any.whl → 1.0.8a13__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
batFramework/__init__.py CHANGED
@@ -24,7 +24,8 @@ from .dynamicEntity import DynamicEntity
24
24
  from .sprite import Sprite
25
25
  from .scrollingSprite import ScrollingSprite
26
26
  from .particle import *
27
- from .animatedSprite import AnimatedSprite, Animation
27
+ from .animation import Animation
28
+ from .animatedSprite import AnimatedSprite
28
29
  from .character import Character
29
30
  from .stateMachine import State, StateMachine
30
31
  from .scene import Scene
@@ -1,59 +1,11 @@
1
1
  import batFramework as bf
2
2
  import pygame
3
3
  from typing import List, Dict, Tuple, Union, Optional, Self
4
-
5
-
6
- def search_index(target: int, lst: List[int]) -> int:
7
- cumulative_sum = 0
8
- for index, value in enumerate(lst):
9
- cumulative_sum += value
10
- if cumulative_sum >= target:
11
- return index
12
- return -1
13
-
14
-
15
- class Animation:
16
- def __init__(
17
- self,
18
- name: str
19
- ) -> None:
20
- self.name = name
21
- self.frames: list[pygame.Surface] = []
22
- self.frames_flipX : list[pygame.Surface] = []
23
- self.duration_list = []
24
- self.duration_list_length = 1
25
-
26
- def from_surface(self,surface:pygame.Surface,size : Tuple[int,int])->Self:
27
- self.frames : List[pygame.Surface] = list(bf.utils.split_surface(surface, size).values())
28
- self.frames_flipX : List[pygame.Surface] = list(bf.utils.split_surface(surface, size,func=lambda s : pygame.transform.flip(s,True,False)).values())
29
- return self
30
-
31
- def __repr__(self):
32
- return f"Animation({self.name})"
33
-
34
- def counter_to_frame(self, counter: Union[float, int]) -> int:
35
- if not self.frames :
36
- raise ValueError("Animation has no frames")
37
- return search_index(
38
- int(counter % self.duration_list_length), self.duration_list
39
- )
40
-
41
- def get_frame(self, counter: Union[float, int], flip: bool) -> pygame.Surface:
42
- i = self.counter_to_frame(counter)
43
- return self.frames_flipX[i] if flip else self.frames[i]
44
-
45
- def set_duration_list(self, duration_list: Union[List[int], int]) -> Self:
46
- if isinstance(duration_list, int):
47
- duration_list = [duration_list] * len(self.frames)
48
- if len(duration_list) != len(self.frames):
49
- raise ValueError("duration_list should have values for all frames")
50
- self.duration_list = duration_list
51
- self.duration_list_length = sum(self.duration_list)
52
- return self
4
+ from .animation import Animation
53
5
 
54
6
  class AnimatedSprite(bf.Entity):
55
- def __init__(self, size: Optional[Tuple[int, int]] = None) -> None:
56
- super().__init__(size, no_surface=True)
7
+ def __init__(self, size: Optional[Tuple[int, int]] = None,*args,**kwargs) -> None:
8
+ super().__init__(size, no_surface=True,*args,**kwargs)
57
9
  self.float_counter: float = 0
58
10
  self.animations: Dict[str, Animation] = {}
59
11
  self.current_state: Optional[Animation] = None
@@ -0,0 +1,52 @@
1
+ import pygame
2
+ import batFramework as bf
3
+ from typing import List, Dict, Tuple, Union, Optional, Self
4
+
5
+
6
+ def search_index(target: int, lst: List[int]) -> int:
7
+ cumulative_sum = 0
8
+ for index, value in enumerate(lst):
9
+ cumulative_sum += value
10
+ if cumulative_sum >= target:
11
+ return index
12
+ return -1
13
+
14
+
15
+ class Animation:
16
+ def __init__(
17
+ self,
18
+ name: str
19
+ ) -> None:
20
+ self.name = name
21
+ self.frames: list[pygame.Surface] = []
22
+ self.frames_flipX : list[pygame.Surface] = []
23
+ self.duration_list = []
24
+ self.duration_list_length = 1
25
+
26
+ def from_surface(self,surface:pygame.Surface,size : Tuple[int,int])->Self:
27
+ self.frames : List[pygame.Surface] = list(bf.utils.split_surface(surface, size).values())
28
+ self.frames_flipX : List[pygame.Surface] = list(bf.utils.split_surface(surface, size,func=lambda s : pygame.transform.flip(s,True,False)).values())
29
+ return self
30
+
31
+ def __repr__(self):
32
+ return f"Animation({self.name})"
33
+
34
+ def counter_to_frame(self, counter: Union[float, int]) -> int:
35
+ if not self.frames :
36
+ raise ValueError("Animation has no frames")
37
+ return search_index(
38
+ int(counter % self.duration_list_length), self.duration_list
39
+ )
40
+
41
+ def get_frame(self, counter: Union[float, int], flip: bool) -> pygame.Surface:
42
+ i = self.counter_to_frame(counter)
43
+ return self.frames_flipX[i] if flip else self.frames[i]
44
+
45
+ def set_duration_list(self, duration_list: Union[List[int], int]) -> Self:
46
+ if isinstance(duration_list, int):
47
+ duration_list = [duration_list] * len(self.frames)
48
+ if len(duration_list) != len(self.frames):
49
+ raise ValueError("duration_list should have values for all frames")
50
+ self.duration_list = duration_list
51
+ self.duration_list_length = sum(self.duration_list)
52
+ return self
batFramework/character.py CHANGED
@@ -4,8 +4,8 @@ from .animatedSprite import AnimatedSprite
4
4
  from .dynamicEntity import DynamicEntity
5
5
 
6
6
  class Character(AnimatedSprite,DynamicEntity):
7
- def __init__(self) -> None:
8
- super().__init__()
7
+ def __init__(self,*args,**kwargs) -> None:
8
+ super().__init__(*args,**kwargs)
9
9
  self.state_machine = bf.StateMachine(self)
10
10
  self.do_setup_animations()
11
11
  self.do_setup_states()
batFramework/gui/label.py CHANGED
@@ -197,7 +197,6 @@ class Label(Shape):
197
197
  self.text_rect.size = self._get_text_rect_required_size()
198
198
  res = self.inflate_rect_by_padding((0, 0, *self.text_rect.size)).size
199
199
 
200
- return res
201
200
  return res[0] if self.autoresize_w else self.rect.w, (
202
201
  res[1] if self.autoresize_h else self.rect.h
203
202
  )
@@ -1,8 +1,8 @@
1
1
  import batFramework as bf
2
2
  from .widget import Widget
3
3
  from .constraints.constraints import *
4
- from typing import Self, TYPE_CHECKING,override
5
- from abc import ABC,abstractmethod
4
+ from typing import Self, TYPE_CHECKING
5
+ from abc import ABC
6
6
  import pygame
7
7
 
8
8
  if TYPE_CHECKING:
batFramework/manager.py CHANGED
@@ -77,8 +77,6 @@ class Manager(bf.SceneManager):
77
77
  ):
78
78
  bf.const.set_resolution((event.w, event.h))
79
79
  # update
80
- dt = self._clock.tick(bf.const.FPS) / 1000
81
- # dt = min(dt, 0.02) dirty fix for dt being too high when window not focused for a long time
82
80
  self._timeManager.update(dt)
83
81
  self._cutsceneManager.update(dt)
84
82
  self.update(dt)
@@ -86,6 +84,8 @@ class Manager(bf.SceneManager):
86
84
  self._screen.fill((0, 0, 0))
87
85
  self.draw(self._screen)
88
86
  pygame.display.flip()
87
+ dt = self._clock.tick(bf.const.FPS) / 1000
88
+ # dt = min(dt, 0.02) dirty fix for dt being too high when window not focused for a long time
89
89
  await asyncio.sleep(0)
90
90
  pygame.quit()
91
91
 
@@ -109,8 +109,6 @@ class Manager(bf.SceneManager):
109
109
  ):
110
110
  bf.const.set_resolution((event.w, event.h))
111
111
  # update
112
- dt = self._clock.tick(bf.const.FPS) / 1000
113
- # dt = min(dt, 0.02) dirty fix for dt being too high when window not focused for a long time
114
112
  self._timeManager.update(dt)
115
113
  self._cutsceneManager.update(dt)
116
114
  self.update(dt)
@@ -118,4 +116,6 @@ class Manager(bf.SceneManager):
118
116
  self._screen.fill((0, 0, 0))
119
117
  self.draw(self._screen)
120
118
  pygame.display.flip()
119
+ dt = self._clock.tick(bf.const.FPS) / 1000
120
+ # dt = min(dt, 0.02) dirty fix for dt being too high when window not focused for a long time
121
121
  pygame.quit()
@@ -3,8 +3,8 @@ import pygame
3
3
  from .states import *
4
4
 
5
5
  class Platform2DCharacter(bf.Character):
6
- def __init__(self):
7
- super().__init__()
6
+ def __init__(self,*args,**kwargs):
7
+ super().__init__(*args,**kwargs)
8
8
  self.actions = bf.ActionContainer(
9
9
  *bf.DirectionalKeyControls(),
10
10
  bf.Action("jump").add_key_control(pygame.K_SPACE).set_holding()
@@ -18,8 +18,6 @@ class Platform2DCharacter(bf.Character):
18
18
  self.friction = 0.7
19
19
  self.gravity = 300
20
20
  self.terminal_velocity = 1000
21
- self.state_machine.set_state("idle")
22
-
23
21
 
24
22
  def do_setup_animations(self):
25
23
  self.add_animation(bf.Animation("idle"))
@@ -33,7 +31,8 @@ class Platform2DCharacter(bf.Character):
33
31
  self.state_machine.add_state(Platform2DRun())
34
32
  self.state_machine.add_state(Platform2DJump())
35
33
  self.state_machine.add_state(Platform2DFall())
36
-
34
+ self.state_machine.set_state("idle")
35
+
37
36
 
38
37
 
39
38
  def do_reset_actions(self) -> None:
@@ -41,4 +40,4 @@ class Platform2DCharacter(bf.Character):
41
40
 
42
41
  def do_process_actions(self, event: pygame.Event) -> None:
43
42
  self.actions.process_event(event)
44
-
43
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: batframework
3
- Version: 1.0.8a12
3
+ Version: 1.0.8a13
4
4
  Summary: Pygame framework for making games easier.
5
5
  Author-email: Turan Baturay <baturayturan@gmail.com>
6
6
  Project-URL: Homepage, https://github.com/TuranBaturay/batFramework
@@ -1,10 +1,11 @@
1
- batFramework/__init__.py,sha256=z_Q35UQTif-sPhgH9DFgG_tZCyYNYlWioa1eIOSHzGg,2520
1
+ batFramework/__init__.py,sha256=z-FvSCPuPSJw3y4VnvujiKS9NeqqjD07QmpT_rjwZFI,2542
2
2
  batFramework/action.py,sha256=919IVYKviLyVYDtQL7oZvlVuE_aodjJCuwz6fGi5sCk,8420
3
3
  batFramework/actionContainer.py,sha256=qy6-YY3iX26KJ8NqFMSYo6JExohD8HFk0sC1qhb7qA8,2602
4
- batFramework/animatedSprite.py,sha256=Y77nakxq_UIAogeJRrs0VCK9n8teFHjsK5GE4sZ0q3U,6011
4
+ batFramework/animatedSprite.py,sha256=aHv3a1m6ilhk1fXkWrkDRj9ud1snuR0wt1DUvGstLro,4240
5
+ batFramework/animation.py,sha256=_XcH6r3TVQZUcLbhzUnTNlXrjy-J-nYiRmFpxvTYEoc,1934
5
6
  batFramework/audioManager.py,sha256=8tKSf4huZe5tgH98qHlKoFNjXPGDQNJho6PKfSCe7JA,3869
6
7
  batFramework/camera.py,sha256=u1EPSitZ9mEEa32yQB7K6ywnWgWCSumbhrc4HRjimEY,9406
7
- batFramework/character.py,sha256=IRsDclTTkA-sb51-LgcVjQW3slfA-8H_8wMA5LL-KlA,760
8
+ batFramework/character.py,sha256=uXbhMh8p-O8FXF0-gQW5JFiFiuDlgMZ_icgd5xudjyQ,789
8
9
  batFramework/constants.py,sha256=5PyZQZ4fCcLA8k_Upby9KGVF-3pnV2ZZ6t26CxiocPM,1102
9
10
  batFramework/cutscene.py,sha256=Jh2g-zC3zaUSQoO2uVOsirWkuLAUFugu2T8B_ob9IPQ,4007
10
11
  batFramework/cutsceneBlocks.py,sha256=3jtmTpV48NKCu-Qgjg7KN5KnwXn0kycIQ7t7G3RH3VE,4862
@@ -13,7 +14,7 @@ batFramework/easingController.py,sha256=4N8GIp1fsaWBUlDxXx3SMwOq1Mrhn10MZZIO51_C
13
14
  batFramework/entity.py,sha256=34gYC6uEMmLkqWtoTG9bgMWRmHRSxhQfxXZKzWS7H2o,2127
14
15
  batFramework/enums.py,sha256=re12gHw2g-5qtCNmGOfZbEC5cL5E8-FA79hfKGrI6-I,2078
15
16
  batFramework/fontManager.py,sha256=iCVavr4hpn0T4xsaUAzdNd01j5ebpcj30fvFHzm1g-M,2246
16
- batFramework/manager.py,sha256=atzqg1B3ekL60BZZZ4VEpgT7J-Y-yYf6fK0eHg5Cp0Y,4162
17
+ batFramework/manager.py,sha256=PbpwCr9CoRszEepKx2R4jHt1_ZCzZOxMzdnO8H8767g,4162
17
18
  batFramework/object.py,sha256=_3sfRxrjaiDuVyz5Yk-fYJqYx-Ehq_3-dA4eDTb9kok,3329
18
19
  batFramework/particle.py,sha256=SD_DRqfhzlEeWlORDVPh1R__2_RplNcBujmqovN9Mww,3079
19
20
  batFramework/renderGroup.py,sha256=_VDvmP4iB-XarFJo_Uh5YKwWq1cazHmOBmTXZkqKk40,2020
@@ -38,8 +39,8 @@ batFramework/gui/draggableWidget.py,sha256=SKG7oMInZ_GTnrbv2T0aqlppuiuLX1tkVSCQJ
38
39
  batFramework/gui/image.py,sha256=7IRvalA6QQz7SYI9h4y4-ryWa9EOxZM3sc10-OZyCPc,1770
39
40
  batFramework/gui/indicator.py,sha256=leCvxsGxt00-oTn0N5MTmLstLH9uLG3RjQ02KlXtZCQ,1549
40
41
  batFramework/gui/interactiveWidget.py,sha256=FAZnSlMIohduZIDTZh5U-_mh1AbgTF4sz-0oig4LWIQ,5760
41
- batFramework/gui/label.py,sha256=RcC0XY4hOuMkzBqRi1JeYPAykJ-bXjP37xqmr257FbY,11818
42
- batFramework/gui/layout.py,sha256=vGEifD5HZqz3fd6TRU0Xr7_1czLlpqe450mam48cLk0,8587
42
+ batFramework/gui/label.py,sha256=FmSY-ABOJKA47AFkbC8z99cOtJ1Ev6X12Ysdlq13iFI,11799
43
+ batFramework/gui/layout.py,sha256=3nprthjCJqUdD1qHN3lReYRb-4L0-t6v51JEO4NRcgo,8563
43
44
  batFramework/gui/meter.py,sha256=RFzAhSzR3O-Pw0wjdfApWGWFQSJoYa4WohkiREDAAJc,2395
44
45
  batFramework/gui/radioButton.py,sha256=rROl9mtUa-m220R5qZ85NBPZS7nPVx-azhqijJ-XhCo,2411
45
46
  batFramework/gui/root.py,sha256=K75814ct6AF4LF8cyzmtUmnTmSflJRnHVMGbpUXwmkE,5084
@@ -53,10 +54,10 @@ batFramework/gui/widget.py,sha256=HGusTCgh3oAjtvrShzn2YxhFTGgNLsqGGhNilvRx-oo,13
53
54
  batFramework/gui/constraints/__init__.py,sha256=qqXE8nnSrEvCSeHdqY8UYPZLetqdubFPI7IdZuh35QE,26
54
55
  batFramework/gui/constraints/constraints.py,sha256=nyPew0HIJ24rl4JcdBjUYu2aFynTryN9wqv1wKCo4ew,26873
55
56
  batFramework/templates/__init__.py,sha256=8XN-7JwYFKTRx_lnUL_If3spwgn5_2b7bwmrRRBPON0,46
56
- batFramework/templates/character.py,sha256=S-EkKYrMPg6539r1I5xNf9_bNVIC5-wISIJundbTlBQ,1319
57
+ batFramework/templates/character.py,sha256=4UEcegUIeIgj48sVgzyRcT6yjpFOZ8Q_gHTtiB5j6kw,1348
57
58
  batFramework/templates/states.py,sha256=WeomVrQ10vHxVCj9Wnk1PcinKyb871uV910mQe287kI,5370
58
- batframework-1.0.8a12.dist-info/LICENCE,sha256=A65iXbMDbOxQLDNOODJLqA7o5RxszYlEqIgNSzBQRf4,1073
59
- batframework-1.0.8a12.dist-info/METADATA,sha256=uczPx_HQKXtTcfCHuc61rpGXbTpQ94c7QX1dmt69Vsw,1695
60
- batframework-1.0.8a12.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
61
- batframework-1.0.8a12.dist-info/top_level.txt,sha256=vxAKBIk1oparFTxeXGBrgfIO7iq_YR5Fv1JvPVAIwmA,13
62
- batframework-1.0.8a12.dist-info/RECORD,,
59
+ batframework-1.0.8a13.dist-info/LICENCE,sha256=A65iXbMDbOxQLDNOODJLqA7o5RxszYlEqIgNSzBQRf4,1073
60
+ batframework-1.0.8a13.dist-info/METADATA,sha256=OzyhEot1q6_IE63BpCHk_FVARFPT-Wq8J4DTNke2DSo,1695
61
+ batframework-1.0.8a13.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
62
+ batframework-1.0.8a13.dist-info/top_level.txt,sha256=vxAKBIk1oparFTxeXGBrgfIO7iq_YR5Fv1JvPVAIwmA,13
63
+ batframework-1.0.8a13.dist-info/RECORD,,