py-vpet/vpet.py
2024-12-12 03:34:02 +01:00

183 lines
4.1 KiB
Python

from PIL import Image
class Rotate:
down = 0.0
right = 90.0
up = 180.0
left = 270.0
class Dialogs:
dreaming = []
class Frames:
"""These strings do match to the PNGs of the VPet which are representation the frames of an animation"""
def __init__(self):
self.idle_1 = Image.open('pets_sprites/demonite/idle1.png')
self.idle_2 = Image.open('pets_sprites/demonite/idle2.png')
self.idle_3 = Image.open('pets_sprites/demonite/idle3.png')
self.move_1 = Image.open('pets_sprites/demonite/moving_1.png')
self.move_2 = Image.open('pets_sprites/demonite/moving_2.png')
self.hearts_1 = Image.open('pets_sprites/demonite/heart.png')
self.floating = Image.open('pets_sprites/demonite/floating.png')
class Animations:
@staticmethod
def idle_1(rotation: float):
pass
@staticmethod
def move_right(rotation: float):
pass
@staticmethod
def move_left(rotation: float):
pass
@staticmethod
def move_up(rotation: float):
pass
@staticmethod
def move_down(rotation: float):
pass
@staticmethod
def sleep(rotation: float):
pass
@staticmethod
def wakeup(rotation: float):
pass
class Activity:
def __init__(self):
self.is_idle = True
self.is_sleeping = False
self.is_dreaming = False
self.is_moving = False
self.is_talking = False
self.is_thinking = False
self.is_interacting_with_user = False
def set_idle(self):
self.is_idle = True
self.is_sleeping = False
self.is_dreaming = False
self.is_moving = False
self.is_talking = False
self.is_thinking = False
self.is_interacting_with_user = False
def set_sleeping(self):
self.is_idle = False
self.is_sleeping = True
self.is_moving = False
self.is_talking = False
self.is_thinking = False
def set_dreaming(self):
self.is_idle = False
self.is_dreaming = True
self.is_moving = False
self.is_talking = False
self.is_thinking = False
def set_moving(self):
self.is_idle = False
self.is_moving = True
self.is_sleeping = False
self.is_dreaming = False
def set_talking(self):
self.is_idle = False
self.is_talking = True
self.is_thinking = False
self.is_sleeping = False
def set_thinking(self):
self.is_idle = False
self.is_talking = False
self.is_thinking = True
self.is_sleeping = False
def set_interacting_with_user(self):
self.is_idle = False
self.is_sleeping = False
self.is_dreaming = False
self.is_moving = False
self.is_talking = False
self.is_thinking = False
self.is_interacting_with_user = True
class VPet:
def __init__(self, move, pos, draw, x=0, y=0, screen=1):
self.screen = screen
self.pos = pos
self.x_postion = x
self.y_postion = y
self.x_destination = 0
self.y_destination = 0
self.rotation = Rotate.up
self.move = move
self.draw = draw
self.frames = Frames()
self.activity = Activity()
def action_loop(self):
print(f'Interacting with user: {self.activity.is_interacting_with_user}')
if self.activity.is_interacting_with_user: return
if self.activity.is_sleeping:
pass
def choose_walk_destination(self):
"""Decide, where the VPet should move to"""
pass
def choose_activity(self):
"""Decide, what kind of activity should be done"""
pass
def walk(self, x: int, y: int):
"""Move the VPet to xy"""
self.activity.is_moving = True
def sleep(self):
"""Set the VPet asleep"""
self.activity.set_sleeping()
Animations.sleep(rotation=self.rotation)
def wakeup(self):
"""Wake up the VPet from sleep"""
if not self.activity.is_sleeping: return
Animations.wakeup(rotation=self.rotation)
self.activity.set_idle()
def blink_eyes(self):
"""Make the VPet blink"""
pass
def detect_orientation(self):
"""Detect the desired rotation based on the postion on the screen, like left border, bottom, etc"""
pass
def talk(self, message: str):
"""Make the VPet talk to the user via a speech bubble"""
pass
def think(self):
"""Make the VPet think"""
pass
def dream(self):
"""Make the VPet dream"""
pass