Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 2 additions & 4 deletions src/gui/gui2_element.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#ifndef GUI2_ELEMENT_H
#define GUI2_ELEMENT_H
#pragma once

#include <functional>
#include "stringImproved.h"
Expand Down Expand Up @@ -70,6 +69,7 @@ class GuiElement : public GuiContainer
GuiElement* enable();
GuiElement* disable();
bool isEnabled() const;
bool hasFocus() const { return focus; }

void moveToFront();
void moveToBack();
Expand All @@ -91,5 +91,3 @@ class GuiElement : public GuiContainer
protected:
State getState() const;
};

#endif//GUI2_ELEMENT_H
16 changes: 16 additions & 0 deletions src/gui/hotkeyConfig.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -313,6 +313,14 @@ Keys::Keys() :
relay_alert_level_none("RELAY_ALERT_NONE"),
relay_alert_level_yellow("RELAY_ALERT_YELLOW"),
relay_alert_level_red("RELAY_ALERT_RED"),
relay_open_comms("RELAY_OPEN_COMMS", "M"),
relay_start_hacking("RELAY_START_HACKING", "H"),
relay_link_to_science("RELAY_LINK_TO_SCIENCE", "K"),
relay_toggle_waypoint("RELAY_TOGGLE_WAYPOINT", "W"),
relay_delete_waypoint("RELAY_DELETE_WAYPOINT", "Delete"),
relay_launch_probe("RELAY_LAUNCH_PROBE", "L"),
relay_center_on_ship("RELAY_CENTER_ON_SHIP", "F"),
relay_toggle_ships_log("RELAY_TOGGLE_SHIPS_LOG", "V"),

// GM screen
gm_delete("GM_DELETE", "Delete"),
Expand Down Expand Up @@ -498,6 +506,14 @@ void Keys::init()
relay_alert_level_none.setLabel(tr("hotkey_menu", "Relay"), tr("hotkey_Relay", "Alert level: Normal"));
relay_alert_level_yellow.setLabel(tr("hotkey_menu", "Relay"), tr("hotkey_Relay", "Alert level: Yellow"));
relay_alert_level_red.setLabel(tr("hotkey_menu", "Relay"), tr("hotkey_Relay", "Alert level: Red"));
relay_open_comms.setLabel(tr("hotkey_menu", "Relay"), tr("hotkey_Relay", "Open comms with target"));
relay_start_hacking.setLabel(tr("hotkey_menu", "Relay"), tr("hotkey_Relay", "Start hacking target"));
relay_link_to_science.setLabel(tr("hotkey_menu", "Relay"), tr("hotkey_Relay", "Link to Science"));
relay_toggle_waypoint.setLabel(tr("hotkey_menu", "Relay"), tr("hotkey_Relay", "Toggle waypoint placement"));
relay_delete_waypoint.setLabel(tr("hotkey_menu", "Relay"), tr("hotkey_Relay", "Delete selected waypoint"));
relay_launch_probe.setLabel(tr("hotkey_menu", "Relay"), tr("hotkey_Relay", "Toggle probe launch"));
relay_center_on_ship.setLabel(tr("hotkey_menu", "Relay"), tr("hotkey_Relay", "Center view on ship"));
relay_toggle_ships_log.setLabel(tr("hotkey_menu", "Relay"), tr("hotkey_Relay", "Toggle ships log"));

// Cinematic view
cinematic.init();
Expand Down
8 changes: 8 additions & 0 deletions src/gui/hotkeyConfig.h
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,14 @@ class Keys
sp::io::Keybinding relay_alert_level_none;
sp::io::Keybinding relay_alert_level_yellow;
sp::io::Keybinding relay_alert_level_red;
sp::io::Keybinding relay_open_comms;
sp::io::Keybinding relay_start_hacking;
sp::io::Keybinding relay_link_to_science;
sp::io::Keybinding relay_toggle_waypoint;
sp::io::Keybinding relay_delete_waypoint;
sp::io::Keybinding relay_launch_probe;
sp::io::Keybinding relay_center_on_ship;
sp::io::Keybinding relay_toggle_ships_log;

// Cinematic view binds
struct CinematicKeys {
Expand Down
5 changes: 5 additions & 0 deletions src/screenComponents/commsOverlay.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,11 @@ void GuiCommsOverlay::onUpdate()
}
}

bool GuiCommsOverlay::isChatEntryFocused() const
{
return chat_comms_box->isVisible() && chat_comms_message_entry->hasFocus();
}

void GuiCommsOverlay::clearElements()
{
// Force all panels to hide, in case hiding the overlay doesn't hide its
Expand Down
6 changes: 2 additions & 4 deletions src/screenComponents/commsOverlay.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#ifndef COMMS_OVERLAY_H
#define COMMS_OVERLAY_H
#pragma once

#include "gui/gui2_element.h"

Expand Down Expand Up @@ -44,6 +43,5 @@ class GuiCommsOverlay : public GuiElement

virtual void onUpdate() override;
void clearElements();
bool isChatEntryFocused() const;
};

