From 99593483223a83a53f69712ba4a1ae8970a5cbef Mon Sep 17 00:00:00 2001 From: Sakimori Date: Wed, 30 Jun 2021 17:01:19 -0400 Subject: [PATCH] implemented smog --- games.py | 24 ++++++++++++++++-------- main_controller.py | 8 ++++++-- weather.py | 38 +++++++++++++++++++++++++++++++++++++- 3 files changed, 59 insertions(+), 11 deletions(-) diff --git a/games.py b/games.py index 6c95f14..8371337 100644 --- a/games.py +++ b/games.py @@ -219,6 +219,7 @@ class game(object): def __init__(self, team1, team2, length=None): self.over = False + self.random_weather_flag = False self.teams = {"away" : team1, "home" : team2} self.inning = 1 self.outs = 0 @@ -693,6 +694,9 @@ class game(object): self.top_of_inning = not self.top_of_inning + if self.random_weather_flag and self.top_of_inning: + setattr(self, "weather", random.choice(list(weather.safe_weathers().values()))(self)) + self.weather.on_flip_inning(self) self.choose_next_batter() @@ -701,14 +705,18 @@ class game(object): self.inning += 1 if self.inning > self.max_innings and self.teams["home"].score != self.teams["away"].score: #game over self.over = True - if self.max_innings >= 9 or self.weather.name in ["Leaf Eddies", "Torrential Downpour"]: - if self.teams["home"].score == 16: - this_xvi_team = self.teams["home"] - elif self.teams["away"].score == 16: - this_xvi_team = self.teams["away"] - else: - this_xvi_team = None - db.save_obl_results(self.teams["home"] if self.teams["home"].score > self.teams["away"].score else self.teams["away"], self.teams["home"] if self.teams["home"].score < self.teams["away"].score else self.teams["away"], xvi_team=this_xvi_team) + try: #if something goes wrong with OBL don't erase game + if self.max_innings >= 9 or self.weather.name in ["Leaf Eddies", "Torrential Downpour"]: + if self.teams["home"].score == 16: + this_xvi_team = self.teams["home"] + elif self.teams["away"].score == 16: + this_xvi_team = self.teams["away"] + else: + this_xvi_team = None + db.save_obl_results(self.teams["home"] if self.teams["home"].score > self.teams["away"].score else self.teams["away"], self.teams["home"] if self.teams["home"].score < self.teams["away"].score else self.teams["away"], xvi_team=this_xvi_team) + except: + pass + def end_of_game_report(self): diff --git a/main_controller.py b/main_controller.py index 95d4f82..2cf6db1 100644 --- a/main_controller.py +++ b/main_controller.py @@ -190,13 +190,17 @@ def update_loop(): else: if this_game.top_of_inning: state["update_text"] = f"Top of {this_game.inning}. {this_game.teams['away'].name} batting!" + this_game.weather.modify_top_of_inning_message(this_game, state) + if this_game.random_weather_flag: + this_game.weather.weather_report(this_game, state) else: if this_game.inning >= this_game.max_innings: if this_game.teams["home"].score > this_game.teams["away"].score: this_game.victory_lap = True state["update_text"] = f"Bottom of {this_game.inning}. {this_game.teams['home'].name} batting!" + this_game.weather.modify_top_of_inning_message(this_game, state) - this_game.weather.modify_top_of_inning_message(this_game, state) + elif state["update_pause"] != 1 and this_game.play_has_begun: @@ -256,4 +260,4 @@ def update_loop(): socket_thread = threading.Thread(target=socketio.emit, args=("states_update", game_states)) socket_thread.start() #socketio.emit("states_update", game_states) - time.sleep(8) \ No newline at end of file + time.sleep(3) \ No newline at end of file diff --git a/weather.py b/weather.py index b4cf74e..1049cd7 100644 --- a/weather.py +++ b/weather.py @@ -57,6 +57,11 @@ class Weather: def modify_game_end_message(self, game, state): pass + def weather_report(self, game, state): + game.weather = random.choice(list(safe_weathers().values()))(game) + state["update_emoji"] = "🚌" + state["update_text"] += f" Weather report: {game.weather.name} {game.weather.emoji}" + class Supernova(Weather): name = "Supernova" @@ -545,6 +550,18 @@ class LeafEddies(Weather): if game.inning == 1: state["weather_text"] = self.name +class Smog(Weather): + name = "Smog" + emoji = "🚌" + duration_range = [1,1] + + def __init__(self, game): + game.random_weather_flag = True + setattr(game, "weather", random.choice(list(safe_weathers().values()))(game)) + pass + + + def all_weathers(): weathers_dic = { "Supernova" : Supernova, @@ -562,7 +579,26 @@ def all_weathers(): "Tornado" : Tornado, "Torrential Downpour" : Downpour, "Summer Mist" : SummerMist, - "Leaf Eddies" : LeafEddies + "Leaf Eddies" : LeafEddies, + "Smog" : Smog + } + return weathers_dic + +def safe_weathers(): + """weathers safe to swap in mid-game""" + weathers_dic = { + "Supernova" : Supernova, + "Midnight": Midnight, + "Slight Tailwind": SlightTailwind, + "Twilight" : Twilight, + "Thinned Veil" : ThinnedVeil, + "Drizzle" : Drizzle, + "Breezy": Breezy, + "Starlight" : Starlight, + "Meteor Shower" : MeteorShower, + "Hurricane" : Hurricane, + "Tornado" : Tornado, + "Summer Mist" : SummerMist } return weathers_dic