gammatools/app/routes/encounter.py

37 lines
1.5 KiB
Python

from flask import request
from flask_restx import Resource, Namespace, reqparse
from app.functions.get_creature import get_creature
from app.functions.roll_encounter import roll_encounter
namespace = Namespace('gameplay', description='Gamma World Game Play')
parser = reqparse.RequestParser()
parser.add_argument('terrain', type=str, default='clear',
help='The terrain being traversed. ("clear", "mountains", "forest", "desert",'
'"watery", "ruins", "deathlands")')
@namespace.route('/encounter') # resolves to: /gameplay/encounter
class RollEncounter(Resource):
@namespace.expect(parser)
def get(self):
terrain = request.args.get('terrain', default="clear", type=str)
valid_terrains = ["clear", "mountains", "forest", "desert", "watery", "ruins", "deathlands"]
if terrain:
if terrain.lower() in valid_terrains:
details = dict()
encounter = roll_encounter(terrain.lower())
details["name"] = encounter["encounter"]
creature_stats = get_creature(encounter["encounter"])
if creature_stats is not None:
details.update(creature_stats)
return details, 200
else:
return {
'error': 'Invalid terrain type provided.',
'valid_terrains': valid_terrains
}, 400
else:
return {'error': 'No terrain type provided', 'valid_terrains': valid_terrains}, 400