コード例 #1
0
ファイル: create.py プロジェクト: bsmi021/aws_rpggame
def create(event, context):
    logger.debug(f'Event received: {json.dumps(event)}')
    data = _get_body(event)

    try:
        characters = data['characters']

        character_list = [
            Character(id=x['id'],
                      attack_speed=x['attack_speed'],
                      crit_chance=x['crit_chance'],
                      curr_hp=x['curr_hp'],
                      prev_hp=x['curr_hp'],
                      base_hp=x['curr_hp'],
                      min_damage=x['min_damage'],
                      max_damage=x['max_damage']) for x in characters
        ]

        fight = FightModel(id=str(uuid4()),
                           created_at=datetime.utcnow(),
                           characters=character_list,
                           connectionId=data.get('connectionId', ''))

        enemy_data = data['enemy']
        enemy = Enemy(id=enemy_data['id'],
                      can_block=enemy_data['can_block'],
                      can_dodge=enemy_data['can_dodge'],
                      block_amt=enemy_data['block_amt'],
                      block_pct=enemy_data['block_pct'],
                      dodge_pct=enemy_data['dodge_pct'],
                      base_hp=enemy_data['hit_points'],
                      curr_hp=enemy_data['hit_points'],
                      prev_hp=enemy_data['hit_points'],
                      min_damage=enemy_data.get('min_damage', 0),
                      max_damage=enemy_data.get('max_damage', 0),
                      can_crit=enemy_data.get('can_crit', False),
                      crit_chance=enemy_data.get('crit_chance', 0),
                      attack_speed=enemy_data.get('attack_speed', 0))

        fight.enemy = enemy

        fight.save()

        for char in fight.characters:
            char_fight = CharacterFightModel(char_id=char.id,
                                             fight_id=fight.id,
                                             enemy_id=fight.enemy.id)
            char_fight.save()

        response = _get_response(200, json.dumps(fight, cls=ModelEncoder))

        logger.debug(f'Response: {json.dumps(response)}')

        return response
    except Exception as ex:
        logger.error(f'Could not create fight: {ex}')
        response = _get_response(500, 'Could not create a fight')

        return response
コード例 #2
0
ファイル: tests.py プロジェクト: bsmi021/aws_rpggame
    fight = FightModel(id=str(uuid4()))

    enemy = Enemy(id="1", can_block=True, can_dodge=True, block_pct=0.05,
                  block_amt=.54, dodge_pct=0.07, base_hp=2500, curr_hp=2500, prev_hp=2500)

    char1 = Character(id="1", attack_speed=1600, crit_chance=0.17,
                      curr_hp=1000, prev_hp=1500, min_damage=55, max_damage=128)
    char2 = Character(id="2", attack_speed=2700, crit_chance=0.27,
                      curr_hp=1250, prev_hp=3000, min_damage=65, max_damage=155)
    char3 = Character(id="3", attack_speed=1800, crit_chance=0.19,
                      curr_hp=1300, prev_hp=1800, min_damage=51, max_damage=132)
    char4 = Character(id="4", attack_speed=2100, crit_chance=0.21,
                      curr_hp=1199, prev_hp=3500, min_damage=35, max_damage=149)

    fight.enemy = enemy
    fight.characters = [char1, char2, char3, char4]

    fight.save()

    print(dict(fight))

    party = []
    for player in fight.characters:
        p = multiprocessing.Process(target=sim_player, args=(player, fight, ))
        party.append(p)

    px = multiprocessing.Process(target=get_fight, args=(fight.id, ))
    party.append(px)
    for p in party:
        p.start()