Skip to content

Commit

Permalink
bump version+fix bugs in platformer template
Browse files Browse the repository at this point in the history
  • Loading branch information
wkta committed Sep 24, 2024
1 parent 76a5fa0 commit f35b0c8
Show file tree
Hide file tree
Showing 8 changed files with 94 additions and 68 deletions.
20 changes: 10 additions & 10 deletions src/pyvcmdline/template_2/cartridge/World.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
from . import pimodules
from . import shared
from . import glvars
from .glvars import pyv
from .classes import Terrain

pyv = pimodules.pyved_engine

pygame = pyv.pygame


Expand Down Expand Up @@ -30,8 +30,8 @@ def objects(self):
return self._game_objects

def load_map(self, mapname):
shared.terrain = Terrain(pyv.vars.csvdata[mapname])
self.add_terrain_blocks(shared.terrain, terrain_origin=[-1324.0, -100.0])
glvars.terrain = Terrain(pyv.vars.csvdata[mapname])
self.add_terrain_blocks(glvars.terrain, terrain_origin=[-1324.0, -100.0])

def create_avatar(self, cam_ref):
player = pyv.new_from_archetype('player')
Expand All @@ -40,7 +40,7 @@ def create_avatar(self, cam_ref):
'accel_y': 0.0,
'gravity': 14.5,
'lower_block': None,
'body': pygame.rect.Rect(shared.SPAWN[0], shared.SPAWN[1], shared.AVATAR_SIZE, shared.AVATAR_SIZE),
'body': pygame.rect.Rect(glvars.SPAWN[0], glvars.SPAWN[1], glvars.AVATAR_SIZE, glvars.AVATAR_SIZE),
'camera': cam_ref,
'controls': {'up': False, 'down': False, 'left': False, 'right': False}
})
Expand All @@ -60,9 +60,9 @@ def add_terrain_blocks(self, terrain_obj, terrain_origin=None):

for bcoords, btype in block_coords_to_btype.items():
bcx, bcy = bcoords
bcx *= shared.BLOCKSIZE
bcy *= shared.BLOCKSIZE
rrect = pygame.rect.Rect(basex + bcx, basey + bcy, shared.BLOCKSIZE, shared.BLOCKSIZE)
bcx *= glvars.BLOCKSIZE
bcy *= glvars.BLOCKSIZE
rrect = pygame.rect.Rect(basex + bcx, basey + bcy, glvars.BLOCKSIZE, glvars.BLOCKSIZE)
self.add_game_obj(
{'key': 'block', 'rect': rrect}
)
Expand All @@ -79,7 +79,7 @@ def add_terrain_blocks(self, terrain_obj, terrain_origin=None):
pyv.new_from_archetype('mob_block'), {
'body': rrect,
'speed': [0.0, 0.0],
'bounds': [tmp - shared.BLOCKSIZE*4, tmp],
'bounds': [tmp - glvars.BLOCKSIZE*4, tmp],
'horz_flag': btype == 2,
}
)
Empty file.
16 changes: 8 additions & 8 deletions src/pyvcmdline/template_2/cartridge/classes.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import csv
from io import StringIO
from . import pimodules
from . import shared
from . import glvars
from .glvars import pyv


pyv = pimodules.pyved_engine
pygame = pyv.pygame


Expand All @@ -12,9 +12,9 @@ class Camera:

def __init__(self, position, world_ref):
x, y = position
self.viewport = pygame.Rect(x, y, shared.WIDTH, shared.HEIGHT)
self.width = shared.WIDTH
self.height = shared.HEIGHT
self.viewport = pygame.Rect(x, y, glvars.WIDTH, glvars.HEIGHT)
self.width = glvars.WIDTH
self.height = glvars.HEIGHT
self.world = world_ref

for obj in self.world.objects:
Expand Down Expand Up @@ -77,8 +77,8 @@ def __init__(self, mapdata):
self.game_over = False

self.collidable_tiles = {'x', 'y'}
self.screen_center_x = shared.WIDTH // 2
self.screen_center_y = shared.HEIGHT // 2
self.screen_center_x = glvars.WIDTH // 2
self.screen_center_y = glvars.HEIGHT // 2


# class Player:
Expand Down
11 changes: 5 additions & 6 deletions src/pyvcmdline/template_2/cartridge/gamedef.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
import os

from . import pimodules
from . import shared
from . import glvars
from .glvars import pyv
from . import systems
from .World import World
from .classes import Camera


pyv = pimodules.pyved_engine
pyv.bootstrap_e()
pygame = pyv.pygame
ts_prev_frame = None
Expand All @@ -17,7 +16,7 @@
def troid_init(vms=None):
pyv.init()
screen = pyv.get_surface()
shared.screen = screen
glvars.screen = screen
pyv.define_archetype('player', (
'speed', 'accel_y', 'gravity', 'lower_block', 'body', 'camera', 'controls'
))
Expand All @@ -26,7 +25,7 @@ def troid_init(vms=None):

world = World(2128.0, 1255.0)
world.load_map('my_map')
shared.world = world
glvars.world = world
world.add_game_obj(
{'key': 'origin'}
)
Expand All @@ -38,7 +37,7 @@ def troid_init(vms=None):

@pyv.declare_update
def troid_update(timeinfo):
shared.t_now=timeinfo
glvars.t_now=timeinfo
pyv.systems_proc(pyv.all_entities(), None)
pyv.flip()

Expand Down
47 changes: 47 additions & 0 deletions src/pyvcmdline/template_2/cartridge/glvars.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# ------
# engine-related code, do not modify!
# --------


registry = set()
libname_to_alias_mapping = dict()


def get_alias(origin_lib_name):
return libname_to_alias_mapping[origin_lib_name]


