forked from townforge/townforge
469 lines
27 KiB
C++
469 lines
27 KiB
C++
#ifndef UI_URHO3D_H
|
|
#define UI_URHO3D_H
|
|
|
|
#include <Urho3D/Core/Context.h>
|
|
#include <Urho3D/Core/Variant.h>
|
|
#include <Urho3D/Container/Str.h>
|
|
#include <Urho3D/Core/StringUtils.h>
|
|
#include <Urho3D/UI/UI.h>
|
|
#include <Urho3D/UI/ListView.h>
|
|
#include <Urho3D/UI/Button.h>
|
|
#include <tb/tb_window.h>
|
|
#include <tb/tb_layout.h>
|
|
#include <tb/tb_select_item.h>
|
|
#include "math_helper.h"
|
|
#include "controls.h"
|
|
#include "shade-button.h"
|
|
#include "shadable-window.h"
|
|
#include "ui-notifier.h"
|
|
#include "game-state.h"
|
|
#include "ui-tb-window.h"
|
|
#include "map.h"
|
|
|
|
class GameWallet;
|
|
|
|
class UIBuildingSettingsDialog;
|
|
class UILastUpdateEventsDialog;
|
|
class UIRenameDialog;
|
|
class UIRepairDialog;
|
|
class UITradeDialog;
|
|
class UILeaderboardsDialog;
|
|
class UIResearchDialog;
|
|
class UIOptionsDialog;
|
|
class UIPlayerInfoDialog;
|
|
class UIFileSelector;
|
|
class UISelectAmountDialog;
|
|
class UINodeConfigDialog;
|
|
class UIFoundCityDialog;
|
|
class UITravelToCityDialog;
|
|
class UINewItemDialog;
|
|
class UIDividendDialog;
|
|
class UIIgnoreDialog;
|
|
class UIEventBadgeDialog;
|
|
class UICreditsDialog;
|
|
class UIDefineAttributeDialog;
|
|
class UIDiceRollDialog;
|
|
class UIHuntDialog;
|
|
class UIQueuedCommandsDialog;
|
|
class UICityLevelDialog;
|
|
class UIPaletteDialog;
|
|
class UISelectMaterial;
|
|
class UIFightFireDialog;
|
|
class UIServiceDialog;
|
|
class UIAcceptInvitationDialog;
|
|
class UIAddCitySpecializationDialog;
|
|
class UINoWalletIntroDialog;
|
|
class UISowDialog;
|
|
class UIHarvestDialog;
|
|
class UIMintDialog;
|
|
class UISmeltDialog;
|
|
|
|
namespace Urho3D
|
|
{
|
|
class Sprite;
|
|
class Vector3;
|
|
}
|
|
|
|
namespace tb
|
|
{
|
|
class TBID;
|
|
class TBWidget;
|
|
class TBSelectList;
|
|
class TBCheckBox;
|
|
class TBTextField;
|
|
class TBToggleContainer;
|
|
}
|
|
|
|
enum EditMode
|
|
{
|
|
EM_SELECT_RECTANGLE,
|
|
EM_SELECT_ELLIPSE,
|
|
};
|
|
|
|
URHO3D_EVENT(E_CRYPTOCITY_LOAD_WALLET, LoadWallet) {}
|
|
URHO3D_EVENT(E_CRYPTOCITY_DEPOSIT, Deposit) { URHO3D_PARAM(P_AMOUNT, Amount); /*, uint64_t */ }
|
|
URHO3D_EVENT(E_CRYPTOCITY_WITHDRAW, Withdraw) { URHO3D_PARAM(P_AMOUNT, Amount); /* uint64_t */ }
|
|
URHO3D_EVENT(E_CRYPTOCITY_BUY_LAND, BuyLand) {}
|
|
URHO3D_EVENT(E_CRYPTOCITY_BUILDING_SETTINGS, BuildingSettings) { URHO3D_PARAM(P_ROLE, Role); /* uint8_t */ URHO3D_PARAM(P_ECONOMIC_POWER, EconomicPower); /* uint32_t */ URHO3D_PARAM(P_NAME, Name); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_REPAIR, Repair) { URHO3D_PARAM(P_FLAGS, Flags); /* vector */ }
|
|
URHO3D_EVENT(E_CRYPTOCITY_BUY_ITEMS, BuyItems) { URHO3D_PARAM(P_QUANTITIES, Quantities); /* vector */ }
|
|
URHO3D_EVENT(E_CRYPTOCITY_BUY, Buy) { URHO3D_PARAM(P_TYPE, Type); URHO3D_PARAM(P_ID, ID); URHO3D_PARAM(P_AMOUNT, Amount); URHO3D_PARAM(P_PRICE, Price); URHO3D_PARAM(P_ACCRUAL_START_HEIGHT, AccrualStartHeight); URHO3D_PARAM(P_ACCRUAL, Accrual); URHO3D_PARAM(P_ACCRUAL_PRICE_LIMIT, AccrualPriceLimit); URHO3D_PARAM(P_MATCHES, Matches); URHO3D_PARAM(P_COST, Cost); URHO3D_PARAM(P_EXPIRATION, Expiration); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_SELL, Sell) { URHO3D_PARAM(P_TYPE, Type); URHO3D_PARAM(P_ID, ID); URHO3D_PARAM(P_AMOUNT, Amount); URHO3D_PARAM(P_PRICE, Price); URHO3D_PARAM(P_ACCRUAL_START_HEIGHT, AccrualStartHeight); URHO3D_PARAM(P_ACCRUAL, Accrual); URHO3D_PARAM(P_ACCRUAL_PRICE_LIMIT, AccrualPriceLimit); URHO3D_PARAM(P_MATCHES, Matches); URHO3D_PARAM(P_COST, Cost); URHO3D_PARAM(P_EXPIRATION, Expiration); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_ASSIGN_ITEMS, AssignItems) { URHO3D_PARAM(P_QUANTITIES, Quantities); /* vector */ }
|
|
URHO3D_EVENT(E_CRYPTOCITY_DESTROY_ITEMS, DestroyItems) { URHO3D_PARAM(P_QUANTITIES, Quantities); /* vector */ }
|
|
URHO3D_EVENT(E_CRYPTOCITY_ADD_BLOCK, AddBlock) {}
|
|
URHO3D_EVENT(E_CRYPTOCITY_REMOVE_BLOCK, RemoveBlock) { URHO3D_PARAM(P_TOP_LEVEL, TopLevel); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_REMOVE_HIDDEN_BLOCKS, RemoveHiddenBlocks) {}
|
|
URHO3D_EVENT(E_CRYPTOCITY_APPROVE_BUILD, ApproveBuild) {}
|
|
URHO3D_EVENT(E_CRYPTOCITY_ABANDON_BUILD, AbandonBuild) {}
|
|
URHO3D_EVENT(E_CRYPTOCITY_MATERIAL_SELECTED, MaterialSelected) { URHO3D_PARAM(P_MATERIAL, Material); /* int */ }
|
|
URHO3D_EVENT(E_CRYPTOCITY_VARIANT_SELECTED, VariantSelected) { URHO3D_PARAM(P_VARIANT, Variant); /* int */ }
|
|
URHO3D_EVENT(E_CRYPTOCITY_UNDO, Undo) { }
|
|
URHO3D_EVENT(E_CRYPTOCITY_REDO, Redo) { }
|
|
URHO3D_EVENT(E_CRYPTOCITY_LOAD_MODEL, LoadModel) { URHO3D_PARAM(P_FILENAME, Filename); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_SAVE_MODEL, SaveModel) { URHO3D_PARAM(P_FILENAME, Filename); URHO3D_PARAM(P_SELECTION, Selection); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_EDIT_MODE_CHANGED, EditModeChanged) { URHO3D_PARAM(P_EDIT_MODE, Mode); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_GROW_SELECTION, GrowSelection) { }
|
|
URHO3D_EVENT(E_CRYPTOCITY_SHRINK_SELECTION, ShrinkSelection) { }
|
|
URHO3D_EVENT(E_CRYPTOCITY_SELECT_EDGE, SelectEdge) { }
|
|
URHO3D_EVENT(E_CRYPTOCITY_SELECT_WHOLE_FLAG, SelectWholeFlag) { }
|
|
URHO3D_EVENT(E_CRYPTOCITY_GO_TO_FLAG, GoToFlag) { URHO3D_PARAM(P_FLAG, Flag); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_GO_TO_VISTA, GoToVista) { URHO3D_PARAM(P_CITY, City); URHO3D_PARAM(P_POSITION, Position); URHO3D_PARAM(P_ORIENTATION, Orientation); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_GET_VISTA, GetVista) { URHO3D_PARAM(P_CITY, City); URHO3D_PARAM(P_POSITION, Position); URHO3D_PARAM(P_ORIENTATION, Orientation); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_GET_GAME_UPDATE_EVENTS, GetGameUpdateEvents) { URHO3D_PARAM(P_HEIGHT, Height); URHO3D_PARAM(P_EVENTS, Events); URHO3D_PARAM(P_TIMESTAMP, Timestamp); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_RENAME_FLAG, RenameFlag) { URHO3D_PARAM(P_NAME, Name); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_DEMOLISH_FLAG, DemolishFlag) { }
|
|
URHO3D_EVENT(E_CRYPTOCITY_DESTROY_FLAG, DestroyFlag) { }
|
|
URHO3D_EVENT(E_CRYPTOCITY_CHAT, Chat) { }
|
|
URHO3D_EVENT(E_CRYPTOCITY_RESEARCH, Research) { URHO3D_PARAM(P_DISCOVERY, Discovery); URHO3D_PARAM(P_AMOUNT, Amount); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_ENABLE_SHADOWS, EnableShadows) { URHO3D_PARAM(P_ENABLE, Enable); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_ENABLE_CLOUDS, EnableClouds) { URHO3D_PARAM(P_ENABLE, Enable); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_ENABLE_HORIZON, EnableHorizon) { URHO3D_PARAM(P_ENABLE, Enable); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_ENABLE_DYNAMIC_SKY, EnableDynamicSky) { URHO3D_PARAM(P_ENABLE, Enable); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_TIME_OF_DAY, TimeOfDay) { URHO3D_PARAM(P_TIME_OF_DAY, TimeOfDay); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_SHOW_FLAGS, ShowFlags) { URHO3D_PARAM(P_SHOW, Show); /* bool */ }
|
|
URHO3D_EVENT(E_CRYPTOCITY_SET_NODE_CONFIG, SetNodeConfig) { URHO3D_PARAM(P_ADDRESS, Address); URHO3D_PARAM(P_PORT, Port); URHO3D_PARAM(P_SUCCESS, Success); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_FOUND_CITY, FoundCity) { URHO3D_PARAM(P_ID, ID); URHO3D_PARAM(P_SEED, Seed); URHO3D_PARAM(P_NAME, Name); URHO3D_PARAM(P_COST, Cost); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_TRAVEL_TO_CITY, TravelToCity) { URHO3D_PARAM(P_CITY, City); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_GIVE_ITEMS, GiveItems) { URHO3D_PARAM(P_RECIPIENT, Recipient); URHO3D_PARAM(P_QUANTITIES, Quantities); /* vector */ }
|
|
URHO3D_EVENT(E_CRYPTOCITY_GIVE_MONEY, GiveMoney) { URHO3D_PARAM(P_RECIPIENT, Recipient); URHO3D_PARAM(P_AMOUNT, Amount); /* uint64_t */ }
|
|
URHO3D_EVENT(E_CRYPTOCITY_EXIT, Exit) { }
|
|
URHO3D_EVENT(E_CRYPTOCITY_CAMERA_TYPE, CameraType) { URHO3D_PARAM(P_TYPE, Type); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_GROUND_TYPE, GroundType) { URHO3D_PARAM(P_TYPE, Type); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_GRAPHICS_MODE, GraphicsMode) { URHO3D_PARAM(P_MONITOR, Monitor); URHO3D_PARAM(P_WIDTH, Width); URHO3D_PARAM(P_HEIGHT, Height); URHO3D_PARAM(P_REFRESH_RATE, RefreshRate); URHO3D_PARAM(P_SUCCESS, Success); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_NEW_ITEM, NewItem) { URHO3D_PARAM(P_AMOUNT, Amount); URHO3D_PARAM(P_NAME, Name); URHO3D_PARAM(P_IS_GROUP, IsGroup); URHO3D_PARAM(P_IS_PUBLIC, IsPublic); URHO3D_PARAM(P_GROUP, Group); URHO3D_PARAM(P_PRIMARY_DESCRIPTION, PrimaryDescription); URHO3D_PARAM(P_SECONDARY_DESCRIPTION, SecondaryDescription); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_DIVIDEND, Dividend) { URHO3D_PARAM(P_AMOUNT, Amount); URHO3D_PARAM(P_OWNED_ITEM, OwnedItem); URHO3D_PARAM(P_DISTRIBUTED_ITEM, DistributedItem); URHO3D_PARAM(P_NOTE, Note); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_GET_IGNORE_SETTINGS, GetIgnoreSettings) { URHO3D_PARAM(P_IGNORE, Ignore); URHO3D_PARAM(P_MASTER, Master); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_SET_IGNORE_SETTINGS, SetIgnoreSettings) { URHO3D_PARAM(P_IGNORE, Ignore); URHO3D_PARAM(P_MASTER, Master); URHO3D_PARAM(P_NOTE, Note); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_EVENT_BADGE, EventBadge) { URHO3D_PARAM(P_BADGE_ID, BadgeId); URHO3D_PARAM(P_NAME, Name); URHO3D_PARAM(P_DESCRIPTION, Description); URHO3D_PARAM(P_INSTANCES, Instances); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_RESIZE_FLAG, ResizeFlag) {}
|
|
URHO3D_EVENT(E_CRYPTOCITY_CONTROLS_CHANGED, ControlsChanged) {}
|
|
URHO3D_EVENT(E_CRYPTOCITY_SELECT_EXTEND, SelectExtend) { URHO3D_PARAM(P_DX0, DX0); URHO3D_PARAM(P_DY0, DY0); URHO3D_PARAM(P_DX1, DX1); URHO3D_PARAM(P_DY1, DY1); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_DEFINE_ATTRIBUTE, DefineAttribute) { URHO3D_PARAM(P_NAME, Name); URHO3D_PARAM(P_DESCRIPTION, Description); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_INCREASE_ATTRIBUTE, IncreaseAttribute) { URHO3D_PARAM(P_ATTRIBUTES, Attributes); /* vector */ }
|
|
URHO3D_EVENT(E_CRYPTOCITY_SAVE_PLAYER_PROFILE, SavePlayerProfile) { URHO3D_PARAM(P_PROFILE, Profile); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_DICE_ROLL, DiceRoll) { URHO3D_PARAM(P_TEXT, Text); URHO3D_PARAM(P_MIN_VALUE, MinValue); URHO3D_PARAM(P_MAX_VALUE, MaxValue); URHO3D_PARAM(P_ACCOUNT, Account); URHO3D_PARAM(P_ATTRIBUTE, Attribute); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_HUNT, Hunt) { URHO3D_PARAM(P_TARGET, Target); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_PALETTE, Palette) { URHO3D_PARAM(P_FLAG, Flag); URHO3D_PARAM(P_PALETTE, Palette); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_GET_TEXTURES, GetTextures) { URHO3D_PARAM(P_TEXTURES, Textures); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_FIGHT_FIRE, FightFire) { URHO3D_PARAM(P_BURNING_FLAG, BurningFlag); URHO3D_PARAM(P_FIRE_STATE, FireState); URHO3D_PARAM(P_FIREFIGHTING_FLAG, FirefightingFlag); URHO3D_PARAM(P_LAST_FIREFIGHTING_HEIGHT, LastFirefightingHeight); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_SERVICE_PRICE, ServicePrice) { URHO3D_PARAM(P_FLAG, Flag); URHO3D_PARAM(P_PRICE, Price); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_GENERATE_INVITATION, GenerateInvitation) { URHO3D_PARAM(P_AMOUNT, Amount); URHO3D_PARAM(P_EXPIRATION, Expiration); URHO3D_PARAM(P_INVITATION, Invitation); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_ACCEPT_INVITATION, AcceptInvitation) { URHO3D_PARAM(P_INVITATION, Invitation); URHO3D_PARAM(P_FILENAME, Filename); URHO3D_PARAM(P_NAME, Name); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_REQUEST_INVITATION_STATUS, RequestInvitationStatus) { URHO3D_PARAM(P_PUBLIC_KEY, PublicKey); URHO3D_PARAM(P_USED, Used); URHO3D_PARAM(P_BALANCE_OK, BalanceOK); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_CREATE_NEW_WALLET, CreateNewWallet) { URHO3D_PARAM(P_FILENAME, Filename); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_START_MINING, StartMining) { }
|
|
URHO3D_EVENT(E_CRYPTOCITY_STOP_MINING, StopMining) { }
|
|
URHO3D_EVENT(E_CRYPTOCITY_MUSIC_TRACK, MusicTrack) { URHO3D_PARAM(P_TRACK, Track); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_MUSIC_VOLUME, MusicVolume) { URHO3D_PARAM(P_VOLUME, Volume); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_MUSIC_SKIP_TRACK, MusicSkipTrack) { }
|
|
URHO3D_EVENT(E_CRYPTOCITY_SFX_VOLUME, SFXVolume) { URHO3D_PARAM(P_VOLUME, Volume); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_PLAY_SFX_ON_NEW_BLOCK, PlaySFXOnNewBlock) { URHO3D_PARAM(P_PLAY, Play); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_ADD_CITY_SPECIALIZATION, AddCitySpecialization) { URHO3D_PARAM(P_SPECIALIZATION, Specialization); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_INCLUDE_UNMATCHED_TRADES_IN_QUEUED_COMMANDS, IncludeUnmatchedTradesInQueuedCommands) { URHO3D_PARAM(P_INCLUDE, Include); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_COMPASS, Compass) { URHO3D_PARAM(P_COMPASS, Compass); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_CALENDAR, Calendar) { URHO3D_PARAM(P_CALENDAR, Calendar); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_SOW, Sow) { URHO3D_PARAM(P_FLAG, Flag); URHO3D_PARAM(P_CROP, Crop); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_HARVEST, Harvest) { URHO3D_PARAM(P_FLAG, Flag); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_RESTORE_MODEL_BACKUP, RestoreModelBackup) { URHO3D_PARAM(P_RESTORE, Restore); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_MAIN_PANEL_GEOMETRY, MainPanelGeometry) { URHO3D_PARAM(P_X, X); URHO3D_PARAM(P_Y, Y); URHO3D_PARAM(P_WIDTH, Width); URHO3D_PARAM(P_HEIGHT, Height); URHO3D_PARAM(P_SHADED, Shaded); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_BUILDING_STATS, BuildingStats) { }
|
|
URHO3D_EVENT(E_CRYPTOCITY_MINT, Mint) { URHO3D_PARAM(P_COIN, Coin); URHO3D_PARAM(P_AMOUNT, Amount); URHO3D_PARAM(P_NAME, Name); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_SMELT, Smelt) { URHO3D_PARAM(P_COIN, Coin); URHO3D_PARAM(P_AMOUNT, Amount); URHO3D_PARAM(P_NAME, Name); }
|
|
URHO3D_EVENT(E_CRYPTOCITY_CANCEL_NONCE, CancelNonce) { URHO3D_PARAM(P_NONCE, Nonce); }
|
|
|
|
class UIUrho3D: public Urho3D::UIElement
|
|
{
|
|
public:
|
|
UIUrho3D(Urho3D::Context *ctx, const GameState *gameState = nullptr);
|
|
virtual ~UIUrho3D();
|
|
|
|
void AddNotification(const Urho3D::String &s, float relative_size = 1.0f);
|
|
void RefreshNotifications();
|
|
void Update(float timeStep, uint32_t mouse_x, uint32_t mouse_y, uint32_t sx0, uint32_t sy0, uint32_t sx1, uint32_t sy1, bool showingFlags, bool building, unsigned num_unread_chat_lines, bool highlight_chat, const std::shared_ptr<GameWallet> &w, const Urho3D::Vector3 &view_direction, const boost::optional<std::tuple<uint32_t, std::vector<uint16_t>, std::vector<std::vector<uint8_t>>>> &flagUnderConstruction);
|
|
void NewTradeCommand();
|
|
void ShowOptions();
|
|
void ShowPlayerInfo(uint32_t player_id);
|
|
void AddQueuedCommand(const std::string &txid, const cryptonote::cc_command_t &cmd);
|
|
void RemoveQueuedCommand(const std::string &txid);
|
|
void OnNewBlock();
|
|
void Configure();
|
|
void OnModelBackupAvailable();
|
|
void OnExitRequest();
|
|
|
|
void OpenSelectMaterial(uint16_t variant);
|
|
void CloseSelectMaterial(bool send_result);
|
|
bool IsSelectMaterialOpen() const;
|
|
void SetCameraType(tb::TBID type);
|
|
void SetCompassType(tb::TBID type);
|
|
void SetCalendarType(tb::TBID type);
|
|
bool IsClickPassthroughWidget(tb::TBWidget *w) const;
|
|
|
|
private:
|
|
void CreatePlayerWindow();
|
|
void CreateCityWindow();
|
|
void CreateSpectatorModeWidget();
|
|
void CreateNodeNotificationWidget();
|
|
void CreateLoadingWalletNotificationWidget();
|
|
void CreateQueuedCommandsNotificationWidget();
|
|
void CreateCompass();
|
|
void CreateCalendar();
|
|
void CreateBuildOverviewWidget();
|
|
void CreateNewBlockNotification();
|
|
|
|
void UpdateSelection(uint32_t mouse_x, uint32_t mouse_y, uint32_t sx0, uint32_t sy0, uint32_t sx1, uint32_t sy1);
|
|
void UpdateFlag(uint32_t mouse_x, uint32_t mouse_y, uint32_t sx0, uint32_t sy0, uint32_t sx1, uint32_t sy1);
|
|
void UpdatePlayer();
|
|
void UpdateCity();
|
|
void UpdateSpectatorMode(const std::shared_ptr<GameWallet> &w);
|
|
void UpdateNodeNotification(const std::shared_ptr<GameWallet> &w);
|
|
void UpdateLoadingWalletNotification(const std::shared_ptr<GameWallet> &w);
|
|
void UpdateQueuedCommandsNotification(const std::shared_ptr<GameWallet> &w);
|
|
void UpdateCompass(float timeStep, const Urho3D::Vector3 &view_direction);
|
|
void UpdateCalendar();
|
|
void UpdateBuildOverview(const boost::optional<std::tuple<uint32_t, std::vector<uint16_t>, std::vector<std::vector<uint8_t>>>> &flagUnderConstruction);
|
|
void UpdateNewBlockNotification(float timeStep);
|
|
|
|
void HandleLoadWallet(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleNoWallet(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleAcceptInvitation(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleCreateNewWallet(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleDepositInfo(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleWithdrawInfo(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleDeposit(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleWithdraw(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleBuyLand(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleBuyItems(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleBuy(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleBuildingSettings(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleRepair(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleAddBlock(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleRemoveBlock(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleRemoveHiddenBlocks(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleRemoveTopLevel(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleApproveBuild(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleAbandonBuild(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleTrade(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleAssignItems(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleDestroyItems(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleMaterialSelected(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData, bool player);
|
|
void HandlePlayerMaterialSelected(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleFlagMaterialSelected(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleUndo(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleRedo(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleLoad(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleModelFileSelected(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData, bool save, bool selection);
|
|
void HandleFlagInfo(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleRename(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleDemolish(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleDestroyFlag(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleChat(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleResearch(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleOptions(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleCredits(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleExit(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleExitConfirmation(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleTBMessage(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleResized(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleCloseCommandWindow(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleConfigureNetwork(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleCityLevelHelp(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleCityLevelUp(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleFoundCity(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleTravelToCity(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleLeaderboards(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleCameraType(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleGroundType(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleGraphicsMode(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleSpecialEventHelp(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleNewItem(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleDividend(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleIgnore(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleNewEventBadge(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleAwardEventBadge(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleIgnoreRecommendation(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleResizeFlag(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleDefineAttribute(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleDiceRoll(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleHunt(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleShowQueuedCommands(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandlePalette(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleFightFire(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleService(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleSow(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleHarvest(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleStartMining(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleStopMining(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
|
|
void HandleDemolishConfirmation(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleDestroyFlagConfirmation(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleBookmarkVista(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleGoToVista(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleRestoreModelBackup(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleBuildingStats(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleMint(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
void HandleSmelt(Urho3D::StringHash eventType, Urho3D::VariantMap& eventData);
|
|
|
|
void NotifyEditMode(EditMode mode);
|
|
void NotifyExtend(int32_t dx0, int32_t dy0, int32_t dx1, int32_t dy1);
|
|
|
|
void EnableWidget(tb::TBWidget *widget, bool enable);
|
|
void EnableWidget(const tb::TBID &id, bool enable);
|
|
void ShowWidget(tb::TBWidget *widget, bool show);
|
|
void ShowWidget(const tb::TBID &id, bool enable);
|
|
void ToggleWidget(tb::TBToggleContainer *widget, bool show);
|
|
void ToggleWidget(const tb::TBID &id, bool show);
|
|
|
|
void ExportModel(bool selection);
|
|
|
|
private:
|
|
const GameState *gameState;
|
|
|
|
tb::TBTextField *timeText;
|
|
tb::TBTextField *temperatureText;
|
|
|
|
tb::TBTextField *positionText;
|
|
tb::TBTextField *positionHeightText;
|
|
tb::TBTextField *positionStabilityText;
|
|
tb::TBTextField *positionAgriculturalPotentialText;
|
|
tb::TBTextField *positionGeothermalHeatingPotentialText;
|
|
tb::TBTextField *positionGemstonePotentialText;
|
|
tb::TBTextField *positionWoodTypePotentialText;
|
|
tb::TBTextField *positionWoodQuantityPotentialText;
|
|
tb::TBTextField *positionStoneTypePotentialText;
|
|
tb::TBTextField *positionStoneQuantityPotentialText;
|
|
tb::TBTextField *positionKilnPotentialText;
|
|
tb::TBTextField *positionMetalPotentialText;
|
|
tb::TBTextField *selectionText;
|
|
tb::TBTextField *selectionCostText;
|
|
tb::TBTextField *selectionLandTaxText;
|
|
|
|
tb::TBTextField *flagNameText;
|
|
tb::TBTextField *flagRoleText;
|
|
tb::TBTextField *flagActiveText;
|
|
tb::TBTextField *flagOwnerText;
|
|
tb::TBButton *flagOwnerInfoButton;
|
|
tb::TBTextField *flagSizeText;
|
|
tb::TBTextField *flagRepairText;
|
|
tb::TBTextField *flagEconomicPowerText;
|
|
tb::TBTextField *flagInfluence;
|
|
tb::TBTextField *flagLandTaxText;
|
|
tb::TBTextField *flagEstimatedPayout;
|
|
tb::TBTextField *flagSpecialEventText;
|
|
tb::TBToggleContainer *flagSpecialEventToggle;
|
|
#if BUILD_RATIO_ACTIVE_THRESHOLD_PERCENT > 0
|
|
tb::TBTextField *flagBudgetUsage;
|
|
#endif
|
|
tb::TBSelectList *flagItemTypeList;
|
|
tb::TBGenericStringItemSource flagItemTypeListSource;
|
|
tb::TBTextField *flagStabilityText;
|
|
tb::TBTextField *flagGeothermalText;
|
|
tb::TBTextField *flagGemstoneText;
|
|
tb::TBTextField *flagPrimaryPotentialText;
|
|
tb::TBTextField *flagSecondaryPotentialText;
|
|
|
|
tb::TBTextField *playerNameText;
|
|
tb::TBButton *playerInfoButton;
|
|
tb::TBTextField *playerBalanceText;
|
|
tb::TBTextField *playerWalletBalanceText;
|
|
tb::TBSelectList *playerMaterialList;
|
|
tb::TBGenericStringItemSource playerMaterialListSource;
|
|
tb::TBToggleContainer *playerAcceptInvitationContainer;
|
|
tb::TBToggleContainer *playerCreateNewWalletContainer;
|
|
tb::TBButton *loadWalletButton;
|
|
tb::TBButton *depositButton;
|
|
tb::TBButton *withdrawButton;
|
|
tb::TBToggleContainer *playerWalletLoaded;
|
|
|
|
tb::TBTextField *cityNameText;
|
|
tb::TBTextField *cityLevelText;
|
|
tb::TBToggleContainer *citySpecialEventToggle;
|
|
tb::TBTextField *citySpecialEventText;
|
|
tb::TBTextField *cityTreasuryText;
|
|
|
|
UINotifier notifier;
|
|
|
|
bool showingFlags;
|
|
std::shared_ptr<Flag> selectedFlag;
|
|
std::map<uint32_t, uint32_t> currentFlagBudget;
|
|
std::map<uint32_t, uint32_t> currentPlayerBudget;
|
|
UITBWindow *spectatorModeWidget;
|
|
UITBWindow *nodeNotificationWidget;
|
|
UITBWindow *loadingWalletNotificationWidget;
|
|
tb::TBTextField *loadingWalletNotificationStateWidget;
|
|
UITBWindow *queuedCommandsNotificationWidget;
|
|
tb::TBTextField *queuedCommandsNotificationCountWidget;
|
|
UITBWindow *shadingFix;
|
|
uint32_t flag_owner;
|
|
|
|
tb::TBTextField *nodeStatusWidget;
|
|
tb::TBToggleContainer *startMiningContainer;
|
|
tb::TBToggleContainer *stopMiningContainer;
|
|
|
|
// no ref, cleared when destroyed
|
|
UIBuildingSettingsDialog *buildingSettingsDialog;
|
|
UILastUpdateEventsDialog *lastUpdateEventsDialog;
|
|
UIRenameDialog *renameDialog;
|
|
UIRepairDialog *repairDialog;
|
|
UITradeDialog *tradeDialog;
|
|
UILeaderboardsDialog *leaderboardsDialog;
|
|
UIResearchDialog *researchDialog;
|
|
UIOptionsDialog *optionsDialog;
|
|
UIPlayerInfoDialog *playerInfoDialog;
|
|
UISelectAmountDialog *selectAmountDialog;
|
|
UINodeConfigDialog *nodeConfigDialog;
|
|
UIQueuedCommandsDialog *queuedCommandsDialog;
|
|
UIFoundCityDialog *foundCityDialog;
|
|
UITravelToCityDialog *travelToCityDialog;
|
|
UINewItemDialog *newItemDialog;
|
|
UIDividendDialog *dividendDialog;
|
|
UIIgnoreDialog *ignoreDialog;
|
|
UIEventBadgeDialog *eventBadgeDialog;
|
|
UICreditsDialog *creditsDialog;
|
|
UIDefineAttributeDialog *defineAttributeDialog;
|
|
UIDiceRollDialog *diceRollDialog;
|
|
UIHuntDialog *huntDialog;
|
|
UICityLevelDialog *cityLevelDialog;
|
|
UIPaletteDialog *paletteDialog;
|
|
UIFightFireDialog *fightFireDialog;
|
|
UIServiceDialog *serviceDialog;
|
|
UISowDialog *sowDialog;
|
|
UIHarvestDialog *harvestDialog;
|
|
UIAcceptInvitationDialog *acceptInvitationDialog;
|
|
UIAddCitySpecializationDialog *addCitySpecializationDialog;
|
|
UINoWalletIntroDialog *noWalletIntroDialog;
|
|
UIMintDialog *mintDialog;
|
|
UISmeltDialog *smeltDialog;
|
|
|
|
UITBWindow *command_window;
|
|
|
|
Urho3D::IntVector2 prev_size;
|
|
std::unordered_map<std::string, cryptonote::cc_command_t> queued_commands, queued_commands_except_unmatched_trades;
|
|
bool include_unmatched_trades_in_queued_commands;
|
|
|
|
Urho3D::SharedPtr<Urho3D::Sprite> compass_frame;
|
|
Urho3D::SharedPtr<Urho3D::Sprite> compass_needle;
|
|
float compass_rotation_speed;
|
|
|
|
UITBWindow *buildOverviewWidget;
|
|
tb::TBTextField *buildOverviewFlagName;
|
|
|
|
UISelectMaterial *selectMaterial;
|
|
|
|
epee::math_helper::once_a_time_seconds<2> m_mining_checker;
|
|
|
|
tb::TBID compass_type;
|
|
bool compass_changed;
|
|
|
|
Urho3D::SharedPtr<Urho3D::Sprite> calendar_frame;
|
|
Urho3D::SharedPtr<Urho3D::Sprite> calendar_needle;
|
|
|
|
tb::TBID calendar_type;
|
|
bool calendar_changed;
|
|
|
|
UITBWindow *new_block_notification;
|
|
Urho3D::Timer new_block_timer;
|
|
};
|
|
|
|
#endif
|