Тогда сама консоль может быть реализована при помощи следующего класса: О! am.

class Console : public Object {
private:
Texture * background; // shaded background
float bottom; // coordinate of bottom
// of console in 0..1 range Array * text; // text in console
Array * history;
int curLine; // text top line in console
String saveStr;
int state; // internal state of console
// - active, inactive, // opening or closing String str; // currently typed string
Font * font; // font used for drawing
// the text
float cursorOnTime; // time in millisecs since
// cursor was on
Set commands; // a set of ConsoleCommand
// objects
Controller * controller;
ResourceManager * resourceManager,-Timer * timer;
int cursorPos;
int linePos; // position of current line
// in histoy
String textureName; public:
Console ( const Strings textureName, Controller *
theController ) ; -Console ();
// overriden Object methods virtual bool isOk () const;
virtual Object * clone () const;
void draw ( View * ) ; // draw the console on top
// of screene

Пишем портальный рендерер (часть II)

int handleChar ( int ch ) ; // handle character, returns
// non-zero if console
// is active
// handle key, returns non -
// zero if console is active
int handleKey ( int key, bool pressed );
void addCommand ( ConsoleCommand * command );
void addString ( const Strings ) ,-
void execute ( const Strings str );
bool executeHelp ( const Arrays argv );
int getState () const {
return state;
}
; Controller * getController () const {
return controller;
}
static MetaClass classlnstance;
} ;

I Ниже приводится реализация этого метода. Главными методами консоли являются методы handleKey и execute.

\ Метод handleKey обрабатывает очередной введенный пользователем ^символ, а метод execute выполняет законченную команду, введенную пользователем.


⇐ Предыдущая| |Следующая ⇒