Add package loading so not everything is defined in __main__ anymore
Signed-off-by: Alek Ratzloff <alekratz@gmail.com>
This commit is contained in:
@@ -1,107 +1,26 @@
|
||||
from agame.action import *
|
||||
from agame.game import *
|
||||
from agame.item import *
|
||||
from agame.room import *
|
||||
from agame.trigger import *
|
||||
import argparse
|
||||
import importlib.util
|
||||
from pathlib import Path
|
||||
import sys
|
||||
|
||||
|
||||
# TODO - take a custom module name that has:
|
||||
# .database
|
||||
# .game
|
||||
# so that you can just RUN it
|
||||
# Something similar to wsgi using "app" in the passed module
|
||||
|
||||
|
||||
# This is the *game* here
|
||||
database = Database()
|
||||
database.add_items(
|
||||
Item(
|
||||
id="glowing_rock",
|
||||
name="glowing rock",
|
||||
desc="This rock is glowing.",
|
||||
synonyms=("rock",),
|
||||
room_desc="You see a ((glowing rock)). You have **got** to have it.",
|
||||
triggers={
|
||||
GET: [
|
||||
PrintAction(
|
||||
"You try to pick up the rock, but it slips out of your greasy hands.",
|
||||
"Maybe you should wash your hands, you disgusting little man.",
|
||||
)
|
||||
],
|
||||
LOOK: [PrintAction("Man, that rock looks awesome.")],
|
||||
},
|
||||
),
|
||||
Item(
|
||||
id="cell_door",
|
||||
name="door",
|
||||
room_desc="A ((door)) sits on the far wall.",
|
||||
triggers={
|
||||
GET: [PrintAction("The door is pretty attached to its wall.")],
|
||||
OPEN: [
|
||||
CheckVarAction(
|
||||
"cell_door_open",
|
||||
Compare.EQUALS,
|
||||
True,
|
||||
yes=[
|
||||
PrintAction(
|
||||
"It's already open. You push on the door even //more//, just in case."
|
||||
),
|
||||
SleepAction(1.0),
|
||||
PrintAction("..."),
|
||||
SleepAction(1.0),
|
||||
PrintAction("Yup, still open."),
|
||||
],
|
||||
no=[
|
||||
SetVarAction("cell_door_open", True),
|
||||
PrintAction("The door swings open, thanks to you."),
|
||||
],
|
||||
)
|
||||
],
|
||||
CLOSE: [
|
||||
CheckVarAction(
|
||||
"cell_door_open",
|
||||
Compare.EQUALS,
|
||||
True,
|
||||
yes=[
|
||||
PrintAction("You close that door. Nice job."),
|
||||
SetVarAction("cell_door_open", False),
|
||||
],
|
||||
no=[PrintAction("The door is already closed.")],
|
||||
)
|
||||
],
|
||||
LOOK: [
|
||||
CheckVarAction(
|
||||
"cell_door_open",
|
||||
Compare.EQUALS,
|
||||
True,
|
||||
yes=[PrintAction("It's a door, wide open, because you opened it.")],
|
||||
no=[PrintAction("A closed door. You can change this.")],
|
||||
)
|
||||
],
|
||||
},
|
||||
),
|
||||
# Parse args
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Run a game",
|
||||
)
|
||||
database.add_rooms(
|
||||
Room(
|
||||
id="start",
|
||||
name="Test room",
|
||||
desc="You're in ((Todd's Test Cell)).",
|
||||
items=[
|
||||
database.items["glowing_rock"].create_inst(),
|
||||
database.items["cell_door"].create_inst(),
|
||||
],
|
||||
),
|
||||
parser.add_argument(
|
||||
"PACKAGE", type=str, help="The Python package that contains the game to run."
|
||||
)
|
||||
args = parser.parse_args()
|
||||
|
||||
# Build the game state
|
||||
game = Game(
|
||||
database=database,
|
||||
room=database.rooms["start"],
|
||||
vars={
|
||||
"cell_door_open": False,
|
||||
},
|
||||
)
|
||||
# Get package to run
|
||||
package = args.PACKAGE
|
||||
|
||||
# Load game module
|
||||
game_module = importlib.import_module(package)
|
||||
game = game_module.game # type: ignore
|
||||
|
||||
# Run
|
||||
game.print_room()
|
||||
while True:
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user