mirror of
https://github.com/ApfelTeeSaft/PlanetFleet.git
synced 2026-08-26 19:33:38 +00:00
accessible trading screen
This commit is contained in:
@@ -31,7 +31,7 @@ ButtonType = {
|
||||
SELL_REFINEDS = 27,
|
||||
BUY_RESEARCH = 28,
|
||||
SELL_RESEARCH = 29,
|
||||
ACTIVE_GAME_STATE = 30,
|
||||
ACTIVE_STATE_BACK = 30,
|
||||
PLAYER_TRADE = 31,
|
||||
TRADING_SCREEN = 32,
|
||||
TRADE_OFFER = 33,
|
||||
|
||||
@@ -16,9 +16,8 @@ gui = {
|
||||
},
|
||||
{
|
||||
guiType = GuiType.BUTTON,
|
||||
buttonType = ButtonType.ACTIVE_GAME_STATE,
|
||||
buttonType = ButtonType.ACTIVE_STATE_BACK,
|
||||
name = 'Back',
|
||||
guiScreen = 'activeGameState.lua',
|
||||
pos = {x = HubPos.x + HubSize.x - buttonSize.x - HubMargin.right, y = HubPos.y + HubSize.y - buttonSize.y - HubMargin.bottom, z = .11},
|
||||
size = buttonSize,
|
||||
trigger = 10
|
||||
|
||||
+1
-1
@@ -17,7 +17,7 @@ cmake_policy(SET CMP0015 NEW)
|
||||
|
||||
set(UNIT_BUTTONS unitButton.cpp tradeButton.cpp buildButton.cpp trainButton.cpp researchButton.cpp orderButton.cpp stateToggleButton.cpp)
|
||||
set(OPTIONS_BUTTONS optionsButton.cpp tabButton.cpp okButton.cpp defaultsButton.cpp)
|
||||
set(TRADING_BUTTONS playerTradeButton.cpp tradingScreenButton.cpp offerButton.cpp resourceAmmountButton.cpp)
|
||||
set(TRADING_BUTTONS activeStateBackButton.cpp playerTradeButton.cpp tradingScreenButton.cpp offerButton.cpp resourceAmmountButton.cpp)
|
||||
set(MENU_BUTTONS mainMenuButton.cpp singlePlayerButton.cpp exitButton.cpp backButton.cpp playButton.cpp)
|
||||
set(MAP_EDITOR_BUTTONS mapEditorButton.cpp newMapButton.cpp loadMapButton.cpp exportButton.cpp)
|
||||
set(BUTTONS statsButton.cpp activeStateButton.cpp minimapButton.cpp ${TRADING_BUTTONS} ${OPTIONS_BUTTONS} ${MENU_BUTTONS} ${MAP_EDITOR_BUTTONS} ${UNIT_BUTTONS})
|
||||
|
||||
+8
-4
@@ -243,6 +243,12 @@ namespace battleship{
|
||||
fc->removeGameObjectFrames();
|
||||
}
|
||||
|
||||
if(!tradingScreen){
|
||||
guiTexts = guiManager->getTexts();
|
||||
guiRects = guiManager->getGuiRectangles();
|
||||
guiButtons = guiManager->getButtons();
|
||||
}
|
||||
|
||||
renderUnits();
|
||||
|
||||
vector<Unit*> currSelectedUnits = mainPlayer->getSelectedUnits();
|
||||
@@ -540,11 +546,9 @@ namespace battleship{
|
||||
}
|
||||
|
||||
void ActiveGameState::onAction(int bind, bool isPressed) {
|
||||
if(tradingScreen || !ConcreteGuiManager::getSingleton()->findClickedButtons().empty()) return;
|
||||
|
||||
GameObjectFrameController *ufCtr = GameObjectFrameController::getSingleton();
|
||||
|
||||
if(!ConcreteGuiManager::getSingleton()->findClickedButtons().empty())
|
||||
return;
|
||||
|
||||
vector<Unit*> selectedUnits = mainPlayer->getSelectedUnits();
|
||||
|
||||
switch((Bind)bind){
|
||||
|
||||
+14
-4
@@ -42,8 +42,10 @@ namespace battleship{
|
||||
void onRawMouseWheelScroll(bool);
|
||||
inline CursorState getCursorState(){return cursorState;}
|
||||
inline void setCursorState(CursorState cs){this->cursorState = cs;}
|
||||
inline void addButton(vb01Gui::Button *b){buttons.push_back(b);}
|
||||
inline std::vector<vb01Gui::Button*> getButtons(){return buttons;}
|
||||
inline void addButton(vb01Gui::Button *b){guiButtons.push_back(b);}
|
||||
inline std::vector<vb01Gui::Button*> getGuiButtons(){return guiButtons;}
|
||||
inline std::vector<vb01::Node*> getGuiRects(){return guiRects;}
|
||||
inline std::vector<vb01::Text*> getGuiTexts(){return guiTexts;}
|
||||
inline Player* getPlayer(){return mainPlayer;}
|
||||
inline std::vector<Unit*>& getUnitGroup(int i){return unitGroups[i];}
|
||||
inline void setBuildableStructSelected(bool bss){this->buildableStructSelected = bss;}
|
||||
@@ -51,6 +53,10 @@ namespace battleship{
|
||||
inline float getDepth(){return depth;}
|
||||
inline void setForceCursorState(bool force){this->forceCursorState = force;}
|
||||
inline bool isForceCursorState(){return forceCursorState;}
|
||||
inline void setTradingScreen(bool ts){this->tradingScreen = ts;}
|
||||
inline bool isTradingScreen(){return tradingScreen;}
|
||||
inline void setOfferScreen(bool os){this->offerScreen = os;}
|
||||
inline bool isOfferScreen(){return offerScreen;}
|
||||
private:
|
||||
bool selectedUnitsAmongst(std::vector<Unit*>);
|
||||
void updateGameObjHoveredOn();
|
||||
@@ -75,11 +81,13 @@ namespace battleship{
|
||||
GuiAppState *guiState;
|
||||
std::string unitGuiScreen = "";
|
||||
GameObject *gameObjHoveredOn = nullptr;
|
||||
vb01::Node *dragboxNode = nullptr;
|
||||
vb01::Vector2 clickPoint;
|
||||
std::vector<Unit*> unitGroups[9], prevSelectedUnits;
|
||||
std::vector<Order::Target> targets;
|
||||
std::vector<vb01Gui::Button*> buttons, unitButtons;
|
||||
vb01::Node *dragboxNode = nullptr;
|
||||
std::vector<vb01::Node*> guiRects;
|
||||
std::vector<vb01::Text*> guiTexts;
|
||||
std::vector<vb01Gui::Button*> guiButtons, unitButtons;
|
||||
bool isSelectionBox = false;
|
||||
bool shiftPressed = false;
|
||||
bool controlPressed = false;
|
||||
@@ -90,6 +98,8 @@ namespace battleship{
|
||||
bool selectingDestOrient = false;
|
||||
bool forceCursorState = false;
|
||||
bool orderPossible = false;
|
||||
bool tradingScreen = false;
|
||||
bool offerScreen = false;
|
||||
int playerId, zooms = 0;
|
||||
const int NUM_MAX_ZOOMS = 10;
|
||||
float depth = 1;
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
#include "activeStateBackButton.h"
|
||||
#include "activeGameState.h"
|
||||
#include "gameManager.h"
|
||||
|
||||
#include <stateManager.h>
|
||||
|
||||
namespace battleship{
|
||||
using namespace std;
|
||||
using namespace vb01;
|
||||
using namespace gameBase;
|
||||
|
||||
ActiveStateBackButton::ActiveStateBackButton(Vector3 pos, Vector2 size, string name) : BackButton(pos, size, name, "activeGameState.lua"){}
|
||||
|
||||
void ActiveStateBackButton::onClick(){
|
||||
StateManager *stateManager = GameManager::getSingleton()->getStateManager();
|
||||
ActiveGameState *activeState = (ActiveGameState*)stateManager->getAppStateByType((int)AppStateType::ACTIVE_STATE);
|
||||
activeState->setTradingScreen(false);
|
||||
|
||||
BackButton::onClick();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
#ifndef ACTIVE_STATE_BACK_BUTTON_H
|
||||
#define ACTIVE_STATE_BACK_BUTTON_H
|
||||
|
||||
#include "backButton.h"
|
||||
|
||||
namespace battleship{
|
||||
class ActiveStateBackButton : public BackButton{
|
||||
public:
|
||||
ActiveStateBackButton(vb01::Vector3, vb01::Vector2, std::string);
|
||||
void onClick();
|
||||
private:
|
||||
};
|
||||
}
|
||||
|
||||
#endif
|
||||
+19
-6
@@ -18,15 +18,28 @@ namespace battleship{
|
||||
using namespace vb01Gui;
|
||||
using namespace gameBase;
|
||||
|
||||
ActiveStateButton::ActiveStateButton(Vector3 pos, Vector2 size, string gs, string name, string fontPath, int trigger, string imagePath) : Button(pos, size, name, fontPath, trigger, true, imagePath), guiScreen(gs){
|
||||
ActiveStateButton::ActiveStateButton(Vector3 pos, Vector2 size, string gs, string name, string fontPath, int trigger, string imagePath) :
|
||||
Button(pos, size, name, fontPath, trigger, true, imagePath), guiScreen(gs){}
|
||||
|
||||
void ActiveStateButton::onClick(){
|
||||
StateManager *stateManager = GameManager::getSingleton()->getStateManager();
|
||||
ActiveGameState *activeState = (ActiveGameState*)stateManager->getAppStateByType((int)AppStateType::ACTIVE_STATE);
|
||||
|
||||
if(activeState)
|
||||
activeState->addButton(this);
|
||||
}
|
||||
vector<Button*> buttons = activeState->getGuiButtons();
|
||||
buttons.push_back(this);
|
||||
|
||||
void ActiveStateButton::onClick(){
|
||||
ConcreteGuiManager::getSingleton()->parseLuaScript(guiScreen);
|
||||
vector<Node*> rects = activeState->getGuiRects();
|
||||
vector<Text*> texts = activeState->getGuiTexts();
|
||||
|
||||
ConcreteGuiManager::getSingleton()->readLuaScreenScript(
|
||||
guiScreen,
|
||||
buttons,
|
||||
vector<Listbox*>{},
|
||||
vector<Checkbox*>{},
|
||||
vector<Slider*>{},
|
||||
vector<Textbox*>{},
|
||||
rects,
|
||||
texts
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
#include "orderButton.h"
|
||||
#include "stateToggleButton.h"
|
||||
#include "minimapButton.h"
|
||||
#include "activeStateBackButton.h"
|
||||
|
||||
namespace battleship{
|
||||
using namespace std;
|
||||
@@ -207,9 +208,8 @@ namespace battleship{
|
||||
case SELL_RESEARCH:
|
||||
button = new TradeButton(pos, size, name, (int)guiTable["trigger"], imagePath, (int)SOL_LUA_STATE["UnitId"]["TRADE_CENTER"], TradeButton::Type::SELL_RESEARCH);
|
||||
break;
|
||||
case ACTIVE_GAME_STATE:
|
||||
guiScreen = guiTable["guiScreen"];
|
||||
button = new ActiveStateButton(pos, size, guiScreen, name, fontBasePath + "batang.ttf", (int)guiTable["trigger"], imagePath);
|
||||
case ACTIVE_STATE_BACK:
|
||||
button = new ActiveStateBackButton(pos, size, name);
|
||||
break;
|
||||
case PLAYER_TRADE:
|
||||
guiScreen = guiTable["guiScreen"];
|
||||
|
||||
@@ -45,14 +45,14 @@ namespace battleship{
|
||||
SELL_REFINEDS,
|
||||
BUY_RESEARCH,
|
||||
SELL_RESEARCH,
|
||||
ACTIVE_GAME_STATE,
|
||||
ACTIVE_STATE_BACK,
|
||||
PLAYER_TRADE,
|
||||
TRADING_SCREEN,
|
||||
TRADE_OFFER,
|
||||
RESOURCE_AMMOUNT,
|
||||
UNIT_STATE,
|
||||
ORDER,
|
||||
MINIMAP
|
||||
MINIMAP,
|
||||
};
|
||||
enum ListboxType {
|
||||
CONTROLS,
|
||||
|
||||
@@ -101,13 +101,13 @@ namespace battleship{
|
||||
|
||||
if (!paused) {
|
||||
gm->getStateManager()->dettachAppState(activeState);
|
||||
guiManager->readLuaScreenScript("gamePaused.lua", activeState->getButtons());
|
||||
guiManager->readLuaScreenScript("gamePaused.lua", activeState->getGuiButtons());
|
||||
}
|
||||
else {
|
||||
for(string f : configData::scripts)
|
||||
generateView().script_file(gm->getPath() + f);
|
||||
|
||||
guiManager->readLuaScreenScript("inGame.lua", activeState->getButtons());
|
||||
guiManager->readLuaScreenScript("inGame.lua", activeState->getGuiButtons());
|
||||
sol::state_view SOL_LUA_VIEW = generateView();
|
||||
string gop = SOL_LUA_VIEW["gameObjPrefix"], vfxp = SOL_LUA_VIEW["vfxPrefix"];
|
||||
AssetManager::getSingleton()->load(gm->getPath() + gop, true);
|
||||
|
||||
+9
-12
@@ -16,10 +16,15 @@ namespace battleship{
|
||||
PlayerTradeButton::PlayerTradeButton(Vector3 pos, Vector2 size, string gs, string name, int trigger, string imagePath) : ActiveStateButton(pos, size, gs, name, GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", trigger, imagePath){}
|
||||
|
||||
void PlayerTradeButton::onClick(){
|
||||
ActiveStateButton::onClick();
|
||||
|
||||
StateManager *stateManager = GameManager::getSingleton()->getStateManager();
|
||||
ActiveGameState *activeState = (ActiveGameState*)stateManager->getAppStateByType((int)AppStateType::ACTIVE_STATE);
|
||||
|
||||
if(activeState->isTradingScreen() && !activeState->isOfferScreen()) return;
|
||||
else if(!activeState->isTradingScreen()) activeState->setTradingScreen(true);
|
||||
else if(activeState->isOfferScreen()) activeState->setOfferScreen(false);
|
||||
|
||||
ActiveStateButton::onClick();
|
||||
|
||||
Player *mainPlayer = activeState->getPlayer();
|
||||
Game *game = Game::getSingleton();
|
||||
|
||||
@@ -28,18 +33,11 @@ namespace battleship{
|
||||
sol::state_view SOL_LUA_VIEW = generateView();
|
||||
|
||||
for(int i = 0, lineId = 0; i < players.size(); i++){
|
||||
if(players[i] != mainPlayer){
|
||||
vector<Button*> buttons = guiManager->getButtons();
|
||||
vector<Listbox*> listboxes = guiManager->getListboxes();
|
||||
vector<Checkbox*> checkboxes = guiManager->getCheckboxes();
|
||||
vector<Slider*> sliders = guiManager->getSliders();
|
||||
vector<Textbox*> textboxes = guiManager->getTextboxes();
|
||||
vector<Node*> guiRects = guiManager->getGuiRectangles();
|
||||
vector<Text*> texts = guiManager->getTexts();
|
||||
if(players[i] == mainPlayer) continue;
|
||||
|
||||
SOL_LUA_VIEW.script("lineId = " + to_string(lineId));
|
||||
SOL_LUA_VIEW.script("playerId = " + to_string(i));
|
||||
guiManager->readLuaScreenScript("tradingPlayerGuiTray.lua", buttons, listboxes, checkboxes, sliders, textboxes, guiRects, texts);
|
||||
guiManager->parseLuaScript("tradingPlayerGuiTray.lua");
|
||||
|
||||
vector<Button*> guiButtons = guiManager->getButtons();
|
||||
|
||||
@@ -63,5 +61,4 @@ namespace battleship{
|
||||
lineId++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,9 +27,11 @@ namespace battleship{
|
||||
ConcreteGuiManager *guiManager = ConcreteGuiManager::getSingleton();
|
||||
Game *game = Game::getSingleton();
|
||||
|
||||
if(listbox->getNumLines() > 0){
|
||||
StateManager *stateManager = GameManager::getSingleton()->getStateManager();
|
||||
ActiveGameState *activeState = (ActiveGameState*)stateManager->getAppStateByType((int)AppStateType::ACTIVE_STATE);
|
||||
activeState->setOfferScreen(true);
|
||||
|
||||
if(listbox->getNumLines() > 0){
|
||||
Player *mainPlayer = activeState->getPlayer();
|
||||
|
||||
TradeOffer *tradeOffer = game->findTradeOffers(mainPlayer, game->getPlayer(playerId))[listbox->getSelectedOption()];
|
||||
|
||||
Reference in New Issue
Block a user