diff --git a/projects/mtg/include/SimplePad.h b/projects/mtg/include/SimplePad.h index 45e783e4d..a13b6f965 100644 --- a/projects/mtg/include/SimplePad.h +++ b/projects/mtg/include/SimplePad.h @@ -1,69 +1,69 @@ -#ifndef _SIMPLEPAD_H_ -#define _SIMPLEPAD_H_ - -#include -#include -#include -#include "hge/hgeparticle.h" - -enum SIMPLE_KEYS{ - KPD_A, KPD_B, KPD_C, KPD_D, KPD_E, KPD_F, - KPD_G, KPD_H, KPD_I, KPD_J, KPD_K, KPD_L, - KPD_M, KPD_N, KPD_O, KPD_P, KPD_Q, KPD_R, - KPD_S, KPD_T, KPD_U, KPD_V, KPD_W, KPD_X, - KPD_Y, KPD_Z, KPD_SPACE, KPD_OK, KPD_CANCEL, - KPD_DEL, KPD_CAPS, KPD_0, KPD_1, KPD_2, KPD_3, - KPD_4, KPD_5, KPD_6, KPD_7, KPD_8, KPD_9, - KPD_MAX, - KPD_NOWHERE = 254, - KPD_INPUT = 255, -}; - -struct SimpleKey{ - SimpleKey( string _ds, int _id); - string displayValue; - unsigned char id; - unsigned char adjacency[4]; -}; - -class SimplePad{ -public: - friend class GameSettings; - - string buffer; - string title; - unsigned int cursorPos(); - bool isActive() {return bActive;}; - void Render(); - void Update(float dt); - void pressKey(unsigned char id); - - - - SimplePad(); - ~SimplePad(); - - int mX; int mY; - -private: - void linkKeys(int from, int to, int dir); - SimpleKey * Add(string display, unsigned char id); - void MoveSelection(unsigned char dir); - void Start(string value, string * _dest=NULL); - string Finish(); - - bool bActive; - bool bCapslock; - bool bShowCancel, bShowNumpad; - bool bCanceled; - int nbitems; - unsigned int cursor; - int selected; - int priorKey; //The prior key from those places. - SimpleKey * keys[KPD_MAX]; - string * dest; - string original; //For cancelling. -}; - - -#endif +#ifndef _SIMPLEPAD_H_ +#define _SIMPLEPAD_H_ + +#include +#include +#include +#include "hge/hgeparticle.h" + +enum SIMPLE_KEYS{ + KPD_A, KPD_B, KPD_C, KPD_D, KPD_E, KPD_F, + KPD_G, KPD_H, KPD_I, KPD_J, KPD_K, KPD_L, + KPD_M, KPD_N, KPD_O, KPD_P, KPD_Q, KPD_R, + KPD_S, KPD_T, KPD_U, KPD_V, KPD_W, KPD_X, + KPD_Y, KPD_Z, KPD_SPACE, KPD_OK, KPD_CANCEL, + KPD_DEL, KPD_CAPS, KPD_0, KPD_1, KPD_2, KPD_3, + KPD_4, KPD_5, KPD_6, KPD_7, KPD_8, KPD_9, + KPD_MAX, + KPD_NOWHERE = 254, + KPD_INPUT = 255, +}; + +struct SimpleKey{ + SimpleKey( string _ds, int _id); + string displayValue; + unsigned char id; + unsigned char adjacency[4]; +}; + +class SimplePad{ +public: + friend class GameSettings; + + string buffer; + string title; + unsigned int cursorPos(); + bool isActive() {return bActive;}; + void Render(); + void Update(float dt); + void pressKey(unsigned char id); + + + + SimplePad(); + ~SimplePad(); + + int mX; int mY; + +private: + void linkKeys(int from, int to, int dir); + SimpleKey * Add(string display, unsigned char id); + void MoveSelection(unsigned char dir); + void Start(string value, string * _dest=NULL); + string Finish(); + + bool bActive; + bool bCapslock; + bool bShowCancel, bShowNumpad; + bool bCanceled; + int nbitems; + unsigned int cursor; + int selected; + int priorKey; //The prior key from those places. + SimpleKey * keys[KPD_MAX]; + string * dest; + string original; //For cancelling. +}; + + +#endif diff --git a/projects/mtg/src/GameStateDeckViewer.cpp b/projects/mtg/src/GameStateDeckViewer.cpp index 9774432fe..23709a331 100644 --- a/projects/mtg/src/GameStateDeckViewer.cpp +++ b/projects/mtg/src/GameStateDeckViewer.cpp @@ -98,7 +98,7 @@ void GameStateDeckViewer::Start() menu = NEW SimpleMenu(11,this,menuFont,SCREEN_WIDTH/2-100,20); menu->Add(11,"Save"); - menu->Add(12,"Rename deck"); + menu->Add(12,"Save & Rename"); menu->Add(13,"Switch decks without saving"); menu->Add(14,"Back to main menu"); menu->Add(15,"Cancel"); @@ -216,8 +216,10 @@ void GameStateDeckViewer::Update(float dt) if(newDeckname != ""){ loadDeck(deckNum); - if(myDeck && myDeck->parent) + if(myDeck && myDeck->parent){ myDeck->parent->meta_name = newDeckname; + myDeck->save(); + } } newDeckname = ""; } @@ -708,7 +710,7 @@ int GameStateDeckViewer::loadDeck(int deckid){ char deckname[256]; sprintf(deckname,"deck%i.txt",deckid); SAFE_DELETE(myDeck); - myDeck = NEW DeckDataWrapper(NEW MTGDeck(options.profileFile(deckname).c_str(), mParent->collection)); + myDeck = NEW DeckDataWrapper(NEW MTGDeck(options.profileFile(deckname,"",false,false).c_str(), mParent->collection)); MTGCard * current = myDeck->getNext(); while (current){ int howmanyinDeck = myDeck->cards[current]; diff --git a/projects/mtg/src/SimplePad.cpp b/projects/mtg/src/SimplePad.cpp index d810d2aec..2bbbbd6aa 100644 --- a/projects/mtg/src/SimplePad.cpp +++ b/projects/mtg/src/SimplePad.cpp @@ -145,6 +145,15 @@ void SimplePad::pressKey(unsigned char key){ cursor++; buffer.insert(cursor,input); + + //Auto swap capitalization + if(bCapslock && buffer.size() == 1) + bCapslock = !bCapslock; + } + else if(key == KPD_SPACE){ + if(cursor < buffer.size()) + cursor++; + buffer.insert(cursor," "); } else if(key == KPD_CAPS) bCapslock = !bCapslock;