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
8 changes: 8 additions & 0 deletions src/screenComponents/radarView.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -802,6 +802,14 @@ void GuiRadarView::drawHeadingIndicators(sp::RenderTarget& renderer)
radar_screen_center + vec2FromAngle(float(n) - 90 - view_rotation) * (scale - 50), n-view_rotation,
string(n), 15.0f, main_font, {255, 255, 255, 255});
}

if (show_target_heading)
{
renderer.drawLine(
radar_screen_center + vec2FromAngle(target_heading - 90 - view_rotation) * (scale - 0),
radar_screen_center + vec2FromAngle(target_heading - 90 - view_rotation) * (scale - 40),
{255, 255, 255, 255});
}
}

glm::vec2 GuiRadarView::worldToScreen(glm::vec2 world_position)
Expand Down
4 changes: 4 additions & 0 deletions src/screenComponents/radarView.h
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,8 @@ class GuiRadarView : public GuiElement
bool show_callsigns;
bool show_heading_indicators;
bool show_game_master_data;
float target_heading;
bool show_target_heading = false;
float range_indicator_step_size;
uint8_t background_alpha;
ERadarStyle style;
Expand Down Expand Up @@ -105,6 +107,8 @@ class GuiRadarView : public GuiElement
glm::vec2 getViewPosition() { return view_position; }
GuiRadarView* setViewRotation(float view_rotation) { this->view_rotation = view_rotation; return this; }
float getViewRotation() { return view_rotation; }
GuiRadarView* showTargetHeading(bool value) { show_target_heading = value; return this; }
GuiRadarView* setTargetHeading(float value) { show_target_heading = true; target_heading = value; return this; }

glm::vec2 worldToScreen(glm::vec2 world_position);
glm::vec2 screenToWorld(glm::vec2 screen_position);
Expand Down
16 changes: 12 additions & 4 deletions src/screens/crew1/singlePilotScreen.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -67,18 +67,23 @@ SinglePilotScreen::SinglePilotScreen(GuiContainer* owner)
my_player_info->commandSetTarget(targets.get());
drag_rotate = false;
} else if (auto transform = my_spaceship.getComponent<sp::Transform>()) {
my_player_info->commandTargetRotation(vec2ToAngle(position - transform->getPosition()));
float angle = vec2ToAngle(position - transform->getPosition());
my_player_info->commandTargetRotation(angle);
radar->setTargetHeading(angle+90);
drag_rotate = true;
}
},
[this](glm::vec2 position) {
if (drag_rotate) {
if (auto transform = my_spaceship.getComponent<sp::Transform>())
my_player_info->commandTargetRotation(vec2ToAngle(position - transform->getPosition()));
if (auto transform = my_spaceship.getComponent<sp::Transform>()) {
float angle = vec2ToAngle(position - transform->getPosition());
my_player_info->commandTargetRotation(angle);
radar->setTargetHeading(angle+90);
}
}
},
[this](glm::vec2 position) {
drag_rotate=false;
drag_rotate=false;
}
);
radar->setAutoRotating(PreferencesManager::get("single_pilot_radar_lock","0")=="1");
Expand Down Expand Up @@ -166,7 +171,10 @@ void SinglePilotScreen::onUpdate()
if (angle != 0.0f)
{
if (auto transform = my_spaceship.getComponent<sp::Transform>())
{
my_player_info->commandTargetRotation(transform->getRotation() + angle);
radar->setTargetHeading(transform->getRotation()+angle+90);
}
}