#endif//COMMS_OVERLAY_H
12 changes: 7 additions & 5 deletions src/screenComponents/shipsLogControl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -75,12 +75,14 @@ void ShipsLog::onDraw(sp::RenderTarget& renderer)
}
}

bool ShipsLog::onMouseDown(sp::io::Pointer::Button button, glm::vec2 position, sp::io::Pointer::ID id)
void ShipsLog::toggle()
{
open = !open;
if (open)
setSize(getSize().x, 800);
else
setSize(getSize().x, 50);
setSize(getSize().x, open ? 800.0f : 50.0f);
}

bool ShipsLog::onMouseDown(sp::io::Pointer::Button button, glm::vec2 position, sp::io::Pointer::ID id)
{
toggle();
return true;
}
10 changes: 5 additions & 5 deletions src/screenComponents/shipsLogControl.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#ifndef SHIPS_LOG_CONTROL_H
#define SHIPS_LOG_CONTROL_H
#pragma once

#include "gui/gui2_element.h"

Expand All @@ -11,11 +10,12 @@ class ShipsLog : public GuiElement
public:
ShipsLog(GuiContainer* owner);

// Toggle panel min/maximized state.
void toggle();

virtual void onDraw(sp::RenderTarget& target) override;
virtual bool onMouseDown(sp::io::Pointer::Button button, glm::vec2 position, sp::io::Pointer::ID id) override;
private:
bool open;
GuiAdvancedScrollText* log_text;
};

#endif//SHIPS_LOG_CONTROL_H
};
52 changes: 45 additions & 7 deletions src/screens/crew4/operationsScreen.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -117,31 +117,69 @@ OperationScreen::OperationScreen(GuiContainer* owner)
info_reputation->setTextSize(20)->setSize(200, 40);

// Scenario clock display.

info_clock = new GuiKeyValueDisplay(stats, "INFO_CLOCK", 0.55f, tr("Clock") + ":", "");
info_clock->setTextSize(20)->setSize(200, 40);

mode = TargetSelection;

new ShipsLog(this);
(new GuiCommsOverlay(this))->setSize(GuiElement::GuiSizeMax, GuiElement::GuiSizeMax);
ships_log = new ShipsLog(this);
comms_overlay = new GuiCommsOverlay(this);
comms_overlay->setSize(GuiElement::GuiSizeMax, GuiElement::GuiSizeMax);
}

void OperationScreen::onDraw(sp::RenderTarget& target)
{
GuiOverlay::onDraw(target);

if (!my_spaceship) return;

if (science->radar_view->isVisible())
{
info_reputation->setValue(string(Faction::getInfo(my_spaceship).reputation_points, 0))->show();

// Update mission clock
info_clock->setValue(gameGlobalInfo->getMissionTime())->show();
// Update reputation counter.
info_reputation
->setValue(string(Faction::getInfo(my_spaceship).reputation_points, 0))
->show();

// Update mission clock.
info_clock
->setValue(gameGlobalInfo->getMissionTime())
->show();
}
else
{
info_reputation->hide();
info_clock->hide();
}
}

void OperationScreen::onUpdate()
{
// Relay keybinds, copied from Relay screen.
// Don't process hotkeys while the chat text entry has keyboard focus.
if (comms_overlay && comms_overlay->isChatEntryFocused()) return;

// Open comms with the selected target.
if (keys.relay_open_comms.getDown())
{
auto target = science->targets.get();
if (target) my_player_info->commandOpenTextComm(target);
}

// Toggle waypoint placement mode.
if (keys.relay_toggle_waypoint.getDown())
{
if (mode == TargetSelection) mode = WaypointPlacement;
else if (mode == WaypointPlacement) mode = TargetSelection;
}

// Delete the selected waypoint.
if (keys.relay_delete_waypoint.getDown())
{
if (science->targets.getWaypointIndex() >= 0)
my_player_info->commandRemoveWaypoint(science->targets.getWaypointIndex());
}

// Toggle ship's log min/maximized state.
if (ships_log && keys.relay_toggle_ships_log.getDown())
ships_log->toggle();
}
7 changes: 7 additions & 0 deletions src/screens/crew4/operationsScreen.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,10 @@
class GuiOverlay;
class GuiKeyValueDisplay;
class GuiButton;
class GuiCommsOverlay;
class GuiToggleButton;
class ScienceScreen;
class ShipsLog;

class OperationScreen : public GuiOverlay
{
Expand All @@ -29,8 +31,13 @@ class OperationScreen : public GuiOverlay
GuiToggleButton* place_waypoint_button;
GuiButton* delete_waypoint_button;

GuiCommsOverlay* comms_overlay;
ShipsLog* ships_log;

glm::vec2 mouse_down_position{0, 0};
public:
OperationScreen(GuiContainer* owner);

virtual void onDraw(sp::RenderTarget& target) override;
virtual void onUpdate() override;
};
Loading
Loading