Something went wrong. Try again.
the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
Something went wrong. Try again.
4.1 kB · 172 lines
C++
at master
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172#include "stdafx.h"#include "XUI_TextEntry.h"#include "..\..\MultiplayerLocalPlayer.h"
CScene_TextEntry::CommandParams CScene_TextEntry::CommandA[CScene_TextEntry::eCommand_MAX]={ { L"goto", L"%s%c%d%c%d" }, { L"give", L"%s%c%s" }};
HRESULT CScene_TextEntry::Init_Commands(){ for(int i=0;i<eCommand_MAX;i++) { m_CommandSet[CommandA[i].wchCommand]=i; } return S_OK;}
//----------------------------------------------------------------------------------// Performs initialization tasks - retrieves controls.//----------------------------------------------------------------------------------HRESULT CScene_TextEntry::OnInit( XUIMessageInit* pInitData, BOOL& bHandled ){ MapChildControls(); XuiTextInputParams *params = (XuiTextInputParams *)pInitData->pvInitData; m_iPad=params->iPad; m_wchInitialChar=params->wch; delete params;
WCHAR wchEditText[40];
Init_Commands();
ZeroMemory(wchEditText,sizeof(WCHAR)*40); wchEditText[0]=tolower(m_wchInitialChar);
m_EditText.SetTextLimit(40); m_EditText.SetText(wchEditText); // set the caret to the end of the default text m_EditText.SetCaretPosition(1);
m_EditText.SetTitleAndText(IDS_NAME_WORLD,IDS_NAME_WORLD_TEXT);
ui.SetTooltips( m_iPad, IDS_TOOLTIPS_EXECUTE_COMMAND, IDS_TOOLTIPS_BACK); return S_OK;}
HRESULT CScene_TextEntry::OnNotifyValueChanged (HXUIOBJ hObjSource, XUINotifyValueChanged* pValueChangedData, BOOL& rfHandled){ // If the user presses return, interpret the string, and exit if(pValueChangedData->nValue==10) { LPCWSTR pText = m_EditText.GetText(); if(pText) { wstring wText = pText; InterpretString(wText); }
app.NavigateBack(m_iPad); rfHandled = TRUE; }
return S_OK;}
HRESULT CScene_TextEntry::OnKeyDown(XUIMessageInput* pInputData, BOOL& rfHandled){ ui.AnimateKeyPress(pInputData->UserIndex, pInputData->dwKeyCode);
// Explicitly handle B button presses switch(pInputData->dwKeyCode) { case VK_PAD_A: { LPCWSTR pText = m_EditText.GetText();
if(pText) { wstring wText = pText; InterpretString(wText); }
app.NavigateBack(m_iPad); rfHandled = TRUE; } break;
case VK_PAD_B: case VK_ESCAPE:
app.NavigateBack(pInputData->UserIndex); rfHandled = TRUE; break; } return S_OK;}
HRESULT CScene_TextEntry::InterpretString(wstring &wsText){ wstring wsFormat; WCHAR wchCommand[40]; int iCommand=-1; WCHAR wchSep[2];
#ifdef __PS3__ // 4J Stu - The Xbox version uses swscanf_s which isn't available in GCC. swscanf(wsText.c_str(), L"%40s", wchCommand);#else swscanf_s(wsText.c_str(), L"%s", wchCommand,40);#endif
AUTO_VAR(it, m_CommandSet.find(wchCommand)); if(it != m_CommandSet.end()) { // found it
iCommand=it->second;
switch(iCommand) { case eCommand_Teleport: { int x,z; #ifdef __PS3__ // 4J Stu - The Xbox version uses swscanf_s which isn't available in GCC. swscanf(wsText.c_str(), L"%40s%c%d%c%d", wchCommand,wchSep,&x,wchSep,&z);#else swscanf_s(wsText.c_str(), L"%s%c%d%c%d", wchCommand,40,wchSep,2,&x,wchSep,2, &z);#endif
app.DebugPrintf("eCommand_Teleport x=%d z=%d\n",x,z);
// check the bounds int iBound=54*16; if( (x>-iBound) && (x<iBound) && (z>-iBound) && (z<iBound) ) { // valid numbers Minecraft *pMinecraft=Minecraft::GetInstance(); pMinecraft->localplayers[m_iPad]->teleportTo(x,pMinecraft->localplayers[m_iPad]->y,z); } } break; case eCommand_Give: { int iItem,iCount; #ifdef __PS3__ // 4J Stu - The Xbox version uses swscanf_s which isn't available in GCC. swscanf(wsText.c_str(), L"%40s%c%d%c%d", wchCommand,wchSep,&iItem,wchSep,&iCount);#else swscanf_s(wsText.c_str(), L"%s%c%d%c%d", wchCommand,40,wchSep,2,&iItem,wchSep,2, &iCount);#endif app.DebugPrintf("eCommand_Give, item=%d count=%d\n",iItem,iCount); Minecraft *pMinecraft=Minecraft::GetInstance(); for(int i=0;i<iCount;i++) pMinecraft->localplayers[m_iPad]->drop(); // shared_ptr<ItemInstance>(new ItemInstance( iItem, 1, 0 )) ); }
break; default: app.DebugPrintf("Unknown command\n"); break; } }
return S_OK;}