gulf & nevada maps integration; updates to commisioning/start generation units logic; mission gen updates; carriers always on map

This commit is contained in:
Vasyl Horbachenko
2018-06-16 03:30:32 +03:00
parent 56c9f97417
commit 92e5514e8d
20 changed files with 368 additions and 162 deletions

View File

@@ -143,7 +143,7 @@ class EventMenu(Menu):
clients=scrambled_clients)
elif type(self.event) is GroundInterceptEvent:
e = self.event # type: GroundInterceptEvent
e.player_attacking(e.to_cp.position.random_point_within(30000), strikegroup=scrambled_aircraft, clients=scrambled_clients)
e.player_attacking(strikegroup=scrambled_aircraft, clients=scrambled_clients)
self.game.initiate_event(self.event)
EventResultsMenu(self.window, self.parent, self.game, self.event).display()

View File

@@ -21,6 +21,9 @@ class EventResultsMenu(Menu):
self.window.clear_right_pane()
if not self.finished:
"""
For debugging purposes
Button(self.frame, text="no losses, succ", command=self.simulate_result(0, 1)).grid()
Button(self.frame, text="no losses, fail", command=self.simulate_result(0, 1)).grid(row=1, column=1)
@@ -29,6 +32,7 @@ class EventResultsMenu(Menu):
Button(self.frame, text="full losses, succ", command=self.simulate_result(1, 0)).grid(row=3, )
Button(self.frame, text="full losses, fail", command=self.simulate_result(1, 0)).grid(row=3, column=1)
"""
Label(self.frame, text="Play the mission and save debriefing to {}".format(debriefing_directory_location())).grid(row=0, column=0)
else:

View File

@@ -6,6 +6,7 @@ from ui.window import *
class NewGameMenu(Menu):
selected_country = None # type: IntVar
selected_terrain = None # type: IntVar
def __init__(self, window: Window, callback: typing.Callable):
super(NewGameMenu, self).__init__(window, None, None)
@@ -15,6 +16,9 @@ class NewGameMenu(Menu):
self.selected_country = IntVar()
self.selected_country.set(0)
self.selected_terrain = IntVar()
self.selected_terrain.set(0)
@property
def player_country_name(self):
if self.selected_country.get() == 0:
@@ -29,13 +33,27 @@ class NewGameMenu(Menu):
else:
return "Russia"
@property
def terrain_name(self) -> str:
if self.selected_terrain.get() == 0:
return "caucasus"
elif self.selected_terrain.get() == 1:
return "nevada"
else:
return "persiangulf"
def display(self):
self.window.clear_right_pane()
Label(self.frame, text="Player country").grid(row=0, column=0)
Radiobutton(self.frame, text="USA", variable=self.selected_country, value=0).grid(row=1, column=0)
Radiobutton(self.frame, text="Russia", variable=self.selected_country, value=1).grid(row=2, column=0)
Button(self.frame, text="Proceed", command=self.proceed).grid(row=3, column=0)
Label(self.frame, text="Terrain").grid(row=0, column=1)
Radiobutton(self.frame, text="Caucasus", variable=self.selected_terrain, value=0).grid(row=1, column=1)
Radiobutton(self.frame, text="Nevada", variable=self.selected_terrain, value=1).grid(row=2, column=1)
Radiobutton(self.frame, text="Persian Gulf", variable=self.selected_terrain, value=2).grid(row=3, column=1)
Button(self.frame, text="Proceed", command=self.proceed).grid(row=4, column=0, columnspan=2)
def proceed(self):
self.callback(self.player_country_name, self.enemy_country_name)
self.callback(self.player_country_name, self.enemy_country_name, self.terrain_name)

View File

@@ -11,14 +11,14 @@ class OverviewCanvas:
mainmenu = None # type: ui.mainmenu.MainMenu
def __init__(self, frame: Frame, parent, game: Game):
self.canvas = Canvas(frame, width=616, height=350)
self.canvas.grid(column=0, row=0, sticky=NSEW)
self.image = PhotoImage(file="resources/caumap.gif")
self.parent = parent
self.game = game
def cp_coordinates(self, cp: ControlPoint) -> (int, int):
self.image = PhotoImage(file=os.path.join("resources", game.theater.overview_image))
self.canvas = Canvas(frame, width=self.image.width(), height=self.image.height())
self.canvas.grid(column=0, row=0, sticky=NSEW)
def transform_point(self, p: Point) -> (int, int):
point_a = list(self.game.theater.reference_points.keys())[0]
point_a_img = self.game.theater.reference_points[point_a]
@@ -35,8 +35,8 @@ class OverviewCanvas:
y_scale = float(y_dist) / float(lat_dist)
# ---
x_offset = cp.position.x - point_a[0]
y_offset = cp.position.y - point_a[1]
x_offset = p.x - point_a[0]
y_offset = p.y - point_a[1]
return point_b_img[1] + y_offset * y_scale, point_a_img[0] - x_offset * x_scale
@@ -54,9 +54,9 @@ class OverviewCanvas:
self.canvas.create_image((self.image.width()/2, self.image.height()/2), image=self.image)
for cp in self.game.theater.controlpoints:
coords = self.cp_coordinates(cp)
coords = self.transform_point(cp.position)
for connected_cp in cp.connected_points:
connected_coords = self.cp_coordinates(connected_cp)
connected_coords = self.transform_point(connected_cp.position)
if connected_cp.captured != cp.captured:
color = "red"
elif connected_cp.captured and cp.captured:
@@ -67,7 +67,7 @@ class OverviewCanvas:
self.canvas.create_line((coords[0], coords[1], connected_coords[0], connected_coords[1]), width=2, fill=color)
for cp in self.game.theater.controlpoints:
coords = self.cp_coordinates(cp)
coords = self.transform_point(cp.position)
arc_size = 22 * math.pow(cp.importance, 1)
extent = max(cp.base.strength * 180, 10)
start = (180 - extent) / 2
@@ -79,6 +79,15 @@ class OverviewCanvas:
style=PIESLICE,
start=start,
extent=extent)
"""
For debugging purposes
for r in cp.radials:
p = self.transform_point(cp.position.point_from_heading(r, 20000))
self.canvas.create_text(p[0], p[1], text="{}".format(r))
"""
self.canvas.tag_bind(cp_id, "<Button-1>", self.display(cp))
self.create_cp_title((coords[0] + arc_size/4, coords[1] + arc_size/4), cp)