batframework 1.0.8a6__py3-none-any.whl → 1.0.8a8__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 +51 -68
- batFramework/action.py +99 -126
- batFramework/actionContainer.py +9 -53
- batFramework/animatedSprite.py +82 -141
- batFramework/audioManager.py +26 -69
- batFramework/camera.py +69 -259
- batFramework/constants.py +54 -16
- batFramework/cutscene.py +29 -39
- batFramework/cutsceneBlocks.py +43 -36
- batFramework/debugger.py +48 -0
- batFramework/dynamicEntity.py +9 -18
- batFramework/easing.py +71 -0
- batFramework/entity.py +97 -48
- batFramework/gui/__init__.py +2 -10
- batFramework/gui/button.py +78 -9
- batFramework/gui/constraints.py +204 -0
- batFramework/gui/container.py +32 -174
- batFramework/gui/debugger.py +43 -131
- batFramework/gui/frame.py +19 -0
- batFramework/gui/image.py +20 -56
- batFramework/gui/indicator.py +21 -38
- batFramework/gui/interactiveWidget.py +13 -192
- batFramework/gui/label.py +74 -309
- batFramework/gui/layout.py +63 -231
- batFramework/gui/root.py +38 -134
- batFramework/gui/shape.py +57 -237
- batFramework/gui/toggle.py +51 -101
- batFramework/gui/widget.py +250 -358
- batFramework/manager.py +19 -52
- batFramework/particles.py +77 -0
- batFramework/scene.py +123 -281
- batFramework/sceneManager.py +116 -178
- batFramework/stateMachine.py +8 -11
- batFramework/time.py +58 -144
- batFramework/transition.py +124 -195
- batFramework/transitionManager.py +0 -0
- batFramework/triggerZone.py +1 -1
- batFramework/utils.py +147 -112
- batframework-1.0.8a8.dist-info/METADATA +53 -0
- batframework-1.0.8a8.dist-info/RECORD +42 -0
- {batframework-1.0.8a6.dist-info → batframework-1.0.8a8.dist-info}/WHEEL +1 -1
- batFramework/character.py +0 -27
- batFramework/easingController.py +0 -58
- batFramework/enums.py +0 -113
- batFramework/fontManager.py +0 -65
- batFramework/gui/clickableWidget.py +0 -220
- batFramework/gui/constraints/__init__.py +0 -1
- batFramework/gui/constraints/constraints.py +0 -815
- batFramework/gui/dialogueBox.py +0 -99
- batFramework/gui/draggableWidget.py +0 -40
- batFramework/gui/meter.py +0 -74
- batFramework/gui/radioButton.py +0 -84
- batFramework/gui/slider.py +0 -240
- batFramework/gui/style.py +0 -10
- batFramework/gui/styleManager.py +0 -48
- batFramework/gui/textInput.py +0 -247
- batFramework/object.py +0 -123
- batFramework/particle.py +0 -115
- batFramework/renderGroup.py +0 -67
- batFramework/resourceManager.py +0 -100
- batFramework/scrollingSprite.py +0 -114
- batFramework/sprite.py +0 -51
- batFramework/templates/__init__.py +0 -2
- batFramework/templates/character.py +0 -44
- batFramework/templates/states.py +0 -166
- batFramework/tileset.py +0 -46
- batframework-1.0.8a6.dist-info/LICENCE +0 -21
- batframework-1.0.8a6.dist-info/METADATA +0 -43
- batframework-1.0.8a6.dist-info/RECORD +0 -62
- {batframework-1.0.8a6.dist-info → batframework-1.0.8a8.dist-info}/top_level.txt +0 -0
batFramework/scrollingSprite.py
DELETED
@@ -1,114 +0,0 @@
|
|
1
|
-
from typing import Self, Iterator
|
2
|
-
from pygame.math import Vector2
|
3
|
-
import batFramework as bf
|
4
|
-
import pygame
|
5
|
-
|
6
|
-
|
7
|
-
class ScrollingSprite(bf.Sprite):
|
8
|
-
def __init__(
|
9
|
-
self,
|
10
|
-
data: pygame.Surface | str,
|
11
|
-
size: None | tuple[int, int] = None,
|
12
|
-
convert_alpha: bool = True,
|
13
|
-
):
|
14
|
-
self.scroll_value = Vector2(0, 0)
|
15
|
-
self.auto_scroll = Vector2(0, 0)
|
16
|
-
|
17
|
-
# Use integer values for the starting points, converted from floating point scroll values
|
18
|
-
|
19
|
-
super().__init__(data, size, convert_alpha)
|
20
|
-
self.original_width, self.original_height = self.original_surface.get_size()
|
21
|
-
|
22
|
-
def get_debug_outlines(self):
|
23
|
-
yield from super().get_debug_outlines()
|
24
|
-
for r in self._get_mosaic_rect_list():
|
25
|
-
yield r.move(*self.rect.topleft)
|
26
|
-
|
27
|
-
def set_image(
|
28
|
-
self, data: pygame.Surface | str, size: None | tuple[int, int] = None
|
29
|
-
) -> Self:
|
30
|
-
super().set_image(data, size)
|
31
|
-
self.original_width, self.original_height = self.original_surface.get_size()
|
32
|
-
return self
|
33
|
-
|
34
|
-
def set_autoscroll(self, x: float, y: float) -> Self:
|
35
|
-
self.auto_scroll.update(x, y)
|
36
|
-
return self
|
37
|
-
|
38
|
-
def set_scroll(self, x: float = None, y: float = None) -> Self:
|
39
|
-
self.scroll_value.update(
|
40
|
-
x if x else self.scroll_value.x, y if y else self.scroll_value.y
|
41
|
-
)
|
42
|
-
return self
|
43
|
-
|
44
|
-
def scroll(self, x: float, y: float) -> Self:
|
45
|
-
self.scroll_value += x, y
|
46
|
-
return self
|
47
|
-
|
48
|
-
def update(self, dt: float) -> None:
|
49
|
-
if self.auto_scroll:
|
50
|
-
self.scroll(*self.auto_scroll * dt)
|
51
|
-
original_width, original_height = self.original_surface.get_size()
|
52
|
-
|
53
|
-
# Use integer values for the starting points, converted from floating point scroll values
|
54
|
-
|
55
|
-
if self.scroll_value.x > self.original_width:
|
56
|
-
self.scroll_value.x -= self.original_width
|
57
|
-
if self.scroll_value.y > self.original_height:
|
58
|
-
self.scroll_value.y -= self.original_height
|
59
|
-
|
60
|
-
super().update(dt)
|
61
|
-
|
62
|
-
def set_size(self, size: tuple[int | None, int | None]) -> Self:
|
63
|
-
size = list(size)
|
64
|
-
if size[0] is None:
|
65
|
-
size[0] = self.rect.w
|
66
|
-
if size[1] is None:
|
67
|
-
size[1] = self.rect.h
|
68
|
-
|
69
|
-
self.surface = pygame.Surface(size).convert_alpha()
|
70
|
-
self.rect = self.surface.get_frect(topleft=self.rect.topleft)
|
71
|
-
return self
|
72
|
-
|
73
|
-
def _get_mosaic_rect_list(self) -> Iterator[pygame.Rect]:
|
74
|
-
# Use integer values for the starting points, converted from floating point scroll values
|
75
|
-
start_x = int(self.scroll_value.x % self.original_width)
|
76
|
-
start_y = int(self.scroll_value.y % self.original_height)
|
77
|
-
|
78
|
-
# Adjust start_x and start_y to begin tiling off-screen to the top-left, covering all visible area
|
79
|
-
if start_x != 0:
|
80
|
-
start_x -= self.original_width
|
81
|
-
if start_y != 0:
|
82
|
-
start_y -= self.original_height
|
83
|
-
|
84
|
-
# Set the region in which to tile
|
85
|
-
end_x = self.rect.w
|
86
|
-
end_y = self.rect.h
|
87
|
-
|
88
|
-
# Starting y_position for the inner loop
|
89
|
-
y_position = start_y
|
90
|
-
|
91
|
-
# if self.rect.w-1 < self.scroll_value.x < self.rect.w+1 : print(self.scroll_value.x,int(self.scroll_value.x % self.rect.w),start_x,self.rect.w,original_width)
|
92
|
-
# Generate all necessary rectangles
|
93
|
-
x = start_x
|
94
|
-
while x < end_x:
|
95
|
-
y = y_position
|
96
|
-
while y < end_y:
|
97
|
-
yield pygame.Rect(x, y, self.original_width, self.original_height)
|
98
|
-
y += self.original_height
|
99
|
-
x += self.original_width
|
100
|
-
return self
|
101
|
-
|
102
|
-
def draw(self, camera: bf.Camera) -> None:
|
103
|
-
if not (
|
104
|
-
self.visible
|
105
|
-
and (self.surface is not None)
|
106
|
-
and camera.rect.colliderect(self.rect)
|
107
|
-
):
|
108
|
-
return
|
109
|
-
# self.surface.fill((0, 0, 0, 0))
|
110
|
-
camera.surface.fblits(
|
111
|
-
[(self.original_surface, r.move(self.rect.x-camera.rect.x,self.rect.y-camera.rect.y)) for r in self._get_mosaic_rect_list()]
|
112
|
-
)
|
113
|
-
# camera.surface.blit(self.surface, camera.world_to_screen(self.rect))
|
114
|
-
return
|
batFramework/sprite.py
DELETED
@@ -1,51 +0,0 @@
|
|
1
|
-
import batFramework as bf
|
2
|
-
import pygame
|
3
|
-
from typing import Self
|
4
|
-
|
5
|
-
|
6
|
-
class Sprite(bf.Entity):
|
7
|
-
def __init__(
|
8
|
-
self,
|
9
|
-
path=None,
|
10
|
-
size: None | tuple[int, int] = None,
|
11
|
-
convert_alpha: bool = True,
|
12
|
-
):
|
13
|
-
self.original_surface: pygame.Surface = None
|
14
|
-
|
15
|
-
super().__init__(convert_alpha=convert_alpha)
|
16
|
-
if path is not None:
|
17
|
-
self.from_path(path)
|
18
|
-
if size is not None and self.original_surface:
|
19
|
-
self.set_size(self.original_surface.get_size())
|
20
|
-
|
21
|
-
def set_size(self, size: tuple[float, float]) -> Self:
|
22
|
-
if size == self.rect.size:
|
23
|
-
return self
|
24
|
-
self.rect.size = size
|
25
|
-
self.surface = pygame.Surface(
|
26
|
-
(int(self.rect.w), int(self.rect.h)), self.surface_flags
|
27
|
-
)
|
28
|
-
if self.convert_alpha:
|
29
|
-
self.surface = self.surface.convert_alpha()
|
30
|
-
self.surface.fill((0, 0, 0, 0 if self.convert_alpha else 255))
|
31
|
-
self.surface.blit(
|
32
|
-
pygame.transform.scale(self.original_surface, self.rect.size), (0, 0)
|
33
|
-
)
|
34
|
-
return self
|
35
|
-
|
36
|
-
def from_path(self, path: str) -> Self:
|
37
|
-
tmp = bf.ResourceManager().get_image(path, self.convert_alpha)
|
38
|
-
if tmp is None:
|
39
|
-
return self
|
40
|
-
self.original_surface = tmp
|
41
|
-
size = self.original_surface.get_size()
|
42
|
-
self.set_size(size)
|
43
|
-
return self
|
44
|
-
|
45
|
-
def from_surface(self, surface: pygame.Surface) -> Self:
|
46
|
-
if surface is None:
|
47
|
-
return self
|
48
|
-
self.original_surface = surface
|
49
|
-
size = self.original_surface.get_size()
|
50
|
-
self.set_size(size)
|
51
|
-
return self
|
@@ -1,44 +0,0 @@
|
|
1
|
-
import batFramework as bf
|
2
|
-
import pygame
|
3
|
-
from .states import *
|
4
|
-
|
5
|
-
class Platform2DCharacter(bf.Character):
|
6
|
-
def __init__(self):
|
7
|
-
super().__init__()
|
8
|
-
self.actions = bf.ActionContainer(
|
9
|
-
*bf.DirectionalKeyControls(),
|
10
|
-
bf.Action("jump").add_key_control(pygame.K_SPACE).set_holding()
|
11
|
-
)
|
12
|
-
self.on_ground : bool = False
|
13
|
-
self.max_jumps = 2
|
14
|
-
self.jump_counter = 0
|
15
|
-
self.jump_force = 150
|
16
|
-
self.speed = 100
|
17
|
-
self.acceleration = 30
|
18
|
-
self.friction = 0.7
|
19
|
-
self.gravity = 300
|
20
|
-
self.terminal_velocity = 1000
|
21
|
-
self.state_machine.set_state("idle")
|
22
|
-
|
23
|
-
|
24
|
-
def do_setup_animations(self):
|
25
|
-
self.add_animation(bf.Animation("idle"))
|
26
|
-
self.add_animation(bf.Animation("run"))
|
27
|
-
self.add_animation(bf.Animation("jump"))
|
28
|
-
self.add_animation(bf.Animation("fall"))
|
29
|
-
|
30
|
-
|
31
|
-
def do_setup_states(self):
|
32
|
-
self.state_machine.add_state(Platform2DIdle())
|
33
|
-
self.state_machine.add_state(Platform2DRun())
|
34
|
-
self.state_machine.add_state(Platform2DJump())
|
35
|
-
self.state_machine.add_state(Platform2DFall())
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
def do_reset_actions(self) -> None:
|
40
|
-
self.actions.reset()
|
41
|
-
|
42
|
-
def do_process_actions(self, event: pygame.Event) -> None:
|
43
|
-
self.actions.process_event(event)
|
44
|
-
|
batFramework/templates/states.py
DELETED
@@ -1,166 +0,0 @@
|
|
1
|
-
import batFramework as bf
|
2
|
-
from typing import TYPE_CHECKING
|
3
|
-
|
4
|
-
if TYPE_CHECKING:
|
5
|
-
from .character import Platform2DCharacter
|
6
|
-
|
7
|
-
|
8
|
-
class CharacterState(bf.State):
|
9
|
-
def set_parent(self, parent):
|
10
|
-
"""Initialize the parent character."""
|
11
|
-
res = super().set_parent(parent)
|
12
|
-
if res:
|
13
|
-
self.parent: Platform2DCharacter = parent
|
14
|
-
return res
|
15
|
-
|
16
|
-
def on_enter(self):
|
17
|
-
"""Handle state entry."""
|
18
|
-
self.parent.set_animation(self.name)
|
19
|
-
|
20
|
-
def handle_input(self):
|
21
|
-
"""Process input and update movement direction."""
|
22
|
-
if self.parent.actions.is_active("right"):
|
23
|
-
self._apply_horizontal_input(self.parent.acceleration, self.parent.speed)
|
24
|
-
if self.parent.actions.is_active("left"):
|
25
|
-
self._apply_horizontal_input(-self.parent.acceleration, -self.parent.speed)
|
26
|
-
|
27
|
-
if self.parent.velocity.x > 0:
|
28
|
-
self.parent.set_flipX(False)
|
29
|
-
elif self.parent.velocity.x < 0:
|
30
|
-
self.parent.set_flipX(True)
|
31
|
-
|
32
|
-
|
33
|
-
def _apply_horizontal_input(self, acceleration, limit):
|
34
|
-
"""Apply input acceleration and enforce speed limit."""
|
35
|
-
|
36
|
-
self.parent.velocity.x += acceleration
|
37
|
-
if abs(self.parent.velocity.x) > abs(limit):
|
38
|
-
self.parent.velocity.x = limit
|
39
|
-
|
40
|
-
def apply_friction(self):
|
41
|
-
"""Apply friction to horizontal velocity."""
|
42
|
-
if (self.parent.actions.is_active("right") or self.parent.actions.is_active("left")):
|
43
|
-
return
|
44
|
-
|
45
|
-
if abs(self.parent.velocity.x) < 0.01: # Threshold for negligible velocity
|
46
|
-
self.parent.velocity.x = 0
|
47
|
-
else:
|
48
|
-
self.parent.velocity.x *= self.parent.friction
|
49
|
-
|
50
|
-
def apply_gravity(self, dt):
|
51
|
-
"""Apply gravity to vertical velocity."""
|
52
|
-
self.parent.velocity.y += self.parent.gravity * dt
|
53
|
-
self.parent.velocity.y = min(self.parent.velocity.y, self.parent.terminal_velocity)
|
54
|
-
|
55
|
-
def move_character(self, dt):
|
56
|
-
"""Move the character based on velocity."""
|
57
|
-
self.parent.rect.x += self.parent.velocity.x * dt
|
58
|
-
self.parent.rect.y += self.parent.velocity.y * dt
|
59
|
-
|
60
|
-
def update(self, dt):
|
61
|
-
"""Update the character state."""
|
62
|
-
self.handle_input()
|
63
|
-
self.apply_physics(dt)
|
64
|
-
self.handle_collision()
|
65
|
-
|
66
|
-
def apply_physics(self, dt):
|
67
|
-
"""Apply all physics effects."""
|
68
|
-
self.apply_friction()
|
69
|
-
self.move_character(dt)
|
70
|
-
if self.parent.on_ground:
|
71
|
-
self.parent.velocity.y = 0 # Stop downward movement on ground
|
72
|
-
|
73
|
-
def handle_collision(self):
|
74
|
-
"""Placeholder for collision detection and resolution."""
|
75
|
-
pass # Future collision code goes here
|
76
|
-
|
77
|
-
|
78
|
-
class Platform2DIdle(CharacterState):
|
79
|
-
def __init__(self) -> None:
|
80
|
-
super().__init__("idle")
|
81
|
-
|
82
|
-
def on_enter(self):
|
83
|
-
self.parent.jump_counter = 0
|
84
|
-
super().on_enter()
|
85
|
-
|
86
|
-
def update(self, dt):
|
87
|
-
super().update(dt)
|
88
|
-
|
89
|
-
if not self.parent.on_ground:
|
90
|
-
self.parent.set_state("fall")
|
91
|
-
elif self.parent.velocity.x != 0:
|
92
|
-
self.parent.set_state("run")
|
93
|
-
elif self.parent.actions.is_active("jump"):
|
94
|
-
self.parent.set_state("jump")
|
95
|
-
|
96
|
-
|
97
|
-
class Platform2DRun(CharacterState):
|
98
|
-
def __init__(self) -> None:
|
99
|
-
super().__init__("run")
|
100
|
-
|
101
|
-
|
102
|
-
def on_enter(self):
|
103
|
-
self.parent.jump_counter = 0
|
104
|
-
super().on_enter()
|
105
|
-
|
106
|
-
def update(self, dt):
|
107
|
-
super().update(dt)
|
108
|
-
|
109
|
-
if self.parent.velocity.x :
|
110
|
-
if (self.parent.actions.is_active("right") or self.parent.actions.is_active("left")):
|
111
|
-
if self.parent.get_current_animation().name != "run" : self.parent.set_animation("run")
|
112
|
-
else:
|
113
|
-
if self.parent.get_current_animation().name != "idle" : self.parent.set_animation("idle")
|
114
|
-
|
115
|
-
if self.parent.actions.is_active("jump"):
|
116
|
-
self.parent.set_state("jump")
|
117
|
-
elif self.parent.velocity.x == 0:
|
118
|
-
if not (self.parent.actions.is_active("right") or self.parent.actions.is_active("left")):
|
119
|
-
self.parent.set_state("idle")
|
120
|
-
elif not self.parent.on_ground:
|
121
|
-
self.parent.set_state("fall")
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
class Platform2DJump(CharacterState):
|
127
|
-
def __init__(self) -> None:
|
128
|
-
super().__init__("jump")
|
129
|
-
|
130
|
-
def on_enter(self):
|
131
|
-
super().on_enter()
|
132
|
-
self.parent.on_ground = False
|
133
|
-
self.parent.velocity.y = -self.parent.jump_force
|
134
|
-
self.parent.jump_counter += 1
|
135
|
-
|
136
|
-
def update(self, dt):
|
137
|
-
super().update(dt)
|
138
|
-
self.apply_gravity(dt)
|
139
|
-
|
140
|
-
|
141
|
-
if self.parent.jump_counter < self.parent.max_jumps:
|
142
|
-
if self.parent.actions.is_active("jump") and (self.parent.velocity.y//10)*10 == 0:
|
143
|
-
self.parent.set_state("jump")
|
144
|
-
return
|
145
|
-
|
146
|
-
|
147
|
-
if self.parent.velocity.y > 0:
|
148
|
-
self.parent.set_state("fall")
|
149
|
-
|
150
|
-
|
151
|
-
class Platform2DFall(CharacterState):
|
152
|
-
def __init__(self) -> None:
|
153
|
-
super().__init__("fall")
|
154
|
-
|
155
|
-
def update(self, dt):
|
156
|
-
super().update(dt)
|
157
|
-
self.apply_gravity(dt)
|
158
|
-
|
159
|
-
if self.parent.on_ground:
|
160
|
-
if abs(self.parent.velocity.x) > 0.01:
|
161
|
-
self.parent.set_state("run")
|
162
|
-
else:
|
163
|
-
self.parent.set_state("idle")
|
164
|
-
|
165
|
-
if self.parent.actions.is_active("jump") and self.parent.jump_counter < self.parent.max_jumps:
|
166
|
-
self.parent.set_state("jump")
|
batFramework/tileset.py
DELETED
@@ -1,46 +0,0 @@
|
|
1
|
-
import pygame
|
2
|
-
from .resourceManager import ResourceManager
|
3
|
-
import batFramework as bf
|
4
|
-
|
5
|
-
|
6
|
-
class Tileset:
|
7
|
-
def __init__(self, source: pygame.Surface, tilesize: tuple[int, int]) -> None:
|
8
|
-
self.surface = source
|
9
|
-
self.tile_size = tilesize
|
10
|
-
self.tile_width = source.get_width() // tilesize[0]
|
11
|
-
self.tile_height = source.get_height() // tilesize[1]
|
12
|
-
# Create flipped versions of the tileset surface
|
13
|
-
self.flipped_surfaces = {
|
14
|
-
(False, False): self.surface,
|
15
|
-
(False, True): pygame.transform.flip(self.surface, False, True),
|
16
|
-
(True, False): pygame.transform.flip(self.surface, True, False),
|
17
|
-
(True, True): pygame.transform.flip(self.surface, True, True),
|
18
|
-
}
|
19
|
-
|
20
|
-
# Split each of the surfaces into tiles
|
21
|
-
self.tile_dict = {}
|
22
|
-
for flip_state, surf in self.flipped_surfaces.items():
|
23
|
-
tiles = bf.utils.split_surface(surf, self.tile_size)
|
24
|
-
for coord, tile in tiles.items():
|
25
|
-
if coord not in self.tile_dict:
|
26
|
-
self.tile_dict[coord] = {}
|
27
|
-
self.tile_dict[coord][flip_state] = tile
|
28
|
-
|
29
|
-
def __str__(self) -> str:
|
30
|
-
num_tiles = 0
|
31
|
-
if self.tile_dict:
|
32
|
-
num_tiles = len(self.tile_dict.values())
|
33
|
-
return f"{num_tiles} tiles | Tile size : {self.tile_size}"
|
34
|
-
|
35
|
-
def get_tile(
|
36
|
-
self, x: int, y: int, flipX=False, flipY=False
|
37
|
-
) -> pygame.Surface | None:
|
38
|
-
if flipX:
|
39
|
-
x = self.tile_width - 1 - x
|
40
|
-
if flipY:
|
41
|
-
y = self.tile_height - 1 - y
|
42
|
-
tile_data = self.tile_dict.get((x, y), None)
|
43
|
-
if tile_data is None:
|
44
|
-
return None
|
45
|
-
|
46
|
-
return tile_data.get((flipX, flipY), None)
|
@@ -1,21 +0,0 @@
|
|
1
|
-
MIT License
|
2
|
-
|
3
|
-
Copyright (c) [2023] [TURAN BATURAY]
|
4
|
-
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
7
|
-
in the Software without restriction, including without limitation the rights
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
10
|
-
furnished to do so, subject to the following conditions:
|
11
|
-
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
13
|
-
copies or substantial portions of the Software.
|
14
|
-
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
-
SOFTWARE.
|
@@ -1,43 +0,0 @@
|
|
1
|
-
Metadata-Version: 2.1
|
2
|
-
Name: batframework
|
3
|
-
Version: 1.0.8a6
|
4
|
-
Summary: Pygame framework for making games easier.
|
5
|
-
Author-email: Turan Baturay <baturayturan@gmail.com>
|
6
|
-
Project-URL: Homepage, https://github.com/TuranBaturay/batFramework
|
7
|
-
Classifier: Programming Language :: Python :: 3
|
8
|
-
Classifier: License :: OSI Approved :: MIT License
|
9
|
-
Classifier: Operating System :: OS Independent
|
10
|
-
Requires-Python: >=3.11
|
11
|
-
Description-Content-Type: text/markdown
|
12
|
-
License-File: LICENCE
|
13
|
-
Requires-Dist: pygame-ce
|
14
|
-
|
15
|
-
# batFramework
|
16
|
-
|
17
|
-
Welcome to the `batFramework`. This README provides an overview of the game framework.
|
18
|
-
|
19
|
-
## batFramework
|
20
|
-
|
21
|
-
The `batFramework` is a Python game development framework based on pygame, designed to streamline the process of creating 2D games. It provides a set of tools and components to handle scenes, transitions, cutscenes, audio, sprites, and more. The framework is built with flexibility in mind, allowing you to focus on game design while abstracting away low-level details.
|
22
|
-
|
23
|
-
### Features
|
24
|
-
|
25
|
-
- Scene management
|
26
|
-
- Cutscene support
|
27
|
-
- Audio management (music and sound effects with volume control)
|
28
|
-
- Entity, sprite, and animated sprite handling
|
29
|
-
- Transition effects
|
30
|
-
- Utility modules (time management, constants, etc.)
|
31
|
-
- No external dependency except for pygame
|
32
|
-
|
33
|
-
### Explore batFramework
|
34
|
-
|
35
|
-
1. Install Python (version 3.11 or higher) and the latest stable version of pygame-ce.
|
36
|
-
2. Clone or download this repository.
|
37
|
-
4. Explore the framework's modules in the `batFramework` directory and integrate them into your own game project.
|
38
|
-
|
39
|
-
For more detailed information on how to use the framework, refer to the documentation (if available) or explore the source code in the `batFramework` directory.
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
@@ -1,62 +0,0 @@
|
|
1
|
-
batFramework/__init__.py,sha256=ZMA14nsYaYN4_0a0J1la_Mq-fvFe7TBVfN25dP-pMSY,2556
|
2
|
-
batFramework/action.py,sha256=919IVYKviLyVYDtQL7oZvlVuE_aodjJCuwz6fGi5sCk,8420
|
3
|
-
batFramework/actionContainer.py,sha256=qy6-YY3iX26KJ8NqFMSYo6JExohD8HFk0sC1qhb7qA8,2602
|
4
|
-
batFramework/animatedSprite.py,sha256=Y77nakxq_UIAogeJRrs0VCK9n8teFHjsK5GE4sZ0q3U,6011
|
5
|
-
batFramework/audioManager.py,sha256=8tKSf4huZe5tgH98qHlKoFNjXPGDQNJho6PKfSCe7JA,3869
|
6
|
-
batFramework/camera.py,sha256=u1EPSitZ9mEEa32yQB7K6ywnWgWCSumbhrc4HRjimEY,9406
|
7
|
-
batFramework/character.py,sha256=IRsDclTTkA-sb51-LgcVjQW3slfA-8H_8wMA5LL-KlA,760
|
8
|
-
batFramework/constants.py,sha256=5PyZQZ4fCcLA8k_Upby9KGVF-3pnV2ZZ6t26CxiocPM,1102
|
9
|
-
batFramework/cutscene.py,sha256=Jh2g-zC3zaUSQoO2uVOsirWkuLAUFugu2T8B_ob9IPQ,4007
|
10
|
-
batFramework/cutsceneBlocks.py,sha256=3jtmTpV48NKCu-Qgjg7KN5KnwXn0kycIQ7t7G3RH3VE,4862
|
11
|
-
batFramework/dynamicEntity.py,sha256=6WcI6OveFNmrtOUYzmVMlT35Hz4MXeeRKzd1M3meL1Q,876
|
12
|
-
batFramework/easingController.py,sha256=4N8GIp1fsaWBUlDxXx3SMwOq1Mrhn10MZZIO51_CRnk,1677
|
13
|
-
batFramework/entity.py,sha256=34gYC6uEMmLkqWtoTG9bgMWRmHRSxhQfxXZKzWS7H2o,2127
|
14
|
-
batFramework/enums.py,sha256=re12gHw2g-5qtCNmGOfZbEC5cL5E8-FA79hfKGrI6-I,2078
|
15
|
-
batFramework/fontManager.py,sha256=iCVavr4hpn0T4xsaUAzdNd01j5ebpcj30fvFHzm1g-M,2246
|
16
|
-
batFramework/manager.py,sha256=LilVu1M42-tWNQeFjGXdPTTPHot1z8bRBoIFzNbxXUw,2754
|
17
|
-
batFramework/object.py,sha256=_3sfRxrjaiDuVyz5Yk-fYJqYx-Ehq_3-dA4eDTb9kok,3329
|
18
|
-
batFramework/particle.py,sha256=SD_DRqfhzlEeWlORDVPh1R__2_RplNcBujmqovN9Mww,3079
|
19
|
-
batFramework/renderGroup.py,sha256=_VDvmP4iB-XarFJo_Uh5YKwWq1cazHmOBmTXZkqKk40,2020
|
20
|
-
batFramework/resourceManager.py,sha256=0cOIAFXT7UzzvgHn9QkWcXsTp8H2bIS70NvvgpBL2_4,3554
|
21
|
-
batFramework/scene.py,sha256=2fXxwle68jzHwR2irKeWJYL95uAVmmU2edexo9p7fu4,12197
|
22
|
-
batFramework/sceneManager.py,sha256=Jb51KksIDrZrXUafs0bgX73tY-8rglWW89Co48YGdCM,8037
|
23
|
-
batFramework/scrollingSprite.py,sha256=PPEieAaFcOLE_Lm7cnm3xc7XyLKopCPcDbXEfyThO48,4133
|
24
|
-
batFramework/sprite.py,sha256=t_kSyUXGOSXQbSBwrKgBUTp5mITeFQbAKNzugjL5SgY,1625
|
25
|
-
batFramework/stateMachine.py,sha256=wC-5xbKvf-vGm_N16X9KhgMya5915GyVXL79uk5Bapw,1359
|
26
|
-
batFramework/tileset.py,sha256=3AJBWHx90PC43BdLYCBFm811XBrMvWoB-nsUgyo6s-I,1728
|
27
|
-
batFramework/time.py,sha256=dTZWwNMLtLBwSK4ARK9k8qPeZwpx3djhn4rErVorvu0,4941
|
28
|
-
batFramework/transition.py,sha256=-1cyk-7Fbm0U2Z4Y2jjpLHwJ2khM1VxIMcfk2bBEo-M,6655
|
29
|
-
batFramework/triggerZone.py,sha256=wIxkvO0cVVupQsJIPOD_-ofqwLnu1TLNK-n6oNXB1E8,579
|
30
|
-
batFramework/utils.py,sha256=kj0qaOwpwvvPMD1DyOQTZLYeV-1lJ0dobeU2E49Rwg8,5215
|
31
|
-
batFramework/gui/__init__.py,sha256=17ij7mrCBCoehqCq1PV6MSXPOfMoLPmrV_G8d6ax4Tk,687
|
32
|
-
batFramework/gui/button.py,sha256=Ozs6VKHf9FCQXQODDiLQywGN3hwfXtQ6s2I-rzdjnQg,429
|
33
|
-
batFramework/gui/clickableWidget.py,sha256=2vS9GFSI3uufYQbaosXxTMs81vyVfQGz71AeZmf8vcY,7049
|
34
|
-
batFramework/gui/container.py,sha256=wXjuhwCJc71KKSgY2cYgoRscAKB_hIw5N4njJk3Z9lk,5925
|
35
|
-
batFramework/gui/debugger.py,sha256=XogxF3J31GO-DZZn6YBrgwpYA5WjadzEfHkQHeMLU7o,3925
|
36
|
-
batFramework/gui/dialogueBox.py,sha256=3Z76l9obrpQImI8hjoBS_8G9sY3UILj2d3nJsaxtaI4,3221
|
37
|
-
batFramework/gui/draggableWidget.py,sha256=SKG7oMInZ_GTnrbv2T0aqlppuiuLX1tkVSCQJtRMlk8,1392
|
38
|
-
batFramework/gui/image.py,sha256=7IRvalA6QQz7SYI9h4y4-ryWa9EOxZM3sc10-OZyCPc,1770
|
39
|
-
batFramework/gui/indicator.py,sha256=leCvxsGxt00-oTn0N5MTmLstLH9uLG3RjQ02KlXtZCQ,1549
|
40
|
-
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
|
43
|
-
batFramework/gui/meter.py,sha256=RFzAhSzR3O-Pw0wjdfApWGWFQSJoYa4WohkiREDAAJc,2395
|
44
|
-
batFramework/gui/radioButton.py,sha256=rROl9mtUa-m220R5qZ85NBPZS7nPVx-azhqijJ-XhCo,2411
|
45
|
-
batFramework/gui/root.py,sha256=K75814ct6AF4LF8cyzmtUmnTmSflJRnHVMGbpUXwmkE,5084
|
46
|
-
batFramework/gui/shape.py,sha256=Ros_-Mm2Q2CFauZFqFPh1QyyuZnNmg7C2PYbs7Cq41k,9347
|
47
|
-
batFramework/gui/slider.py,sha256=5d3rfTYjDCDiM5prKu6DTemlGgji2FQ_vGuLzxoa5gU,8335
|
48
|
-
batFramework/gui/style.py,sha256=OeLbft0RkIslQ2IcZpBeF6TaQDONIoBcAHj_Bkh9gFw,131
|
49
|
-
batFramework/gui/styleManager.py,sha256=rALKJ-AmRbDAiyu8hVAYRAlkQxw677DiPoNKJZ4xtJ4,1245
|
50
|
-
batFramework/gui/textInput.py,sha256=aTegghN6O3djL0eBEEij9DsEuZ1MyE61P51IzaLUUEg,9324
|
51
|
-
batFramework/gui/toggle.py,sha256=XLFzCRaY7uOkKFVtR3y01wsNjLjZqrS1748IcvBRN2Q,3969
|
52
|
-
batFramework/gui/widget.py,sha256=HGusTCgh3oAjtvrShzn2YxhFTGgNLsqGGhNilvRx-oo,13883
|
53
|
-
batFramework/gui/constraints/__init__.py,sha256=qqXE8nnSrEvCSeHdqY8UYPZLetqdubFPI7IdZuh35QE,26
|
54
|
-
batFramework/gui/constraints/constraints.py,sha256=nyPew0HIJ24rl4JcdBjUYu2aFynTryN9wqv1wKCo4ew,26873
|
55
|
-
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/states.py,sha256=WeomVrQ10vHxVCj9Wnk1PcinKyb871uV910mQe287kI,5370
|
58
|
-
batframework-1.0.8a6.dist-info/LICENCE,sha256=A65iXbMDbOxQLDNOODJLqA7o5RxszYlEqIgNSzBQRf4,1073
|
59
|
-
batframework-1.0.8a6.dist-info/METADATA,sha256=tL3BWsupICivdA351ioSc-1NP6Dt5K0hCOigRl5iu6I,1694
|
60
|
-
batframework-1.0.8a6.dist-info/WHEEL,sha256=cVxcB9AmuTcXqmwrtPhNK88dr7IR_b6qagTj0UvIEbY,91
|
61
|
-
batframework-1.0.8a6.dist-info/top_level.txt,sha256=vxAKBIk1oparFTxeXGBrgfIO7iq_YR5Fv1JvPVAIwmA,13
|
62
|
-
batframework-1.0.8a6.dist-info/RECORD,,
|
File without changes
|