Starting games functional

This commit is contained in:
Cal Corum 2023-03-19 17:53:59 -05:00
parent f9e222d2f1
commit ae18790279
5 changed files with 85 additions and 31 deletions

View File

@ -223,6 +223,8 @@ def build_lineup(team_object: dict, game_id: int, league_name: str, vs_hand: str
set_params = MINOR_CARDSET_PARAMS
elif league_name == 'major-league':
set_params = MAJOR_CARDSET_PARAMS
elif league_name == 'gauntlet-1':
set_params = MINOR_CARDSET_PARAMS
# Pull players sorted by current cost
try:

View File

@ -7,6 +7,7 @@ import discord
import pygsheets
import requests
import gauntlets
from helpers import *
from db_calls import *
from discord import Member
@ -278,10 +279,9 @@ class Admins(commands.Cog):
# )
# await interaction.edit_original_response(content=f'The choice was: {choice}')
pass
# Delete cards
# Delete packs
# Delete team
await interaction.response.defer()
draft_team = db_get('teams', params=[('abbrev', f'Gauntlet-NCB')])
await gauntlets.wipe_team(draft_team['teams'][0], interaction)
# @commands.command(name='refresh')
# @commands.is_owner()

View File

@ -1450,7 +1450,7 @@ class Economy(commands.Cog):
values=[[f'{team["id"]}'], [f'\'{team_hash(team)}']]
)
if copy_rosters and team['gsheet'] != 'None':
if copy_rosters and team['gsheet'].lower() != 'none':
old_sheet = sheets.open_by_key(team['gsheet'])
r_sheet = old_sheet.worksheet_by_title(f'My Rosters')
roster_ids = r_sheet.range('B3:B80')

View File

@ -162,10 +162,10 @@ class Gameplay(commands.Cog):
outs = ''
game_string = f'```\n' \
f'{away_team["abbrev"]: ^4}{curr_play.away_score: ^3} {second_base}' \
f'{away_team["abbrev"].replace("Gauntlet-", ""): ^4}{curr_play.away_score: ^3} {second_base}' \
f'{inning: >10}\n' \
f'{home_team["abbrev"]: ^4}{curr_play.home_score: ^3} {third_base} {first_base}' \
f'{outs: >8}\n```'
f'{home_team["abbrev"].replace("Gauntlet-", ""): ^4}{curr_play.home_score: ^3} {third_base} ' \
f'{first_base}{outs: >8}\n```'
return game_string
@ -1368,13 +1368,13 @@ class Gameplay(commands.Cog):
except Exception as e:
logging.error(f'Failed to run {event_name} draft for the {main_team["sname"]}: {e}')
draft_team = db_get('teams', params=[('abbrev', f'Gauntlet-{main_team["abbrev"]}')])
for x in draft_team['teams']:
db_delete('teams', object_id=x['id'])
await gauntlets.wipe_team(draft_team, interaction)
await interaction.channel.send(
content=f'Shoot - it looks like we ran into an issue running the draft. I had to clear it all out '
f'for now. I let {get_cal_user(interaction).mention} know what happened so he better '
f'fix it quick.'
)
return
await interaction.channel.send(
f'Good luck, champ in the making! To start playing, follow these steps:\n\n'
@ -1460,7 +1460,7 @@ class Gameplay(commands.Cog):
else:
patch_game(this_game.id, home_roster_num=69, ai_team='home')
starter = gauntlets.get_starting_pitcher(opponent, this_game, this_event)
starter = gauntlets.get_starting_pitcher(opponent, this_game, this_event, this_run)
all_lineups.append(starter)
this_card = db_get(f'cards', object_id=starter['card_id'])
@ -2067,13 +2067,13 @@ class Gameplay(commands.Cog):
@app_commands.describe(
team_abbrev='The 2- to 4-digit abbreviation for the team being set',
roster_num='1, 2, or 3: 1 is Primary, 2 is Secondary, 3 is Tertiary; Enter 1 for AI team',
lineup_num='1 or 2: 1 is top lineup in sheet, 2 is bottom; Enter 1 for AI team',
lineup_num='Technically not a number anymore, huh?',
sp_card_id='Light gray number to the left of the pitcher\'s name on your depth chart'
)
@app_commands.checks.has_any_role(PD_PLAYERS_ROLE_NAME)
async def read_lineup_command(
self, interaction: discord.Interaction, team_abbrev: str, roster_num: Literal[1, 2, 3],
lineup_num: Literal[1, 2], sp_card_id: int):
lineup_num: Literal['v Right', 'v Left'], sp_card_id: int):
this_game = get_one_game(channel_id=interaction.channel_id, active=True)
if not this_game:
await interaction.response.send_message(f'I dont\'t see an active game in this channel!')
@ -2085,9 +2085,12 @@ class Gameplay(commands.Cog):
return
owner_team = await get_game_team(this_game, interaction.user.id)
lineup_team = await get_game_team(this_game, team_abbrev=team_abbrev)
if 'gauntlet' in this_game.game_type:
lineup_team = await get_game_team(this_game, team_abbrev=f'Gauntlet-{owner_team["abbrev"]}')
else:
lineup_team = await get_game_team(this_game, team_abbrev=team_abbrev)
if not owner_team['id'] in [this_game.away_team_id, this_game.home_team_id]:
if owner_team['gmid'] != lineup_team['gmid']:
await interaction.response.send_message('Bruh. Only GMs of the active teams can set lineups.')
return
if not lineup_team['id'] in [this_game.away_team_id, this_game.home_team_id]:
@ -2104,12 +2107,11 @@ class Gameplay(commands.Cog):
return
await interaction.response.send_message(f'Let\'s put this lineup card together...')
lineup_cells = get_roster_lineups(
lineup_team,
self.bot,
roster_num,
lineup_num if not lineup_team['is_ai'] else 1
)
if lineup_num == 'v Right':
l_num = 1
else:
l_num = 2
lineup_cells = get_roster_lineups(lineup_team, self.bot, roster_num, l_num)
all_lineups = []
all_pos = []
@ -2323,14 +2325,16 @@ class Gameplay(commands.Cog):
this_game = get_one_game(channel_id=interaction.channel.id, active=True)
if not this_game:
await interaction.response.send_message('I don\'t see a game in this channel.')
await interaction.edit_original_response(content='I don\'t see a game in this channel.')
return False, False, False
owner_team = await get_game_team(this_game, interaction.user.id)
if 'gauntlet' in this_game.game_type:
owner_team = await get_game_team(this_game, team_abbrev=f'Gauntlet-{owner_team["abbrev"]}')
if not owner_team['id'] in [this_game.away_team_id, this_game.home_team_id]:
logging.info(f'{interaction.user.display_name} tried to run a command in Game {this_game.id} when they '
f'aren\'t a GM in the game.')
await interaction.response.send_message('Bruh. Only GMs of the active teams can log plays.')
await interaction.edit_original_response(content='Bruh. Only GMs of the active teams can log plays.')
# return this_game, False, False
this_play = get_current_play(this_game.id)
@ -2348,7 +2352,7 @@ class Gameplay(commands.Cog):
if not this_play.pitcher:
logging.info(f'{interaction.user.display_name} tried to run a command in Game {this_game.id} without a '
f'pitcher in the lineup.')
await interaction.response.send_message(f'Please sub in a pitcher before logging a new play.')
await interaction.edit_original_response(content=f'Please sub in a pitcher before logging a new play.')
this_play = None
return this_game, owner_team, this_play

