37 lines
1.5 KiB
Python
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
|