mirror of
https://github.com/devZoGok/PlanetFleet.git
synced 2026-08-26 19:43:29 +00:00
refactored trade offers
This commit is contained in:
@@ -7,6 +7,9 @@ HubMargin = {top = 10, left = 10, right = 10, bottom = 10}
|
|||||||
buttonSize = {x = 100, y = 20}
|
buttonSize = {x = 100, y = 20}
|
||||||
textboxSize = {x = 200, y = 25}
|
textboxSize = {x = 200, y = 25}
|
||||||
|
|
||||||
|
warIcon = 'Icons/PlayerStates/war.png'
|
||||||
|
allianceIcon = 'Icons/PlayerStates/alliance.png'
|
||||||
|
|
||||||
gui = {
|
gui = {
|
||||||
{
|
{
|
||||||
guiType = GuiType.GUI_RECTANGLE,
|
guiType = GuiType.GUI_RECTANGLE,
|
||||||
|
|||||||
@@ -4,8 +4,6 @@ buttonSize = {x = 100, y = 20}
|
|||||||
textboxSize = {x = 200, y = 20}
|
textboxSize = {x = 200, y = 20}
|
||||||
|
|
||||||
height = HubPos.y + HubMargin.top + lineId * 30
|
height = HubPos.y + HubMargin.top + lineId * 30
|
||||||
warIcon = 'Icons/PlayerStates/war.png'
|
|
||||||
allianceIcon = 'Icons/PlayerStates/alliance.png'
|
|
||||||
|
|
||||||
gui = {
|
gui = {
|
||||||
{
|
{
|
||||||
@@ -23,7 +21,7 @@ gui = {
|
|||||||
guiType = GuiType.GUI_RECTANGLE,
|
guiType = GuiType.GUI_RECTANGLE,
|
||||||
pos = {x = HubPos.x + HubMargin.left + 100, y = height, z = .11},
|
pos = {x = HubPos.x + HubMargin.left + 100, y = height, z = .11},
|
||||||
size = {x = 50, y = 50},
|
size = {x = 50, y = 50},
|
||||||
imagePath = warIcon
|
imagePath = relationsIcon
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
pos = {x = HubPos.x + HubMargin.left + 200, y = height + 25, z = .11},
|
pos = {x = HubPos.x + HubMargin.left + 200, y = height + 25, z = .11},
|
||||||
|
|||||||
@@ -111,21 +111,13 @@ gui = {
|
|||||||
createResourceTrayGui(false, 2, ResourceTrayGuiId.TEXTBOX),
|
createResourceTrayGui(false, 2, ResourceTrayGuiId.TEXTBOX),
|
||||||
createResourceTrayGui(false, 2, ResourceTrayGuiId.INCREMENT),
|
createResourceTrayGui(false, 2, ResourceTrayGuiId.INCREMENT),
|
||||||
createResourceTrayGui(false, 2, ResourceTrayGuiId.DECREMENT),
|
createResourceTrayGui(false, 2, ResourceTrayGuiId.DECREMENT),
|
||||||
createResourceTrayGui(true, 3, ResourceTrayGuiId.ICON, IconPath.TIME),
|
|
||||||
createResourceTrayGui(true, 3, ResourceTrayGuiId.TEXTBOX),
|
|
||||||
createResourceTrayGui(true, 3, ResourceTrayGuiId.INCREMENT),
|
|
||||||
createResourceTrayGui(true, 3, ResourceTrayGuiId.DECREMENT),
|
|
||||||
createResourceTrayGui(false, 3, ResourceTrayGuiId.ICON, IconPath.TIME),
|
|
||||||
createResourceTrayGui(false, 3, ResourceTrayGuiId.TEXTBOX),
|
|
||||||
createResourceTrayGui(false, 3, ResourceTrayGuiId.INCREMENT),
|
|
||||||
createResourceTrayGui(false, 3, ResourceTrayGuiId.DECREMENT),
|
|
||||||
|
|
||||||
{
|
{
|
||||||
guiType = GuiType.BUTTON,
|
guiType = GuiType.BUTTON,
|
||||||
buttonType = ButtonType.PLAYER_TRADE,
|
buttonType = ButtonType.PLAYER_TRADE,
|
||||||
name = 'Back',
|
name = 'Back',
|
||||||
guiScreen = 'tradingHub.lua',
|
guiScreen = 'tradingHub.lua',
|
||||||
pos = {x = HubPos.x + HubSize.x - 2 * buttonSize.x - HubMargin.right, y = HubPos.y + HubSize.y - buttonSize.y - HubMargin.bottom, z = .2},
|
pos = {x = HubPos.x + HubSize.x - 3 * buttonSize.x - HubMargin.right, y = HubPos.y + HubSize.y - buttonSize.y - HubMargin.bottom, z = .2},
|
||||||
size = buttonSize,
|
size = buttonSize,
|
||||||
trigger = 10
|
trigger = 10
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -276,14 +276,4 @@ namespace battleship{
|
|||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
vector<TradeOffer*> Game::findTradeOffers(Player *pl1, Player *pl2){
|
|
||||||
vector<TradeOffer*> offers;
|
|
||||||
|
|
||||||
for(TradeOffer *to : tradeOffers)
|
|
||||||
if((to->initPlayer == pl1 || to->recPlayer == pl1) && (to->initPlayer == pl2 || to->recPlayer == pl2))
|
|
||||||
offers.push_back(to);
|
|
||||||
|
|
||||||
return offers;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,9 +27,7 @@ namespace battleship{
|
|||||||
void initTechnologies();
|
void initTechnologies();
|
||||||
float calcAbilFromTech(Ability::Type, std::vector<int>, int, int);
|
float calcAbilFromTech(Ability::Type, std::vector<int>, int, int);
|
||||||
bool isUnitUnlocked(std::vector<int>, int);
|
bool isUnitUnlocked(std::vector<int>, int);
|
||||||
std::vector<TradeOffer*> findTradeOffers(Player*, Player*);
|
|
||||||
inline void setDebug(bool d){this->debug = d;}
|
inline void setDebug(bool d){this->debug = d;}
|
||||||
inline void addTradeOffer(TradeOffer *to){tradeOffers.push_back(to);}
|
|
||||||
inline void addPlayer(Player *pl){players.push_back(pl);}
|
inline void addPlayer(Player *pl){players.push_back(pl);}
|
||||||
inline bool isDebug(){return debug;}
|
inline bool isDebug(){return debug;}
|
||||||
inline std::vector<Player*>& getPlayers(){return players;}
|
inline std::vector<Player*>& getPlayers(){return players;}
|
||||||
@@ -46,7 +44,6 @@ namespace battleship{
|
|||||||
std::vector<Technology> technologies;
|
std::vector<Technology> technologies;
|
||||||
std::vector<Ability> abilities;
|
std::vector<Ability> abilities;
|
||||||
std::vector<Player*> players;
|
std::vector<Player*> players;
|
||||||
std::vector<TradeOffer*> tradeOffers;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+10
-9
@@ -16,24 +16,25 @@ namespace battleship{
|
|||||||
using namespace vb01Gui;
|
using namespace vb01Gui;
|
||||||
using namespace gameBase;
|
using namespace gameBase;
|
||||||
|
|
||||||
OfferButton::OfferButton(Vector3 pos, Vector2 size, int plId, string name, int trigger, string imagePath) : Button(pos, size, name, GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", trigger, true, imagePath), playerId(plId){}
|
OfferButton::OfferButton(Vector3 pos, Vector2 size, int plId, string name, int trigger, string imagePath) :
|
||||||
|
Button(pos, size, name, GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", trigger, true, imagePath),
|
||||||
|
playerId(plId){}
|
||||||
|
|
||||||
void OfferButton::onClick(){
|
void OfferButton::onClick(){
|
||||||
ConcreteGuiManager *guiManager = ConcreteGuiManager::getSingleton();
|
ConcreteGuiManager *guiManager = ConcreteGuiManager::getSingleton();
|
||||||
vector<Textbox*> textboxes = guiManager->getTextboxes();
|
vector<Textbox*> textboxes = guiManager->getTextboxes();
|
||||||
|
|
||||||
int recRef = (textboxes[0]->getText() == L"" ? 0 : stoi(textboxes[0]->getText()));
|
int buyRef = (textboxes[0]->getText() == L"" ? 0 : stoi(textboxes[0]->getText()));
|
||||||
int initRef = (textboxes[1]->getText() == L"" ? 0 : stoi(textboxes[1]->getText()));
|
int sellRef = (textboxes[1]->getText() == L"" ? 0 : stoi(textboxes[1]->getText()));
|
||||||
int recWealth = (textboxes[2]->getText() == L"" ? 0 : stoi(textboxes[2]->getText()));
|
int buyWealth = (textboxes[2]->getText() == L"" ? 0 : stoi(textboxes[2]->getText()));
|
||||||
int initWealth = (textboxes[3]->getText() == L"" ? 0 : stoi(textboxes[3]->getText()));
|
int sellWealth = (textboxes[3]->getText() == L"" ? 0 : stoi(textboxes[3]->getText()));
|
||||||
int recRes = (textboxes[4]->getText() == L"" ? 0 : stoi(textboxes[4]->getText()));
|
int buyRes = (textboxes[4]->getText() == L"" ? 0 : stoi(textboxes[4]->getText()));
|
||||||
int initRes = (textboxes[5]->getText() == L"" ? 0 : stoi(textboxes[5]->getText()));
|
int sellRes = (textboxes[5]->getText() == L"" ? 0 : stoi(textboxes[5]->getText()));
|
||||||
|
|
||||||
StateManager *stateManager = GameManager::getSingleton()->getStateManager();
|
StateManager *stateManager = GameManager::getSingleton()->getStateManager();
|
||||||
ActiveGameState *activeState = (ActiveGameState*)stateManager->getAppStateByType((int)AppStateType::ACTIVE_STATE);
|
ActiveGameState *activeState = (ActiveGameState*)stateManager->getAppStateByType((int)AppStateType::ACTIVE_STATE);
|
||||||
Player *mainPlayer = activeState->getPlayer();
|
Player *mainPlayer = activeState->getPlayer();
|
||||||
|
|
||||||
Game *game = Game::getSingleton();
|
mainPlayer->addTradeOffer(Game::getSingleton()->getPlayer(playerId), new TradeOffer(true, true, buyRef, sellRef, buyWealth, sellWealth, buyRes, sellRes));
|
||||||
game->addTradeOffer(new TradeOffer(mainPlayer, game->getPlayer(playerId), initRef, recRef, initWealth, recWealth, initRes, recRes));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+28
-7
@@ -1,9 +1,11 @@
|
|||||||
#include <solUtil.h>
|
#include <solUtil.h>
|
||||||
|
#include <stateManager.h>
|
||||||
|
|
||||||
#include "player.h"
|
#include "player.h"
|
||||||
|
#include "game.h"
|
||||||
#include "structure.h"
|
#include "structure.h"
|
||||||
#include "projectile.h"
|
#include "projectile.h"
|
||||||
#include "stateManager.h"
|
#include "tradeOffer.h"
|
||||||
#include "activeGameState.h"
|
#include "activeGameState.h"
|
||||||
#include "resourceDeposit.h"
|
#include "resourceDeposit.h"
|
||||||
|
|
||||||
@@ -213,11 +215,30 @@ namespace battleship{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::build(int id, Vector3 pos, Quaternion rot, bool additionalOrder){
|
void Player::initTradeOffersVec(){
|
||||||
/*
|
vector<Player*> players = Game::getSingleton()->getPlayers();
|
||||||
Unit *buildStruct = GameObjectFactory::createUnit(this, id, pos, rot);
|
|
||||||
addUnit(buildStruct);
|
for(Player *pl : players){
|
||||||
issueOrder(Order::TYPE::BUILD, vector<Order::Target>{Order::Target(buildStruct)}, additionalOrder);
|
if(this == pl) continue;
|
||||||
*/
|
|
||||||
|
if(team == pl->getTeam())
|
||||||
|
tradeOffers.push_back(make_pair(pl, vector<TradeOffer*>{}));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Player::addTradeOffer(Player *player, TradeOffer *offer){
|
||||||
|
if(tradeOffers.empty()) initTradeOffersVec();
|
||||||
|
|
||||||
|
for(pair<Player*, vector<TradeOffer*>> &offers : tradeOffers)
|
||||||
|
if(offers.first == player)
|
||||||
|
offers.second.push_back(offer);
|
||||||
|
}
|
||||||
|
|
||||||
|
vector<TradeOffer*> Player::getTradeOffers(Player *player){
|
||||||
|
for(pair<Player*, vector<TradeOffer*>> offers : tradeOffers)
|
||||||
|
if(offers.first == player)
|
||||||
|
return offers.second;
|
||||||
|
|
||||||
|
return vector<TradeOffer*>{};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
#define PLAYER_H
|
#define PLAYER_H
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
#include "gameManager.h"
|
#include "gameManager.h"
|
||||||
#include "trader.h"
|
#include "trader.h"
|
||||||
@@ -11,6 +12,7 @@ namespace battleship{
|
|||||||
class ResourceDeposit;
|
class ResourceDeposit;
|
||||||
class Projectile;
|
class Projectile;
|
||||||
class Unit;
|
class Unit;
|
||||||
|
struct TradeOffer;
|
||||||
|
|
||||||
enum class ResourceType{REFINEDS, WEALTH, RESEARCH};
|
enum class ResourceType{REFINEDS, WEALTH, RESEARCH};
|
||||||
|
|
||||||
@@ -32,7 +34,8 @@ namespace battleship{
|
|||||||
void addTechnology(int);
|
void addTechnology(int);
|
||||||
int getResource(ResourceType);
|
int getResource(ResourceType);
|
||||||
void updateResource(ResourceType, int, bool);
|
void updateResource(ResourceType, int, bool);
|
||||||
void build(int, vb01::Vector3, vb01::Quaternion, bool);
|
void addTradeOffer(Player*, TradeOffer*);
|
||||||
|
std::vector<TradeOffer*> getTradeOffers(Player*);
|
||||||
inline Trader* getTrader(){return trader;}
|
inline Trader* getTrader(){return trader;}
|
||||||
inline void deselectUnits(){selectedUnits.clear();}
|
inline void deselectUnits(){selectedUnits.clear();}
|
||||||
inline Unit* getSelectedUnit(int id){return selectedUnits[id];}
|
inline Unit* getSelectedUnit(int id){return selectedUnits[id];}
|
||||||
@@ -87,8 +90,10 @@ namespace battleship{
|
|||||||
std::vector<ResourceDeposit*> resourceDeposits;
|
std::vector<ResourceDeposit*> resourceDeposits;
|
||||||
vb01::Vector3 color;
|
vb01::Vector3 color;
|
||||||
vb01::Material *colorMaterial = nullptr;
|
vb01::Material *colorMaterial = nullptr;
|
||||||
|
std::vector<std::pair<Player*, std::vector<TradeOffer*>>> tradeOffers;
|
||||||
|
|
||||||
int getOrderLineId(Order::TYPE, vb01::Vector3, vb01::Vector3);
|
int getOrderLineId(Order::TYPE, vb01::Vector3, vb01::Vector3);
|
||||||
|
void initTradeOffersVec();
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ namespace battleship{
|
|||||||
|
|
||||||
SOL_LUA_VIEW.script("lineId = " + to_string(lineId));
|
SOL_LUA_VIEW.script("lineId = " + to_string(lineId));
|
||||||
SOL_LUA_VIEW.script("playerId = " + to_string(i));
|
SOL_LUA_VIEW.script("playerId = " + to_string(i));
|
||||||
|
SOL_LUA_VIEW.script(string("relationsIcon = ") + (players[i]->getTeam() == mainPlayer->getTeam() ? "allianceIcon" : "warIcon"));
|
||||||
guiManager->parseLuaScript("tradingPlayerGuiTray.lua");
|
guiManager->parseLuaScript("tradingPlayerGuiTray.lua");
|
||||||
|
|
||||||
vector<Button*> guiButtons = guiManager->getButtons();
|
vector<Button*> guiButtons = guiManager->getButtons();
|
||||||
@@ -47,7 +48,7 @@ namespace battleship{
|
|||||||
|
|
||||||
int numListboxes = guiManager->getListboxes().size();
|
int numListboxes = guiManager->getListboxes().size();
|
||||||
Listbox *listbox = guiManager->getListboxes()[numListboxes - 1];
|
Listbox *listbox = guiManager->getListboxes()[numListboxes - 1];
|
||||||
int numOffers = game->findTradeOffers(mainPlayer, players[i]).size();
|
int numOffers = mainPlayer->getTradeOffers(players[i]).size();
|
||||||
|
|
||||||
for(int j = 0; j < numOffers; j++)
|
for(int j = 0; j < numOffers; j++)
|
||||||
listbox->addLine(L"TRADE_OFFER_" + to_wstring(j));
|
listbox->addLine(L"TRADE_OFFER_" + to_wstring(j));
|
||||||
|
|||||||
+11
-12
@@ -5,19 +5,18 @@
|
|||||||
|
|
||||||
namespace battleship{
|
namespace battleship{
|
||||||
struct TradeOffer{
|
struct TradeOffer{
|
||||||
Player *initPlayer = nullptr, *recPlayer = nullptr;
|
bool sellerAggrees = true, sellerDelivers = true, buyerAggrees = false, buyerDelivers = false;
|
||||||
int initRefineds = 0, recRefineds = 0, initWealth = 0, recWealth = 0, initResearch = 0, recResearch = 0;
|
int sellRefineds = 0, buyRefineds = 0, sellWealth = 0, buyWealth = 0, sellResearch = 0, buyResearch = 0;
|
||||||
bool initPlAgreed = true, recPlAgreed = false;
|
|
||||||
|
|
||||||
TradeOffer(Player *ip, Player *rp, int ir, int rr, int iw, int rw, int it, int rt) :
|
TradeOffer(bool bd, bool sd, int br, int sr, int bw, int sw, int bt, int st) :
|
||||||
initPlayer(ip),
|
buyerDelivers(bd),
|
||||||
recPlayer(rp),
|
sellerDelivers(sd),
|
||||||
initRefineds(ir),
|
buyRefineds(br),
|
||||||
recRefineds(rr),
|
buyWealth(bw),
|
||||||
initWealth(iw),
|
buyResearch(bt),
|
||||||
recWealth(rw),
|
sellRefineds(sr),
|
||||||
initResearch(it),
|
sellWealth(sw),
|
||||||
recResearch(rr)
|
sellResearch(st)
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,6 +24,8 @@ namespace battleship{
|
|||||||
{}
|
{}
|
||||||
|
|
||||||
void TradingScreenButton::onClick(){
|
void TradingScreenButton::onClick(){
|
||||||
|
generateView().script("playerId = " + to_string(playerId));
|
||||||
|
|
||||||
ConcreteGuiManager *guiManager = ConcreteGuiManager::getSingleton();
|
ConcreteGuiManager *guiManager = ConcreteGuiManager::getSingleton();
|
||||||
Game *game = Game::getSingleton();
|
Game *game = Game::getSingleton();
|
||||||
|
|
||||||
@@ -34,17 +36,17 @@ namespace battleship{
|
|||||||
if(listbox->getNumLines() > 0){
|
if(listbox->getNumLines() > 0){
|
||||||
Player *mainPlayer = activeState->getPlayer();
|
Player *mainPlayer = activeState->getPlayer();
|
||||||
|
|
||||||
TradeOffer *tradeOffer = game->findTradeOffers(mainPlayer, game->getPlayer(playerId))[listbox->getSelectedOption()];
|
TradeOffer *tradeOffer = mainPlayer->getTradeOffers(game->getPlayer(playerId))[listbox->getSelectedOption()];
|
||||||
|
|
||||||
ActiveStateButton::onClick();
|
ActiveStateButton::onClick();
|
||||||
vector<Textbox*> textboxes = guiManager->getTextboxes();
|
vector<Textbox*> textboxes = guiManager->getTextboxes();
|
||||||
|
|
||||||
textboxes[0]->setEntry(to_wstring(tradeOffer->recRefineds));
|
textboxes[0]->setEntry(to_wstring(tradeOffer->buyRefineds));
|
||||||
textboxes[1]->setEntry(to_wstring(tradeOffer->initRefineds));
|
textboxes[1]->setEntry(to_wstring(tradeOffer->sellRefineds));
|
||||||
textboxes[2]->setEntry(to_wstring(tradeOffer->recWealth));
|
textboxes[2]->setEntry(to_wstring(tradeOffer->buyWealth));
|
||||||
textboxes[3]->setEntry(to_wstring(tradeOffer->initWealth));
|
textboxes[3]->setEntry(to_wstring(tradeOffer->sellWealth));
|
||||||
textboxes[4]->setEntry(to_wstring(tradeOffer->recResearch));
|
textboxes[4]->setEntry(to_wstring(tradeOffer->buyResearch));
|
||||||
textboxes[5]->setEntry(to_wstring(tradeOffer->initResearch));
|
textboxes[5]->setEntry(to_wstring(tradeOffer->sellResearch));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
ActiveStateButton::onClick();
|
ActiveStateButton::onClick();
|
||||||
|
|||||||
Reference in New Issue
Block a user