Wt examples 3.3.12
HangmanGame.C
Go to the documentation of this file.
1/*
2 * Copyright (C) 2011 Emweb bvba, Heverlee, Belgium
3 *
4 * See the LICENSE file for terms of use.
5 */
6
7#include <Wt/WAnchor>
8#include <Wt/WText>
9#include <Wt/WStackedWidget>
10#include <Wt/WVBoxLayout>
11#include <Wt/WHBoxLayout>
12#include <Wt/WApplication>
13#include <Wt/Auth/AuthWidget>
14
15#include "HangmanGame.h"
16#include "HangmanWidget.h"
17#include "HighScoresWidget.h"
18
19using namespace Wt;
20
22 WContainerWidget(parent),
23 game_(0),
24 scores_(0)
25{
27
29 session_.users(), this);
31 authModel->addOAuth(Session::oAuth());
32
34 authWidget->setModel(authModel);
35 authWidget->setRegistrationEnabled(true);
36
37 WText *title = new WText("<h1>A Witty game: Hangman</h1>");
38 addWidget(title);
39
40 addWidget(authWidget);
41
43 mainStack_->setStyleClass("gamestack");
45
47 links_->setStyleClass("links");
48 links_->hide();
50
51 backToGameAnchor_ = new WAnchor("/play", "Gaming Grounds", links_);
53
54 scoresAnchor_ = new WAnchor("/highscores", "Highscores", links_);
56
57 WApplication::instance()->internalPathChanged()
58 .connect(this, &HangmanGame::handleInternalPath);
59
60 authWidget->processEnvironment();
61}
62
64{
65 if (session_.login().loggedIn()) {
66 links_->show();
67 handleInternalPath(WApplication::instance()->internalPath());
68 } else {
70 game_ = 0;
71 scores_ = 0;
72 links_->hide();
73 }
74}
75
76void HangmanGame::handleInternalPath(const std::string &internalPath)
77{
78 if (session_.login().loggedIn()) {
79 if (internalPath == "/play")
80 showGame();
81 else if (internalPath == "/highscores")
83 else
84 WApplication::instance()->setInternalPath("/play", true);
85 }
86}
87
99
HangmanWidget * game_
Definition HangmanGame.h:33
void showHighScores()
Definition HangmanGame.C:88
Session session_
Definition HangmanGame.h:39
void handleInternalPath(const std::string &internalPath)
Definition HangmanGame.C:76
HangmanGame(Wt::WContainerWidget *parent=0)
Definition HangmanGame.C:21
void onAuthEvent()
Definition HangmanGame.C:63
Wt::WAnchor * scoresAnchor_
Definition HangmanGame.h:37
HighScoresWidget * scores_
Definition HangmanGame.h:34
void showGame()
Wt::WStackedWidget * mainStack_
Definition HangmanGame.h:32
Wt::WAnchor * backToGameAnchor_
Definition HangmanGame.h:36
Wt::WContainerWidget * links_
Definition HangmanGame.h:35
Wt::Signal< int > & scoreUpdated()
static const Wt::Auth::AbstractPasswordService & passwordAuth()
Definition Session.C:221
static const std::vector< const Wt::Auth::OAuthService * > & oAuth()
Definition Session.C:226
std::string userName() const
Definition Session.C:151
static const Wt::Auth::AuthService & auth()
Definition Session.C:216
Wt::Auth::Login & login()
Definition Session.h:32
Wt::Auth::AbstractUserDatabase & users()
Definition Session.C:211
void addToScore(int s)
Definition Session.C:159
void setRegistrationEnabled(bool enabled)
void setModel(AuthModel *model)
virtual void processEnvironment()
virtual void addPasswordAuth(const AbstractPasswordService *auth)
virtual void addOAuth(const OAuthService *auth)
Signal & changed()
bool loggedIn() const
virtual Wt::Signals::connection connect(WObject *target, WObject::Method method)
void setLink(const WLink &link)
virtual void addWidget(WWidget *widget)
virtual void clear()
void setCurrentWidget(WWidget *widget)
virtual void addStyleClass(const WString &styleClass, bool force=false)
virtual void removeStyleClass(const WString &styleClass, bool force=false)
virtual void setStyleClass(const WString &styleClass)

Generated on Fri May 17 2024 for the C++ Web Toolkit (Wt) by doxygen 1.9.8