def has_registered(origin_lib_name):
return origin_lib_name in libname_to_alias_mapping


def register_lib(alias, libname, value): # handy for dependency injection
global registry, libname_to_alias_mapping
libname_to_alias_mapping[libname] = alias
if alias in registry:
raise KeyError(f'Cannot register lib "{alias}" more than once!')
globals()[alias] = value
registry.add(alias)


# ------
# custom code the gamedev added
# --------

screen = None
t_now = None
t_last_update = None
world = None
terrain = None

WIDTH = 960
HEIGHT = 720
SCR_SIZE = (WIDTH, HEIGHT)

BLOCKSIZE = 40
BLOCK_SPEED = 100.0
AVATAR_SIZE = 38
AV_SPEED = 330.0
JUMP_POWER = 582.0
SPEED_CAP = 700.0
SPAWN = -1080, 400
25 changes: 0 additions & 25 deletions src/pyvcmdline/template_2/cartridge/shared.py

This file was deleted.

41 changes: 23 additions & 18 deletions src/pyvcmdline/template_2/cartridge/systems.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
from . import shared
from . import pimodules
from . import glvars
from .glvars import pyv


pyv = pimodules.pyved_engine
pyv.bootstrap_e()

__all__ = [
Expand Down Expand Up @@ -43,17 +42,17 @@ def steering_sys(entities, components):
ctrl['down'] = activekeys[pg.K_DOWN]

if ctrl['right']:
ent['speed'][0] = shared.AV_SPEED
ent['speed'][0] = glvars.AV_SPEED

if ctrl['left']:
ent['speed'][0] = -shared.AV_SPEED
ent['speed'][0] = -glvars.AV_SPEED

if not (ctrl['left'] or ctrl['right']):
ent['speed'][0] = 0.0

if ent['lower_block']:
if not prevup_key_value and ctrl['up']:
ent['accel_y'] -= shared.JUMP_POWER
ent['accel_y'] -= glvars.JUMP_POWER
ent['lower_block'] = None


Expand All @@ -68,7 +67,7 @@ def automob_sys(entities, components):

if mblo['speed'][k] == 0.0:
# init the movement
mblo['speed'][k] = -shared.BLOCK_SPEED
mblo['speed'][k] = -glvars.BLOCK_SPEED
continue

adhoc_coord = rrect.x if mblo['horz_flag'] else rrect.y
Expand All @@ -93,28 +92,34 @@ def cameratracking_sys(entities, components):


def physics_sys(entities, components):
if shared.t_last_update is None:
if glvars.t_last_update is None:
dt = 0.0
else:
dt = shared.t_now - shared.t_last_update
shared.t_last_update = shared.t_now
dt = glvars.t_now - glvars.t_last_update
glvars.t_last_update = glvars.t_now

player = pyv.find_by_archetype('player')[0]

# move all mobile blocks
mob_blocks = pyv.find_by_archetype('mob_block')

for mblock in mob_blocks:
vx, vy = mblock['speed']
px, py = mblock['body'].topleft

mblock['body'].left = px + vx * dt
mblock['body'].top = py + vy * dt

if player['lower_block'] == mblock:
# lock feet on the movin platform
player['speed'][1] = 0.0
player['body'].bottom = mblock['body'].top

# player-related
player['speed'][1] += player['accel_y']
if abs(player['speed'][1]) > shared.SPEED_CAP:
if abs(player['speed'][1]) > glvars.SPEED_CAP:
sign = -1 if player['speed'][1] < 0 else 1
player['speed'][1] = sign * shared.SPEED_CAP
player['speed'][1] = sign * glvars.SPEED_CAP

org_x, org_y = player['body'].topleft
vx, vy = player['speed']
Expand Down Expand Up @@ -167,7 +172,7 @@ def rendering_sys(entities, components):
"""
displays everything that can be rendered
"""
scr = shared.screen
scr = glvars.screen

scr.fill((0, 27, 0))

Expand Down Expand Up @@ -195,7 +200,7 @@ def disp(scr_ref, ent, color='blue', width=None, img=None):
disp(scr, b, 'orange')

# draw world edges (need to show where its forbidden to go!)
a, b = shared.world.limits
a, b = glvars.world.limits
binf_x, binf_y = -a, -b
bsup_x, bsup_y = a, b
binf_x -= cam.viewport.x
Expand All @@ -217,17 +222,17 @@ def _proc_unload_load():
player = pyv.find_by_archetype('player')[0]
camref = player['camera']
pyv.wipe_entities()
shared.world.load_map(player['next_map'])
shared.world.create_avatar(camref)
glvars.world.load_map(player['next_map'])
glvars.world.create_avatar(camref)


def teleport_sys(entities, components):
player = pyv.find_by_archetype('player')[0]
bsup_x, bsup_y = shared.world.limits
bsup_x, bsup_y = glvars.world.limits
binf_x = -1.0*bsup_x
binf_y = -1.0*bsup_y
x, y = player['body'].topleft
if y <= binf_y or y > bsup_y or x < binf_x or x > bsup_x:
player['body'].topleft = shared.SPAWN[0], shared.SPAWN[1]
player['body'].topleft = glvars.SPAWN[0], glvars.SPAWN[1]
# reset player speed when he respawns...
player['speed'][0], player['speed'][1] = [0.0, 0.0]
2 changes: 1 addition & 1 deletion src/pyved_engine/vars.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

# below is a read-only value,
# to retrieve this value from outside you can call pyv.get_version()
ENGINE_VERSION_STR = '24.9a1'
ENGINE_VERSION_STR = '24.9a2'

# deprecated but mandatory for web ctx
STD_SCR_SIZE = [960, 720]
Expand Down

0 comments on commit f35b0c8

Please sign in to comment.