console.h
上传用户:qccn516
上传日期:2013-05-02
资源大小:3382k
文件大小:2k
源码类别:

游戏引擎

开发平台:

Visual C++

  1. /* Console
  2.  *
  3.  * Copyright (C) 2003-2004, Alexander Zaprjagaev <frustum@frustum.org>
  4.  *
  5.  * This program is free software; you can redistribute it and/or modify
  6.  * it under the terms of the GNU General Public License as published by
  7.  * the Free Software Foundation; either version 2 of the License, or
  8.  * (at your option) any later version.
  9.  *
  10.  * This program is distributed in the hope that it will be useful,
  11.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13.  * GNU General Public License for more details.
  14.  *
  15.  * You should have received a copy of the GNU General Public License
  16.  * along with this program; if not, write to the Free Software
  17.  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  18.  */
  19. #ifndef __CONSOLE_H__
  20. #define __CONSOLE_H__
  21. #include <vector>
  22. #include "font.h"
  23. #define CONSOLE_CMD "~# "
  24. class Console : public Font {
  25. public:
  26. Console(const char *name,FILE *file = NULL);
  27. ~Console();
  28. void printf(float x,float y,const char *str,...);
  29. void printf(const char *str,...);
  30. void printf(float r,float g,float b,const char *str,...);
  31. void render(float ifps,int num = 20);
  32. void keyPress(int key);
  33. int getActivity();
  34. void addBool(const char *name,int *b);
  35. void addInt(const char *name,int *i);
  36. void addFloat(const char *name,float *f);
  37. void addCommand(const char *name,void (*func)(int,char**,void*),void *data = NULL);
  38. protected:
  39. enum {
  40. NUM_LINES = 40,
  41. HISTORY = 20
  42. };
  43. enum {
  44. BOOL = 0,
  45. INT,
  46. FLOAT,
  47. };
  48. struct Variable {
  49. int type;
  50. union {
  51. int *b;
  52. int *i;
  53. float *f;
  54. };
  55. char name[256];
  56. };
  57. struct Command {
  58. void (*func)(int,char**,void*);
  59. void *data;
  60. char name[256];
  61. };
  62. std::vector<Variable*> variables;
  63. std::vector<Command*> commands;
  64. struct Line {
  65. char *str;
  66. float r,g,b;
  67. };
  68. int current_line;
  69. Line lines[NUM_LINES];
  70. int last_history;
  71. int current_history;
  72. char *history[HISTORY];
  73. char cmd[1024];
  74. char *cmd_ptr;
  75. int activity;
  76. float time;
  77. FILE *file;
  78. };
  79. #endif /* __CONSOLE_H__ */