From: Andrew C. <ac...@us...> - 2003-08-12 23:24:39
|
Update of /cvsroot/planeshift/planeshift/src/client/paws In directory sc8-pr-cvs1:/tmp/cvs-serv28441/src/client/paws Modified Files: pawsbutton.h pawsloginwindow.cpp pspawsmanager.cpp Added Files: pawscharpick.cpp pawscharpick.h Log Message: Added PAWS window to select which character you want to play with when you log into your account. --- NEW FILE: pawscharpick.cpp --- #include <config.h> #include "pawscharpick.h" #include "pawsbutton.h" #include "pspawsmanager.h" #include "pawstextbox.h" #include "net/messages.h" #include "iclient/psengine.h" #define CHARACTER_BUTTON_0 0 #define CHARACTER_BUTTON_1 1 #define CHARACTER_BUTTON_2 2 #define CHARACTER_BUTTON_3 3 #define CHARACTER_ACTION_BUTTON 100 SCF_IMPLEMENT_IBASE( pawsCharacterPickerWindow ) SCF_IMPLEMENTS_INTERFACE( iNetSubscriber ) SCF_IMPLEMENT_IBASE_END pawsCharacterPickerWindow::pawsCharacterPickerWindow( psPawsManager* manager ) :pawsWidget( manager ) { charactersFound = 0; selectedCharacter = -1; } pawsCharacterPickerWindow::~pawsCharacterPickerWindow() { } bool pawsCharacterPickerWindow::PostSetup() { csRef<iPSEngine> psengine = CS_QUERY_REGISTRY( windowManager->GetObjectRegistry(), iPSEngine ); msgHandler = psengine->GetMsgHandler(); if ( !msgHandler ) return false; // Subscribe our message types that we are interested in. if ( !msgHandler->Subscribe( this, MSGTYPECHARACTERDATA ) ) return false; return true; } void pawsCharacterPickerWindow::HandleMessage( MsgEntry* me ) { switch( me->data->type ) { case MSGTYPECHARACTERDATA: { char buff[100]; sprintf(buff, "SelectCharacter%d", charactersFound ); pawsButton* button = (pawsButton*)FindWidget( buff ); csString name( me->GetStr() ); button->SetText( name ); charactersFound++; return; } } } bool pawsCharacterPickerWindow::OnButtonPressed( int mouseButton, pawsWidget* widget ) { switch ( widget->GetID() ) { case CHARACTER_BUTTON_0: case CHARACTER_BUTTON_1: case CHARACTER_BUTTON_2: case CHARACTER_BUTTON_3: { pawsTextBox* labelWidget = (pawsTextBox*)FindWidget("label"); selectedCharacter = widget->GetID(); labelWidget->SetText( "Join Game" ); if ( widget->GetID() >= charactersFound ) { labelWidget->SetText( "Create Character"); selectedCharacter = -1; } return true; } case CHARACTER_ACTION_BUTTON: { // if we have a character then we play as that one. if ( selectedCharacter != -1 ) { char name[100]; sprintf( name, "SelectCharacter%d", selectedCharacter ); csString charname( ((pawsButton*)FindWidget(name))->GetText() ); printf("Requesting use of: %s\n", (const char*)charname ); psCharacterPickerMessage out( charname ); msgHandler->SendMessage( out.msg ); } return true; } } } --- NEW FILE: pawscharpick.h --- #ifndef PAWS_CHAR_PICKER_HEADER #define PAWS_CHAR_PICKER_HEADER #include "pawswidget.h" #include "net/message.h" #include "net/msghandler.h" #include "interface/subscriber.h" class pawsCharacterPickerWindow: public pawsWidget, public iNetSubscriber { public: SCF_DECLARE_IBASE; pawsCharacterPickerWindow( psPawsManager* manager ); ~pawsCharacterPickerWindow(); bool PostSetup(); void HandleMessage( MsgEntry* me ); bool OnButtonPressed( int mouseButton, pawsWidget* widget ); private: csRef<MsgHandler> msgHandler; int charactersFound; int selectedCharacter; }; CREATE_PAWS_FACTORY( pawsCharacterPickerWindow ); #endif Index: pawsbutton.h =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/client/paws/pawsbutton.h,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** pawsbutton.h 5 Aug 2003 20:56:33 -0000 1.9 --- pawsbutton.h 12 Aug 2003 21:53:23 -0000 1.10 *************** *** 54,58 **** void SetFont( const char* fontName ); ! protected: /// Track to see if the button is down. --- 54,58 ---- void SetFont( const char* fontName ); ! const char* GetText() { return buttonLabel; } protected: /// Track to see if the button is down. Index: pawsloginwindow.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/client/paws/pawsloginwindow.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** pawsloginwindow.cpp 7 Aug 2003 23:11:45 -0000 1.4 --- pawsloginwindow.cpp 12 Aug 2003 21:53:23 -0000 1.5 *************** *** 116,119 **** --- 116,123 ---- } + /// Set up the picker window here. + if ( psengine->GetPAWS()->FindWidget("CharPickerWindow") == 0 ) + psengine->GetPAWS()->LoadWidget("/this/data/charpick.xml"); + psengine->GetNetManager()->Authenticate( login->GetText(), passwd->GetText(), iNetManager::EXISTING_PLAYER ); connecting = true; Index: pspawsmanager.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/client/paws/pspawsmanager.cpp,v retrieving revision 1.30 retrieving revision 1.31 diff -C2 -d -r1.30 -r1.31 *** pspawsmanager.cpp 5 Aug 2003 14:55:12 -0000 1.30 --- pspawsmanager.cpp 12 Aug 2003 21:53:23 -0000 1.31 *************** *** 88,91 **** --- 88,92 ---- #include "shortcutwindow.h" #include "pawsloginwindow.h" + #include "pawscharpick.h" ////////////////////////////////////////////////////////////////////// *************** *** 531,534 **** --- 532,536 ---- RegisterFactory (pawsShortcutWindowFactory); RegisterFactory (pawsLoginWindowFactory); + RegisterFactory (pawsCharacterPickerWindowFactory); } |