diff --git a/game/db.py b/game/db.py index cd2d2751..5e0889df 100644 --- a/game/db.py +++ b/game/db.py @@ -1,5 +1,6 @@ import typing import enum +from datetime import datetime from dcs.vehicles import * from dcs.ships import * @@ -450,6 +451,48 @@ PLANE_LIVERY_OVERRIDES = { FA_18C_hornet: "VFA-34", # default livery for the hornet is blue angels one } + + + +""" +Possible time periods for new games + + `Name`: daytime(day, month, year), + +`Identifier` is the name that will appear in the menu +The object is a python datetime object +""" +TIME_PERIODS = { + "WW2 - Winter [1944]": datetime(1944, 1, 1), + "WW2 - Spring [1944]": datetime(1944, 4, 1), + "WW2 - Summer [1944]": datetime(1944, 6, 1), + "WW2 - Fall [1944]": datetime(1944, 10, 1), + "Early Cold War - Winter [1952]": datetime(1952, 1, 1), + "Early Cold War - Spring [1952]": datetime(1952, 4, 1), + "Early Cold War - Summer [1952]": datetime(1952, 6, 1), + "Early Cold War - Fall [1952]": datetime(1952, 10, 1), + "Cold War - Winter [1970]": datetime(1970, 1, 1), + "Cold War - Spring [1970]": datetime(1970, 4, 1), + "Cold War - Summer [1970]": datetime(1970, 6, 1), + "Cold War - Fall [1970]": datetime(1970, 10, 1), + "Late Cold War - Winter [1985]": datetime(1985, 1, 1), + "Late Cold War - Spring [1985]": datetime(1985, 4, 1), + "Late Cold War - Summer [1985]": datetime(1985, 6, 1), + "Late Cold War - Fall [1985]": datetime(1985, 10, 1), + "Gulf War - Winter [1990]": datetime(1990, 1, 1), + "Gulf War - Spring [1990]": datetime(1990, 4, 1), + "Gulf War - Summer [1990]": datetime(1990, 6, 1), + "Gulf War - Fall [1990]": datetime(1990, 10, 1), + "Modern - Winter [2010]": datetime(2010, 1, 1), + "Modern - Spring [2010]": datetime(2010, 4, 1), + "Modern - Summer [2010]": datetime(2010, 6, 1), + "Modern - Fall [2010]": datetime(2010, 10, 1), + "Georgian War [2008]": datetime(2008, 8, 7), + "Syrian War [2011]": datetime(2011, 8, 7), +} + + + """ ---------- END OF CONFIGURATION SECTION """ diff --git a/ui/newgamemenu.py b/ui/newgamemenu.py index 5688aae2..f580f91b 100644 --- a/ui/newgamemenu.py +++ b/ui/newgamemenu.py @@ -4,7 +4,7 @@ from tkinter.ttk import * from ui.window import * from .styles import STYLES - +from game import db class NewGameMenu(Menu): selected_country = None # type: IntVar @@ -25,6 +25,8 @@ class NewGameMenu(Menu): self.selected_terrain = IntVar() self.selected_terrain.set(0) + self.selected_time_period = StringVar() + self.sams = BooleanVar() self.sams.set(1) @@ -98,9 +100,20 @@ class NewGameMenu(Menu): Label(terrain, text="Persian Gulf", **STYLES["widget"]).grid(row=2, column=1, sticky=W) self.create_label_image(terrain, "terrain_pg.gif").grid(row=2, column=2, padx=5) + # Period selection + period = LabelFrame(body, text="Time Period", **STYLES["label-frame"]) + period.grid(row=0, column=2, sticky=N, padx=5) + + vals = list(db.TIME_PERIODS) + self.selected_time_period.set(vals[21]) + period_select = OptionMenu(period, self.selected_time_period, *vals) + period_select.configure(**STYLES["btn-primary"]) + period_select.grid(row=0, column=0, sticky=W) + #Label(terrain, text="Caucasus", **STYLES["widget"]).grid(row=0, column=1, sticky=W) + # Misc Options options = LabelFrame(body, text="Misc Options", **STYLES["label-frame"]) - options.grid(row=0, column=2, sticky=NE, padx=5) + options.grid(row=0, column=3, sticky=NE, padx=5) Checkbutton(options, variable=self.sams, **STYLES["radiobutton"]).grid(row=0, column=0, sticky=W) Label(options, text="SAMs", **STYLES["widget"]).grid(row=0, column=1, sticky=W) @@ -130,4 +143,5 @@ class NewGameMenu(Menu): self.terrain_name, bool(self.sams.get()), bool(self.midgame.get()), - float(self.multiplier.get())) + float(self.multiplier.get()), + db.TIME_PERIODS[self.selected_time_period.get()]) diff --git a/ui/window.py b/ui/window.py index d8e355a8..70ce0431 100644 --- a/ui/window.py +++ b/ui/window.py @@ -87,7 +87,7 @@ class Window: self.right_pane.grid_remove() self.build() - def start_new_game(self, player_name: str, enemy_name: str, terrain: str, sams: bool, midgame: bool, multiplier: float): + def start_new_game(self, player_name: str, enemy_name: str, terrain: str, sams: bool, midgame: bool, multiplier: float, period:datetime): if terrain == "persiangulf": conflicttheater = persiangulf.PersianGulfTheater() elif terrain == "nevada": @@ -104,7 +104,7 @@ class Window: game = Game(player_name=player_name, enemy_name=enemy_name, theater=conflicttheater, - start_date=datetime.now()) + start_date=period) game.budget = int(game.budget * multiplier) game.settings.multiplier = multiplier game.settings.sams = sams