diff --git a/in_game/simulations.py b/in_game/simulations.py new file mode 100644 index 0000000..2d3e99a --- /dev/null +++ b/in_game/simulations.py @@ -0,0 +1,66 @@ +import discord +import helpers +import logging +import random + +from in_game import data_cache +from dataclasses import asdict, fields + + +def get_result(pitcher: data_cache.PitchingWrapper, batter: data_cache.BattingWrapper): + which = random.choice(['pitcher', 'batter']) + logging.info(f'in_game.simulations - get_result - which: {which}') + + unused_fields = ['avg', 'obp', 'slg', 'pull_rate', 'center_rate', 'slap_rate'] + pit_hand = pitcher.card.hand + bat_hand = batter.card.hand + + if which == 'pitcher': + logging.info(f'in_game.simulations - get_result - grabbing pitcher card chances') + ch_data = pitcher.ratings_vl if bat_hand.upper() == 'L' else pitcher.ratings_vr + logging.info(f'ch_data: {ch_data}') + # for field in fields(ch_data): + # if field.name not in unused_fields: + # ch_results.append(field.name) + # ch_probs.append(getattr(data_cache.PitchingRatings, field.name)) + else: + logging.info(f'in_game.simulations - get_result - grabbing batter card chances') + ch_data = batter.ratings_vl if pit_hand.upper() == 'L' else batter.ratings_vr + logging.info(f'ch_data: {ch_data}') + # for field in fields(ch_data): + # if field.name not in unused_fields: + # ch_results.append(field.name) + # ch_probs.append(getattr(data_cache.BattingRatings, field.name)) + ch_dict = {k: v for k, v in asdict(ch_data).items()} + for x in unused_fields: + if x in ch_dict: + del ch_dict[x] + + ch_results = list(ch_dict.keys()) + ch_probs = list(ch_dict.values()) + + logging.info(f'ch_results: {ch_results}') + logging.info(f'ch_probs: {ch_probs}') + result = random.choices(ch_results, ch_probs) + logging.info(f'result: {result}') + + return result[0] + + +def get_pos_embeds(this_pitcher, this_batter, pit_card, bat_card): + pit_desc = helpers.player_desc(this_pitcher) + bat_desc = helpers.player_desc(this_batter) + embed = discord.Embed(color=int(helpers.SBA_COLOR, 16), title=f'{pit_desc} vs. {bat_desc}') + embed.set_image(url=helpers.player_pcard(this_pitcher)) + embed2 = discord.Embed(color=int(helpers.SBA_COLOR, 16)) + embed2.set_image(url=helpers.player_bcard(this_batter)) + embed3 = discord.Embed(color=int(helpers.SBA_COLOR, 16)) + + result = get_result(pit_card, bat_card) + + embed3.add_field(name='Pitcher', value=pit_desc) + embed3.add_field(name='Batter', value=bat_desc) + embed3.add_field(name='Result', value=result, inline=False) + + return [embed, embed2, embed3] +