Skip to content

Commit 66d9027

Browse files
committed
Add Relay keybinds to Operations
1 parent c0969a0 commit 66d9027

3 files changed

Lines changed: 54 additions & 9 deletions

File tree

‎src/gui/hotkeyConfig.cpp‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -313,9 +313,9 @@ Keys::Keys() :
313313
relay_alert_level_none("RELAY_ALERT_NONE"),
314314
relay_alert_level_yellow("RELAY_ALERT_YELLOW"),
315315
relay_alert_level_red("RELAY_ALERT_RED"),
316-
relay_open_comms("RELAY_OPEN_COMMS", "C"),
316+
relay_open_comms("RELAY_OPEN_COMMS", "M"),
317317
relay_start_hacking("RELAY_START_HACKING", "H"),
318-
relay_link_to_science("RELAY_LINK_TO_SCIENCE", "S"),
318+
relay_link_to_science("RELAY_LINK_TO_SCIENCE", "K"),
319319
relay_toggle_waypoint("RELAY_TOGGLE_WAYPOINT", "W"),
320320
relay_delete_waypoint("RELAY_DELETE_WAYPOINT", "Delete"),
321321
relay_launch_probe("RELAY_LAUNCH_PROBE", "L"),

‎src/screens/crew4/operationsScreen.cpp‎

Lines changed: 45 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -117,31 +117,69 @@ OperationScreen::OperationScreen(GuiContainer* owner)
117117
info_reputation->setTextSize(20)->setSize(200, 40);
118118

119119
// Scenario clock display.
120-
121120
info_clock = new GuiKeyValueDisplay(stats, "INFO_CLOCK", 0.55f, tr("Clock") + ":", "");
122121
info_clock->setTextSize(20)->setSize(200, 40);
123122

124123
mode = TargetSelection;
125124

126-
new ShipsLog(this);
127-
(new GuiCommsOverlay(this))->setSize(GuiElement::GuiSizeMax, GuiElement::GuiSizeMax);
125+
ships_log = new ShipsLog(this);
126+
comms_overlay = new GuiCommsOverlay(this);
127+
comms_overlay->setSize(GuiElement::GuiSizeMax, GuiElement::GuiSizeMax);
128128
}
129129

130130
void OperationScreen::onDraw(sp::RenderTarget& target)
131131
{
132132
GuiOverlay::onDraw(target);
133133

134134
if (!my_spaceship) return;
135+
135136
if (science->radar_view->isVisible())
136137
{
137-
info_reputation->setValue(string(Faction::getInfo(my_spaceship).reputation_points, 0))->show();
138-
139-
// Update mission clock
140-
info_clock->setValue(gameGlobalInfo->getMissionTime())->show();
138+
// Update reputation counter.
139+
info_reputation
140+
->setValue(string(Faction::getInfo(my_spaceship).reputation_points, 0))
141+
->show();
142+
143+
// Update mission clock.
144+
info_clock
145+
->setValue(gameGlobalInfo->getMissionTime())
146+
->show();
141147
}
142148
else
143149
{
144150
info_reputation->hide();
145151
info_clock->hide();
146152
}
147153
}
154+
155+
void OperationScreen::onUpdate()
156+
{
157+
// Relay keybinds, copied from Relay screen.
158+
// Don't process hotkeys while the chat text entry has keyboard focus.
159+
if (comms_overlay && comms_overlay->isChatEntryFocused()) return;
160+
161+
// Open comms with the selected target.
162+
if (keys.relay_open_comms.getDown())
163+
{
164+
auto target = science->targets.get();
165+
if (target) my_player_info->commandOpenTextComm(target);
166+
}
167+
168+
// Toggle waypoint placement mode.
169+
if (keys.relay_toggle_waypoint.getDown())
170+
{
171+
if (mode == TargetSelection) mode = WaypointPlacement;
172+
else if (mode == WaypointPlacement) mode = TargetSelection;
173+
}
174+
175+
// Delete the selected waypoint.
176+
if (keys.relay_delete_waypoint.getDown())
177+
{
178+
if (science->targets.getWaypointIndex() >= 0)
179+
my_player_info->commandRemoveWaypoint(science->targets.getWaypointIndex());
180+
}
181+
182+
// Toggle ship's log min/maximized state.
183+
if (ships_log && keys.relay_toggle_ships_log.getDown())
184+
ships_log->toggle();
185+
}

‎src/screens/crew4/operationsScreen.h‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@
55
class GuiOverlay;
66
class GuiKeyValueDisplay;
77
class GuiButton;
8+
class GuiCommsOverlay;
89
class GuiToggleButton;
910
class ScienceScreen;
11+
class ShipsLog;
1012

1113
class OperationScreen : public GuiOverlay
1214
{
@@ -29,8 +31,13 @@ class OperationScreen : public GuiOverlay
2931
GuiToggleButton* place_waypoint_button;
3032
GuiButton* delete_waypoint_button;
3133

34+
GuiCommsOverlay* comms_overlay;
35+
ShipsLog* ships_log;
36+
3237
glm::vec2 mouse_down_position{0, 0};
3338
public:
3439
OperationScreen(GuiContainer* owner);
40+
3541
virtual void onDraw(sp::RenderTarget& target) override;
42+
virtual void onUpdate() override;
3643
};

0 commit comments

Comments
 (0)