diff --git a/stepmania/src/ScreenNetworkOptions.cpp b/stepmania/src/ScreenNetworkOptions.cpp index 9918f25264..28f5e92f20 100644 --- a/stepmania/src/ScreenNetworkOptions.cpp +++ b/stepmania/src/ScreenNetworkOptions.cpp @@ -12,6 +12,10 @@ #include "ScreenPrompt.h" #include "NetworkSyncServer.h" +#if defined(XBOX) +#include "archutils/Xbox/VirtualKeyboard.h" +#endif + enum { PO_CONNECTION, PO_SERVER, @@ -111,7 +115,14 @@ void ScreenNetworkOptions::MenuStart( PlayerNumber pn, const InputEventType type { case PO_CONNECTION: if ( !NSMAN->useSMserver ) + { + +#if defined(XBOX) + XBOX_VKB.Reset(VKMODE_IP); +#endif + SCREENMAN->TextEntry( SM_DoneConnecting, "Enter a Network Address\n127.0.0.1 to connect to yourself", PREFSMAN->m_sLastServer ); + } else { NSMAN->CloseConnection(); SCREENMAN->SystemMessage("Disconnected from server."); @@ -123,6 +134,10 @@ void ScreenNetworkOptions::MenuStart( PlayerNumber pn, const InputEventType type { case NO_START_SERVER: if (!NSMAN->isLanServer) +#if defined(XBOX) + XBOX_VKB.Reset(VKMODE_PROFILE); +#endif + SCREENMAN->TextEntry( SM_ServerNameEnter, "Enter a server name...", "", NULL ); break; case NO_STOP_SERVER: diff --git a/stepmania/src/ScreenProfileOptions.cpp b/stepmania/src/ScreenProfileOptions.cpp index 1efdef2396..fa1193f317 100644 --- a/stepmania/src/ScreenProfileOptions.cpp +++ b/stepmania/src/ScreenProfileOptions.cpp @@ -9,6 +9,10 @@ #include "ScreenTextEntry.h" #include "ScreenPrompt.h" +#if defined(XBOX) +#include "archutils/Xbox/VirtualKeyboard.h" +#endif + enum { PO_PLAYER1, @@ -173,6 +177,11 @@ void ScreenProfileOptions::MenuStart( PlayerNumber pn, const InputEventType type switch( GetCurrentRow() ) { case PO_CREATE_NEW: + +#if defined(XBOX) + XBOX_VKB.Reset(VKMODE_PROFILE); // set the xbox virtual keyboard to profile mode +#endif + SCREENMAN->TextEntry( SM_DoneCreating, "Enter a profile name", "", NULL ); break; case PO_DELETE_: diff --git a/stepmania/src/ScreenTextEntry.cpp b/stepmania/src/ScreenTextEntry.cpp index e2b003ff11..0521f2d0ee 100644 --- a/stepmania/src/ScreenTextEntry.cpp +++ b/stepmania/src/ScreenTextEntry.cpp @@ -10,6 +10,10 @@ #include "FontCharAliases.h" #include "ScreenDimensions.h" +#if defined(XBOX) +#include "archutils/Xbox/VirtualKeyboard.h" +#endif + #define QUESTION_X (CENTER_X) #define QUESTION_Y (CENTER_Y - 60) @@ -93,7 +97,31 @@ void ScreenTextEntry::Input( const DeviceInput& DeviceI, const InputEventType ty if( type != IET_FIRST_PRESS ) return; - switch( DeviceI.button ) + int button = DeviceI.button; + +#if defined(XBOX) + bool nextChar = false; + + int toAdd = XBOX_VKB.Translate(button, m_sAnswer, &nextChar); + + if( toAdd != 0 && toAdd != KEY_BACK && toAdd != KEY_ESC && toAdd != KEY_ENTER ) + { + if(!nextChar) + { + if(!m_sAnswer.empty()) + m_sAnswer = m_sAnswer.erase( m_sAnswer.size()-1 ); + } + + m_sAnswer += toAdd; + + UpdateText(); + return; + } + + button = toAdd; +#endif + + switch( button ) { case KEY_ESC: m_bCancelled = true; @@ -110,6 +138,7 @@ void ScreenTextEntry::Input( const DeviceInput& DeviceI, const InputEventType ty break; default: char c; + c = DeviceI.ToChar(); bool bHoldingShift = diff --git a/stepmania/src/StepManiaXbox.vcproj b/stepmania/src/StepManiaXbox.vcproj index 3318a564e1..adb302c37a 100644 --- a/stepmania/src/StepManiaXbox.vcproj +++ b/stepmania/src/StepManiaXbox.vcproj @@ -1315,6 +1315,12 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\ + + + +