90 lines
No EOL
2.6 KiB
Python
90 lines
No EOL
2.6 KiB
Python
#
|
|
# Petcard Application - v1.0
|
|
# Copyright (c) 2025 FreedTapestry21
|
|
#
|
|
# Licensed under the MIT license
|
|
#
|
|
|
|
#
|
|
# Importing libraries
|
|
#
|
|
|
|
import sys, json, machine, _thread, time, random
|
|
|
|
# Import SYSTEM module
|
|
import system
|
|
|
|
#
|
|
# Classes
|
|
#
|
|
|
|
# Main system & application controller
|
|
class Application:
|
|
def __init__(self, config_manager, logger, pet, display_driver, display, input_controller, ui, power):
|
|
self.config_manager = config_manager
|
|
self.logger = logger
|
|
self.pet = pet
|
|
self.display_driver = display_driver
|
|
self.display = display
|
|
self.input_controller = input_controller
|
|
self.ui = ui
|
|
self.power = power
|
|
|
|
# Initializes all system components
|
|
def initialize(self):
|
|
self.logger.log("Initializing Petcard System...", 3)
|
|
self.display.initialize()
|
|
self.logger.log("Initializing Petcard health manager...", 3)
|
|
_thread.start_new_thread(self._pet_health_manager, ())
|
|
self.logger.log("System initialization complete", 3)
|
|
|
|
# Main system loop
|
|
def run(self):
|
|
try:
|
|
self.initialize()
|
|
|
|
# Create main menu
|
|
main_menu_items = [
|
|
system.MenuItem("Food", self._action, "f"),
|
|
system.MenuItem("Drinks", self._action, "d"),
|
|
system.MenuItem("Play", self._action, "p"),
|
|
system.MenuItem("Save", self._save),
|
|
system.MenuItem("Sleep", self.power.sleep)
|
|
]
|
|
|
|
main_menu = system.Menu(main_menu_items, self.logger)
|
|
|
|
# Main menu loop
|
|
while True:
|
|
selected_item = self.ui.show_menu(main_menu)
|
|
if selected_item:
|
|
result = selected_item.execute()
|
|
|
|
except Exception as e:
|
|
self.logger.log(f"System error: {e}", 0)
|
|
self.power.shutdown("System encountered an error")
|
|
|
|
# Defines what to do when a certain action is triggered
|
|
def _action(self, act):
|
|
if act == "f":
|
|
self.pet.nom("pancakes", 10)
|
|
elif act == "d":
|
|
self.pet.slurp("water", 10)
|
|
elif act == "p":
|
|
self.pet.play("petted", 10)
|
|
else: self.logger.log(f"Invalid action {act}", 1)
|
|
|
|
return
|
|
|
|
def _save(self):
|
|
self.logger.log("Saving game progression...", 4)
|
|
self.config_manager.save_config()
|
|
self.logger.log("Game progression has been saved!", 4)
|
|
|
|
def _pet_health_manager(self):
|
|
while True:
|
|
time.sleep(random.randint(10, 60))
|
|
self.pet.wombicombi()
|
|
#
|
|
# End Of File (EOF)
|
|
# |