From 25cc56a2eefccb4c0e37bae2ac68478d812fbc05 Mon Sep 17 00:00:00 2001 From: daid Date: Sun, 14 Jun 2015 17:54:07 +0200 Subject: [PATCH] Add new top down screen implementation. --- EmptyEpsilon.cbp | 4 +- src/gui/mainScreen.cpp | 59 ------------------------------ src/gui/mainScreen.h | 26 ------------- src/menus/shipSelectionScreen.cpp | 6 ++- src/screens/mainScreen.cpp | 1 + src/screens/topDownScreen.cpp | 61 +++++++++++++++++++++++++++++++ src/screens/topDownScreen.h | 22 +++++++++++ 7 files changed, 90 insertions(+), 89 deletions(-) delete mode 100644 src/gui/mainScreen.cpp delete mode 100644 src/gui/mainScreen.h create mode 100644 src/screens/topDownScreen.cpp create mode 100644 src/screens/topDownScreen.h diff --git a/EmptyEpsilon.cbp b/EmptyEpsilon.cbp index fd031cd1b0..81446aed3b 100644 --- a/EmptyEpsilon.cbp +++ b/EmptyEpsilon.cbp @@ -514,8 +514,6 @@ - - @@ -566,6 +564,8 @@ + + diff --git a/src/gui/mainScreen.cpp b/src/gui/mainScreen.cpp deleted file mode 100644 index b689f3e21f..0000000000 --- a/src/gui/mainScreen.cpp +++ /dev/null @@ -1,59 +0,0 @@ -#include "mainScreen.h" -#include "menus/shipSelectionScreen.h" -#include "main.h" -#include "mouseRenderer.h" -#include "gameGlobalInfo.h" -#include "playerInfo.h" - -MainScreenBaseUI::MainScreenBaseUI() -{ - P mouseRenderer = engine->getObject("mouseRenderer"); - if (mouseRenderer) mouseRenderer->visible = false; - return_to_ship_selection_time = 0.0; -} - -void MainScreenBaseUI::destroy() -{ - P mouseRenderer = engine->getObject("mouseRenderer"); - if (mouseRenderer) mouseRenderer->visible = true; - MainUIBase::destroy(); -} - -void MainScreenBaseUI::onGui() -{ - if (!my_spaceship) - { - if (return_to_ship_selection_time == 0.0) - { - return_to_ship_selection_time = engine->getElapsedTime() + 20.0; - } - if (engine->getElapsedTime() > return_to_ship_selection_time) - { - destroy(); - new ShipSelectionScreen(); - } - if (engine->getElapsedTime() > return_to_ship_selection_time - 10.0) - { - drawProgressBar(sf::FloatRect(getWindowSize().x / 2 - 300, 600, 600, 100), return_to_ship_selection_time - engine->getElapsedTime(), 0, 10); - } - } - MainUIBase::onGui(); -} - -void TopDownUI::onGui() -{ - if (my_spaceship) - { - camera_yaw = -90.0f; - camera_pitch = 90.0f; - - sf::Vector2f position = my_spaceship->getPosition(); - - camera_position.x = position.x; - camera_position.y = position.y; - camera_position.z = 7000.0; - } - draw3Dworld(sf::FloatRect(0, 0, getWindowSize().x, getWindowSize().y), true); - - MainUIBase::onGui(); -} diff --git a/src/gui/mainScreen.h b/src/gui/mainScreen.h deleted file mode 100644 index f931a52a6b..0000000000 --- a/src/gui/mainScreen.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef MAIN_SCREEN_H -#define MAIN_SCREEN_H - -#include "mainUIBase.h" - -class MainScreenBaseUI : public MainUIBase -{ -private: - float return_to_ship_selection_time; -public: - MainScreenBaseUI(); - - virtual void onGui(); - - virtual void destroy(); -}; - -class TopDownUI : public MainScreenBaseUI -{ -public: - TopDownUI() {} - - virtual void onGui(); -}; - -#endif//MAIN_SCREEN_H diff --git a/src/menus/shipSelectionScreen.cpp b/src/menus/shipSelectionScreen.cpp index 605b37311d..782ffac433 100644 --- a/src/menus/shipSelectionScreen.cpp +++ b/src/menus/shipSelectionScreen.cpp @@ -4,7 +4,7 @@ #include "playerInfo.h" #include "gameGlobalInfo.h" #include "screens/windowScreen.h" -#include "gui/mainScreen.h" +#include "screens/topDownScreen.h" #include "gui/gameMasterUI.h" ShipSelectionScreen::ShipSelectionScreen() @@ -221,8 +221,10 @@ void ShipSelectionScreen::onReadyClick() new WindowScreen(window_angle->getSelectionValue().toInt()); }else if(topdown_button->getValue()) { + my_spaceship = NULL; + my_player_info->setShipId(-1); destroy(); - new TopDownUI(); + new TopDownScreen(); }else{ destroy(); my_player_info->spawnUI(); diff --git a/src/screens/mainScreen.cpp b/src/screens/mainScreen.cpp index 407c40df7e..800c03d964 100644 --- a/src/screens/mainScreen.cpp +++ b/src/screens/mainScreen.cpp @@ -37,6 +37,7 @@ ScreenMainScreen::ScreenMainScreen() void ScreenMainScreen::update(float delta) { /* + TODO if (game_client && !game_client->isConnected()) { destroy(); diff --git a/src/screens/topDownScreen.cpp b/src/screens/topDownScreen.cpp new file mode 100644 index 0000000000..78f879b96b --- /dev/null +++ b/src/screens/topDownScreen.cpp @@ -0,0 +1,61 @@ +#include "playerInfo.h" +#include "gameGlobalInfo.h" +#include "topDownScreen.h" +#include "main.h" +#include "menus/shipSelectionScreen.h" + +#include "screenComponents/indicatorOverlays.h" + +TopDownScreen::TopDownScreen() +{ + viewport = new GuiViewport3D(this, "VIEWPORT"); + viewport->showCallsigns(); + viewport->setPosition(0, 0, ATopLeft)->setSize(GuiElement::GuiSizeMax, GuiElement::GuiSizeMax); + + new GuiIndicatorOverlays(this); +} + +void TopDownScreen::update(float delta) +{ + camera_yaw = -90.0f; + camera_pitch = 90.0f; + + camera_position.z = 7000.0; + + if (!target) + { + for(int n=0; ngetPlayerShip(n); + if (target) + break; + } + } + + if (target) + { + sf::Vector2f position = target->getPosition(); + + camera_position.x = position.x; + camera_position.y = position.y; + } +} + +void TopDownScreen::onKey(sf::Keyboard::Key key, int unicode) +{ + switch(key) + { + //TODO: This is more generic code and is duplicated. + case sf::Keyboard::Escape: + case sf::Keyboard::Home: + destroy(); + new ShipSelectionScreen(); + break; + case sf::Keyboard::P: + if (game_server) + engine->setGameSpeed(0.0); + break; + default: + break; + } +} diff --git a/src/screens/topDownScreen.h b/src/screens/topDownScreen.h new file mode 100644 index 0000000000..0fe0060ffd --- /dev/null +++ b/src/screens/topDownScreen.h @@ -0,0 +1,22 @@ +#ifndef TOP_DOWN_SCREEN_H +#define TOP_DOWN_SCREEN_H + +#include "engine.h" +#include "gui/gui2.h" +#include "screenComponents/viewport3d.h" +#include "screenComponents/radarView.h" + +class TopDownScreen : public GuiCanvas, public Updatable +{ +private: + GuiViewport3D* viewport; + P target; +public: + TopDownScreen(); + + virtual void update(float delta); + + virtual void onKey(sf::Keyboard::Key key, int unicode); +}; + +#endif//TOP_DOWN_SCREEN_H