if (keys.weapons_enemy_next_target.getDown())
Expand Down
15 changes: 11 additions & 4 deletions src/screens/crew4/tacticalScreen.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -61,14 +61,19 @@ TacticalScreen::TacticalScreen(GuiContainer* owner)
my_player_info->commandSetTarget(targets.get());
drag_rotate = false;
} else if (auto transform = my_spaceship.getComponent<sp::Transform>()) {
my_player_info->commandTargetRotation(vec2ToAngle(position - transform->getPosition()));
float angle = vec2ToAngle(position - transform->getPosition());
my_player_info->commandTargetRotation(angle);
radar->setTargetHeading(angle+90);
drag_rotate = true;
}
},
[this](glm::vec2 position) {
if (drag_rotate) {
if (auto transform = my_spaceship.getComponent<sp::Transform>())
my_player_info->commandTargetRotation(vec2ToAngle(position - transform->getPosition()));
if (auto transform = my_spaceship.getComponent<sp::Transform>()) {
float angle = vec2ToAngle(position - transform->getPosition());
my_player_info->commandTargetRotation(angle);
radar->setTargetHeading(angle+90);
}
}
},
[this](glm::vec2 position) {
Expand Down Expand Up @@ -146,8 +151,10 @@ void TacticalScreen::onUpdate()
auto angle = (keys.helms_turn_right.getValue() - keys.helms_turn_left.getValue()) * 5.0f;
if (angle != 0.0f)
{
if (auto transform = my_spaceship.getComponent<sp::Transform>())
if (auto transform = my_spaceship.getComponent<sp::Transform>()) {
my_player_info->commandTargetRotation(transform->getRotation() + angle);
radar->setTargetHeading(transform->getRotation()+angle+90);
}
}

if (keys.weapons_enemy_next_target.getDown())
Expand Down
15 changes: 10 additions & 5 deletions src/screens/crew6/helmsScreen.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
#include "components/docking.h"

#include "screenComponents/combatManeuver.h"
#include "screenComponents/radarView.h"
#include "screenComponents/impulseControls.h"
#include "screenComponents/warpControls.h"
#include "screenComponents/jumpControls.h"
Expand All @@ -38,7 +37,7 @@ HelmsScreen::HelmsScreen(GuiContainer* owner)
// Render the alert level color overlay.
(new AlertLevelOverlay(this));

GuiRadarView* radar = new GuiRadarView(this, "HELMS_RADAR", nullptr);
radar = new GuiRadarView(this, "HELMS_RADAR", nullptr);

combat_maneuver = new GuiCombatManeuver(this, "COMBAT_MANEUVER");
combat_maneuver->setPosition(-20, -20, sp::Alignment::BottomRight)->setSize(280, 215)->setVisible(my_spaceship.hasComponent<CombatManeuveringThrusters>());
Expand All @@ -47,7 +46,7 @@ HelmsScreen::HelmsScreen(GuiContainer* owner)
radar->setRangeIndicatorStepSize(1000.0)->shortRange()->enableGhostDots()->enableWaypoints()->enableCallsigns()->enableHeadingIndicators()->setStyle(GuiRadarView::Circular);
radar->enableMissileTubeIndicators();
radar->setCallbacks(
[radar, this](sp::io::Pointer::Button button, glm::vec2 position) {
[this](sp::io::Pointer::Button button, glm::vec2 position) {
if (auto transform = my_spaceship.getComponent<sp::Transform>())
{
auto r = radar->getRect();
Expand All @@ -68,9 +67,10 @@ HelmsScreen::HelmsScreen(GuiContainer* owner)
draw_position = rect.center() + draw_position / radar->getDistance() * std::min(r.size.x, r.size.y) * 0.5f;
heading_hint->setText(string(fmodf(angle + 90.f + 360.f, 360.f), 1))->setPosition(draw_position - rect.position - glm::vec2(0, 50))->show();
my_player_info->commandTargetRotation(angle);
radar->setTargetHeading(angle+90);
}
},
[radar, this](glm::vec2 position) {
[this](glm::vec2 position) {
if (auto transform = my_spaceship.getComponent<sp::Transform>())
{
auto r = radar->getRect();
Expand All @@ -88,8 +88,10 @@ HelmsScreen::HelmsScreen(GuiContainer* owner)
else{
draw_position = (position - transform->getPosition());
}
draw_position = rect.center() + draw_position / radar->getDistance() * std::min(r.size.x, r.size.y) * 0.5f; heading_hint->setText(string(fmodf(angle + 90.f + 360.f, 360.f), 1))->setPosition(draw_position - rect.position - glm::vec2(0, 50))->show();
draw_position = rect.center() + draw_position / radar->getDistance() * std::min(r.size.x, r.size.y) * 0.5f;
heading_hint->setText(string(fmodf(angle + 90.f + 360.f, 360.f), 1))->setPosition(draw_position - rect.position - glm::vec2(0, 50))->show();
my_player_info->commandTargetRotation(angle);
radar->setTargetHeading(angle+90);
}
},
[this](glm::vec2 position) {
Expand Down Expand Up @@ -141,7 +143,10 @@ void HelmsScreen::onUpdate()
{
auto transform = my_spaceship.getComponent<sp::Transform>();
if (transform)
{
my_player_info->commandTargetRotation(transform->getRotation() + angle);
radar->setTargetHeading(transform->getRotation() + angle + 90);
}
}
}
}
2 changes: 2 additions & 0 deletions src/screens/crew6/helmsScreen.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

#include "gui/gui2_overlay.h"
#include "gui/joystickConfig.h"
#include "screenComponents/radarView.h"

class GuiKeyValueDisplay;
class GuiLabel;
Expand All @@ -19,6 +20,7 @@ class HelmsScreen : public GuiOverlay
GuiLabel* heading_hint;
GuiCombatManeuver* combat_maneuver;
GuiDockingButton* docking_button;
GuiRadarView* radar;
public:
HelmsScreen(GuiContainer* owner);

Expand Down
Loading