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.
5.1 kB · 181 lines
C++
at main
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181#include "stdafx.h"#include "UI.h"#include "UIScene_Keyboard.h"
#define KEYBOARD_DONE_TIMER_ID 0#define KEYBOARD_DONE_TIMER_TIME 100
UIScene_Keyboard::UIScene_Keyboard(int iPad, void *initData, UILayer *parentLayer) : UIScene(iPad, parentLayer){ // Setup all the Iggy references we need for this scene initialiseMovie();
m_EnterTextLabel.init(L"Enter Sign Text");
m_KeyboardTextInput.init(L"", -1); m_KeyboardTextInput.SetCharLimit(15); m_ButtonSpace.init(L"Space", -1); m_ButtonCursorLeft.init(L"Cursor Left", -1); m_ButtonCursorRight.init(L"Cursor Right", -1); m_ButtonCaps.init(L"Caps", -1); m_ButtonDone.init(L"Done", 0); // only the done button needs an id, the others will never call back! m_ButtonSymbols.init(L"Symbols", -1); m_ButtonBackspace.init(L"Backspace", -1);
// Initialise function keyboard Buttons and set alternative symbol button string wstring label = L"Abc"; IggyStringUTF16 stringVal; stringVal.string = (IggyUTF16*)label.c_str(); stringVal.length = label.length(); IggyDataValue result; IggyDataValue value[1]; value[0].type = IGGY_DATATYPE_string_UTF16; value[0].string16 = stringVal;
IggyResult out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ), m_funcInitFunctionButtons , 1 , value );
m_bKeyboardDonePressed = false;
parentLayer->addComponent(iPad,eUIComponent_MenuBackground);}
UIScene_Keyboard::~UIScene_Keyboard(){ m_parentLayer->removeComponent(eUIComponent_MenuBackground);}
wstring UIScene_Keyboard::getMoviePath(){ if(app.GetLocalPlayerCount() > 1 && !m_parentLayer->IsFullscreenGroup()) { return L"KeyboardSplit"; } else { return L"Keyboard"; }}
void UIScene_Keyboard::updateTooltips(){ ui.SetTooltips( DEFAULT_XUI_MENU_USER, IDS_TOOLTIPS_SELECT,IDS_TOOLTIPS_BACK, -1, -1);}
bool UIScene_Keyboard::allowRepeat(int key){ // 4J - TomK - we want to allow X and Y repeats! switch(key) { case ACTION_MENU_OK: case ACTION_MENU_CANCEL: case ACTION_MENU_A: case ACTION_MENU_B: case ACTION_MENU_PAUSEMENU: //case ACTION_MENU_X: //case ACTION_MENU_Y: return false; } return true;}
void UIScene_Keyboard::handleInput(int iPad, int key, bool repeat, bool pressed, bool released, bool &handled){ IggyDataValue result; IggyResult out;
if(repeat || pressed) { switch(key) { case ACTION_MENU_CANCEL: navigateBack(); handled = true; break; case ACTION_MENU_X: // X out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ), m_funcBackspaceButtonPressed, 0 , NULL ); handled = true; break; case ACTION_MENU_PAGEUP: // LT out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ), m_funcSymbolButtonPressed, 0 , NULL ); handled = true; break; case ACTION_MENU_Y: // Y out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ), m_funcSpaceButtonPressed, 0 , NULL ); handled = true; break; case ACTION_MENU_STICK_PRESS: // LS out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ), m_funcCapsButtonPressed, 0 , NULL ); handled = true; break; case ACTION_MENU_LEFT_SCROLL: // LB out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ), m_funcCursorLeftButtonPressed, 0 , NULL ); handled = true; break; case ACTION_MENU_RIGHT_SCROLL: // RB out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ), m_funcCursorRightButtonPressed, 0 , NULL ); handled = true; break; case ACTION_MENU_PAUSEMENU: // Start if(!m_bKeyboardDonePressed) { out = IggyPlayerCallMethodRS ( getMovie() , &result, IggyPlayerRootPath( getMovie() ), m_funcDoneButtonPressed, 0 , NULL ); // kick off done timer addTimer(KEYBOARD_DONE_TIMER_ID,KEYBOARD_DONE_TIMER_TIME); m_bKeyboardDonePressed = true; } handled = true; break; } }
switch(key) { case ACTION_MENU_OK: case ACTION_MENU_LEFT: case ACTION_MENU_RIGHT: case ACTION_MENU_UP: case ACTION_MENU_DOWN: sendInputToMovie(key, repeat, pressed, released); handled = true; break; }}
void UIScene_Keyboard::handlePress(F64 controlId, F64 childId){ if((int)controlId == 0) { // Done has been pressed. At this point we can query for the input string and pass it on to wherever it is needed. // we can not query for m_KeyboardTextInput.getLabel() here because we're in an iggy callback so we need to wait a frame. if(!m_bKeyboardDonePressed) { // kick off done timer addTimer(KEYBOARD_DONE_TIMER_ID,KEYBOARD_DONE_TIMER_TIME); m_bKeyboardDonePressed = true; } }}
void UIScene_Keyboard::handleTimerComplete(int id){ if(id == KEYBOARD_DONE_TIMER_ID) { // remove timer killTimer(KEYBOARD_DONE_TIMER_ID);
// we're done here! KeyboardDonePressed(); }}
void UIScene_Keyboard::KeyboardDonePressed(){ // Debug app.DebugPrintf("UI Keyboard - DONE - [%ls]\n", m_KeyboardTextInput.getLabel());
// ToDo: Keyboard can now pass on its final string value and close itself down navigateBack();}