forked from townforge/townforge
game: add wallet creation capability
This commit is contained in:
parent
f6af276e28
commit
16aa25cc1b
@ -32,6 +32,9 @@ TBLayout: axis: y, distribution-position: "left top", distribution: "available"
|
||||
TBToggleContainer: id: "accept-invitation-container", toggle: "expanded"
|
||||
TBLayout: axis: y, spacing: 0, size: available
|
||||
TBButton: skin: "TBButton.column", text: "Accept invitation" id: "player-accept-invitation"
|
||||
TBToggleContainer: id: "create-new-wallet-container", toggle: "expanded"
|
||||
TBLayout: axis: y, spacing: 0, size: available
|
||||
TBButton: skin: "TBButton.column", text: "Create new wallet" id: "player-create-new-wallet"
|
||||
TBButton: skin: "TBButton.column", text: "Load wallet" id: "player-load-wallet"
|
||||
|
||||
TBSection: value: 0, text: "Node"
|
||||
|
@ -265,6 +265,7 @@ public:
|
||||
void HandleGenerateInvitation(StringHash eventType, VariantMap& eventData);
|
||||
void HandleAcceptInvitation(StringHash eventType, VariantMap& eventData);
|
||||
void HandleRequestInvitationStatus(StringHash eventType, VariantMap& eventData);
|
||||
void HandleCreateNewWallet(StringHash eventType, VariantMap& eventData);
|
||||
void HandleStartMining(StringHash eventType, VariantMap& eventData);
|
||||
void HandleStopMining(StringHash eventType, VariantMap& eventData);
|
||||
|
||||
@ -849,6 +850,7 @@ void CryptoCityUrho3D::SetupUI()
|
||||
SubscribeToEvent(ui, E_CRYPTOCITY_GENERATE_INVITATION, URHO3D_HANDLER(CryptoCityUrho3D, HandleGenerateInvitation));
|
||||
SubscribeToEvent(ui, E_CRYPTOCITY_ACCEPT_INVITATION, URHO3D_HANDLER(CryptoCityUrho3D, HandleAcceptInvitation));
|
||||
SubscribeToEvent(ui, E_CRYPTOCITY_REQUEST_INVITATION_STATUS, URHO3D_HANDLER(CryptoCityUrho3D, HandleRequestInvitationStatus));
|
||||
SubscribeToEvent(ui, E_CRYPTOCITY_CREATE_NEW_WALLET, URHO3D_HANDLER(CryptoCityUrho3D, HandleCreateNewWallet));
|
||||
SubscribeToEvent(ui, E_CRYPTOCITY_START_MINING, URHO3D_HANDLER(CryptoCityUrho3D, HandleStartMining));
|
||||
SubscribeToEvent(ui, E_CRYPTOCITY_STOP_MINING, URHO3D_HANDLER(CryptoCityUrho3D, HandleStopMining));
|
||||
SubscribeToEvent(ui, E_CRYPTOCITY_MUSIC_TRACK, URHO3D_HANDLER(CryptoCityUrho3D, HandleMusicTrack));
|
||||
@ -2527,6 +2529,36 @@ void CryptoCityUrho3D::HandleAcceptInvitation(StringHash eventType, VariantMap&
|
||||
wallet->send_command(cmd);
|
||||
}
|
||||
|
||||
void CryptoCityUrho3D::HandleCreateNewWallet(StringHash eventType, VariantMap& eventData)
|
||||
{
|
||||
const String filename = eventData[CreateNewWallet::P_FILENAME].GetString();
|
||||
if (filename.Empty())
|
||||
{
|
||||
auto *fileSelector = new UIFileSelector(context_);
|
||||
fileSelector->SetTitle("Select filename to save new wallet");
|
||||
fileSelector->SetButtonTexts("Create", "Cancel");
|
||||
fileSelector->SetFilters(Vector<String>(1, "*.keys"), 0);
|
||||
SubscribeToEvent(fileSelector, E_FILESELECTED, [this](StringHash eventType, VariantMap& eventData) {
|
||||
const bool ok = eventData[FileSelected::P_OK].GetBool();
|
||||
if (ok)
|
||||
{
|
||||
VariantMap newEventData;
|
||||
newEventData[CreateNewWallet::P_FILENAME] = eventData[FileSelected::P_FILENAME].GetString();
|
||||
HandleCreateNewWallet(E_CRYPTOCITY_CREATE_NEW_WALLET, newEventData);
|
||||
|
||||
new MessageBox(context_, "Creating new wallet\nYou can then fund it and create a game account");
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
if (!wallet->generate_new_wallet(filename.CString()))
|
||||
{
|
||||
new MessageBox(context_, "Failed to create new wallet");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void CryptoCityUrho3D::HandleStartMining(StringHash eventType, VariantMap& eventData)
|
||||
{
|
||||
if (!wallet)
|
||||
|
@ -173,6 +173,7 @@ UIUrho3D::UIUrho3D(Context *ctx, const GameState *gameState):
|
||||
playerMaterialList->SetSource(&playerMaterialListSource);
|
||||
playerWalletLoaded = command_window->GetWidgetByIDAndType<TBToggleContainer>("player-wallet-loaded");
|
||||
playerAcceptInvitationContainer = command_window->GetWidgetByIDAndType<TBToggleContainer>("accept-invitation-container");
|
||||
playerCreateNewWalletContainer = command_window->GetWidgetByIDAndType<TBToggleContainer>("create-new-wallet-container");
|
||||
|
||||
cityNameText = command_window->GetWidgetByIDAndType<TBTextField>("city-name");
|
||||
cityLevelText = command_window->GetWidgetByIDAndType<TBTextField>("city-level");
|
||||
@ -925,6 +926,7 @@ void UIUrho3D::UpdatePlayer()
|
||||
|
||||
playerWalletLoaded->SetValue(gameState->playerState.has_wallet);
|
||||
playerAcceptInvitationContainer->SetValue(!gameState->playerState.has_wallet || gameState->playerState.id == 0);
|
||||
playerCreateNewWalletContainer->SetValue(!gameState->playerState.has_wallet);
|
||||
}
|
||||
|
||||
void UIUrho3D::HandleLoadWallet(StringHash eventType, VariantMap& eventData)
|
||||
@ -956,6 +958,12 @@ void UIUrho3D::HandleAcceptInvitation(StringHash eventType, VariantMap& eventDat
|
||||
});
|
||||
}
|
||||
|
||||
void UIUrho3D::HandleCreateNewWallet(StringHash eventType, VariantMap& eventData)
|
||||
{
|
||||
VariantMap noEventData;
|
||||
SendEvent(E_CRYPTOCITY_CREATE_NEW_WALLET, noEventData);
|
||||
}
|
||||
|
||||
void UIUrho3D::HandleDeposit(StringHash eventType, VariantMap& eventData)
|
||||
{
|
||||
VariantMap newEventData;
|
||||
@ -1831,6 +1839,7 @@ void UIUrho3D::HandleTBMessage(StringHash eventType, VariantMap& eventData)
|
||||
CONNECT("player-withdraw", HandleWithdrawInfo);
|
||||
CONNECT("player-load-wallet", HandleLoadWallet);
|
||||
CONNECT("player-accept-invitation", HandleAcceptInvitation);
|
||||
CONNECT("player-create-new-wallet", HandleCreateNewWallet);
|
||||
|
||||
CONNECT("city-level-help", HandleCityLevelHelp);
|
||||
CONNECT("city-level-up", HandleCityLevelUp);
|
||||
|
@ -144,6 +144,7 @@ URHO3D_EVENT(E_CRYPTOCITY_SERVICE_PRICE, ServicePrice) { URHO3D_PARAM(P_FLAG, Fl
|
||||
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); }
|
||||
@ -195,6 +196,7 @@ private:
|
||||
|
||||
void HandleLoadWallet(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);
|
||||
@ -317,6 +319,7 @@ private:
|
||||
tb::TBSelectList *playerMaterialList;
|
||||
tb::TBGenericStringItemSource playerMaterialListSource;
|
||||
tb::TBToggleContainer *playerAcceptInvitationContainer;
|
||||
tb::TBToggleContainer *playerCreateNewWalletContainer;
|
||||
tb::TBButton *loadWalletButton;
|
||||
tb::TBButton *depositButton;
|
||||
tb::TBButton *withdrawButton;
|
||||
|
Loading…
Reference in New Issue
Block a user