Jeck - Keypad and deck editor fixes.

* Fixed a call to profileFile() in deck editor that was using the wrong form.
 * Spacebar works, keypad now does smart capitalization (switches to lower case on second letter)
This commit is contained in:
wagic.jeck
2009-09-23 09:45:58 +00:00
parent 7577a588ec
commit e2e92f58af
3 changed files with 83 additions and 72 deletions

View File

@@ -1,69 +1,69 @@
#ifndef _SIMPLEPAD_H_
#define _SIMPLEPAD_H_
#include <string>
#include <JGui.h>
#include <JLBFont.h>
#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 <string>
#include <JGui.h>
#include <JLBFont.h>
#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

View File

@@ -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];

View File

@@ -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;