View File

@ -8,8 +8,34 @@ from peewee import DatabaseError
import ai_manager
import helpers
from helpers import RARITY
from db_calls import db_get, db_post
from helpers import RARITY, get_cal_user
from db_calls import db_get, db_post, db_delete
async def wipe_team(this_team, interaction: discord.Interaction):
await interaction.edit_original_response(content=f'Looking for cards...')
# Delete cards
c_query = db_get('cards', params=[('team_id', this_team['id'])])
await interaction.edit_original_response(content=f'Found {c_query["count"]} cards; deleting cards...')
for x in c_query['cards']:
db_delete('cards', object_id=x['id'])
# Delete packs
await interaction.edit_original_response(content=f'Done deleting cards; searching for packs...')
p_query = db_get('packs', params=[('team_id', this_team['id'])])
await interaction.edit_original_response(content=f'Found {p_query["count"]} packs; deleting packs...')
for x in p_query['packs']:
db_delete('packs', object_id=x['id'])
# Delete team
await interaction.edit_original_response(content=f'Done deleting packs; now deleting team...')
db_delete('teams', object_id=this_team['id'])
await interaction.edit_original_response(content=f'Team is deleted; now finding the run...')
r_query = db_get('gauntletruns', params=[('team_id', this_team['id']), ('is_active', True)])
await interaction.edit_original_response(content=f'Found {r_query["count"]} runs; deleting now...')
for x in r_query['runs']:
db_delete('gauntletruns', object_id=x['id'])
def get_game_code(this_team, this_event, this_run):
@ -29,10 +55,31 @@ def is_home_team(this_team, this_event, this_run):
def get_opponent(this_team, this_event, this_run):
if this_event['id'] == 1:
gp = games_played(this_run)
if gp == 1:
return db_get('teams', object_id=3, none_okay=False)
if gp == 0:
t_id = 20
elif gp == 1:
t_id = 9
elif gp == 2:
t_id = 5
elif gp == 3:
t_id = 17
elif gp == 4:
t_id = 3
elif gp == 5:
t_id = 21
elif gp == 6:
t_id = 24
elif gp == 7:
t_id = 23
elif gp == 8:
t_id = 18
elif gp == 9:
t_id = 11
elif gp == 10:
t_id = 14
else:
return db_get('teams', object_id=19, none_okay=False)
raise KeyError(f'Huh...I have no idea who you should be playing right now.')
return db_get('teams', object_id=t_id, none_okay=False)
else:
return None
@ -44,7 +91,7 @@ def build_lineup(this_team, this_game, this_event):
raise KeyError(f'Lineups not found for Gauntlet {this_event["id"]}')
def get_starting_pitcher(this_team, this_game, this_event):
def get_starting_pitcher(this_team, this_game, this_event, this_run):
if this_event['id'] == 1:
set_params = ai_manager.MINOR_CARDSET_PARAMS
params = [
@ -68,7 +115,8 @@ def get_starting_pitcher(this_team, this_game, this_event):
if pitchers['count'] == 0:
raise DatabaseError(f'Could not find any SP for {this_team["abbrev"]}. Seems like a Cal issue.')
card_id = ai_manager.get_or_create_card(pitchers['players'][0], this_team)
pitcher_num = games_played(this_run) % 5
card_id = ai_manager.get_or_create_card(pitchers['players'][pitcher_num], this_team)
return {
'game_id': this_game.id,