Move all root .py files into playscii/ package directory. Rename playscii.py to app.py, add __main__.py entry point. Convert bare imports to relative (within package) and absolute (in formats/ and games/). Data dirs stay at root.
56 lines
1.7 KiB
Python
56 lines
1.7 KiB
Python
import math
|
|
|
|
from games.maze.scripts.rooms import OutsideRoom
|
|
from playscii.game_util_objects import BlobShadow, Player
|
|
|
|
|
|
class PlayerBlobShadow(BlobShadow):
|
|
z = 0
|
|
fixed_z = True
|
|
scale_x = scale_y = 0.5
|
|
offset_y = -0.5
|
|
|
|
def pre_first_update(self):
|
|
BlobShadow.pre_first_update(self)
|
|
# TODO: figure out why class default scale isn't taking?
|
|
self.set_scale(0.5, 0.5, 1)
|
|
|
|
|
|
class MazePlayer(Player):
|
|
art_src = "player"
|
|
move_state = "stand"
|
|
col_radius = 0.5
|
|
# TODO: setting this to 2 fixes tunneling, but shouldn't slow down the player!
|
|
fast_move_steps = 2
|
|
attachment_classes = {"shadow": "PlayerBlobShadow"}
|
|
|
|
def __init__(self, world, obj_data=None):
|
|
Player.__init__(self, world, obj_data)
|
|
self.held_object = None
|
|
|
|
def pick_up(self, pickup):
|
|
# drop any other held item first
|
|
if self.held_object:
|
|
self.drop(self.held_object, pickup)
|
|
self.held_object = pickup
|
|
pickup.picked_up(self)
|
|
|
|
def drop(self, pickup, new_pickup=None):
|
|
# drop pickup in place of one we're swapping with, else drop at feet
|
|
if new_pickup:
|
|
pickup.x, pickup.y = new_pickup.x, new_pickup.y
|
|
else:
|
|
pickup.x, pickup.y = self.x, self.y
|
|
pickup.holder = None
|
|
|
|
def use_item(self):
|
|
self.world.hud.post_msg(self.held_object.used_message)
|
|
self.held_object.used(self)
|
|
|
|
def update(self):
|
|
Player.update(self)
|
|
if type(self.world.current_room) is OutsideRoom:
|
|
self.z = 5 + math.sin(self.world.get_elapsed_time() / 300) * 2
|
|
else:
|
|
# slightly above blob shadow
|
|
self.z = 0.01
|