Merge with changes from Zaba999 fork.
parent
cf2295d08d
commit
479a67a731
|
@ -124,7 +124,7 @@ graphics/opengl/gldevice.cpp
|
|||
# object/motion/motiontoto.cpp
|
||||
# object/motion/motionvehicle.cpp
|
||||
# object/motion/motionworm.cpp
|
||||
# object/object.cpp
|
||||
object/object.cpp
|
||||
# object/robotmain.cpp
|
||||
# object/task/task.cpp
|
||||
# object/task/taskadvance.cpp
|
||||
|
@ -147,10 +147,10 @@ graphics/opengl/gldevice.cpp
|
|||
# object/task/taskterraform.cpp
|
||||
# object/task/taskturn.cpp
|
||||
# object/task/taskwait.cpp
|
||||
# physics/physics.cpp
|
||||
# script/cbottoken.cpp
|
||||
# script/cmdtoken.cpp
|
||||
# script/script.cpp
|
||||
physics/physics.cpp
|
||||
script/cbottoken.cpp
|
||||
script/cmdtoken.cpp
|
||||
script/script.cpp
|
||||
# sound/sound.cpp
|
||||
# ui/button.cpp
|
||||
# ui/check.cpp
|
||||
|
@ -197,6 +197,7 @@ ${SDL_IMAGE_INCLUDE_DIR}
|
|||
${SDLTTF_INCLUDE_DIR}
|
||||
${PNG_INCLUDE_DIRS}
|
||||
${OPTIONAL_INCLUDE_DIRS}
|
||||
..
|
||||
)
|
||||
|
||||
link_directories(${CMAKE_CURRENT_SOURCE_DIR}/CBot)
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
// If need arises, it can be changed to custom function or anything else
|
||||
#define KEY(x) SDLK_ ## x
|
||||
|
||||
|
||||
// Key modifier defined as concatenation to KMOD_...
|
||||
// If need arises, it can be changed to custom function or anything else
|
||||
#define KEY_MOD(x) KMOD_ ## x
|
||||
|
|
|
@ -21,14 +21,16 @@
|
|||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
#include <direct.h>
|
||||
//#include <direct.h>
|
||||
#include <time.h>
|
||||
#include <d3d.h>
|
||||
//#include <d3d.h>
|
||||
|
||||
#include "common/struct.h"
|
||||
#include "old/d3dengine.h"
|
||||
#include "old/d3dmath.h"
|
||||
#include "old/d3dutil.h"
|
||||
//#include "old/d3dengine.h"
|
||||
#include "graphics/engine/engine.h"
|
||||
//#include "old/d3dmath.h"
|
||||
//#include "math/math.h"
|
||||
//#include "old/d3dutil.h"
|
||||
#include "common/language.h"
|
||||
#include "common/event.h"
|
||||
#include "common/misc.h"
|
||||
|
@ -37,7 +39,7 @@
|
|||
|
||||
CMetaFile g_metafile;
|
||||
|
||||
static EventMsg g_uniqueEventMsg = EVENT_USER;
|
||||
static EventType g_uniqueEventType = EVENT_USER;
|
||||
static bool g_bUserDir = false;
|
||||
static char g_userDir[100] = "";
|
||||
|
||||
|
@ -45,84 +47,84 @@ static char g_userDir[100] = "";
|
|||
|
||||
// Gives a single user event.
|
||||
|
||||
EventMsg GetUniqueEventMsg()
|
||||
EventType GetUniqueEventType()
|
||||
{
|
||||
int i;
|
||||
|
||||
i = (int)g_uniqueEventMsg+1;
|
||||
g_uniqueEventMsg = (EventMsg)i;
|
||||
return g_uniqueEventMsg;
|
||||
i = static_cast <int> (g_uniqueEventType+1);
|
||||
g_uniqueEventType = static_cast<EventType>(i);
|
||||
return g_uniqueEventType;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Returns a non-accented letter.
|
||||
|
||||
char RetNoAccent(char letter)
|
||||
char GetNoAccent(char letter)
|
||||
{
|
||||
if ( letter < 0 )
|
||||
{
|
||||
if ( letter == 'á' ||
|
||||
letter == 'à' ||
|
||||
letter == 'â' ||
|
||||
letter == 'ä' ||
|
||||
letter == 'ã' ) return 'a';
|
||||
if ( letter == '<EFBFBD>' ||
|
||||
letter == '<EFBFBD>' ||
|
||||
letter == '<EFBFBD>' ||
|
||||
letter == '<EFBFBD>' ||
|
||||
letter == '<EFBFBD>' ) return 'a';
|
||||
|
||||
if ( letter == 'é' ||
|
||||
letter == 'è' ||
|
||||
letter == 'ê' ||
|
||||
letter == 'ë' ) return 'e';
|
||||
if ( letter == '<EFBFBD>' ||
|
||||
letter == '<EFBFBD>' ||
|
||||
letter == '<EFBFBD>' ||
|
||||
letter == '<EFBFBD>' ) return 'e';
|
||||
|
||||
if ( letter == 'í' ||
|
||||
letter == 'ì' ||
|
||||
letter == 'î' ||
|
||||
letter == 'ï' ) return 'i';
|
||||
if ( letter == '<EFBFBD>' ||
|
||||
letter == '<EFBFBD>' ||
|
||||
letter == '<EFBFBD>' ||
|
||||
letter == '<EFBFBD>' ) return 'i';
|
||||
|
||||
if ( letter == 'ó' ||
|
||||
letter == 'ò' ||
|
||||
letter == 'ô' ||
|
||||
letter == 'ö' ||
|
||||
letter == 'õ' ) return 'o';
|
||||
if ( letter == '<EFBFBD>' ||
|
||||
letter == '<EFBFBD>' ||
|
||||
letter == '<EFBFBD>' ||
|
||||
letter == '<EFBFBD>' ||
|
||||
letter == '<EFBFBD>' ) return 'o';
|
||||
|
||||
if ( letter == 'ú' ||
|
||||
letter == 'ù' ||
|
||||
letter == 'û' ||
|
||||
letter == 'ü' ) return 'u';
|
||||
if ( letter == '<EFBFBD>' ||
|
||||
letter == '<EFBFBD>' ||
|
||||
letter == '<EFBFBD>' ||
|
||||
letter == '<EFBFBD>' ) return 'u';
|
||||
|
||||
if ( letter == 'ç' ) return 'c';
|
||||
if ( letter == '<EFBFBD>' ) return 'c';
|
||||
|
||||
if ( letter == 'ñ' ) return 'n';
|
||||
if ( letter == '<EFBFBD>' ) return 'n';
|
||||
|
||||
if ( letter == 'Á' ||
|
||||
letter == 'À' ||
|
||||
letter == 'Â' ||
|
||||
letter == 'Ä' ||
|
||||
letter == 'Ã' ) return 'A';
|
||||
if ( letter == '<EFBFBD>' ||
|
||||
letter == '<EFBFBD>' ||
|
||||
letter == '<EFBFBD>' ||
|
||||
letter == '<EFBFBD>' ||
|
||||
letter == '<EFBFBD>' ) return 'A';
|
||||
|
||||
if ( letter == 'É' ||
|
||||
letter == 'È' ||
|
||||
letter == 'Ê' ||
|
||||
letter == 'Ë' ) return 'E';
|
||||
if ( letter == '<EFBFBD>' ||
|
||||
letter == '<EFBFBD>' ||
|
||||
letter == '<EFBFBD>' ||
|
||||
letter == '<EFBFBD>' ) return 'E';
|
||||
|
||||
if ( letter == 'Í' ||
|
||||
letter == 'Ì' ||
|
||||
letter == 'Î' ||
|
||||
letter == 'Ï' ) return 'I';
|
||||
if ( letter == '<EFBFBD>' ||
|
||||
letter == '<EFBFBD>' ||
|
||||
letter == '<EFBFBD>' ||
|
||||
letter == '<EFBFBD>' ) return 'I';
|
||||
|
||||
if ( letter == 'Ó' ||
|
||||
letter == 'Ò' ||
|
||||
letter == 'Ô' ||
|
||||
letter == 'Ö' ||
|
||||
letter == 'Õ' ) return 'O';
|
||||
if ( letter == '<EFBFBD>' ||
|
||||
letter == '<EFBFBD>' ||
|
||||
letter == '<EFBFBD>' ||
|
||||
letter == '<EFBFBD>' ||
|
||||
letter == '<EFBFBD>' ) return 'O';
|
||||
|
||||
if ( letter == 'Ú' ||
|
||||
letter == 'Ù' ||
|
||||
letter == 'Û' ||
|
||||
letter == 'Ü' ) return 'U';
|
||||
if ( letter == '<EFBFBD>' ||
|
||||
letter == '<EFBFBD>' ||
|
||||
letter == '<EFBFBD>' ||
|
||||
letter == '<EFBFBD>' ) return 'U';
|
||||
|
||||
if ( letter == 'Ç' ) return 'C';
|
||||
if ( letter == '<EFBFBD>' ) return 'C';
|
||||
|
||||
if ( letter == 'Ñ' ) return 'N';
|
||||
if ( letter == '<EFBFBD>' ) return 'N';
|
||||
}
|
||||
|
||||
return letter;
|
||||
|
@ -130,40 +132,40 @@ char RetNoAccent(char letter)
|
|||
|
||||
// Returns an uppercase letter.
|
||||
|
||||
char RetToUpper(char letter)
|
||||
char GetToUpper(char letter)
|
||||
{
|
||||
if ( letter < 0 )
|
||||
{
|
||||
if ( letter == 'á' ) return 'Á';
|
||||
if ( letter == 'à' ) return 'À';
|
||||
if ( letter == 'â' ) return 'Â';
|
||||
if ( letter == 'ä' ) return 'Ä';
|
||||
if ( letter == 'ã' ) return 'Ã';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
|
||||
if ( letter == 'é' ) return 'É';
|
||||
if ( letter == 'è' ) return 'È';
|
||||
if ( letter == 'ê' ) return 'Ê';
|
||||
if ( letter == 'ë' ) return 'Ë';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
|
||||
if ( letter == 'í' ) return 'Í';
|
||||
if ( letter == 'ì' ) return 'Ì';
|
||||
if ( letter == 'î' ) return 'Î';
|
||||
if ( letter == 'ï' ) return 'Ï';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
|
||||
if ( letter == 'ó' ) return 'Ó';
|
||||
if ( letter == 'ò' ) return 'Ò';
|
||||
if ( letter == 'ô' ) return 'Ô';
|
||||
if ( letter == 'ö' ) return 'Ö';
|
||||
if ( letter == 'õ' ) return 'Õ';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
|
||||
if ( letter == 'ú' ) return 'Ú';
|
||||
if ( letter == 'ù' ) return 'Ù';
|
||||
if ( letter == 'û' ) return 'Û';
|
||||
if ( letter == 'ü' ) return 'Ü';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
|
||||
if ( letter == 'ç' ) return 'Ç';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
|
||||
if ( letter == 'ñ' ) return 'Ñ';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
}
|
||||
|
||||
return toupper(letter);
|
||||
|
@ -171,40 +173,40 @@ char RetToUpper(char letter)
|
|||
|
||||
// Returns a lowercase letter.
|
||||
|
||||
char RetToLower(char letter)
|
||||
char GetToLower(char letter)
|
||||
{
|
||||
if ( letter < 0 )
|
||||
{
|
||||
if ( letter == 'Á' ) return 'á';
|
||||
if ( letter == 'À' ) return 'à';
|
||||
if ( letter == 'Â' ) return 'â';
|
||||
if ( letter == 'Ä' ) return 'ä';
|
||||
if ( letter == 'Ã' ) return 'ã';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
|
||||
if ( letter == 'É' ) return 'é';
|
||||
if ( letter == 'È' ) return 'è';
|
||||
if ( letter == 'Ê' ) return 'ê';
|
||||
if ( letter == 'Ë' ) return 'ë';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
|
||||
if ( letter == 'Í' ) return 'í';
|
||||
if ( letter == 'Ì' ) return 'ì';
|
||||
if ( letter == 'Î' ) return 'î';
|
||||
if ( letter == 'Ï' ) return 'ï';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
|
||||
if ( letter == 'Ó' ) return 'ó';
|
||||
if ( letter == 'Ò' ) return 'ò';
|
||||
if ( letter == 'Ô' ) return 'ô';
|
||||
if ( letter == 'Ö' ) return 'ö';
|
||||
if ( letter == 'Õ' ) return 'õ';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
|
||||
if ( letter == 'Ú' ) return 'ú';
|
||||
if ( letter == 'Ù' ) return 'ù';
|
||||
if ( letter == 'Û' ) return 'û';
|
||||
if ( letter == 'Ü' ) return 'ü';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
|
||||
if ( letter == 'Ç' ) return 'ç';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
|
||||
if ( letter == 'Ñ' ) return 'ñ';
|
||||
if ( letter == '<EFBFBD>' ) return '<EFBFBD>';
|
||||
}
|
||||
|
||||
return tolower(letter);
|
||||
|
@ -213,7 +215,7 @@ char RetToLower(char letter)
|
|||
|
||||
// Converting time to string.
|
||||
|
||||
void TimeToAscii(time_t time, char *buffer)
|
||||
void GimeToAscii(time_t time, char *buffer)
|
||||
{
|
||||
struct tm when;
|
||||
int year;
|
||||
|
@ -311,7 +313,7 @@ bool CopyFileToTemp(char* filename)
|
|||
UserDir(dst, filename, "textures");
|
||||
strcpy(g_userDir, save);
|
||||
|
||||
_mkdir("temp");
|
||||
// _mkdir("temp"); TODO
|
||||
if ( !Xfer(src, dst) ) return false;
|
||||
|
||||
strcpy(filename, dst);
|
||||
|
@ -379,7 +381,7 @@ void UserDir(bool bUser, char* dir)
|
|||
// def = "abc\"
|
||||
// out: buffer = "abc\toto.txt"
|
||||
|
||||
void UserDir(char* buffer, char* dir, char* def)
|
||||
void UserDir(char* buffer, char* dir, const char* def)
|
||||
{
|
||||
char ddir[100];
|
||||
char* add;
|
||||
|
|
|
@ -89,9 +89,9 @@ const int KS_NUMMINUS = (1<<15);
|
|||
|
||||
extern EventType GetUniqueEventType();
|
||||
|
||||
extern char RetNoAccent(char letter);
|
||||
extern char RetToUpper(char letter);
|
||||
extern char RetToLower(char letter);
|
||||
extern char GetNoAccent(char letter);
|
||||
extern char GetToUpper(char letter);
|
||||
extern char GetToLower(char letter);
|
||||
|
||||
extern void TimeToAscii(time_t time, char *buffer);
|
||||
|
||||
|
@ -99,8 +99,8 @@ extern bool CopyFileToTemp(char* filename);
|
|||
extern bool CopyFileListToTemp(char* filename, int* list, int total);
|
||||
extern void AddExt(char* filename, char* ext);
|
||||
extern void UserDir(bool bUser, char* dir);
|
||||
extern void UserDir(char* buffer, char* dir, char* def);
|
||||
extern void UserDir(char* buffer, char* dir, const char* def);
|
||||
|
||||
extern char RetLanguageLetter();
|
||||
extern char GetLanguageLetter();
|
||||
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -18,38 +18,143 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include "common/restext_ids.h"
|
||||
//#include "graphics/engine/engine.h"
|
||||
#include "common/event.h"
|
||||
|
||||
namespace Gfx
|
||||
{
|
||||
class CEngine;
|
||||
}
|
||||
|
||||
|
||||
|
||||
class CD3DEngine;
|
||||
|
||||
// Possible types of the text resources.
|
||||
|
||||
enum ResType
|
||||
{
|
||||
RES_TEXT = 0, // RT_*
|
||||
RES_EVENT = 1, // EVENT_* (EventMsg)
|
||||
RES_OBJECT = 2, // OBJECT_* (ObjectType)
|
||||
RES_ERR = 3, // ERR_* (Error)
|
||||
RES_KEY = 4, // VK_* (keys)
|
||||
RES_CBOT = 5, // TX_* (cbot.dll)
|
||||
RES_TEXT = 0, // RT_*
|
||||
RES_EVENT = 1, // EVENT_* (EventType)
|
||||
RES_OBJECT = 2, // OBJECT_* (ObjectType)
|
||||
RES_ERR = 3, // ERR_* (Error)
|
||||
RES_KEY = 4, // VK_* (keys)
|
||||
RES_CBOT = 5, // TX_* (cbot.dll)
|
||||
};
|
||||
|
||||
|
||||
extern void SetEngine(CD3DEngine *engine);
|
||||
// Resources of type RES_TEXT.
|
||||
|
||||
enum ResTextType
|
||||
{
|
||||
RT_VERSION_ID = 1,
|
||||
RT_DISINFO_TITLE = 2,
|
||||
RT_WINDOW_MAXIMIZED = 3,
|
||||
RT_WINDOW_MINIMIZED = 4,
|
||||
RT_WINDOW_STANDARD = 5,
|
||||
RT_WINDOW_CLOSE = 6,
|
||||
|
||||
RT_STUDIO_TITLE = 10,
|
||||
RT_SCRIPT_NEW = 20,
|
||||
RT_NAME_DEFAULT = 21,
|
||||
RT_IO_NEW = 22,
|
||||
RT_KEY_OR = 23,
|
||||
|
||||
RT_TITLE_BASE = 40,
|
||||
RT_TITLE_INIT = 41,
|
||||
RT_TITLE_TRAINER = 42,
|
||||
RT_TITLE_DEFI = 43,
|
||||
RT_TITLE_MISSION = 44,
|
||||
RT_TITLE_FREE = 45,
|
||||
RT_TITLE_PROTO = 46,
|
||||
RT_TITLE_SETUP = 47,
|
||||
RT_TITLE_NAME = 48,
|
||||
RT_TITLE_PERSO = 49,
|
||||
RT_TITLE_WRITE = 50,
|
||||
RT_TITLE_READ = 51,
|
||||
RT_TITLE_USER = 52,
|
||||
RT_TITLE_TEEN = 53,
|
||||
|
||||
RT_PLAY_CHAPt = 60,
|
||||
RT_PLAY_CHAPd = 61,
|
||||
RT_PLAY_CHAPm = 62,
|
||||
RT_PLAY_CHAPf = 63,
|
||||
RT_PLAY_CHAPp = 64,
|
||||
RT_PLAY_LISTt = 65,
|
||||
RT_PLAY_LISTd = 66,
|
||||
RT_PLAY_LISTm = 67,
|
||||
RT_PLAY_LISTf = 68,
|
||||
RT_PLAY_LISTp = 69,
|
||||
RT_PLAY_RESUME = 70,
|
||||
RT_PLAY_CHAPu = 71,
|
||||
RT_PLAY_LISTu = 72,
|
||||
RT_PLAY_CHAPte = 73,
|
||||
RT_PLAY_LISTk = 74,
|
||||
|
||||
RT_SETUP_DEVICE = 80,
|
||||
RT_SETUP_MODE = 81,
|
||||
RT_SETUP_KEY1 = 82,
|
||||
RT_SETUP_KEY2 = 83,
|
||||
|
||||
RT_PERSO_FACE = 90,
|
||||
RT_PERSO_GLASSES = 91,
|
||||
RT_PERSO_HAIR = 92,
|
||||
RT_PERSO_COMBI = 93,
|
||||
RT_PERSO_BAND = 94,
|
||||
|
||||
RT_DIALOG_TITLE = 100,
|
||||
RT_DIALOG_ABORT = 101,
|
||||
RT_DIALOG_QUIT = 102,
|
||||
RT_DIALOG_YES = 103,
|
||||
RT_DIALOG_NO = 104,
|
||||
RT_DIALOG_DELOBJ = 105,
|
||||
RT_DIALOG_DELGAME = 106,
|
||||
RT_DIALOG_YESDEL = 107,
|
||||
RT_DIALOG_NODEL = 108,
|
||||
RT_DIALOG_LOADING = 109,
|
||||
RT_DIALOG_YESQUIT = 110,
|
||||
RT_DIALOG_NOQUIT = 111,
|
||||
|
||||
RT_STUDIO_LISTTT = 120,
|
||||
RT_STUDIO_COMPOK = 121,
|
||||
RT_STUDIO_PROGSTOP = 122,
|
||||
|
||||
RT_SATCOM_LIST = 140,
|
||||
RT_SATCOM_BOT = 141,
|
||||
RT_SATCOM_BUILDING = 142,
|
||||
RT_SATCOM_FRET = 143,
|
||||
RT_SATCOM_ALIEN = 144,
|
||||
RT_SATCOM_NULL = 145,
|
||||
RT_SATCOM_ERROR1 = 146,
|
||||
RT_SATCOM_ERROR2 = 147,
|
||||
|
||||
RT_IO_OPEN = 150,
|
||||
RT_IO_SAVE = 151,
|
||||
RT_IO_LIST = 152,
|
||||
RT_IO_NAME = 153,
|
||||
RT_IO_DIR = 154,
|
||||
RT_IO_PRIVATE = 155,
|
||||
RT_IO_PUBLIC = 156,
|
||||
|
||||
RT_GENERIC_DEV1 = 170,
|
||||
RT_GENERIC_DEV2 = 171,
|
||||
RT_GENERIC_EDIT1 = 172,
|
||||
RT_GENERIC_EDIT2 = 173,
|
||||
|
||||
RT_INTERFACE_REC = 180,
|
||||
|
||||
RT_MESSAGE_WIN = 200,
|
||||
RT_MESSAGE_LOST = 201,
|
||||
};
|
||||
|
||||
|
||||
static Gfx::CEngine* g_engine = 0;
|
||||
static char g_gamerName[100];
|
||||
|
||||
extern void SetEngine(Gfx::CEngine *engine);
|
||||
extern void SetGlobalGamerName(char *name);
|
||||
extern bool SearchKey(char *cmd, KeyRank &key);
|
||||
extern void PutKeyName(char* dst, char* src);
|
||||
extern bool GetResource(ResType type, int num, char* text);
|
||||
extern bool GetResourceBase(ResType type, int num, char* text);
|
||||
|
||||
extern const char * const strings_text[];
|
||||
extern const char * const strings_event[];
|
||||
extern const char * const strings_object[];
|
||||
extern const char * const strings_err[];
|
||||
extern const char * const strings_cbot[];
|
||||
|
||||
extern const int strings_text_len;
|
||||
extern const int strings_event_len;
|
||||
extern const int strings_object_len;
|
||||
extern const int strings_err_len;
|
||||
extern const int strings_cbot_len;
|
||||
|
|
|
@ -28,67 +28,6 @@
|
|||
#include "object/object.h"
|
||||
#include "physics/physics.h"
|
||||
|
||||
|
||||
// TODO temporary stubs for CObject and CPhysics
|
||||
|
||||
void CObject::SetTransparency(float)
|
||||
{
|
||||
}
|
||||
|
||||
CObject* CObject::GetFret()
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
CObject* CObject::GetPower()
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
CObject* CObject::GetTruck()
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
ObjectType CObject::GetType()
|
||||
{
|
||||
return OBJECT_NULL;
|
||||
}
|
||||
|
||||
void CObject::SetGunGoalH(float)
|
||||
{
|
||||
}
|
||||
|
||||
void CObject::GetGlobalSphere(Math::Vector &pos, float &radius)
|
||||
{
|
||||
}
|
||||
|
||||
float CObject::GetAngleY(int)
|
||||
{
|
||||
return 0.0f;
|
||||
}
|
||||
|
||||
Math::Vector CObject::GetPosition(int)
|
||||
{
|
||||
return Math::Vector();
|
||||
}
|
||||
|
||||
void CObject::SetViewFromHere(Math::Vector &eye, float &dirH, float &dirV,
|
||||
Math::Vector &lookat, Math::Vector &upVec,
|
||||
Gfx::CameraType type)
|
||||
{
|
||||
}
|
||||
|
||||
CPhysics* CObject::GetPhysics()
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
bool CPhysics::GetLand()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
//! Changes the level of transparency of an object and objects transported (battery & cargo)
|
||||
void SetTransparency(CObject* obj, float value)
|
||||
{
|
||||
|
|
|
@ -15,55 +15,55 @@
|
|||
// * along with this program. If not, see http://www.gnu.org/licenses/.
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
// #include <stdio.h>
|
||||
//
|
||||
#include "object/brain.h"
|
||||
|
||||
#include "CBot/CBotDll.h"
|
||||
#include "common/struct.h"
|
||||
#include "math/geometry.h"
|
||||
#include "math/const.h"
|
||||
#include "old/d3dengine.h"
|
||||
#include "old/d3dmath.h"
|
||||
#include "common/language.h"
|
||||
#include "common/global.h"
|
||||
#include "common/event.h"
|
||||
//
|
||||
// #include "CBot/CBotDll.h"
|
||||
// #include "common/struct.h"
|
||||
// #include "math/geometry.h"
|
||||
// #include "math/const.h"
|
||||
// #include "old/d3dengine.h"
|
||||
// #include "old/d3dmath.h"
|
||||
// #include "common/language.h"
|
||||
// #include "common/global.h"
|
||||
// #include "common/event.h"
|
||||
#include "common/misc.h"
|
||||
#include "common/iman.h"
|
||||
#include "common/restext.h"
|
||||
#include "old/math3d.h"
|
||||
#include "object/robotmain.h"
|
||||
#include "old/terrain.h"
|
||||
#include "old/water.h"
|
||||
#include "old/camera.h"
|
||||
#include "object/object.h"
|
||||
#include "physics/physics.h"
|
||||
#include "object/motion/motion.h"
|
||||
#include "object/motion/motionspider.h"
|
||||
#include "old/pyro.h"
|
||||
// #include "common/restext.h"
|
||||
// #include "old/math3d.h"
|
||||
// #include "object/robotmain.h"
|
||||
// #include "old/terrain.h"
|
||||
// #include "old/water.h"
|
||||
// #include "old/camera.h"
|
||||
// #include "object/object.h"
|
||||
// #include "physics/physics.h"
|
||||
// #include "object/motion/motion.h"
|
||||
// #include "object/motion/motionspider.h"
|
||||
// #include "old/pyro.h"
|
||||
#include "object/task/taskmanager.h"
|
||||
#include "object/task/task.h"
|
||||
#include "object/task/taskmanip.h"
|
||||
#include "object/task/taskflag.h"
|
||||
#include "object/task/taskshield.h"
|
||||
// #include "object/task/task.h"
|
||||
// #include "object/task/taskmanip.h"
|
||||
// #include "object/task/taskflag.h"
|
||||
// #include "object/task/taskshield.h"
|
||||
#include "script/script.h"
|
||||
#include "ui/studio.h"
|
||||
#include "ui/interface.h"
|
||||
#include "ui/button.h"
|
||||
#include "ui/color.h"
|
||||
#include "ui/edit.h"
|
||||
#include "ui/list.h"
|
||||
#include "ui/label.h"
|
||||
#include "ui/group.h"
|
||||
#include "ui/gauge.h"
|
||||
// #include "ui/studio.h"
|
||||
// #include "ui/interface.h"
|
||||
// #include "ui/button.h"
|
||||
// #include "ui/color.h"
|
||||
// #include "ui/edit.h"
|
||||
// #include "ui/list.h"
|
||||
// #include "ui/label.h"
|
||||
// #include "ui/group.h"
|
||||
// #include "ui/gauge.h"
|
||||
#include "ui/slider.h"
|
||||
#include "ui/compass.h"
|
||||
#include "ui/target.h"
|
||||
// #include "ui/compass.h"
|
||||
// #include "ui/target.h"
|
||||
#include "ui/window.h"
|
||||
#include "ui/displaytext.h"
|
||||
#include "old/text.h"
|
||||
#include "old/sound.h"
|
||||
#include "old/particule.h"
|
||||
// #include "ui/displaytext.h"
|
||||
// #include "old/text.h"
|
||||
#include "sound/sound.h"
|
||||
// #include "old/particule.h"
|
||||
#include "script/cmdtoken.h"
|
||||
|
||||
|
||||
|
@ -82,20 +82,21 @@ CBrain::CBrain(CInstanceManager* iMan, CObject* object)
|
|||
m_iMan->AddInstance(CLASS_BRAIN, this, 100);
|
||||
|
||||
m_object = object;
|
||||
m_engine = (CD3DEngine*)m_iMan->SearchInstance(CLASS_ENGINE);
|
||||
m_terrain = (CTerrain*)m_iMan->SearchInstance(CLASS_TERRAIN);
|
||||
m_water = (CWater*)m_iMan->SearchInstance(CLASS_WATER);
|
||||
m_camera = (CCamera*)m_iMan->SearchInstance(CLASS_CAMERA);
|
||||
m_interface = (CInterface*)m_iMan->SearchInstance(CLASS_INTERFACE);
|
||||
m_displayText = (CDisplayText*)m_iMan->SearchInstance(CLASS_DISPLAYTEXT);
|
||||
m_main = (CRobotMain*)m_iMan->SearchInstance(CLASS_MAIN);
|
||||
m_sound = (CSound*)m_iMan->SearchInstance(CLASS_SOUND);
|
||||
m_particule = (CParticule*)m_iMan->SearchInstance(CLASS_PARTICULE);
|
||||
m_engine = static_cast<Gfx::CEngine*>(m_iMan->SearchInstance(CLASS_ENGINE));
|
||||
m_terrain = static_cast<Gfx::CTerrain*>(m_iMan->SearchInstance(CLASS_TERRAIN));
|
||||
m_water = static_cast<Gfx::CWater*>(m_iMan->SearchInstance(CLASS_WATER));
|
||||
m_camera = static_cast<Gfx::CCamera*>(m_iMan->SearchInstance(CLASS_CAMERA));
|
||||
m_interface = static_cast<CInterface*>(m_iMan->SearchInstance(CLASS_INTERFACE));
|
||||
m_displayText = static_cast<CDisplayText*>(m_iMan->SearchInstance(CLASS_DISPLAYTEXT));
|
||||
m_main = static_cast<CRobotMain*>(m_iMan->SearchInstance(CLASS_MAIN));
|
||||
m_sound = static_cast<CSoundInterface*>(m_iMan->SearchInstance(CLASS_SOUND));
|
||||
m_particle = static_cast<CParticle*>(m_iMan->SearchInstance(CLASS_PARTICULE));
|
||||
m_physics = 0;
|
||||
m_motion = 0;
|
||||
m_primaryTask = 0;
|
||||
m_secondaryTask = 0;
|
||||
m_studio = 0;
|
||||
// TODO uncoment when ui/studio will be implemented.
|
||||
// m_studio = 0;
|
||||
|
||||
m_program = -1;
|
||||
m_bActivity = true;
|
||||
|
@ -142,7 +143,8 @@ CBrain::~CBrain()
|
|||
|
||||
delete m_primaryTask;
|
||||
delete m_secondaryTask;
|
||||
delete m_studio;
|
||||
// TODO uncoment when ui/studio will be implemented.
|
||||
// delete m_studio;
|
||||
delete m_traceRecordBuffer;
|
||||
m_iMan->DeleteInstance(CLASS_BRAIN, this);
|
||||
}
|
||||
|
@ -169,7 +171,8 @@ void CBrain::DeleteObject(bool bAll)
|
|||
}
|
||||
}
|
||||
|
||||
if ( m_studio != 0 ) // current edition?
|
||||
// TODO uncoment when ui/studio will be implemented.
|
||||
// if ( m_studio != 0 ) // current edition?
|
||||
{
|
||||
StopEditScript(true);
|
||||
}
|
||||
|
@ -213,13 +216,13 @@ bool CBrain::Read(char *line)
|
|||
|
||||
bool CBrain::EventProcess(const Event &event)
|
||||
{
|
||||
CWindow* pw;
|
||||
CControl* pc;
|
||||
CSlider* ps;
|
||||
EventMsg action;
|
||||
ObjectType type;
|
||||
Error err;
|
||||
float axeX, axeY, axeZ, factor;
|
||||
Ui::CWindow* pw;
|
||||
Ui::CControl* pc;
|
||||
Ui::CSlider* ps;
|
||||
Event action;
|
||||
ObjectType type;
|
||||
Error err;
|
||||
float axeX, axeY, axeZ, factor;
|
||||
|
||||
type = m_object->RetType();
|
||||
|
||||
|
@ -240,7 +243,7 @@ bool CBrain::EventProcess(const Event &event)
|
|||
event.param == m_engine->RetKey(KEYRANK_ACTION, 1) ) &&
|
||||
!m_main->RetEditLock() )
|
||||
{
|
||||
pw = (CWindow*)m_interface->SearchControl(EVENT_WINDOW0);
|
||||
pw = (Ui::CWindow*)m_interface->SearchControl(EVENT_WINDOW0);
|
||||
if ( pw != 0 )
|
||||
{
|
||||
pc = pw->SearchControl(m_defaultEnter);
|
||||
|
@ -270,10 +273,11 @@ bool CBrain::EventProcess(const Event &event)
|
|||
EventFrame(event);
|
||||
}
|
||||
|
||||
// TODO uncoment when ui/studio will be implemented.
|
||||
if ( m_object->RetSelect() && // robot selected?
|
||||
m_studio != 0 ) // current issue?
|
||||
/* m_studio != 0 */ ) // current issue?
|
||||
{
|
||||
m_studio->EventProcess(event);
|
||||
// m_studio->EventProcess(event);
|
||||
|
||||
if ( action == EVENT_OBJECT_PROGRUN )
|
||||
{
|
||||
|
@ -591,10 +595,10 @@ bool CBrain::EventProcess(const Event &event)
|
|||
|
||||
if ( action == EVENT_OBJECT_DIMSHIELD )
|
||||
{
|
||||
pw = (CWindow*)m_interface->SearchControl(EVENT_WINDOW0);
|
||||
pw = (Ui::CWindow*)m_interface->SearchControl(EVENT_WINDOW0);
|
||||
if ( pw != 0 )
|
||||
{
|
||||
ps = (CSlider*)pw->SearchControl(EVENT_OBJECT_DIMSHIELD);
|
||||
ps = (Ui::CSlider*)pw->SearchControl(EVENT_OBJECT_DIMSHIELD);
|
||||
if ( ps != 0 )
|
||||
{
|
||||
m_object->SetParam((ps->RetVisibleValue()-(RADIUS_SHIELD_MIN/g_unit))/((RADIUS_SHIELD_MAX-RADIUS_SHIELD_MIN)/g_unit));
|
||||
|
@ -687,7 +691,7 @@ bool CBrain::EventProcess(const Event &event)
|
|||
TraceRecordStart();
|
||||
}
|
||||
UpdateInterface();
|
||||
pw = (CWindow*)m_interface->SearchControl(EVENT_WINDOW0);
|
||||
pw = (Ui::CWindow*)m_interface->SearchControl(EVENT_WINDOW0);
|
||||
if ( pw != 0 )
|
||||
{
|
||||
UpdateScript(pw);
|
||||
|
@ -701,7 +705,7 @@ bool CBrain::EventProcess(const Event &event)
|
|||
TraceRecordStop();
|
||||
}
|
||||
UpdateInterface();
|
||||
pw = (CWindow*)m_interface->SearchControl(EVENT_WINDOW0);
|
||||
pw = (Ui::CWindow*)m_interface->SearchControl(EVENT_WINDOW0);
|
||||
if ( pw != 0 )
|
||||
{
|
||||
UpdateScript(pw);
|
||||
|
@ -765,10 +769,11 @@ bool CBrain::EventFrame(const Event &event)
|
|||
m_sound->Position(m_soundChannelAlarm, m_object->RetPosition(0));
|
||||
}
|
||||
|
||||
if ( m_studio != 0 ) // <20>urrent edition?
|
||||
{
|
||||
m_studio->EventProcess(event);
|
||||
}
|
||||
// TODO uncoment when ui/studio will be implemented.
|
||||
// if ( m_studio != 0 ) // current edition?
|
||||
// {
|
||||
// m_studio->EventProcess(event);
|
||||
// }
|
||||
|
||||
UpdateInterface(event.rTime);
|
||||
|
||||
|
@ -891,8 +896,9 @@ void CBrain::StartEditScript(int rank, char* name)
|
|||
m_script[rank] = new CScript(m_iMan, m_object, &m_secondaryTask);
|
||||
}
|
||||
|
||||
m_studio = new CStudio(m_iMan);
|
||||
m_studio->StartEditScript(m_script[rank], name, rank);
|
||||
// TODO uncoment when ui/studio will be implemented.
|
||||
// m_studio = new CStudio(m_iMan);
|
||||
// m_studio->StartEditScript(m_script[rank], name, rank);
|
||||
}
|
||||
|
||||
// End of editing a program.
|
||||
|
@ -901,10 +907,11 @@ void CBrain::StopEditScript(bool bCancel)
|
|||
{
|
||||
if ( !bCancel ) SetActiveVirus(false);
|
||||
|
||||
if ( !m_studio->StopEditScript(bCancel) ) return;
|
||||
// TODO uncoment when ui/studio will be implemented.
|
||||
// if ( !m_studio->StopEditScript(bCancel) ) return;
|
||||
|
||||
delete m_studio;
|
||||
m_studio = 0;
|
||||
// delete m_studio;
|
||||
// m_studio = 0;
|
||||
|
||||
CreateInterface(true); // puts the control buttons
|
||||
}
|
||||
|
@ -1209,7 +1216,7 @@ void CBrain::GroundFlat()
|
|||
speed = Math::Vector(0.0f, 0.0f, 0.0f);
|
||||
dim.x = 40.0f;
|
||||
dim.y = dim.x;
|
||||
m_particule->CreateParticule(pos, speed, dim, PARTIGFLAT, 1.0f);
|
||||
m_particle->CreateParticle(pos, speed, dim, PARTIGFLAT, 1.0f);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1227,17 +1234,17 @@ void CBrain::ColorFlag(int color)
|
|||
bool CBrain::CreateInterface(bool bSelect)
|
||||
{
|
||||
ObjectType type;
|
||||
CWindow* pw;
|
||||
Ui::CWindow* pw;
|
||||
CButton* pb;
|
||||
CColor* pc;
|
||||
CSlider* ps;
|
||||
Ui::CSlider* ps;
|
||||
CTarget* pt;
|
||||
CLabel* pl;
|
||||
Math::Point pos, dim, ddim;
|
||||
float ox, oy, sx, sy;
|
||||
char name[100];
|
||||
|
||||
pw = (CWindow*)m_interface->SearchControl(EVENT_WINDOW0);
|
||||
pw = (Ui::CWindow*)m_interface->SearchControl(EVENT_WINDOW0);
|
||||
if ( pw != 0 )
|
||||
{
|
||||
pw->Flush(); // destroys the window buttons
|
||||
|
@ -1253,7 +1260,7 @@ bool CBrain::CreateInterface(bool bSelect)
|
|||
if ( !m_main->RetShowMap() ) dim.x = 640.0f/640.0f;
|
||||
dim.y = 86.0f/480.0f;
|
||||
m_interface->CreateWindows(pos, dim, 3, EVENT_WINDOW0);
|
||||
pw = (CWindow*)m_interface->SearchControl(EVENT_WINDOW0);
|
||||
pw = (Ui::CWindow*)m_interface->SearchControl(EVENT_WINDOW0);
|
||||
if ( pw == 0 ) return false;
|
||||
|
||||
m_object->GetTooltipName(name);
|
||||
|
@ -1926,7 +1933,7 @@ bool CBrain::CreateInterface(bool bSelect)
|
|||
|
||||
void CBrain::UpdateInterface(float rTime)
|
||||
{
|
||||
CWindow* pw;
|
||||
Ui::CWindow* pw;
|
||||
#if _TEEN
|
||||
CButton* pb;
|
||||
#endif
|
||||
|
@ -1956,7 +1963,7 @@ void CBrain::UpdateInterface(float rTime)
|
|||
return;
|
||||
}
|
||||
|
||||
pw = (CWindow*)m_interface->SearchControl(EVENT_WINDOW0);
|
||||
pw = (Ui::CWindow*)m_interface->SearchControl(EVENT_WINDOW0);
|
||||
if ( pw == 0 ) return;
|
||||
|
||||
pg = (CGauge*)pw->SearchControl(EVENT_OBJECT_GENERGY);
|
||||
|
@ -2130,9 +2137,9 @@ void CBrain::UpdateInterface(float rTime)
|
|||
void CBrain::UpdateInterface()
|
||||
{
|
||||
ObjectType type;
|
||||
CWindow* pw;
|
||||
Ui::CWindow* pw;
|
||||
CButton* pb;
|
||||
CSlider* ps;
|
||||
Ui::CSlider* ps;
|
||||
#if _TEEN
|
||||
CColor* pc;
|
||||
int color;
|
||||
|
@ -2142,7 +2149,7 @@ void CBrain::UpdateInterface()
|
|||
|
||||
if ( !m_object->RetSelect() ) return;
|
||||
|
||||
pw = (CWindow*)m_interface->SearchControl(EVENT_WINDOW0);
|
||||
pw = (Ui::CWindow*)m_interface->SearchControl(EVENT_WINDOW0);
|
||||
if ( pw == 0 ) return;
|
||||
|
||||
type = m_object->RetType();
|
||||
|
@ -2235,7 +2242,7 @@ void CBrain::UpdateInterface()
|
|||
DefaultEnter (pw, EVENT_OBJECT_ENDSHIELD, false);
|
||||
}
|
||||
|
||||
ps = (CSlider*)pw->SearchControl(EVENT_OBJECT_DIMSHIELD);
|
||||
ps = (Ui::CSlider*)pw->SearchControl(EVENT_OBJECT_DIMSHIELD);
|
||||
if ( ps != 0 )
|
||||
{
|
||||
ps->SetVisibleValue((RADIUS_SHIELD_MIN/g_unit)+m_object->RetParam()*((RADIUS_SHIELD_MAX-RADIUS_SHIELD_MIN)/g_unit));
|
||||
|
@ -2438,7 +2445,7 @@ void CBrain::UpdateInterface()
|
|||
|
||||
// Updates the list of programs.
|
||||
|
||||
void CBrain::UpdateScript(CWindow *pw)
|
||||
void CBrain::UpdateScript(Ui::CWindow *pw)
|
||||
{
|
||||
CList* pl;
|
||||
char name[100];
|
||||
|
@ -2488,10 +2495,10 @@ void CBrain::UpdateScript(CWindow *pw)
|
|||
|
||||
int CBrain::RetSelScript()
|
||||
{
|
||||
CWindow* pw;
|
||||
Ui::CWindow* pw;
|
||||
CList* pl;
|
||||
|
||||
pw = (CWindow*)m_interface->SearchControl(EVENT_WINDOW0);
|
||||
pw = (Ui::CWindow*)m_interface->SearchControl(EVENT_WINDOW0);
|
||||
if ( pw == 0 ) return -1;
|
||||
|
||||
pl = (CList*)pw->SearchControl(EVENT_OBJECT_PROGLIST);
|
||||
|
@ -2504,12 +2511,12 @@ int CBrain::RetSelScript()
|
|||
|
||||
void CBrain::BlinkScript(bool bEnable)
|
||||
{
|
||||
CWindow* pw;
|
||||
Ui::CWindow* pw;
|
||||
CList* pl;
|
||||
|
||||
if ( !m_object->RetSelect() ) return; // robot not selected?
|
||||
|
||||
pw = (CWindow*)m_interface->SearchControl(EVENT_WINDOW0);
|
||||
pw = (Ui::CWindow*)m_interface->SearchControl(EVENT_WINDOW0);
|
||||
if ( pw == 0 ) return;
|
||||
|
||||
pl = (CList*)pw->SearchControl(EVENT_OBJECT_PROGLIST);
|
||||
|
@ -2520,9 +2527,9 @@ void CBrain::BlinkScript(bool bEnable)
|
|||
|
||||
// Check the status of a button interface.
|
||||
|
||||
void CBrain::CheckInterface(CWindow *pw, EventMsg event, bool bState)
|
||||
void CBrain::CheckInterface(Ui::CWindow *pw, EventMsg event, bool bState)
|
||||
{
|
||||
CControl* control;
|
||||
Ui::CControl* control;
|
||||
|
||||
control = pw->SearchControl(event);
|
||||
if ( control == 0 ) return;
|
||||
|
@ -2532,9 +2539,9 @@ void CBrain::CheckInterface(CWindow *pw, EventMsg event, bool bState)
|
|||
|
||||
// Changes the state of a button interface.
|
||||
|
||||
void CBrain::EnableInterface(CWindow *pw, EventMsg event, bool bState)
|
||||
void CBrain::EnableInterface(Ui::CWindow *pw, EventMsg event, bool bState)
|
||||
{
|
||||
CControl* control;
|
||||
Ui::CControl* control;
|
||||
|
||||
control = pw->SearchControl(event);
|
||||
if ( control == 0 ) return;
|
||||
|
@ -2544,9 +2551,9 @@ void CBrain::EnableInterface(CWindow *pw, EventMsg event, bool bState)
|
|||
|
||||
// Changes the state of a button on the interface.
|
||||
|
||||
void CBrain::DeadInterface(CWindow *pw, EventMsg event, bool bState)
|
||||
void CBrain::DeadInterface(Ui::CWindow *pw, EventMsg event, bool bState)
|
||||
{
|
||||
CControl* control;
|
||||
Ui::CControl* control;
|
||||
|
||||
control = pw->SearchControl(event);
|
||||
if ( control == 0 ) return;
|
||||
|
@ -2556,9 +2563,9 @@ void CBrain::DeadInterface(CWindow *pw, EventMsg event, bool bState)
|
|||
|
||||
// Change the default input state of a button interface.
|
||||
|
||||
void CBrain::DefaultEnter(CWindow *pw, EventMsg event, bool bState)
|
||||
void CBrain::DefaultEnter(Ui::CWindow *pw, EventMsg event, bool bState)
|
||||
{
|
||||
CControl* control;
|
||||
Ui::CControl* control;
|
||||
|
||||
control = pw->SearchControl(event);
|
||||
if ( control == 0 ) return;
|
||||
|
@ -2708,7 +2715,7 @@ bool CBrain::ReadSoluce(char* filename)
|
|||
|
||||
// Load a script with a text file.
|
||||
|
||||
bool CBrain::ReadProgram(int rank, char* filename)
|
||||
bool CBrain::ReadProgram(int rank, const char* filename)
|
||||
{
|
||||
if ( m_script[rank] == 0 )
|
||||
{
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
#pragma once
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
// #include <stdio.h>
|
||||
|
||||
#include "common/misc.h"
|
||||
#include "common/event.h"
|
||||
|
@ -30,10 +30,6 @@
|
|||
|
||||
|
||||
class CInstanceManager;
|
||||
class CD3DEngine;
|
||||
class CTerrain;
|
||||
class CWater;
|
||||
class CCamera;
|
||||
class CObject;
|
||||
class CPhysics;
|
||||
class CMotion;
|
||||
|
@ -44,8 +40,18 @@ class CDisplayText;
|
|||
class CScript;
|
||||
class CRobotMain;
|
||||
class CStudio;
|
||||
class CSound;
|
||||
class CParticule;
|
||||
class CSoundInterface;
|
||||
class CParticle;
|
||||
|
||||
namespace Gfx
|
||||
{
|
||||
|
||||
class CEngine;
|
||||
class CTerrain;
|
||||
class CWater;
|
||||
class CCamera;
|
||||
|
||||
} /* Gfx */
|
||||
|
||||
|
||||
const int BRAINMAXSCRIPT = 10;
|
||||
|
@ -88,29 +94,29 @@ public:
|
|||
|
||||
bool IsBusy();
|
||||
void SetActivity(bool bMode);
|
||||
bool RetActivity();
|
||||
bool GetActivity();
|
||||
bool IsProgram();
|
||||
bool ProgramExist(int rank);
|
||||
void RunProgram(int rank);
|
||||
int FreeProgram();
|
||||
int RetProgram();
|
||||
int GetProgram();
|
||||
void StopProgram();
|
||||
void StopTask();
|
||||
|
||||
bool IntroduceVirus();
|
||||
void SetActiveVirus(bool bActive);
|
||||
bool RetActiveVirus();
|
||||
bool GetActiveVirus();
|
||||
|
||||
void SetScriptRun(int rank);
|
||||
int RetScriptRun();
|
||||
int GetScriptRun();
|
||||
void SetScriptName(int rank, char *name);
|
||||
char* RetScriptName(int rank);
|
||||
char* GetScriptName(int rank);
|
||||
void SetSoluceName(char *name);
|
||||
char* RetSoluceName();
|
||||
char* GetSoluceName();
|
||||
|
||||
bool ReadSoluce(char* filename);
|
||||
bool ReadProgram(int rank, char* filename);
|
||||
bool RetCompile(int rank);
|
||||
bool ReadProgram(int rank, const char* filename);
|
||||
bool GetCompile(int rank);
|
||||
bool WriteProgram(int rank, char* filename);
|
||||
bool ReadStack(FILE *file);
|
||||
bool WriteStack(FILE *file);
|
||||
|
@ -144,13 +150,13 @@ protected:
|
|||
void ColorFlag(int color);
|
||||
|
||||
void UpdateScript(CWindow *pw);
|
||||
int RetSelScript();
|
||||
int GetSelScript();
|
||||
void BlinkScript(bool bEnable);
|
||||
|
||||
void CheckInterface(CWindow *pw, EventMsg event, bool bState);
|
||||
void EnableInterface(CWindow *pw, EventMsg event, bool bState);
|
||||
void DeadInterface(CWindow *pw, EventMsg event, bool bState);
|
||||
void DefaultEnter(CWindow *pw, EventMsg event, bool bState=true);
|
||||
void CheckInterface(CWindow *pw, EventType event, bool bState);
|
||||
void EnableInterface(CWindow *pw, EventType event, bool bState);
|
||||
void DeadInterface(CWindow *pw, EventType event, bool bState);
|
||||
void DefaultEnter(CWindow *pw, EventType event, bool bState=true);
|
||||
|
||||
void TraceRecordStart();
|
||||
void TraceRecordFrame();
|
||||
|
@ -159,60 +165,60 @@ protected:
|
|||
bool TraceRecordPut(char *buffer, int max, TraceOper oper, float param);
|
||||
|
||||
protected:
|
||||
CInstanceManager* m_iMan;
|
||||
CD3DEngine* m_engine;
|
||||
CTerrain* m_terrain;
|
||||
CWater* m_water;
|
||||
CCamera* m_camera;
|
||||
CObject* m_object;
|
||||
CPhysics* m_physics;
|
||||
CMotion* m_motion;
|
||||
CInterface* m_interface;
|
||||
CDisplayText* m_displayText;
|
||||
CRobotMain* m_main;
|
||||
CStudio* m_studio;
|
||||
CSound* m_sound;
|
||||
CParticule* m_particule;
|
||||
CTaskManager* m_primaryTask;
|
||||
CTaskManager* m_secondaryTask;
|
||||
CInstanceManager* m_iMan;
|
||||
Gfx::CEngine* m_engine;
|
||||
Gfx::CTerrain* m_terrain;
|
||||
Gfx::CWater* m_water;
|
||||
Gfx::CCamera* m_camera;
|
||||
CObject* m_object;
|
||||
CPhysics* m_physics;
|
||||
CMotion* m_motion;
|
||||
CInterface* m_interface;
|
||||
CDisplayText* m_displayText;
|
||||
CRobotMain* m_main;
|
||||
CStudio* m_studio;
|
||||
CSoundInterface* m_sound;
|
||||
CParticle* m_particle;
|
||||
CTaskManager* m_primaryTask;
|
||||
CTaskManager* m_secondaryTask;
|
||||
|
||||
CScript* m_script[BRAINMAXSCRIPT];
|
||||
int m_selScript; // rank of the selected script
|
||||
int m_program; // rank of the executed program / -1
|
||||
bool m_bActivity;
|
||||
bool m_bBurn;
|
||||
bool m_bActiveVirus;
|
||||
CScript* m_script[BRAINMAXSCRIPT];
|
||||
int m_selScript; // rank of the selected script
|
||||
int m_program; // rank of the executed program / -1
|
||||
bool m_bActivity;
|
||||
bool m_bBurn;
|
||||
bool m_bActiveVirus;
|
||||
|
||||
int m_scriptRun;
|
||||
char m_scriptName[BRAINMAXSCRIPT][50];
|
||||
char m_soluceName[50];
|
||||
int m_scriptRun;
|
||||
char m_scriptName[BRAINMAXSCRIPT][50];
|
||||
char m_soluceName[50];
|
||||
|
||||
EventMsg m_buttonAxe;
|
||||
EventMsg m_manipStyle;
|
||||
EventMsg m_defaultEnter;
|
||||
EventMsg m_interfaceEvent[100];
|
||||
EventType m_buttonAxe;
|
||||
EventType m_manipStyle;
|
||||
EventType m_defaultEnter;
|
||||
EventType m_interfaceEvent[100];
|
||||
|
||||
CObject* m_antTarget;
|
||||
CObject* m_beeBullet;
|
||||
float m_beeBulletSpeed;
|
||||
Math::Vector m_startPos;
|
||||
float m_time;
|
||||
float m_burnTime;
|
||||
float m_lastUpdateTime;
|
||||
float m_lastHumanTime;
|
||||
float m_lastSpiderTime;
|
||||
float m_lastWormTime;
|
||||
float m_lastBulletTime;
|
||||
float m_lastAlarmTime;
|
||||
int m_soundChannelAlarm;
|
||||
int m_flagColor;
|
||||
CObject* m_antTarget;
|
||||
CObject* m_beeBullet;
|
||||
float m_beeBulletSpeed;
|
||||
Math::Vector m_startPos;
|
||||
float m_time;
|
||||
float m_burnTime;
|
||||
float m_lastUpdateTime;
|
||||
float m_lastHumanTime;
|
||||
float m_lastSpiderTime;
|
||||
float m_lastWormTime;
|
||||
float m_lastBulletTime;
|
||||
float m_lastAlarmTime;
|
||||
int m_soundChannelAlarm;
|
||||
int m_flagColor;
|
||||
|
||||
bool m_bTraceRecord;
|
||||
TraceOper m_traceOper;
|
||||
Math::Vector m_tracePos;
|
||||
float m_traceAngle;
|
||||
int m_traceColor;
|
||||
int m_traceRecordIndex;
|
||||
TraceRecord* m_traceRecordBuffer;
|
||||
bool m_bTraceRecord;
|
||||
TraceOper m_traceOper;
|
||||
Math::Vector m_tracePos;
|
||||
float m_traceAngle;
|
||||
int m_traceColor;
|
||||
int m_traceRecordIndex;
|
||||
TraceRecord* m_traceRecordBuffer;
|
||||
};
|
||||
|
||||
|
|
|
@ -25,13 +25,15 @@
|
|||
|
||||
class CInstanceManager;
|
||||
class CEvent;
|
||||
class CD3DEngine;
|
||||
class CInterface;
|
||||
class CRobotMain;
|
||||
class CCamera;
|
||||
class CSound;
|
||||
|
||||
class CSoundInterface;
|
||||
|
||||
namespace Gfx
|
||||
{
|
||||
class CEngine;
|
||||
} /* Gfx */
|
||||
|
||||
|
||||
enum MainMovieType
|
||||
|
@ -61,17 +63,17 @@ protected:
|
|||
|
||||
protected:
|
||||
CInstanceManager* m_iMan;
|
||||
CEvent* m_event;
|
||||
CD3DEngine* m_engine;
|
||||
CInterface* m_interface;
|
||||
CRobotMain* m_main;
|
||||
CCamera* m_camera;
|
||||
CSound* m_sound;
|
||||
CEvent* m_event;
|
||||
Gfx::CEngine* m_engine;
|
||||
CInterface* m_interface;
|
||||
CRobotMain* m_main;
|
||||
CCamera* m_camera;
|
||||
CSoundInterface* m_sound;
|
||||
|
||||
MainMovieType m_type;
|
||||
MainMovieType m_stopType;
|
||||
float m_speed;
|
||||
float m_progress;
|
||||
MainMovieType m_type;
|
||||
MainMovieType m_stopType;
|
||||
float m_speed;
|
||||
float m_progress;
|
||||
Math::Vector m_initialEye;
|
||||
Math::Vector m_initialLookat;
|
||||
Math::Vector m_finalEye[2];
|
||||
|
|
|
@ -95,16 +95,16 @@ bool CMotion::EventProcess(const Event &event)
|
|||
Math::Vector pos, dir;
|
||||
float time;
|
||||
|
||||
if ( m_object->RetType() != OBJECT_TOTO &&
|
||||
m_engine->RetPause() ) return true;
|
||||
if ( m_object->GetType() != OBJECT_TOTO &&
|
||||
m_engine->GetPause() ) return true;
|
||||
|
||||
if ( event.event != EVENT_FRAME ) return true;
|
||||
|
||||
m_progress += event.rTime*m_actionTime;
|
||||
if ( m_progress > 1.0f ) m_progress = 1.0f; // (*)
|
||||
|
||||
pos = m_object->RetPosition(0);
|
||||
if ( pos.y < m_water->RetLevel(m_object) ) // underwater?
|
||||
pos = m_object->GetPosition(0);
|
||||
if ( pos.y < m_water->GetLevel(m_object) ) // underwater?
|
||||
{
|
||||
time = event.rTime*3.0f; // everything is slower
|
||||
}
|
||||
|
@ -113,19 +113,19 @@ bool CMotion::EventProcess(const Event &event)
|
|||
time = event.rTime*10.0f;
|
||||
}
|
||||
|
||||
dir = m_object->RetLinVibration();
|
||||
dir = m_object->GetLinVibration();
|
||||
dir.x = Math::Smooth(dir.x, m_linVibration.x, time);
|
||||
dir.y = Math::Smooth(dir.y, m_linVibration.y, time);
|
||||
dir.z = Math::Smooth(dir.z, m_linVibration.z, time);
|
||||
m_object->SetLinVibration(dir);
|
||||
|
||||
dir = m_object->RetCirVibration();
|
||||
dir = m_object->GetCirVibration();
|
||||
dir.x = Math::Smooth(dir.x, m_cirVibration.x, time);
|
||||
dir.y = Math::Smooth(dir.y, m_cirVibration.y, time);
|
||||
dir.z = Math::Smooth(dir.z, m_cirVibration.z, time);
|
||||
m_object->SetCirVibration(dir);
|
||||
|
||||
dir = m_object->RetInclinaison();
|
||||
dir = m_object->GetInclinaison();
|
||||
dir.x = Math::Smooth(dir.x, m_inclinaison.x, time);
|
||||
dir.y = Math::Smooth(dir.y, m_inclinaison.y, time);
|
||||
dir.z = Math::Smooth(dir.z, m_inclinaison.z, time);
|
||||
|
@ -148,9 +148,9 @@ Error CMotion::SetAction(int action, float time)
|
|||
return ERR_OK;
|
||||
}
|
||||
|
||||
// Returns the current action.
|
||||
// Geturns the current action.
|
||||
|
||||
int CMotion::RetAction()
|
||||
int CMotion::GetAction()
|
||||
{
|
||||
return m_actionType;
|
||||
}
|
||||
|
@ -163,7 +163,7 @@ bool CMotion::SetParam(int rank, float value)
|
|||
return false;
|
||||
}
|
||||
|
||||
float CMotion::RetParam(int rank)
|
||||
float CMotion::GetParam(int rank)
|
||||
{
|
||||
return 0.0f;
|
||||
}
|
||||
|
@ -208,7 +208,7 @@ void CMotion::SetLinVibration(Math::Vector dir)
|
|||
m_linVibration = dir;
|
||||
}
|
||||
|
||||
Math::Vector CMotion::RetLinVibration()
|
||||
Math::Vector CMotion::GetLinVibration()
|
||||
{
|
||||
return m_linVibration;
|
||||
}
|
||||
|
@ -220,7 +220,7 @@ void CMotion::SetCirVibration(Math::Vector dir)
|
|||
m_cirVibration = dir;
|
||||
}
|
||||
|
||||
Math::Vector CMotion::RetCirVibration()
|
||||
Math::Vector CMotion::GetCirVibration()
|
||||
{
|
||||
return m_cirVibration;
|
||||
}
|
||||
|
@ -232,7 +232,7 @@ void CMotion::SetInclinaison(Math::Vector dir)
|
|||
m_inclinaison = dir;
|
||||
}
|
||||
|
||||
Math::Vector CMotion::RetInclinaison()
|
||||
Math::Vector CMotion::GetInclinaison()
|
||||
{
|
||||
return m_inclinaison;
|
||||
}
|
||||
|
|
|
@ -51,20 +51,20 @@ public:
|
|||
virtual bool Create(Math::Vector pos, float angle, ObjectType type, float power);
|
||||
virtual bool EventProcess(const Event &event);
|
||||
virtual Error SetAction(int action, float time=0.2f);
|
||||
virtual int RetAction();
|
||||
virtual int GetAction();
|
||||
|
||||
virtual bool SetParam(int rank, float value);
|
||||
virtual float RetParam(int rank);
|
||||
virtual float GetParam(int rank);
|
||||
|
||||
virtual bool Write(char *line);
|
||||
virtual bool Read(char *line);
|
||||
|
||||
virtual void SetLinVibration(Math::Vector dir);
|
||||
virtual Math::Vector RetLinVibration();
|
||||
virtual Math::Vector GetLinVibration();
|
||||
virtual void SetCirVibration(Math::Vector dir);
|
||||
virtual Math::Vector RetCirVibration();
|
||||
virtual Math::Vector GetCirVibration();
|
||||
virtual void SetInclinaison(Math::Vector dir);
|
||||
virtual Math::Vector RetInclinaison();
|
||||
virtual Math::Vector GetInclinaison();
|
||||
|
||||
protected:
|
||||
|
||||
|
|
|
@ -33,11 +33,11 @@ public:
|
|||
bool Create(Math::Vector pos, float angle, ObjectType type, float power);
|
||||
bool EventProcess(const Event &event);
|
||||
|
||||
bool RetTraceDown();
|
||||
bool GetTraceDown();
|
||||
void SetTraceDown(bool bDown);
|
||||
int RetTraceColor();
|
||||
int GetTraceColor();
|
||||
void SetTraceColor(int color);
|
||||
float RetTraceWidth();
|
||||
float GetTraceWidth();
|
||||
void SetTraceWidth(float width);
|
||||
|
||||
protected:
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -35,7 +35,10 @@ class CRobotMain;
|
|||
class CBotVar;
|
||||
class CScript;
|
||||
|
||||
|
||||
namespace Ui
|
||||
{
|
||||
class CDisplayText;
|
||||
}
|
||||
|
||||
|
||||
// The father of all parts must always be the part number zero!
|
||||
|
@ -46,69 +49,70 @@ const int OBJECTMAXDESELLIST = 10;
|
|||
const int OBJECTMAXINFO = 10;
|
||||
const int OBJECTMAXCMDLINE = 20;
|
||||
|
||||
|
||||
enum ObjectMaterial
|
||||
{
|
||||
OM_METAL = 0, // metal
|
||||
OM_PLASTIC = 1, // plastic
|
||||
OM_HUMAN = 2, // cosmonaut
|
||||
OM_ANIMAL = 3, // insect
|
||||
OM_VEGETAL = 4, // plant
|
||||
OM_MINERAL = 5, // stone
|
||||
OM_METAL = 0, // metal
|
||||
OM_PLASTIC = 1, // plastic
|
||||
OM_HUMAN = 2, // cosmonaut
|
||||
OM_ANIMAL = 3, // insect
|
||||
OM_VEGETAL = 4, // plant
|
||||
OM_MINERAL = 5, // stone
|
||||
};
|
||||
|
||||
struct ObjectPart
|
||||
{
|
||||
char bUsed;
|
||||
int object; // number of the object in CEngine
|
||||
int parentPart; // number of father part
|
||||
int masterParti; // master canal of the particle
|
||||
Math::Vector position;
|
||||
Math::Vector angle;
|
||||
Math::Vector zoom;
|
||||
char bTranslate;
|
||||
char bRotate;
|
||||
char bZoom;
|
||||
Math::Matrix matTranslate;
|
||||
Math::Matrix matRotate;
|
||||
Math::Matrix matTransform;
|
||||
Math::Matrix matWorld;
|
||||
char bUsed;
|
||||
int object; // number of the object in CEngine
|
||||
int parentPart; // number of father part
|
||||
int masterParti; // master canal of the particle
|
||||
Math::Vector position;
|
||||
Math::Vector angle;
|
||||
Math::Vector zoom;
|
||||
char bTranslate;
|
||||
char bRotate;
|
||||
char bZoom;
|
||||
Math::Matrix matTranslate;
|
||||
Math::Matrix matRotate;
|
||||
Math::Matrix matTransform;
|
||||
Math::Matrix matWorld;
|
||||
};
|
||||
|
||||
struct Character
|
||||
{
|
||||
float wheelFront; // position X of the front wheels
|
||||
float wheelBack; // position X of the back wheels
|
||||
float wheelLeft; // position Z of the left wheels
|
||||
float wheelRight; // position Z of the right wheels
|
||||
float height; // normal height on top of ground
|
||||
Math::Vector posPower; // position of the battery
|
||||
float wheelFront; // position X of the front wheels
|
||||
float wheelBack; // position X of the back wheels
|
||||
float wheelLeft; // position Z of the left wheels
|
||||
float wheelRight; // position Z of the right wheels
|
||||
float height; // normal height on top of ground
|
||||
Math::Vector posPower; // position of the battery
|
||||
};
|
||||
|
||||
struct Info
|
||||
{
|
||||
char name[20]; // name of the information
|
||||
float value; // value of the information
|
||||
char name[20]; // name of the information
|
||||
float value; // value of the information
|
||||
};
|
||||
|
||||
enum ExploType
|
||||
{
|
||||
EXPLO_BOUM = 1,
|
||||
EXPLO_BURN = 2,
|
||||
EXPLO_WATER = 3,
|
||||
EXPLO_BOUM = 1,
|
||||
EXPLO_BURN = 2,
|
||||
EXPLO_WATER = 3,
|
||||
};
|
||||
|
||||
enum ResetCap
|
||||
{
|
||||
RESET_NONE = 0,
|
||||
RESET_MOVE = 1,
|
||||
RESET_DELETE = 2,
|
||||
RESET_NONE = 0,
|
||||
RESET_MOVE = 1,
|
||||
RESET_DELETE = 2,
|
||||
};
|
||||
|
||||
enum RadarFilter
|
||||
{
|
||||
FILTER_NONE = 0,
|
||||
FILTER_ONLYLANDING = 1,
|
||||
FILTER_ONLYFLYING = 2,
|
||||
FILTER_NONE = 0,
|
||||
FILTER_ONLYLANDING = 1,
|
||||
FILTER_ONLYFLYING = 2,
|
||||
};
|
||||
|
||||
|
||||
|
@ -162,7 +166,7 @@ public:
|
|||
bool CreateRuin(Math::Vector pos, float angle, float height, ObjectType type);
|
||||
bool CreateApollo(Math::Vector pos, float angle, ObjectType type);
|
||||
|
||||
bool ReadProgram(int rank, char* filename);
|
||||
bool ReadProgram(int rank, const char* filename);
|
||||
bool WriteProgram(int rank, char* filename);
|
||||
bool RunProgram(int rank);
|
||||
|
||||
|
@ -235,8 +239,8 @@ public:
|
|||
void SetResetRun(int run);
|
||||
int GetResetRun();
|
||||
|
||||
void SetMasterParticule(int part, int parti);
|
||||
int GetMasterParticule(int part);
|
||||
void SetMasterParticle(int part, int parti);
|
||||
int GetMasterParticle(int part);
|
||||
|
||||
void SetPower(CObject* power);
|
||||
CObject* GetPower();
|
||||
|
@ -252,8 +256,8 @@ public:
|
|||
void SetInfo(int rank, Info info);
|
||||
Info GetInfo(int rank);
|
||||
int GetInfoTotal();
|
||||
void SetInfoGeturn(float value);
|
||||
float GetInfoGeturn();
|
||||
void SetInfoReturn(float value);
|
||||
float GetInfoReturn();
|
||||
void SetInfoUpdate(bool bUpdate);
|
||||
bool GetInfoUpdate();
|
||||
|
||||
|
@ -370,7 +374,7 @@ public:
|
|||
void StopShowLimit();
|
||||
|
||||
bool IsProgram();
|
||||
void CreateSelectParticule();
|
||||
void CreateSelectParticle();
|
||||
|
||||
void SetRunScript(CScript* script);
|
||||
CScript* GetRunScript();
|
||||
|
@ -414,25 +418,25 @@ protected:
|
|||
void UpdateEnergyMapping();
|
||||
bool UpdateTransformObject(int part, bool bForceUpdate);
|
||||
bool UpdateTransformObject();
|
||||
void UpdateSelectParticule();
|
||||
void UpdateSelectParticle();
|
||||
|
||||
protected:
|
||||
CInstanceManager* m_iMan;
|
||||
Gfx::CEngine* m_engine;
|
||||
Gfx::CLightManager* m_lightMan;
|
||||
Gfx::CTerrain* m_terrain;
|
||||
Gfx::CWater* m_water;
|
||||
Gfx::CCamera* m_camera;
|
||||
Gfx::CParticle* m_particle;
|
||||
CPhysics* m_physics;
|
||||
CBrain* m_brain;
|
||||
CMotion* m_motion;
|
||||
CAuto* m_auto;
|
||||
CDisplayText* m_displayText;
|
||||
CRobotMain* m_main;
|
||||
CSoundInterface* m_sound;
|
||||
CBotVar* m_botVar;
|
||||
CScript* m_runScript;
|
||||
CInstanceManager* m_iMan;
|
||||
Gfx::CEngine* m_engine;
|
||||
Gfx::CLightManager* m_lightMan;
|
||||
Gfx::CTerrain* m_terrain;
|
||||
Gfx::CWater* m_water;
|
||||
Gfx::CCamera* m_camera;
|
||||
Gfx::CParticle* m_particle;
|
||||
CPhysics* m_physics;
|
||||
CBrain* m_brain;
|
||||
CMotion* m_motion;
|
||||
CAuto* m_auto;
|
||||
Ui::CDisplayText* m_displayText;
|
||||
CRobotMain* m_main;
|
||||
CSoundInterface* m_sound;
|
||||
CBotVar* m_botVar;
|
||||
CScript* m_runScript;
|
||||
|
||||
ObjectType m_type; // OBJECT_*
|
||||
int m_id; // unique identifier
|
||||
|
@ -462,8 +466,8 @@ protected:
|
|||
float m_shotTime; // time since last shot
|
||||
bool m_bVirusMode; // virus activated/triggered
|
||||
float m_virusTime; // lifetime of the virus
|
||||
float m_lastVirusParticule;
|
||||
float m_lastParticule;
|
||||
float m_lastVirusParticle;
|
||||
float m_lastParticle;
|
||||
bool m_bHilite;
|
||||
bool m_bSelect; // object selected
|
||||
bool m_bSelectable; // selectable object
|
||||
|
@ -522,7 +526,7 @@ protected:
|
|||
|
||||
int m_infoTotal;
|
||||
Info m_info[OBJECTMAXINFO];
|
||||
float m_infoGeturn;
|
||||
float m_infoReturn;
|
||||
bool m_bInfoUpdate;
|
||||
|
||||
float m_cmdLine[OBJECTMAXCMDLINE];
|
||||
|
|
|
@ -615,7 +615,7 @@ CRobotMain::CRobotMain(CInstanceManager* iMan)
|
|||
m_event = (CEvent*)m_iMan->SearchInstance(CLASS_EVENT);
|
||||
m_engine = (CD3DEngine*)m_iMan->SearchInstance(CLASS_ENGINE);
|
||||
m_light = (CLight*)m_iMan->SearchInstance(CLASS_LIGHT);
|
||||
m_particule = (CParticule*)m_iMan->SearchInstance(CLASS_PARTICULE);
|
||||
m_particle = (CParticle*)m_iMan->SearchInstance(CLASS_PARTICULE);
|
||||
m_water = (CWater*)m_iMan->SearchInstance(CLASS_WATER);
|
||||
m_cloud = (CCloud*)m_iMan->SearchInstance(CLASS_CLOUD);
|
||||
m_blitz = (CBlitz*)m_iMan->SearchInstance(CLASS_BLITZ);
|
||||
|
@ -740,7 +740,7 @@ CRobotMain::CRobotMain(CInstanceManager* iMan)
|
|||
for ( i=0 ; i<OBJECT_MAX ; i++ )
|
||||
{
|
||||
type = (ObjectType)i;
|
||||
token = RetObjectName(type);
|
||||
token = GetObjectName(type);
|
||||
if ( token[0] != 0 )
|
||||
{
|
||||
CBotProgram::DefineNum(token, type);
|
||||
|
@ -913,7 +913,7 @@ void CRobotMain::ChangePhase(Phase phase)
|
|||
m_terrain->FlushBuildingLevel();
|
||||
m_terrain->FlushFlyingLimit();
|
||||
m_light->FlushLight();
|
||||
m_particule->FlushParticule();
|
||||
m_particle->FlushParticule();
|
||||
m_water->Flush();
|
||||
m_cloud->Flush();
|
||||
m_blitz->Flush();
|
||||
|
@ -1323,7 +1323,7 @@ bool CRobotMain::EventProcess(const Event &event)
|
|||
HiliteClear();
|
||||
if ( event.param == VK_F11 )
|
||||
{
|
||||
m_particule->WriteWheelTrace("Savegame\\t.bmp", 256, 256, Math::Vector(16.0f, 0.0f, -368.0f), Math::Vector(140.0f, 0.0f, -248.0f));
|
||||
m_particle->WriteWheelTrace("Savegame\\t.bmp", 256, 256, Math::Vector(16.0f, 0.0f, -368.0f), Math::Vector(140.0f, 0.0f, -248.0f));
|
||||
return false;
|
||||
}
|
||||
if ( m_bEditLock ) // current edition?
|
||||
|
@ -2374,7 +2374,7 @@ void CRobotMain::StartDisplayVisit(EventMsg event)
|
|||
m_visitTime = 0.0;
|
||||
m_visitParticule = 0.0f;
|
||||
|
||||
m_particule->DeleteParticule(PARTISHOW);
|
||||
m_particle->DeleteParticule(PARTISHOW);
|
||||
|
||||
m_camera->StartVisit(m_displayText->RetVisitGoal(event),
|
||||
m_displayText->RetVisitDist(event));
|
||||
|
@ -2412,7 +2412,7 @@ void CRobotMain::FrameVisit(float rTime)
|
|||
speed = Math::Vector(0.0f, 0.0f, 0.0f);
|
||||
dim.x = 30.0f;
|
||||
dim.y = dim.x;
|
||||
m_particule->CreateParticule(pos, speed, dim, PARTISHOW, 2.0f);
|
||||
m_particle->CreateParticle(pos, speed, dim, PARTISHOW, 2.0f);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2434,7 +2434,7 @@ void CRobotMain::StopDisplayVisit()
|
|||
}
|
||||
|
||||
// Removes particles "arrows".
|
||||
m_particule->DeleteParticule(PARTISHOW);
|
||||
m_particle->DeleteParticule(PARTISHOW);
|
||||
|
||||
m_camera->StopVisit();
|
||||
m_displayText->ClearVisit();
|
||||
|
@ -3517,7 +3517,7 @@ bool CRobotMain::EventFrame(const Event &event)
|
|||
|
||||
if ( m_engine->RetFog() )
|
||||
{
|
||||
m_camera->SetOverBaseColor(m_particule->RetFogColor(m_engine->RetEyePt()));
|
||||
m_camera->SetOverBaseColor(m_particle->RetFogColor(m_engine->RetEyePt()));
|
||||
}
|
||||
}
|
||||
if ( m_phase == PHASE_PERSO ||
|
||||
|
@ -3932,7 +3932,7 @@ void CRobotMain::ScenePerso()
|
|||
m_terrain->FlushBuildingLevel();
|
||||
m_terrain->FlushFlyingLimit();
|
||||
m_light->FlushLight();
|
||||
m_particule->FlushParticule();
|
||||
m_particle->FlushParticule();
|
||||
m_iMan->Flush(CLASS_OBJECT);
|
||||
m_iMan->Flush(CLASS_PHYSICS);
|
||||
m_iMan->Flush(CLASS_BRAIN);
|
||||
|
@ -4615,7 +4615,7 @@ void CRobotMain::CreateScene(bool bSoluce, bool bFixScene, bool bResetObject)
|
|||
pos.y += height;
|
||||
dim.x = ddim;
|
||||
dim.y = dim.x;
|
||||
m_particule->CreateParticule(pos, Math::Vector(0.0f, 0.0f, 0.0f), dim, type, delay, 0.0f, 0.0f);
|
||||
m_particle->CreateParticle(pos, Math::Vector(0.0f, 0.0f, 0.0f), dim, type, delay, 0.0f, 0.0f);
|
||||
}
|
||||
|
||||
if ( Cmd(line, "CreateLight") && !bResetObject )
|
||||
|
@ -5767,7 +5767,7 @@ void CRobotMain::FlushShowLimit(int i)
|
|||
{
|
||||
if ( m_showLimit[i].parti[j] == 0 ) continue;
|
||||
|
||||
m_particule->DeleteParticule(m_showLimit[i].parti[j]);
|
||||
m_particle->DeleteParticule(m_showLimit[i].parti[j]);
|
||||
m_showLimit[i].parti[j] = 0;
|
||||
}
|
||||
|
||||
|
@ -5811,7 +5811,7 @@ void CRobotMain::SetShowLimit(int i, ParticuleType parti, CObject *pObj,
|
|||
|
||||
for ( j=0 ; j<m_showLimit[i].total ; j++ )
|
||||
{
|
||||
m_showLimit[i].parti[j] = m_particule->CreateParticule(pos, Math::Vector(0.0f, 0.0f, 0.0f), dim, parti, duration);
|
||||
m_showLimit[i].parti[j] = m_particle->CreateParticle(pos, Math::Vector(0.0f, 0.0f, 0.0f), dim, parti, duration);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -5890,8 +5890,8 @@ void CRobotMain::FrameShowLimit(float rTime)
|
|||
m_terrain->MoveOnFloor(pos, true);
|
||||
if ( m_showLimit[i].radius <= 50.0f ) pos.y += 0.5f;
|
||||
else pos.y += 2.0f;
|
||||
m_particule->SetPosition(m_showLimit[i].parti[j], pos);
|
||||
//? m_particule->SetAngle(m_showLimit[i].parti[j], angle-Math::PI/2.0f);
|
||||
m_particle->SetPosition(m_showLimit[i].parti[j], pos);
|
||||
//? m_particle->SetAngle(m_showLimit[i].parti[j], angle-Math::PI/2.0f);
|
||||
|
||||
angle += (2.0f*Math::PI)/m_showLimit[i].total;
|
||||
}
|
||||
|
@ -6787,10 +6787,10 @@ void CRobotMain::ResetObject()
|
|||
}
|
||||
|
||||
// Removes all bullets in progress.
|
||||
m_particule->DeleteParticule(PARTIGUN1);
|
||||
m_particule->DeleteParticule(PARTIGUN2);
|
||||
m_particule->DeleteParticule(PARTIGUN3);
|
||||
m_particule->DeleteParticule(PARTIGUN4);
|
||||
m_particle->DeleteParticule(PARTIGUN1);
|
||||
m_particle->DeleteParticule(PARTIGUN2);
|
||||
m_particle->DeleteParticule(PARTIGUN3);
|
||||
m_particle->DeleteParticule(PARTIGUN4);
|
||||
|
||||
for ( i=0 ; i<1000000 ; i++ )
|
||||
{
|
||||
|
@ -6869,15 +6869,15 @@ void CRobotMain::ResetCreate()
|
|||
SaveAllScript();
|
||||
|
||||
// Removes all bullets in progress.
|
||||
m_particule->DeleteParticule(PARTIGUN1);
|
||||
m_particule->DeleteParticule(PARTIGUN2);
|
||||
m_particule->DeleteParticule(PARTIGUN3);
|
||||
m_particule->DeleteParticule(PARTIGUN4);
|
||||
m_particle->DeleteParticule(PARTIGUN1);
|
||||
m_particle->DeleteParticule(PARTIGUN2);
|
||||
m_particle->DeleteParticule(PARTIGUN3);
|
||||
m_particle->DeleteParticule(PARTIGUN4);
|
||||
|
||||
DeselectAll(); // removes the control buttons
|
||||
DeleteAllObjects(); // removes all the current 3D Scene
|
||||
|
||||
m_particule->FlushParticule();
|
||||
m_particle->FlushParticule();
|
||||
m_terrain->FlushBuildingLevel();
|
||||
m_iMan->Flush(CLASS_OBJECT);
|
||||
m_iMan->Flush(CLASS_PHYSICS);
|
||||
|
@ -7028,7 +7028,7 @@ Error CRobotMain::CheckEndMission(bool bFrame)
|
|||
|
||||
// Checks if the mission is finished after displaying a message.
|
||||
|
||||
void CRobotMain::CheckEndMessage(char *message)
|
||||
void CRobotMain::CheckEndMessage(const char *message)
|
||||
{
|
||||
int t;
|
||||
|
||||
|
@ -7062,7 +7062,7 @@ char* CRobotMain::RetObligatoryToken(int i)
|
|||
|
||||
// Checks if an instruction is part of the obligatory list.
|
||||
|
||||
int CRobotMain::IsObligatoryToken(char *token)
|
||||
int CRobotMain::IsObligatoryToken(const char *token)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
@ -7078,7 +7078,7 @@ int CRobotMain::IsObligatoryToken(char *token)
|
|||
|
||||
// Checks if an instruction is not part of the banned list.
|
||||
|
||||
bool CRobotMain::IsProhibitedToken(char *token)
|
||||
bool CRobotMain::IsProhibitedToken(const char *token)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
|
|
@ -22,12 +22,11 @@
|
|||
#include <stdio.h>
|
||||
|
||||
#include "common/misc.h"
|
||||
#include "old/d3dengine.h"
|
||||
#include "graphics/engine/engine.h"
|
||||
#include "object/object.h"
|
||||
#include "object/mainmovie.h"
|
||||
#include "old/camera.h"
|
||||
#include "old/particule.h"
|
||||
|
||||
#include "graphics/engine/camera.h"
|
||||
#include "graphics/engine/particle.h"
|
||||
|
||||
enum Phase
|
||||
{
|
||||
|
@ -86,7 +85,7 @@ class CWindow;
|
|||
class CControl;
|
||||
class CDisplayText;
|
||||
class CDisplayInfo;
|
||||
class CSound;
|
||||
class CSoundInterface;
|
||||
|
||||
|
||||
struct EndTake
|
||||
|
@ -154,25 +153,25 @@ public:
|
|||
void ScenePerso();
|
||||
|
||||
void SetMovieLock(bool bLock);
|
||||
bool RetMovieLock();
|
||||
bool RetInfoLock();
|
||||
bool GetMovieLock();
|
||||
bool GetInfoLock();
|
||||
void SetSatComLock(bool bLock);
|
||||
bool RetSatComLock();
|
||||
bool GetSatComLock();
|
||||
void SetEditLock(bool bLock, bool bEdit);
|
||||
bool RetEditLock();
|
||||
bool GetEditLock();
|
||||
void SetEditFull(bool bFull);
|
||||
bool RetEditFull();
|
||||
bool RetFreePhoto();
|
||||
bool GetEditFull();
|
||||
bool GetFreePhoto();
|
||||
void SetFriendAim(bool bFriend);
|
||||
bool RetFriendAim();
|
||||
bool GetFriendAim();
|
||||
|
||||
void SetTracePrecision(float factor);
|
||||
float RetTracePrecision();
|
||||
float GetTracePrecision();
|
||||
|
||||
void ChangePause(bool bPause);
|
||||
|
||||
void SetSpeed(float speed);
|
||||
float RetSpeed();
|
||||
float GetSpeed();
|
||||
|
||||
void UpdateShortcuts();
|
||||
void SelectHuman();
|
||||
|
@ -180,75 +179,75 @@ public:
|
|||
CObject* SearchToto();
|
||||
CObject* SearchNearest(Math::Vector pos, CObject* pExclu);
|
||||
bool SelectObject(CObject* pObj, bool bDisplayError=true);
|
||||
CObject* RetSelectObject();
|
||||
CObject* GetSelectObject();
|
||||
CObject* DeselectAll();
|
||||
bool DeleteObject();
|
||||
|
||||
void ResetObject();
|
||||
void ResetCreate();
|
||||
Error CheckEndMission(bool bFrame);
|
||||
void CheckEndMessage(char *message);
|
||||
int RetObligatoryToken();
|
||||
char* RetObligatoryToken(int i);
|
||||
int IsObligatoryToken(char *token);
|
||||
bool IsProhibitedToken(char *token);
|
||||
void CheckEndMessage(const char *message);
|
||||
int GetObligatoryToken();
|
||||
char* GetObligatoryToken(int i);
|
||||
int IsObligatoryToken(const char *token);
|
||||
bool IsProhibitedToken(const char *token);
|
||||
void UpdateMap();
|
||||
bool RetShowMap();
|
||||
bool GetShowMap();
|
||||
|
||||
MainMovieType RetMainMovie();
|
||||
MainMovieType GetMainMovie();
|
||||
|
||||
void FlushDisplayInfo();
|
||||
void StartDisplayInfo(int index, bool bMovie);
|
||||
void StartDisplayInfo(char *filename, int index);
|
||||
void StopDisplayInfo();
|
||||
char* RetDisplayInfoName(int index);
|
||||
int RetDisplayInfoPosition(int index);
|
||||
char* GetDisplayInfoName(int index);
|
||||
int GetDisplayInfoPosition(int index);
|
||||
void SetDisplayInfoPosition(int index, int pos);
|
||||
|
||||
void StartSuspend();
|
||||
void StopSuspend();
|
||||
|
||||
float RetGameTime();
|
||||
float GetGameTime();
|
||||
|
||||
void SetFontSize(float size);
|
||||
float RetFontSize();
|
||||
float GetFontSize();
|
||||
void SetWindowPos(Math::Point pos);
|
||||
Math::Point RetWindowPos();
|
||||
Math::Point GetWindowPos();
|
||||
void SetWindowDim(Math::Point dim);
|
||||
Math::Point RetWindowDim();
|
||||
Math::Point GetWindowDim();
|
||||
|
||||
void SetIOPublic(bool bMode);
|
||||
bool RetIOPublic();
|
||||
bool GetIOPublic();
|
||||
void SetIOPos(Math::Point pos);
|
||||
Math::Point RetIOPos();
|
||||
Math::Point GetIOPos();
|
||||
void SetIODim(Math::Point dim);
|
||||
Math::Point RetIODim();
|
||||
Math::Point GetIODim();
|
||||
|
||||
char* RetTitle();
|
||||
char* RetResume();
|
||||
char* RetScriptName();
|
||||
char* RetScriptFile();
|
||||
bool RetTrainerPilot();
|
||||
bool RetFixScene();
|
||||
bool RetGlint();
|
||||
bool RetSoluce4();
|
||||
bool RetMovies();
|
||||
bool RetNiceReset();
|
||||
bool RetHimselfDamage();
|
||||
bool RetShowSoluce();
|
||||
bool RetSceneSoluce();
|
||||
bool RetShowAll();
|
||||
bool RetCheatRadar();
|
||||
char* RetSavegameDir();
|
||||
char* RetPublicDir();
|
||||
char* RetFilesDir();
|
||||
char* GetTitle();
|
||||
char* GetResume();
|
||||
char* GetScriptName();
|
||||
char* GetScriptFile();
|
||||
bool GetTrainerPilot();
|
||||
bool GetFixScene();
|
||||
bool GetGlint();
|
||||
bool GetSoluce4();
|
||||
bool GetMovies();
|
||||
bool GetNiceReset();
|
||||
bool GetHimselfDamage();
|
||||
bool GetShowSoluce();
|
||||
bool GetSceneSoluce();
|
||||
bool GetShowAll();
|
||||
bool GetCheatRadar();
|
||||
char* GetSavegameDir();
|
||||
char* GetPublicDir();
|
||||
char* GetFilesDir();
|
||||
|
||||
void SetGamerName(char *name);
|
||||
char* RetGamerName();
|
||||
int RetGamerFace();
|
||||
int RetGamerGlasses();
|
||||
bool RetGamerOnlyHead();
|
||||
float RetPersoAngle();
|
||||
char* GetGamerName();
|
||||
int GetGamerFace();
|
||||
int GetGamerGlasses();
|
||||
bool GetGamerOnlyHead();
|
||||
float GetPersoAngle();
|
||||
|
||||
void StartMusic();
|
||||
void ClearInterface();
|
||||
|
@ -256,11 +255,11 @@ public:
|
|||
|
||||
float SearchNearestObject(Math::Vector center, CObject *exclu);
|
||||
bool FreeSpace(Math::Vector ¢er, float minRadius, float maxRadius, float space, CObject *exclu);
|
||||
float RetFlatZoneRadius(Math::Vector center, float maxRadius, CObject *exclu);
|
||||
float GetFlatZoneRadius(Math::Vector center, float maxRadius, CObject *exclu);
|
||||
void HideDropZone(CObject* metal);
|
||||
void ShowDropZone(CObject* metal, CObject* truck);
|
||||
void FlushShowLimit(int i);
|
||||
void SetShowLimit(int i, ParticuleType parti, CObject *pObj, Math::Vector pos, float radius, float duration=SHOWLIMITTIME);
|
||||
void SetShowLimit(int i, Gfx::ParticleType parti, CObject *pObj, Math::Vector pos, float radius, float duration=SHOWLIMITTIME);
|
||||
void AdjustShowLimit(int i, Math::Vector pos);
|
||||
void StartShowLimit();
|
||||
void FrameShowLimit(float rTime);
|
||||
|
@ -276,7 +275,7 @@ public:
|
|||
|
||||
bool FlushNewScriptName();
|
||||
bool AddNewScriptName(ObjectType type, char *name);
|
||||
char* RetNewScriptName(ObjectType type, int rank);
|
||||
char* GetNewScriptName(ObjectType type, int rank);
|
||||
|
||||
void WriteFreeParam();
|
||||
void ReadFreeParam();
|
||||
|
@ -287,7 +286,7 @@ public:
|
|||
void IOWriteObject(FILE *file, CObject* pObj, char *cmd);
|
||||
CObject* IOReadObject(char *line, char* filename, int objRank);
|
||||
|
||||
int CreateSpot(Math::Vector pos, D3DCOLORVALUE color);
|
||||
int CreateSpot(Math::Vector pos, Gfx::Color color);
|
||||
|
||||
protected:
|
||||
bool EventFrame(const Event &event);
|
||||
|
@ -300,7 +299,7 @@ protected:
|
|||
void CreateModel();
|
||||
Math::Vector LookatPoint( Math::Vector eye, float angleH, float angleV, float length );
|
||||
CObject* CreateObject(Math::Vector pos, float angle, float zoom, float height, ObjectType type, float power=1.0f, bool bTrainer=false, bool bToy=false, int option=0);
|
||||
int CreateLight(Math::Vector direction, D3DCOLORVALUE color);
|
||||
int CreateLight(Math::Vector direction, Gfx::Color color);
|
||||
void HiliteClear();
|
||||
void HiliteObject(Math::Point pos);
|
||||
void HiliteFrame(float rTime);
|
||||
|
@ -309,7 +308,7 @@ protected:
|
|||
CObject* DetectObject(Math::Point pos);
|
||||
void ChangeCamera();
|
||||
void RemoteCamera(float pan, float zoom, float rTime);
|
||||
void KeyCamera(EventMsg event, long param);
|
||||
void KeyCamera(EventType event, long param);
|
||||
void AbortMovie();
|
||||
bool IsSelectable(CObject* pObj);
|
||||
void SelectOneObject(CObject* pObj, bool bDisplayError=true);
|
||||
|
@ -318,8 +317,8 @@ protected:
|
|||
void DeleteAllObjects();
|
||||
void UpdateInfoText();
|
||||
CObject* SearchObject(ObjectType type);
|
||||
CObject* RetSelect();
|
||||
void StartDisplayVisit(EventMsg event);
|
||||
CObject* GetSelect();
|
||||
void StartDisplayVisit(EventType event);
|
||||
void FrameVisit(float rTime);
|
||||
void StopDisplayVisit();
|
||||
void ExecuteCmd(char *cmd);
|
||||
|
@ -333,7 +332,7 @@ protected:
|
|||
CMainMap* m_map;
|
||||
CEvent* m_event;
|
||||
CD3DEngine* m_engine;
|
||||
CParticule* m_particule;
|
||||
Gfx::CParticle* m_particle;
|
||||
CWater* m_water;
|
||||
CCloud* m_cloud;
|
||||
CBlitz* m_blitz;
|
||||
|
@ -359,7 +358,7 @@ protected:
|
|||
|
||||
Phase m_phase;
|
||||
int m_cameraRank;
|
||||
D3DCOLORVALUE m_color;
|
||||
Gfx::Color m_color;
|
||||
bool m_bFreePhoto;
|
||||
bool m_bCmdEdit;
|
||||
bool m_bShowPos;
|
||||
|
@ -420,7 +419,7 @@ protected:
|
|||
float m_cameraPan;
|
||||
float m_cameraZoom;
|
||||
|
||||
EventMsg m_visitLast;
|
||||
EventType m_visitLast;
|
||||
CObject* m_visitObject;
|
||||
CObject* m_visitArrow;
|
||||
float m_visitTime;
|
||||
|
@ -446,14 +445,14 @@ protected:
|
|||
|
||||
ShowLimit m_showLimit[MAXSHOWLIMIT];
|
||||
|
||||
D3DCOLORVALUE m_colorRefBot;
|
||||
D3DCOLORVALUE m_colorNewBot;
|
||||
D3DCOLORVALUE m_colorRefAlien;
|
||||
D3DCOLORVALUE m_colorNewAlien;
|
||||
D3DCOLORVALUE m_colorRefGreen;
|
||||
D3DCOLORVALUE m_colorNewGreen;
|
||||
D3DCOLORVALUE m_colorRefWater;
|
||||
D3DCOLORVALUE m_colorNewWater;
|
||||
Gfx::Color m_colorRefBot;
|
||||
Gfx::Color m_colorNewBot;
|
||||
Gfx::Color m_colorRefAlien;
|
||||
Gfx::Color m_colorNewAlien;
|
||||
Gfx::Color m_colorRefGreen;
|
||||
Gfx::Color m_colorNewGreen;
|
||||
Gfx::Color m_colorRefWater;
|
||||
Gfx::Color m_colorNewWater;
|
||||
float m_colorShiftWater;
|
||||
};
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
// task.cpp
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
// #include <stdio.h>
|
||||
|
||||
#include "object/task/task.h"
|
||||
|
||||
|
@ -32,20 +32,20 @@ CTask::CTask(CInstanceManager* iMan, CObject* object)
|
|||
{
|
||||
m_iMan = iMan;
|
||||
|
||||
m_engine = (CD3DEngine*)m_iMan->SearchInstance(CLASS_ENGINE);
|
||||
m_light = (CLight*)m_iMan->SearchInstance(CLASS_LIGHT);
|
||||
m_particule = (CParticule*)m_iMan->SearchInstance(CLASS_PARTICULE);
|
||||
m_terrain = (CTerrain*)m_iMan->SearchInstance(CLASS_TERRAIN);
|
||||
m_water = (CWater*)m_iMan->SearchInstance(CLASS_WATER);
|
||||
m_camera = (CCamera*)m_iMan->SearchInstance(CLASS_CAMERA);
|
||||
m_main = (CRobotMain*)m_iMan->SearchInstance(CLASS_MAIN);
|
||||
m_displayText = (CDisplayText*)m_iMan->SearchInstance(CLASS_DISPLAYTEXT);
|
||||
m_sound = (CSound*)m_iMan->SearchInstance(CLASS_SOUND);
|
||||
m_engine = static_cast<Gfx::CEngine*>(m_iMan->SearchInstance(CLASS_ENGINE));
|
||||
m_lightMan = static_cast<Gfx::CLightManager*>(m_iMan->SearchInstance(CLASS_LIGHT));
|
||||
m_terrain = static_cast<Gfx::CTerrain*>(m_iMan->SearchInstance(CLASS_TERRAIN));
|
||||
m_water = static_cast<Gfx::CWater*>(m_iMan->SearchInstance(CLASS_WATER));
|
||||
m_particle = static_cast<Gfx::CParticle*>(m_iMan->SearchInstance(CLASS_PARTICULE));
|
||||
m_camera = static_cast<Gfx::CCamera*>(m_iMan->SearchInstance(CLASS_CAMERA));
|
||||
m_displayText = static_cast<Ui::CDisplayText*>(m_iMan->SearchInstance(CLASS_DISPLAYTEXT));
|
||||
m_main = static_cast<CRobotMain*>(m_iMan->SearchInstance(CLASS_MAIN));
|
||||
m_sound = static_cast<CSoundInterface*>(m_iMan->SearchInstance(CLASS_SOUND));
|
||||
|
||||
m_object = object;
|
||||
m_physics = m_object->RetPhysics();
|
||||
m_brain = m_object->RetBrain();
|
||||
m_motion = m_object->RetMotion();
|
||||
m_physics = m_object->GetPhysics();
|
||||
m_brain = m_object->GetBrain();
|
||||
m_motion = m_object->GetMotion();
|
||||
}
|
||||
|
||||
// Object's destructor.
|
||||
|
|
|
@ -24,19 +24,25 @@
|
|||
|
||||
|
||||
class CInstanceManager;
|
||||
class CD3DEngine;
|
||||
class CLight;
|
||||
class CParticule;
|
||||
class CTerrain;
|
||||
class CWater;
|
||||
class CCamera;
|
||||
class CBrain;
|
||||
class CPhysics;
|
||||
class CMotion;
|
||||
class CObject;
|
||||
class CRobotMain;
|
||||
class CSoundInterface;
|
||||
|
||||
namespace Ui {
|
||||
class CDisplayText;
|
||||
class CSound;
|
||||
} /* Ui */
|
||||
|
||||
namespace Gfx {
|
||||
class CEngine;
|
||||
class CLightManager;
|
||||
class CParticle;
|
||||
class CTerrain;
|
||||
class CWater;
|
||||
class CCamera;
|
||||
} /* Gfx */
|
||||
|
||||
|
||||
const float TAKE_DIST = 6.0f; // distance to an object to pick it
|
||||
|
@ -66,21 +72,19 @@ public:
|
|||
virtual bool Abort();
|
||||
|
||||
protected:
|
||||
|
||||
protected:
|
||||
CInstanceManager* m_iMan;
|
||||
CD3DEngine* m_engine;
|
||||
CLight* m_light;
|
||||
CParticule* m_particule;
|
||||
CTerrain* m_terrain;
|
||||
CWater* m_water;
|
||||
CCamera* m_camera;
|
||||
CMotion* m_motion;
|
||||
CBrain* m_brain;
|
||||
CPhysics* m_physics;
|
||||
CObject* m_object;
|
||||
CRobotMain* m_main;
|
||||
CDisplayText* m_displayText;
|
||||
CSound* m_sound;
|
||||
CInstanceManager* m_iMan;
|
||||
Gfx::CEngine* m_engine;
|
||||
Gfx::CLightManager* m_lightMan;
|
||||
Gfx::CParticle* m_particle;
|
||||
Gfx::CTerrain* m_terrain;
|
||||
Gfx::CWater* m_water;
|
||||
Gfx::CCamera* m_camera;
|
||||
CMotion* m_motion;
|
||||
CBrain* m_brain;
|
||||
CPhysics* m_physics;
|
||||
CObject* m_object;
|
||||
CRobotMain* m_main;
|
||||
Ui::CDisplayText* m_displayText;
|
||||
CSoundInterface* m_sound;
|
||||
};
|
||||
|
||||
|
|
|
@ -136,7 +136,7 @@ Error CTaskManager::StartTaskSearch()
|
|||
|
||||
// Reads an information terminal.
|
||||
|
||||
Error CTaskManager::StartTaskInfo(char *name, float value, float power, bool bSend)
|
||||
Error CTaskManager::StartTaskInfo(const char *name, float value, float power, bool bSend)
|
||||
{
|
||||
m_task = new CTaskInfo(m_iMan, m_object);
|
||||
return ((CTaskInfo*)m_task)->Start(name, value, power, bSend);
|
||||
|
|
|
@ -43,7 +43,7 @@ public:
|
|||
Error StartTaskFlag(TaskFlagOrder order, int rank);
|
||||
Error StartTaskBuild(ObjectType type);
|
||||
Error StartTaskSearch();
|
||||
Error StartTaskInfo(char *name, float value, float power, bool bSend);
|
||||
Error StartTaskInfo(const char *name, float value, float power, bool bSend);
|
||||
Error StartTaskTerraform();
|
||||
Error StartTaskPen(bool bDown, int color);
|
||||
Error StartTaskRecover();
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,5 +1,6 @@
|
|||
// * This file is part of the COLOBOT source code
|
||||
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
|
||||
// * Copyright (C) 2012, Polish Portal of Colobot (PPC)
|
||||
// *
|
||||
// * This program is free software: you can redistribute it and/or modify
|
||||
// * it under the terms of the GNU General Public License as published by
|
||||
|
@ -14,10 +15,14 @@
|
|||
// * You should have received a copy of the GNU General Public License
|
||||
// * along with this program. If not, see http://www.gnu.org/licenses/.
|
||||
|
||||
// physics.h
|
||||
|
||||
#pragma once
|
||||
|
||||
/**
|
||||
* \file physics/physics.h
|
||||
* \brief Responsible for physics "and more" in game
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include "common/misc.h"
|
||||
#include "object/object.h"
|
||||
|
@ -25,17 +30,17 @@
|
|||
|
||||
|
||||
class CInstanceManager;
|
||||
class CCamera;
|
||||
class CObject;
|
||||
class CBrain;
|
||||
class CMotion;
|
||||
class CSound;
|
||||
class CSoundInterface;
|
||||
|
||||
namespace Gfx
|
||||
{
|
||||
class CCamera;
|
||||
class CEngine;
|
||||
class CLight;
|
||||
class CParticule;
|
||||
class CParticle;
|
||||
class CTerrain;
|
||||
class CWater;
|
||||
};
|
||||
|
@ -170,7 +175,7 @@ protected:
|
|||
void SoundMotorStop(float rTime, ObjectType type);
|
||||
void SoundReactorFull(float rTime, ObjectType type);
|
||||
void SoundReactorStop(float rTime, ObjectType type);
|
||||
void FrameParticule(float aTime, float rTime);
|
||||
void FrameParticle(float aTime, float rTime);
|
||||
void MotorUpdate(float aTime, float rTime);
|
||||
void EffectUpdate(float aTime, float rTime);
|
||||
void UpdateMotionStruct(float rTime, Motion &motion);
|
||||
|
@ -182,24 +187,24 @@ protected:
|
|||
bool ExploOther(ObjectType iType, CObject *pObj, ObjectType oType, float force);
|
||||
int ExploHimself(ObjectType iType, ObjectType oType, float force);
|
||||
|
||||
void PowerParticule(float factor, bool bBreak);
|
||||
void CrashParticule(float crash);
|
||||
void MotorParticule(float aTime, float rTime);
|
||||
void WaterParticule(float aTime, Math::Vector pos, ObjectType type, float floor, float advance, float turn);
|
||||
void WheelParticule(int color, float width);
|
||||
void PowerParticle(float factor, bool bBreak);
|
||||
void CrashParticle(float crash);
|
||||
void MotorParticle(float aTime, float rTime);
|
||||
void WaterParticle(float aTime, Math::Vector pos, ObjectType type, float floor, float advance, float turn);
|
||||
void WheelParticle(int color, float width);
|
||||
|
||||
protected:
|
||||
CInstanceManager* m_iMan;
|
||||
CInstanceManager* m_iMan;
|
||||
Gfx::CEngine* m_engine;
|
||||
Gfx::CLightManager* m_lightMan;
|
||||
Gfx::CParticle* m_particle;
|
||||
Gfx::CTerrain* m_terrain;
|
||||
Gfx::CWater* m_water;
|
||||
Gfx::CCamera* m_camera;
|
||||
CObject* m_object;
|
||||
CBrain* m_brain;
|
||||
CMotion* m_motion;
|
||||
CSound* m_sound;
|
||||
CObject* m_object;
|
||||
CBrain* m_brain;
|
||||
CMotion* m_motion;
|
||||
CSoundInterface* m_sound;
|
||||
|
||||
PhysicsType m_type; // TYPE_*
|
||||
float m_gravity; // force of gravity
|
||||
|
@ -217,15 +222,15 @@ protected:
|
|||
float m_linVibrationFactor;
|
||||
float m_cirVibrationFactor;
|
||||
float m_inclinaisonFactor;
|
||||
float m_lastPowerParticule;
|
||||
float m_lastSlideParticule;
|
||||
float m_lastMotorParticule;
|
||||
float m_lastWaterParticule;
|
||||
float m_lastUnderParticule;
|
||||
float m_lastPloufParticule;
|
||||
float m_lastFlameParticule;
|
||||
bool m_bWheelParticuleBrake;
|
||||
Math::Vector m_wheelParticulePos[2];
|
||||
float m_lastPowerParticle;
|
||||
float m_lastSlideParticle;
|
||||
float m_lastMotorParticle;
|
||||
float m_lastWaterParticle;
|
||||
float m_lastUnderParticle;
|
||||
float m_lastPloufParticle;
|
||||
float m_lastFlameParticle;
|
||||
bool m_bWheelParticleBrake;
|
||||
Math::Vector m_wheelParticlePos[2];
|
||||
float m_absorbWater;
|
||||
float m_reactorTemperature;
|
||||
float m_reactorRange;
|
||||
|
@ -234,7 +239,7 @@ protected:
|
|||
float m_lastEnergy;
|
||||
float m_lastSoundWater;
|
||||
float m_lastSoundInsect;
|
||||
float m_restBreakParticule;
|
||||
float m_restBreakParticle;
|
||||
float m_floorLevel; // ground level
|
||||
float m_floorHeight; // height above the ground
|
||||
int m_soundChannel;
|
||||
|
|
|
@ -15,25 +15,25 @@
|
|||
// * along with this program. If not, see http://www.gnu.org/licenses/.
|
||||
|
||||
|
||||
#include <windows.h>
|
||||
#include <stdio.h>
|
||||
#include <d3d.h>
|
||||
|
||||
#include "common/struct.h"
|
||||
#include "old/d3dengine.h"
|
||||
#include "old/d3dmath.h"
|
||||
#include "common/language.h"
|
||||
#include "common/global.h"
|
||||
#include "common/event.h"
|
||||
// #include <windows.h>
|
||||
// #include <stdio.h>
|
||||
// #include <d3d.h>
|
||||
//
|
||||
// #include "common/struct.h"
|
||||
// #include "old/d3dengine.h"
|
||||
// #include "old/d3dmath.h"
|
||||
// #include "common/language.h"
|
||||
// #include "common/global.h"
|
||||
// #include "common/event.h"
|
||||
#include "object/object.h"
|
||||
#include "script/cbottoken.h"
|
||||
// #include "script/cbottoken.h"
|
||||
|
||||
|
||||
|
||||
|
||||
// Seeking the name of an object.
|
||||
|
||||
char* RetObjectName(ObjectType type)
|
||||
const char* GetObjectName(ObjectType type)
|
||||
{
|
||||
if ( type == OBJECT_PORTICO ) return "Portico";
|
||||
if ( type == OBJECT_BASE ) return "SpaceShip";
|
||||
|
@ -126,7 +126,7 @@ char* RetObjectName(ObjectType type)
|
|||
// Seeking the name of a secondary object.
|
||||
// (because Otto thinks that Germans do not like nuclear power)
|
||||
|
||||
char* RetObjectAlias(ObjectType type)
|
||||
const char* GetObjectAlias(ObjectType type)
|
||||
{
|
||||
if ( type == OBJECT_NUCLEAR ) return "FuelCellPlant";
|
||||
if ( type == OBJECT_URANIUM ) return "PlatinumOre";
|
||||
|
@ -139,7 +139,7 @@ char* RetObjectAlias(ObjectType type)
|
|||
|
||||
// Returns the help file to use for the object.
|
||||
|
||||
char* RetHelpFilename(ObjectType type)
|
||||
const char* GetHelpFilename(ObjectType type)
|
||||
{
|
||||
if ( type == OBJECT_BASE ) return "help\\object\\base.txt";
|
||||
if ( type == OBJECT_DERRICK ) return "help\\object\\derrick.txt";
|
||||
|
@ -224,7 +224,7 @@ char* RetHelpFilename(ObjectType type)
|
|||
|
||||
// Returns the help file to use for instruction.
|
||||
|
||||
char* RetHelpFilename(const char *token)
|
||||
const char* GetHelpFilename(const char *token)
|
||||
{
|
||||
if ( strcmp(token, "if" ) == 0 ) return "help\\cbot\\if.txt";
|
||||
if ( strcmp(token, "else" ) == 0 ) return "help\\cbot\\if.txt";
|
||||
|
@ -436,7 +436,7 @@ bool IsFunction(const char *token)
|
|||
|
||||
// Returns using a compact instruction.
|
||||
|
||||
char* RetHelpText(const char *token)
|
||||
const char* GetHelpText(const char *token)
|
||||
{
|
||||
if ( strcmp(token, "if" ) == 0 ) return "if ( condition ) { bloc }";
|
||||
if ( strcmp(token, "else" ) == 0 ) return "else { bloc }";
|
||||
|
|
|
@ -25,12 +25,12 @@
|
|||
|
||||
// Procedures.
|
||||
|
||||
extern char* RetObjectName(ObjectType type);
|
||||
extern char* RetObjectAlias(ObjectType type);
|
||||
extern char* RetHelpFilename(ObjectType type);
|
||||
extern char* RetHelpFilename(const char *token);
|
||||
extern const char* GetObjectName(ObjectType type);
|
||||
extern const char* GetObjectAlias(ObjectType type);
|
||||
extern const char* GetHelpFilename(ObjectType type);
|
||||
extern const char* GetHelpFilename(const char *token);
|
||||
extern bool IsType(const char *token);
|
||||
extern bool IsFunction(const char *token);
|
||||
extern char* RetHelpText(const char *token);
|
||||
extern char* GetHelpText(const char *token);
|
||||
|
||||
|
||||
|
|
|
@ -15,20 +15,7 @@
|
|||
// * along with this program. If not, see http://www.gnu.org/licenses/.
|
||||
|
||||
|
||||
#include <windows.h>
|
||||
#include <stdio.h>
|
||||
#include <d3d.h>
|
||||
|
||||
#include "common/struct.h"
|
||||
#include "old/d3dengine.h"
|
||||
#include "old/d3dmath.h"
|
||||
#include "common/language.h"
|
||||
#include "common/global.h"
|
||||
#include "common/event.h"
|
||||
#include "old/water.h"
|
||||
#include "old/pyro.h"
|
||||
#include "old/camera.h"
|
||||
#include "object/object.h"
|
||||
#include "script/cmdtoken.h"
|
||||
|
||||
|
||||
|
@ -48,7 +35,7 @@ char* SkipSpace(char *line)
|
|||
|
||||
// Checks if a line contains a command.
|
||||
|
||||
bool Cmd(char *line, char *token)
|
||||
bool Cmd(char *line, const char *token)
|
||||
{
|
||||
char* p;
|
||||
|
||||
|
@ -59,7 +46,7 @@ bool Cmd(char *line, char *token)
|
|||
|
||||
// Seeking an operator.
|
||||
|
||||
char* SearchOp(char *line, char *op)
|
||||
char* SearchOp(char *line, const char *op)
|
||||
{
|
||||
char opeq[50];
|
||||
char* p;
|
||||
|
@ -418,7 +405,7 @@ ObjectType GetTypeObject(char *line, int rank, ObjectType def)
|
|||
|
||||
// Returns the name of an object type.
|
||||
|
||||
char* GetTypeObject(ObjectType type)
|
||||
const char* GetTypeObject(ObjectType type)
|
||||
{
|
||||
if ( type == OBJECT_PORTICO ) return "Portico";
|
||||
if ( type == OBJECT_BASE ) return "SpaceShip";
|
||||
|
@ -663,35 +650,35 @@ char* GetTypeObject(ObjectType type)
|
|||
|
||||
// Returns the type of water.
|
||||
|
||||
WaterType GetTypeWater(char *line, int rank, WaterType def)
|
||||
Gfx::WaterType GetTypeWater(char *line, int rank, Gfx::WaterType def)
|
||||
{
|
||||
char* p;
|
||||
|
||||
p = SearchArg(line, rank);
|
||||
if ( *p == 0 ) return def;
|
||||
|
||||
if ( Cmd(p, "NULL" ) ) return WATER_NULL;
|
||||
if ( Cmd(p, "TT" ) ) return WATER_TT;
|
||||
if ( Cmd(p, "TO" ) ) return WATER_TO;
|
||||
if ( Cmd(p, "CT" ) ) return WATER_CT;
|
||||
if ( Cmd(p, "CO" ) ) return WATER_CO;
|
||||
if ( Cmd(p, "NULL" ) ) return Gfx::WATER_NULL;
|
||||
if ( Cmd(p, "TT" ) ) return Gfx::WATER_TT;
|
||||
if ( Cmd(p, "TO" ) ) return Gfx::WATER_TO;
|
||||
if ( Cmd(p, "CT" ) ) return Gfx::WATER_CT;
|
||||
if ( Cmd(p, "CO" ) ) return Gfx::WATER_CO;
|
||||
|
||||
return def;
|
||||
}
|
||||
|
||||
// Returns the type of terrain.
|
||||
|
||||
D3DTypeObj GetTypeTerrain(char *line, int rank, D3DTypeObj def)
|
||||
Gfx::EngineObjectType GetTypeTerrain(char *line, int rank, Gfx::EngineObjectType def)
|
||||
{
|
||||
char* p;
|
||||
|
||||
p = SearchArg(line, rank);
|
||||
if ( *p == 0 ) return def;
|
||||
|
||||
if ( Cmd(p, "Terrain" ) ) return TYPETERRAIN;
|
||||
if ( Cmd(p, "Object" ) ) return TYPEFIX;
|
||||
if ( Cmd(p, "Quartz" ) ) return TYPEQUARTZ;
|
||||
if ( Cmd(p, "Metal" ) ) return TYPEMETAL;
|
||||
if ( Cmd(p, "Terrain" ) ) return Gfx::ENG_OBJTYPE_TERRAIN;
|
||||
if ( Cmd(p, "Object" ) ) return Gfx::ENG_OBJTYPE_FIX;
|
||||
if ( Cmd(p, "Quartz" ) ) return Gfx::ENG_OBJTYPE_QUARTZ;
|
||||
if ( Cmd(p, "Metal" ) ) return Gfx::ENG_OBJTYPE_METAL;
|
||||
|
||||
return def;
|
||||
}
|
||||
|
@ -753,64 +740,64 @@ int GetResearch(char *line, int rank)
|
|||
|
||||
// Returns the type of pyrotechnic effect.
|
||||
|
||||
PyroType GetPyro(char *line, int rank)
|
||||
Gfx::PyroType GetPyro(char *line, int rank)
|
||||
{
|
||||
char* p;
|
||||
|
||||
p = SearchArg(line, rank);
|
||||
if ( *p == 0 ) return PT_NULL;
|
||||
if ( *p == 0 ) return Gfx::PT_NULL;
|
||||
|
||||
if ( Cmd(p, "FRAGt" ) ) return PT_FRAGT;
|
||||
if ( Cmd(p, "FRAGo" ) ) return PT_FRAGO;
|
||||
if ( Cmd(p, "FRAGw" ) ) return PT_FRAGW;
|
||||
if ( Cmd(p, "EXPLOt" ) ) return PT_EXPLOT;
|
||||
if ( Cmd(p, "EXPLOo" ) ) return PT_EXPLOO;
|
||||
if ( Cmd(p, "EXPLOw" ) ) return PT_EXPLOW;
|
||||
if ( Cmd(p, "SHOTt" ) ) return PT_SHOTT;
|
||||
if ( Cmd(p, "SHOTh" ) ) return PT_SHOTH;
|
||||
if ( Cmd(p, "SHOTm" ) ) return PT_SHOTM;
|
||||
if ( Cmd(p, "SHOTw" ) ) return PT_SHOTW;
|
||||
if ( Cmd(p, "EGG" ) ) return PT_EGG;
|
||||
if ( Cmd(p, "BURNt" ) ) return PT_BURNT;
|
||||
if ( Cmd(p, "BURNo" ) ) return PT_BURNO;
|
||||
if ( Cmd(p, "SPIDER" ) ) return PT_SPIDER;
|
||||
if ( Cmd(p, "FALL" ) ) return PT_FALL;
|
||||
if ( Cmd(p, "RESET" ) ) return PT_RESET;
|
||||
if ( Cmd(p, "WIN" ) ) return PT_WIN;
|
||||
if ( Cmd(p, "LOST" ) ) return PT_LOST;
|
||||
if ( Cmd(p, "FRAGt" ) ) return Gfx::PT_FRAGT;
|
||||
if ( Cmd(p, "FRAGo" ) ) return Gfx::PT_FRAGO;
|
||||
if ( Cmd(p, "FRAGw" ) ) return Gfx::PT_FRAGW;
|
||||
if ( Cmd(p, "EXPLOt" ) ) return Gfx::PT_EXPLOT;
|
||||
if ( Cmd(p, "EXPLOo" ) ) return Gfx::PT_EXPLOO;
|
||||
if ( Cmd(p, "EXPLOw" ) ) return Gfx::PT_EXPLOW;
|
||||
if ( Cmd(p, "SHOTt" ) ) return Gfx::PT_SHOTT;
|
||||
if ( Cmd(p, "SHOTh" ) ) return Gfx::PT_SHOTH;
|
||||
if ( Cmd(p, "SHOTm" ) ) return Gfx::PT_SHOTM;
|
||||
if ( Cmd(p, "SHOTw" ) ) return Gfx::PT_SHOTW;
|
||||
if ( Cmd(p, "EGG" ) ) return Gfx::PT_EGG;
|
||||
if ( Cmd(p, "BURNt" ) ) return Gfx::PT_BURNT;
|
||||
if ( Cmd(p, "BURNo" ) ) return Gfx::PT_BURNO;
|
||||
if ( Cmd(p, "SPIDER" ) ) return Gfx::PT_SPIDER;
|
||||
if ( Cmd(p, "FALL" ) ) return Gfx::PT_FALL;
|
||||
if ( Cmd(p, "RESET" ) ) return Gfx::PT_RESET;
|
||||
if ( Cmd(p, "WIN" ) ) return Gfx::PT_WIN;
|
||||
if ( Cmd(p, "LOST" ) ) return Gfx::PT_LOST;
|
||||
|
||||
return PT_NULL;
|
||||
return Gfx::PT_NULL;
|
||||
}
|
||||
|
||||
// Returns the type of camera.
|
||||
|
||||
CameraType GetCamera(char *line, int rank)
|
||||
Gfx::CameraType GetCamera(char *line, int rank)
|
||||
{
|
||||
char* p;
|
||||
|
||||
p = SearchArg(line, rank);
|
||||
if ( *p == 0 ) return CAMERA_NULL;
|
||||
if ( *p == 0 ) return Gfx::CAM_TYPE_NULL;
|
||||
|
||||
if ( Cmd(p, "BACK" ) ) return CAMERA_BACK;
|
||||
if ( Cmd(p, "PLANE" ) ) return CAMERA_PLANE;
|
||||
if ( Cmd(p, "ONBOARD" ) ) return CAMERA_ONBOARD;
|
||||
if ( Cmd(p, "FIX" ) ) return CAMERA_FIX;
|
||||
if ( Cmd(p, "BACK" ) ) return Gfx::CAM_TYPE_BACK;
|
||||
if ( Cmd(p, "PLANE" ) ) return Gfx::CAM_TYPE_PLANE;
|
||||
if ( Cmd(p, "ONBOARD" ) ) return Gfx::CAM_TYPE_ONBOARD;
|
||||
if ( Cmd(p, "FIX" ) ) return Gfx::CAM_TYPE_FIX;
|
||||
|
||||
return CAMERA_NULL;
|
||||
return Gfx::CAM_TYPE_NULL;
|
||||
}
|
||||
|
||||
// Returns the name of a camera.
|
||||
|
||||
char* GetCamera(CameraType type)
|
||||
const char* GetCamera(Gfx::CameraType type)
|
||||
{
|
||||
if ( type == CAMERA_ONBOARD ) return "ONBOARD";
|
||||
if ( type == CAMERA_FIX ) return "FIX";
|
||||
if ( type == Gfx::CAM_TYPE_ONBOARD ) return "ONBOARD";
|
||||
if ( type == Gfx::CAM_TYPE_FIX ) return "FIX";
|
||||
return "BACK";
|
||||
}
|
||||
|
||||
// Returns an integer.
|
||||
|
||||
int OpInt(char *line, char *op, int def)
|
||||
int OpInt(char *line, const char *op, int def)
|
||||
{
|
||||
line = SearchOp(line, op);
|
||||
if ( *line == 0 ) return def;
|
||||
|
@ -819,7 +806,7 @@ int OpInt(char *line, char *op, int def)
|
|||
|
||||
// Returns a float number.
|
||||
|
||||
float OpFloat(char *line, char *op, float def)
|
||||
float OpFloat(char *line, const char *op, float def)
|
||||
{
|
||||
line = SearchOp(line, op);
|
||||
if ( *line == 0 ) return def;
|
||||
|
@ -852,7 +839,7 @@ ObjectType OpTypeObject(char *line, char *op, ObjectType def)
|
|||
|
||||
// Returns the type of a water.
|
||||
|
||||
WaterType OpTypeWater(char *line, char *op, WaterType def)
|
||||
Gfx::WaterType OpTypeWater(char *line, char *op, Gfx::WaterType def)
|
||||
{
|
||||
line = SearchOp(line, op);
|
||||
if ( *line == 0 ) return def;
|
||||
|
@ -861,7 +848,7 @@ WaterType OpTypeWater(char *line, char *op, WaterType def)
|
|||
|
||||
// Returns the type of a terrain.
|
||||
|
||||
D3DTypeObj OpTypeTerrain(char *line, char *op, D3DTypeObj def)
|
||||
Gfx::EngineObjectType OpTypeTerrain(char *line, char *op, Gfx::EngineObjectType def)
|
||||
{
|
||||
line = SearchOp(line, op);
|
||||
if ( *line == 0 ) return def;
|
||||
|
@ -879,19 +866,19 @@ int OpResearch(char *line, char *op)
|
|||
|
||||
// Returns the type of pyrotechnic effect.
|
||||
|
||||
PyroType OpPyro(char *line, char *op)
|
||||
Gfx::PyroType OpPyro(char *line, char *op)
|
||||
{
|
||||
line = SearchOp(line, op);
|
||||
if ( *line == 0 ) return PT_NULL;
|
||||
if ( *line == 0 ) return Gfx::PT_NULL;
|
||||
return GetPyro(line, 0);
|
||||
}
|
||||
|
||||
// Returns the type of camera.
|
||||
|
||||
CameraType OpCamera(char *line, char *op)
|
||||
Gfx::CameraType OpCamera(char *line, const char *op)
|
||||
{
|
||||
line = SearchOp(line, op);
|
||||
if ( *line == 0 ) return CAMERA_NULL;
|
||||
if ( *line == 0 ) return Gfx::CAM_TYPE_NULL;
|
||||
return GetCamera(line, 0);
|
||||
}
|
||||
|
||||
|
@ -924,7 +911,7 @@ Math::Vector OpPos(char *line, char *op)
|
|||
|
||||
// Returns a direction.
|
||||
|
||||
Math::Vector OpDir(char *line, char *op)
|
||||
Math::Vector OpDir(char *line, const char *op)
|
||||
{
|
||||
Math::Vector dir;
|
||||
|
||||
|
@ -940,28 +927,10 @@ Math::Vector OpDir(char *line, char *op)
|
|||
return dir;
|
||||
}
|
||||
|
||||
// Reads a color (0 .. 255).
|
||||
|
||||
D3DCOLOR OpColor(char *line, char *op, D3DCOLOR def)
|
||||
{
|
||||
D3DCOLOR color;
|
||||
|
||||
line = SearchOp(line, op);
|
||||
if ( *line == 0 ) return def;
|
||||
|
||||
color = 0;
|
||||
color |= (GetInt(line, 0, 0)&0xff)<<16; // r
|
||||
color |= (GetInt(line, 1, 0)&0xff)<<8; // g
|
||||
color |= (GetInt(line, 2, 0)&0xff)<<0; // b
|
||||
color |= (GetInt(line, 3, 0)&0xff)<<24; // a
|
||||
return color;
|
||||
}
|
||||
|
||||
// Reads a color (-1 .. 1).
|
||||
|
||||
D3DCOLORVALUE OpColorValue(char *line, char *op, D3DCOLORVALUE def)
|
||||
Gfx::Color OpColor(char *line, char *op, Gfx::Color def)
|
||||
{
|
||||
D3DCOLORVALUE color;
|
||||
Gfx::Color color;
|
||||
|
||||
line = SearchOp(line, op);
|
||||
if ( *line == 0 ) return def;
|
||||
|
|
|
@ -19,46 +19,44 @@
|
|||
#pragma once
|
||||
|
||||
|
||||
#include "old/d3denum.h"
|
||||
#include "old/d3dengine.h"
|
||||
#include "object/object.h"
|
||||
#include "old/water.h"
|
||||
#include "old/pyro.h"
|
||||
#include "old/camera.h"
|
||||
// #include "old/d3denum.h"
|
||||
// #include "old/d3dengine.h"
|
||||
// #include "object/object.h"
|
||||
#include "graphics/engine/water.h"
|
||||
#include "graphics/engine/engine.h"
|
||||
#include "graphics/engine/pyro.h"
|
||||
|
||||
|
||||
|
||||
// Procedures.
|
||||
|
||||
extern bool Cmd(char *line, char *token);
|
||||
extern char* SearchOp(char *line, char *op);
|
||||
extern bool Cmd(char *line, const char *token);
|
||||
extern char* SearchOp(char *line, const char *op);
|
||||
|
||||
extern int GetInt(char *line, int rank, int def);
|
||||
extern float GetFloat(char *line, int rank, float def);
|
||||
extern void GetString(char *line, int rank, char *buffer);
|
||||
extern ObjectType GetTypeObject(char *line, int rank, ObjectType def);
|
||||
extern char* GetTypeObject(ObjectType type);
|
||||
extern WaterType GetTypeWater(char *line, int rank, WaterType def);
|
||||
extern D3DTypeObj GetTypeTerrain(char *line, int rank, D3DTypeObj def);
|
||||
extern const char* GetTypeObject(ObjectType type);
|
||||
extern Gfx::WaterType GetTypeWater(char *line, int rank, Gfx::WaterType def);
|
||||
extern Gfx::EngineObjectType GetTypeTerrain(char *line, int rank, Gfx::EngineObjectType def);
|
||||
extern int GetBuild(char *line, int rank);
|
||||
extern int GetResearch(char *line, int rank);
|
||||
extern PyroType GetPyro(char *line, int rank);
|
||||
extern CameraType GetCamera(char *line, int rank);
|
||||
extern char* GetCamera(CameraType type);
|
||||
extern Gfx::PyroType GetPyro(char *line, int rank);
|
||||
extern Gfx::CameraType GetCamera(char *line, int rank);
|
||||
extern const char* GetCamera(Gfx::CameraType type);
|
||||
|
||||
extern int OpInt(char *line, char *op, int def);
|
||||
extern float OpFloat(char *line, char *op, float def);
|
||||
extern int OpInt(char *line, const char *op, int def);
|
||||
extern float OpFloat(char *line, const char *op, float def);
|
||||
extern void OpString(char *line, char *op, char *buffer);
|
||||
extern ObjectType OpTypeObject(char *line, char *op, ObjectType def);
|
||||
extern WaterType OpTypeWater(char *line, char *op, WaterType def);
|
||||
extern D3DTypeObj OpTypeTerrain(char *line, char *op, D3DTypeObj def);
|
||||
extern Gfx::WaterType OpTypeWater(char *line, char *op, Gfx::WaterType def);
|
||||
extern Gfx::EngineObjectType OpTypeTerrain(char *line, char *op, Gfx::EngineObjectType def);
|
||||
extern int OpResearch(char *line, char *op);
|
||||
extern PyroType OpPyro(char *line, char *op);
|
||||
extern CameraType OpCamera(char *line, char *op);
|
||||
extern Gfx::PyroType OpPyro(char *line, char *op);
|
||||
extern Gfx::CameraType OpCamera(char *line, const char *op);
|
||||
extern int OpBuild(char *line, char *op);
|
||||
extern Math::Vector OpPos(char *line, char *op);
|
||||
extern Math::Vector OpDir(char *line, char *op);
|
||||
extern D3DCOLOR OpColor(char *line, char *op, D3DCOLOR def);
|
||||
extern D3DCOLORVALUE OpColorValue(char *line, char *op, D3DCOLORVALUE def);
|
||||
|
||||
extern Math::Vector OpDir(char *line, const char *op);
|
||||
extern Gfx::Color OpColor(char *line, char *op, Gfx::Color def);
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -22,20 +22,26 @@
|
|||
#include <stdio.h>
|
||||
|
||||
#include "common/event.h"
|
||||
#include "CBot/CBotDll.h"
|
||||
|
||||
|
||||
class CInstanceManager;
|
||||
class CD3DEngine;
|
||||
class CInterface;
|
||||
class CDisplayText;
|
||||
class CEdit;
|
||||
class CList;
|
||||
class CObject;
|
||||
class CTaskManager;
|
||||
class CBotProgram;
|
||||
class CRobotMain;
|
||||
|
||||
namespace Ui{
|
||||
class CDisplayText;
|
||||
class CEdit;
|
||||
class CInterface;
|
||||
class CList;
|
||||
} /* Ui */
|
||||
|
||||
namespace Gfx {
|
||||
class CEngine;
|
||||
class CTerrain;
|
||||
class CWater;
|
||||
} /* Gfx */
|
||||
|
||||
|
||||
|
||||
|
@ -47,9 +53,9 @@ public:
|
|||
|
||||
static void InitFonctions();
|
||||
|
||||
void PutScript(CEdit* edit, char* name);
|
||||
bool GetScript(CEdit* edit);
|
||||
bool RetCompile();
|
||||
void PutScript(Ui::CEdit* edit, char* name);
|
||||
bool GetScript(Ui::CEdit* edit);
|
||||
bool GetCompile();
|
||||
|
||||
void GetTitle(char* buffer);
|
||||
|
||||
|
@ -61,14 +67,14 @@ public:
|
|||
bool IsRunning();
|
||||
bool IsContinue();
|
||||
bool GetCursor(int &cursor1, int &cursor2);
|
||||
void UpdateList(CList* list);
|
||||
void ColorizeScript(CEdit* edit);
|
||||
void UpdateList(Ui::CList* list);
|
||||
void ColorizeScript(Ui::CEdit* edit);
|
||||
bool IntroduceVirus();
|
||||
|
||||
int RetError();
|
||||
int GetError();
|
||||
void GetError(char* buffer);
|
||||
|
||||
void New(CEdit* edit, char* name);
|
||||
void New(Ui::CEdit* edit, char* name);
|
||||
bool SendScript(char* text);
|
||||
bool ReadScript(char* filename);
|
||||
bool WriteScript(char* filename);
|
||||
|
@ -77,42 +83,124 @@ public:
|
|||
bool Compare(CScript* other);
|
||||
|
||||
void SetFilename(char *filename);
|
||||
char* RetFilename();
|
||||
char* GetFilename();
|
||||
|
||||
protected:
|
||||
bool IsEmpty();
|
||||
bool CheckToken();
|
||||
bool Compile();
|
||||
|
||||
public:
|
||||
CInstanceManager* m_iMan;
|
||||
CD3DEngine* m_engine;
|
||||
CInterface* m_interface;
|
||||
CDisplayText* m_displayText;
|
||||
CBotProgram* m_botProg;
|
||||
CRobotMain* m_main;
|
||||
CTerrain* m_terrain;
|
||||
CWater* m_water;
|
||||
CTaskManager* m_primaryTask;
|
||||
CTaskManager** m_secondaryTask;
|
||||
CObject* m_object;
|
||||
private:
|
||||
|
||||
int m_ipf; // number of instructions/second
|
||||
int m_errMode; // what to do in case of error
|
||||
int m_len; // length of the script (without <0>)
|
||||
char* m_script; // script ends with <0>
|
||||
bool m_bRun; // program during execution?
|
||||
bool m_bStepMode; // step by step
|
||||
bool m_bContinue; // external function to continue
|
||||
bool m_bCompile; // compilation ok?
|
||||
char m_title[50]; // script title
|
||||
char m_filename[50]; // file name
|
||||
char m_token[50]; // missing instruction
|
||||
int m_error; // error (0=ok)
|
||||
int m_cursor1;
|
||||
int m_cursor2;
|
||||
Event m_event;
|
||||
float m_returnValue;
|
||||
static CBotTypResult cNull(CBotVar* &var, void* user);
|
||||
static CBotTypResult cOneFloat(CBotVar* &var, void* user);
|
||||
static CBotTypResult cTwoFloat(CBotVar* &var, void* user);
|
||||
static CBotTypResult cString(CBotVar* &var, void* user);
|
||||
static CBotTypResult cGetObject(CBotVar* &var, void* user);
|
||||
static CBotTypResult cSearch(CBotVar* &var, void* user);
|
||||
static CBotTypResult cRadar(CBotVar* &var, void* user);
|
||||
static CBotTypResult cDetect(CBotVar* &var, void* user);
|
||||
static CBotTypResult cDirection(CBotVar* &var, void* user);
|
||||
static CBotTypResult cProduce(CBotVar* &var, void* user);
|
||||
static CBotTypResult cDistance(CBotVar* &var, void* user);
|
||||
static CBotTypResult cSpace(CBotVar* &var, void* user);
|
||||
static CBotTypResult cFlatGround(CBotVar* &var, void* user);
|
||||
static CBotTypResult cGoto(CBotVar* &var, void* user);
|
||||
static CBotTypResult cGrabDrop(CBotVar* &var, void* user);
|
||||
static CBotTypResult cReceive(CBotVar* &var, void* user);
|
||||
static CBotTypResult cSend(CBotVar* &var, void* user);
|
||||
static CBotTypResult cDeleteInfo(CBotVar* &var, void* user);
|
||||
static CBotTypResult cTestInfo(CBotVar* &var, void* user);
|
||||
static CBotTypResult cShield(CBotVar* &var, void* user);
|
||||
static CBotTypResult cFire(CBotVar* &var, void* user);
|
||||
static CBotTypResult cMotor(CBotVar* &var, void* user);
|
||||
static CBotTypResult cTopo(CBotVar* &var, void* user);
|
||||
static CBotTypResult cMessage(CBotVar* &var, void* user);
|
||||
static CBotTypResult cPenDown(CBotVar* &var, void* user);
|
||||
static CBotTypResult cOnePoint(CBotVar* &var, void* user);
|
||||
static CBotTypResult cPoint(CBotVar* &var, void* user);
|
||||
|
||||
|
||||
static bool rSin(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rCos(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rTan(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rSqrt(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rPow(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rRand(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rAbs(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rGetObject(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rSearch(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rRadar(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rDetect(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rDirection(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rProduce(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rDistance(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rDistance2d(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rSpace(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rFlatGround(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rWait(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rMove(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rTurn(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rGoto(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rFind(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rGrab(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rDrop(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rSniff(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rReceive(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rSend(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rDeleteInfo(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rTestInfo(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rThump(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rRecycle(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rShield(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rFire(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rAim(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rMotor(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rJet(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rTopo(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rMessage(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rCmdline(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rIsMovie(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rErrMode(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rIPF(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rAbsTime(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rDeleteFile(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rPenDown(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rPenUp(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rPenColor(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
static bool rPenWidth(CBotVar* var, CBotVar* result, int& exception, void* user);
|
||||
|
||||
static bool Process(CScript* script, CBotVar* result, int &exception);
|
||||
static CObject* SearchInfo(CScript* script, CObject* object, float power);
|
||||
|
||||
CInstanceManager* m_iMan;
|
||||
Gfx::CEngine* m_engine;
|
||||
Ui::CInterface* m_interface;
|
||||
Ui::CDisplayText* m_displayText;
|
||||
CBotProgram* m_botProg;
|
||||
CRobotMain* m_main;
|
||||
Gfx::CTerrain* m_terrain;
|
||||
Gfx::CWater* m_water;
|
||||
CTaskManager* m_primaryTask;
|
||||
CTaskManager** m_secondaryTask;
|
||||
CObject* m_object;
|
||||
|
||||
int m_ipf; // number of instructions/second
|
||||
int m_errMode; // what to do in case of error
|
||||
int m_len; // length of the script (without <0>)
|
||||
char* m_script; // script ends with <0>
|
||||
bool m_bRun; // program during execution?
|
||||
bool m_bStepMode; // step by step
|
||||
bool m_bContinue; // external function to continue
|
||||
bool m_bCompile; // compilation ok?
|
||||
char m_title[50]; // script title
|
||||
char m_filename[50]; // file name
|
||||
char m_token[50]; // missing instruction
|
||||
int m_error; // error (0=ok)
|
||||
int m_cursor1;
|
||||
int m_cursor2;
|
||||
Event m_event;
|
||||
float m_returnValue;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
// * This file is part of the COLOBOT source code
|
||||
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
|
||||
// * Copyright (C) 2012 Polish Portal of Colobot (PPC)
|
||||
// *
|
||||
// * This program is free software: you can redistribute it and/or modify
|
||||
// * it under the terms of the GNU General Public License as published by
|
||||
|
@ -15,14 +16,15 @@
|
|||
// * along with this program. If not, see http://www.gnu.org/licenses/.
|
||||
|
||||
|
||||
#include <windows.h>
|
||||
#include <stdio.h>
|
||||
#include <d3d.h>
|
||||
//#include <windows.h>
|
||||
//#include <stdio.h>
|
||||
//#include <d3d.h>
|
||||
|
||||
#include "common/struct.h"
|
||||
#include "old/d3dengine.h"
|
||||
#include "common/language.h"
|
||||
#include "old/math3d.h"
|
||||
//#include "common/struct.h"
|
||||
//#include "old/d3dengine.h"
|
||||
#include "graphics/engine/engine.h"
|
||||
//#include "common/language.h"
|
||||
//#include "old/math3d.h"
|
||||
#include "common/event.h"
|
||||
#include "common/misc.h"
|
||||
#include "common/iman.h"
|
||||
|
@ -30,15 +32,15 @@
|
|||
#include "ui/button.h"
|
||||
|
||||
|
||||
namespace Ui {
|
||||
|
||||
const float DELAY1 = 0.4f;
|
||||
const float DELAY2 = 0.1f;
|
||||
|
||||
|
||||
|
||||
// Object's constructor.
|
||||
|
||||
CButton::CButton(CInstanceManager* iMan) : CControl(iMan)
|
||||
CButton::CButton() : CControl()
|
||||
{
|
||||
m_bCapture = false;
|
||||
m_bImmediat = false;
|
||||
|
@ -55,18 +57,18 @@ CButton::~CButton()
|
|||
|
||||
// Creates a new button.
|
||||
|
||||
bool CButton::Create(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
bool CButton::Create(Math::Point pos, Math::Point dim, int icon, EventType eventType)
|
||||
{
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
if ( eventType == EVENT_NULL ) eventType = GetUniqueEventType();
|
||||
|
||||
CControl::Create(pos, dim, icon, eventMsg);
|
||||
CControl::Create(pos, dim, icon, eventType);
|
||||
|
||||
if ( icon == -1 )
|
||||
{
|
||||
char name[100];
|
||||
char* p;
|
||||
|
||||
GetResource(RES_EVENT, eventMsg, name);
|
||||
GetResource(RES_EVENT, eventType, name);
|
||||
p = strchr(name, '\\');
|
||||
if ( p != 0 ) *p = 0;
|
||||
SetName(name);
|
||||
|
@ -85,7 +87,7 @@ bool CButton::EventProcess(const Event &event)
|
|||
|
||||
CControl::EventProcess(event);
|
||||
|
||||
if ( event.event == EVENT_FRAME )
|
||||
if ( event.type == EVENT_FRAME )
|
||||
{
|
||||
if ( m_bRepeat && m_repeat != 0.0f )
|
||||
{
|
||||
|
@ -95,14 +97,15 @@ bool CButton::EventProcess(const Event &event)
|
|||
m_repeat = DELAY2;
|
||||
|
||||
Event newEvent = event;
|
||||
newEvent.event = m_eventMsg;
|
||||
newEvent.type = m_eventType;
|
||||
m_event->AddEvent(newEvent);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( event.event == EVENT_LBUTTONDOWN &&
|
||||
if ( event.type == EVENT_MOUSE_BUTTON_DOWN &&
|
||||
event.mouseButton.button == 1 &&
|
||||
(m_state & STATE_VISIBLE) &&
|
||||
(m_state & STATE_ENABLE) )
|
||||
{
|
||||
|
@ -114,25 +117,27 @@ bool CButton::EventProcess(const Event &event)
|
|||
if ( m_bImmediat || m_bRepeat )
|
||||
{
|
||||
Event newEvent = event;
|
||||
newEvent.event = m_eventMsg;
|
||||
newEvent.type = m_eventType;
|
||||
m_event->AddEvent(newEvent);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if ( event.event == EVENT_MOUSEMOVE && m_bCapture )
|
||||
if ( event.type == EVENT_MOUSE_MOVE && m_bCapture )
|
||||
{
|
||||
}
|
||||
|
||||
if ( event.event == EVENT_LBUTTONUP && m_bCapture )
|
||||
if ( event.type == EVENT_MOUSE_BUTTON_UP && //left
|
||||
event.mouseButton.button == 1 &&
|
||||
m_bCapture )
|
||||
{
|
||||
if ( CControl::Detect(event.pos) )
|
||||
{
|
||||
if ( !m_bImmediat && !m_bRepeat )
|
||||
{
|
||||
Event newEvent = event;
|
||||
newEvent.event = m_eventMsg;
|
||||
newEvent.type = m_eventType;
|
||||
m_event->AddEvent(newEvent);
|
||||
}
|
||||
}
|
||||
|
@ -158,10 +163,10 @@ void CButton::Draw()
|
|||
|
||||
if ( m_state & STATE_WARNING ) // shading yellow-black?
|
||||
{
|
||||
pos.x = m_pos.x-( 8.0f/640.0f);
|
||||
pos.y = m_pos.y-( 4.0f/480.0f);
|
||||
dim.x = m_dim.x+(16.0f/640.0f);
|
||||
dim.y = m_dim.y+( 8.0f/480.0f);
|
||||
pos.x = m_pos.x - ( 8.0f / 640.0f);
|
||||
pos.y = m_pos.y - ( 4.0f / 480.0f);
|
||||
dim.x = m_dim.x + (16.0f / 640.0f);
|
||||
dim.y = m_dim.y + ( 8.0f / 480.0f);
|
||||
if ( m_state & STATE_SHADOW )
|
||||
{
|
||||
DrawShadow(pos, dim);
|
||||
|
@ -182,19 +187,19 @@ void CButton::Draw()
|
|||
(m_state & STATE_SIMPLY) == 0 )
|
||||
{
|
||||
m_engine->SetTexture("button2.tga");
|
||||
m_engine->SetState(D3DSTATENORMAL);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL);
|
||||
|
||||
dp = 0.5f/256.0f;
|
||||
dp = 0.5f / 256.0f;
|
||||
|
||||
uv1.x = 128.0f/256.0f;
|
||||
uv1.y = 96.0f/256.0f;
|
||||
uv2.x = 136.0f/256.0f;
|
||||
uv2.y = 128.0f/256.0f;
|
||||
uv1.x = 128.0f / 256.0f;
|
||||
uv1.y = 96.0f / 256.0f;
|
||||
uv2.x = 136.0f / 256.0f;
|
||||
uv2.y = 128.0f / 256.0f;
|
||||
|
||||
if ( (m_state & STATE_ENABLE) == 0 )
|
||||
{
|
||||
uv1.x += 16.0f/256.0f;
|
||||
uv2.x += 16.0f/256.0f;
|
||||
uv1.x += 16.0f / 256.0f;
|
||||
uv2.x += 16.0f / 256.0f;
|
||||
}
|
||||
|
||||
uv1.x += dp;
|
||||
|
@ -202,15 +207,15 @@ void CButton::Draw()
|
|||
uv2.x -= dp;
|
||||
uv2.y -= dp;
|
||||
|
||||
pos.y = m_pos.y+5.0f/480.0f;
|
||||
dim.y = m_dim.y-10.0f/480.0f;
|
||||
pos.x = m_pos.x+5.0f/640.0f;
|
||||
dim.x = 3.0f/640.0f;
|
||||
pos.y = m_pos.y + 5.0f / 480.0f;
|
||||
dim.y = m_dim.y - 10.0f / 480.0f;
|
||||
pos.x = m_pos.x + 5.0f / 640.0f;
|
||||
dim.x = 3.0f / 640.0f;
|
||||
DrawIcon(pos, dim, uv1, uv2, 0.0f);
|
||||
|
||||
uv1.x += 8.0f/256.0f;
|
||||
uv2.x += 8.0f/256.0f;
|
||||
pos.x = m_pos.x+m_dim.x-5.0f/640.0f-3.0f/640.0f;
|
||||
uv1.x += 8.0f / 256.0f;
|
||||
uv2.x += 8.0f / 256.0f;
|
||||
pos.x = m_pos.x + m_dim.x - 5.0f / 640.0f - 3.0f / 640.0f;
|
||||
DrawIcon(pos, dim, uv1, uv2, 0.0f);
|
||||
}
|
||||
#endif
|
||||
|
@ -225,7 +230,7 @@ void CButton::SetImmediat(bool bImmediat)
|
|||
m_bImmediat = bImmediat;
|
||||
}
|
||||
|
||||
bool CButton::RetImmediat()
|
||||
bool CButton::GetImmediat()
|
||||
{
|
||||
return m_bImmediat;
|
||||
}
|
||||
|
@ -239,8 +244,9 @@ void CButton::SetRepeat(bool bRepeat)
|
|||
m_bRepeat = bRepeat;
|
||||
}
|
||||
|
||||
bool CButton::RetRepeat()
|
||||
bool CButton::GetRepeat()
|
||||
{
|
||||
return m_bRepeat;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
// * This file is part of the COLOBOT source code
|
||||
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
|
||||
// * Copyright (C) 2012 Polish Portal of Colobot (PPC)
|
||||
// *
|
||||
// * This program is free software: you can redistribute it and/or modify
|
||||
// * it under the terms of the GNU General Public License as published by
|
||||
|
@ -21,28 +22,28 @@
|
|||
|
||||
#include "ui/control.h"
|
||||
|
||||
namespace Gfx{
|
||||
class CEngine;
|
||||
}
|
||||
|
||||
class CD3DEngine;
|
||||
|
||||
|
||||
|
||||
namespace Ui {
|
||||
class CButton : public CControl
|
||||
{
|
||||
public:
|
||||
CButton(CInstanceManager* iMan);
|
||||
CButton();
|
||||
virtual ~CButton();
|
||||
|
||||
bool Create(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
bool Create(Math::Point pos, Math::Point dim, int icon, EventType eventType);
|
||||
|
||||
bool EventProcess(const Event &event);
|
||||
|
||||
void Draw();
|
||||
|
||||
void SetImmediat(bool bRepeat);
|
||||
bool RetImmediat();
|
||||
bool GetImmediat();
|
||||
|
||||
void SetRepeat(bool bRepeat);
|
||||
bool RetRepeat();
|
||||
bool GetRepeat();
|
||||
|
||||
protected:
|
||||
|
||||
|
@ -53,4 +54,4 @@ protected:
|
|||
float m_repeat;
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
// * This file is part of the COLOBOT source code
|
||||
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
|
||||
// * Copyright (C) 2012 Polish Portal of Colobot (PPC)
|
||||
// *
|
||||
// * This program is free software: you can redistribute it and/or modify
|
||||
// * it under the terms of the GNU General Public License as published by
|
||||
|
@ -15,26 +16,28 @@
|
|||
// * along with this program. If not, see http://www.gnu.org/licenses/.
|
||||
|
||||
|
||||
#include <windows.h>
|
||||
#include <stdio.h>
|
||||
#include <d3d.h>
|
||||
//#include <windows.h>
|
||||
//#include <stdio.h>
|
||||
//#include <d3d.h>
|
||||
|
||||
#include "common/struct.h"
|
||||
#include "old/d3dengine.h"
|
||||
#include "old/math3d.h"
|
||||
//#include "common/struct.h"
|
||||
//#include "old/d3dengine.h"
|
||||
#include "graphics/engine/engine.h"
|
||||
//#include "old/math3d.h"
|
||||
#include "common/event.h"
|
||||
#include "common/misc.h"
|
||||
#include "common/iman.h"
|
||||
#include "common/restext.h"
|
||||
#include "old/text.h"
|
||||
//#include "old/text.h"
|
||||
#include "graphics/engine/text.h"
|
||||
#include "ui/check.h"
|
||||
|
||||
|
||||
|
||||
namespace Ui {
|
||||
|
||||
// Object's constructor.
|
||||
|
||||
CCheck::CCheck(CInstanceManager* iMan) : CControl(iMan)
|
||||
CCheck::CCheck() : CControl()
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -47,16 +50,16 @@ CCheck::~CCheck()
|
|||
|
||||
// Creates a new button.
|
||||
|
||||
bool CCheck::Create(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
bool CCheck::Create(Math::Point pos, Math::Point dim, int icon, EventType eventType)
|
||||
{
|
||||
char name[100];
|
||||
char* p;
|
||||
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
if ( eventType == EVENT_NULL ) eventType = GetUniqueEventType();
|
||||
|
||||
CControl::Create(pos, dim, icon, eventMsg);
|
||||
CControl::Create(pos, dim, icon, eventType);
|
||||
|
||||
GetResource(RES_EVENT, eventMsg, name);
|
||||
GetResource(RES_EVENT, eventType, name);
|
||||
p = strchr(name, '\\');
|
||||
if ( p != 0 ) *p = 0;
|
||||
SetName(name);
|
||||
|
@ -73,14 +76,15 @@ bool CCheck::EventProcess(const Event &event)
|
|||
|
||||
CControl::EventProcess(event);
|
||||
|
||||
if ( event.event == EVENT_LBUTTONDOWN &&
|
||||
(m_state & STATE_VISIBLE) &&
|
||||
if ( event.type == EVENT_MOUSE_BUTTON_DOWN &&
|
||||
event.mouseButton.button == 1 &&
|
||||
(m_state & STATE_VISIBLE) &&
|
||||
(m_state & STATE_ENABLE) )
|
||||
{
|
||||
if ( CControl::Detect(event.pos) )
|
||||
{
|
||||
Event newEvent = event;
|
||||
newEvent.event = m_eventMsg;
|
||||
newEvent.type = m_eventType;
|
||||
m_event->AddEvent(newEvent);
|
||||
return false;
|
||||
}
|
||||
|
@ -101,7 +105,7 @@ void CCheck::Draw()
|
|||
if ( (m_state & STATE_VISIBLE) == 0 ) return;
|
||||
|
||||
iDim = m_dim;
|
||||
m_dim.x = m_dim.y*0.75f; // square
|
||||
m_dim.x = m_dim.y * 0.75f; // square
|
||||
|
||||
if ( m_state & STATE_SHADOW )
|
||||
{
|
||||
|
@ -109,7 +113,7 @@ void CCheck::Draw()
|
|||
}
|
||||
|
||||
m_engine->SetTexture("button1.tga");
|
||||
m_engine->SetState(D3DSTATENORMAL);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL);
|
||||
|
||||
zoomExt = 1.00f;
|
||||
zoomInt = 0.95f;
|
||||
|
@ -143,7 +147,7 @@ void CCheck::Draw()
|
|||
|
||||
if ( (m_state & STATE_DEAD) == 0 )
|
||||
{
|
||||
m_engine->SetState(D3DSTATETTw);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_TTEXTURE_WHITE);
|
||||
|
||||
if ( m_state & STATE_CHECK )
|
||||
{
|
||||
|
@ -157,10 +161,10 @@ void CCheck::Draw()
|
|||
if ( m_state & STATE_DEAD ) return;
|
||||
|
||||
// Draw the name.
|
||||
pos.x = m_pos.x+m_dim.y/0.9f;
|
||||
pos.y = m_pos.y+m_dim.y*0.50f;
|
||||
pos.y -= m_engine->RetText()->RetHeight(m_fontSize, m_fontType)/2.0f;
|
||||
m_engine->RetText()->DrawText(m_name, pos, m_dim.x, 1, m_fontSize, m_fontStretch, m_fontType, 0);
|
||||
pos.x = m_pos.x + m_dim.y / 0.9f;
|
||||
pos.y = m_pos.y + m_dim.y * 0.50f;
|
||||
pos.y -= m_engine->GetText()->GetHeight(m_fontType, m_fontSize)/2.0f;
|
||||
m_engine->GetText()->DrawText(m_name, m_fontType, m_fontSize, pos, m_dim.x, m_textAlign, 0);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
// * This file is part of the COLOBOT source code
|
||||
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
|
||||
// * Copyright (C) 2012 Polish Portal of Colobot (PPC)
|
||||
// *
|
||||
// * This program is free software: you can redistribute it and/or modify
|
||||
// * it under the terms of the GNU General Public License as published by
|
||||
|
@ -21,18 +22,18 @@
|
|||
|
||||
#include "ui/control.h"
|
||||
|
||||
namespace Gfx{
|
||||
class CEngine;
|
||||
}
|
||||
|
||||
class CD3DEngine;
|
||||
|
||||
|
||||
|
||||
namespace Ui {
|
||||
class CCheck : public CControl
|
||||
{
|
||||
public:
|
||||
CCheck(CInstanceManager* iMan);
|
||||
CCheck();
|
||||
virtual ~CCheck();
|
||||
|
||||
bool Create(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
bool Create(Math::Point pos, Math::Point dim, int icon, EventType eventType);
|
||||
|
||||
bool EventProcess(const Event &event);
|
||||
|
||||
|
@ -43,4 +44,5 @@ protected:
|
|||
protected:
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
|
|
123
src/ui/color.cpp
123
src/ui/color.cpp
|
@ -1,5 +1,6 @@
|
|||
// * This file is part of the COLOBOT source code
|
||||
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
|
||||
// * Copyright (C) 2012, Polish Portal of Colobot (PPC)
|
||||
// *
|
||||
// * This program is free software: you can redistribute it and/or modify
|
||||
// * it under the terms of the GNU General Public License as published by
|
||||
|
@ -15,14 +16,16 @@
|
|||
// * along with this program. If not, see http://www.gnu.org/licenses/.
|
||||
|
||||
|
||||
#include <windows.h>
|
||||
#include <stdio.h>
|
||||
#include <d3d.h>
|
||||
//#include <windows.h>
|
||||
//#include <stdio.h>
|
||||
//#include <d3d.h>
|
||||
|
||||
#include "common/struct.h"
|
||||
#include "old/d3dengine.h"
|
||||
#include "common/language.h"
|
||||
#include "old/math3d.h"
|
||||
//#include "common/struct.h"
|
||||
//#include "old/d3dengine.h"
|
||||
#include "graphics/engine/engine.h"
|
||||
#include "graphics/core/device.h"
|
||||
//#include "common/language.h"
|
||||
//#include "old/math3d.h"
|
||||
#include "common/event.h"
|
||||
#include "common/misc.h"
|
||||
#include "common/iman.h"
|
||||
|
@ -30,7 +33,7 @@
|
|||
#include "ui/color.h"
|
||||
|
||||
|
||||
|
||||
namespace Ui {
|
||||
const float DELAY1 = 0.4f;
|
||||
const float DELAY2 = 0.1f;
|
||||
|
||||
|
@ -38,7 +41,8 @@ const float DELAY2 = 0.1f;
|
|||
|
||||
// Object's constructor.
|
||||
|
||||
CColor::CColor(CInstanceManager* iMan) : CControl(iMan)
|
||||
//CColor::CColor(CInstanceManager* iMan) : CControl(iMan)
|
||||
CColor::CColor() : CControl()
|
||||
{
|
||||
m_bRepeat = false;
|
||||
m_repeat = 0.0f;
|
||||
|
@ -58,18 +62,18 @@ CColor::~CColor()
|
|||
|
||||
// Creates a new button.
|
||||
|
||||
bool CColor::Create(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
bool CColor::Create(Math::Point pos, Math::Point dim, int icon, EventType eventType)
|
||||
{
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
if ( eventType == EVENT_NULL ) eventType = GetUniqueEventType();
|
||||
|
||||
CControl::Create(pos, dim, icon, eventMsg);
|
||||
CControl::Create(pos, dim, icon, eventType);
|
||||
|
||||
if ( icon == -1 )
|
||||
{
|
||||
char name[100];
|
||||
char* p;
|
||||
|
||||
GetResource(RES_EVENT, eventMsg, name);
|
||||
GetResource(RES_EVENT, eventType, name);
|
||||
p = strchr(name, '\\');
|
||||
if ( p != 0 ) *p = 0;
|
||||
SetName(name);
|
||||
|
@ -87,7 +91,7 @@ bool CColor::EventProcess(const Event &event)
|
|||
|
||||
CControl::EventProcess(event);
|
||||
|
||||
if ( event.event == EVENT_FRAME && m_bRepeat )
|
||||
if ( event.type == EVENT_FRAME && m_bRepeat )
|
||||
{
|
||||
if ( m_repeat != 0.0f )
|
||||
{
|
||||
|
@ -97,14 +101,15 @@ bool CColor::EventProcess(const Event &event)
|
|||
m_repeat = DELAY2;
|
||||
|
||||
Event newEvent = event;
|
||||
newEvent.event = m_eventMsg;
|
||||
newEvent.type = m_eventType;
|
||||
m_event->AddEvent(newEvent);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( event.event == EVENT_LBUTTONDOWN &&
|
||||
if ( event.type == EVENT_MOUSE_BUTTON_DOWN &&
|
||||
event.mouseButton.button == 1 &&
|
||||
(m_state & STATE_VISIBLE) &&
|
||||
(m_state & STATE_ENABLE) )
|
||||
{
|
||||
|
@ -113,13 +118,13 @@ bool CColor::EventProcess(const Event &event)
|
|||
m_repeat = DELAY1;
|
||||
|
||||
Event newEvent = event;
|
||||
newEvent.event = m_eventMsg;
|
||||
newEvent.type = m_eventType;
|
||||
m_event->AddEvent(newEvent);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if ( event.event == EVENT_LBUTTONUP )
|
||||
if ( event.type == EVENT_MOUSE_BUTTON_UP && event.mouseButton.button == 1)
|
||||
{
|
||||
m_repeat = 0.0f;
|
||||
}
|
||||
|
@ -132,9 +137,9 @@ bool CColor::EventProcess(const Event &event)
|
|||
|
||||
void CColor::Draw()
|
||||
{
|
||||
LPDIRECT3DDEVICE7 device;
|
||||
D3DLVERTEX vertex[4]; // 2 triangles
|
||||
D3DCOLOR color;
|
||||
Gfx::CDevice* device;
|
||||
Gfx::VertexCol vertex[4]; // 2 triangles
|
||||
Gfx::Color color;
|
||||
Math::Point p1, p2;
|
||||
|
||||
if ( (m_state & STATE_VISIBLE) == 0 ) return;
|
||||
|
@ -145,56 +150,57 @@ void CColor::Draw()
|
|||
}
|
||||
|
||||
m_engine->SetTexture("button1.tga");
|
||||
m_engine->SetState(D3DSTATENORMAL);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL);
|
||||
CControl::Draw();
|
||||
|
||||
#if _TEEN
|
||||
color = ::RetColor(m_color);
|
||||
// color = GetColor(m_color);
|
||||
color = GetColor();
|
||||
|
||||
m_engine->SetTexture("xxx.tga"); // no texture
|
||||
m_engine->SetState(D3DSTATENORMAL);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL);
|
||||
|
||||
device = m_engine->RetD3DDevice();
|
||||
device = m_engine->GetDevice();
|
||||
|
||||
p1.x = m_pos.x+(4.0f/640.0f);
|
||||
p1.y = m_pos.y+(4.0f/480.0f);
|
||||
p2.x = m_pos.x+m_dim.x-(4.0f/640.0f);
|
||||
p2.y = m_pos.y+m_dim.y-(4.0f/480.0f);
|
||||
vertex[0] = D3DLVERTEX(D3DVECTOR(p1.x, p1.y, 0.0f), 0x00000000,0x00000000, 0.0f,0.0f);
|
||||
vertex[1] = D3DLVERTEX(D3DVECTOR(p1.x, p2.y, 0.0f), 0x00000000,0x00000000, 0.0f,0.0f);
|
||||
vertex[2] = D3DLVERTEX(D3DVECTOR(p2.x, p1.y, 0.0f), 0x00000000,0x00000000, 0.0f,0.0f);
|
||||
vertex[3] = D3DLVERTEX(D3DVECTOR(p2.x, p2.y, 0.0f), 0x00000000,0x00000000, 0.0f,0.0f);
|
||||
device->DrawPrimitive(D3DPT_TRIANGLESTRIP, D3DFVF_LVERTEX, vertex, 4, NULL);
|
||||
p1.x = m_pos.x + (4.0f / 640.0f);
|
||||
p1.y = m_pos.y + (4.0f / 480.0f);
|
||||
p2.x = m_pos.x + m_dim.x - (4.0f / 640.0f);
|
||||
p2.y = m_pos.y + m_dim.y - (4.0f / 480.0f);
|
||||
vertex[0] = Gfx::Vertex(Math::Vector(p1.x, p1.y, 0.0f), 0x00000000,0x00000000, Math::Point( 0.0f, 0.0f));
|
||||
vertex[1] = Gfx::Vertex(Math::Vector(p1.x, p2.y, 0.0f), 0x00000000,0x00000000, Math::Point( 0.0f, 0.0f));
|
||||
vertex[2] = Gfx::Vertex(Math::Vector(p2.x, p1.y, 0.0f), 0x00000000,0x00000000, Math::Point( 0.0f, 0.0f));
|
||||
vertex[3] = Gfx::Vertex(Math::Vector(p2.x, p2.y, 0.0f), 0x00000000,0x00000000, Math::Point( 0.0f, 0.0f));
|
||||
device->DrawPrimitive(Gfx::PRIMITIVE_TRIANGLE_STRIP, vertex, 4);
|
||||
|
||||
p1.x = m_pos.x+(5.0f/640.0f);
|
||||
p1.y = m_pos.y+(5.0f/480.0f);
|
||||
p2.x = m_pos.x+m_dim.x-(5.0f/640.0f);
|
||||
p2.y = m_pos.y+m_dim.y-(5.0f/480.0f);
|
||||
vertex[0] = D3DLVERTEX(D3DVECTOR(p1.x, p1.y, 0.0f), color,0x00000000, 0.0f,0.0f);
|
||||
vertex[1] = D3DLVERTEX(D3DVECTOR(p1.x, p2.y, 0.0f), color,0x00000000, 0.0f,0.0f);
|
||||
vertex[2] = D3DLVERTEX(D3DVECTOR(p2.x, p1.y, 0.0f), color,0x00000000, 0.0f,0.0f);
|
||||
vertex[3] = D3DLVERTEX(D3DVECTOR(p2.x, p2.y, 0.0f), color,0x00000000, 0.0f,0.0f);
|
||||
device->DrawPrimitive(D3DPT_TRIANGLESTRIP, D3DFVF_LVERTEX, vertex, 4, NULL);
|
||||
p1.x = m_pos.x + (5.0f / 640.0f);
|
||||
p1.y = m_pos.y + (5.0f / 480.0f);
|
||||
p2.x = m_pos.x + m_dim.x - (5.0f / 640.0f);
|
||||
p2.y = m_pos.y + m_dim.y - (5.0f / 480.0f);
|
||||
vertex[0] = Gfx::Vertex(Math::Vector(p1.x, p1.y, 0.0f), color,0x00000000, Math::Point( 0.0f, 0.0f));
|
||||
vertex[1] = Gfx::Vertex(Math::Vector(p1.x, p2.y, 0.0f), color,0x00000000, Math::Point( 0.0f, 0.0f));
|
||||
vertex[2] = Gfx::Vertex(Math::Vector(p2.x, p1.y, 0.0f), color,0x00000000, Math::Point( 0.0f, 0.0f));
|
||||
vertex[3] = Gfx::Vertex(Math::Vector(p2.x, p2.y, 0.0f), color,0x00000000, Math::Point( 0.0f, 0.0f));
|
||||
device->DrawPrimitive(Gfx::PRIMITIVE_TRIANGLE_STRIP, vertex, 4);
|
||||
|
||||
m_engine->AddStatisticTriangle(4);
|
||||
#else
|
||||
p1.x = m_pos.x+(3.0f/640.0f);
|
||||
p1.y = m_pos.y+(3.0f/480.0f);
|
||||
p2.x = m_pos.x+m_dim.x-(3.0f/640.0f);
|
||||
p2.y = m_pos.y+m_dim.y-(3.0f/480.0f);
|
||||
p1.x = m_pos.x + (3.0f / 640.0f);
|
||||
p1.y = m_pos.y + (3.0f / 480.0f);
|
||||
p2.x = m_pos.x + m_dim.x - (3.0f / 640.0f);
|
||||
p2.y = m_pos.y + m_dim.y - (3.0f / 480.0f);
|
||||
|
||||
color = ::RetColor(m_color);
|
||||
color = GetColor();
|
||||
|
||||
m_engine->SetTexture("xxx.tga"); // no texture
|
||||
m_engine->SetState(D3DSTATENORMAL);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL);
|
||||
|
||||
vertex[0] = D3DLVERTEX(D3DVECTOR(p1.x, p1.y, 0.0f), color,0x00000000, 0.0f,0.0f);
|
||||
vertex[1] = D3DLVERTEX(D3DVECTOR(p1.x, p2.y, 0.0f), color,0x00000000, 0.0f,0.0f);
|
||||
vertex[2] = D3DLVERTEX(D3DVECTOR(p2.x, p1.y, 0.0f), color,0x00000000, 0.0f,0.0f);
|
||||
vertex[3] = D3DLVERTEX(D3DVECTOR(p2.x, p2.y, 0.0f), color,0x00000000, 0.0f,0.0f);
|
||||
vertex[0] = Gfx::VertexCol(Math::Vector(p1.x, p1.y, 0.0f), color,0x00000000, Math::Point(0.0f, 0.0f));
|
||||
vertex[1] = Gfx::VertexCol(Math::Vector(p1.x, p2.y, 0.0f), color,0x00000000, Math::Point(0.0f, 0.0f));
|
||||
vertex[2] = Gfx::VertexCol(Math::Vector(p2.x, p1.y, 0.0f), color,0x00000000, Math::Point(0.0f, 0.0f));
|
||||
vertex[3] = Gfx::VertexCol(Math::Vector(p2.x, p2.y, 0.0f), color,0x00000000, Math::Point(0.0f, 0.0f));
|
||||
|
||||
device = m_engine->RetD3DDevice();
|
||||
device->DrawPrimitive(D3DPT_TRIANGLESTRIP, D3DFVF_LVERTEX, vertex, 4, NULL);
|
||||
device = m_engine->GetDevice();
|
||||
device->DrawPrimitive(Gfx::PRIMITIVE_TRIANGLE_STRIP, vertex, 4);
|
||||
m_engine->AddStatisticTriangle(2);
|
||||
#endif
|
||||
}
|
||||
|
@ -205,20 +211,21 @@ void CColor::SetRepeat(bool bRepeat)
|
|||
m_bRepeat = bRepeat;
|
||||
}
|
||||
|
||||
bool CColor::RetRepeat()
|
||||
bool CColor::GetRepeat()
|
||||
{
|
||||
return m_bRepeat;
|
||||
}
|
||||
|
||||
|
||||
void CColor::SetColor(D3DCOLORVALUE color)
|
||||
void CColor::SetColor(Gfx::Color color)
|
||||
{
|
||||
m_color = color;
|
||||
}
|
||||
|
||||
D3DCOLORVALUE CColor::RetColor()
|
||||
Gfx::Color CColor::GetColor()
|
||||
{
|
||||
return m_color;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
// * This file is part of the COLOBOT source code
|
||||
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
|
||||
// * Copyright (C) 2012, Polish Portal of Colobot (PPC)
|
||||
// *
|
||||
// * This program is free software: you can redistribute it and/or modify
|
||||
// * it under the terms of the GNU General Public License as published by
|
||||
|
@ -20,37 +21,40 @@
|
|||
|
||||
|
||||
#include "ui/control.h"
|
||||
#include "old/d3dengine.h"
|
||||
|
||||
|
||||
class CD3DEngine;
|
||||
|
||||
//#include "graphics/engine/engine.h"
|
||||
|
||||
namespace Gfx{
|
||||
class CEngine;
|
||||
struct Color;
|
||||
}
|
||||
|
||||
namespace Ui {
|
||||
class CColor : public CControl
|
||||
{
|
||||
public:
|
||||
CColor(CInstanceManager* iMan);
|
||||
virtual ~CColor();
|
||||
// CColor(CInstanceManager* iMan);
|
||||
CColor();
|
||||
virtual ~CColor();
|
||||
|
||||
bool Create(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
bool Create(Math::Point pos, Math::Point dim, int icon, EventType eventType);
|
||||
|
||||
bool EventProcess(const Event &event);
|
||||
bool EventProcess(const Event &event);
|
||||
|
||||
void Draw();
|
||||
void Draw();
|
||||
|
||||
void SetRepeat(bool bRepeat);
|
||||
bool RetRepeat();
|
||||
void SetRepeat(bool bRepeat);
|
||||
bool GetRepeat();
|
||||
|
||||
void SetColor(D3DCOLORVALUE color);
|
||||
D3DCOLORVALUE RetColor();
|
||||
void SetColor(Gfx::Color color);
|
||||
Gfx::Color GetColor();
|
||||
|
||||
protected:
|
||||
|
||||
protected:
|
||||
bool m_bRepeat;
|
||||
float m_repeat;
|
||||
D3DCOLORVALUE m_color;
|
||||
bool m_bRepeat;
|
||||
float m_repeat;
|
||||
Gfx::Color m_color;
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
// * This file is part of the COLOBOT source code
|
||||
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
|
||||
// * Copyright (C) 2012, Polish Portal of Colobot (PPC)
|
||||
// *
|
||||
// * This program is free software: you can redistribute it and/or modify
|
||||
// * it under the terms of the GNU General Public License as published by
|
||||
|
@ -15,14 +16,16 @@
|
|||
// * along with this program. If not, see http://www.gnu.org/licenses/.
|
||||
|
||||
|
||||
#include <windows.h>
|
||||
#include <stdio.h>
|
||||
#include <d3d.h>
|
||||
//#include <windows.h>
|
||||
//#include <stdio.h>
|
||||
//#include <d3d.h>
|
||||
|
||||
#include "common/struct.h"
|
||||
//#include "common/struct.h"
|
||||
#include "math/geometry.h"
|
||||
#include "old/d3dengine.h"
|
||||
#include "old/math3d.h"
|
||||
//#include "old/d3dengine.h"
|
||||
#include "graphics/engine/engine.h"
|
||||
#include "graphics/core/device.h"
|
||||
//#include "old/math3d.h"
|
||||
#include "common/event.h"
|
||||
#include "common/misc.h"
|
||||
#include "common/iman.h"
|
||||
|
@ -30,10 +33,11 @@
|
|||
|
||||
|
||||
|
||||
|
||||
namespace Ui {
|
||||
// Object's constructor.
|
||||
|
||||
CCompass::CCompass(CInstanceManager* iMan) : CControl(iMan)
|
||||
//CCompass::CCompass(CInstanceManager* iMan) : CControl(iMan)
|
||||
CCompass::CCompass() : CControl()
|
||||
{
|
||||
m_dir = 0.0f;
|
||||
}
|
||||
|
@ -47,11 +51,11 @@ CCompass::~CCompass()
|
|||
|
||||
// Creates a new button.
|
||||
|
||||
bool CCompass::Create(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
bool CCompass::Create(Math::Point pos, Math::Point dim, int icon, EventType eventType)
|
||||
{
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
if ( eventType == EVENT_NULL ) eventType = GetUniqueEventType();
|
||||
|
||||
CControl::Create(pos, dim, icon, eventMsg);
|
||||
CControl::Create(pos, dim, icon, eventType);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -62,12 +66,13 @@ bool CCompass::EventProcess(const Event &event)
|
|||
{
|
||||
CControl::EventProcess(event);
|
||||
|
||||
if ( event.event == EVENT_LBUTTONDOWN )
|
||||
if ( event.type == EVENT_MOUSE_BUTTON_DOWN &&
|
||||
event.mouseButton.button == 1)
|
||||
{
|
||||
if ( CControl::Detect(event.pos) )
|
||||
{
|
||||
Event newEvent = event;
|
||||
newEvent.event = m_eventMsg;
|
||||
newEvent.type = m_eventType;
|
||||
m_event->AddEvent(newEvent);
|
||||
return false;
|
||||
}
|
||||
|
@ -81,33 +86,33 @@ bool CCompass::EventProcess(const Event &event)
|
|||
|
||||
void CCompass::Draw()
|
||||
{
|
||||
LPDIRECT3DDEVICE7 device;
|
||||
D3DVERTEX2 vertex[4]; // 2 triangles
|
||||
Math::Point p1, p2, p3, c, uv1, uv2;
|
||||
Math::Vector n;
|
||||
float dp;
|
||||
Gfx::CDevice* device;
|
||||
Gfx::Vertex vertex[4]; // 2 triangles
|
||||
Math::Point p1, p2, p3, c, uv1, uv2;
|
||||
Math::Vector n;
|
||||
float dp;
|
||||
|
||||
if ( (m_state & STATE_VISIBLE) == 0 ) return;
|
||||
|
||||
device = m_engine->RetD3DDevice();
|
||||
device = m_engine->GetDevice();
|
||||
|
||||
m_engine->SetTexture("button2.tga");
|
||||
m_engine->SetState(D3DSTATENORMAL);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL);
|
||||
|
||||
p1.x = m_pos.x;
|
||||
p1.y = m_pos.y;
|
||||
p2.x = m_pos.x + m_dim.x;
|
||||
p2.y = m_pos.y + m_dim.y;
|
||||
|
||||
c.x = (p1.x+p2.x)/2.0f;
|
||||
c.y = (p1.y+p2.y)/2.0f; // center
|
||||
c.x = (p1.x + p2.x) / 2.0f;
|
||||
c.y = (p1.y + p2.y) / 2.0f; // center
|
||||
|
||||
uv1.x = 64.0f/256.0f;
|
||||
uv1.y = 32.0f/256.0f;
|
||||
uv2.x = 96.0f/256.0f;
|
||||
uv2.y = 64.0f/256.0f;
|
||||
uv1.x = 64.0f / 256.0f;
|
||||
uv1.y = 32.0f / 256.0f;
|
||||
uv2.x = 96.0f / 256.0f;
|
||||
uv2.y = 64.0f / 256.0f;
|
||||
|
||||
dp = 0.5f/256.0f;
|
||||
dp = 0.5f / 256.0f;
|
||||
uv1.x += dp;
|
||||
uv1.y += dp;
|
||||
uv2.x -= dp;
|
||||
|
@ -115,46 +120,46 @@ void CCompass::Draw()
|
|||
|
||||
n = Math::Vector(0.0f, 0.0f, -1.0f); // normal
|
||||
|
||||
vertex[0] = D3DVERTEX2(Math::Vector(p1.x, p1.y, 0.0f), n, uv1.x,uv2.y);
|
||||
vertex[1] = D3DVERTEX2(Math::Vector(p1.x, p2.y, 0.0f), n, uv1.x,uv1.y);
|
||||
vertex[2] = D3DVERTEX2(Math::Vector(p2.x, p1.y, 0.0f), n, uv2.x,uv2.y);
|
||||
vertex[3] = D3DVERTEX2(Math::Vector(p2.x, p2.y, 0.0f), n, uv2.x,uv1.y);
|
||||
vertex[0] = Gfx::Vertex(Math::Vector(p1.x, p1.y, 0.0f), n, Math::Point(uv1.x, uv2.y));
|
||||
vertex[1] = Gfx::Vertex(Math::Vector(p1.x, p2.y, 0.0f), n, Math::Point(uv1.x, uv1.y));
|
||||
vertex[2] = Gfx::Vertex(Math::Vector(p2.x, p1.y, 0.0f), n, Math::Point(uv2.x, uv2.y));
|
||||
vertex[3] = Gfx::Vertex(Math::Vector(p2.x, p2.y, 0.0f), n, Math::Point(uv2.x, uv1.y));
|
||||
|
||||
device->DrawPrimitive(D3DPT_TRIANGLESTRIP, D3DFVF_VERTEX2, vertex, 4, NULL);
|
||||
device->DrawPrimitive(Gfx::PRIMITIVE_TRIANGLE_STRIP, vertex, 4);
|
||||
m_engine->AddStatisticTriangle(2);
|
||||
|
||||
if ( m_state & STATE_ENABLE )
|
||||
{
|
||||
p1.x = c.x;
|
||||
p1.y = c.y+m_dim.x*0.40f;
|
||||
p1.y = c.y + m_dim.x * 0.40f;
|
||||
p1 = Math::RotatePoint(c, m_dir, p1);
|
||||
p1.x = c.x+(p1.x-c.x)*(m_dim.x/m_dim.y);
|
||||
p1.x = c.x + (p1.x - c.x) * (m_dim.x / m_dim.y);
|
||||
|
||||
p2.x = c.x+m_dim.x*0.20f;
|
||||
p2.y = c.y-m_dim.x*0.40f;
|
||||
p2.x = c.x + m_dim.x * 0.20f;
|
||||
p2.y = c.y - m_dim.x * 0.40f;
|
||||
p2 = Math::RotatePoint(c, m_dir, p2);
|
||||
p2.x = c.x+(p2.x-c.x)*(m_dim.x/m_dim.y);
|
||||
p2.x = c.x + (p2.x - c.x) * (m_dim.x / m_dim.y);
|
||||
|
||||
p3.x = c.x-m_dim.x*0.20f;
|
||||
p3.y = c.y-m_dim.x*0.40f;
|
||||
p3.x = c.x - m_dim.x * 0.20f;
|
||||
p3.y = c.y - m_dim.x * 0.40f;
|
||||
p3 = Math::RotatePoint(c, m_dir, p3);
|
||||
p3.x = c.x+(p3.x-c.x)*(m_dim.x/m_dim.y);
|
||||
p3.x = c.x + (p3.x - c.x) * (m_dim.x / m_dim.y);
|
||||
|
||||
uv1.x = 96.0f/256.0f;
|
||||
uv1.y = 32.0f/256.0f;
|
||||
uv2.x = 104.0f/256.0f;
|
||||
uv2.y = 64.0f/256.0f;
|
||||
uv1.x = 96.0f / 256.0f;
|
||||
uv1.y = 32.0f / 256.0f;
|
||||
uv2.x = 104.0f / 256.0f;
|
||||
uv2.y = 64.0f / 256.0f;
|
||||
|
||||
uv1.x += dp;
|
||||
uv1.y += dp;
|
||||
uv2.x -= dp;
|
||||
uv2.y -= dp;
|
||||
|
||||
vertex[0] = D3DVERTEX2(Math::Vector(p1.x, p1.y, 0.0f), n, uv1.x,uv1.y);
|
||||
vertex[1] = D3DVERTEX2(Math::Vector(p2.x, p2.y, 0.0f), n, uv1.x,uv2.y);
|
||||
vertex[2] = D3DVERTEX2(Math::Vector(p3.x, p3.y, 0.0f), n, uv2.x,uv2.y);
|
||||
vertex[0] = Gfx::Vertex(Math::Vector(p1.x, p1.y, 0.0f), n, Math::Point(uv1.x, uv1.y));
|
||||
vertex[1] = Gfx::Vertex(Math::Vector(p2.x, p2.y, 0.0f), n, Math::Point(uv1.x, uv2.y));
|
||||
vertex[2] = Gfx::Vertex(Math::Vector(p3.x, p3.y, 0.0f), n, Math::Point(uv2.x, uv2.y));
|
||||
|
||||
device->DrawPrimitive(D3DPT_TRIANGLELIST, D3DFVF_VERTEX2, vertex, 3, NULL);
|
||||
device->DrawPrimitive(Gfx::PRIMITIVE_TRIANGLES, vertex, 3);
|
||||
m_engine->AddStatisticTriangle(1);
|
||||
}
|
||||
}
|
||||
|
@ -167,9 +172,10 @@ void CCompass::SetDirection(float dir)
|
|||
m_dir = dir;
|
||||
}
|
||||
|
||||
float CCompass::RetDirection()
|
||||
float CCompass::GetDirection()
|
||||
{
|
||||
return m_dir;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
// * This file is part of the COLOBOT source code
|
||||
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
|
||||
// * Copyright (C) 2012, Polish Portal of Colobot (PPC)
|
||||
// *
|
||||
// * This program is free software: you can redistribute it and/or modify
|
||||
// * it under the terms of the GNU General Public License as published by
|
||||
|
@ -21,25 +22,26 @@
|
|||
|
||||
#include "ui/control.h"
|
||||
|
||||
namespace Gfx {
|
||||
class CEngine;
|
||||
}
|
||||
|
||||
class CD3DEngine;
|
||||
|
||||
|
||||
|
||||
namespace Ui {
|
||||
class CCompass : public CControl
|
||||
{
|
||||
public:
|
||||
CCompass(CInstanceManager* iMan);
|
||||
// CCompass(CInstanceManager* iMan);
|
||||
CCompass();
|
||||
virtual ~CCompass();
|
||||
|
||||
bool Create(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
bool Create(Math::Point pos, Math::Point dim, int icon, EventType eventType);
|
||||
|
||||
bool EventProcess(const Event &event);
|
||||
|
||||
void Draw();
|
||||
|
||||
void SetDirection(float dir);
|
||||
float RetDirection();
|
||||
float GetDirection();
|
||||
|
||||
protected:
|
||||
|
||||
|
@ -48,3 +50,4 @@ protected:
|
|||
};
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
// * This file is part of the COLOBOT source code
|
||||
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
|
||||
// *
|
||||
// * Copyright (C) 2012, Polish Portal of Colobot (PPC)
|
||||
//
|
||||
// * This program is free software: you can redistribute it and/or modify
|
||||
// * it under the terms of the GNU General Public License as published by
|
||||
// * the Free Software Foundation, either version 3 of the License, or
|
||||
|
@ -15,45 +16,50 @@
|
|||
// * along with this program. If not, see http://www.gnu.org/licenses/.
|
||||
|
||||
|
||||
#include <windows.h>
|
||||
//#include <windows.h>
|
||||
#include <stdio.h>
|
||||
#include <d3d.h>
|
||||
//#include <d3d.h>
|
||||
|
||||
#include "common/struct.h"
|
||||
#include "old/d3dengine.h"
|
||||
#include "graphics/core/device.h"
|
||||
//#include "common/struct.h"
|
||||
//#include "old/d3dengine.h"
|
||||
#include "graphics/engine/engine.h"
|
||||
#include "common/language.h"
|
||||
#include "common/restext.h"
|
||||
#include "old/math3d.h"
|
||||
//#include "old/math3d.h"
|
||||
#include "common/event.h"
|
||||
#include "common/misc.h"
|
||||
#include "object/robotmain.h"
|
||||
#include "old/particule.h"
|
||||
#include "common/misc.h"
|
||||
//#include "old/particule.h"
|
||||
#include "graphics/engine/particle.h"
|
||||
#include "common/iman.h"
|
||||
#include "old/text.h"
|
||||
#include "old/sound.h"
|
||||
//#include "old/text.h"
|
||||
#include "graphics/engine/text.h"
|
||||
//#include "old/sound.h"
|
||||
#include "sound/sound.h"
|
||||
#include "ui/control.h"
|
||||
|
||||
|
||||
|
||||
|
||||
namespace Ui {
|
||||
// Object's constructor.
|
||||
|
||||
CControl::CControl(CInstanceManager* iMan)
|
||||
CControl::CControl()
|
||||
{
|
||||
m_iMan = iMan;
|
||||
m_iMan = CInstanceManager::GetInstancePointer();
|
||||
|
||||
m_engine = (CD3DEngine*)m_iMan->SearchInstance(CLASS_ENGINE);
|
||||
m_event = (CEvent*)m_iMan->SearchInstance(CLASS_EVENT);
|
||||
m_main = (CRobotMain*)m_iMan->SearchInstance(CLASS_MAIN);
|
||||
m_particule = (CParticule*)m_iMan->SearchInstance(CLASS_PARTICULE);
|
||||
m_sound = (CSound*)m_iMan->SearchInstance(CLASS_SOUND);
|
||||
m_eventMsg = EVENT_NULL;
|
||||
m_engine = static_cast< Gfx::CEngine* > ( m_iMan->SearchInstance(CLASS_ENGINE) );
|
||||
m_event = static_cast< CEventQueue* > ( m_iMan->SearchInstance(CLASS_EVENT) );
|
||||
m_main = static_cast< CRobotMain* > ( m_iMan->SearchInstance(CLASS_MAIN) );
|
||||
m_particle = static_cast< Gfx::CParticle* > (m_iMan->SearchInstance(CLASS_PARTICULE));
|
||||
m_sound = static_cast< CSoundInterface* > (m_iMan->SearchInstance(CLASS_SOUND));
|
||||
m_eventType = EVENT_NULL;
|
||||
m_state = STATE_ENABLE|STATE_VISIBLE|STATE_GLINT;
|
||||
m_fontSize = SMALLFONT;
|
||||
m_fontStretch = NORMSTRETCH;
|
||||
m_fontType = FONT_COLOBOT;
|
||||
m_justif = 0;
|
||||
m_fontSize = Gfx::FONT_SIZE_SMALL;
|
||||
// m_fontStretch = Gfx::FONT_NORM_STRETCH; //there is font stretching no more master
|
||||
m_fontType = Gfx::FONT_COLOBOT;
|
||||
m_textAlign = Gfx::TEXT_ALIGN_CENTER; //instead m_justify
|
||||
// m_justif = 0;
|
||||
m_name[0] = 0;
|
||||
m_tooltip[0] = 0;
|
||||
m_bFocus = false;
|
||||
|
@ -76,23 +82,23 @@ CControl::~CControl()
|
|||
// Creates a new button.
|
||||
// pos: [0..1]
|
||||
|
||||
bool CControl::Create(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
bool CControl::Create(Math::Point pos, Math::Point dim, int icon, EventType eventType)
|
||||
{
|
||||
char text[100];
|
||||
char* p;
|
||||
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
if ( eventType == EVENT_NULL ) eventType = GetUniqueEventType();
|
||||
|
||||
m_pos = pos;
|
||||
m_dim = dim;
|
||||
m_icon = icon;
|
||||
m_eventMsg = eventMsg;
|
||||
m_eventType = eventType;
|
||||
|
||||
pos.x = m_pos.x;
|
||||
pos.y = m_pos.y+m_dim.y;
|
||||
pos.y = m_pos.y + m_dim.y;
|
||||
GlintCreate(pos);
|
||||
|
||||
GetResource(RES_EVENT, m_eventMsg, text);
|
||||
GetResource(RES_EVENT, m_eventType, text);
|
||||
p = strchr(text, '\\');
|
||||
if ( p == 0 )
|
||||
{
|
||||
|
@ -115,11 +121,11 @@ void CControl::SetPos(Math::Point pos)
|
|||
m_pos = pos;
|
||||
|
||||
pos.x = m_pos.x;
|
||||
pos.y = m_pos.y+m_dim.y;
|
||||
pos.y = m_pos.y + m_dim.y;
|
||||
GlintCreate(pos);
|
||||
}
|
||||
|
||||
Math::Point CControl::RetPos()
|
||||
Math::Point CControl::GetPos()
|
||||
{
|
||||
return m_pos;
|
||||
}
|
||||
|
@ -131,11 +137,11 @@ void CControl::SetDim(Math::Point dim)
|
|||
m_dim = dim;
|
||||
|
||||
pos.x = m_pos.x;
|
||||
pos.y = m_pos.y+m_dim.y;
|
||||
pos.y = m_pos.y + m_dim.y;
|
||||
GlintCreate(pos);
|
||||
}
|
||||
|
||||
Math::Point CControl::RetDim()
|
||||
Math::Point CControl::GetDim()
|
||||
{
|
||||
return m_dim;
|
||||
}
|
||||
|
@ -175,7 +181,7 @@ bool CControl::TestState(int state)
|
|||
|
||||
// Returns all attributes of state.
|
||||
|
||||
int CControl::RetState()
|
||||
int CControl::GetState()
|
||||
{
|
||||
return m_state;
|
||||
}
|
||||
|
@ -188,7 +194,7 @@ void CControl::SetIcon(int icon)
|
|||
m_icon = icon;
|
||||
}
|
||||
|
||||
int CControl::RetIcon()
|
||||
int CControl::GetIcon()
|
||||
{
|
||||
return m_icon;
|
||||
}
|
||||
|
@ -230,7 +236,7 @@ void CControl::SetName(char* name, bool bTooltip)
|
|||
}
|
||||
}
|
||||
|
||||
char* CControl::RetName()
|
||||
char* CControl::GetName()
|
||||
{
|
||||
return m_name;
|
||||
}
|
||||
|
@ -238,14 +244,16 @@ char* CControl::RetName()
|
|||
|
||||
// Management of the mode of justification (-1,0,1).
|
||||
|
||||
void CControl::SetJustif(int mode)
|
||||
void CControl::SetTextAlign(Gfx::TextAlign mode)
|
||||
{
|
||||
m_justif = mode;
|
||||
m_textAlign = mode;
|
||||
// m_justif = mode;
|
||||
}
|
||||
|
||||
int CControl::RetJustif()
|
||||
int CControl::GetTextAlign()
|
||||
{
|
||||
return m_justif;
|
||||
return m_textAlign;
|
||||
// return m_justif;
|
||||
}
|
||||
|
||||
|
||||
|
@ -256,7 +264,7 @@ void CControl::SetFontSize(float size)
|
|||
m_fontSize = size;
|
||||
}
|
||||
|
||||
float CControl::RetFontSize()
|
||||
float CControl::GetFontSize()
|
||||
{
|
||||
return m_fontSize;
|
||||
}
|
||||
|
@ -269,7 +277,7 @@ void CControl::SetFontStretch(float stretch)
|
|||
m_fontStretch = stretch;
|
||||
}
|
||||
|
||||
float CControl::RetFontStretch()
|
||||
float CControl::GetFontStretch()
|
||||
{
|
||||
return m_fontStretch;
|
||||
}
|
||||
|
@ -277,12 +285,12 @@ float CControl::RetFontStretch()
|
|||
|
||||
// Choice of the font.
|
||||
|
||||
void CControl::SetFontType(FontType font)
|
||||
void CControl::SetFontType(Gfx::FontType font)
|
||||
{
|
||||
m_fontType = font;
|
||||
}
|
||||
|
||||
FontType CControl::RetFontType()
|
||||
Gfx::FontType CControl::GetFontType()
|
||||
{
|
||||
return m_fontType;
|
||||
}
|
||||
|
@ -290,7 +298,7 @@ FontType CControl::RetFontType()
|
|||
|
||||
// Specifies the tooltip.
|
||||
|
||||
bool CControl::SetTooltip(char* name)
|
||||
bool CControl::SetTooltip(const char* name)
|
||||
{
|
||||
strcpy(m_tooltip, name);
|
||||
return true;
|
||||
|
@ -316,7 +324,7 @@ void CControl::SetFocus(bool bFocus)
|
|||
m_bFocus = bFocus;
|
||||
}
|
||||
|
||||
bool CControl::RetFocus()
|
||||
bool CControl::GetFocus()
|
||||
{
|
||||
return m_bFocus;
|
||||
}
|
||||
|
@ -324,9 +332,9 @@ bool CControl::RetFocus()
|
|||
|
||||
// Returns the event associated with the control.
|
||||
|
||||
EventMsg CControl::RetEventMsg()
|
||||
EventType CControl::GetEventType()
|
||||
{
|
||||
return m_eventMsg;
|
||||
return m_eventType;
|
||||
}
|
||||
|
||||
|
||||
|
@ -336,21 +344,21 @@ bool CControl::EventProcess(const Event &event)
|
|||
{
|
||||
if ( m_state & STATE_DEAD ) return true;
|
||||
|
||||
if ( event.event == EVENT_FRAME && m_bGlint )
|
||||
if ( event.type == EVENT_FRAME && m_bGlint )
|
||||
{
|
||||
GlintFrame(event);
|
||||
}
|
||||
|
||||
if ( event.event == EVENT_MOUSEMOVE )
|
||||
if ( event.type == EVENT_MOUSE_MOVE )
|
||||
{
|
||||
m_glintMouse = event.pos;
|
||||
m_glintMouse = event.mouseMove.pos;
|
||||
|
||||
if ( Detect(event.pos) )
|
||||
if ( Detect(event.mouseMove.pos) )
|
||||
{
|
||||
if ( (m_state & STATE_VISIBLE) &&
|
||||
(m_state & STATE_ENABLE ) )
|
||||
{
|
||||
m_engine->SetMouseType(D3DMOUSEHAND);
|
||||
m_engine->SetMouseType(Gfx::ENG_MOUSE_HAND);
|
||||
}
|
||||
SetState(STATE_HILIGHT);
|
||||
}
|
||||
|
@ -360,7 +368,7 @@ bool CControl::EventProcess(const Event &event)
|
|||
}
|
||||
}
|
||||
|
||||
if ( event.event == EVENT_LBUTTONDOWN )
|
||||
if ( event.type == EVENT_MOUSE_BUTTON_DOWN && event.mouseButton.button == 1)
|
||||
{
|
||||
if ( Detect(event.pos) )
|
||||
{
|
||||
|
@ -369,7 +377,7 @@ bool CControl::EventProcess(const Event &event)
|
|||
}
|
||||
}
|
||||
|
||||
if ( event.event == EVENT_MOUSEMOVE && m_bCapture )
|
||||
if ( event.type == EVENT_MOUSE_MOVE && m_bCapture )
|
||||
{
|
||||
if ( Detect(event.pos) )
|
||||
{
|
||||
|
@ -381,7 +389,7 @@ bool CControl::EventProcess(const Event &event)
|
|||
}
|
||||
}
|
||||
|
||||
if ( event.event == EVENT_LBUTTONUP && m_bCapture )
|
||||
if ( event.type == EVENT_MOUSE_BUTTON_UP && m_bCapture && event.mouseButton.button == 1)
|
||||
{
|
||||
m_bCapture = false;
|
||||
ClearState(STATE_PRESS);
|
||||
|
@ -404,8 +412,8 @@ void CControl::GlintCreate(Math::Point ref, bool bLeft, bool bUp)
|
|||
{
|
||||
float offset;
|
||||
|
||||
offset = 8.0f/640.0f;
|
||||
if ( offset > m_dim.x/4.0f) offset = m_dim.x/4.0f;
|
||||
offset = 8.0f / 640.0f;
|
||||
if ( offset > m_dim.x / 4.0f) offset = m_dim.x / 4.0f;
|
||||
|
||||
if ( bLeft )
|
||||
{
|
||||
|
@ -419,17 +427,17 @@ void CControl::GlintCreate(Math::Point ref, bool bLeft, bool bUp)
|
|||
}
|
||||
|
||||
offset = 8.0f/480.0f;
|
||||
if ( offset > m_dim.y/4.0f) offset = m_dim.y/4.0f;
|
||||
if ( offset > m_dim.y / 4.0f) offset = m_dim.y / 4.0f;
|
||||
|
||||
if ( bUp )
|
||||
{
|
||||
m_glintCorner1.y = ref.y-offset;
|
||||
m_glintCorner1.y = ref.y - offset;
|
||||
m_glintCorner2.y = ref.y;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_glintCorner1.y = ref.y;
|
||||
m_glintCorner2.y = ref.y+offset;
|
||||
m_glintCorner2.y = ref.y + offset;
|
||||
}
|
||||
|
||||
m_bGlint = true;
|
||||
|
@ -452,14 +460,14 @@ void CControl::GlintFrame(const Event &event)
|
|||
|
||||
if ( m_glintProgress >= 2.0f && Detect(m_glintMouse) )
|
||||
{
|
||||
pos.x = m_glintCorner1.x + (m_glintCorner2.x-m_glintCorner1.x)*Math::Rand();
|
||||
pos.y = m_glintCorner1.y + (m_glintCorner2.y-m_glintCorner1.y)*Math::Rand();
|
||||
pos.x = m_glintCorner1.x + (m_glintCorner2.x - m_glintCorner1.x) * Math::Rand();
|
||||
pos.y = m_glintCorner1.y + (m_glintCorner2.y - m_glintCorner1.y) * Math::Rand();
|
||||
pos.z = 0.0f;
|
||||
speed = Math::Vector(0.0f, 0.0f, 0.0f);
|
||||
dim.x = ((15.0f+Math::Rand()*15.0f)/640.0f);
|
||||
dim.y = dim.x/0.75f;
|
||||
m_particule->CreateParticule(pos, speed, dim, PARTICONTROL,
|
||||
1.0f, 0.0f, 0.0f, SH_INTERFACE);
|
||||
dim.x = ((15.0f + Math::Rand() * 15.0f) / 640.0f);
|
||||
dim.y = dim.x / 0.75f;
|
||||
m_particle->CreateParticle(pos, speed, dim, Gfx::PARTICONTROL,
|
||||
1.0f, 0.0f, 0.0f, Gfx::SH_INTERFACE );
|
||||
|
||||
m_glintProgress = 0.0f;
|
||||
}
|
||||
|
@ -477,7 +485,7 @@ void CControl::Draw()
|
|||
if ( (m_state & STATE_VISIBLE) == 0 ) return;
|
||||
|
||||
m_engine->SetTexture("button1.tga");
|
||||
m_engine->SetState(D3DSTATENORMAL);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL);
|
||||
|
||||
zoomExt = 1.00f;
|
||||
zoomInt = 0.95f;
|
||||
|
@ -537,7 +545,7 @@ void CControl::Draw()
|
|||
if ( m_name[0] == 0 ) // button without name?
|
||||
{
|
||||
//? DrawPart(icon, zoomExt, 0.0f);
|
||||
DrawPart(icon, zoomExt, 8.0f/256.0f);
|
||||
DrawPart(icon, zoomExt, 8.0f / 256.0f);
|
||||
|
||||
if ( m_state & STATE_DEAD ) return;
|
||||
|
||||
|
@ -550,23 +558,23 @@ void CControl::Draw()
|
|||
#else
|
||||
m_engine->SetTexture("text.tga");
|
||||
#endif
|
||||
m_engine->SetState(D3DSTATETTw);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_TTEXTURE_WHITE);
|
||||
}
|
||||
else if ( icon >= 128 )
|
||||
{
|
||||
icon -= 128;
|
||||
m_engine->SetTexture("button3.tga");
|
||||
m_engine->SetState(D3DSTATETTw);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_TTEXTURE_WHITE);
|
||||
}
|
||||
else if ( icon >= 64 )
|
||||
{
|
||||
icon -= 64;
|
||||
m_engine->SetTexture("button2.tga");
|
||||
m_engine->SetState(D3DSTATETTw);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_TTEXTURE_WHITE);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_engine->SetState(D3DSTATETTw);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_TTEXTURE_WHITE);
|
||||
}
|
||||
if ( icon != -1 )
|
||||
{
|
||||
|
@ -579,26 +587,28 @@ void CControl::Draw()
|
|||
|
||||
if ( m_state & STATE_DEAD ) return;
|
||||
|
||||
if ( m_justif < 0 )
|
||||
// if ( m_justif < 0 )
|
||||
if ( m_textAlign == Gfx::TEXT_ALIGN_LEFT )
|
||||
{
|
||||
pos.x = m_pos.x+m_dim.x-m_dim.y*0.5f;
|
||||
pos.y = m_pos.y+m_dim.y*0.5f;
|
||||
pos.y -= m_engine->RetText()->RetHeight(m_fontSize, m_fontType)/2;
|
||||
m_engine->RetText()->DrawText(m_name, pos, m_dim.x, m_justif, m_fontSize, m_fontStretch, m_fontType, 0);
|
||||
pos.x = m_pos.x + m_dim.x - m_dim.y * 0.5f;
|
||||
pos.y = m_pos.y + m_dim.y * 0.5f;
|
||||
pos.y -= m_engine->GetText()->GetHeight(m_fontType, m_fontSize)/2.0f;
|
||||
m_engine->GetText()->DrawText(m_name, m_fontType, m_fontSize, pos, m_dim.x, m_textAlign, 0);
|
||||
}
|
||||
else if ( m_justif > 0 )
|
||||
else if ( m_textAlign == Gfx::TEXT_ALIGN_RIGHT )
|
||||
// else if ( m_justif > 0 )
|
||||
{
|
||||
pos.x = m_pos.x+m_dim.y*0.5f;
|
||||
pos.y = m_pos.y+m_dim.y*0.5f;
|
||||
pos.y -= m_engine->RetText()->RetHeight(m_fontSize, m_fontType)/2.0f;
|
||||
m_engine->RetText()->DrawText(m_name, pos, m_dim.x, m_justif, m_fontSize, m_fontStretch, m_fontType, 0);
|
||||
pos.x = m_pos.x + m_dim.y * 0.5f;
|
||||
pos.y = m_pos.y + m_dim.y * 0.5f;
|
||||
pos.y -= m_engine->GetText()->GetHeight(m_fontType, m_fontSize)/2.0f;
|
||||
m_engine->GetText()->DrawText(m_name, m_fontType, m_fontSize, pos, m_dim.x, m_textAlign, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
pos.x = m_pos.x+m_dim.x*0.5f;
|
||||
pos.y = m_pos.y+m_dim.y*0.5f;
|
||||
pos.y -= m_engine->RetText()->RetHeight(m_fontSize, m_fontType)/2.0f;
|
||||
m_engine->RetText()->DrawText(m_name, pos, m_dim.x, m_justif, m_fontSize, m_fontStretch, m_fontType, 0);
|
||||
pos.x = m_pos.x + m_dim.x * 0.5f;
|
||||
pos.y = m_pos.y + m_dim.y * 0.5f;
|
||||
pos.y -= m_engine->GetText()->GetHeight( m_fontType, m_fontSize)/2.0f;
|
||||
m_engine->GetText()->DrawText(m_name, m_fontType, m_fontSize, pos, m_dim.x, m_textAlign, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -618,26 +628,26 @@ void CControl::DrawPart(int icon, float zoom, float ex)
|
|||
if ( (m_state & STATE_CARD ) &&
|
||||
(m_state & STATE_CHECK) )
|
||||
{
|
||||
p2.y += (2.0f/480.0f); // a bit above
|
||||
p2.y += (2.0f / 480.0f); // a bit above
|
||||
}
|
||||
|
||||
c.x = (p1.x+p2.x)/2.0f;
|
||||
c.y = (p1.y+p2.y)/2.0f; // center
|
||||
c.x = (p1.x + p2.x)/2.0f;
|
||||
c.y = (p1.y + p2.y)/2.0f; // center
|
||||
|
||||
p1.x = (p1.x-c.x)*zoom + c.x;
|
||||
p1.y = (p1.y-c.y)*zoom + c.y;
|
||||
p2.x = (p2.x-c.x)*zoom + c.x;
|
||||
p2.y = (p2.y-c.y)*zoom + c.y;
|
||||
p1.x = (p1.x - c.x) * zoom + c.x;
|
||||
p1.y = (p1.y - c.y) * zoom + c.y;
|
||||
p2.x = (p2.x - c.x) * zoom + c.x;
|
||||
p2.y = (p2.y - c.y) * zoom + c.y;
|
||||
|
||||
p2.x -= p1.x;
|
||||
p2.y -= p1.y;
|
||||
|
||||
uv1.x = (32.0f/256.0f)*(icon%8);
|
||||
uv1.y = (32.0f/256.0f)*(icon/8); // uv texture
|
||||
uv2.x = (32.0f/256.0f)+uv1.x;
|
||||
uv2.y = (32.0f/256.0f)+uv1.y;
|
||||
uv1.x = (32.0f / 256.0f) * (icon%8);
|
||||
uv1.y = (32.0f / 256.0f) * (icon/8); // uv texture
|
||||
uv2.x = (32.0f / 256.0f) + uv1.x;
|
||||
uv2.y = (32.0f / 256.0f) + uv1.y;
|
||||
|
||||
dp = 0.5f/256.0f;
|
||||
dp = 0.5f / 256.0f;
|
||||
uv1.x += dp;
|
||||
uv1.y += dp;
|
||||
uv2.x -= dp;
|
||||
|
@ -652,12 +662,12 @@ void CControl::DrawPart(int icon, float zoom, float ex)
|
|||
void CControl::DrawIcon(Math::Point pos, Math::Point dim, Math::Point uv1, Math::Point uv2,
|
||||
float ex)
|
||||
{
|
||||
LPDIRECT3DDEVICE7 device;
|
||||
D3DVERTEX2 vertex[8]; // 6 triangles
|
||||
Gfx::CDevice* device;
|
||||
Gfx::Vertex vertex[8]; // 6 triangles
|
||||
Math::Point p1, p2, p3, p4;
|
||||
Math::Vector n;
|
||||
|
||||
device = m_engine->RetD3DDevice();
|
||||
device = m_engine->GetDevice();
|
||||
|
||||
p1.x = pos.x;
|
||||
p1.y = pos.y;
|
||||
|
@ -668,48 +678,48 @@ void CControl::DrawIcon(Math::Point pos, Math::Point dim, Math::Point uv1, Math:
|
|||
|
||||
if ( ex == 0.0f ) // one piece?
|
||||
{
|
||||
vertex[0] = D3DVERTEX2(Math::Vector(p1.x, p1.y, 0.0f), n, uv1.x,uv2.y);
|
||||
vertex[1] = D3DVERTEX2(Math::Vector(p1.x, p2.y, 0.0f), n, uv1.x,uv1.y);
|
||||
vertex[2] = D3DVERTEX2(Math::Vector(p2.x, p1.y, 0.0f), n, uv2.x,uv2.y);
|
||||
vertex[3] = D3DVERTEX2(Math::Vector(p2.x, p2.y, 0.0f), n, uv2.x,uv1.y);
|
||||
vertex[0] = Gfx::Vertex(Math::Vector(p1.x, p1.y, 0.0f), n, Math::Point(uv1.x,uv2.y));
|
||||
vertex[1] = Gfx::Vertex(Math::Vector(p1.x, p2.y, 0.0f), n, Math::Point(uv1.x,uv1.y));
|
||||
vertex[2] = Gfx::Vertex(Math::Vector(p2.x, p1.y, 0.0f), n, Math::Point(uv2.x,uv2.y));
|
||||
vertex[3] = Gfx::Vertex(Math::Vector(p2.x, p2.y, 0.0f), n, Math::Point(uv2.x,uv1.y));
|
||||
|
||||
device->DrawPrimitive(D3DPT_TRIANGLESTRIP, D3DFVF_VERTEX2, vertex, 4, NULL);
|
||||
device->DrawPrimitive(Gfx::PRIMITIVE_TRIANGLE_STRIP, vertex, 4);
|
||||
m_engine->AddStatisticTriangle(2);
|
||||
}
|
||||
else // 3 pieces?
|
||||
{
|
||||
if ( dim.x >= dim.y )
|
||||
{
|
||||
p3.x = p1.x + ex*dim.y/(uv2.y-uv1.y);
|
||||
p4.x = p2.x - ex*dim.y/(uv2.y-uv1.y);
|
||||
p3.x = p1.x + ex*dim.y / (uv2.y - uv1.y);
|
||||
p4.x = p2.x - ex*dim.y / (uv2.y - uv1.y);
|
||||
|
||||
vertex[0] = D3DVERTEX2(Math::Vector(p1.x, p1.y, 0.0f), n, uv1.x, uv2.y);
|
||||
vertex[1] = D3DVERTEX2(Math::Vector(p1.x, p2.y, 0.0f), n, uv1.x, uv1.y);
|
||||
vertex[2] = D3DVERTEX2(Math::Vector(p3.x, p1.y, 0.0f), n, uv1.x+ex,uv2.y);
|
||||
vertex[3] = D3DVERTEX2(Math::Vector(p3.x, p2.y, 0.0f), n, uv1.x+ex,uv1.y);
|
||||
vertex[4] = D3DVERTEX2(Math::Vector(p4.x, p1.y, 0.0f), n, uv2.x-ex,uv2.y);
|
||||
vertex[5] = D3DVERTEX2(Math::Vector(p4.x, p2.y, 0.0f), n, uv2.x-ex,uv1.y);
|
||||
vertex[6] = D3DVERTEX2(Math::Vector(p2.x, p1.y, 0.0f), n, uv2.x, uv2.y);
|
||||
vertex[7] = D3DVERTEX2(Math::Vector(p2.x, p2.y, 0.0f), n, uv2.x, uv1.y);
|
||||
vertex[0] = Gfx::Vertex(Math::Vector(p1.x, p1.y, 0.0f), n, Math::Point(uv1.x, uv2.y));
|
||||
vertex[1] = Gfx::Vertex(Math::Vector(p1.x, p2.y, 0.0f), n, Math::Point(uv1.x, uv1.y));
|
||||
vertex[2] = Gfx::Vertex(Math::Vector(p3.x, p1.y, 0.0f), n, Math::Point(uv1.x+ex,uv2.y));
|
||||
vertex[3] = Gfx::Vertex(Math::Vector(p3.x, p2.y, 0.0f), n, Math::Point(uv1.x+ex,uv1.y));
|
||||
vertex[4] = Gfx::Vertex(Math::Vector(p4.x, p1.y, 0.0f), n, Math::Point(uv2.x-ex,uv2.y));
|
||||
vertex[5] = Gfx::Vertex(Math::Vector(p4.x, p2.y, 0.0f), n, Math::Point(uv2.x-ex,uv1.y));
|
||||
vertex[6] = Gfx::Vertex(Math::Vector(p2.x, p1.y, 0.0f), n, Math::Point(uv2.x, uv2.y));
|
||||
vertex[7] = Gfx::Vertex(Math::Vector(p2.x, p2.y, 0.0f), n, Math::Point(uv2.x, uv1.y));
|
||||
|
||||
device->DrawPrimitive(D3DPT_TRIANGLESTRIP, D3DFVF_VERTEX2, vertex, 8, NULL);
|
||||
device->DrawPrimitive(Gfx::PRIMITIVE_TRIANGLE_STRIP, vertex, 8);
|
||||
m_engine->AddStatisticTriangle(6);
|
||||
}
|
||||
else
|
||||
{
|
||||
p3.y = p1.y + ex*dim.x/(uv2.x-uv1.x);
|
||||
p4.y = p2.y - ex*dim.x/(uv2.x-uv1.x);
|
||||
p3.y = p1.y + ex*dim.x / (uv2.x - uv1.x);
|
||||
p4.y = p2.y - ex*dim.x / (uv2.x - uv1.x);
|
||||
|
||||
vertex[0] = D3DVERTEX2(Math::Vector(p2.x, p1.y, 0.0f), n, uv2.x,uv2.y );
|
||||
vertex[1] = D3DVERTEX2(Math::Vector(p1.x, p1.y, 0.0f), n, uv1.x,uv2.y );
|
||||
vertex[2] = D3DVERTEX2(Math::Vector(p2.x, p3.y, 0.0f), n, uv2.x,uv2.y-ex);
|
||||
vertex[3] = D3DVERTEX2(Math::Vector(p1.x, p3.y, 0.0f), n, uv1.x,uv2.y-ex);
|
||||
vertex[4] = D3DVERTEX2(Math::Vector(p2.x, p4.y, 0.0f), n, uv2.x,uv1.y+ex);
|
||||
vertex[5] = D3DVERTEX2(Math::Vector(p1.x, p4.y, 0.0f), n, uv1.x,uv1.y+ex);
|
||||
vertex[6] = D3DVERTEX2(Math::Vector(p2.x, p2.y, 0.0f), n, uv2.x,uv1.y );
|
||||
vertex[7] = D3DVERTEX2(Math::Vector(p1.x, p2.y, 0.0f), n, uv1.x,uv1.y );
|
||||
vertex[0] = Gfx::Vertex(Math::Vector(p2.x, p1.y, 0.0f), n, Math::Point(uv2.x, uv2.y ));
|
||||
vertex[1] = Gfx::Vertex(Math::Vector(p1.x, p1.y, 0.0f), n, Math::Point(uv1.x, uv2.y ));
|
||||
vertex[2] = Gfx::Vertex(Math::Vector(p2.x, p3.y, 0.0f), n, Math::Point(uv2.x, uv2.y - ex));
|
||||
vertex[3] = Gfx::Vertex(Math::Vector(p1.x, p3.y, 0.0f), n, Math::Point(uv1.x, uv2.y - ex));
|
||||
vertex[4] = Gfx::Vertex(Math::Vector(p2.x, p4.y, 0.0f), n, Math::Point(uv2.x, uv1.y + ex));
|
||||
vertex[5] = Gfx::Vertex(Math::Vector(p1.x, p4.y, 0.0f), n, Math::Point(uv1.x, uv1.y + ex));
|
||||
vertex[6] = Gfx::Vertex(Math::Vector(p2.x, p2.y, 0.0f), n, Math::Point(uv2.x, uv1.y ));
|
||||
vertex[7] = Gfx::Vertex(Math::Vector(p1.x, p2.y, 0.0f), n, Math::Point(uv1.x, uv1.y ));
|
||||
|
||||
device->DrawPrimitive(D3DPT_TRIANGLESTRIP, D3DFVF_VERTEX2, vertex, 8, NULL);
|
||||
device->DrawPrimitive(Gfx::PRIMITIVE_TRIANGLE_STRIP, vertex, 8);
|
||||
m_engine->AddStatisticTriangle(6);
|
||||
}
|
||||
}
|
||||
|
@ -720,12 +730,12 @@ void CControl::DrawIcon(Math::Point pos, Math::Point dim, Math::Point uv1, Math:
|
|||
void CControl::DrawIcon(Math::Point pos, Math::Point dim, Math::Point uv1, Math::Point uv2,
|
||||
Math::Point corner, float ex)
|
||||
{
|
||||
LPDIRECT3DDEVICE7 device;
|
||||
D3DVERTEX2 vertex[8]; // 6 triangles
|
||||
Gfx::CDevice* device;
|
||||
Gfx::Vertex vertex[8]; // 6 triangles
|
||||
Math::Point p1, p2, p3, p4;
|
||||
Math::Vector n;
|
||||
|
||||
device = m_engine->RetD3DDevice();
|
||||
device = m_engine->GetDevice();
|
||||
|
||||
p1.x = pos.x;
|
||||
p1.y = pos.y;
|
||||
|
@ -734,8 +744,8 @@ void CControl::DrawIcon(Math::Point pos, Math::Point dim, Math::Point uv1, Math:
|
|||
|
||||
n = Math::Vector(0.0f, 0.0f, -1.0f); // normal
|
||||
|
||||
if ( corner.x > dim.x/2.0f ) corner.x = dim.x/2.0f;
|
||||
if ( corner.y > dim.y/2.0f ) corner.y = dim.y/2.0f;
|
||||
if ( corner.x > dim.x / 2.0f ) corner.x = dim.x / 2.0f;
|
||||
if ( corner.y > dim.y / 2.0f ) corner.y = dim.y / 2.0f;
|
||||
|
||||
p1.x = pos.x;
|
||||
p1.y = pos.y;
|
||||
|
@ -747,39 +757,39 @@ void CControl::DrawIcon(Math::Point pos, Math::Point dim, Math::Point uv1, Math:
|
|||
p4.y = p2.y - corner.y;
|
||||
|
||||
// Bottom horizontal band.
|
||||
vertex[0] = D3DVERTEX2(Math::Vector(p1.x, p1.y, 0.0f), n, uv1.x, uv2.y );
|
||||
vertex[1] = D3DVERTEX2(Math::Vector(p1.x, p3.y, 0.0f), n, uv1.x, uv2.y-ex);
|
||||
vertex[2] = D3DVERTEX2(Math::Vector(p3.x, p1.y, 0.0f), n, uv1.x+ex,uv2.y );
|
||||
vertex[3] = D3DVERTEX2(Math::Vector(p3.x, p3.y, 0.0f), n, uv1.x+ex,uv2.y-ex);
|
||||
vertex[4] = D3DVERTEX2(Math::Vector(p4.x, p1.y, 0.0f), n, uv2.x-ex,uv2.y );
|
||||
vertex[5] = D3DVERTEX2(Math::Vector(p4.x, p3.y, 0.0f), n, uv2.x-ex,uv2.y-ex);
|
||||
vertex[6] = D3DVERTEX2(Math::Vector(p2.x, p1.y, 0.0f), n, uv2.x, uv2.y );
|
||||
vertex[7] = D3DVERTEX2(Math::Vector(p2.x, p3.y, 0.0f), n, uv2.x, uv2.y-ex);
|
||||
device->DrawPrimitive(D3DPT_TRIANGLESTRIP, D3DFVF_VERTEX2, vertex, 8, NULL);
|
||||
vertex[0] = Gfx::Vertex(Math::Vector(p1.x, p1.y, 0.0f), n, Math::Point(uv1.x, uv2.y ));
|
||||
vertex[1] = Gfx::Vertex(Math::Vector(p1.x, p3.y, 0.0f), n, Math::Point(uv1.x, uv2.y - ex));
|
||||
vertex[2] = Gfx::Vertex(Math::Vector(p3.x, p1.y, 0.0f), n, Math::Point(uv1.x + ex, uv2.y ));
|
||||
vertex[3] = Gfx::Vertex(Math::Vector(p3.x, p3.y, 0.0f), n, Math::Point(uv1.x + ex, uv2.y - ex));
|
||||
vertex[4] = Gfx::Vertex(Math::Vector(p4.x, p1.y, 0.0f), n, Math::Point(uv2.x - ex, uv2.y ));
|
||||
vertex[5] = Gfx::Vertex(Math::Vector(p4.x, p3.y, 0.0f), n, Math::Point(uv2.x - ex, uv2.y - ex));
|
||||
vertex[6] = Gfx::Vertex(Math::Vector(p2.x, p1.y, 0.0f), n, Math::Point(uv2.x, uv2.y ));
|
||||
vertex[7] = Gfx::Vertex(Math::Vector(p2.x, p3.y, 0.0f), n, Math::Point(uv2.x, uv2.y - ex));
|
||||
device->DrawPrimitive(Gfx::PRIMITIVE_TRIANGLE_STRIP, vertex, 8);
|
||||
m_engine->AddStatisticTriangle(6);
|
||||
|
||||
// Central horizontal band.
|
||||
vertex[0] = D3DVERTEX2(Math::Vector(p1.x, p3.y, 0.0f), n, uv1.x, uv2.y-ex);
|
||||
vertex[1] = D3DVERTEX2(Math::Vector(p1.x, p4.y, 0.0f), n, uv1.x, uv1.y+ex);
|
||||
vertex[2] = D3DVERTEX2(Math::Vector(p3.x, p3.y, 0.0f), n, uv1.x+ex,uv2.y-ex);
|
||||
vertex[3] = D3DVERTEX2(Math::Vector(p3.x, p4.y, 0.0f), n, uv1.x+ex,uv1.y+ex);
|
||||
vertex[4] = D3DVERTEX2(Math::Vector(p4.x, p3.y, 0.0f), n, uv2.x-ex,uv2.y-ex);
|
||||
vertex[5] = D3DVERTEX2(Math::Vector(p4.x, p4.y, 0.0f), n, uv2.x-ex,uv1.y+ex);
|
||||
vertex[6] = D3DVERTEX2(Math::Vector(p2.x, p3.y, 0.0f), n, uv2.x, uv2.y-ex);
|
||||
vertex[7] = D3DVERTEX2(Math::Vector(p2.x, p4.y, 0.0f), n, uv2.x, uv1.y+ex);
|
||||
device->DrawPrimitive(D3DPT_TRIANGLESTRIP, D3DFVF_VERTEX2, vertex, 8, NULL);
|
||||
vertex[0] = Gfx::Vertex(Math::Vector(p1.x, p3.y, 0.0f), n, Math::Point(uv1.x, uv2.y - ex));
|
||||
vertex[1] = Gfx::Vertex(Math::Vector(p1.x, p4.y, 0.0f), n, Math::Point(uv1.x, uv1.y + ex));
|
||||
vertex[2] = Gfx::Vertex(Math::Vector(p3.x, p3.y, 0.0f), n, Math::Point(uv1.x + ex, uv2.y - ex));
|
||||
vertex[3] = Gfx::Vertex(Math::Vector(p3.x, p4.y, 0.0f), n, Math::Point(uv1.x + ex, uv1.y + ex));
|
||||
vertex[4] = Gfx::Vertex(Math::Vector(p4.x, p3.y, 0.0f), n, Math::Point(uv2.x - ex, uv2.y - ex));
|
||||
vertex[5] = Gfx::Vertex(Math::Vector(p4.x, p4.y, 0.0f), n, Math::Point(uv2.x - ex, uv1.y + ex));
|
||||
vertex[6] = Gfx::Vertex(Math::Vector(p2.x, p3.y, 0.0f), n, Math::Point(uv2.x, uv2.y - ex));
|
||||
vertex[7] = Gfx::Vertex(Math::Vector(p2.x, p4.y, 0.0f), n, Math::Point(uv2.x, uv1.y + ex));
|
||||
device->DrawPrimitive(Gfx::PRIMITIVE_TRIANGLE_STRIP, vertex, 8);
|
||||
m_engine->AddStatisticTriangle(6);
|
||||
|
||||
// Top horizontal band.
|
||||
vertex[0] = D3DVERTEX2(Math::Vector(p1.x, p4.y, 0.0f), n, uv1.x, uv1.y+ex);
|
||||
vertex[1] = D3DVERTEX2(Math::Vector(p1.x, p2.y, 0.0f), n, uv1.x, uv1.y );
|
||||
vertex[2] = D3DVERTEX2(Math::Vector(p3.x, p4.y, 0.0f), n, uv1.x+ex,uv1.y+ex);
|
||||
vertex[3] = D3DVERTEX2(Math::Vector(p3.x, p2.y, 0.0f), n, uv1.x+ex,uv1.y );
|
||||
vertex[4] = D3DVERTEX2(Math::Vector(p4.x, p4.y, 0.0f), n, uv2.x-ex,uv1.y+ex);
|
||||
vertex[5] = D3DVERTEX2(Math::Vector(p4.x, p2.y, 0.0f), n, uv2.x-ex,uv1.y );
|
||||
vertex[6] = D3DVERTEX2(Math::Vector(p2.x, p4.y, 0.0f), n, uv2.x, uv1.y+ex);
|
||||
vertex[7] = D3DVERTEX2(Math::Vector(p2.x, p2.y, 0.0f), n, uv2.x, uv1.y );
|
||||
device->DrawPrimitive(D3DPT_TRIANGLESTRIP, D3DFVF_VERTEX2, vertex, 8, NULL);
|
||||
vertex[0] = Gfx::Vertex(Math::Vector(p1.x, p4.y, 0.0f), n, Math::Point(uv1.x, uv1.y + ex));
|
||||
vertex[1] = Gfx::Vertex(Math::Vector(p1.x, p2.y, 0.0f), n, Math::Point(uv1.x, uv1.y ));
|
||||
vertex[2] = Gfx::Vertex(Math::Vector(p3.x, p4.y, 0.0f), n, Math::Point(uv1.x + ex, uv1.y + ex));
|
||||
vertex[3] = Gfx::Vertex(Math::Vector(p3.x, p2.y, 0.0f), n, Math::Point(uv1.x + ex, uv1.y ));
|
||||
vertex[4] = Gfx::Vertex(Math::Vector(p4.x, p4.y, 0.0f), n, Math::Point(uv2.x - ex, uv1.y + ex));
|
||||
vertex[5] = Gfx::Vertex(Math::Vector(p4.x, p2.y, 0.0f), n, Math::Point(uv2.x - ex, uv1.y ));
|
||||
vertex[6] = Gfx::Vertex(Math::Vector(p2.x, p4.y, 0.0f), n, Math::Point(uv2.x, uv1.y + ex));
|
||||
vertex[7] = Gfx::Vertex(Math::Vector(p2.x, p2.y, 0.0f), n, Math::Point(uv2.x, uv1.y ));
|
||||
device->DrawPrimitive(Gfx::PRIMITIVE_TRIANGLE_STRIP, vertex, 8);
|
||||
m_engine->AddStatisticTriangle(6);
|
||||
}
|
||||
|
||||
|
@ -790,15 +800,15 @@ void CControl::DrawWarning(Math::Point pos, Math::Point dim)
|
|||
Math::Point uv1, uv2;
|
||||
float dp;
|
||||
|
||||
dp = 0.5f/256.0f;
|
||||
dp = 0.5f / 256.0f;
|
||||
|
||||
m_engine->SetTexture("button2.tga");
|
||||
m_engine->SetState(D3DSTATENORMAL);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL);
|
||||
|
||||
uv1.x = 64.0f/256.0f;
|
||||
uv1.y = 208.0f/256.0f;
|
||||
uv2.x = 160.0f/256.0f;
|
||||
uv2.y = 224.0f/256.0f;
|
||||
uv1.x = 64.0f / 256.0f;
|
||||
uv1.y = 208.0f / 256.0f;
|
||||
uv2.x = 160.0f / 256.0f;
|
||||
uv2.y = 224.0f / 256.0f;
|
||||
|
||||
uv1.x += dp;
|
||||
uv1.y += dp;
|
||||
|
@ -837,27 +847,27 @@ void CControl::DrawShadow(Math::Point pos, Math::Point dim, float deep)
|
|||
dp = 0.5f/256.0f;
|
||||
|
||||
m_engine->SetTexture("button2.tga");
|
||||
m_engine->SetState(D3DSTATETTw);
|
||||
m_engine->SetState( Gfx::ENG_RSTATE_TTEXTURE_WHITE);
|
||||
|
||||
pos.x += deep*0.010f*0.75f;
|
||||
pos.y -= deep*0.015f;
|
||||
dim.x += deep*0.005f*0.75f;
|
||||
dim.y += deep*0.005f;
|
||||
pos.x += deep * 0.010f * 0.75f;
|
||||
pos.y -= deep * 0.015f;
|
||||
dim.x += deep * 0.005f * 0.75f;
|
||||
dim.y += deep * 0.005f;
|
||||
|
||||
uv1.x = 192.0f/256.0f;
|
||||
uv1.y = 32.0f/256.0f;
|
||||
uv2.x = 224.0f/256.0f;
|
||||
uv2.y = 64.0f/256.0f;
|
||||
uv1.x = 192.0f / 256.0f;
|
||||
uv1.y = 32.0f / 256.0f;
|
||||
uv2.x = 224.0f / 256.0f;
|
||||
uv2.y = 64.0f / 256.0f;
|
||||
|
||||
uv1.x += dp;
|
||||
uv1.y += dp;
|
||||
uv2.x -= dp;
|
||||
uv2.y -= dp;
|
||||
|
||||
corner.x = 10.0f/640.0f;
|
||||
corner.y = 10.0f/480.0f;
|
||||
corner.x = 10.0f / 640.0f;
|
||||
corner.y = 10.0f / 480.0f;
|
||||
|
||||
DrawIcon(pos, dim, uv1, uv2, corner, 6.0f/256.0f);
|
||||
DrawIcon(pos, dim, uv1, uv2, corner, 6.0f / 256.0f);
|
||||
}
|
||||
|
||||
|
||||
|
@ -865,10 +875,10 @@ void CControl::DrawShadow(Math::Point pos, Math::Point dim, float deep)
|
|||
|
||||
bool CControl::Detect(Math::Point pos)
|
||||
{
|
||||
return ( pos.x >= m_pos.x &&
|
||||
pos.x <= m_pos.x+m_dim.x &&
|
||||
pos.y >= m_pos.y &&
|
||||
pos.y <= m_pos.y+m_dim.y );
|
||||
return ( pos.x >= m_pos.x &&
|
||||
pos.x <= m_pos.x + m_dim.x &&
|
||||
pos.y >= m_pos.y &&
|
||||
pos.y <= m_pos.y + m_dim.y );
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
126
src/ui/control.h
126
src/ui/control.h
|
@ -19,19 +19,24 @@
|
|||
#pragma once
|
||||
|
||||
|
||||
#include "old/text.h"
|
||||
#include "common/struct.h"
|
||||
//#include "old/text.h"
|
||||
#include "graphics/engine/text.h"
|
||||
//#include "common/struct.h"
|
||||
#include "common/event.h"
|
||||
|
||||
namespace Gfx {
|
||||
class CEngine;
|
||||
class CParticle;
|
||||
};
|
||||
|
||||
class CInstanceManager;
|
||||
class CEvent;
|
||||
class CD3DEngine;
|
||||
//class Gfx::CEngine;
|
||||
class CRobotMain;
|
||||
class CParticule;
|
||||
class CSound;
|
||||
|
||||
//class Gfx::CParticle;
|
||||
class CSoundInterface;
|
||||
|
||||
namespace Ui {
|
||||
enum ControlState
|
||||
{
|
||||
STATE_ENABLE = (1<<0), // active
|
||||
|
@ -58,42 +63,43 @@ enum ControlState
|
|||
class CControl
|
||||
{
|
||||
public:
|
||||
CControl(CInstanceManager* iMan);
|
||||
// CControl(CInstanceManager* iMan);
|
||||
CControl ();
|
||||
virtual ~CControl();
|
||||
|
||||
virtual bool Create(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
virtual bool Create(Math::Point pos, Math::Point dim, int icon, EventType eventType);
|
||||
|
||||
virtual bool EventProcess(const Event &event);
|
||||
virtual bool EventProcess(const Event &event);
|
||||
|
||||
virtual void SetPos(Math::Point pos);
|
||||
virtual Math::Point RetPos();
|
||||
virtual void SetDim(Math::Point dim);
|
||||
virtual Math::Point RetDim();
|
||||
virtual bool SetState(int state, bool bState);
|
||||
virtual bool SetState(int state);
|
||||
virtual bool ClearState(int state);
|
||||
virtual bool TestState(int state);
|
||||
virtual int RetState();
|
||||
virtual void SetIcon(int icon);
|
||||
virtual int RetIcon();
|
||||
virtual void SetName(char* name, bool bTooltip=true);
|
||||
virtual char* RetName();
|
||||
virtual void SetJustif(int mode);
|
||||
virtual int RetJustif();
|
||||
virtual void SetFontSize(float size);
|
||||
virtual float RetFontSize();
|
||||
virtual void SetFontStretch(float stretch);
|
||||
virtual float RetFontStretch();
|
||||
virtual void SetFontType(FontType font);
|
||||
virtual FontType RetFontType();
|
||||
virtual bool SetTooltip(char* name);
|
||||
virtual bool GetTooltip(Math::Point pos, char* name);
|
||||
virtual void SetFocus(bool bFocus);
|
||||
virtual bool RetFocus();
|
||||
virtual void SetPos(Math::Point pos);
|
||||
virtual Math::Point GetPos();
|
||||
virtual void SetDim(Math::Point dim);
|
||||
virtual Math::Point GetDim();
|
||||
virtual bool SetState(int state, bool bState);
|
||||
virtual bool SetState(int state);
|
||||
virtual bool ClearState(int state);
|
||||
virtual bool TestState(int state);
|
||||
virtual int GetState();
|
||||
virtual void SetIcon(int icon);
|
||||
virtual int GetIcon();
|
||||
virtual void SetName(char* name, bool bTooltip=true);
|
||||
virtual char* GetName();
|
||||
virtual void SetTextAlign(Gfx::TextAlign mode);
|
||||
virtual int GetTextAlign();
|
||||
virtual void SetFontSize(float size);
|
||||
virtual float GetFontSize();
|
||||
virtual void SetFontStretch(float stretch);
|
||||
virtual float GetFontStretch();
|
||||
virtual void SetFontType(Gfx::FontType font);
|
||||
virtual Gfx::FontType GetFontType();
|
||||
virtual bool SetTooltip(const char* name);
|
||||
virtual bool GetTooltip(Math::Point pos, char* name);
|
||||
virtual void SetFocus(bool bFocus);
|
||||
virtual bool GetFocus();
|
||||
|
||||
virtual EventMsg RetEventMsg();
|
||||
virtual EventType GetEventType();
|
||||
|
||||
virtual void Draw();
|
||||
virtual void Draw();
|
||||
|
||||
protected:
|
||||
void GlintDelete();
|
||||
|
@ -108,31 +114,33 @@ protected:
|
|||
|
||||
protected:
|
||||
CInstanceManager* m_iMan;
|
||||
CD3DEngine* m_engine;
|
||||
CEvent* m_event;
|
||||
CRobotMain* m_main;
|
||||
CParticule* m_particule;
|
||||
CSound* m_sound;
|
||||
Gfx::CEngine* m_engine;
|
||||
CEventQueue* m_event;
|
||||
CRobotMain* m_main;
|
||||
Gfx::CParticle* m_particle;
|
||||
CSoundInterface* m_sound;
|
||||
|
||||
Math::Point m_pos; // corner upper / left
|
||||
Math::Point m_dim; // dimensions
|
||||
int m_icon;
|
||||
EventMsg m_eventMsg; // message to send when clicking
|
||||
int m_state; // states (STATE_ *)
|
||||
float m_fontSize; // size of the button name
|
||||
float m_fontStretch; // stretch of the font
|
||||
FontType m_fontType; // type of font
|
||||
int m_justif; // type of justification (-1,0,1)
|
||||
char m_name[100]; // name of the button
|
||||
char m_tooltip[100]; // name of tooltip
|
||||
bool m_bFocus;
|
||||
bool m_bCapture;
|
||||
Math::Point m_pos; // corner upper / left
|
||||
Math::Point m_dim; // dimensions
|
||||
int m_icon;
|
||||
EventType m_eventType; // message to send when clicking
|
||||
int m_state; // states (STATE_ *)
|
||||
float m_fontSize; // size of the button name
|
||||
float m_fontStretch; // stretch of the font
|
||||
Gfx::FontType m_fontType; // type of font
|
||||
Gfx::TextAlign m_textAlign; //type of alignment //comes in the place of m_justif
|
||||
// int m_justif; // type of justification (-1,0,1)
|
||||
char m_name[100]; // name of the button
|
||||
char m_tooltip[100]; // name of tooltip
|
||||
bool m_bFocus;
|
||||
bool m_bCapture;
|
||||
|
||||
bool m_bGlint;
|
||||
Math::Point m_glintCorner1;
|
||||
Math::Point m_glintCorner2;
|
||||
float m_glintProgress;
|
||||
Math::Point m_glintMouse;
|
||||
bool m_bGlint;
|
||||
Math::Point m_glintCorner1;
|
||||
Math::Point m_glintCorner2;
|
||||
float m_glintProgress;
|
||||
Math::Point m_glintMouse;
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
// * This file is part of the COLOBOT source code
|
||||
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
|
||||
// * Copyright (C) 2012, Polish Portal of Colobot (PPC)
|
||||
// *
|
||||
// * This program is free software: you can redistribute it and/or modify
|
||||
// * it under the terms of the GNU General Public License as published by
|
||||
|
@ -17,21 +18,22 @@
|
|||
// displayinfo.cpp
|
||||
|
||||
|
||||
#include <windows.h>
|
||||
#include <stdio.h>
|
||||
#include <d3d.h>
|
||||
//#include <windows.h>
|
||||
//#include <stdio.h>
|
||||
//#include <d3d.h>
|
||||
|
||||
#include "common/struct.h"
|
||||
#include "old/d3dengine.h"
|
||||
#include "old/d3dmath.h"
|
||||
//#include "common/struct.h"
|
||||
//#include "old/d3dengine.h"
|
||||
//#include "old/d3dmath.h"
|
||||
#include "graphics/engine/engine.h"
|
||||
#include "common/language.h"
|
||||
#include "common/event.h"
|
||||
#include "common/misc.h"
|
||||
#include "common/iman.h"
|
||||
#include "common/restext.h"
|
||||
#include "old/math3d.h"
|
||||
//#include "old/math3d.h"
|
||||
#include "object/robotmain.h"
|
||||
#include "old/camera.h"
|
||||
//#include "old/camera.h"
|
||||
#include "object/object.h"
|
||||
#include "object/motion/motion.h"
|
||||
#include "object/motion/motiontoto.h"
|
||||
|
@ -41,29 +43,31 @@
|
|||
#include "ui/edit.h"
|
||||
#include "ui/group.h"
|
||||
#include "ui/window.h"
|
||||
#include "old/particule.h"
|
||||
#include "old/light.h"
|
||||
#include "old/text.h"
|
||||
//#include "old/particule.h"
|
||||
#include "graphics/engine/particle.h"
|
||||
//#include "old/light.h"
|
||||
//#include "old/text.h"
|
||||
#include "script/cbottoken.h"
|
||||
#include "ui/displayinfo.h"
|
||||
|
||||
|
||||
|
||||
|
||||
namespace Ui {
|
||||
// Object's constructor.
|
||||
|
||||
CDisplayInfo::CDisplayInfo(CInstanceManager* iMan)
|
||||
//CDisplayInfo::CDisplayInfo(CInstanceManager* iMan)
|
||||
CDisplayInfo::CDisplayInfo()
|
||||
{
|
||||
m_iMan = iMan;
|
||||
m_iMan = CInstanceManager::GetInstancePointer();
|
||||
m_iMan->AddInstance(CLASS_STUDIO, this);
|
||||
|
||||
m_engine = (CD3DEngine*)m_iMan->SearchInstance(CLASS_ENGINE);
|
||||
m_event = (CEvent*)m_iMan->SearchInstance(CLASS_EVENT);
|
||||
m_interface = (CInterface*)m_iMan->SearchInstance(CLASS_INTERFACE);
|
||||
m_main = (CRobotMain*)m_iMan->SearchInstance(CLASS_MAIN);
|
||||
m_camera = (CCamera*)m_iMan->SearchInstance(CLASS_CAMERA);
|
||||
m_particule = (CParticule*)m_iMan->SearchInstance(CLASS_PARTICULE);
|
||||
m_light = (CLight*)m_iMan->SearchInstance(CLASS_LIGHT);
|
||||
m_engine = static_cast <Gfx::CEngine*> (m_iMan->SearchInstance(CLASS_ENGINE));
|
||||
m_event = static_cast <CEventQueue*> (m_iMan->SearchInstance(CLASS_EVENT));
|
||||
m_interface = static_cast <CInterface*> (m_iMan->SearchInstance(CLASS_INTERFACE));
|
||||
m_main = static_cast <CRobotMain*> (m_iMan->SearchInstance(CLASS_MAIN));
|
||||
m_camera = static_cast <Gfx::CCamera*> (m_iMan->SearchInstance(CLASS_CAMERA));
|
||||
m_particle = static_cast <Gfx::CParticle*> (m_iMan->SearchInstance(CLASS_PARTICULE));
|
||||
m_light = static_cast <Gfx::CLight*> (m_iMan->SearchInstance(CLASS_LIGHT));
|
||||
|
||||
m_bInfoMaximized = true;
|
||||
m_bInfoMinimized = false;
|
||||
|
@ -87,22 +91,22 @@ CDisplayInfo::~CDisplayInfo()
|
|||
|
||||
bool CDisplayInfo::EventProcess(const Event &event)
|
||||
{
|
||||
CWindow* pw;
|
||||
CEdit* edit;
|
||||
CSlider* slider;
|
||||
Ui::CWindow* pw;
|
||||
Ui::CEdit* edit;
|
||||
Ui::CSlider* slider;
|
||||
CMotionToto* toto;
|
||||
|
||||
if ( event.event == EVENT_FRAME )
|
||||
if ( event.type == EVENT_FRAME )
|
||||
{
|
||||
EventFrame(event);
|
||||
HyperUpdate();
|
||||
}
|
||||
|
||||
if ( event.event == EVENT_MOUSEMOVE )
|
||||
if ( event.type == EVENT_MOUSE_MOVE )
|
||||
{
|
||||
if ( m_toto != 0 )
|
||||
{
|
||||
toto = (CMotionToto*)m_toto->RetMotion();
|
||||
toto = static_cast<CMotionToto*>(m_toto->GetMotion());
|
||||
if ( toto != 0 )
|
||||
{
|
||||
toto->SetMousePos(event.pos);
|
||||
|
@ -110,21 +114,21 @@ bool CDisplayInfo::EventProcess(const Event &event)
|
|||
}
|
||||
}
|
||||
|
||||
pw = (CWindow*)m_interface->SearchControl(EVENT_WINDOW4);
|
||||
pw = static_cast<Ui::CWindow*>(m_interface->SearchControl(EVENT_WINDOW4));
|
||||
if ( pw != 0 )
|
||||
{
|
||||
if ( event.event == pw->RetEventMsgClose() )
|
||||
if ( event.type == pw->GetEventTypeClose() )
|
||||
{
|
||||
Event newEvent = event;
|
||||
newEvent.event = EVENT_OBJECT_INFOOK;
|
||||
newEvent.type = EVENT_OBJECT_INFOOK;
|
||||
m_event->AddEvent(newEvent);
|
||||
}
|
||||
|
||||
if ( event.event == EVENT_SATCOM_HUSTON )
|
||||
if ( event.type == EVENT_SATCOM_HUSTON )
|
||||
{
|
||||
ChangeIndexButton(SATCOM_HUSTON);
|
||||
}
|
||||
if ( event.event == EVENT_SATCOM_SAT )
|
||||
if ( event.type == EVENT_SATCOM_SAT )
|
||||
{
|
||||
ChangeIndexButton(SATCOM_SAT);
|
||||
}
|
||||
|
@ -132,90 +136,90 @@ bool CDisplayInfo::EventProcess(const Event &event)
|
|||
//? {
|
||||
//? ChangeIndexButton(SATCOM_OBJECT);
|
||||
//? }
|
||||
if ( event.event == EVENT_SATCOM_LOADING )
|
||||
if ( event.type == EVENT_SATCOM_LOADING )
|
||||
{
|
||||
ChangeIndexButton(SATCOM_LOADING);
|
||||
}
|
||||
if ( event.event == EVENT_SATCOM_PROG )
|
||||
if ( event.type == EVENT_SATCOM_PROG )
|
||||
{
|
||||
ChangeIndexButton(SATCOM_PROG);
|
||||
}
|
||||
if ( event.event == EVENT_SATCOM_SOLUCE )
|
||||
if ( event.type == EVENT_SATCOM_SOLUCE )
|
||||
{
|
||||
ChangeIndexButton(SATCOM_SOLUCE);
|
||||
}
|
||||
|
||||
if ( event.event == EVENT_HYPER_HOME ||
|
||||
event.event == EVENT_HYPER_PREV ||
|
||||
event.event == EVENT_HYPER_NEXT )
|
||||
if ( event.type == EVENT_HYPER_HOME ||
|
||||
event.type == EVENT_HYPER_PREV ||
|
||||
event.type == EVENT_HYPER_NEXT )
|
||||
{
|
||||
edit = (CEdit*)pw->SearchControl(EVENT_EDIT1);
|
||||
edit = static_cast<Ui::CEdit*>(pw->SearchControl(EVENT_EDIT1));
|
||||
if ( edit != 0 )
|
||||
{
|
||||
edit->HyperGo(event.event);
|
||||
edit->HyperGo(event.type);
|
||||
HyperUpdate();
|
||||
}
|
||||
}
|
||||
|
||||
if ( event.event == EVENT_HYPER_SIZE1 ) // size 1?
|
||||
if ( event.type == EVENT_HYPER_SIZE1 ) // size 1?
|
||||
{
|
||||
m_main->SetFontSize(9.0f);
|
||||
slider = (CSlider*)pw->SearchControl(EVENT_STUDIO_SIZE);
|
||||
if ( slider != 0 ) slider->SetVisibleValue((m_main->RetFontSize()-9.0f)/6.0f);
|
||||
slider = static_cast<Ui::CSlider*>(pw->SearchControl(EVENT_STUDIO_SIZE));
|
||||
if ( slider != 0 ) slider->SetVisibleValue((m_main->GetFontSize()-9.0f)/6.0f);
|
||||
ViewDisplayInfo();
|
||||
}
|
||||
if ( event.event == EVENT_HYPER_SIZE2 ) // size 2?
|
||||
if ( event.type == EVENT_HYPER_SIZE2 ) // size 2?
|
||||
{
|
||||
m_main->SetFontSize(10.0f);
|
||||
slider = (CSlider*)pw->SearchControl(EVENT_STUDIO_SIZE);
|
||||
if ( slider != 0 ) slider->SetVisibleValue((m_main->RetFontSize()-9.0f)/6.0f);
|
||||
slider = static_cast<Ui::CSlider*>(pw->SearchControl(EVENT_STUDIO_SIZE));
|
||||
if ( slider != 0 ) slider->SetVisibleValue((m_main->GetFontSize()-9.0f)/6.0f);
|
||||
ViewDisplayInfo();
|
||||
}
|
||||
if ( event.event == EVENT_HYPER_SIZE3 ) // size 3?
|
||||
if ( event.type == EVENT_HYPER_SIZE3 ) // size 3?
|
||||
{
|
||||
m_main->SetFontSize(12.0f);
|
||||
slider = (CSlider*)pw->SearchControl(EVENT_STUDIO_SIZE);
|
||||
if ( slider != 0 ) slider->SetVisibleValue((m_main->RetFontSize()-9.0f)/6.0f);
|
||||
slider = static_cast<Ui::CSlider*>(pw->SearchControl(EVENT_STUDIO_SIZE));
|
||||
if ( slider != 0 ) slider->SetVisibleValue((m_main->GetFontSize()-9.0f)/6.0f);
|
||||
ViewDisplayInfo();
|
||||
}
|
||||
if ( event.event == EVENT_HYPER_SIZE4 ) // size 4?
|
||||
if ( event.type == EVENT_HYPER_SIZE4 ) // size 4?
|
||||
{
|
||||
m_main->SetFontSize(15.0f);
|
||||
slider = (CSlider*)pw->SearchControl(EVENT_STUDIO_SIZE);
|
||||
if ( slider != 0 ) slider->SetVisibleValue((m_main->RetFontSize()-9.0f)/6.0f);
|
||||
slider = static_cast<Ui::CSlider*>(pw->SearchControl(EVENT_STUDIO_SIZE));
|
||||
if ( slider != 0 ) slider->SetVisibleValue((m_main->GetFontSize()-9.0f)/6.0f);
|
||||
ViewDisplayInfo();
|
||||
}
|
||||
|
||||
if ( event.event == EVENT_STUDIO_SIZE ) // size?
|
||||
if ( event.type == EVENT_STUDIO_SIZE ) // size?
|
||||
{
|
||||
slider = (CSlider*)pw->SearchControl(EVENT_STUDIO_SIZE);
|
||||
slider = static_cast<Ui::CSlider*>(pw->SearchControl(EVENT_STUDIO_SIZE));
|
||||
if ( slider == 0 ) return false;
|
||||
m_main->SetFontSize(9.0f+slider->RetVisibleValue()*6.0f);
|
||||
m_main->SetFontSize(9.0f+slider->GetVisibleValue()*6.0f);
|
||||
ViewDisplayInfo();
|
||||
}
|
||||
|
||||
if ( event.event == EVENT_HYPER_COPY ) // copy ?
|
||||
if ( event.type == EVENT_HYPER_COPY ) // copy ?
|
||||
{
|
||||
edit = (CEdit*)pw->SearchControl(EVENT_EDIT1);
|
||||
edit = static_cast<Ui::CEdit*>(pw->SearchControl(EVENT_EDIT1));
|
||||
if ( edit != 0 )
|
||||
{
|
||||
edit->Copy();
|
||||
}
|
||||
}
|
||||
|
||||
if ( event.event == EVENT_LBUTTONDOWN ||
|
||||
event.event == EVENT_LBUTTONUP )
|
||||
if ( ( event.type == EVENT_MOUSE_BUTTON_DOWN && event.mouseButton.button == 1 )||
|
||||
( event.type == EVENT_MOUSE_BUTTON_UP && event.mouseButton.button == 1 ))
|
||||
{
|
||||
UpdateCopyButton();
|
||||
}
|
||||
|
||||
if ( event.event == EVENT_WINDOW4 ) // window moved?
|
||||
if ( event.type == EVENT_WINDOW4 ) // window moved?
|
||||
{
|
||||
m_infoNormalPos = m_infoActualPos = m_infoFinalPos = pw->RetPos();
|
||||
m_infoNormalDim = m_infoActualDim = m_infoFinalDim = pw->RetDim();
|
||||
m_infoNormalPos = m_infoActualPos = m_infoFinalPos = pw->GetPos();
|
||||
m_infoNormalDim = m_infoActualDim = m_infoFinalDim = pw->GetDim();
|
||||
AdjustDisplayInfo(m_infoActualPos, m_infoActualDim);
|
||||
}
|
||||
if ( event.event == pw->RetEventMsgReduce() )
|
||||
if ( event.type == pw->GetEventTypeReduce() )
|
||||
{
|
||||
if ( m_bInfoMinimized )
|
||||
{
|
||||
|
@ -241,7 +245,7 @@ bool CDisplayInfo::EventProcess(const Event &event)
|
|||
pw->SetMinimized(m_bInfoMinimized);
|
||||
}
|
||||
}
|
||||
if ( event.event == pw->RetEventMsgFull() )
|
||||
if ( event.type == pw->GetEventTypeFull() )
|
||||
{
|
||||
if ( m_bInfoMaximized )
|
||||
{
|
||||
|
@ -260,7 +264,7 @@ bool CDisplayInfo::EventProcess(const Event &event)
|
|||
m_bInfoMaximized = true;
|
||||
}
|
||||
//? m_main->SetEditFull(m_bInfoMaximized);
|
||||
pw = (CWindow*)m_interface->SearchControl(EVENT_WINDOW4);
|
||||
pw = static_cast<Ui::CWindow*>(m_interface->SearchControl(EVENT_WINDOW4));
|
||||
if ( pw != 0 )
|
||||
{
|
||||
pw->SetMaximized(m_bInfoMaximized);
|
||||
|
@ -299,31 +303,31 @@ bool CDisplayInfo::EventFrame(const Event &event)
|
|||
|
||||
void CDisplayInfo::HyperUpdate()
|
||||
{
|
||||
CWindow* pw;
|
||||
CEdit* edit;
|
||||
CButton* button;
|
||||
bool bEnable;
|
||||
Ui::CWindow* pw;
|
||||
Ui::CEdit* edit;
|
||||
Ui::CButton* button;
|
||||
bool bEnable;
|
||||
|
||||
pw = (CWindow*)m_interface->SearchControl(EVENT_WINDOW4);
|
||||
pw = static_cast<Ui::CWindow*>(m_interface->SearchControl(EVENT_WINDOW4));
|
||||
if ( pw == 0 ) return;
|
||||
edit = (CEdit*)pw->SearchControl(EVENT_EDIT1);
|
||||
edit = static_cast<Ui::CEdit*>(pw->SearchControl(EVENT_EDIT1));
|
||||
if ( edit == 0 ) return;
|
||||
|
||||
button = (CButton*)pw->SearchControl(EVENT_HYPER_HOME);
|
||||
button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_HYPER_HOME));
|
||||
if ( button != 0 )
|
||||
{
|
||||
bEnable = edit->HyperTest(EVENT_HYPER_HOME);
|
||||
button->SetState(STATE_ENABLE, bEnable);
|
||||
}
|
||||
|
||||
button = (CButton*)pw->SearchControl(EVENT_HYPER_PREV);
|
||||
button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_HYPER_PREV));
|
||||
if ( button != 0 )
|
||||
{
|
||||
bEnable = edit->HyperTest(EVENT_HYPER_PREV);
|
||||
button->SetState(STATE_ENABLE, bEnable);
|
||||
}
|
||||
|
||||
button = (CButton*)pw->SearchControl(EVENT_HYPER_NEXT);
|
||||
button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_HYPER_NEXT));
|
||||
if ( button != 0 )
|
||||
{
|
||||
bEnable = edit->HyperTest(EVENT_HYPER_NEXT);
|
||||
|
@ -336,12 +340,12 @@ void CDisplayInfo::HyperUpdate()
|
|||
|
||||
void CDisplayInfo::StartDisplayInfo(char *filename, int index, bool bSoluce)
|
||||
{
|
||||
D3DLIGHT7 light;
|
||||
Gfx::CLight light;
|
||||
Math::Point pos, dim;
|
||||
CWindow* pw;
|
||||
CEdit* edit;
|
||||
CButton* button;
|
||||
CSlider* slider;
|
||||
Ui::CWindow* pw;
|
||||
Ui::CEdit* edit;
|
||||
Ui::CButton* button;
|
||||
Ui::CSlider* slider;
|
||||
CMotionToto* toto;
|
||||
|
||||
m_index = index;
|
||||
|
@ -349,10 +353,10 @@ void CDisplayInfo::StartDisplayInfo(char *filename, int index, bool bSoluce)
|
|||
|
||||
//? CreateObjectsFile();
|
||||
|
||||
m_bEditLock = m_main->RetEditLock();
|
||||
m_bEditLock = m_main->GetEditLock();
|
||||
if ( m_bEditLock ) // edition running program?
|
||||
{
|
||||
pw = (CWindow*)m_interface->SearchControl(EVENT_WINDOW3);
|
||||
pw = static_cast<Ui::CWindow*>(m_interface->SearchControl(EVENT_WINDOW3));
|
||||
if ( pw != 0 )
|
||||
{
|
||||
pw->ClearState(STATE_ENABLE); // CStudio inactive
|
||||
|
@ -361,10 +365,10 @@ void CDisplayInfo::StartDisplayInfo(char *filename, int index, bool bSoluce)
|
|||
|
||||
m_main->SetEditLock(true, false);
|
||||
m_main->SetEditFull(false);
|
||||
m_bInitPause = m_engine->RetPause();
|
||||
m_bInitPause = m_engine->GetPause();
|
||||
m_engine->SetPause(true);
|
||||
m_infoCamera = m_camera->RetType();
|
||||
m_camera->SetType(CAMERA_INFO);
|
||||
m_infoCamera = m_camera->GetType();
|
||||
m_camera->SetType(Gfx::CAM_TYPE_INFO);
|
||||
|
||||
pos = m_infoActualPos = m_infoFinalPos;
|
||||
dim = m_infoActualDim = m_infoFinalDim;
|
||||
|
@ -383,7 +387,7 @@ void CDisplayInfo::StartDisplayInfo(char *filename, int index, bool bSoluce)
|
|||
edit->SetState(STATE_SHADOW);
|
||||
edit->SetMultiFont(true);
|
||||
edit->SetMaxChar(10000);
|
||||
edit->SetFontType(FONT_COLOBOT);
|
||||
edit->SetFontType(Gfx::FONT_COLOBOT);
|
||||
edit->SetSoluceMode(bSoluce);
|
||||
edit->ReadText(filename);
|
||||
edit->HyperHome(filename);
|
||||
|
@ -447,20 +451,20 @@ void CDisplayInfo::StartDisplayInfo(char *filename, int index, bool bSoluce)
|
|||
|
||||
m_engine->SetDrawWorld(false); // doesn't draw anything in the interface
|
||||
m_engine->SetDrawFront(true); // toto draws on the interface
|
||||
m_particule->SetFrameUpdate(SH_WORLD, false); // particles break into world
|
||||
m_particle->SetFrameUpdate(Gfx::SH_WORLD, false); // particles break into world
|
||||
|
||||
m_toto = SearchToto();
|
||||
if ( m_toto != 0 )
|
||||
{
|
||||
m_toto->SetDrawFront(true);
|
||||
|
||||
toto = (CMotionToto*)m_toto->RetMotion();
|
||||
toto = static_cast<CMotionToto*>(m_toto->GetMotion());
|
||||
if ( toto != 0 )
|
||||
{
|
||||
toto->StartDisplayInfo();
|
||||
}
|
||||
}
|
||||
|
||||
// TODO
|
||||
ZeroMemory(&light, sizeof(light));
|
||||
light.dltType = D3DLIGHT_DIRECTIONAL;
|
||||
light.dcvDiffuse.r = 1.0f;
|
||||
|
@ -483,31 +487,31 @@ void CDisplayInfo::AdjustDisplayInfo(Math::Point wpos, Math::Point wdim)
|
|||
CGroup* group;
|
||||
Math::Point pos, dim;
|
||||
|
||||
wpos.x = 50.0f/640.0f;
|
||||
wpos.y = 30.0f/480.0f;
|
||||
wdim.x = 540.0f/640.0f;
|
||||
wdim.y = 420.0f/480.0f;
|
||||
wpos.x = 50.0f / 640.0f;
|
||||
wpos.y = 30.0f / 480.0f;
|
||||
wdim.x = 540.0f / 640.0f;
|
||||
wdim.y = 420.0f / 480.0f;
|
||||
|
||||
pw = (CWindow*)m_interface->SearchControl(EVENT_WINDOW4);
|
||||
pw = static_cast<Ui::CWindow*>(m_interface->SearchControl(EVENT_WINDOW4));
|
||||
if ( pw != 0 )
|
||||
{
|
||||
pw->SetPos(wpos);
|
||||
pw->SetDim(wdim);
|
||||
wdim = pw->RetDim();
|
||||
wdim = pw->GetDim();
|
||||
}
|
||||
|
||||
pos.x = (50.0f+10.0f)/640.0f;
|
||||
pos.y = (30.0f+10.0f+24.0f+10.0f+324.0f-48.0f)/480.0f;
|
||||
dim.x = 48.0f/640.0f;
|
||||
dim.y = 48.0f/480.0f;
|
||||
button = (CButton*)pw->SearchControl(EVENT_SATCOM_HUSTON);
|
||||
pos.x = (50.0f + 10.0f) / 640.0f;
|
||||
pos.y = (30.0f + 10.0f + 24.0f + 10.0f + 324.0f - 48.0f) / 480.0f;
|
||||
dim.x = 48.0f / 640.0f;
|
||||
dim.y = 48.0f / 480.0f;
|
||||
button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_SATCOM_HUSTON));
|
||||
if ( button != 0 )
|
||||
{
|
||||
button->SetPos(pos);
|
||||
button->SetDim(dim);
|
||||
}
|
||||
pos.y -= (48.0f+4.0f)/480.0f;
|
||||
button = (CButton*)pw->SearchControl(EVENT_SATCOM_SAT);
|
||||
pos.y -= (48.0f + 4.0f) / 480.0f;
|
||||
button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_SATCOM_SAT));
|
||||
if ( button != 0 )
|
||||
{
|
||||
button->SetPos(pos);
|
||||
|
@ -520,136 +524,136 @@ void CDisplayInfo::AdjustDisplayInfo(Math::Point wpos, Math::Point wdim)
|
|||
//? button->SetPos(pos);
|
||||
//? button->SetDim(dim);
|
||||
//? }
|
||||
pos.y -= (48.0f+4.0f)/480.0f;
|
||||
button = (CButton*)pw->SearchControl(EVENT_SATCOM_LOADING);
|
||||
pos.y -= (48.0f + 4.0f) / 480.0f;
|
||||
button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_SATCOM_LOADING));
|
||||
if ( button != 0 )
|
||||
{
|
||||
button->SetPos(pos);
|
||||
button->SetDim(dim);
|
||||
}
|
||||
pos.y -= (48.0f+4.0f)/480.0f;
|
||||
button = (CButton*)pw->SearchControl(EVENT_SATCOM_PROG);
|
||||
pos.y -= (48.0f + 4.0f) / 480.0f;
|
||||
button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_SATCOM_PROG));
|
||||
if ( button != 0 )
|
||||
{
|
||||
button->SetPos(pos);
|
||||
button->SetDim(dim);
|
||||
}
|
||||
pos.y -= (48.0f+4.0f)/480.0f;
|
||||
button = (CButton*)pw->SearchControl(EVENT_SATCOM_SOLUCE);
|
||||
pos.y -= (48.0f + 4.0f) / 480.0f;
|
||||
button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_SATCOM_SOLUCE));
|
||||
if ( button != 0 )
|
||||
{
|
||||
button->SetPos(pos);
|
||||
button->SetDim(dim);
|
||||
}
|
||||
|
||||
pos.x = (50.0f+10.0f+5.0f)/640.0f;
|
||||
pos.y = (30.0f+10.0f+4.0f)/480.0f;
|
||||
dim.x = (48.0f-10.0f)/640.0f;
|
||||
dim.y = 24.0f/480.0f;
|
||||
button = (CButton*)pw->SearchControl(EVENT_OBJECT_INFOOK);
|
||||
pos.x = (50.0f + 10.0f + 5.0f) / 640.0f;
|
||||
pos.y = (30.0f + 10.0f + 4.0f) / 480.0f;
|
||||
dim.x = (48.0f - 10.0f) / 640.0f;
|
||||
dim.y = 24.0f / 480.0f;
|
||||
button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_OBJECT_INFOOK));
|
||||
if ( button != 0 )
|
||||
{
|
||||
button->SetPos(pos);
|
||||
button->SetDim(dim);
|
||||
}
|
||||
|
||||
pos.x = (50.0f+10.0f+48.0f+10.0f)/640.0f;
|
||||
pos.y = (30.0f+10.0f)/480.0f;
|
||||
dim.x = 462.0f/640.0f;
|
||||
dim.y = 358.0f/480.0f;
|
||||
edit = (CEdit*)pw->SearchControl(EVENT_EDIT1);
|
||||
pos.x = (50.0f + 10.0f + 48.0f + 10.0f) / 640.0f;
|
||||
pos.y = (30.0f + 10.0f) / 480.0f;
|
||||
dim.x = 462.0f / 640.0f;
|
||||
dim.y = 358.0f / 480.0f;
|
||||
edit = static_cast<Ui::CEdit*>(pw->SearchControl(EVENT_EDIT1));
|
||||
if ( edit != 0 )
|
||||
{
|
||||
edit->SetPos(pos);
|
||||
edit->SetDim(dim);
|
||||
}
|
||||
|
||||
pos.x = (50.0f+10.0f+48.0f+10.0f)/640.0f;
|
||||
pos.y = (30.0f+10.0f+358.0f+10.0f)/480.0f;
|
||||
dim.x = 32.0f/640.0f;
|
||||
dim.y = 32.0f/480.0f;
|
||||
button = (CButton*)pw->SearchControl(EVENT_HYPER_PREV);
|
||||
pos.x = (50.0f + 10.0f + 48.0f + 10.0f) / 640.0f;
|
||||
pos.y = (30.0f + 10.0f + 358.0f + 10.0f) / 480.0f;
|
||||
dim.x = 32.0f / 640.0f;
|
||||
dim.y = 32.0f / 480.0f;
|
||||
button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_HYPER_PREV));
|
||||
if ( button != 0 )
|
||||
{
|
||||
button->SetPos(pos);
|
||||
button->SetDim(dim);
|
||||
}
|
||||
pos.x += 35.0f/640.0f;
|
||||
button = (CButton*)pw->SearchControl(EVENT_HYPER_NEXT);
|
||||
pos.x += 35.0f / 640.0f;
|
||||
button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_HYPER_NEXT));
|
||||
if ( button != 0 )
|
||||
{
|
||||
button->SetPos(pos);
|
||||
button->SetDim(dim);
|
||||
}
|
||||
pos.x += 35.0f/640.0f;
|
||||
button = (CButton*)pw->SearchControl(EVENT_HYPER_HOME);
|
||||
pos.x += 35.0f / 640.0f;
|
||||
button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_HYPER_HOME));
|
||||
if ( button != 0 )
|
||||
{
|
||||
button->SetPos(pos);
|
||||
button->SetDim(dim);
|
||||
}
|
||||
|
||||
pos.x += 50.0f/640.0f;
|
||||
button = (CButton*)pw->SearchControl(EVENT_HYPER_SIZE1);
|
||||
pos.x += 50.0f / 640.0f;
|
||||
button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_HYPER_SIZE1));
|
||||
if ( button != 0 )
|
||||
{
|
||||
button->SetPos(pos);
|
||||
button->SetDim(dim);
|
||||
}
|
||||
pos.x += 35.0f/640.0f;
|
||||
button = (CButton*)pw->SearchControl(EVENT_HYPER_SIZE2);
|
||||
pos.x += 35.0f / 640.0f;
|
||||
button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_HYPER_SIZE2));
|
||||
if ( button != 0 )
|
||||
{
|
||||
button->SetPos(pos);
|
||||
button->SetDim(dim);
|
||||
}
|
||||
pos.x += 35.0f/640.0f;
|
||||
button = (CButton*)pw->SearchControl(EVENT_HYPER_SIZE3);
|
||||
pos.x += 35.0f / 640.0f;
|
||||
button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_HYPER_SIZE3));
|
||||
if ( button != 0 )
|
||||
{
|
||||
button->SetPos(pos);
|
||||
button->SetDim(dim);
|
||||
}
|
||||
pos.x += 35.0f/640.0f;
|
||||
button = (CButton*)pw->SearchControl(EVENT_HYPER_SIZE4);
|
||||
pos.x += 35.0f / 640.0f;
|
||||
button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_HYPER_SIZE4));
|
||||
if ( button != 0 )
|
||||
{
|
||||
button->SetPos(pos);
|
||||
button->SetDim(dim);
|
||||
}
|
||||
pos.x += 35.0f/640.0f;
|
||||
dim.x = 18.0f/640.0f;
|
||||
slider = (CSlider*)pw->SearchControl(EVENT_STUDIO_SIZE);
|
||||
pos.x += 35.0f / 640.0f;
|
||||
dim.x = 18.0f / 640.0f;
|
||||
slider = static_cast<Ui::CSlider*>(pw->SearchControl(EVENT_STUDIO_SIZE));
|
||||
if ( slider != 0 )
|
||||
{
|
||||
slider->SetPos(pos);
|
||||
slider->SetDim(dim);
|
||||
}
|
||||
pos.x += 50.0f/640.0f;
|
||||
dim.x = 32.0f/640.0f;
|
||||
button = (CButton*)pw->SearchControl(EVENT_HYPER_COPY);
|
||||
pos.x += 50.0f / 640.0f;
|
||||
dim.x = 32.0f / 640.0f;
|
||||
button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_HYPER_COPY));
|
||||
if ( button != 0 )
|
||||
{
|
||||
button->SetPos(pos);
|
||||
button->SetDim(dim);
|
||||
}
|
||||
|
||||
pos.x = (50.0f+10.0f)/640.0f;
|
||||
pos.y = (30.0f+10.0f+24.0f+10.0f+324.0f+6.0f)/480.0f;
|
||||
dim.x = 48.0f/640.0f;
|
||||
dim.y = 40.0f/480.0f;
|
||||
group = (CGroup*)pw->SearchControl(EVENT_LABEL2); // symbol SatCom
|
||||
pos.x = (50.0f + 10.0f) / 640.0f;
|
||||
pos.y = (30.0f + 10.0f + 24.0f + 10.0f + 324.0f + 6.0f) / 480.0f;
|
||||
dim.x = 48.0f / 640.0f;
|
||||
dim.y = 40.0f / 480.0f;
|
||||
group = static_cast<Ui::CGroup*>(pw->SearchControl(EVENT_LABEL2)); // symbol SatCom
|
||||
if ( group != 0 )
|
||||
{
|
||||
group->SetPos(pos);
|
||||
group->SetDim(dim);
|
||||
}
|
||||
|
||||
pos.x = (50.0f+10.0f+14.0f)/640.0f;
|
||||
pos.y = (30.0f+10.0f+6.0f)/480.0f;
|
||||
dim.x = 20.0f/640.0f;
|
||||
dim.y = 20.0f/480.0f;
|
||||
group = (CGroup*)pw->SearchControl(EVENT_LABEL3); // symbol stand-by
|
||||
pos.x = (50.0f + 10.0f + 14.0f) / 640.0f;
|
||||
pos.y = (30.0f + 10.0f + 6.0f) / 480.0f;
|
||||
dim.x = 20.0f / 640.0f;
|
||||
dim.y = 20.0f / 480.0f;
|
||||
group = static_cast<Ui::CGroup*>(pw->SearchControl(EVENT_LABEL3)); // symbol stand-by
|
||||
if ( group != 0 )
|
||||
{
|
||||
group->SetPos(pos);
|
||||
|
@ -661,26 +665,26 @@ void CDisplayInfo::AdjustDisplayInfo(Math::Point wpos, Math::Point wdim)
|
|||
|
||||
void CDisplayInfo::ChangeIndexButton(int index)
|
||||
{
|
||||
CWindow* pw;
|
||||
CEdit* edit;
|
||||
Ui::CWindow* pw;
|
||||
Ui::CEdit* edit;
|
||||
char* filename;
|
||||
|
||||
pw = (CWindow*)m_interface->SearchControl(EVENT_WINDOW4);
|
||||
pw = static_cast<Ui::CWindow*>(m_interface->SearchControl(EVENT_WINDOW4));
|
||||
if ( pw == 0 ) return;
|
||||
|
||||
if ( m_index != -1 )
|
||||
{
|
||||
m_main->SetDisplayInfoPosition(m_index, RetPosition());
|
||||
m_main->SetDisplayInfoPosition(m_index, GetPosition());
|
||||
}
|
||||
m_index = index;
|
||||
|
||||
edit = (CEdit*)pw->SearchControl(EVENT_EDIT1);
|
||||
edit = static_cast<Ui::CEdit*>(pw->SearchControl(EVENT_EDIT1));
|
||||
if ( edit != 0 )
|
||||
{
|
||||
filename = m_main->RetDisplayInfoName(m_index);
|
||||
filename = m_main->GetDisplayInfoName(m_index);
|
||||
edit->ReadText(filename);
|
||||
edit->HyperHome(filename);
|
||||
SetPosition(m_main->RetDisplayInfoPosition(m_index));
|
||||
SetPosition(m_main->GetDisplayInfoPosition(m_index));
|
||||
}
|
||||
|
||||
UpdateIndexButton();
|
||||
|
@ -690,10 +694,10 @@ void CDisplayInfo::ChangeIndexButton(int index)
|
|||
|
||||
void CDisplayInfo::UpdateIndexButton()
|
||||
{
|
||||
CWindow* pw;
|
||||
CButton* button;
|
||||
CGroup* group;
|
||||
CEdit* edit;
|
||||
Ui::CWindow* pw;
|
||||
Ui::CButton* button;
|
||||
Ui::CGroup* group;
|
||||
Ui::CEdit* edit;
|
||||
Math::Point pos, dim;
|
||||
char* filename;
|
||||
char* loading;
|
||||
|
@ -708,10 +712,10 @@ void CDisplayInfo::UpdateIndexButton()
|
|||
4, // SATCOM_SOLUCE
|
||||
};
|
||||
|
||||
pw = (CWindow*)m_interface->SearchControl(EVENT_WINDOW4);
|
||||
pw = static_cast<Ui::CWindow*>(m_interface->SearchControl(EVENT_WINDOW4));
|
||||
if ( pw == 0 ) return;
|
||||
|
||||
button = (CButton*)pw->SearchControl(EVENT_SATCOM_HUSTON);
|
||||
button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_SATCOM_HUSTON));
|
||||
if ( button != 0 )
|
||||
{
|
||||
button->SetState(STATE_CHECK, m_index==SATCOM_HUSTON);
|
||||
|
@ -719,7 +723,7 @@ void CDisplayInfo::UpdateIndexButton()
|
|||
button->SetState(STATE_VISIBLE, filename[0]!=0);
|
||||
}
|
||||
|
||||
button = (CButton*)pw->SearchControl(EVENT_SATCOM_SAT);
|
||||
button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_SATCOM_SAT));
|
||||
if ( button != 0 )
|
||||
{
|
||||
button->SetState(STATE_CHECK, m_index==SATCOM_SAT);
|
||||
|
@ -736,7 +740,7 @@ void CDisplayInfo::UpdateIndexButton()
|
|||
//? }
|
||||
|
||||
loading = 0;
|
||||
button = (CButton*)pw->SearchControl(EVENT_SATCOM_LOADING);
|
||||
button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_SATCOM_LOADING));
|
||||
if ( button != 0 )
|
||||
{
|
||||
button->SetState(STATE_CHECK, m_index==SATCOM_LOADING);
|
||||
|
@ -744,7 +748,7 @@ void CDisplayInfo::UpdateIndexButton()
|
|||
button->SetState(STATE_VISIBLE, loading[0]!=0);
|
||||
}
|
||||
|
||||
button = (CButton*)pw->SearchControl(EVENT_SATCOM_PROG);
|
||||
button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_SATCOM_PROG));
|
||||
if ( button != 0 )
|
||||
{
|
||||
button->SetState(STATE_CHECK, m_index==SATCOM_PROG);
|
||||
|
@ -752,7 +756,7 @@ void CDisplayInfo::UpdateIndexButton()
|
|||
button->SetState(STATE_VISIBLE, filename[0]!=0 && (m_index==SATCOM_LOADING||m_index==SATCOM_PROG||(loading!=0&&loading[0]==0)));
|
||||
}
|
||||
|
||||
button = (CButton*)pw->SearchControl(EVENT_SATCOM_SOLUCE);
|
||||
button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_SATCOM_SOLUCE));
|
||||
if ( button != 0 )
|
||||
{
|
||||
button->SetState(STATE_CHECK, m_index==SATCOM_SOLUCE);
|
||||
|
@ -760,7 +764,7 @@ void CDisplayInfo::UpdateIndexButton()
|
|||
button->SetState(STATE_VISIBLE, filename[0]!=0 && m_bSoluce);
|
||||
}
|
||||
|
||||
group = (CGroup*)pw->SearchControl(EVENT_LABEL1);
|
||||
group = static_cast<Ui::CGroup*>(pw->SearchControl(EVENT_LABEL1));
|
||||
if ( group != 0 )
|
||||
{
|
||||
if ( m_index == -1 )
|
||||
|
@ -789,7 +793,7 @@ void CDisplayInfo::UpdateIndexButton()
|
|||
}
|
||||
#endif
|
||||
|
||||
edit = (CEdit*)pw->SearchControl(EVENT_EDIT1);
|
||||
edit = static_cast<Ui::CEdit*>(pw->SearchControl(EVENT_EDIT1));
|
||||
if ( edit != 0 )
|
||||
{
|
||||
//? edit->SetHiliteCap(m_index==SATCOM_LOADING);
|
||||
|
@ -803,20 +807,20 @@ void CDisplayInfo::UpdateIndexButton()
|
|||
|
||||
void CDisplayInfo::UpdateCopyButton()
|
||||
{
|
||||
CWindow* pw;
|
||||
CButton* button;
|
||||
CEdit* edit;
|
||||
Ui::CWindow* pw;
|
||||
Ui::CButton* button;
|
||||
Ui::CEdit* edit;
|
||||
int c1, c2;
|
||||
|
||||
//? if ( m_index != SATCOM_LOADING ) return;
|
||||
|
||||
pw = (CWindow*)m_interface->SearchControl(EVENT_WINDOW4);
|
||||
pw = static_cast<Ui::CWindow*>(m_interface->SearchControl(EVENT_WINDOW4));
|
||||
if ( pw == 0 ) return;
|
||||
|
||||
button = (CButton*)pw->SearchControl(EVENT_HYPER_COPY);
|
||||
button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_HYPER_COPY));
|
||||
if ( button == 0 ) return;
|
||||
|
||||
edit = (CEdit*)pw->SearchControl(EVENT_EDIT1);
|
||||
edit = static_cast<Ui::CEdit*>(pw->SearchControl(EVENT_EDIT1));
|
||||
if ( edit == 0 ) return;
|
||||
|
||||
edit->GetCursor(c1, c2);
|
||||
|
@ -828,10 +832,10 @@ void CDisplayInfo::UpdateCopyButton()
|
|||
|
||||
void CDisplayInfo::StopDisplayInfo()
|
||||
{
|
||||
CWindow* pw;
|
||||
Ui::CWindow* pw;
|
||||
CMotionToto* toto;
|
||||
|
||||
pw = (CWindow*)m_interface->SearchControl(EVENT_WINDOW4);
|
||||
pw = static_cast<Ui::CWindow*>(m_interface->SearchControl(EVENT_WINDOW4));
|
||||
if ( pw == 0 ) return;
|
||||
|
||||
m_interface->DeleteControl(EVENT_WINDOW4);
|
||||
|
@ -853,13 +857,13 @@ void CDisplayInfo::StopDisplayInfo()
|
|||
|
||||
m_engine->SetDrawWorld(true); // draws all on the interface
|
||||
m_engine->SetDrawFront(false); // draws nothing on the interface
|
||||
m_particule->SetFrameUpdate(SH_WORLD, true);
|
||||
m_particule->FlushParticule(SH_FRONT);
|
||||
m_particule->FlushParticule(SH_INTERFACE);
|
||||
m_particle->SetFrameUpdate(Gfx::SH_WORLD, true);
|
||||
m_particle->FlushParticule(Gfx::SH_FRONT);
|
||||
m_particle->FlushParticule(Gfx::SH_INTERFACE);
|
||||
|
||||
if ( m_toto != 0 )
|
||||
{
|
||||
toto = (CMotionToto*)m_toto->RetMotion();
|
||||
toto = (CMotionToto*)m_toto->GetMotion();
|
||||
if ( toto != 0 )
|
||||
{
|
||||
toto->StopDisplayInfo();
|
||||
|
@ -875,13 +879,13 @@ void CDisplayInfo::StopDisplayInfo()
|
|||
|
||||
void CDisplayInfo::SetPosition(int pos)
|
||||
{
|
||||
CWindow* pw;
|
||||
CEdit* edit;
|
||||
Ui::CWindow* pw;
|
||||
Ui::CEdit* edit;
|
||||
|
||||
pw = (CWindow*)m_interface->SearchControl(EVENT_WINDOW4);
|
||||
pw = static_cast<Ui::CWindow*>(m_interface->SearchControl(EVENT_WINDOW4));
|
||||
if ( pw == 0 ) return;
|
||||
|
||||
edit = (CEdit*)pw->SearchControl(EVENT_EDIT1);
|
||||
edit = static_cast<Ui::CEdit*>(pw->SearchControl(EVENT_EDIT1));
|
||||
if ( edit == 0 ) return;
|
||||
|
||||
edit->SetFirstLine(pos);
|
||||
|
@ -889,18 +893,18 @@ void CDisplayInfo::SetPosition(int pos)
|
|||
|
||||
// Returns the position.
|
||||
|
||||
int CDisplayInfo::RetPosition()
|
||||
int CDisplayInfo::GetPosition()
|
||||
{
|
||||
CWindow* pw;
|
||||
CEdit* edit;
|
||||
Ui::CWindow* pw;
|
||||
Ui::CEdit* edit;
|
||||
|
||||
pw = (CWindow*)m_interface->SearchControl(EVENT_WINDOW4);
|
||||
pw = static_cast<Ui::CWindow*>(m_interface->SearchControl(EVENT_WINDOW4));
|
||||
if ( pw == 0 ) return 0;
|
||||
|
||||
edit = (CEdit*)pw->SearchControl(EVENT_EDIT1);
|
||||
edit = static_cast<Ui::CEdit*>(pw->SearchControl(EVENT_EDIT1));
|
||||
if ( edit == 0 ) return 0;
|
||||
|
||||
return edit->RetFirstLine();
|
||||
return edit->GetFirstLine();
|
||||
}
|
||||
|
||||
|
||||
|
@ -909,18 +913,18 @@ int CDisplayInfo::RetPosition()
|
|||
|
||||
void CDisplayInfo::ViewDisplayInfo()
|
||||
{
|
||||
CWindow* pw;
|
||||
CEdit* edit;
|
||||
POINT dim;
|
||||
Ui::CWindow* pw;
|
||||
Ui::CEdit* edit;
|
||||
Math::Point dim;
|
||||
|
||||
pw = (CWindow*)m_interface->SearchControl(EVENT_WINDOW4);
|
||||
pw = static_cast<Ui::CWindow*>(m_interface->SearchControl(EVENT_WINDOW4));
|
||||
if ( pw == 0 ) return;
|
||||
|
||||
edit = (CEdit*)pw->SearchControl(EVENT_EDIT1);
|
||||
edit = static_cast<Ui::CEdit*>(pw->SearchControl(EVENT_EDIT1));
|
||||
if ( edit == 0 ) return;
|
||||
|
||||
dim = m_engine->RetDim();
|
||||
edit->SetFontSize(m_main->RetFontSize()/(dim.x/640.0f));
|
||||
dim = m_engine->GetDim();
|
||||
edit->SetFontSize(m_main->GetFontSize()/(dim.x / 640.0f));
|
||||
}
|
||||
|
||||
// Returns the object human.
|
||||
|
@ -936,7 +940,7 @@ CObject* CDisplayInfo::SearchToto()
|
|||
pObj = (CObject*)m_iMan->SearchInstance(CLASS_OBJECT, i);
|
||||
if ( pObj == 0 ) break;
|
||||
|
||||
type = pObj->RetType();
|
||||
type = pObj->GetType();
|
||||
if ( type == OBJECT_TOTO )
|
||||
{
|
||||
return pObj;
|
||||
|
@ -995,7 +999,7 @@ void ObjectWrite(FILE* file, ObjectList list[], int i)
|
|||
strcat(line, res);
|
||||
|
||||
strcat(line, "\\u ");
|
||||
p = RetHelpFilename(list[i].type);
|
||||
p = GetHelpFilename(list[i].type);
|
||||
if ( p[0] == 0 ) return;
|
||||
strcat(line, p+5); // skip "help\"
|
||||
p = strstr(line, ".txt");
|
||||
|
@ -1026,11 +1030,11 @@ void CDisplayInfo::CreateObjectsFile()
|
|||
pObj = (CObject*)m_iMan->SearchInstance(CLASS_OBJECT, i);
|
||||
if ( pObj == 0 ) break;
|
||||
|
||||
if ( !pObj->RetActif() ) continue;
|
||||
if ( !pObj->RetSelectable() ) continue;
|
||||
if ( pObj->RetProxyActivate() ) continue;
|
||||
if ( !pObj->GetActif() ) continue;
|
||||
if ( !pObj->GetSelectable() ) continue;
|
||||
if ( pObj->GetProxyActivate() ) continue;
|
||||
|
||||
type = pObj->RetType();
|
||||
type = pObj->GetType();
|
||||
if ( type == OBJECT_NULL ) continue;
|
||||
if ( type == OBJECT_FIX ) continue;
|
||||
|
||||
|
@ -1217,3 +1221,4 @@ void CDisplayInfo::CreateObjectsFile()
|
|||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
// * This file is part of the COLOBOT source code
|
||||
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
|
||||
// * Copyright (C) 2012, Polish Portal of Colobot (PPC)
|
||||
// *
|
||||
// * This program is free software: you can redistribute it and/or modify
|
||||
// * it under the terms of the GNU General Public License as published by
|
||||
|
@ -24,20 +25,29 @@
|
|||
|
||||
|
||||
class CInstanceManager;
|
||||
class CD3DEngine;
|
||||
//class CD3DEngine;
|
||||
class CEvent;
|
||||
class CRobotMain;
|
||||
class CCamera;
|
||||
class CInterface;
|
||||
class CObject;
|
||||
class CParticule;
|
||||
class CLight;
|
||||
//class CCamera;
|
||||
|
||||
class CObject;
|
||||
//class CLight;
|
||||
|
||||
namespace Gfx {
|
||||
class CEngine;
|
||||
class Camera;
|
||||
class Particle;
|
||||
class CLight;
|
||||
}
|
||||
|
||||
namespace Ui {
|
||||
class CInterface;
|
||||
|
||||
class CDisplayInfo
|
||||
{
|
||||
public:
|
||||
CDisplayInfo(CInstanceManager* iMan);
|
||||
// CDisplayInfo(CInstanceManager* iMan);
|
||||
CDisplayInfo();
|
||||
~CDisplayInfo();
|
||||
|
||||
bool EventProcess(const Event &event);
|
||||
|
@ -46,7 +56,7 @@ public:
|
|||
void StopDisplayInfo();
|
||||
|
||||
void SetPosition(int pos);
|
||||
int RetPosition();
|
||||
int GetPosition();
|
||||
|
||||
protected:
|
||||
bool EventFrame(const Event &event);
|
||||
|
@ -61,19 +71,19 @@ protected:
|
|||
|
||||
protected:
|
||||
CInstanceManager* m_iMan;
|
||||
CD3DEngine* m_engine;
|
||||
CEvent* m_event;
|
||||
Gfx::CEngine* m_engine;
|
||||
CEventQueue* m_event;
|
||||
CRobotMain* m_main;
|
||||
CCamera* m_camera;
|
||||
Gfx::CCamera* m_camera;
|
||||
CInterface* m_interface;
|
||||
CParticule* m_particule;
|
||||
CLight* m_light;
|
||||
Gfx::CParticle* m_particle;
|
||||
Gfx::CLight* m_light;
|
||||
|
||||
bool m_bInfoMaximized;
|
||||
bool m_bInfoMinimized;
|
||||
|
||||
int m_index;
|
||||
CameraType m_infoCamera;
|
||||
Gfx::CameraType m_infoCamera;
|
||||
Math::Point m_infoNormalPos;
|
||||
Math::Point m_infoNormalDim;
|
||||
Math::Point m_infoActualPos;
|
||||
|
@ -88,3 +98,4 @@ protected:
|
|||
};
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
// * This file is part of the COLOBOT source code
|
||||
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
|
||||
// * Copyright (C) 2012, Polish Portal of Colobot (PPC)
|
||||
// *
|
||||
// * This program is free software: you can redistribute it and/or modify
|
||||
// * it under the terms of the GNU General Public License as published by
|
||||
|
@ -17,12 +18,13 @@
|
|||
// displaytext.cpp
|
||||
|
||||
|
||||
#include <windows.h>
|
||||
#include <stdio.h>
|
||||
#include <d3d.h>
|
||||
//#include <windows.h>
|
||||
//#include <stdio.h>
|
||||
//#include <d3d.h>
|
||||
|
||||
#include "common/struct.h"
|
||||
#include "old/d3dengine.h"
|
||||
//#include "common/struct.h"
|
||||
//#include "old/d3dengine.h"
|
||||
#include "graphics/engine/engine.h"
|
||||
#include "common/event.h"
|
||||
#include "common/misc.h"
|
||||
#include "common/restext.h"
|
||||
|
@ -35,28 +37,31 @@
|
|||
#include "ui/label.h"
|
||||
#include "ui/window.h"
|
||||
#include "ui/group.h"
|
||||
#include "old/text.h"
|
||||
#include "old/sound.h"
|
||||
//#include "old/text.h"
|
||||
//#include "old/sound.h"
|
||||
//#include "sound/sound.h"
|
||||
#include "ui/displaytext.h"
|
||||
|
||||
|
||||
|
||||
namespace Ui {
|
||||
const float FONTSIZE = 12.0f;
|
||||
|
||||
|
||||
|
||||
// Object's constructor.
|
||||
|
||||
CDisplayText::CDisplayText(CInstanceManager* iMan)
|
||||
//CDisplayText::CDisplayText(CInstanceManager* iMan)
|
||||
CDisplayText::CDisplayText()
|
||||
{
|
||||
int i;
|
||||
|
||||
m_iMan = iMan;
|
||||
// m_iMan = iMan;
|
||||
m_iMan = CInstanceManager::GetInstancePointer();
|
||||
m_iMan->AddInstance(CLASS_DISPLAYTEXT, this);
|
||||
|
||||
m_engine = (CD3DEngine*)m_iMan->SearchInstance(CLASS_ENGINE);
|
||||
m_engine = (Gfx::CEngine*)m_iMan->SearchInstance(CLASS_ENGINE);
|
||||
m_interface = (CInterface*)m_iMan->SearchInstance(CLASS_INTERFACE);
|
||||
m_sound = (CSound*)m_iMan->SearchInstance(CLASS_SOUND);
|
||||
m_sound = (CSoundInterface*)m_iMan->SearchInstance(CLASS_SOUND);
|
||||
|
||||
for ( i=0 ; i<MAXDTLINE ; i++ )
|
||||
{
|
||||
|
@ -94,9 +99,9 @@ bool CDisplayText::EventProcess(const Event &event)
|
|||
{
|
||||
int i;
|
||||
|
||||
if ( m_engine->RetPause() ) return true;
|
||||
if ( m_engine->GetPause() ) return true;
|
||||
|
||||
if ( event.event == EVENT_FRAME )
|
||||
if ( event.type == EVENT_FRAME )
|
||||
{
|
||||
for ( i=0 ; i<MAXDTLINE ; i++ )
|
||||
{
|
||||
|
@ -124,9 +129,9 @@ void CDisplayText::DisplayError(Error err, CObject* pObj, float time)
|
|||
|
||||
if ( pObj == 0 ) return;
|
||||
|
||||
pos = pObj->RetPosition(0);
|
||||
h = RetIdealHeight(pObj);
|
||||
d = RetIdealDist(pObj);
|
||||
pos = pObj->GetPosition(0);
|
||||
h = GetIdealHeight(pObj);
|
||||
d = GetIdealDist(pObj);
|
||||
DisplayError(err, pos, h, d, time);
|
||||
}
|
||||
|
||||
|
@ -178,7 +183,7 @@ void CDisplayText::DisplayError(Error err, Math::Vector goal, float height,
|
|||
|
||||
// Displays text.
|
||||
|
||||
void CDisplayText::DisplayText(char *text, CObject* pObj,
|
||||
void CDisplayText::DisplayText(const char *text, CObject* pObj,
|
||||
float time, TextType type)
|
||||
{
|
||||
Math::Vector pos;
|
||||
|
@ -186,23 +191,23 @@ void CDisplayText::DisplayText(char *text, CObject* pObj,
|
|||
|
||||
if ( pObj == 0 ) return;
|
||||
|
||||
pos = pObj->RetPosition(0);
|
||||
h = RetIdealHeight(pObj);
|
||||
d = RetIdealDist(pObj);
|
||||
pos = pObj->GetPosition(0);
|
||||
h = GetIdealHeight(pObj);
|
||||
d = GetIdealDist(pObj);
|
||||
DisplayText(text, pos, h, d, time, type);
|
||||
}
|
||||
|
||||
// Displays text.
|
||||
|
||||
void CDisplayText::DisplayText(char *text, Math::Vector goal, float height,
|
||||
void CDisplayText::DisplayText(const char *text, Math::Vector goal, float height,
|
||||
float dist, float time, TextType type)
|
||||
{
|
||||
CObject* toto;
|
||||
CMotion* motion;
|
||||
CWindow* pw;
|
||||
CButton* button;
|
||||
CGroup* group;
|
||||
CLabel* label;
|
||||
Ui::CWindow* pw;
|
||||
Ui::CButton* button;
|
||||
Ui::CGroup* group;
|
||||
Ui::CLabel* label;
|
||||
Math::Point pos, ppos, dim;
|
||||
Sound sound;
|
||||
float hLine, hBox;
|
||||
|
@ -210,7 +215,7 @@ void CDisplayText::DisplayText(char *text, Math::Vector goal, float height,
|
|||
|
||||
if ( !m_bEnable ) return;
|
||||
|
||||
pw = (CWindow*)m_interface->SearchControl(EVENT_WINDOW2);
|
||||
pw = static_cast<CWindow*>(m_interface->SearchControl(EVENT_WINDOW2));
|
||||
if ( pw == 0 )
|
||||
{
|
||||
pos.x = 0.0f;
|
||||
|
@ -221,12 +226,12 @@ void CDisplayText::DisplayText(char *text, Math::Vector goal, float height,
|
|||
}
|
||||
|
||||
hBox = 0.045f;
|
||||
hLine = m_engine->RetText()->RetHeight(FONTSIZE, FONT_COLOBOT);
|
||||
hLine = m_engine->GetText()->GetHeight(Gfx::FONT_COLOBOT, FONTSIZE);
|
||||
|
||||
nLine = 0;
|
||||
for ( i=0 ; i<MAXDTLINE ; i++ )
|
||||
{
|
||||
group = (CGroup*)pw->SearchControl(EventMsg(EVENT_DT_GROUP0+i));
|
||||
group = static_cast<CGroup*>(pw->SearchControl(EventType(EVENT_DT_GROUP0+i)));
|
||||
if ( group == 0 ) break;
|
||||
nLine ++;
|
||||
}
|
||||
|
@ -247,13 +252,13 @@ void CDisplayText::DisplayText(char *text, Math::Vector goal, float height,
|
|||
if ( type == TT_WARNING ) icon = 10; // blue
|
||||
if ( type == TT_INFO ) icon = 8; // green
|
||||
if ( type == TT_MESSAGE ) icon = 11; // yellow
|
||||
pw->CreateGroup(pos, dim, icon, EventMsg(EVENT_DT_GROUP0+nLine));
|
||||
pw->CreateGroup(pos, dim, icon, EventType(EVENT_DT_GROUP0+nLine));
|
||||
|
||||
pw->SetTrashEvent(false);
|
||||
|
||||
ppos = pos;
|
||||
ppos.y -= hLine/2.0f;
|
||||
label = pw->CreateLabel(ppos, dim, -1, EventMsg(EVENT_DT_LABEL0+nLine), text);
|
||||
label = pw->CreateLabel(ppos, dim, -1, EventType(EVENT_DT_LABEL0+nLine), text);
|
||||
if ( label != 0 )
|
||||
{
|
||||
label->SetFontSize(FONTSIZE);
|
||||
|
@ -261,7 +266,7 @@ void CDisplayText::DisplayText(char *text, Math::Vector goal, float height,
|
|||
|
||||
dim.x = dim.y*0.75f;
|
||||
pos.x -= dim.x;
|
||||
button = pw->CreateButton(pos, dim, 14, EventMsg(EVENT_DT_VISIT0+nLine));
|
||||
button = pw->CreateButton(pos, dim, 14, EventType(EVENT_DT_VISIT0+nLine));
|
||||
|
||||
if ( goal.x == 0.0f &&
|
||||
goal.y == 0.0f &&
|
||||
|
@ -279,7 +284,7 @@ void CDisplayText::DisplayText(char *text, Math::Vector goal, float height,
|
|||
toto = SearchToto();
|
||||
if ( toto != 0 )
|
||||
{
|
||||
motion = toto->RetMotion();
|
||||
motion = toto->GetMotion();
|
||||
if ( motion != 0 )
|
||||
{
|
||||
if ( type == TT_ERROR )
|
||||
|
@ -324,18 +329,18 @@ void CDisplayText::DisplayText(char *text, Math::Vector goal, float height,
|
|||
|
||||
void CDisplayText::ClearText()
|
||||
{
|
||||
CWindow* pw;
|
||||
Ui::CWindow* pw;
|
||||
int i;
|
||||
|
||||
pw = (CWindow*)m_interface->SearchControl(EVENT_WINDOW2);
|
||||
pw = static_cast<Ui::CWindow*>(m_interface->SearchControl(EVENT_WINDOW2));
|
||||
|
||||
for ( i=0 ; i<MAXDTLINE ; i++ )
|
||||
{
|
||||
if ( pw != 0 )
|
||||
{
|
||||
pw->DeleteControl(EventMsg(EVENT_DT_GROUP0+i));
|
||||
pw->DeleteControl(EventMsg(EVENT_DT_LABEL0+i));
|
||||
pw->DeleteControl(EventMsg(EVENT_DT_VISIT0+i));
|
||||
pw->DeleteControl(EventType(EVENT_DT_GROUP0+i));
|
||||
pw->DeleteControl(EventType(EVENT_DT_LABEL0+i));
|
||||
pw->DeleteControl(EventType(EVENT_DT_VISIT0+i));
|
||||
}
|
||||
m_bExist[i] = false;
|
||||
m_visitGoal[i] = Math::Vector(0.0f, 0.0f, 0.0f);
|
||||
|
@ -349,32 +354,32 @@ void CDisplayText::ClearText()
|
|||
|
||||
void CDisplayText::HideText(bool bHide)
|
||||
{
|
||||
CWindow* pw;
|
||||
CGroup* pg;
|
||||
CLabel* pl;
|
||||
CButton* pb;
|
||||
Ui::CWindow* pw;
|
||||
Ui::CGroup* pg;
|
||||
Ui::CLabel* pl;
|
||||
Ui::CButton* pb;
|
||||
int i;
|
||||
|
||||
m_bHide = bHide;
|
||||
|
||||
pw = (CWindow*)m_interface->SearchControl(EVENT_WINDOW2);
|
||||
pw = static_cast<Ui::CWindow*>(m_interface->SearchControl(EVENT_WINDOW2));
|
||||
if ( pw == 0 ) return;
|
||||
|
||||
for ( i=0 ; i<MAXDTLINE ; i++ )
|
||||
{
|
||||
pg = (CGroup*)pw->SearchControl(EventMsg(EVENT_DT_GROUP0+i));
|
||||
pg = static_cast<Ui::CGroup*>(pw->SearchControl(EventType(EVENT_DT_GROUP0+i)));
|
||||
if ( pg != 0 )
|
||||
{
|
||||
pg->SetState(STATE_VISIBLE, !bHide);
|
||||
}
|
||||
|
||||
pl = (CLabel* )pw->SearchControl(EventMsg(EVENT_DT_LABEL0+i));
|
||||
pl = static_cast<Ui::CLabel*>(pw->SearchControl(EventType(EVENT_DT_LABEL0+i)));
|
||||
if ( pl != 0 )
|
||||
{
|
||||
pl->SetState(STATE_VISIBLE, !bHide);
|
||||
}
|
||||
|
||||
pb = (CButton*)pw->SearchControl(EventMsg(EVENT_DT_VISIT0+i));
|
||||
pb = static_cast<CButton*>(pw->SearchControl(EventType(EVENT_DT_VISIT0+i)));
|
||||
if ( pb != 0 )
|
||||
{
|
||||
pb->SetState(STATE_VISIBLE, !bHide);
|
||||
|
@ -386,20 +391,20 @@ void CDisplayText::HideText(bool bHide)
|
|||
|
||||
bool CDisplayText::ClearLastText()
|
||||
{
|
||||
CWindow *pw;
|
||||
CButton *pb1, *pb2;
|
||||
CGroup *pg1, *pg2;
|
||||
CLabel *pl1, *pl2;
|
||||
Ui::CWindow *pw;
|
||||
Ui::CButton *pb1, *pb2;
|
||||
Ui::CGroup *pg1, *pg2;
|
||||
Ui::CLabel *pl1, *pl2;
|
||||
int i;
|
||||
|
||||
pw = (CWindow*)m_interface->SearchControl(EVENT_WINDOW2);
|
||||
pw = static_cast<CWindow*>(m_interface->SearchControl(EVENT_WINDOW2));
|
||||
if ( pw == 0 ) return false;
|
||||
|
||||
pb2 = (CButton*)pw->SearchControl(EVENT_DT_VISIT0);
|
||||
pb2 = static_cast<CButton*>(pw->SearchControl(EVENT_DT_VISIT0));
|
||||
if ( pb2 == 0 ) return false; // same not of first-line
|
||||
pg2 = (CGroup*)pw->SearchControl(EVENT_DT_GROUP0);
|
||||
pg2 = static_cast<CGroup*>(pw->SearchControl(EVENT_DT_GROUP0));
|
||||
if ( pg2 == 0 ) return false;
|
||||
pl2 = (CLabel*)pw->SearchControl(EVENT_DT_LABEL0);
|
||||
pl2 = static_cast<CLabel*>(pw->SearchControl(EVENT_DT_LABEL0));
|
||||
if ( pl2 == 0 ) return false;
|
||||
|
||||
for ( i=0 ; i<MAXDTLINE-1 ; i++ )
|
||||
|
@ -408,18 +413,18 @@ bool CDisplayText::ClearLastText()
|
|||
pg1 = pg2;
|
||||
pl1 = pl2;
|
||||
|
||||
pb2 = (CButton*)pw->SearchControl(EventMsg(EVENT_DT_VISIT0+i+1));
|
||||
pb2 = static_cast<CButton*>(pw->SearchControl(EventType(EVENT_DT_VISIT0+i+1)));
|
||||
if ( pb2 == 0 ) break;
|
||||
|
||||
pg2 = (CGroup*)pw->SearchControl(EventMsg(EVENT_DT_GROUP0+i+1));
|
||||
pg2 = static_cast<CGroup*>(pw->SearchControl(EventType(EVENT_DT_GROUP0+i+1)));
|
||||
if ( pg2 == 0 ) break;
|
||||
|
||||
pl2 = (CLabel*)pw->SearchControl(EventMsg(EVENT_DT_LABEL0+i+1));
|
||||
pl2 = static_cast<CLabel*>(pw->SearchControl(EventType(EVENT_DT_LABEL0+i+1)));
|
||||
if ( pl2 == 0 ) break;
|
||||
|
||||
pb1->SetState(STATE_ENABLE, pb2->TestState(STATE_ENABLE));
|
||||
pg1->SetIcon(pg2->RetIcon());
|
||||
pl1->SetName(pl2->RetName());
|
||||
pg1->SetIcon(pg2->GetIcon());
|
||||
pl1->SetName(pl2->GetName());
|
||||
|
||||
m_time[i] = m_time[i+1];
|
||||
m_visitGoal[i] = m_visitGoal[i+1];
|
||||
|
@ -427,9 +432,9 @@ bool CDisplayText::ClearLastText()
|
|||
m_visitHeight[i] = m_visitHeight[i+1]; // shift
|
||||
}
|
||||
|
||||
pw->DeleteControl(EventMsg(EVENT_DT_VISIT0+i));
|
||||
pw->DeleteControl(EventMsg(EVENT_DT_GROUP0+i));
|
||||
pw->DeleteControl(EventMsg(EVENT_DT_LABEL0+i));
|
||||
pw->DeleteControl(EventType(EVENT_DT_VISIT0+i));
|
||||
pw->DeleteControl(EventType(EVENT_DT_GROUP0+i));
|
||||
pw->DeleteControl(EventType(EVENT_DT_LABEL0+i));
|
||||
m_bExist[i] = false;
|
||||
return true;
|
||||
}
|
||||
|
@ -453,7 +458,7 @@ void CDisplayText::SetEnable(bool bEnable)
|
|||
|
||||
// Returns the goal during a visit.
|
||||
|
||||
Math::Vector CDisplayText::RetVisitGoal(EventMsg event)
|
||||
Math::Vector CDisplayText::GetVisitGoal(EventType event)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
@ -464,7 +469,7 @@ Math::Vector CDisplayText::RetVisitGoal(EventMsg event)
|
|||
|
||||
// Returns the distance during a visit.
|
||||
|
||||
float CDisplayText::RetVisitDist(EventMsg event)
|
||||
float CDisplayText::GetVisitDist(EventType event)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
@ -475,7 +480,7 @@ float CDisplayText::RetVisitDist(EventMsg event)
|
|||
|
||||
// Returns the height on a visit.
|
||||
|
||||
float CDisplayText::RetVisitHeight(EventMsg event)
|
||||
float CDisplayText::GetVisitHeight(EventType event)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
@ -487,13 +492,13 @@ float CDisplayText::RetVisitHeight(EventMsg event)
|
|||
|
||||
// Ranges from ideal visit for a given object.
|
||||
|
||||
float CDisplayText::RetIdealDist(CObject* pObj)
|
||||
float CDisplayText::GetIdealDist(CObject* pObj)
|
||||
{
|
||||
ObjectType type;
|
||||
|
||||
if ( pObj == 0 ) return 40.0f;
|
||||
|
||||
type = pObj->RetType();
|
||||
type = pObj->GetType();
|
||||
if ( type == OBJECT_PORTICO ) return 200.0f;
|
||||
if ( type == OBJECT_BASE ) return 200.0f;
|
||||
if ( type == OBJECT_NUCLEAR ) return 100.0f;
|
||||
|
@ -506,13 +511,13 @@ float CDisplayText::RetIdealDist(CObject* pObj)
|
|||
|
||||
// Returns the height of ideal visit for a given object.
|
||||
|
||||
float CDisplayText::RetIdealHeight(CObject* pObj)
|
||||
float CDisplayText::GetIdealHeight(CObject* pObj)
|
||||
{
|
||||
ObjectType type;
|
||||
|
||||
if ( pObj == 0 ) return 5.0f;
|
||||
|
||||
type = pObj->RetType();
|
||||
type = pObj->GetType();
|
||||
if ( type == OBJECT_DERRICK ) return 35.0f;
|
||||
if ( type == OBJECT_FACTORY ) return 22.0f;
|
||||
if ( type == OBJECT_REPAIR ) return 30.0f;
|
||||
|
@ -537,16 +542,16 @@ float CDisplayText::RetIdealHeight(CObject* pObj)
|
|||
|
||||
void CDisplayText::ClearVisit()
|
||||
{
|
||||
CWindow* pw;
|
||||
CButton* pb;
|
||||
Ui::CWindow* pw;
|
||||
Ui::CButton* pb;
|
||||
int i;
|
||||
|
||||
pw = (CWindow*)m_interface->SearchControl(EVENT_WINDOW2);
|
||||
pw = static_cast<CWindow*>(m_interface->SearchControl(EVENT_WINDOW2));
|
||||
if ( pw == 0 ) return;
|
||||
|
||||
for ( i=0 ; i<MAXDTLINE ; i++ )
|
||||
{
|
||||
pb = (CButton*)pw->SearchControl(EventMsg(EVENT_DT_VISIT0+i));
|
||||
pb = static_cast<CButton*>(pw->SearchControl(EventType(EVENT_DT_VISIT0+i)));
|
||||
if ( pb == 0 ) break;
|
||||
pb->SetIcon(14); // eyes
|
||||
}
|
||||
|
@ -554,38 +559,38 @@ void CDisplayText::ClearVisit()
|
|||
|
||||
// Puts a button in "visit".
|
||||
|
||||
void CDisplayText::SetVisit(EventMsg event)
|
||||
void CDisplayText::SetVisit(EventType event)
|
||||
{
|
||||
CWindow* pw;
|
||||
CButton* pb;
|
||||
Ui::CWindow* pw;
|
||||
Ui::CButton* pb;
|
||||
int i;
|
||||
|
||||
i = event-EVENT_DT_VISIT0;
|
||||
if ( i < 0 || i >= MAXDTLINE ) return;
|
||||
|
||||
pw = (CWindow*)m_interface->SearchControl(EVENT_WINDOW2);
|
||||
pw = static_cast<CWindow*>(m_interface->SearchControl(EVENT_WINDOW2));
|
||||
if ( pw == 0 ) return;
|
||||
pb = (CButton*)pw->SearchControl(EventMsg(EVENT_DT_VISIT0+i));
|
||||
pb = static_cast<CButton*>(pw->SearchControl(EventType(EVENT_DT_VISIT0+i)));
|
||||
if ( pb == 0 ) return;
|
||||
pb->SetIcon(48); // >
|
||||
}
|
||||
|
||||
// Indicates whether a button is set to "visit".
|
||||
|
||||
bool CDisplayText::IsVisit(EventMsg event)
|
||||
bool CDisplayText::IsVisit(EventType event)
|
||||
{
|
||||
CWindow* pw;
|
||||
CButton* pb;
|
||||
Ui::CWindow* pw;
|
||||
Ui::CButton* pb;
|
||||
int i;
|
||||
|
||||
i = event-EVENT_DT_VISIT0;
|
||||
if ( i < 0 || i >= MAXDTLINE ) return false;
|
||||
|
||||
pw = (CWindow*)m_interface->SearchControl(EVENT_WINDOW2);
|
||||
pw = static_cast<CWindow*>(m_interface->SearchControl(EVENT_WINDOW2));
|
||||
if ( pw == 0 ) return false;
|
||||
pb = (CButton*)pw->SearchControl(EventMsg(EVENT_DT_VISIT0+i));
|
||||
pb = static_cast<CButton*>(pw->SearchControl(EventType(EVENT_DT_VISIT0+i)));
|
||||
if ( pb == 0 ) return false;
|
||||
return (pb->RetIcon() == 48); // > ?
|
||||
return (pb->GetIcon() == 48); // > ?
|
||||
}
|
||||
|
||||
|
||||
|
@ -599,10 +604,10 @@ CObject* CDisplayText::SearchToto()
|
|||
|
||||
for ( i=0 ; i<1000000 ; i++ )
|
||||
{
|
||||
pObj = (CObject*)m_iMan->SearchInstance(CLASS_OBJECT, i);
|
||||
pObj = static_cast<CObject*>(m_iMan->SearchInstance(CLASS_OBJECT, i));
|
||||
if ( pObj == 0 ) break;
|
||||
|
||||
type = pObj->RetType();
|
||||
type = pObj->GetType();
|
||||
if ( type == OBJECT_TOTO )
|
||||
{
|
||||
return pObj;
|
||||
|
@ -611,3 +616,4 @@ CObject* CDisplayText::SearchToto()
|
|||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
// * This file is part of the COLOBOT source code
|
||||
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
|
||||
// * Copyright (C) 2012, Polish Portal of Colobot (PPC)
|
||||
// *
|
||||
// * This program is free software: you can redistribute it and/or modify
|
||||
// * it under the terms of the GNU General Public License as published by
|
||||
|
@ -21,15 +22,18 @@
|
|||
|
||||
#include "common/event.h"
|
||||
#include "common/misc.h"
|
||||
#include "old/d3dengine.h"
|
||||
#include "sound/sound.h"
|
||||
//#include "old/d3dengine.h"
|
||||
|
||||
|
||||
class CInstanceManager;
|
||||
class CD3DEngine;
|
||||
class CInterface;
|
||||
//class CD3DEngine
|
||||
class CObject;
|
||||
class CSound;
|
||||
|
||||
namespace Ui {;
|
||||
|
||||
class CInterface;
|
||||
|
||||
enum TextType
|
||||
{
|
||||
|
@ -45,7 +49,8 @@ const int MAXDTLINE = 4;
|
|||
class CDisplayText
|
||||
{
|
||||
public:
|
||||
CDisplayText(CInstanceManager* iMan);
|
||||
// CDisplayText(CInstanceManager* iMan);
|
||||
CDisplayText();
|
||||
~CDisplayText();
|
||||
|
||||
void DeleteObject();
|
||||
|
@ -54,33 +59,33 @@ public:
|
|||
|
||||
void DisplayError(Error err, CObject* pObj, float time=10.0f);
|
||||
void DisplayError(Error err, Math::Vector goal, float height=15.0f, float dist=60.0f, float time=10.0f);
|
||||
void DisplayText(char *text, CObject* pObj, float time=10.0f, TextType type=TT_INFO);
|
||||
void DisplayText(char *text, Math::Vector goal, float height=15.0f, float dist=60.0f, float time=10.0f, TextType type=TT_INFO);
|
||||
void DisplayText(const char *text, CObject* pObj, float time=10.0f, TextType type=TT_INFO);
|
||||
void DisplayText(const char *text, Math::Vector goal, float height=15.0f, float dist=60.0f, float time=10.0f, TextType type=TT_INFO);
|
||||
void HideText(bool bHide);
|
||||
void ClearText();
|
||||
bool ClearLastText();
|
||||
void SetDelay(float factor);
|
||||
void SetEnable(bool bEnable);
|
||||
|
||||
Math::Vector RetVisitGoal(EventMsg event);
|
||||
float RetVisitDist(EventMsg event);
|
||||
float RetVisitHeight(EventMsg event);
|
||||
Math::Vector GetVisitGoal(EventType event);
|
||||
float GetVisitDist(EventType event);
|
||||
float GetVisitHeight(EventType event);
|
||||
|
||||
float RetIdealDist(CObject* pObj);
|
||||
float RetIdealHeight(CObject* pObj);
|
||||
float GetIdealDist(CObject* pObj);
|
||||
float GetIdealHeight(CObject* pObj);
|
||||
|
||||
void ClearVisit();
|
||||
void SetVisit(EventMsg event);
|
||||
bool IsVisit(EventMsg event);
|
||||
void SetVisit(EventType event);
|
||||
bool IsVisit(EventType event);
|
||||
|
||||
protected:
|
||||
CObject* SearchToto();
|
||||
|
||||
protected:
|
||||
CInstanceManager* m_iMan;
|
||||
CD3DEngine* m_engine;
|
||||
CInterface* m_interface;
|
||||
CSound* m_sound;
|
||||
Gfx::CEngine* m_engine;
|
||||
Ui::CInterface* m_interface;
|
||||
CSoundInterface* m_sound;
|
||||
|
||||
bool m_bExist[MAXDTLINE];
|
||||
float m_time[MAXDTLINE];
|
||||
|
@ -94,3 +99,4 @@ protected:
|
|||
};
|
||||
|
||||
|
||||
}
|
||||
|
|
470
src/ui/edit.cpp
470
src/ui/edit.cpp
File diff suppressed because it is too large
Load Diff
123
src/ui/edit.h
123
src/ui/edit.h
|
@ -1,5 +1,6 @@
|
|||
// * This file is part of the COLOBOT source code
|
||||
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
|
||||
// * Copyright (C) 2012, Polish Portal of Colobot (PPC)
|
||||
// *
|
||||
// * This program is free software: you can redistribute it and/or modify
|
||||
// * it under the terms of the GNU General Public License as published by
|
||||
|
@ -14,69 +15,99 @@
|
|||
// * You should have received a copy of the GNU General Public License
|
||||
// * along with this program. If not, see http://www.gnu.org/licenses/.
|
||||
|
||||
// edit.h
|
||||
|
||||
/**
|
||||
* \file ui/edit.h
|
||||
* \brief CEdit class
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
|
||||
#include "common/struct.h"
|
||||
//#include "common/struct.h"
|
||||
#include "ui/control.h"
|
||||
|
||||
namespace Gfx{
|
||||
class CEngine;
|
||||
};
|
||||
|
||||
class CD3DEngine;
|
||||
namespace Ui {
|
||||
class CScroll;
|
||||
|
||||
|
||||
//! maximum number of characters in CBOT edit
|
||||
const int EDITSTUDIOMAX = 20000;
|
||||
//! maximum total number of lines
|
||||
const int EDITLINEMAX = 1000;
|
||||
//! maximum total number of lines with images
|
||||
const int EDITIMAGEMAX = 50;
|
||||
//! maximum number of links
|
||||
const int EDITLINKMAX = 100;
|
||||
//! max number of levels preserves
|
||||
const int EDITHISTORYMAX = 50;
|
||||
|
||||
const int EDITSTUDIOMAX = 20000; // maximum number of characters in CBOT edit
|
||||
const int EDITLINEMAX = 1000; // maximum total number of lines
|
||||
const int EDITIMAGEMAX = 50; // maximum total number of lines with images
|
||||
const int EDITLINKMAX = 100; // maximum number of links
|
||||
const int EDITHISTORYMAX = 50; // max number of levels preserves
|
||||
|
||||
const int EDITUNDOMAX = 20; // max number of successive undo
|
||||
//! max number of successive undo
|
||||
const int EDITUNDOMAX = 20;
|
||||
|
||||
struct EditUndo
|
||||
{
|
||||
char* text; // original text
|
||||
int len; // length of the text
|
||||
int cursor1; // offset cursor
|
||||
int cursor2; // offset cursor
|
||||
int lineFirst; // the first line displayed.
|
||||
//! original text
|
||||
char* text;
|
||||
//! length of the text
|
||||
int len;
|
||||
//! offset cursor
|
||||
int cursor1;
|
||||
//! offset cursor
|
||||
int cursor2;
|
||||
//! the first line displayed.
|
||||
int lineFirst;
|
||||
|
||||
};
|
||||
|
||||
enum OperUndo
|
||||
{
|
||||
OPERUNDO_SPEC = 0, // special operation
|
||||
OPERUNDO_INSERT = 1, // inserting characters
|
||||
OPERUNDO_DELETE = 2, // deleting characters
|
||||
//! special operation
|
||||
OPERUNDO_SPEC = 0,
|
||||
//! inserting characters
|
||||
OPERUNDO_INSERT = 1,
|
||||
//! deleting characters
|
||||
OPERUNDO_DELETE = 2,
|
||||
};
|
||||
|
||||
struct ImageLine
|
||||
{
|
||||
char name[40]; // name of the image (without diagram \)
|
||||
float offset; // vertical offset (v texture)
|
||||
float height; // height of the part (dv texture)
|
||||
float width; // width
|
||||
//! name of the image (without diagram \)
|
||||
char name[40];
|
||||
//! vertical offset (v texture)
|
||||
float offset;
|
||||
//! height of the part (dv texture)
|
||||
float height;
|
||||
//! width
|
||||
float width;
|
||||
};
|
||||
|
||||
struct HyperLink
|
||||
{
|
||||
char name[40]; // text file name (without help \)
|
||||
char marker[20]; // name of the marker
|
||||
//! text file name (without help \)
|
||||
char name[40];
|
||||
//! name of the marker
|
||||
char marker[20];
|
||||
};
|
||||
|
||||
struct HyperMarker
|
||||
{
|
||||
char name[20]; // name of the marker
|
||||
int pos; // position in the text
|
||||
//! name of the marker
|
||||
char name[20];
|
||||
//! position in the text
|
||||
int pos;
|
||||
};
|
||||
|
||||
struct HyperHistory
|
||||
{
|
||||
char filename[50]; // full file name text
|
||||
int firstLine; // rank of the first displayed line
|
||||
//! full file name text
|
||||
char filename[50];
|
||||
//! rank of the first displayed line
|
||||
int firstLine;
|
||||
};
|
||||
|
||||
|
||||
|
@ -85,10 +116,11 @@ struct HyperHistory
|
|||
class CEdit : public CControl
|
||||
{
|
||||
public:
|
||||
CEdit(CInstanceManager* iMan);
|
||||
// CEdit(CInstanceManager* iMan);
|
||||
CEdit ();
|
||||
virtual ~CEdit();
|
||||
|
||||
bool Create(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
bool Create(Math::Point pos, Math::Point dim, int icon, EventType eventType);
|
||||
|
||||
void SetPos(Math::Point pos);
|
||||
void SetDim(Math::Point dim);
|
||||
|
@ -98,45 +130,45 @@ public:
|
|||
|
||||
void SetText(char *text, bool bNew=true);
|
||||
void GetText(char *buffer, int max);
|
||||
char* RetText();
|
||||
int RetTextLength();
|
||||
char* GetText();
|
||||
int GetTextLength();
|
||||
|
||||
bool ReadText(char *filename, int addSize=0);
|
||||
bool WriteText(char *filename);
|
||||
|
||||
void SetMaxChar(int max);
|
||||
int RetMaxChar();
|
||||
int GetMaxChar();
|
||||
|
||||
void SetEditCap(bool bMode);
|
||||
bool RetEditCap();
|
||||
bool GetEditCap();
|
||||
|
||||
void SetHiliteCap(bool bEnable);
|
||||
bool RetHiliteCap();
|
||||
bool GetHiliteCap();
|
||||
|
||||
void SetInsideScroll(bool bInside);
|
||||
bool RetInsideScroll();
|
||||
bool GetInsideScroll();
|
||||
|
||||
void SetSoluceMode(bool bSoluce);
|
||||
bool RetSoluceMode();
|
||||
bool GetSoluceMode();
|
||||
|
||||
void SetGenericMode(bool bGeneric);
|
||||
bool RetGenericMode();
|
||||
bool GetGenericMode();
|
||||
|
||||
void SetAutoIndent(bool bMode);
|
||||
bool RetAutoIndent();
|
||||
bool GetAutoIndent();
|
||||
|
||||
void SetCursor(int cursor1, int cursor2);
|
||||
void GetCursor(int &cursor1, int &cursor2);
|
||||
|
||||
void SetFirstLine(int rank);
|
||||
int RetFirstLine();
|
||||
int GetFirstLine();
|
||||
void ShowSelect();
|
||||
|
||||
void SetDisplaySpec(bool bDisplay);
|
||||
bool RetDisplaySpec();
|
||||
bool GetDisplaySpec();
|
||||
|
||||
void SetMultiFont(bool bMulti);
|
||||
bool RetMultiFont();
|
||||
bool GetMultiFont();
|
||||
|
||||
bool Cut();
|
||||
bool Copy();
|
||||
|
@ -145,8 +177,8 @@ public:
|
|||
|
||||
void HyperFlush();
|
||||
void HyperHome(char *filename);
|
||||
bool HyperTest(EventMsg event);
|
||||
bool HyperGo(EventMsg event);
|
||||
bool HyperTest(EventType event);
|
||||
bool HyperGo(EventType event);
|
||||
|
||||
void SetFontSize(float size);
|
||||
|
||||
|
@ -189,7 +221,7 @@ protected:
|
|||
bool Shift(bool bLeft);
|
||||
bool MinMaj(bool bMaj);
|
||||
void Justif();
|
||||
int RetCursorLine(int cursor);
|
||||
int GetCursorLine(int cursor);
|
||||
|
||||
void UndoFlush();
|
||||
void UndoMemorize(OperUndo oper);
|
||||
|
@ -246,3 +278,4 @@ protected:
|
|||
};
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
// * This file is part of the COLOBOT source code
|
||||
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
|
||||
// * Copyright (C) 2012, Polish Portal of Colobot (PPC)
|
||||
// *
|
||||
// * This program is free software: you can redistribute it and/or modify
|
||||
// * it under the terms of the GNU General Public License as published by
|
||||
|
@ -17,13 +18,13 @@
|
|||
// editvalue.cpp
|
||||
|
||||
|
||||
#include <windows.h>
|
||||
#include <stdio.h>
|
||||
#include <d3d.h>
|
||||
//#include <windows.h>
|
||||
//#include <stdio.h>
|
||||
//#include <d3d.h>
|
||||
|
||||
#include "common/struct.h"
|
||||
#include "old/d3dengine.h"
|
||||
#include "old/math3d.h"
|
||||
//#include "common/struct.h"
|
||||
//#include "old/d3dengine.h"
|
||||
//#include "old/math3d.h"
|
||||
#include "common/event.h"
|
||||
#include "common/misc.h"
|
||||
#include "common/iman.h"
|
||||
|
@ -33,10 +34,11 @@
|
|||
|
||||
|
||||
|
||||
|
||||
namespace Ui {
|
||||
// Object's constructor.
|
||||
|
||||
CEditValue::CEditValue(CInstanceManager* iMan) : CControl(iMan)
|
||||
//CEditValue::CEditValue(CInstanceManager* iMan) : CControl(iMan)
|
||||
CEditValue::CEditValue() : CControl ()
|
||||
{
|
||||
m_edit = 0;
|
||||
m_buttonUp = 0;
|
||||
|
@ -60,28 +62,28 @@ CEditValue::~CEditValue()
|
|||
|
||||
// Creates a new button.
|
||||
|
||||
bool CEditValue::Create(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
bool CEditValue::Create(Math::Point pos, Math::Point dim, int icon, EventType eventType)
|
||||
{
|
||||
CEdit* pe;
|
||||
CButton* pc;
|
||||
Ui::CEdit* pe;
|
||||
Ui::CButton* pc;
|
||||
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
CControl::Create(pos, dim, icon, eventMsg);
|
||||
if ( eventType == EVENT_NULL ) eventType = GetUniqueEventType();
|
||||
CControl::Create(pos, dim, icon, eventType);
|
||||
|
||||
GlintDelete();
|
||||
|
||||
m_edit = new CEdit(m_iMan);
|
||||
pe = (CEdit*)m_edit;
|
||||
m_edit = new Ui::CEdit();
|
||||
pe = static_cast<Ui::CEdit*>(m_edit);
|
||||
pe->Create(pos, dim, 0, EVENT_NULL);
|
||||
pe->SetMaxChar(4);
|
||||
|
||||
m_buttonUp = new CButton(m_iMan);
|
||||
pc = (CButton*)m_buttonUp;
|
||||
m_buttonUp = new Ui::CButton();
|
||||
pc = static_cast<Ui::CButton*>(m_buttonUp);
|
||||
pc->Create(pos, dim, 49, EVENT_NULL); // ^
|
||||
pc->SetRepeat(true);
|
||||
|
||||
m_buttonDown = new CButton(m_iMan);
|
||||
pc = (CButton*)m_buttonDown;
|
||||
m_buttonDown = new Ui::CButton();
|
||||
pc = static_cast<Ui::CButton*>(m_buttonDown);
|
||||
pc->Create(pos, dim, 50, EVENT_NULL); // v
|
||||
pc->SetRepeat(true);
|
||||
|
||||
|
@ -151,11 +153,11 @@ bool CEditValue::EventProcess(const Event &event)
|
|||
|
||||
if ( m_edit != 0 )
|
||||
{
|
||||
if ( m_edit->RetFocus() &&
|
||||
event.event == EVENT_KEYDOWN &&
|
||||
event.param == VK_RETURN )
|
||||
if ( m_edit->GetFocus() &&
|
||||
event.type == EVENT_KEY_DOWN &&
|
||||
event.param == KEY(RETURN) )
|
||||
{
|
||||
value = RetValue();
|
||||
value = GetValue();
|
||||
if ( value > m_maxValue ) value = m_maxValue;
|
||||
if ( value < m_minValue ) value = m_minValue;
|
||||
SetValue(value, true);
|
||||
|
@ -163,19 +165,18 @@ bool CEditValue::EventProcess(const Event &event)
|
|||
}
|
||||
if ( !m_edit->EventProcess(event) ) return false;
|
||||
|
||||
if ( event.event == m_edit->RetEventMsg() )
|
||||
if ( event.type == m_edit->GetEventType() )
|
||||
{
|
||||
Event newEvent;
|
||||
m_event->MakeEvent(newEvent, m_eventMsg);
|
||||
Event newEvent(m_eventType);
|
||||
m_event->AddEvent(newEvent);
|
||||
}
|
||||
}
|
||||
|
||||
if ( m_buttonUp != 0 )
|
||||
{
|
||||
if ( event.event == m_buttonUp->RetEventMsg() )
|
||||
if ( event.type == m_buttonUp->GetEventType() )
|
||||
{
|
||||
value = RetValue()+m_stepValue;
|
||||
value = GetValue()+m_stepValue;
|
||||
if ( value > m_maxValue ) value = m_maxValue;
|
||||
SetValue(value, true);
|
||||
HiliteValue(event);
|
||||
|
@ -185,9 +186,9 @@ bool CEditValue::EventProcess(const Event &event)
|
|||
|
||||
if ( m_buttonDown != 0 )
|
||||
{
|
||||
if ( event.event == m_buttonDown->RetEventMsg() )
|
||||
if ( event.type == m_buttonDown->GetEventType() )
|
||||
{
|
||||
value = RetValue()-m_stepValue;
|
||||
value = GetValue()-m_stepValue;
|
||||
if ( value < m_minValue ) value = m_minValue;
|
||||
SetValue(value, true);
|
||||
HiliteValue(event);
|
||||
|
@ -195,20 +196,20 @@ bool CEditValue::EventProcess(const Event &event)
|
|||
if ( !m_buttonDown->EventProcess(event) ) return false;
|
||||
}
|
||||
|
||||
if ( event.event == EVENT_KEYDOWN &&
|
||||
event.param == VK_WHEELUP &&
|
||||
if ( event.type == EVENT_KEY_DOWN &&
|
||||
event.mouseButton.button == 4 &&
|
||||
Detect(event.pos) )
|
||||
{
|
||||
value = RetValue()+m_stepValue;
|
||||
value = GetValue()+m_stepValue;
|
||||
if ( value > m_maxValue ) value = m_maxValue;
|
||||
SetValue(value, true);
|
||||
HiliteValue(event);
|
||||
}
|
||||
if ( event.event == EVENT_KEYDOWN &&
|
||||
event.param == VK_WHEELDOWN &&
|
||||
if ( event.type == EVENT_KEY_DOWN &&
|
||||
event.mouseButton.button == 5 &&
|
||||
Detect(event.pos) )
|
||||
{
|
||||
value = RetValue()-m_stepValue;
|
||||
value = GetValue()-m_stepValue;
|
||||
if ( value < m_minValue ) value = m_minValue;
|
||||
SetValue(value, true);
|
||||
HiliteValue(event);
|
||||
|
@ -226,7 +227,7 @@ void CEditValue::HiliteValue(const Event &event)
|
|||
|
||||
if ( m_edit == 0 ) return;
|
||||
|
||||
pos = m_edit->RetTextLength();
|
||||
pos = m_edit->GetTextLength();
|
||||
if ( m_type == EVT_100 && pos > 0 )
|
||||
{
|
||||
pos --; // not only selects the "%"
|
||||
|
@ -236,8 +237,9 @@ void CEditValue::HiliteValue(const Event &event)
|
|||
m_edit->SetFocus(true);
|
||||
|
||||
Event newEvent = event;
|
||||
newEvent.event = EVENT_FOCUS;
|
||||
newEvent.param = m_edit->RetEventMsg();
|
||||
newEvent.type = EVENT_ACTIVE;
|
||||
newEvent.active.gain = true; // TODO not much pretty sure about it
|
||||
newEvent.param = m_edit->GetEventType();
|
||||
m_event->AddEvent(newEvent); // defocus the other objects
|
||||
}
|
||||
|
||||
|
@ -275,7 +277,7 @@ void CEditValue::SetType(EditValueType type)
|
|||
m_type = type;
|
||||
}
|
||||
|
||||
EditValueType CEditValue::RetType()
|
||||
EditValueType CEditValue::GetType()
|
||||
{
|
||||
return m_type;
|
||||
}
|
||||
|
@ -310,15 +312,14 @@ void CEditValue::SetValue(float value, bool bSendMessage)
|
|||
|
||||
if ( bSendMessage )
|
||||
{
|
||||
Event newEvent;
|
||||
m_event->MakeEvent(newEvent, m_eventMsg);
|
||||
Event newEvent(m_eventType);
|
||||
m_event->AddEvent(newEvent);
|
||||
}
|
||||
}
|
||||
|
||||
// Return the edited value.
|
||||
|
||||
float CEditValue::RetValue()
|
||||
float CEditValue::GetValue()
|
||||
{
|
||||
char text[100];
|
||||
float value;
|
||||
|
@ -345,7 +346,7 @@ void CEditValue::SetStepValue(float value)
|
|||
m_stepValue = value;
|
||||
}
|
||||
|
||||
float CEditValue::RetStepValue()
|
||||
float CEditValue::GetStepValue()
|
||||
{
|
||||
return m_stepValue;
|
||||
}
|
||||
|
@ -358,7 +359,7 @@ void CEditValue::SetMinValue(float value)
|
|||
m_minValue = value;
|
||||
}
|
||||
|
||||
float CEditValue::RetMinValue()
|
||||
float CEditValue::GetMinValue()
|
||||
{
|
||||
return m_minValue;
|
||||
}
|
||||
|
@ -371,8 +372,9 @@ void CEditValue::SetMaxValue(float value)
|
|||
m_maxValue = value;
|
||||
}
|
||||
|
||||
float CEditValue::RetMaxValue()
|
||||
float CEditValue::GetMaxValue()
|
||||
{
|
||||
return m_maxValue;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
// * This file is part of the COLOBOT source code
|
||||
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
|
||||
// * Copyright (C) 2012, Polish Portal of Colobot (PPC)
|
||||
// *
|
||||
// * This program is free software: you can redistribute it and/or modify
|
||||
// * it under the terms of the GNU General Public License as published by
|
||||
|
@ -22,6 +23,12 @@
|
|||
#include "ui/control.h"
|
||||
|
||||
|
||||
namespace Gfx{
|
||||
class CEngine;
|
||||
}
|
||||
|
||||
namespace Ui {
|
||||
|
||||
enum EditValueType
|
||||
{
|
||||
EVT_INT = 1, // integer
|
||||
|
@ -29,8 +36,6 @@ enum EditValueType
|
|||
EVT_100 = 3, // percent (0 .. 1)
|
||||
};
|
||||
|
||||
|
||||
class CD3DEngine;
|
||||
class CEdit;
|
||||
class CButton;
|
||||
|
||||
|
@ -39,10 +44,11 @@ class CButton;
|
|||
class CEditValue : public CControl
|
||||
{
|
||||
public:
|
||||
CEditValue(CInstanceManager* iMan);
|
||||
// CEditValue(CInstanceManager* iMan);
|
||||
CEditValue();
|
||||
virtual ~CEditValue();
|
||||
|
||||
bool Create(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
bool Create(Math::Point pos, Math::Point dim, int icon, EventType eventType);
|
||||
|
||||
void SetPos(Math::Point pos);
|
||||
void SetDim(Math::Point dim);
|
||||
|
@ -51,28 +57,28 @@ public:
|
|||
void Draw();
|
||||
|
||||
void SetType(EditValueType type);
|
||||
EditValueType RetType();
|
||||
EditValueType GetType();
|
||||
|
||||
void SetValue(float value, bool bSendMessage=false);
|
||||
float RetValue();
|
||||
float GetValue();
|
||||
|
||||
void SetStepValue(float value);
|
||||
float RetStepValue();
|
||||
float GetStepValue();
|
||||
|
||||
void SetMinValue(float value);
|
||||
float RetMinValue();
|
||||
float GetMinValue();
|
||||
|
||||
void SetMaxValue(float value);
|
||||
float RetMaxValue();
|
||||
float GetMaxValue();
|
||||
|
||||
protected:
|
||||
void MoveAdjust();
|
||||
void HiliteValue(const Event &event);
|
||||
|
||||
protected:
|
||||
CEdit* m_edit;
|
||||
CButton* m_buttonUp;
|
||||
CButton* m_buttonDown;
|
||||
Ui::CEdit* m_edit;
|
||||
Ui::CButton* m_buttonUp;
|
||||
Ui::CButton* m_buttonDown;
|
||||
|
||||
EditValueType m_type;
|
||||
float m_stepValue;
|
||||
|
@ -81,3 +87,4 @@ protected:
|
|||
};
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
// * This file is part of the COLOBOT source code
|
||||
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
|
||||
// * Copyright (C) 2012, Polish Portal of Colobot (PPC)
|
||||
// *
|
||||
// * This program is free software: you can redistribute it and/or modify
|
||||
// * it under the terms of the GNU General Public License as published by
|
||||
|
@ -17,13 +18,14 @@
|
|||
// gauge.cpp
|
||||
|
||||
|
||||
#include <windows.h>
|
||||
#include <stdio.h>
|
||||
#include <d3d.h>
|
||||
//#include <windows.h>
|
||||
//#include <stdio.h>
|
||||
//#include <d3d.h>
|
||||
|
||||
#include "common/struct.h"
|
||||
#include "old/d3dengine.h"
|
||||
#include "old/math3d.h"
|
||||
//#include "common/struct.h"
|
||||
//#include "old/d3dengine.h"
|
||||
#include "graphics/engine/engine.h"
|
||||
//#include "old/math3d.h"
|
||||
#include "common/event.h"
|
||||
#include "common/misc.h"
|
||||
#include "common/iman.h"
|
||||
|
@ -31,10 +33,11 @@
|
|||
|
||||
|
||||
|
||||
|
||||
namespace Ui {
|
||||
// Object's constructor.
|
||||
|
||||
CGauge::CGauge(CInstanceManager* iMan) : CControl(iMan)
|
||||
//CGauge::CGauge(CInstanceManager* iMan) : CControl(iMan)
|
||||
CGauge::CGauge() : CControl()
|
||||
{
|
||||
m_level = 0.0f;
|
||||
}
|
||||
|
@ -48,11 +51,11 @@ CGauge::~CGauge()
|
|||
|
||||
// Creates a new button.
|
||||
|
||||
bool CGauge::Create(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
bool CGauge::Create(Math::Point pos, Math::Point dim, int icon, EventType eventType)
|
||||
{
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
if ( eventType == EVENT_NULL ) eventType = GetUniqueEventType();
|
||||
|
||||
CControl::Create(pos, dim, icon, eventMsg);
|
||||
CControl::Create(pos, dim, icon, eventType);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -63,12 +66,12 @@ bool CGauge::EventProcess(const Event &event)
|
|||
{
|
||||
CControl::EventProcess(event);
|
||||
|
||||
if ( event.event == EVENT_LBUTTONDOWN )
|
||||
if ( event.type == EVENT_MOUSE_BUTTON_DOWN )
|
||||
{
|
||||
if ( CControl::Detect(event.pos) )
|
||||
{
|
||||
Event newEvent = event;
|
||||
newEvent.event = m_eventMsg;
|
||||
newEvent.type = m_eventType;
|
||||
m_event->AddEvent(newEvent);
|
||||
return false;
|
||||
}
|
||||
|
@ -88,47 +91,47 @@ void CGauge::Draw()
|
|||
if ( (m_state & STATE_VISIBLE) == 0 ) return;
|
||||
|
||||
m_engine->SetTexture("button2.tga");
|
||||
m_engine->SetState(D3DSTATENORMAL);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL);
|
||||
|
||||
dp = 0.5f/256.0f;
|
||||
|
||||
pos = m_pos;
|
||||
dim = m_dim;
|
||||
|
||||
uv1.x = 32.0f/256.0f;
|
||||
uv1.y = 32.0f/256.0f;
|
||||
uv2.x = 64.0f/256.0f;
|
||||
uv2.y = 64.0f/256.0f;
|
||||
uv1.x = 32.0f / 256.0f;
|
||||
uv1.y = 32.0f / 256.0f;
|
||||
uv2.x = 64.0f / 256.0f;
|
||||
uv2.y = 64.0f / 256.0f;
|
||||
|
||||
uv1.x += dp;
|
||||
uv1.y += dp;
|
||||
uv2.x -= dp;
|
||||
uv2.y -= dp;
|
||||
|
||||
corner.x = 10.0f/640.0f;
|
||||
corner.y = 10.0f/480.0f;
|
||||
corner.x = 10.0f / 640.0f;
|
||||
corner.y = 10.0f / 480.0f;
|
||||
|
||||
DrawIcon(pos, dim, uv1, uv2, corner, 8.0f/256.0f);
|
||||
|
||||
|
||||
pos.x += 3.0f/640.0f;
|
||||
pos.y += 3.0f/480.0f;
|
||||
dim.x -= 6.0f/640.0f;
|
||||
dim.y -= 6.0f/480.0f;
|
||||
pos.x += 3.0f / 640.0f;
|
||||
pos.y += 3.0f / 480.0f;
|
||||
dim.x -= 6.0f / 640.0f;
|
||||
dim.y -= 6.0f / 480.0f;
|
||||
|
||||
if ( m_dim.x < m_dim.y ) // vertical gauge?
|
||||
{
|
||||
uv1.x = (0.0f+m_icon*16.0f)/256.0f;
|
||||
uv2.x = uv1.x+16.0f/256.0f;
|
||||
uv1.y = 128.0f/256.0f+m_level*(64.0f/256.0f);
|
||||
uv2.y = uv1.y+64.0f/256.0f;
|
||||
uv1.x = (0.0f + m_icon * 16.0f) / 256.0f;
|
||||
uv2.x = uv1.x + 16.0f / 256.0f;
|
||||
uv1.y = 128.0f/256.0f + m_level * (64.0f/256.0f);
|
||||
uv2.y = uv1.y + 64.0f/256.0f;
|
||||
}
|
||||
else // horizontal gauge?
|
||||
{
|
||||
uv1.x = 64.0f/256.0f+(1.0f-m_level)*(64.0f/256.0f);
|
||||
uv2.x = uv1.x+64.0f/256.0f;
|
||||
uv1.y = (128.0f+m_icon*16.0f)/256.0f;
|
||||
uv2.y = uv1.y+16.0f/256.0f;
|
||||
uv1.x = 64.0f/256.0f + (1.0f - m_level) * (64.0f/256.0f);
|
||||
uv2.x = uv1.x + 64.0f/256.0f;
|
||||
uv1.y = (128.0f + m_icon*16.0f) / 256.0f;
|
||||
uv2.y = uv1.y + 16.0f/256.0f;
|
||||
}
|
||||
|
||||
uv1.x += dp;
|
||||
|
@ -149,9 +152,10 @@ void CGauge::SetLevel(float level)
|
|||
m_level = level;
|
||||
}
|
||||
|
||||
float CGauge::RetLevel()
|
||||
float CGauge::GetLevel()
|
||||
{
|
||||
return m_level;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
// * This file is part of the COLOBOT source code
|
||||
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
|
||||
// * Copyright (C) 2012, Polish Portal of Colobot (PPC)
|
||||
// *
|
||||
// * This program is free software: you can redistribute it and/or modify
|
||||
// * it under the terms of the GNU General Public License as published by
|
||||
|
@ -21,25 +22,27 @@
|
|||
|
||||
#include "ui/control.h"
|
||||
|
||||
namespace Gfx{
|
||||
class CEngine;
|
||||
};
|
||||
|
||||
class CD3DEngine;
|
||||
|
||||
|
||||
namespace Ui {
|
||||
|
||||
class CGauge : public CControl
|
||||
{
|
||||
public:
|
||||
CGauge(CInstanceManager* iMan);
|
||||
// CGauge(CInstanceManager* iMan);
|
||||
CGauge();
|
||||
virtual ~CGauge();
|
||||
|
||||
bool Create(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
bool Create(Math::Point pos, Math::Point dim, int icon, EventType eventType);
|
||||
|
||||
bool EventProcess(const Event &event);
|
||||
|
||||
void Draw();
|
||||
|
||||
void SetLevel(float level);
|
||||
float RetLevel();
|
||||
float GetLevel();
|
||||
|
||||
protected:
|
||||
|
||||
|
@ -48,3 +51,4 @@ protected:
|
|||
};
|
||||
|
||||
|
||||
}
|
||||
|
|
427
src/ui/group.cpp
427
src/ui/group.cpp
|
@ -17,13 +17,14 @@
|
|||
// group.cpp
|
||||
|
||||
|
||||
#include <windows.h>
|
||||
//#include <windows.h>
|
||||
#include <stdio.h>
|
||||
#include <d3d.h>
|
||||
//#include <d3d.h>
|
||||
|
||||
#include "common/struct.h"
|
||||
#include "old/d3dengine.h"
|
||||
#include "old/math3d.h"
|
||||
//#include "common/struct.h"
|
||||
//#include "old/d3dengine.h"
|
||||
#include "graphics/engine/engine.h"
|
||||
//#include "old/math3d.h"
|
||||
#include "common/event.h"
|
||||
#include "common/misc.h"
|
||||
#include "common/iman.h"
|
||||
|
@ -32,10 +33,11 @@
|
|||
|
||||
|
||||
|
||||
|
||||
namespace Ui {
|
||||
// Object's constructor.
|
||||
|
||||
CGroup::CGroup(CInstanceManager* iMan) : CControl(iMan)
|
||||
//CGroup::CGroup(CInstanceManager* iMan) : CControl(iMan)
|
||||
CGroup::CGroup() : CControl()
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -48,18 +50,18 @@ CGroup::~CGroup()
|
|||
|
||||
// Creates a new button.
|
||||
|
||||
bool CGroup::Create(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
bool CGroup::Create(Math::Point pos, Math::Point dim, int icon, EventType eventType)
|
||||
{
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
if ( eventType == EVENT_NULL ) eventType = GetUniqueEventType();
|
||||
|
||||
CControl::Create(pos, dim, icon, eventMsg);
|
||||
CControl::Create(pos, dim, icon, eventType);
|
||||
|
||||
if ( icon == -1 )
|
||||
{
|
||||
char name[100];
|
||||
char* p;
|
||||
|
||||
GetResource(RES_EVENT, eventMsg, name);
|
||||
GetResource(RES_EVENT, eventType, name);
|
||||
p = strchr(name, '\\');
|
||||
if ( p != 0 ) *p = 0;
|
||||
SetName(name);
|
||||
|
@ -92,16 +94,16 @@ void CGroup::Draw()
|
|||
DrawShadow(m_pos, m_dim);
|
||||
}
|
||||
|
||||
dp = 0.5f/256.0f;
|
||||
dp = 0.5f / 256.0f;
|
||||
|
||||
if ( m_icon == 0 ) // hollow frame?
|
||||
{
|
||||
m_engine->SetTexture("button2.tga");
|
||||
m_engine->SetState(D3DSTATENORMAL);
|
||||
uv1.x = 160.0f/256.0f;
|
||||
uv1.y = 192.0f/256.0f; // u-v texture
|
||||
uv2.x = 192.0f/256.0f;
|
||||
uv2.y = 224.0f/256.0f;
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL);
|
||||
uv1.x = 160.0f / 256.0f;
|
||||
uv1.y = 192.0f / 256.0f; // u-v texture
|
||||
uv2.x = 192.0f / 256.0f;
|
||||
uv2.y = 224.0f / 256.0f;
|
||||
uv1.x += dp;
|
||||
uv1.y += dp;
|
||||
uv2.x -= dp;
|
||||
|
@ -113,11 +115,11 @@ void CGroup::Draw()
|
|||
if ( m_icon == 1 ) // orange solid opaque?
|
||||
{
|
||||
m_engine->SetTexture("button2.tga");
|
||||
m_engine->SetState(D3DSTATENORMAL);
|
||||
uv1.x = 104.0f/256.0f;
|
||||
uv1.y = 48.0f/256.0f;
|
||||
uv2.x = 112.0f/256.0f;
|
||||
uv2.y = 64.0f/256.0f;
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL);
|
||||
uv1.x = 104.0f / 256.0f;
|
||||
uv1.y = 48.0f / 256.0f;
|
||||
uv2.x = 112.0f / 256.0f;
|
||||
uv2.y = 64.0f / 256.0f;
|
||||
uv1.x += dp;
|
||||
uv1.y += dp;
|
||||
uv2.x -= dp;
|
||||
|
@ -127,11 +129,11 @@ void CGroup::Draw()
|
|||
if ( m_icon == 2 ) // orange degrade -> transparent?
|
||||
{
|
||||
m_engine->SetTexture("button2.tga");
|
||||
m_engine->SetState(D3DSTATETTw);
|
||||
uv1.x = 112.0f/256.0f;
|
||||
uv1.y = 48.0f/256.0f;
|
||||
uv2.x = 120.0f/256.0f;
|
||||
uv2.y = 64.0f/256.0f;
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_TTEXTURE_WHITE);
|
||||
uv1.x = 112.0f / 256.0f;
|
||||
uv1.y = 48.0f / 256.0f;
|
||||
uv2.x = 120.0f / 256.0f;
|
||||
uv2.y = 64.0f / 256.0f;
|
||||
uv1.x += dp;
|
||||
uv1.y += dp;
|
||||
uv2.x -= dp;
|
||||
|
@ -141,11 +143,11 @@ void CGroup::Draw()
|
|||
if ( m_icon == 3 ) // transparent gradient -> gray?
|
||||
{
|
||||
m_engine->SetTexture("button2.tga");
|
||||
m_engine->SetState(D3DSTATETTw);
|
||||
uv1.x = 120.0f/256.0f;
|
||||
uv1.y = 48.0f/256.0f;
|
||||
uv2.x = 128.0f/256.0f;
|
||||
uv2.y = 64.0f/256.0f;
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_TTEXTURE_WHITE);
|
||||
uv1.x = 120.0f / 256.0f;
|
||||
uv1.y = 48.0f / 256.0f;
|
||||
uv2.x = 128.0f / 256.0f;
|
||||
uv2.y = 64.0f / 256.0f;
|
||||
uv1.x += dp;
|
||||
uv1.y += dp;
|
||||
uv2.x -= dp;
|
||||
|
@ -155,11 +157,11 @@ void CGroup::Draw()
|
|||
if ( m_icon == 4 ) // degrade blue corner?
|
||||
{
|
||||
m_engine->SetTexture("button2.tga");
|
||||
m_engine->SetState(D3DSTATETTw);
|
||||
uv1.x = 192.0f/256.0f;
|
||||
uv1.y = 128.0f/256.0f;
|
||||
uv2.x = 224.0f/256.0f;
|
||||
uv2.y = 160.0f/256.0f;
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_TTEXTURE_WHITE);
|
||||
uv1.x = 192.0f / 256.0f;
|
||||
uv1.y = 128.0f / 256.0f;
|
||||
uv2.x = 224.0f / 256.0f;
|
||||
uv2.y = 160.0f / 256.0f;
|
||||
uv1.x += dp;
|
||||
uv1.y += dp;
|
||||
uv2.x -= dp;
|
||||
|
@ -169,11 +171,11 @@ void CGroup::Draw()
|
|||
if ( m_icon == 5 ) // degrade orange corner?
|
||||
{
|
||||
m_engine->SetTexture("button2.tga");
|
||||
m_engine->SetState(D3DSTATETTw);
|
||||
uv1.x = 224.0f/256.0f;
|
||||
uv1.y = 128.0f/256.0f;
|
||||
uv2.x = 256.0f/256.0f;
|
||||
uv2.y = 160.0f/256.0f;
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_TTEXTURE_WHITE);
|
||||
uv1.x = 224.0f / 256.0f;
|
||||
uv1.y = 128.0f / 256.0f;
|
||||
uv2.x = 256.0f / 256.0f;
|
||||
uv2.y = 160.0f / 256.0f;
|
||||
uv1.x += dp;
|
||||
uv1.y += dp;
|
||||
uv2.x -= dp;
|
||||
|
@ -183,27 +185,27 @@ void CGroup::Draw()
|
|||
if ( m_icon == 6 )
|
||||
{
|
||||
m_engine->SetTexture("button2.tga");
|
||||
m_engine->SetState(D3DSTATETTb);
|
||||
uv1.x = 0.0f/256.0f; // brown transparent
|
||||
uv1.y = 75.0f/256.0f;
|
||||
uv2.x = 64.0f/256.0f;
|
||||
uv2.y = 128.0f/256.0f;
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_TTEXTURE_BLACK);
|
||||
uv1.x = 0.0f / 256.0f; // brown transparent
|
||||
uv1.y = 75.0f / 256.0f;
|
||||
uv2.x = 64.0f / 256.0f;
|
||||
uv2.y = 128.0f / 256.0f;
|
||||
uv1.x += dp;
|
||||
uv1.y += dp;
|
||||
uv2.x -= dp;
|
||||
uv2.y -= dp;
|
||||
corner.x = 4.0f/640.0f;
|
||||
corner.y = 4.0f/480.0f;
|
||||
corner.x = 4.0f / 640.0f;
|
||||
corner.y = 4.0f / 480.0f;
|
||||
DrawIcon(m_pos, m_dim, uv1, uv2, corner, 8.0f/256.0f);
|
||||
}
|
||||
if ( m_icon == 7 )
|
||||
{
|
||||
m_engine->SetTexture("button1.tga");
|
||||
m_engine->SetState(D3DSTATENORMAL);
|
||||
uv1.x = 64.0f/256.0f;
|
||||
uv1.y = 0.0f/256.0f;
|
||||
uv2.x = 96.0f/256.0f;
|
||||
uv2.y = 32.0f/256.0f;
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL);
|
||||
uv1.x = 64.0f / 256.0f;
|
||||
uv1.y = 0.0f / 256.0f;
|
||||
uv2.x = 96.0f / 256.0f;
|
||||
uv2.y = 32.0f / 256.0f;
|
||||
uv1.x += dp;
|
||||
uv1.y += dp;
|
||||
uv2.x -= dp;
|
||||
|
@ -213,11 +215,11 @@ void CGroup::Draw()
|
|||
if ( m_icon == 8 )
|
||||
{
|
||||
m_engine->SetTexture("button2.tga");
|
||||
m_engine->SetState(D3DSTATETTb);
|
||||
uv1.x = 64.0f/256.0f; // green transparent
|
||||
uv1.y = 160.0f/256.0f;
|
||||
uv2.x = 160.0f/256.0f;
|
||||
uv2.y = 176.0f/256.0f;
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_TTEXTURE_BLACK);
|
||||
uv1.x = 64.0f / 256.0f; // green transparent
|
||||
uv1.y = 160.0f / 256.0f;
|
||||
uv2.x = 160.0f / 256.0f;
|
||||
uv2.y = 176.0f / 256.0f;
|
||||
uv1.x += dp;
|
||||
uv1.y += dp;
|
||||
uv2.x -= dp;
|
||||
|
@ -227,8 +229,8 @@ void CGroup::Draw()
|
|||
if ( m_icon == 9 )
|
||||
{
|
||||
m_engine->SetTexture("button2.tga");
|
||||
m_engine->SetState(D3DSTATETTb);
|
||||
uv1.x = 64.0f/256.0f; // red transparent
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_TTEXTURE_BLACK);
|
||||
uv1.x = 64.0f / 256.0f; // red transparent
|
||||
uv1.y = 176.0f/256.0f;
|
||||
uv2.x = 160.0f/256.0f;
|
||||
uv2.y = 192.0f/256.0f;
|
||||
|
@ -241,11 +243,11 @@ void CGroup::Draw()
|
|||
if ( m_icon == 10 )
|
||||
{
|
||||
m_engine->SetTexture("button2.tga");
|
||||
m_engine->SetState(D3DSTATETTb);
|
||||
uv1.x = 64.0f/256.0f; // blue transparent
|
||||
uv1.y = 192.0f/256.0f;
|
||||
uv2.x = 160.0f/256.0f;
|
||||
uv2.y = 208.0f/256.0f;
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_TTEXTURE_BLACK);
|
||||
uv1.x = 64.0f / 256.0f; // blue transparent
|
||||
uv1.y = 192.0f / 256.0f;
|
||||
uv2.x = 160.0f / 256.0f;
|
||||
uv2.y = 208.0f / 256.0f;
|
||||
uv1.x += dp;
|
||||
uv1.y += dp;
|
||||
uv2.x -= dp;
|
||||
|
@ -255,11 +257,11 @@ void CGroup::Draw()
|
|||
if ( m_icon == 11 )
|
||||
{
|
||||
m_engine->SetTexture("button2.tga");
|
||||
m_engine->SetState(D3DSTATETTb);
|
||||
uv1.x = 64.0f/256.0f; // yellow transparent
|
||||
uv1.y = 224.0f/256.0f;
|
||||
uv2.x = 160.0f/256.0f;
|
||||
uv2.y = 240.0f/256.0f;
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_TTEXTURE_BLACK);
|
||||
uv1.x = 64.0f / 256.0f; // yellow transparent
|
||||
uv1.y = 224.0f / 256.0f;
|
||||
uv2.x = 160.0f / 256.0f;
|
||||
uv2.y = 240.0f / 256.0f;
|
||||
uv1.x += dp;
|
||||
uv1.y += dp;
|
||||
uv2.x -= dp;
|
||||
|
@ -268,17 +270,17 @@ void CGroup::Draw()
|
|||
}
|
||||
if ( m_icon == 12 ) // viewfinder cross?
|
||||
{
|
||||
dim.x = m_dim.x/2.0f;
|
||||
dim.y = m_dim.y/2.0f;
|
||||
dim.x = m_dim.x / 2.0f;
|
||||
dim.y = m_dim.y / 2.0f;
|
||||
|
||||
m_engine->SetTexture("mouse.tga");
|
||||
m_engine->SetState(D3DSTATETTb);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_TTEXTURE_BLACK);
|
||||
pos.x = m_pos.x-m_dim.x/300.0f;
|
||||
pos.y = m_pos.y+m_dim.y/300.0f+dim.y;
|
||||
uv1.x = 0.5f/256.0f;
|
||||
uv1.y = 192.5f/256.0f;
|
||||
uv2.x = 63.5f/256.0f;
|
||||
uv2.y = 255.5f/256.0f;
|
||||
uv1.x = 0.5f / 256.0f;
|
||||
uv1.y = 192.5f / 256.0f;
|
||||
uv2.x = 63.5f / 256.0f;
|
||||
uv2.y = 255.5f / 256.0f;
|
||||
DrawIcon(pos, dim, uv1, uv2); // ul
|
||||
pos.x += dim.x;
|
||||
Math::Swap(uv1.x, uv2.x);
|
||||
|
@ -290,13 +292,13 @@ void CGroup::Draw()
|
|||
Math::Swap(uv1.x, uv2.x);
|
||||
DrawIcon(pos, dim, uv1, uv2); // dl
|
||||
|
||||
m_engine->SetState(D3DSTATETTw);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_TTEXTURE_WHITE);
|
||||
pos.x = m_pos.x+m_dim.x/300.0f;
|
||||
pos.y = m_pos.y-m_dim.y/300.0f+dim.y;
|
||||
uv1.x = 64.5f/256.0f;
|
||||
uv1.y = 192.5f/256.0f;
|
||||
uv2.x = 127.5f/256.0f;
|
||||
uv2.y = 255.5f/256.0f;
|
||||
uv1.x = 64.5f / 256.0f;
|
||||
uv1.y = 192.5f / 256.0f;
|
||||
uv2.x = 127.5f / 256.0f;
|
||||
uv2.y = 255.5f / 256.0f;
|
||||
DrawIcon(pos, dim, uv1, uv2); // ul
|
||||
pos.x += dim.x;
|
||||
Math::Swap(uv1.x, uv2.x);
|
||||
|
@ -311,111 +313,111 @@ void CGroup::Draw()
|
|||
if ( m_icon == 13 ) // corner upper / left?
|
||||
{
|
||||
m_engine->SetTexture("mouse.tga");
|
||||
m_engine->SetState(D3DSTATETTb);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_TTEXTURE_BLACK);
|
||||
pos.x = m_pos.x-m_dim.x/150.0f;
|
||||
pos.y = m_pos.y+m_dim.y/150.0f;
|
||||
uv1.x = 128.5f/256.0f;
|
||||
uv1.y = 192.5f/256.0f;
|
||||
uv2.x = 191.5f/256.0f;
|
||||
uv2.y = 255.5f/256.0f;
|
||||
uv1.x = 128.5f / 256.0f;
|
||||
uv1.y = 192.5f / 256.0f;
|
||||
uv2.x = 191.5f / 256.0f;
|
||||
uv2.y = 255.5f / 256.0f;
|
||||
DrawIcon(pos, m_dim, uv1, uv2);
|
||||
|
||||
m_engine->SetState(D3DSTATETTw);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_TTEXTURE_WHITE);
|
||||
pos.x = m_pos.x+m_dim.x/150.0f;
|
||||
pos.y = m_pos.y-m_dim.y/150.0f;
|
||||
uv1.x = 192.5f/256.0f;
|
||||
uv1.y = 192.5f/256.0f;
|
||||
uv2.x = 255.5f/256.0f;
|
||||
uv2.y = 255.5f/256.0f;
|
||||
uv1.x = 192.5f / 256.0f;
|
||||
uv1.y = 192.5f / 256.0f;
|
||||
uv2.x = 255.5f / 256.0f;
|
||||
uv2.y = 255.5f / 256.0f;
|
||||
DrawIcon(pos, m_dim, uv1, uv2);
|
||||
}
|
||||
if ( m_icon == 14 ) // corner upper / right?
|
||||
{
|
||||
m_engine->SetTexture("mouse.tga");
|
||||
m_engine->SetState(D3DSTATETTb);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_TTEXTURE_BLACK);
|
||||
pos.x = m_pos.x-m_dim.x/150.0f;
|
||||
pos.y = m_pos.y+m_dim.y/150.0f;
|
||||
uv2.x = 128.5f/256.0f;
|
||||
uv1.y = 192.5f/256.0f;
|
||||
uv1.x = 191.5f/256.0f;
|
||||
uv2.y = 255.5f/256.0f;
|
||||
uv2.x = 128.5f / 256.0f;
|
||||
uv1.y = 192.5f / 256.0f;
|
||||
uv1.x = 191.5f / 256.0f;
|
||||
uv2.y = 255.5f / 256.0f;
|
||||
DrawIcon(pos, m_dim, uv1, uv2);
|
||||
|
||||
m_engine->SetState(D3DSTATETTw);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_TTEXTURE_WHITE);
|
||||
pos.x = m_pos.x+m_dim.x/150.0f;
|
||||
pos.y = m_pos.y-m_dim.y/150.0f;
|
||||
uv2.x = 192.5f/256.0f;
|
||||
uv1.y = 192.5f/256.0f;
|
||||
uv1.x = 255.5f/256.0f;
|
||||
uv2.y = 255.5f/256.0f;
|
||||
uv2.x = 192.5f / 256.0f;
|
||||
uv1.y = 192.5f / 256.0f;
|
||||
uv1.x = 255.5f / 256.0f;
|
||||
uv2.y = 255.5f / 256.0f;
|
||||
DrawIcon(pos, m_dim, uv1, uv2);
|
||||
}
|
||||
if ( m_icon == 15 ) // corner lower / left?
|
||||
{
|
||||
m_engine->SetTexture("mouse.tga");
|
||||
m_engine->SetState(D3DSTATETTb);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_TTEXTURE_BLACK);
|
||||
pos.x = m_pos.x-m_dim.x/150.0f;
|
||||
pos.y = m_pos.y+m_dim.y/150.0f;
|
||||
uv1.x = 128.5f/256.0f;
|
||||
uv2.y = 192.5f/256.0f;
|
||||
uv2.x = 191.5f/256.0f;
|
||||
uv1.y = 255.5f/256.0f;
|
||||
uv1.x = 128.5f / 256.0f;
|
||||
uv2.y = 192.5f / 256.0f;
|
||||
uv2.x = 191.5f / 256.0f;
|
||||
uv1.y = 255.5f / 256.0f;
|
||||
DrawIcon(pos, m_dim, uv1, uv2);
|
||||
|
||||
m_engine->SetState(D3DSTATETTw);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_TTEXTURE_WHITE);
|
||||
pos.x = m_pos.x+m_dim.x/150.0f;
|
||||
pos.y = m_pos.y-m_dim.y/150.0f;
|
||||
uv1.x = 192.5f/256.0f;
|
||||
uv2.y = 192.5f/256.0f;
|
||||
uv2.x = 255.5f/256.0f;
|
||||
uv1.y = 255.5f/256.0f;
|
||||
uv1.x = 192.5f / 256.0f;
|
||||
uv2.y = 192.5f / 256.0f;
|
||||
uv2.x = 255.5f / 256.0f;
|
||||
uv1.y = 255.5f / 256.0f;
|
||||
DrawIcon(pos, m_dim, uv1, uv2);
|
||||
}
|
||||
if ( m_icon == 16 ) // corner lower / left?
|
||||
{
|
||||
m_engine->SetTexture("mouse.tga");
|
||||
m_engine->SetState(D3DSTATETTb);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_TTEXTURE_BLACK);
|
||||
pos.x = m_pos.x-m_dim.x/150.0f;
|
||||
pos.y = m_pos.y+m_dim.y/150.0f;
|
||||
uv2.x = 128.5f/256.0f;
|
||||
uv2.y = 192.5f/256.0f;
|
||||
uv1.x = 191.5f/256.0f;
|
||||
uv1.y = 255.5f/256.0f;
|
||||
uv2.x = 128.5f / 256.0f;
|
||||
uv2.y = 192.5f / 256.0f;
|
||||
uv1.x = 191.5f / 256.0f;
|
||||
uv1.y = 255.5f / 256.0f;
|
||||
DrawIcon(pos, m_dim, uv1, uv2);
|
||||
|
||||
m_engine->SetState(D3DSTATETTw);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_TTEXTURE_WHITE);
|
||||
pos.x = m_pos.x+m_dim.x/150.0f;
|
||||
pos.y = m_pos.y-m_dim.y/150.0f;
|
||||
uv2.x = 192.5f/256.0f;
|
||||
uv2.y = 192.5f/256.0f;
|
||||
uv1.x = 255.5f/256.0f;
|
||||
uv1.y = 255.5f/256.0f;
|
||||
uv2.x = 192.5f / 256.0f;
|
||||
uv2.y = 192.5f / 256.0f;
|
||||
uv1.x = 255.5f / 256.0f;
|
||||
uv1.y = 255.5f / 256.0f;
|
||||
DrawIcon(pos, m_dim, uv1, uv2);
|
||||
}
|
||||
if ( m_icon == 17 )
|
||||
{
|
||||
m_engine->SetTexture("button2.tga");
|
||||
m_engine->SetState(D3DSTATENORMAL);
|
||||
uv1.x = 0.0f/256.0f; // blue frame
|
||||
uv1.y = 75.0f/256.0f;
|
||||
uv2.x = 64.0f/256.0f;
|
||||
uv2.y = 128.0f/256.0f;
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL);
|
||||
uv1.x = 0.0f / 256.0f; // blue frame
|
||||
uv1.y = 75.0f / 256.0f;
|
||||
uv2.x = 64.0f / 256.0f;
|
||||
uv2.y = 128.0f / 256.0f;
|
||||
uv1.x += dp;
|
||||
uv1.y += dp;
|
||||
uv2.x -= dp;
|
||||
uv2.y -= dp;
|
||||
corner.x = 6.0f/640.0f;
|
||||
corner.y = 6.0f/480.0f;
|
||||
corner.x = 6.0f / 640.0f;
|
||||
corner.y = 6.0f / 480.0f;
|
||||
DrawIcon(m_pos, m_dim, uv1, uv2, corner, 2.0f/256.0f);
|
||||
}
|
||||
if ( m_icon == 18 ) // arrow> for SatCom?
|
||||
{
|
||||
m_engine->SetTexture("button1.tga");
|
||||
m_engine->SetState(D3DSTATETTw);
|
||||
uv1.x = 0.0f/256.0f; // >
|
||||
uv1.y = 192.0f/256.0f;
|
||||
uv2.x = 32.0f/256.0f;
|
||||
uv2.y = 224.0f/256.0f;
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_TTEXTURE_WHITE);
|
||||
uv1.x = 0.0f / 256.0f; // >
|
||||
uv1.y = 192.0f / 256.0f;
|
||||
uv2.x = 32.0f / 256.0f;
|
||||
uv2.y = 224.0f / 256.0f;
|
||||
uv1.x += dp;
|
||||
uv1.y += dp;
|
||||
uv2.x -= dp;
|
||||
|
@ -425,11 +427,11 @@ void CGroup::Draw()
|
|||
if ( m_icon == 19 ) // SatCom symbol?
|
||||
{
|
||||
m_engine->SetTexture("button1.tga");
|
||||
m_engine->SetState(D3DSTATETTw);
|
||||
uv1.x = 224.0f/256.0f; // SatCom symbol
|
||||
uv1.y = 224.0f/256.0f;
|
||||
uv2.x = 256.0f/256.0f;
|
||||
uv2.y = 256.0f/256.0f;
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_TTEXTURE_WHITE);
|
||||
uv1.x = 224.0f / 256.0f; // SatCom symbol
|
||||
uv1.y = 224.0f / 256.0f;
|
||||
uv2.x = 256.0f / 256.0f;
|
||||
uv2.y = 256.0f / 256.0f;
|
||||
uv1.x += dp;
|
||||
uv1.y += dp;
|
||||
uv2.x -= dp;
|
||||
|
@ -439,11 +441,11 @@ void CGroup::Draw()
|
|||
if ( m_icon == 20 ) // solid blue background?
|
||||
{
|
||||
m_engine->SetTexture("button1.tga");
|
||||
m_engine->SetState(D3DSTATETTw);
|
||||
uv1.x = 224.0f/256.0f;
|
||||
uv1.y = 32.0f/256.0f;
|
||||
uv2.x = 256.0f/256.0f;
|
||||
uv2.y = 64.0f/256.0f;
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_TTEXTURE_WHITE);
|
||||
uv1.x = 224.0f / 256.0f;
|
||||
uv1.y = 32.0f / 256.0f;
|
||||
uv2.x = 256.0f / 256.0f;
|
||||
uv2.y = 64.0f / 256.0f;
|
||||
uv1.x += dp;
|
||||
uv1.y += dp;
|
||||
uv2.x -= dp;
|
||||
|
@ -453,11 +455,11 @@ void CGroup::Draw()
|
|||
if ( m_icon == 21 ) // stand-by symbol?
|
||||
{
|
||||
m_engine->SetTexture("button2.tga");
|
||||
m_engine->SetState(D3DSTATETTw);
|
||||
uv1.x = 160.0f/256.0f;
|
||||
uv1.y = 32.0f/256.0f;
|
||||
uv2.x = 192.0f/256.0f;
|
||||
uv2.y = 64.0f/256.0f;
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_TTEXTURE_WHITE);
|
||||
uv1.x = 160.0f / 256.0f;
|
||||
uv1.y = 32.0f / 256.0f;
|
||||
uv2.x = 192.0f / 256.0f;
|
||||
uv2.y = 64.0f / 256.0f;
|
||||
uv1.x += dp;
|
||||
uv1.y += dp;
|
||||
uv2.x -= dp;
|
||||
|
@ -467,92 +469,92 @@ void CGroup::Draw()
|
|||
if ( m_icon == 22 )
|
||||
{
|
||||
m_engine->SetTexture("button2.tga");
|
||||
m_engine->SetState(D3DSTATENORMAL);
|
||||
uv1.x = 64.0f/256.0f; // opaque yellow
|
||||
uv1.y = 224.0f/256.0f;
|
||||
uv2.x = 160.0f/256.0f;
|
||||
uv2.y = 240.0f/256.0f;
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL);
|
||||
uv1.x = 64.0f / 256.0f; // opaque yellow
|
||||
uv1.y = 224.0f / 256.0f;
|
||||
uv2.x = 160.0f / 256.0f;
|
||||
uv2.y = 240.0f / 256.0f;
|
||||
uv1.x += dp;
|
||||
uv1.y += dp;
|
||||
uv2.x -= dp;
|
||||
uv2.y -= dp;
|
||||
corner.x = 5.0f/640.0f;
|
||||
corner.y = 5.0f/480.0f;
|
||||
corner.x = 5.0f / 640.0f;
|
||||
corner.y = 5.0f / 480.0f;
|
||||
DrawIcon(m_pos, m_dim, uv1, uv2, corner, 3.0f/256.0f);
|
||||
}
|
||||
|
||||
if ( m_icon == 23 )
|
||||
{
|
||||
m_engine->SetTexture("button3.tga");
|
||||
m_engine->SetState(D3DSTATENORMAL);
|
||||
uv1.x = 64.0f/256.0f; // yellow
|
||||
uv1.y = 192.0f/256.0f;
|
||||
uv2.x = 80.0f/256.0f;
|
||||
uv2.y = 208.0f/256.0f;
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL);
|
||||
uv1.x = 64.0f / 256.0f; // yellow
|
||||
uv1.y = 192.0f / 256.0f;
|
||||
uv2.x = 80.0f / 256.0f;
|
||||
uv2.y = 208.0f / 256.0f;
|
||||
uv1.x += dp;
|
||||
uv1.y += dp;
|
||||
uv2.x -= dp;
|
||||
uv2.y -= dp;
|
||||
corner.x = 4.0f/640.0f;
|
||||
corner.y = 4.0f/480.0f;
|
||||
corner.x = 4.0f / 640.0f;
|
||||
corner.y = 4.0f / 480.0f;
|
||||
DrawIcon(m_pos, m_dim, uv1, uv2, corner, 2.0f/256.0f);
|
||||
}
|
||||
if ( m_icon == 24 )
|
||||
{
|
||||
m_engine->SetTexture("button3.tga");
|
||||
m_engine->SetState(D3DSTATENORMAL);
|
||||
uv1.x = 80.0f/256.0f; // orange
|
||||
uv1.y = 192.0f/256.0f;
|
||||
uv2.x = 96.0f/256.0f;
|
||||
uv2.y = 208.0f/256.0f;
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL);
|
||||
uv1.x = 80.0f / 256.0f; // orange
|
||||
uv1.y = 192.0f / 256.0f;
|
||||
uv2.x = 96.0f / 256.0f;
|
||||
uv2.y = 208.0f / 256.0f;
|
||||
uv1.x += dp;
|
||||
uv1.y += dp;
|
||||
uv2.x -= dp;
|
||||
uv2.y -= dp;
|
||||
corner.x = 4.0f/640.0f;
|
||||
corner.y = 4.0f/480.0f;
|
||||
corner.x = 4.0f / 640.0f;
|
||||
corner.y = 4.0f / 480.0f;
|
||||
DrawIcon(m_pos, m_dim, uv1, uv2, corner, 2.0f/256.0f);
|
||||
}
|
||||
if ( m_icon == 25 )
|
||||
{
|
||||
m_engine->SetTexture("button3.tga");
|
||||
m_engine->SetState(D3DSTATENORMAL);
|
||||
uv1.x = 64.0f/256.0f; // orange
|
||||
uv1.y = 208.0f/256.0f;
|
||||
uv2.x = 80.0f/256.0f;
|
||||
uv2.y = 224.0f/256.0f;
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL);
|
||||
uv1.x = 64.0f / 256.0f; // orange
|
||||
uv1.y = 208.0f / 256.0f;
|
||||
uv2.x = 80.0f / 256.0f;
|
||||
uv2.y = 224.0f / 256.0f;
|
||||
uv1.x += dp;
|
||||
uv1.y += dp;
|
||||
uv2.x -= dp;
|
||||
uv2.y -= dp;
|
||||
corner.x = 4.0f/640.0f;
|
||||
corner.y = 4.0f/480.0f;
|
||||
corner.x = 4.0f / 640.0f;
|
||||
corner.y = 4.0f / 480.0f;
|
||||
DrawIcon(m_pos, m_dim, uv1, uv2, corner, 2.0f/256.0f);
|
||||
}
|
||||
if ( m_icon == 26 )
|
||||
{
|
||||
m_engine->SetTexture("button3.tga");
|
||||
m_engine->SetState(D3DSTATENORMAL);
|
||||
uv1.x = 80.0f/256.0f; // red
|
||||
uv1.y = 208.0f/256.0f;
|
||||
uv2.x = 96.0f/256.0f;
|
||||
uv2.y = 224.0f/256.0f;
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL);
|
||||
uv1.x = 80.0f / 256.0f; // red
|
||||
uv1.y = 208.0f / 256.0f;
|
||||
uv2.x = 96.0f / 256.0f;
|
||||
uv2.y = 224.0f / 256.0f;
|
||||
uv1.x += dp;
|
||||
uv1.y += dp;
|
||||
uv2.x -= dp;
|
||||
uv2.y -= dp;
|
||||
corner.x = 4.0f/640.0f;
|
||||
corner.y = 4.0f/480.0f;
|
||||
corner.x = 4.0f / 640.0f;
|
||||
corner.y = 4.0f / 480.0f;
|
||||
DrawIcon(m_pos, m_dim, uv1, uv2, corner, 2.0f/256.0f);
|
||||
}
|
||||
if ( m_icon == 27 )
|
||||
{
|
||||
m_engine->SetTexture("button3.tga");
|
||||
m_engine->SetState(D3DSTATENORMAL);
|
||||
uv1.x = 32.0f/256.0f;
|
||||
uv1.y = 0.0f/256.0f;
|
||||
uv2.x = 64.0f/256.0f;
|
||||
uv2.y = 32.0f/256.0f;
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL);
|
||||
uv1.x = 32.0f / 256.0f;
|
||||
uv1.y = 0.0f / 256.0f;
|
||||
uv2.x = 64.0f / 256.0f;
|
||||
uv2.y = 32.0f / 256.0f;
|
||||
uv1.x += dp;
|
||||
uv1.y += dp;
|
||||
uv2.x -= dp;
|
||||
|
@ -566,9 +568,9 @@ void CGroup::Draw()
|
|||
dim = m_dim;
|
||||
|
||||
m_engine->SetTexture("button2.tga");
|
||||
m_engine->SetState(D3DSTATENORMAL);
|
||||
uv1.x = 32.0f/256.0f;
|
||||
uv1.y = 32.0f/256.0f;
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL);
|
||||
uv1.x = 32.0f / 256.0f;
|
||||
uv1.y = 32.0f / 256.0f;
|
||||
uv2.x = uv1.x+32.0f/256.0f;
|
||||
uv2.y = uv1.y+32.0f/256.0f;
|
||||
uv1.x += dp;
|
||||
|
@ -578,13 +580,13 @@ void CGroup::Draw()
|
|||
DrawIcon(pos, dim, uv1, uv2);
|
||||
|
||||
m_engine->SetTexture("button3.tga");
|
||||
m_engine->SetState(D3DSTATENORMAL);
|
||||
pos.x += 8.0f/640.0f;
|
||||
pos.y += 8.0f/480.0f;
|
||||
dim.x -= 16.0f/640.0f;
|
||||
dim.y -= 16.0f/480.0f;
|
||||
uv1.x = 32.0f/256.0f;
|
||||
uv1.y = 0.0f/256.0f;
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL);
|
||||
pos.x += 8.0f / 640.0f;
|
||||
pos.y += 8.0f / 480.0f;
|
||||
dim.x -= 16.0f / 640.0f;
|
||||
dim.y -= 16.0f / 480.0f;
|
||||
uv1.x = 32.0f / 256.0f;
|
||||
uv1.y = 0.0f / 256.0f;
|
||||
uv2.x = uv1.x+32.0f/256.0f;
|
||||
uv2.y = uv1.y+32.0f/256.0f;
|
||||
uv1.x += dp;
|
||||
|
@ -593,13 +595,13 @@ void CGroup::Draw()
|
|||
uv2.y -= dp;
|
||||
DrawIcon(pos, dim, uv1, uv2);
|
||||
|
||||
m_engine->SetState(D3DSTATENORMAL);
|
||||
pos.x += 2.0f/640.0f;
|
||||
pos.y += 2.0f/480.0f;
|
||||
dim.x -= 4.0f/640.0f;
|
||||
dim.y -= 4.0f/480.0f;
|
||||
uv1.x = 0.0f/256.0f;
|
||||
uv1.y = 0.0f/256.0f;
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL);
|
||||
pos.x += 2.0f / 640.0f;
|
||||
pos.y += 2.0f / 480.0f;
|
||||
dim.x -= 4.0f / 640.0f;
|
||||
dim.y -= 4.0f / 480.0f;
|
||||
uv1.x = 0.0f / 256.0f;
|
||||
uv1.y = 0.0f / 256.0f;
|
||||
uv2.x = uv1.x+32.0f/256.0f;
|
||||
uv2.y = uv1.y+32.0f/256.0f;
|
||||
uv1.x += dp;
|
||||
|
@ -608,11 +610,11 @@ void CGroup::Draw()
|
|||
uv2.y -= dp;
|
||||
DrawIcon(pos, dim, uv1, uv2);
|
||||
|
||||
m_engine->SetState(D3DSTATETTb);
|
||||
pos.x += 8.0f/640.0f;
|
||||
pos.y += 8.0f/480.0f;
|
||||
dim.x -= 16.0f/640.0f;
|
||||
dim.y -= 16.0f/480.0f;
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_TTEXTURE_BLACK);
|
||||
pos.x += 8.0f / 640.0f;
|
||||
pos.y += 8.0f / 480.0f;
|
||||
dim.x -= 16.0f / 640.0f;
|
||||
dim.y -= 16.0f / 480.0f;
|
||||
if ( m_icon == 100 ) icon = 43; // base ?
|
||||
if ( m_icon == 101 ) icon = 32; // factory ?
|
||||
if ( m_icon == 102 ) icon = 35; // research ?
|
||||
|
@ -642,3 +644,4 @@ void CGroup::Draw()
|
|||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -21,18 +21,20 @@
|
|||
|
||||
#include "ui/control.h"
|
||||
|
||||
namespace Gfx{
|
||||
class CEngine;
|
||||
};
|
||||
|
||||
class CD3DEngine;
|
||||
|
||||
|
||||
namespace Ui {
|
||||
|
||||
class CGroup : public CControl
|
||||
{
|
||||
public:
|
||||
CGroup(CInstanceManager* iMan);
|
||||
// CGroup(CInstanceManager* iMan);
|
||||
CGroup();
|
||||
virtual ~CGroup();
|
||||
|
||||
bool Create(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
bool Create(Math::Point pos, Math::Point dim, int icon, EventType eventType);
|
||||
|
||||
bool EventProcess(const Event &event);
|
||||
|
||||
|
@ -44,3 +46,4 @@ protected:
|
|||
};
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
// * This file is part of the COLOBOT source code
|
||||
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
|
||||
// * Copyright (C) 2012, Polish Portal of Colobot (PPC)
|
||||
// *
|
||||
// * This program is free software: you can redistribute it and/or modify
|
||||
// * it under the terms of the GNU General Public License as published by
|
||||
|
@ -17,13 +18,14 @@
|
|||
// image.cpp
|
||||
|
||||
|
||||
#include <windows.h>
|
||||
//#include <windows.h>
|
||||
#include <stdio.h>
|
||||
#include <d3d.h>
|
||||
//#include <d3d.h>
|
||||
|
||||
#include "common/struct.h"
|
||||
#include "old/d3dengine.h"
|
||||
#include "old/math3d.h"
|
||||
//#include "common/struct.h"
|
||||
//#include "old/d3dengine.h"
|
||||
#include "graphics/engine/engine.h"
|
||||
//#include "old/math3d.h"
|
||||
#include "common/event.h"
|
||||
#include "common/misc.h"
|
||||
#include "common/iman.h"
|
||||
|
@ -32,10 +34,11 @@
|
|||
|
||||
|
||||
|
||||
|
||||
namespace Ui {
|
||||
// Object's constructor.
|
||||
|
||||
CImage::CImage(CInstanceManager* iMan) : CControl(iMan)
|
||||
//CImage::CImage(CInstanceManager* iMan) : CControl(iMan)
|
||||
CImage::CImage() : CControl()
|
||||
{
|
||||
m_filename[0] = 0;
|
||||
}
|
||||
|
@ -46,25 +49,25 @@ CImage::~CImage()
|
|||
{
|
||||
if ( m_filename[0] != 0 )
|
||||
{
|
||||
m_engine->FreeTexture(m_filename);
|
||||
m_engine->DeleteTexture(m_filename);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Creates a new button.
|
||||
|
||||
bool CImage::Create(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
bool CImage::Create(Math::Point pos, Math::Point dim, int icon, EventType eventType)
|
||||
{
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
if ( eventType == EVENT_NULL ) eventType = GetUniqueEventType();
|
||||
|
||||
CControl::Create(pos, dim, icon, eventMsg);
|
||||
CControl::Create(pos, dim, icon, eventType);
|
||||
|
||||
if ( icon == -1 )
|
||||
{
|
||||
char name[100];
|
||||
char* p;
|
||||
|
||||
GetResource(RES_EVENT, eventMsg, name);
|
||||
GetResource(RES_EVENT, eventType, name);
|
||||
p = strchr(name, '\\');
|
||||
if ( p != 0 ) *p = 0;
|
||||
SetName(name);
|
||||
|
@ -80,13 +83,13 @@ void CImage::SetFilenameImage(char *name)
|
|||
{
|
||||
if ( m_filename[0] != 0 )
|
||||
{
|
||||
m_engine->FreeTexture(m_filename);
|
||||
m_engine->DeleteTexture(m_filename);
|
||||
}
|
||||
|
||||
strcpy(m_filename, name);
|
||||
}
|
||||
|
||||
char* CImage::RetFilenameImage()
|
||||
char* CImage::GetFilenameImage()
|
||||
{
|
||||
return m_filename;
|
||||
}
|
||||
|
@ -119,17 +122,17 @@ void CImage::Draw()
|
|||
if ( m_icon == 0 ) // hollow frame?
|
||||
{
|
||||
m_engine->SetTexture("button2.tga");
|
||||
m_engine->SetState(D3DSTATENORMAL);
|
||||
uv1.x = 160.0f/256.0f;
|
||||
uv1.y = 192.0f/256.0f; // u-v texture
|
||||
uv2.x = 192.0f/256.0f;
|
||||
uv2.y = 224.0f/256.0f;
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL);
|
||||
uv1.x = 160.0f / 256.0f;
|
||||
uv1.y = 192.0f / 256.0f; // u-v texture
|
||||
uv2.x = 192.0f / 256.0f;
|
||||
uv2.y = 224.0f / 256.0f;
|
||||
uv1.x += dp;
|
||||
uv1.y += dp;
|
||||
uv2.x -= dp;
|
||||
uv2.y -= dp;
|
||||
corner.x = 10.0f/640.0f;
|
||||
corner.y = 10.0f/480.0f;
|
||||
corner.x = 10.0f / 640.0f;
|
||||
corner.y = 10.0f / 480.0f;
|
||||
DrawIcon(m_pos, m_dim, uv1, uv2, corner, 8.0f/256.0f);
|
||||
}
|
||||
|
||||
|
@ -137,13 +140,13 @@ void CImage::Draw()
|
|||
{
|
||||
m_engine->LoadTexture(m_filename);
|
||||
m_engine->SetTexture(m_filename);
|
||||
m_engine->SetState(D3DSTATENORMAL);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL);
|
||||
pos = m_pos;
|
||||
dim = m_dim;
|
||||
pos.x += 5.0f/640.0f;
|
||||
pos.y += 5.0f/480.0f;
|
||||
dim.x -= 10.0f/640.0f;
|
||||
dim.y -= 10.0f/480.0f;
|
||||
pos.x += 5.0f / 640.0f;
|
||||
pos.y += 5.0f / 480.0f;
|
||||
dim.x -= 10.0f / 640.0f;
|
||||
dim.y -= 10.0f / 480.0f;
|
||||
uv1.x = 0.0f;
|
||||
uv1.y = 0.0f;
|
||||
uv2.x = 1.0f;
|
||||
|
@ -153,3 +156,4 @@ void CImage::Draw()
|
|||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
// * This file is part of the COLOBOT source code
|
||||
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
|
||||
// * Copyright (C) 2012, Polish Portal of Colobot (PPC)
|
||||
// *
|
||||
// * This program is free software: you can redistribute it and/or modify
|
||||
// * it under the terms of the GNU General Public License as published by
|
||||
|
@ -21,25 +22,28 @@
|
|||
|
||||
#include "ui/control.h"
|
||||
|
||||
|
||||
class CD3DEngine;
|
||||
namespace Gfx{
|
||||
class CEngine;
|
||||
};
|
||||
|
||||
|
||||
namespace Ui {
|
||||
|
||||
class CImage : public CControl
|
||||
{
|
||||
public:
|
||||
CImage(CInstanceManager* iMan);
|
||||
// CImage(CInstanceManager* iMan);
|
||||
CImage ();
|
||||
virtual ~CImage();
|
||||
|
||||
bool Create(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
bool Create(Math::Point pos, Math::Point dim, int icon, EventType eventType);
|
||||
|
||||
bool EventProcess(const Event &event);
|
||||
|
||||
void Draw();
|
||||
|
||||
void SetFilenameImage(char *name);
|
||||
char* RetFilenameImage();
|
||||
char* GetFilenameImage();
|
||||
|
||||
protected:
|
||||
|
||||
|
@ -48,3 +52,4 @@ protected:
|
|||
};
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
// * This file is part of the COLOBOT source code
|
||||
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
|
||||
// * Copyright (C) 2012 Polish Portal of Colobot (PPC)
|
||||
// *
|
||||
// * This program is free software: you can redistribute it and/or modify
|
||||
// * it under the terms of the GNU General Public License as published by
|
||||
|
@ -17,55 +18,21 @@
|
|||
// interface.cpp
|
||||
|
||||
|
||||
#include <windows.h>
|
||||
#include <stdio.h>
|
||||
#include <d3d.h>
|
||||
#include <ui/interface.h>
|
||||
|
||||
#include "common/struct.h"
|
||||
#include "old/d3dengine.h"
|
||||
#include "old/math3d.h"
|
||||
#include "common/event.h"
|
||||
#include "common/misc.h"
|
||||
#include "common/iman.h"
|
||||
#include "ui/control.h"
|
||||
#include "ui/button.h"
|
||||
#include "ui/color.h"
|
||||
#include "ui/check.h"
|
||||
#include "ui/key.h"
|
||||
#include "ui/group.h"
|
||||
#include "ui/image.h"
|
||||
#include "ui/label.h"
|
||||
#include "ui/edit.h"
|
||||
#include "ui/editvalue.h"
|
||||
#include "ui/scroll.h"
|
||||
#include "ui/slider.h"
|
||||
#include "ui/list.h"
|
||||
#include "ui/shortcut.h"
|
||||
#include "ui/compass.h"
|
||||
#include "ui/target.h"
|
||||
#include "ui/map.h"
|
||||
#include "ui/window.h"
|
||||
#include "old/camera.h"
|
||||
#include "ui/interface.h"
|
||||
namespace Ui {
|
||||
|
||||
|
||||
|
||||
|
||||
// Object's constructor.
|
||||
|
||||
CInterface::CInterface(CInstanceManager* iMan)
|
||||
CInterface::CInterface()
|
||||
{
|
||||
int i;
|
||||
|
||||
m_iMan = iMan;
|
||||
m_iMan = CInstanceManager::GetInstancePointer();
|
||||
m_iMan->AddInstance(CLASS_INTERFACE, this);
|
||||
m_event = static_cast<CEventQueue *>( m_iMan->SearchInstance(CLASS_EVENT) );
|
||||
m_engine = static_cast<Gfx::CEngine *>( m_iMan->SearchInstance(CLASS_ENGINE) );
|
||||
|
||||
m_engine = (CD3DEngine*)m_iMan->SearchInstance(CLASS_ENGINE);
|
||||
m_camera = 0;
|
||||
|
||||
for ( i=0 ; i<MAXCONTROL ; i++ )
|
||||
for (int i = 0; i < MAXCONTROL; i++ )
|
||||
{
|
||||
m_table[i] = 0;
|
||||
m_table[i] = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -74,6 +41,7 @@ CInterface::CInterface(CInstanceManager* iMan)
|
|||
CInterface::~CInterface()
|
||||
{
|
||||
Flush();
|
||||
m_iMan->DeleteInstance(CLASS_INTERFACE, this);
|
||||
}
|
||||
|
||||
|
||||
|
@ -81,424 +49,210 @@ CInterface::~CInterface()
|
|||
|
||||
void CInterface::Flush()
|
||||
{
|
||||
int i;
|
||||
|
||||
for ( i=0 ; i<MAXCONTROL ; i++ )
|
||||
{
|
||||
if ( m_table[i] != 0 )
|
||||
{
|
||||
for (int i = 0; i < MAXCONTROL; i++ ) {
|
||||
if ( m_table[i] != nullptr ) {
|
||||
delete m_table[i];
|
||||
m_table[i] = 0;
|
||||
m_table[i] = nullptr;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int CInterface::GetNextFreeControl()
|
||||
{
|
||||
for (int i = 10; i < MAXCONTROL-1; i++) {
|
||||
if (m_table[i] == nullptr)
|
||||
return i;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
template <typename T> inline T* CInterface::CreateControl(Math::Point pos, Math::Point dim, int icon, EventType eventMsg)
|
||||
{
|
||||
T* pc;
|
||||
int index;
|
||||
if (eventMsg == EVENT_NULL)
|
||||
eventMsg = GetUniqueEventType();
|
||||
|
||||
if ((index = GetNextFreeControl()) < 0)
|
||||
return nullptr;
|
||||
|
||||
m_table[index] = new T();
|
||||
pc = static_cast<T *>(m_table[index]);
|
||||
pc->Create(pos, dim, icon, eventMsg);
|
||||
return pc;
|
||||
}
|
||||
|
||||
|
||||
// Creates a new button.
|
||||
|
||||
CWindow* CInterface::CreateWindows(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
CWindow* CInterface::CreateWindows(Math::Point pos, Math::Point dim, int icon, EventType eventMsg)
|
||||
{
|
||||
CWindow* pc;
|
||||
int i;
|
||||
CWindow* pc;
|
||||
int index;
|
||||
if (eventMsg == EVENT_NULL)
|
||||
eventMsg = GetUniqueEventType();
|
||||
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
|
||||
if ( eventMsg == EVENT_WINDOW0 ) {i=0; goto create;}
|
||||
if ( eventMsg == EVENT_WINDOW1 ) {i=1; goto create;}
|
||||
if ( eventMsg == EVENT_WINDOW2 ) {i=2; goto create;}
|
||||
if ( eventMsg == EVENT_WINDOW3 ) {i=3; goto create;}
|
||||
if ( eventMsg == EVENT_WINDOW4 ) {i=4; goto create;}
|
||||
if ( eventMsg == EVENT_WINDOW5 ) {i=5; goto create;}
|
||||
if ( eventMsg == EVENT_WINDOW6 ) {i=6; goto create;}
|
||||
if ( eventMsg == EVENT_WINDOW7 ) {i=7; goto create;}
|
||||
if ( eventMsg == EVENT_WINDOW8 ) {i=8; goto create;}
|
||||
if ( eventMsg == EVENT_WINDOW9 ) {i=9; goto create;}
|
||||
|
||||
if ( eventMsg == EVENT_TOOLTIP ) {i=MAXCONTROL-1; goto create;}
|
||||
|
||||
for ( i=10 ; i<MAXCONTROL-1 ; i++ )
|
||||
{
|
||||
if ( m_table[i] == 0 )
|
||||
{
|
||||
create:
|
||||
m_table[i] = new CWindow(m_iMan);
|
||||
pc = (CWindow*)m_table[i];
|
||||
pc->Create(pos, dim, icon, eventMsg);
|
||||
return pc;
|
||||
}
|
||||
switch (eventMsg) {
|
||||
case EVENT_WINDOW0: index = 0; break;
|
||||
case EVENT_WINDOW1: index = 1; break;
|
||||
case EVENT_WINDOW2: index = 2; break;
|
||||
case EVENT_WINDOW3: index = 3; break;
|
||||
case EVENT_WINDOW4: index = 4; break;
|
||||
case EVENT_WINDOW5: index = 5; break;
|
||||
case EVENT_WINDOW6: index = 6; break;
|
||||
case EVENT_WINDOW7: index = 7; break;
|
||||
case EVENT_WINDOW8: index = 8; break;
|
||||
case EVENT_WINDOW9: index = 9; break;
|
||||
case EVENT_TOOLTIP: index = MAXCONTROL-1; break;
|
||||
default: index = GetNextFreeControl(); break;
|
||||
}
|
||||
return 0;
|
||||
|
||||
if (index < 0)
|
||||
return nullptr;
|
||||
|
||||
m_table[index] = new CWindow();
|
||||
pc = static_cast<CWindow *>(m_table[index]);
|
||||
pc->Create(pos, dim, icon, eventMsg);
|
||||
return pc;
|
||||
}
|
||||
|
||||
// Creates a new button.
|
||||
|
||||
CButton* CInterface::CreateButton(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
CButton* CInterface::CreateButton(Math::Point pos, Math::Point dim, int icon, EventType eventMsg)
|
||||
{
|
||||
CButton* pc;
|
||||
int i;
|
||||
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
|
||||
for ( i=10 ; i<MAXCONTROL ; i++ )
|
||||
{
|
||||
if ( m_table[i] == 0 )
|
||||
{
|
||||
m_table[i] = new CButton(m_iMan);
|
||||
pc = (CButton*)m_table[i];
|
||||
pc->Create(pos, dim, icon, eventMsg);
|
||||
return pc;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
return CreateControl<CButton>(pos, dim, icon, eventMsg);
|
||||
}
|
||||
|
||||
// Creates a new button.
|
||||
|
||||
CColor* CInterface::CreateColor(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
CColor* CInterface::CreateColor(Math::Point pos, Math::Point dim, int icon, EventType eventMsg)
|
||||
{
|
||||
CColor* pc;
|
||||
int i;
|
||||
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
|
||||
for ( i=10 ; i<MAXCONTROL ; i++ )
|
||||
{
|
||||
if ( m_table[i] == 0 )
|
||||
{
|
||||
m_table[i] = new CColor(m_iMan);
|
||||
pc = (CColor*)m_table[i];
|
||||
pc->Create(pos, dim, icon, eventMsg);
|
||||
return pc;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
return CreateControl<CColor>(pos, dim, icon, eventMsg);
|
||||
}
|
||||
|
||||
// Creates a new button.
|
||||
|
||||
CCheck* CInterface::CreateCheck(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
CCheck* CInterface::CreateCheck(Math::Point pos, Math::Point dim, int icon, EventType eventMsg)
|
||||
{
|
||||
CCheck* pc;
|
||||
int i;
|
||||
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
|
||||
for ( i=10 ; i<MAXCONTROL ; i++ )
|
||||
{
|
||||
if ( m_table[i] == 0 )
|
||||
{
|
||||
m_table[i] = new CCheck(m_iMan);
|
||||
pc = (CCheck*)m_table[i];
|
||||
pc->Create(pos, dim, icon, eventMsg);
|
||||
return pc;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
return CreateControl<CCheck>(pos, dim, icon, eventMsg);
|
||||
}
|
||||
|
||||
// Creates a new button.
|
||||
|
||||
CKey* CInterface::CreateKey(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
CKey* CInterface::CreateKey(Math::Point pos, Math::Point dim, int icon, EventType eventMsg)
|
||||
{
|
||||
CKey* pc;
|
||||
int i;
|
||||
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
|
||||
for ( i=10 ; i<MAXCONTROL ; i++ )
|
||||
{
|
||||
if ( m_table[i] == 0 )
|
||||
{
|
||||
m_table[i] = new CKey(m_iMan);
|
||||
pc = (CKey*)m_table[i];
|
||||
pc->Create(pos, dim, icon, eventMsg);
|
||||
return pc;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
return CreateControl<CKey>(pos, dim, icon, eventMsg);
|
||||
}
|
||||
|
||||
// Creates a new button.
|
||||
|
||||
CGroup* CInterface::CreateGroup(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
CGroup* CInterface::CreateGroup(Math::Point pos, Math::Point dim, int icon, EventType eventMsg)
|
||||
{
|
||||
CGroup* pc;
|
||||
int i;
|
||||
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
|
||||
for ( i=10 ; i<MAXCONTROL ; i++ )
|
||||
{
|
||||
if ( m_table[i] == 0 )
|
||||
{
|
||||
m_table[i] = new CGroup(m_iMan);
|
||||
pc = (CGroup*)m_table[i];
|
||||
pc->Create(pos, dim, icon, eventMsg);
|
||||
return pc;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
return CreateControl<CGroup>(pos, dim, icon, eventMsg);
|
||||
}
|
||||
|
||||
// Creates a new button.
|
||||
|
||||
CImage* CInterface::CreateImage(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
CImage* CInterface::CreateImage(Math::Point pos, Math::Point dim, int icon, EventType eventMsg)
|
||||
{
|
||||
CImage* pc;
|
||||
int i;
|
||||
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
|
||||
for ( i=10 ; i<MAXCONTROL ; i++ )
|
||||
{
|
||||
if ( m_table[i] == 0 )
|
||||
{
|
||||
m_table[i] = new CImage(m_iMan);
|
||||
pc = (CImage*)m_table[i];
|
||||
pc->Create(pos, dim, icon, eventMsg);
|
||||
return pc;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
return CreateControl<CImage>(pos, dim, icon, eventMsg);
|
||||
}
|
||||
|
||||
// Creates a new label.
|
||||
|
||||
CLabel* CInterface::CreateLabel(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg,
|
||||
char *name)
|
||||
CLabel* CInterface::CreateLabel(Math::Point pos, Math::Point dim, int icon, EventType eventMsg, const char *name)
|
||||
{
|
||||
CLabel* pc;
|
||||
int i;
|
||||
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
|
||||
for ( i=10 ; i<MAXCONTROL ; i++ )
|
||||
{
|
||||
if ( m_table[i] == 0 )
|
||||
{
|
||||
m_table[i] = new CLabel(m_iMan);
|
||||
pc = (CLabel*)m_table[i];
|
||||
pc->Create(pos, dim, icon, eventMsg);
|
||||
pc->SetName(name);
|
||||
return pc;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
CLabel* pc = CreateControl<CLabel>(pos, dim, icon, eventMsg);
|
||||
if (pc != nullptr)
|
||||
pc->SetName(name);
|
||||
return pc;
|
||||
}
|
||||
|
||||
// Creates a new pave editable.
|
||||
|
||||
CEdit* CInterface::CreateEdit(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
CEdit* CInterface::CreateEdit(Math::Point pos, Math::Point dim, int icon, EventType eventMsg)
|
||||
{
|
||||
CEdit* pc;
|
||||
int i;
|
||||
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
|
||||
for ( i=10 ; i<MAXCONTROL ; i++ )
|
||||
{
|
||||
if ( m_table[i] == 0 )
|
||||
{
|
||||
m_table[i] = new CEdit(m_iMan);
|
||||
pc = (CEdit*)m_table[i];
|
||||
pc->Create(pos, dim, icon, eventMsg);
|
||||
return pc;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
return CreateControl<CEdit>(pos, dim, icon, eventMsg);
|
||||
}
|
||||
|
||||
// Creates a new pave editable.
|
||||
|
||||
CEditValue* CInterface::CreateEditValue(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
CEditValue* CInterface::CreateEditValue(Math::Point pos, Math::Point dim, int icon, EventType eventMsg)
|
||||
{
|
||||
CEditValue* pc;
|
||||
int i;
|
||||
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
|
||||
for ( i=10 ; i<MAXCONTROL ; i++ )
|
||||
{
|
||||
if ( m_table[i] == 0 )
|
||||
{
|
||||
m_table[i] = new CEditValue(m_iMan);
|
||||
pc = (CEditValue*)m_table[i];
|
||||
pc->Create(pos, dim, icon, eventMsg);
|
||||
return pc;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
return CreateControl<CEditValue>(pos, dim, icon, eventMsg);
|
||||
}
|
||||
|
||||
// Creates a new lift.
|
||||
|
||||
CScroll* CInterface::CreateScroll(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
CScroll* CInterface::CreateScroll(Math::Point pos, Math::Point dim, int icon, EventType eventMsg)
|
||||
{
|
||||
CScroll* pc;
|
||||
int i;
|
||||
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
|
||||
for ( i=10 ; i<MAXCONTROL ; i++ )
|
||||
{
|
||||
if ( m_table[i] == 0 )
|
||||
{
|
||||
m_table[i] = new CScroll(m_iMan);
|
||||
pc = (CScroll*)m_table[i];
|
||||
pc->Create(pos, dim, icon, eventMsg);
|
||||
return pc;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
return CreateControl<CScroll>(pos, dim, icon, eventMsg);
|
||||
}
|
||||
|
||||
// Creates a new cursor.
|
||||
|
||||
CSlider* CInterface::CreateSlider(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
CSlider* CInterface::CreateSlider(Math::Point pos, Math::Point dim, int icon, EventType eventMsg)
|
||||
{
|
||||
CSlider* pc;
|
||||
int i;
|
||||
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
|
||||
for ( i=10 ; i<MAXCONTROL ; i++ )
|
||||
{
|
||||
if ( m_table[i] == 0 )
|
||||
{
|
||||
m_table[i] = new CSlider(m_iMan);
|
||||
pc = (CSlider*)m_table[i];
|
||||
pc->Create(pos, dim, icon, eventMsg);
|
||||
return pc;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
return CreateControl<CSlider>(pos, dim, icon, eventMsg);
|
||||
}
|
||||
|
||||
// Creates a new list.
|
||||
|
||||
CList* CInterface::CreateList(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg,
|
||||
float expand)
|
||||
CList* CInterface::CreateList(Math::Point pos, Math::Point dim, int icon, EventType eventMsg, float expand)
|
||||
{
|
||||
CList* pc;
|
||||
int i;
|
||||
CList* pc;
|
||||
int index;
|
||||
if (eventMsg == EVENT_NULL)
|
||||
eventMsg = GetUniqueEventType();
|
||||
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
if ((index = GetNextFreeControl()) < 0)
|
||||
return nullptr;
|
||||
|
||||
for ( i=10 ; i<MAXCONTROL ; i++ )
|
||||
{
|
||||
if ( m_table[i] == 0 )
|
||||
{
|
||||
m_table[i] = new CList(m_iMan);
|
||||
pc = (CList*)m_table[i];
|
||||
pc->Create(pos, dim, icon, eventMsg, expand);
|
||||
return pc;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
m_table[index] = new CList();
|
||||
pc = static_cast<CList *>(m_table[index]);
|
||||
pc->Create(pos, dim, icon, eventMsg, expand);
|
||||
return pc;
|
||||
}
|
||||
|
||||
// Creates a new shortcut.
|
||||
|
||||
CShortcut* CInterface::CreateShortcut(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
CShortcut* CInterface::CreateShortcut(Math::Point pos, Math::Point dim, int icon, EventType eventMsg)
|
||||
{
|
||||
CShortcut* ps;
|
||||
int i;
|
||||
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
|
||||
for ( i=10 ; i<MAXCONTROL ; i++ )
|
||||
{
|
||||
if ( m_table[i] == 0 )
|
||||
{
|
||||
m_table[i] = new CShortcut(m_iMan);
|
||||
ps = (CShortcut*)m_table[i];
|
||||
ps->Create(pos, dim, icon, eventMsg);
|
||||
return ps;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
return CreateControl<CShortcut>(pos, dim, icon, eventMsg);
|
||||
}
|
||||
|
||||
// Creates a new compass.
|
||||
|
||||
CCompass* CInterface::CreateCompass(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
CCompass* CInterface::CreateCompass(Math::Point pos, Math::Point dim, int icon, EventType eventMsg)
|
||||
{
|
||||
CCompass* pc;
|
||||
int i;
|
||||
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
|
||||
for ( i=10 ; i<MAXCONTROL ; i++ )
|
||||
{
|
||||
if ( m_table[i] == 0 )
|
||||
{
|
||||
m_table[i] = new CCompass(m_iMan);
|
||||
pc = (CCompass*)m_table[i];
|
||||
pc->Create(pos, dim, icon, eventMsg);
|
||||
return pc;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
return CreateControl<CCompass>(pos, dim, icon, eventMsg);
|
||||
}
|
||||
|
||||
// Creates a new target.
|
||||
|
||||
CTarget* CInterface::CreateTarget(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
CTarget* CInterface::CreateTarget(Math::Point pos, Math::Point dim, int icon, EventType eventMsg)
|
||||
{
|
||||
CTarget* pc;
|
||||
int i;
|
||||
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
|
||||
for ( i=10 ; i<MAXCONTROL ; i++ )
|
||||
{
|
||||
if ( m_table[i] == 0 )
|
||||
{
|
||||
m_table[i] = new CTarget(m_iMan);
|
||||
pc = (CTarget*)m_table[i];
|
||||
pc->Create(pos, dim, icon, eventMsg);
|
||||
return pc;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
return CreateControl<CTarget>(pos, dim, icon, eventMsg);
|
||||
}
|
||||
|
||||
// Creates a new map.
|
||||
|
||||
CMap* CInterface::CreateMap(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
CMap* CInterface::CreateMap(Math::Point pos, Math::Point dim, int icon, EventType eventMsg)
|
||||
{
|
||||
CMap* pm;
|
||||
int i;
|
||||
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
|
||||
for ( i=10 ; i<MAXCONTROL ; i++ )
|
||||
{
|
||||
if ( m_table[i] == 0 )
|
||||
{
|
||||
m_table[i] = new CMap(m_iMan);
|
||||
pm = (CMap*)m_table[i];
|
||||
pm->Create(pos, dim, icon, eventMsg);
|
||||
return pm;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
return CreateControl<CMap>(pos, dim, icon, eventMsg);
|
||||
}
|
||||
|
||||
// Removes a control.
|
||||
|
||||
bool CInterface::DeleteControl(EventMsg eventMsg)
|
||||
bool CInterface::DeleteControl(EventType eventMsg)
|
||||
{
|
||||
int i;
|
||||
|
||||
for ( i=0 ; i<MAXCONTROL ; i++ )
|
||||
{
|
||||
if ( m_table[i] != 0 )
|
||||
{
|
||||
if ( eventMsg == m_table[i]->RetEventMsg() )
|
||||
{
|
||||
for (int i = 0; i < MAXCONTROL; i++) {
|
||||
if ( m_table[i] != nullptr ) {
|
||||
if (eventMsg == m_table[i]->GetEventType()) {
|
||||
delete m_table[i];
|
||||
m_table[i] = 0;
|
||||
m_table[i] = nullptr;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -508,47 +262,32 @@ bool CInterface::DeleteControl(EventMsg eventMsg)
|
|||
|
||||
// Gives a control.
|
||||
|
||||
CControl* CInterface::SearchControl(EventMsg eventMsg)
|
||||
CControl* CInterface::SearchControl(EventType eventMsg)
|
||||
{
|
||||
int i;
|
||||
|
||||
for ( i=0 ; i<MAXCONTROL ; i++ )
|
||||
{
|
||||
if ( m_table[i] != 0 )
|
||||
{
|
||||
if ( eventMsg == m_table[i]->RetEventMsg() )
|
||||
{
|
||||
for (int i = 0; i < MAXCONTROL; i++) {
|
||||
if (m_table[i] != nullptr) {
|
||||
if (eventMsg == m_table[i]->GetEventType())
|
||||
return m_table[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// Management of an event.
|
||||
|
||||
bool CInterface::EventProcess(const Event &event)
|
||||
{
|
||||
int i;
|
||||
|
||||
if ( event.event == EVENT_MOUSEMOVE )
|
||||
{
|
||||
if ( m_camera == 0 )
|
||||
{
|
||||
m_camera = (CCamera*)m_iMan->SearchInstance(CLASS_CAMERA);
|
||||
if (event.type == EVENT_MOUSE_MOVE) {
|
||||
if (m_camera == nullptr) {
|
||||
m_camera = static_cast<Gfx::CCamera *>(m_iMan->SearchInstance(CLASS_CAMERA));
|
||||
}
|
||||
m_engine->SetMouseType(m_camera->RetMouseDef(event.pos));
|
||||
m_engine->SetMouseType(m_camera->GetMouseDef(event.pos));
|
||||
}
|
||||
|
||||
for ( i=MAXCONTROL-1 ; i>=0 ; i-- )
|
||||
{
|
||||
if ( m_table[i] != 0 &&
|
||||
m_table[i]->TestState(STATE_ENABLE) )
|
||||
{
|
||||
for (int i = MAXCONTROL-1; i >= 0; i--) {
|
||||
if (m_table[i] != nullptr && m_table[i]->TestState(STATE_ENABLE)) {
|
||||
if ( !m_table[i]->EventProcess(event) )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -558,18 +297,12 @@ bool CInterface::EventProcess(const Event &event)
|
|||
|
||||
// Gives the tooltip binding to the window.
|
||||
|
||||
bool CInterface::GetTooltip(Math::Point pos, char* name)
|
||||
bool CInterface::GetTooltip(Math::Point pos, const char* name)
|
||||
{
|
||||
int i;
|
||||
|
||||
for ( i=MAXCONTROL-1 ; i>=0 ; i-- )
|
||||
{
|
||||
if ( m_table[i] != 0 )
|
||||
{
|
||||
if ( m_table[i]->GetTooltip(pos, name) )
|
||||
{
|
||||
for (int i = MAXCONTROL-1; i >= 0; i--) {
|
||||
if (m_table[i] != nullptr) {
|
||||
if (m_table[i]->GetTooltip(pos, name))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
@ -580,26 +313,19 @@ bool CInterface::GetTooltip(Math::Point pos, char* name)
|
|||
|
||||
void CInterface::Draw()
|
||||
{
|
||||
D3DMATERIAL7 material;
|
||||
int i;
|
||||
|
||||
ZeroMemory( &material, sizeof(D3DMATERIAL7) );
|
||||
/*ZeroMemory( &material, sizeof(D3DMATERIAL7) );
|
||||
material.diffuse.r = 1.0f;
|
||||
material.diffuse.g = 1.0f;
|
||||
material.diffuse.b = 1.0f;
|
||||
material.ambient.r = 0.5f;
|
||||
material.ambient.g = 0.5f;
|
||||
material.ambient.b = 0.5f;
|
||||
m_engine->SetMaterial(material);
|
||||
m_engine->SetMaterial(material);*/
|
||||
|
||||
for ( i=0 ; i<MAXCONTROL ; i++ )
|
||||
//? for ( i=MAXCONTROL-1 ; i>=0 ; i-- )
|
||||
{
|
||||
if ( m_table[i] != 0 )
|
||||
{
|
||||
for (int i = 0; i < MAXCONTROL; i++) {
|
||||
if ( m_table[i] != nullptr )
|
||||
m_table[i]->Draw();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
// * This file is part of the COLOBOT source code
|
||||
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
|
||||
// * Copyright (C) 2012 Polish Portal of Colobot (PPC)
|
||||
// *
|
||||
// * This program is free software: you can redistribute it and/or modify
|
||||
// * it under the terms of the GNU General Public License as published by
|
||||
|
@ -19,77 +20,85 @@
|
|||
#pragma once
|
||||
|
||||
|
||||
#include "common/event.h"
|
||||
#include "math/point.h"
|
||||
#include <common/event.h>
|
||||
#include <common/struct.h>
|
||||
#include <common/misc.h>
|
||||
#include <common/iman.h>
|
||||
|
||||
#include <math/point.h>
|
||||
|
||||
class CInstanceManager;
|
||||
class CD3DEngine;
|
||||
class CControl;
|
||||
class CWindow;
|
||||
class CButton;
|
||||
class CColor;
|
||||
class CCheck;
|
||||
class CKey;
|
||||
class CGroup;
|
||||
class CImage;
|
||||
class CLabel;
|
||||
class CEdit;
|
||||
class CEditValue;
|
||||
class CScroll;
|
||||
class CSlider;
|
||||
class CList;
|
||||
class CShortcut;
|
||||
class CMap;
|
||||
class CGauge;
|
||||
class CCompass;
|
||||
class CTarget;
|
||||
class CCamera;
|
||||
#include <graphics/engine/camera.h>
|
||||
#include <graphics/engine/engine.h>
|
||||
|
||||
namespace Ui {
|
||||
|
||||
const int MAXCONTROL = 100;
|
||||
|
||||
//Forward declaration
|
||||
class CButton;
|
||||
class CCheck;
|
||||
class CColor;
|
||||
class CCompass;
|
||||
class CControl;
|
||||
class CEdit;
|
||||
class CEditValue;
|
||||
class CGroup;
|
||||
class CImage;
|
||||
class CKey;
|
||||
class CLabel;
|
||||
class CList;
|
||||
class CMap;
|
||||
class CScroll;
|
||||
class CShortcut;
|
||||
class CSlider;
|
||||
class CTarget;
|
||||
class CWindow;
|
||||
|
||||
class CInterface
|
||||
{
|
||||
public:
|
||||
CInterface(CInstanceManager* iMan);
|
||||
~CInterface();
|
||||
public:
|
||||
CInterface();
|
||||
~CInterface();
|
||||
|
||||
bool EventProcess(const Event &event);
|
||||
bool GetTooltip(Math::Point pos, char* name);
|
||||
bool EventProcess(const Event &event);
|
||||
bool GetTooltip(Math::Point pos, const char* name);
|
||||
|
||||
void Flush();
|
||||
CWindow* CreateWindows(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
CButton* CreateButton(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
CColor* CreateColor(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
CCheck* CreateCheck(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
CKey* CreateKey(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
CGroup* CreateGroup(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
CImage* CreateImage(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
CLabel* CreateLabel(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg, char *name);
|
||||
CEdit* CreateEdit(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
CEditValue* CreateEditValue(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
CScroll* CreateScroll(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
CSlider* CreateSlider(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
CList* CreateList(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg, float expand=1.2f);
|
||||
CShortcut* CreateShortcut(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
CCompass* CreateCompass(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
CTarget* CreateTarget(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
CMap* CreateMap(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
bool DeleteControl(EventMsg eventMsg);
|
||||
CControl* SearchControl(EventMsg eventMsg);
|
||||
void Flush();
|
||||
CButton* CreateButton(Math::Point pos, Math::Point dim, int icon, EventType eventMsg);
|
||||
CColor* CreateColor(Math::Point pos, Math::Point dim, int icon, EventType eventMsg);
|
||||
CCheck* CreateCheck(Math::Point pos, Math::Point dim, int icon, EventType eventMsg);
|
||||
CKey* CreateKey(Math::Point pos, Math::Point dim, int icon, EventType eventMsg);
|
||||
CGroup* CreateGroup(Math::Point pos, Math::Point dim, int icon, EventType eventMsg);
|
||||
CImage* CreateImage(Math::Point pos, Math::Point dim, int icon, EventType eventMsg);
|
||||
CEdit* CreateEdit(Math::Point pos, Math::Point dim, int icon, EventType eventMsg);
|
||||
CEditValue* CreateEditValue(Math::Point pos, Math::Point dim, int icon, EventType eventMsg);
|
||||
CScroll* CreateScroll(Math::Point pos, Math::Point dim, int icon, EventType eventMsg);
|
||||
CSlider* CreateSlider(Math::Point pos, Math::Point dim, int icon, EventType eventMsg);
|
||||
CShortcut* CreateShortcut(Math::Point pos, Math::Point dim, int icon, EventType eventMsg);
|
||||
CCompass* CreateCompass(Math::Point pos, Math::Point dim, int icon, EventType eventMsg);
|
||||
CTarget* CreateTarget(Math::Point pos, Math::Point dim, int icon, EventType eventMsg);
|
||||
CMap* CreateMap(Math::Point pos, Math::Point dim, int icon, EventType eventMsg);
|
||||
|
||||
void Draw();
|
||||
CWindow* CreateWindows(Math::Point pos, Math::Point dim, int icon, EventType eventMsg);
|
||||
CList* CreateList(Math::Point pos, Math::Point dim, int icon, EventType eventMsg, float expand=1.2f);
|
||||
CLabel* CreateLabel(Math::Point pos, Math::Point dim, int icon, EventType eventMsg, const char *name);
|
||||
|
||||
protected:
|
||||
bool DeleteControl(EventType eventMsg);
|
||||
CControl* SearchControl(EventType eventMsg);
|
||||
|
||||
protected:
|
||||
CInstanceManager* m_iMan;
|
||||
CD3DEngine* m_engine;
|
||||
CCamera* m_camera;
|
||||
void Draw();
|
||||
|
||||
CControl* m_table[MAXCONTROL];
|
||||
protected:
|
||||
int GetNextFreeControl();
|
||||
template <typename T> inline T* CreateControl(Math::Point pos, Math::Point dim, int icon, EventType eventMsg);
|
||||
|
||||
CInstanceManager* m_iMan;
|
||||
CEventQueue* m_event;
|
||||
Gfx::CEngine* m_engine;
|
||||
Gfx::CCamera* m_camera;
|
||||
|
||||
CControl* m_table[MAXCONTROL];
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
|
|
198
src/ui/key.cpp
198
src/ui/key.cpp
|
@ -1,5 +1,6 @@
|
|||
// * This file is part of the COLOBOT source code
|
||||
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
|
||||
// * Copyright (C) 2012 Polish Portal of Colobot (PPC)
|
||||
// *
|
||||
// * This program is free software: you can redistribute it and/or modify
|
||||
// * it under the terms of the GNU General Public License as published by
|
||||
|
@ -17,54 +18,33 @@
|
|||
// key.cpp
|
||||
|
||||
|
||||
#include <windows.h>
|
||||
#include <stdio.h>
|
||||
#include <d3d.h>
|
||||
#include <ui/key.h>
|
||||
|
||||
#include "common/struct.h"
|
||||
#include "old/d3dengine.h"
|
||||
#include "old/math3d.h"
|
||||
#include "common/event.h"
|
||||
#include "common/misc.h"
|
||||
#include "common/iman.h"
|
||||
#include "common/restext.h"
|
||||
#include "old/sound.h"
|
||||
#include "old/text.h"
|
||||
#include "ui/key.h"
|
||||
|
||||
|
||||
|
||||
|
||||
// Constructs the name of a button.
|
||||
namespace Ui {
|
||||
|
||||
void GetKeyName(char *name, int key)
|
||||
{
|
||||
if ( !GetResource(RES_KEY, key, name) )
|
||||
{
|
||||
if ( (key >= '0' && key <= '9') ||
|
||||
(key >= 'A' && key <= 'Z') ||
|
||||
(key >= 'a' && key <= 'z') )
|
||||
{
|
||||
if ( !GetResource(RES_KEY, key, name) ) {
|
||||
if (isalnum(key)) {
|
||||
name[0] = key;
|
||||
name[1] = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
sprintf(name, "Code %d", key);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// Object's constructor.
|
||||
|
||||
CKey::CKey(CInstanceManager* iMan) : CControl(iMan)
|
||||
CKey::CKey() : CControl()
|
||||
{
|
||||
m_key[0] = 0;
|
||||
m_key[1] = 0;
|
||||
m_bCatch = false;
|
||||
|
||||
m_app = CApplication::GetInstancePointer();
|
||||
}
|
||||
|
||||
// Object's destructor.
|
||||
|
@ -76,18 +56,14 @@ CKey::~CKey()
|
|||
|
||||
// Creates a new button.
|
||||
|
||||
bool CKey::Create(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
bool CKey::Create(Math::Point pos, Math::Point dim, int icon, EventType eventMsg)
|
||||
{
|
||||
char name[100];
|
||||
char* p;
|
||||
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
char name[100];
|
||||
if (eventMsg == EVENT_NULL)
|
||||
eventMsg = GetUniqueEventType();
|
||||
|
||||
CControl::Create(pos, dim, icon, eventMsg);
|
||||
|
||||
GetResource(RES_EVENT, eventMsg, name);
|
||||
p = strchr(name, '\\');
|
||||
if ( p != 0 ) *p = 0;
|
||||
SetName(name);
|
||||
|
||||
return true;
|
||||
|
@ -98,47 +74,33 @@ bool CKey::Create(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
|||
|
||||
bool CKey::EventProcess(const Event &event)
|
||||
{
|
||||
if ( m_state & STATE_DEAD ) return true;
|
||||
if (m_state & STATE_DEAD)
|
||||
return true;
|
||||
|
||||
CControl::EventProcess(event);
|
||||
|
||||
if ( event.event == EVENT_LBUTTONDOWN )
|
||||
{
|
||||
if ( Detect(event.pos) )
|
||||
{
|
||||
m_bCatch = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_bCatch = false;
|
||||
}
|
||||
if (event.type == EVENT_MOUSE_BUTTON_DOWN) {
|
||||
if (event.mouseButton.button == 1) // left
|
||||
m_bCatch = Detect(event.pos);
|
||||
}
|
||||
|
||||
if ( event.event == EVENT_KEYDOWN && m_bCatch )
|
||||
{
|
||||
if (event.type == EVENT_MOUSE_BUTTON_DOWN && m_bCatch) {
|
||||
m_bCatch = false;
|
||||
|
||||
if ( TestKey(event.param) ) // impossible ?
|
||||
{
|
||||
if ( TestKey(event.param) ) { // impossible ?
|
||||
m_sound->Play(SOUND_TZOING);
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( event.param == m_key[0] ||
|
||||
event.param == m_key[1] )
|
||||
{
|
||||
} else {
|
||||
if ( event.param == m_key[0] || event.param == m_key[1] ) {
|
||||
m_key[0] = event.param;
|
||||
m_key[1] = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
m_key[1] = m_key[0];
|
||||
m_key[0] = event.param;
|
||||
}
|
||||
m_sound->Play(SOUND_CLICK);
|
||||
|
||||
Event newEvent = event;
|
||||
newEvent.event = m_eventMsg;
|
||||
newEvent.type = m_eventType;
|
||||
m_event->AddEvent(newEvent);
|
||||
}
|
||||
return false;
|
||||
|
@ -152,25 +114,17 @@ bool CKey::EventProcess(const Event &event)
|
|||
|
||||
bool CKey::TestKey(int key)
|
||||
{
|
||||
int i, j;
|
||||
if ( key == KEY(PAUSE) || key == KEY(PRINT) ) return true; // blocked key
|
||||
|
||||
if ( key == VK_PAUSE ||
|
||||
key == VK_SNAPSHOT ) return true; // blocked key
|
||||
|
||||
for ( i=0 ; i<20 ; i++ )
|
||||
{
|
||||
for ( j=0 ; j<2 ; j++ )
|
||||
{
|
||||
if ( key == m_engine->RetKey(i, j) ) // key used?
|
||||
{
|
||||
m_engine->SetKey(i, j, 0); // nothing!
|
||||
}
|
||||
for (int i = 0; i < 20; i++) {
|
||||
for (int j = 0; j < 2; j++) {
|
||||
if (key == m_app->GetKey(i, j) ) // key used?
|
||||
m_app->SetKey(i, j, 0); // nothing!
|
||||
}
|
||||
|
||||
if ( m_engine->RetKey(i, 0) == 0 ) // first free option?
|
||||
{
|
||||
m_engine->SetKey(i, 0, m_engine->RetKey(i, 1)); // shift
|
||||
m_engine->SetKey(i, 1, 0);
|
||||
if ( m_app->GetKey(i, 0) == 0 ) { // first free option?
|
||||
m_app->SetKey(i, 0, m_app->GetKey(i, 1)); // shift
|
||||
m_app->SetKey(i, 1, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -182,107 +136,99 @@ bool CKey::TestKey(int key)
|
|||
|
||||
void CKey::Draw()
|
||||
{
|
||||
Math::Point iDim, pos;
|
||||
float zoomExt, zoomInt, h;
|
||||
int icon;
|
||||
char text[100];
|
||||
Math::Point iDim, pos;
|
||||
float zoomExt, zoomInt, h;
|
||||
int icon;
|
||||
char text[100];
|
||||
|
||||
if ( (m_state & STATE_VISIBLE) == 0 ) return;
|
||||
if ( (m_state & STATE_VISIBLE) == 0 )
|
||||
return;
|
||||
|
||||
iDim = m_dim;
|
||||
m_dim.x = 200.0f/640.0f;
|
||||
|
||||
if ( m_state & STATE_SHADOW )
|
||||
{
|
||||
DrawShadow(m_pos, m_dim);
|
||||
}
|
||||
|
||||
|
||||
m_engine->SetTexture("button1.tga");
|
||||
m_engine->SetState(D3DSTATENORMAL);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL); // was D3DSTATENORMAL
|
||||
|
||||
zoomExt = 1.00f;
|
||||
zoomInt = 0.95f;
|
||||
|
||||
icon = 2;
|
||||
if ( m_key[0] == 0 &&
|
||||
m_key[1] == 0 ) // no shortcut?
|
||||
{
|
||||
if ( m_key[0] == 0 && m_key[1] == 0 ) // no shortcut?
|
||||
icon = 3;
|
||||
}
|
||||
if ( m_state & STATE_DEFAULT )
|
||||
{
|
||||
|
||||
if ( m_state & STATE_DEFAULT ) {
|
||||
DrawPart(23, 1.3f, 0.0f);
|
||||
|
||||
zoomExt *= 1.15f;
|
||||
zoomInt *= 1.15f;
|
||||
}
|
||||
|
||||
if ( m_state & STATE_HILIGHT )
|
||||
{
|
||||
icon = 1;
|
||||
}
|
||||
|
||||
if ( m_state & STATE_CHECK )
|
||||
{
|
||||
icon = 0;
|
||||
}
|
||||
if ( m_state & STATE_PRESS )
|
||||
{
|
||||
|
||||
if ( m_state & STATE_PRESS ) {
|
||||
icon = 3;
|
||||
zoomInt *= 0.9f;
|
||||
}
|
||||
if ( (m_state & STATE_ENABLE) == 0 )
|
||||
{
|
||||
icon = 7;
|
||||
}
|
||||
if ( m_state & STATE_DEAD )
|
||||
{
|
||||
icon = 17;
|
||||
}
|
||||
if ( m_bCatch )
|
||||
{
|
||||
icon = 23;
|
||||
}
|
||||
DrawPart(icon, zoomExt, 8.0f/256.0f); // draws the button
|
||||
|
||||
h = m_engine->RetText()->RetHeight(m_fontSize, m_fontType)/2.0f;
|
||||
if ( (m_state & STATE_ENABLE) == 0 )
|
||||
icon = 7;
|
||||
|
||||
if ( m_state & STATE_DEAD )
|
||||
icon = 17;
|
||||
|
||||
if ( m_bCatch )
|
||||
icon = 23;
|
||||
|
||||
DrawPart(icon, zoomExt, 8.0f / 256.0f); // draws the button
|
||||
|
||||
h = m_engine->GetText()->GetHeight(m_fontType, m_fontSize) / 2.0f;
|
||||
|
||||
GetKeyName(text, m_key[0]);
|
||||
if ( m_key[1] != 0 )
|
||||
{
|
||||
if ( m_key[1] != 0 ) {
|
||||
GetResource(RES_TEXT, RT_KEY_OR, text+strlen(text));
|
||||
GetKeyName(text+strlen(text), m_key[1]);
|
||||
}
|
||||
|
||||
pos.x = m_pos.x+m_dim.x*0.5f;
|
||||
pos.y = m_pos.y+m_dim.y*0.5f;
|
||||
pos.x = m_pos.x + m_dim.x * 0.5f;
|
||||
pos.y = m_pos.y + m_dim.y * 0.5f;
|
||||
pos.y -= h;
|
||||
m_engine->RetText()->DrawText(text, pos, m_dim.x, 0, m_fontSize, m_fontStretch, m_fontType, 0);
|
||||
m_engine->GetText()->DrawText(std::string(text), m_fontType, m_fontSize, pos, m_dim.x, Gfx::TEXT_ALIGN_CENTER, 0);
|
||||
|
||||
m_dim = iDim;
|
||||
|
||||
if ( m_state & STATE_DEAD ) return;
|
||||
if ( m_state & STATE_DEAD )
|
||||
return;
|
||||
|
||||
// Draws the name.
|
||||
pos.x = m_pos.x+(214.0f/640.0f);
|
||||
pos.y = m_pos.y+m_dim.y*0.5f;
|
||||
pos.x = m_pos.x + (214.0f / 640.0f);
|
||||
pos.y = m_pos.y + m_dim.y * 0.5f;
|
||||
pos.y -= h;
|
||||
m_engine->RetText()->DrawText(m_name, pos, m_dim.x, 1, m_fontSize, m_fontStretch, m_fontType, 0);
|
||||
m_engine->GetText()->DrawText(std::string(m_name), m_fontType, m_fontSize, pos, m_dim.x, Gfx::TEXT_ALIGN_RIGHT, 0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void CKey::SetKey(int option, int key)
|
||||
{
|
||||
if ( option < 0 ||
|
||||
option > 1 ) return;
|
||||
if ( option < 0 || option > 1 ) return;
|
||||
|
||||
m_key[option] = key;
|
||||
}
|
||||
|
||||
int CKey::RetKey(int option)
|
||||
int CKey::GetKey(int option)
|
||||
{
|
||||
if ( option < 0 ||
|
||||
option > 1 ) return 0;
|
||||
if ( option < 0 || option > 1 ) return 0;
|
||||
|
||||
return m_key[option];
|
||||
}
|
||||
|
||||
}
|
||||
|
|
41
src/ui/key.h
41
src/ui/key.h
|
@ -1,5 +1,6 @@
|
|||
// * This file is part of the COLOBOT source code
|
||||
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
|
||||
// * Copyright (C) 2012 Polish Portal of Colobot (PPC)
|
||||
// *
|
||||
// * This program is free software: you can redistribute it and/or modify
|
||||
// * it under the terms of the GNU General Public License as published by
|
||||
|
@ -18,35 +19,43 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include <cctype>
|
||||
#include <string>
|
||||
|
||||
#include "ui/control.h"
|
||||
#include <ui/control.h>
|
||||
|
||||
#include <common/iman.h>
|
||||
#include <common/event.h>
|
||||
#include <common/restext.h>
|
||||
#include <common/key.h>
|
||||
|
||||
class CD3DEngine;
|
||||
|
||||
#include <app/app.h>
|
||||
|
||||
namespace Ui {
|
||||
|
||||
class CKey : public CControl
|
||||
{
|
||||
public:
|
||||
CKey(CInstanceManager* iMan);
|
||||
virtual ~CKey();
|
||||
public:
|
||||
CKey();
|
||||
virtual ~CKey();
|
||||
|
||||
bool Create(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
bool Create(Math::Point pos, Math::Point dim, int icon, EventType eventMsg);
|
||||
bool EventProcess(const Event &event);
|
||||
|
||||
bool EventProcess(const Event &event);
|
||||
void Draw();
|
||||
|
||||
void Draw();
|
||||
void SetKey(int option, int key);
|
||||
int GetKey(int option);
|
||||
|
||||
void SetKey(int option, int key);
|
||||
int RetKey(int option);
|
||||
protected:
|
||||
bool TestKey(int key);
|
||||
|
||||
protected:
|
||||
bool TestKey(int key);
|
||||
int m_key[2];
|
||||
bool m_bCatch;
|
||||
|
||||
protected:
|
||||
int m_key[2];
|
||||
bool m_bCatch;
|
||||
CApplication *m_app;
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
// * This file is part of the COLOBOT source code
|
||||
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
|
||||
// * Copyright (C) 2012 Polish Portal of Colobot (PPC)
|
||||
// *
|
||||
// * This program is free software: you can redistribute it and/or modify
|
||||
// * it under the terms of the GNU General Public License as published by
|
||||
|
@ -17,25 +18,14 @@
|
|||
// label.cpp
|
||||
|
||||
|
||||
#include <windows.h>
|
||||
#include <stdio.h>
|
||||
#include <d3d.h>
|
||||
|
||||
#include "common/struct.h"
|
||||
#include "old/d3dengine.h"
|
||||
#include "old/math3d.h"
|
||||
#include "common/event.h"
|
||||
#include "common/misc.h"
|
||||
#include "common/iman.h"
|
||||
#include "old/text.h"
|
||||
#include "ui/label.h"
|
||||
|
||||
#include <ui/label.h>
|
||||
|
||||
namespace Ui {
|
||||
|
||||
|
||||
// Object's constructor.
|
||||
|
||||
CLabel::CLabel(CInstanceManager* iMan) : CControl(iMan)
|
||||
CLabel::CLabel() : CControl()
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -48,9 +38,10 @@ CLabel::~CLabel()
|
|||
|
||||
// Creates a new button.
|
||||
|
||||
bool CLabel::Create(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
bool CLabel::Create(Math::Point pos, Math::Point dim, int icon, EventType eventMsg)
|
||||
{
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
if (eventMsg == EVENT_NULL)
|
||||
eventMsg = GetUniqueEventType();
|
||||
|
||||
CControl::Create(pos, dim, icon, eventMsg);
|
||||
return true;
|
||||
|
@ -72,22 +63,18 @@ void CLabel::Draw()
|
|||
{
|
||||
Math::Point pos;
|
||||
|
||||
if ( (m_state & STATE_VISIBLE) == 0 ) return;
|
||||
if ( (m_state & STATE_VISIBLE) == 0 )
|
||||
return;
|
||||
|
||||
pos.y = m_pos.y+m_dim.y/2.0f;
|
||||
pos.y = m_pos.y + m_dim.y / 2.0f;
|
||||
|
||||
if ( m_justif > 0 )
|
||||
{
|
||||
pos.x = m_pos.x;
|
||||
switch (m_textAlign) {
|
||||
case Gfx::TEXT_ALIGN_RIGHT: pos.x = m_pos.x; break;
|
||||
case Gfx::TEXT_ALIGN_CENTER: pos.x = m_pos.x + m_dim.x / 2.0f; break;
|
||||
case Gfx::TEXT_ALIGN_LEFT: pos.x = m_pos.x + m_dim.x; break;
|
||||
}
|
||||
if ( m_justif == 0 )
|
||||
{
|
||||
pos.x = m_pos.x+m_dim.x/2.0f;
|
||||
}
|
||||
if ( m_justif < 0 )
|
||||
{
|
||||
pos.x = m_pos.x+m_dim.x;
|
||||
}
|
||||
m_engine->RetText()->DrawText(m_name, pos, m_dim.x, m_justif, m_fontSize, m_fontStretch, m_fontType, 0);
|
||||
|
||||
m_engine->GetText()->DrawText(std::string(m_name), m_fontType, m_fontSize, pos, m_dim.x, m_textAlign, 0);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
// * This file is part of the COLOBOT source code
|
||||
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
|
||||
// * Copyright (C) 2012 Polish Portal of Colobot (PPC)
|
||||
// *
|
||||
// * This program is free software: you can redistribute it and/or modify
|
||||
// * it under the terms of the GNU General Public License as published by
|
||||
|
@ -19,28 +20,24 @@
|
|||
#pragma once
|
||||
|
||||
|
||||
#include "ui/control.h"
|
||||
|
||||
|
||||
class CD3DEngine;
|
||||
#include <ui/control.h>
|
||||
|
||||
#include <common/event.h>
|
||||
#include <common/misc.h>
|
||||
|
||||
namespace Ui {
|
||||
|
||||
class CLabel : public CControl
|
||||
{
|
||||
public:
|
||||
CLabel(CInstanceManager* iMan);
|
||||
virtual ~CLabel();
|
||||
public:
|
||||
CLabel();
|
||||
virtual ~CLabel();
|
||||
|
||||
bool Create(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
bool Create(Math::Point pos, Math::Point dim, int icon, EventType eventMsg);
|
||||
bool EventProcess(const Event &event);
|
||||
|
||||
bool EventProcess(const Event &event);
|
||||
|
||||
void Draw();
|
||||
|
||||
protected:
|
||||
|
||||
protected:
|
||||
void Draw();
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
|
|
643
src/ui/list.cpp
643
src/ui/list.cpp
File diff suppressed because it is too large
Load Diff
128
src/ui/list.h
128
src/ui/list.h
|
@ -1,5 +1,6 @@
|
|||
// * This file is part of the COLOBOT source code
|
||||
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
|
||||
// * Copyright (C) 2012 Polish Portal of Colobot (PPC)
|
||||
// *
|
||||
// * This program is free software: you can redistribute it and/or modify
|
||||
// * it under the terms of the GNU General Public License as published by
|
||||
|
@ -19,14 +20,17 @@
|
|||
#pragma once
|
||||
|
||||
|
||||
#include "ui/control.h"
|
||||
#include "common/event.h"
|
||||
#include <ui/control.h>
|
||||
#include <ui/button.h>
|
||||
#include <ui/scroll.h>
|
||||
|
||||
#include <common/event.h>
|
||||
#include <common/misc.h>
|
||||
|
||||
#include <graphics/engine/text.h>
|
||||
|
||||
|
||||
class CD3DEngine;
|
||||
class CButton;
|
||||
class CScroll;
|
||||
|
||||
namespace Ui {
|
||||
|
||||
const int LISTMAXDISPLAY = 20; // maximum number of visible lines
|
||||
const int LISTMAXTOTAL = 100; // maximum total number of lines
|
||||
|
@ -35,81 +39,83 @@ const int LISTMAXTOTAL = 100; // maximum total number of lines
|
|||
|
||||
class CList : public CControl
|
||||
{
|
||||
public:
|
||||
CList(CInstanceManager* iMan);
|
||||
~CList();
|
||||
public:
|
||||
CList();
|
||||
~CList();
|
||||
|
||||
bool Create(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg, float expand);
|
||||
bool Create(Math::Point pos, Math::Point dim, int icon, EventType eventMsg, float expand);
|
||||
|
||||
void SetPos(Math::Point pos);
|
||||
void SetDim(Math::Point dim);
|
||||
void SetPos(Math::Point pos);
|
||||
void SetDim(Math::Point dim);
|
||||
|
||||
bool SetState(int state, bool bState);
|
||||
bool SetState(int state);
|
||||
bool ClearState(int state);
|
||||
bool SetState(int state, bool bState);
|
||||
bool SetState(int state);
|
||||
bool ClearState(int state);
|
||||
|
||||
bool EventProcess(const Event &event);
|
||||
void Draw();
|
||||
bool EventProcess(const Event &event);
|
||||
void Draw();
|
||||
|
||||
void Flush();
|
||||
void Flush();
|
||||
|
||||
void SetTotal(int i);
|
||||
int RetTotal();
|
||||
void SetTotal(int i);
|
||||
int GetTotal();
|
||||
|
||||
void SetSelect(int i);
|
||||
int RetSelect();
|
||||
void SetSelect(int i);
|
||||
int GetSelect();
|
||||
|
||||
void SetSelectCap(bool bEnable);
|
||||
bool RetSelectCap();
|
||||
void SetSelectCap(bool bEnable);
|
||||
bool GetSelectCap();
|
||||
|
||||
void SetBlink(bool bEnable);
|
||||
bool RetBlink();
|
||||
void SetBlink(bool bEnable);
|
||||
bool GetBlink();
|
||||
|
||||
void SetName(int i, char* name);
|
||||
char* RetName(int i);
|
||||
void SetName(int i, char* name);
|
||||
char* GetName(int i);
|
||||
|
||||
void SetCheck(int i, bool bMode);
|
||||
bool RetCheck(int i);
|
||||
void SetCheck(int i, bool bMode);
|
||||
bool GetCheck(int i);
|
||||
|
||||
void SetEnable(int i, bool bEnable);
|
||||
bool RetEnable(int i);
|
||||
void SetEnable(int i, bool bEnable);
|
||||
bool GetEnable(int i);
|
||||
|
||||
void SetTabs(int i, float pos, int justif=1);
|
||||
float RetTabs(int i);
|
||||
void SetTabs(int i, float pos, Gfx::TextAlign justif=Gfx::TEXT_ALIGN_CENTER);
|
||||
float GetTabs(int i);
|
||||
|
||||
void ShowSelect(bool bFixed);
|
||||
void ShowSelect(bool bFixed);
|
||||
|
||||
EventMsg RetEventMsgButton(int i);
|
||||
EventMsg RetEventMsgScroll();
|
||||
EventType GetEventMsgButton(int i);
|
||||
EventType GetEventMsgScroll();
|
||||
|
||||
protected:
|
||||
bool MoveAdjust();
|
||||
void UpdateButton();
|
||||
void UpdateScroll();
|
||||
void MoveScroll();
|
||||
void DrawCase(char *text, Math::Point pos, float width, int justif);
|
||||
protected:
|
||||
bool MoveAdjust();
|
||||
void UpdateButton();
|
||||
void UpdateScroll();
|
||||
void MoveScroll();
|
||||
void DrawCase(char *text, Math::Point pos, float width, Gfx::TextAlign justif);
|
||||
|
||||
protected:
|
||||
CButton* m_button[LISTMAXDISPLAY];
|
||||
CScroll* m_scroll;
|
||||
protected:
|
||||
CButton* m_button[LISTMAXDISPLAY];
|
||||
CScroll* m_scroll;
|
||||
|
||||
EventMsg m_eventButton[LISTMAXDISPLAY];
|
||||
EventMsg m_eventScroll;
|
||||
EventType m_eventButton[LISTMAXDISPLAY];
|
||||
EventType m_eventScroll;
|
||||
|
||||
float m_expand;
|
||||
int m_totalLine; // total number of lines
|
||||
int m_displayLine; // number of visible lines
|
||||
int m_selectLine; // selected line
|
||||
int m_firstLine; // first visible line
|
||||
bool m_bBlink;
|
||||
bool m_bSelectCap;
|
||||
float m_blinkTime;
|
||||
float m_tabs[10];
|
||||
int m_justifs[10];
|
||||
float m_expand;
|
||||
int m_totalLine; // total number of lines
|
||||
int m_displayLine; // number of visible lines
|
||||
int m_selectLine; // selected line
|
||||
int m_firstLine; // first visible line
|
||||
bool m_bBlink;
|
||||
bool m_bSelectCap;
|
||||
float m_blinkTime;
|
||||
float m_tabs[10];
|
||||
Gfx::TextAlign m_justifs[10];
|
||||
|
||||
char m_text[LISTMAXTOTAL][100];
|
||||
char m_check[LISTMAXTOTAL];
|
||||
char m_enable[LISTMAXTOTAL];
|
||||
char m_text[LISTMAXTOTAL][100];
|
||||
char m_check[LISTMAXTOTAL];
|
||||
char m_enable[LISTMAXTOTAL];
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
34
src/ui/map.h
34
src/ui/map.h
|
@ -19,16 +19,14 @@
|
|||
#pragma once
|
||||
|
||||
|
||||
#include "ui/control.h"
|
||||
#include "object/object.h"
|
||||
#include <ui/control.h>
|
||||
|
||||
#include <object/object.h>
|
||||
|
||||
#include <common/event.h>
|
||||
|
||||
class CD3DEngine;
|
||||
class CTerrain;
|
||||
class CWater;
|
||||
class CRobotMain;
|
||||
|
||||
|
||||
|
||||
const int MAPMAXOBJECT = 100;
|
||||
|
||||
|
@ -53,7 +51,7 @@ struct MapObject
|
|||
CObject* object;
|
||||
MapColor color;
|
||||
ObjectType type;
|
||||
Math::Point pos;
|
||||
Math::Point pos;
|
||||
float dir;
|
||||
};
|
||||
|
||||
|
@ -62,10 +60,10 @@ struct MapObject
|
|||
class CMap : public CControl
|
||||
{
|
||||
public:
|
||||
CMap(CInstanceManager* iMan);
|
||||
CMap();
|
||||
~CMap();
|
||||
|
||||
bool Create(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
bool Create(Math::Point pos, Math::Point dim, int icon, EventType eventMsg);
|
||||
bool EventProcess(const Event &event);
|
||||
void Draw();
|
||||
|
||||
|
@ -87,8 +85,8 @@ public:
|
|||
void SetEnable(bool bEnable);
|
||||
bool RetEnable();
|
||||
|
||||
void SetFloorColor(D3DCOLORVALUE color);
|
||||
void SetWaterColor(D3DCOLORVALUE color);
|
||||
void SetFloorColor(Gfx::Color color);
|
||||
void SetWaterColor(Gfx::Color color);
|
||||
|
||||
void FlushObject();
|
||||
void UpdateObject(CObject* pObj);
|
||||
|
@ -97,9 +95,9 @@ public:
|
|||
void SetHilite(CObject* pObj);
|
||||
|
||||
protected:
|
||||
Math::Point AdjustOffset(Math::Point offset);
|
||||
Math::Point AdjustOffset(Math::Point offset);
|
||||
void SelectObject(Math::Point pos);
|
||||
Math::Point MapInter(Math::Point pos, float dir);
|
||||
Math::Point MapInter(Math::Point pos, float dir);
|
||||
void DrawFocus(Math::Point pos, float dir, ObjectType type, MapColor color);
|
||||
void DrawObject(Math::Point pos, float dir, ObjectType type, MapColor color, bool bSelect, bool bHilite);
|
||||
void DrawObjectIcon(Math::Point pos, Math::Point dim, MapColor color, ObjectType type, bool bHilite);
|
||||
|
@ -117,16 +115,16 @@ protected:
|
|||
float m_time;
|
||||
float m_half;
|
||||
float m_zoom;
|
||||
Math::Point m_offset;
|
||||
Math::Point m_offset;
|
||||
float m_angle;
|
||||
D3DCOLORVALUE m_floorColor;
|
||||
D3DCOLORVALUE m_waterColor;
|
||||
Gfx::Color m_floorColor;
|
||||
Gfx::Color m_waterColor;
|
||||
MapObject m_map[MAPMAXOBJECT];
|
||||
int m_totalFix;
|
||||
int m_totalMove;
|
||||
int m_hiliteRank;
|
||||
Math::Point m_mapPos;
|
||||
Math::Point m_mapDim;
|
||||
Math::Point m_mapPos;
|
||||
Math::Point m_mapDim;
|
||||
bool m_bRadar;
|
||||
char m_fixImage[100];
|
||||
int m_mode;
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
// * This file is part of the COLOBOT source code
|
||||
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
|
||||
// * Copyright (C) 2012, Polish Portal of Colobot (PPC)
|
||||
// *
|
||||
// * This program is free software: you can redistribute it and/or modify
|
||||
// * it under the terms of the GNU General Public License as published by
|
||||
|
@ -17,13 +18,14 @@
|
|||
// scroll.cpp
|
||||
|
||||
|
||||
#include <windows.h>
|
||||
#include <stdio.h>
|
||||
#include <d3d.h>
|
||||
//#include <windows.h>
|
||||
//#include <stdio.h>
|
||||
//#include <d3d.h>
|
||||
|
||||
#include "common/struct.h"
|
||||
#include "old/d3dengine.h"
|
||||
#include "old/math3d.h"
|
||||
//#include "common/struct.h"
|
||||
//#include "old/d3dengine.h"
|
||||
//#include "old/math3d.h"
|
||||
#include "graphics/engine/engine.h"
|
||||
#include "common/event.h"
|
||||
#include "common/misc.h"
|
||||
#include "common/iman.h"
|
||||
|
@ -31,11 +33,11 @@
|
|||
#include "ui/scroll.h"
|
||||
|
||||
|
||||
|
||||
namespace Ui {
|
||||
|
||||
// Object's constructor.
|
||||
|
||||
CScroll::CScroll(CInstanceManager* iMan) : CControl(iMan)
|
||||
CScroll::CScroll() : CControl()
|
||||
{
|
||||
m_buttonUp = 0;
|
||||
m_buttonDown = 0;
|
||||
|
@ -61,9 +63,9 @@ CScroll::~CScroll()
|
|||
|
||||
// Creates a new button.
|
||||
|
||||
bool CScroll::Create(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
bool CScroll::Create(Math::Point pos, Math::Point dim, int icon, EventType eventMsg)
|
||||
{
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventType();
|
||||
CControl::Create(pos, dim, icon, eventMsg);
|
||||
|
||||
MoveAdjust();
|
||||
|
@ -102,20 +104,20 @@ void CScroll::MoveAdjust()
|
|||
{
|
||||
if ( m_buttonUp == 0 )
|
||||
{
|
||||
m_buttonUp = new CButton(m_iMan);
|
||||
m_buttonUp = new CButton();
|
||||
pc = (CButton*)m_buttonUp;
|
||||
pc->Create(Math::Point(0.0f, 0.0f), Math::Point(0.0f, 0.0f), 49, EVENT_NULL);
|
||||
pc->SetRepeat(true);
|
||||
m_eventUp = pc->RetEventMsg();
|
||||
m_eventUp = pc->GetEventType();
|
||||
}
|
||||
|
||||
if ( m_buttonDown == 0 )
|
||||
{
|
||||
m_buttonDown = new CButton(m_iMan);
|
||||
m_buttonDown = new CButton();
|
||||
pc = (CButton*)m_buttonDown;
|
||||
pc->Create(Math::Point(0.0f, 0.0f), Math::Point(0.0f, 0.0f), 50, EVENT_NULL);
|
||||
pc->SetRepeat(true);
|
||||
m_eventDown = pc->RetEventMsg();
|
||||
m_eventDown = pc->GetEventType();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -213,31 +215,32 @@ bool CScroll::EventProcess(const Event &event)
|
|||
if ( !m_buttonDown->EventProcess(event) ) return false;
|
||||
}
|
||||
|
||||
if ( event.event == m_eventUp && m_step > 0.0f )
|
||||
if ( event.type == m_eventUp && m_step > 0.0f )
|
||||
{
|
||||
m_visibleValue -= m_step;
|
||||
if ( m_visibleValue < 0.0f ) m_visibleValue = 0.0f;
|
||||
AdjustGlint();
|
||||
|
||||
Event newEvent = event;
|
||||
newEvent.event = m_eventMsg;
|
||||
newEvent.type = m_eventType;
|
||||
m_event->AddEvent(newEvent);
|
||||
}
|
||||
|
||||
if ( event.event == m_eventDown && m_step > 0.0f )
|
||||
if ( event.type == m_eventDown && m_step > 0.0f )
|
||||
{
|
||||
m_visibleValue += m_step;
|
||||
if ( m_visibleValue > 1.0f ) m_visibleValue = 1.0f;
|
||||
AdjustGlint();
|
||||
|
||||
Event newEvent = event;
|
||||
newEvent.event = m_eventMsg;
|
||||
newEvent.type = m_eventType;
|
||||
m_event->AddEvent(newEvent);
|
||||
}
|
||||
|
||||
hButton = m_buttonUp?m_dim.x/0.75f:0.0f;
|
||||
|
||||
if ( event.event == EVENT_LBUTTONDOWN &&
|
||||
if ( event.type == EVENT_MOUSE_BUTTON_DOWN &&
|
||||
event.mouseButton.button == 1 &&
|
||||
(m_state & STATE_VISIBLE) &&
|
||||
(m_state & STATE_ENABLE) )
|
||||
{
|
||||
|
@ -258,7 +261,7 @@ bool CScroll::EventProcess(const Event &event)
|
|||
AdjustGlint();
|
||||
|
||||
Event newEvent = event;
|
||||
newEvent.event = m_eventMsg;
|
||||
newEvent.type = m_eventType;
|
||||
m_event->AddEvent(newEvent);
|
||||
}
|
||||
m_bCapture = true;
|
||||
|
@ -267,7 +270,7 @@ bool CScroll::EventProcess(const Event &event)
|
|||
}
|
||||
}
|
||||
|
||||
if ( event.event == EVENT_MOUSEMOVE && m_bCapture )
|
||||
if ( event.type == EVENT_MOUSE_MOVE && m_bCapture )
|
||||
{
|
||||
h = (m_dim.y-hButton*2.0f)*(1.0f-m_visibleRatio);
|
||||
if ( h != 0 )
|
||||
|
@ -282,33 +285,35 @@ bool CScroll::EventProcess(const Event &event)
|
|||
AdjustGlint();
|
||||
|
||||
Event newEvent = event;
|
||||
newEvent.event = m_eventMsg;
|
||||
newEvent.type = m_eventType;
|
||||
m_event->AddEvent(newEvent);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( event.event == EVENT_LBUTTONUP && m_bCapture )
|
||||
if ( event.type == EVENT_MOUSE_BUTTON_UP &&
|
||||
event.mouseButton.button == 1 &&
|
||||
m_bCapture )
|
||||
{
|
||||
m_bCapture = false;
|
||||
}
|
||||
|
||||
if ( event.event == EVENT_KEYDOWN &&
|
||||
event.param == VK_WHEELUP &&
|
||||
Detect(event.pos) &&
|
||||
if ( event.type == EVENT_KEY_DOWN &&
|
||||
event.mouseButton.button == 4 &&
|
||||
Detect(event.pos) &&
|
||||
m_buttonUp != 0 )
|
||||
{
|
||||
Event newEvent = event;
|
||||
newEvent.event = m_buttonUp->RetEventMsg();
|
||||
newEvent.type = m_buttonUp->GetEventType();
|
||||
m_event->AddEvent(newEvent);
|
||||
}
|
||||
if ( event.event == EVENT_KEYDOWN &&
|
||||
event.param == VK_WHEELDOWN &&
|
||||
Detect(event.pos) &&
|
||||
if ( event.type == EVENT_KEY_DOWN &&
|
||||
event.mouseButton.button == 5 &&
|
||||
Detect(event.pos) &&
|
||||
m_buttonDown != 0 )
|
||||
{
|
||||
Event newEvent = event;
|
||||
newEvent.event = m_buttonDown->RetEventMsg();
|
||||
newEvent.type = m_buttonDown->GetEventType();
|
||||
m_event->AddEvent(newEvent);
|
||||
}
|
||||
|
||||
|
@ -381,7 +386,7 @@ void CScroll::DrawVertex(Math::Point pos, Math::Point dim, int icon)
|
|||
if ( icon == 0 )
|
||||
{
|
||||
m_engine->SetTexture("button2.tga");
|
||||
m_engine->SetState(D3DSTATENORMAL);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL);
|
||||
uv1.x = 0.0f/256.0f; // yellow rectangle
|
||||
uv1.y = 32.0f/256.0f;
|
||||
uv2.x = 32.0f/256.0f;
|
||||
|
@ -391,7 +396,7 @@ void CScroll::DrawVertex(Math::Point pos, Math::Point dim, int icon)
|
|||
else if ( icon == 1 )
|
||||
{
|
||||
m_engine->SetTexture("button2.tga");
|
||||
m_engine->SetState(D3DSTATENORMAL);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL);
|
||||
uv1.x = 128.0f/256.0f; // gray rectangle
|
||||
uv1.y = 32.0f/256.0f;
|
||||
uv2.x = 160.0f/256.0f;
|
||||
|
@ -401,7 +406,7 @@ void CScroll::DrawVertex(Math::Point pos, Math::Point dim, int icon)
|
|||
else if ( icon == 2 )
|
||||
{
|
||||
m_engine->SetTexture("button1.tga");
|
||||
m_engine->SetState(D3DSTATENORMAL);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL);
|
||||
uv1.x = 64.0f/256.0f; // blue rectangle
|
||||
uv1.y = 0.0f/256.0f;
|
||||
uv2.x = 96.0f/256.0f;
|
||||
|
@ -411,7 +416,7 @@ void CScroll::DrawVertex(Math::Point pos, Math::Point dim, int icon)
|
|||
else
|
||||
{
|
||||
m_engine->SetTexture("button2.tga");
|
||||
m_engine->SetState(D3DSTATENORMAL);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL);
|
||||
uv1.x = 104.0f/256.0f; // blue line -
|
||||
uv1.y = 32.0f/256.0f;
|
||||
uv2.x = 128.0f/256.0f;
|
||||
|
@ -437,7 +442,7 @@ void CScroll::SetVisibleValue(float value)
|
|||
AdjustGlint();
|
||||
}
|
||||
|
||||
float CScroll::RetVisibleValue()
|
||||
float CScroll::GetVisibleValue()
|
||||
{
|
||||
return m_visibleValue;
|
||||
}
|
||||
|
@ -451,7 +456,7 @@ void CScroll::SetVisibleRatio(float value)
|
|||
AdjustGlint();
|
||||
}
|
||||
|
||||
float CScroll::RetVisibleRatio()
|
||||
float CScroll::GetVisibleRatio()
|
||||
{
|
||||
return m_visibleRatio;
|
||||
}
|
||||
|
@ -462,8 +467,9 @@ void CScroll::SetArrowStep(float step)
|
|||
m_step = step;
|
||||
}
|
||||
|
||||
float CScroll::RetArrowStep()
|
||||
float CScroll::GetArrowStep()
|
||||
{
|
||||
return m_step;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
// * This file is part of the COLOBOT source code
|
||||
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
|
||||
// * Copyright (C) 2012, Polish Portal of Colobot (PPC)
|
||||
// *
|
||||
// * This program is free software: you can redistribute it and/or modify
|
||||
// * it under the terms of the GNU General Public License as published by
|
||||
|
@ -19,63 +20,65 @@
|
|||
#pragma once
|
||||
|
||||
|
||||
#include "ui/control.h"
|
||||
#include <ui/control.h>
|
||||
|
||||
#include <common/event.h>
|
||||
|
||||
namespace Ui {
|
||||
|
||||
class CD3DEngine;
|
||||
class CButton;
|
||||
|
||||
|
||||
const float SCROLL_WIDTH = (15.0f/640.0f);
|
||||
|
||||
|
||||
|
||||
class CScroll : public CControl
|
||||
{
|
||||
public:
|
||||
CScroll(CInstanceManager* iMan);
|
||||
~CScroll();
|
||||
public:
|
||||
CScroll();
|
||||
~CScroll();
|
||||
|
||||
bool Create(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
bool Create(Math::Point pos, Math::Point dim, int icon, EventType eventMsg);
|
||||
|
||||
void SetPos(Math::Point pos);
|
||||
void SetDim(Math::Point dim);
|
||||
void SetPos(Math::Point pos);
|
||||
void SetDim(Math::Point dim);
|
||||
|
||||
bool SetState(int state, bool bState);
|
||||
bool SetState(int state);
|
||||
bool ClearState(int state);
|
||||
bool SetState(int state, bool bState);
|
||||
bool SetState(int state);
|
||||
bool ClearState(int state);
|
||||
|
||||
bool EventProcess(const Event &event);
|
||||
void Draw();
|
||||
bool EventProcess(const Event &event);
|
||||
void Draw();
|
||||
|
||||
void SetVisibleValue(float value);
|
||||
float RetVisibleValue();
|
||||
void SetVisibleValue(float value);
|
||||
float GetVisibleValue();
|
||||
|
||||
void SetVisibleRatio(float value);
|
||||
float RetVisibleRatio();
|
||||
void SetVisibleRatio(float value);
|
||||
float GetVisibleRatio();
|
||||
|
||||
void SetArrowStep(float step);
|
||||
float RetArrowStep();
|
||||
void SetArrowStep(float step);
|
||||
float GetArrowStep();
|
||||
|
||||
protected:
|
||||
void MoveAdjust();
|
||||
void AdjustGlint();
|
||||
void DrawVertex(Math::Point pos, Math::Point dim, int icon);
|
||||
protected:
|
||||
void MoveAdjust();
|
||||
void AdjustGlint();
|
||||
void DrawVertex(Math::Point pos, Math::Point dim, int icon);
|
||||
|
||||
protected:
|
||||
CButton* m_buttonUp;
|
||||
CButton* m_buttonDown;
|
||||
protected:
|
||||
CButton* m_buttonUp;
|
||||
CButton* m_buttonDown;
|
||||
|
||||
float m_visibleValue;
|
||||
float m_visibleRatio;
|
||||
float m_step;
|
||||
float m_visibleValue;
|
||||
float m_visibleRatio;
|
||||
float m_step;
|
||||
|
||||
bool m_bCapture;
|
||||
Math::Point m_pressPos;
|
||||
float m_pressValue;
|
||||
bool m_bCapture;
|
||||
Math::Point m_pressPos;
|
||||
float m_pressValue;
|
||||
|
||||
EventMsg m_eventUp;
|
||||
EventMsg m_eventDown;
|
||||
EventType m_eventUp;
|
||||
EventType m_eventDown;
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -18,31 +18,28 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include <ui/control.h>
|
||||
|
||||
#include "ui/control.h"
|
||||
|
||||
|
||||
class CD3DEngine;
|
||||
|
||||
#include <common/event.h>
|
||||
|
||||
|
||||
class CShortcut : public CControl
|
||||
{
|
||||
public:
|
||||
CShortcut(CInstanceManager* iMan);
|
||||
~CShortcut();
|
||||
public:
|
||||
CShortcut();
|
||||
~CShortcut();
|
||||
|
||||
bool Create(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
bool Create(Math::Point pos, Math::Point dim, int icon, EventType eventMsg);
|
||||
|
||||
bool EventProcess(const Event &event);
|
||||
bool EventProcess(const Event &event);
|
||||
|
||||
void Draw();
|
||||
void Draw();
|
||||
|
||||
protected:
|
||||
void DrawVertex(int icon, float zoom);
|
||||
protected:
|
||||
void DrawVertex(int icon, float zoom);
|
||||
|
||||
protected:
|
||||
float m_time;
|
||||
protected:
|
||||
float m_time;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
// * This file is part of the COLOBOT source code
|
||||
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
|
||||
// * Copyright (C) 2012, Polish Portal of Colobot (PPC)
|
||||
// *
|
||||
// * This program is free software: you can redistribute it and/or modify
|
||||
// * it under the terms of the GNU General Public License as published by
|
||||
|
@ -17,21 +18,24 @@
|
|||
// slider.cpp
|
||||
|
||||
|
||||
#include <windows.h>
|
||||
//#include <windows.h>
|
||||
#include <stdio.h>
|
||||
#include <d3d.h>
|
||||
//#include <d3d.h>
|
||||
|
||||
#include "common/struct.h"
|
||||
#include "old/d3dengine.h"
|
||||
#include "old/math3d.h"
|
||||
//#include "common/struct.h"
|
||||
//#include "old/d3dengine.h"
|
||||
//#include "old/math3d.h"
|
||||
#include "graphics/engine/engine.h"
|
||||
#include "common/event.h"
|
||||
#include "common/misc.h"
|
||||
#include "common/iman.h"
|
||||
#include "old/text.h"
|
||||
//#include "old/text.h"
|
||||
#include "graphics/engine/text.h"
|
||||
#include "ui/button.h"
|
||||
#include "ui/slider.h"
|
||||
|
||||
|
||||
namespace Ui {
|
||||
|
||||
const float CURSOR_WIDTH = (10.0f/640.0f);
|
||||
const float HOLE_WIDTH = (5.0f/480.0f);
|
||||
|
@ -41,7 +45,7 @@ const float HOLE_WIDTH = (5.0f/480.0f);
|
|||
|
||||
// Object's constructor.
|
||||
|
||||
CSlider::CSlider(CInstanceManager* iMan) : CControl(iMan)
|
||||
CSlider::CSlider() : CControl()
|
||||
{
|
||||
m_buttonLeft = 0;
|
||||
m_buttonRight = 0;
|
||||
|
@ -71,10 +75,10 @@ CSlider::~CSlider()
|
|||
|
||||
// Creates a new button.
|
||||
|
||||
bool CSlider::Create(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
bool CSlider::Create(Math::Point pos, Math::Point dim, int icon, EventType eventType)
|
||||
{
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
CControl::Create(pos, dim, icon, eventMsg);
|
||||
if ( eventType == EVENT_NULL ) eventType = GetUniqueEventType();
|
||||
CControl::Create(pos, dim, icon, eventType);
|
||||
|
||||
MoveAdjust();
|
||||
return true;
|
||||
|
@ -115,20 +119,20 @@ void CSlider::MoveAdjust()
|
|||
#if 1
|
||||
if ( m_buttonLeft == 0 )
|
||||
{
|
||||
m_buttonLeft = new CButton(m_iMan);
|
||||
m_buttonLeft = new CButton();
|
||||
m_buttonLeft->Create(Math::Point(0.0f, 0.0f), Math::Point(0.0f, 0.0f), m_bHoriz?55:49, EVENT_NULL); // </^
|
||||
m_buttonLeft->SetRepeat(true);
|
||||
if ( m_state & STATE_SHADOW ) m_buttonLeft->SetState(STATE_SHADOW);
|
||||
m_eventUp = m_buttonLeft->RetEventMsg();
|
||||
m_eventUp = m_buttonLeft->GetEventType();
|
||||
}
|
||||
|
||||
if ( m_buttonRight == 0 )
|
||||
{
|
||||
m_buttonRight = new CButton(m_iMan);
|
||||
m_buttonRight = new CButton();
|
||||
m_buttonRight->Create(Math::Point(0.0f, 0.0f), Math::Point(0.0f, 0.0f), m_bHoriz?48:50, EVENT_NULL); // >/v
|
||||
m_buttonRight->SetRepeat(true);
|
||||
if ( m_state & STATE_SHADOW ) m_buttonRight->SetState(STATE_SHADOW);
|
||||
m_eventDown = m_buttonRight->RetEventMsg();
|
||||
m_eventDown = m_buttonRight->GetEventType();
|
||||
}
|
||||
|
||||
m_marginButton = m_bHoriz?(m_dim.y*0.75f):(m_dim.x/0.75f);
|
||||
|
@ -261,7 +265,7 @@ bool CSlider::EventProcess(const Event &event)
|
|||
if ( !m_buttonRight->EventProcess(event) ) return false;
|
||||
}
|
||||
|
||||
if ( event.event == m_eventUp && m_step > 0.0f )
|
||||
if ( event.type == m_eventUp && m_step > 0.0f )
|
||||
{
|
||||
m_visibleValue -= m_bHoriz?m_step:-m_step;
|
||||
if ( m_visibleValue < 0.0f ) m_visibleValue = 0.0f;
|
||||
|
@ -269,11 +273,11 @@ bool CSlider::EventProcess(const Event &event)
|
|||
AdjustGlint();
|
||||
|
||||
Event newEvent = event;
|
||||
newEvent.event = m_eventMsg;
|
||||
newEvent.type = m_eventType;
|
||||
m_event->AddEvent(newEvent);
|
||||
}
|
||||
|
||||
if ( event.event == m_eventDown && m_step > 0.0f )
|
||||
if ( event.type == m_eventDown && m_step > 0.0f )
|
||||
{
|
||||
m_visibleValue += m_bHoriz?m_step:-m_step;
|
||||
if ( m_visibleValue < 0.0f ) m_visibleValue = 0.0f;
|
||||
|
@ -281,12 +285,13 @@ bool CSlider::EventProcess(const Event &event)
|
|||
AdjustGlint();
|
||||
|
||||
Event newEvent = event;
|
||||
newEvent.event = m_eventMsg;
|
||||
newEvent.type = m_eventType;
|
||||
m_event->AddEvent(newEvent);
|
||||
}
|
||||
|
||||
if ( event.event == EVENT_LBUTTONDOWN &&
|
||||
(m_state & STATE_VISIBLE) &&
|
||||
if ( event.type == EVENT_MOUSE_BUTTON_DOWN &&
|
||||
(event.mouseButton.button == 1 ) &&
|
||||
(m_state & STATE_VISIBLE) &&
|
||||
(m_state & STATE_ENABLE) )
|
||||
{
|
||||
if ( CControl::Detect(event.pos) )
|
||||
|
@ -311,7 +316,7 @@ bool CSlider::EventProcess(const Event &event)
|
|||
AdjustGlint();
|
||||
|
||||
Event newEvent = event;
|
||||
newEvent.event = m_eventMsg;
|
||||
newEvent.type = m_eventType;
|
||||
m_event->AddEvent(newEvent);
|
||||
|
||||
m_bCapture = true;
|
||||
|
@ -320,7 +325,7 @@ bool CSlider::EventProcess(const Event &event)
|
|||
}
|
||||
}
|
||||
|
||||
if ( event.event == EVENT_MOUSEMOVE && m_bCapture )
|
||||
if ( event.type == EVENT_MOUSE_MOVE && m_bCapture )
|
||||
{
|
||||
if ( m_bHoriz )
|
||||
{
|
||||
|
@ -345,32 +350,35 @@ bool CSlider::EventProcess(const Event &event)
|
|||
AdjustGlint();
|
||||
|
||||
Event newEvent = event;
|
||||
newEvent.event = m_eventMsg;
|
||||
newEvent.type = m_eventType;
|
||||
m_event->AddEvent(newEvent);
|
||||
}
|
||||
}
|
||||
|
||||
if ( event.event == EVENT_LBUTTONUP && m_bCapture )
|
||||
if ( ( event.type == EVENT_MOUSE_BUTTON_UP ) &&
|
||||
( event.mouseButton.button == 1 ) &&
|
||||
m_bCapture )
|
||||
{
|
||||
m_bCapture = false;
|
||||
}
|
||||
|
||||
if ( event.event == EVENT_KEYDOWN &&
|
||||
event.param == VK_WHEELUP &&
|
||||
if ( event.type == EVENT_KEY_DOWN &&
|
||||
event.mouseButton.button == 4 &&
|
||||
Detect(event.pos) &&
|
||||
m_buttonLeft != 0 )
|
||||
{
|
||||
Event newEvent = event;
|
||||
newEvent.event = m_buttonLeft->RetEventMsg();
|
||||
newEvent.type = m_buttonLeft->GetEventType();
|
||||
m_event->AddEvent(newEvent);
|
||||
}
|
||||
if ( event.event == EVENT_KEYDOWN &&
|
||||
event.param == VK_WHEELDOWN &&
|
||||
|
||||
if ( event.type == EVENT_KEY_DOWN &&
|
||||
event.mouseButton.button == 5 &&
|
||||
Detect(event.pos) &&
|
||||
m_buttonRight != 0 )
|
||||
{
|
||||
Event newEvent = event;
|
||||
newEvent.event = m_buttonRight->RetEventMsg();
|
||||
newEvent.type = m_buttonRight->GetEventType();
|
||||
m_event->AddEvent(newEvent);
|
||||
}
|
||||
|
||||
|
@ -466,10 +474,10 @@ void CSlider::Draw()
|
|||
if ( m_bHoriz )
|
||||
{
|
||||
sprintf(text, "%d", (int)(m_min+m_visibleValue*(m_max-m_min)));
|
||||
h = m_engine->RetText()->RetHeight(m_fontSize, m_fontType);
|
||||
h = m_engine->GetText()->GetHeight(m_fontType, m_fontSize);
|
||||
pos.x = m_pos.x+m_dim.x+(10.0f/640.0f);
|
||||
pos.y = m_pos.y+(m_dim.y-h)/2.0f;
|
||||
m_engine->RetText()->DrawText(text, pos, m_dim.x, 1, m_fontSize, m_fontStretch, m_fontType, 0);
|
||||
m_engine->GetText()->DrawText(text, m_fontType, m_fontSize, pos, m_dim.x, Gfx::TEXT_ALIGN_RIGHT, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -482,7 +490,7 @@ void CSlider::Draw()
|
|||
dim.x = 50.0f/640.0f;
|
||||
dim.y = 16.0f/480.0f;
|
||||
sprintf(text, "%d", (int)(m_min+(m_visibleValue*(m_max-m_min))));
|
||||
m_engine->RetText()->DrawText(text, pos, dim.x, 1, m_fontSize, m_fontStretch, m_fontType, 0);
|
||||
m_engine->GetText()->DrawText(text, m_fontType, m_fontSize, pos, dim.x, Gfx::TEXT_ALIGN_RIGHT, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -497,7 +505,7 @@ void CSlider::DrawVertex(Math::Point pos, Math::Point dim, int icon)
|
|||
if ( icon == 0 )
|
||||
{
|
||||
m_engine->SetTexture("button2.tga");
|
||||
m_engine->SetState(D3DSTATENORMAL);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL);
|
||||
uv1.x = 0.0f/256.0f; // yellow rectangle
|
||||
uv1.y = 32.0f/256.0f;
|
||||
uv2.x = 32.0f/256.0f;
|
||||
|
@ -509,7 +517,7 @@ void CSlider::DrawVertex(Math::Point pos, Math::Point dim, int icon)
|
|||
else if ( icon == 1 )
|
||||
{
|
||||
m_engine->SetTexture("button2.tga");
|
||||
m_engine->SetState(D3DSTATENORMAL);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL);
|
||||
uv1.x = 128.0f/256.0f; // gray rectangle
|
||||
uv1.y = 32.0f/256.0f;
|
||||
uv2.x = 160.0f/256.0f;
|
||||
|
@ -521,7 +529,7 @@ void CSlider::DrawVertex(Math::Point pos, Math::Point dim, int icon)
|
|||
else
|
||||
{
|
||||
m_engine->SetTexture("button2.tga");
|
||||
m_engine->SetState(D3DSTATENORMAL);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL);
|
||||
uv1.x = 224.0f/256.0f; // cursor
|
||||
uv1.y = 32.0f/256.0f;
|
||||
uv2.x = 256.0f/256.0f;
|
||||
|
@ -561,7 +569,7 @@ void CSlider::SetVisibleValue(float value)
|
|||
AdjustGlint();
|
||||
}
|
||||
|
||||
float CSlider::RetVisibleValue()
|
||||
float CSlider::GetVisibleValue()
|
||||
{
|
||||
return m_min+m_visibleValue*(m_max-m_min);
|
||||
}
|
||||
|
@ -572,9 +580,10 @@ void CSlider::SetArrowStep(float step)
|
|||
m_step = step/(m_max-m_min);
|
||||
}
|
||||
|
||||
float CSlider::RetArrowStep()
|
||||
float CSlider::GetArrowStep()
|
||||
{
|
||||
return m_step*(m_max-m_min);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
// * This file is part of the COLOBOT source code
|
||||
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
|
||||
// * Copyright (C) 2012, Polish Portal of Colobot (PPC)
|
||||
// *
|
||||
// * This program is free software: you can redistribute it and/or modify
|
||||
// * it under the terms of the GNU General Public License as published by
|
||||
|
@ -19,63 +20,64 @@
|
|||
#pragma once
|
||||
|
||||
|
||||
#include "ui/control.h"
|
||||
#include <ui/control.h>
|
||||
|
||||
#include <common/event.h>
|
||||
|
||||
namespace Ui {
|
||||
|
||||
class CD3DEngine;
|
||||
class CButton;
|
||||
|
||||
|
||||
|
||||
class CSlider : public CControl
|
||||
{
|
||||
public:
|
||||
CSlider(CInstanceManager* iMan);
|
||||
~CSlider();
|
||||
public:
|
||||
CSlider();
|
||||
~CSlider();
|
||||
|
||||
bool Create(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
bool Create(Math::Point pos, Math::Point dim, int icon, EventType eventMsg);
|
||||
|
||||
void SetPos(Math::Point pos);
|
||||
void SetDim(Math::Point dim);
|
||||
void SetPos(Math::Point pos);
|
||||
void SetDim(Math::Point dim);
|
||||
|
||||
bool SetState(int state, bool bState);
|
||||
bool SetState(int state);
|
||||
bool ClearState(int state);
|
||||
bool SetState(int state, bool bState);
|
||||
bool SetState(int state);
|
||||
bool ClearState(int state);
|
||||
|
||||
bool EventProcess(const Event &event);
|
||||
void Draw();
|
||||
bool EventProcess(const Event &event);
|
||||
void Draw();
|
||||
|
||||
void SetLimit(float min, float max);
|
||||
void SetLimit(float min, float max);
|
||||
|
||||
void SetVisibleValue(float value);
|
||||
float RetVisibleValue();
|
||||
void SetVisibleValue(float value);
|
||||
float GetVisibleValue();
|
||||
|
||||
void SetArrowStep(float step);
|
||||
float RetArrowStep();
|
||||
void SetArrowStep(float step);
|
||||
float GetArrowStep();
|
||||
|
||||
protected:
|
||||
void MoveAdjust();
|
||||
void AdjustGlint();
|
||||
void DrawVertex(Math::Point pos, Math::Point dim, int icon);
|
||||
protected:
|
||||
void MoveAdjust();
|
||||
void AdjustGlint();
|
||||
void DrawVertex(Math::Point pos, Math::Point dim, int icon);
|
||||
|
||||
protected:
|
||||
CButton* m_buttonLeft;
|
||||
CButton* m_buttonRight;
|
||||
protected:
|
||||
CButton* m_buttonLeft;
|
||||
CButton* m_buttonRight;
|
||||
|
||||
float m_min;
|
||||
float m_max;
|
||||
float m_visibleValue;
|
||||
float m_step;
|
||||
float m_min;
|
||||
float m_max;
|
||||
float m_visibleValue;
|
||||
float m_step;
|
||||
|
||||
bool m_bHoriz;
|
||||
float m_marginButton;
|
||||
bool m_bHoriz;
|
||||
float m_marginButton;
|
||||
|
||||
bool m_bCapture;
|
||||
Math::Point m_pressPos;
|
||||
float m_pressValue;
|
||||
bool m_bCapture;
|
||||
Math::Point m_pressPos;
|
||||
float m_pressValue;
|
||||
|
||||
EventMsg m_eventUp;
|
||||
EventMsg m_eventDown;
|
||||
EventType m_eventUp;
|
||||
EventType m_eventDown;
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -505,7 +505,7 @@ void CStudio::SearchToken(CEdit* edit)
|
|||
for ( i=0 ; i<OBJECT_MAX ; i++ )
|
||||
{
|
||||
type = (ObjectType)i;
|
||||
text = RetObjectName(type);
|
||||
text = GetObjectName(type);
|
||||
if ( text[0] != 0 )
|
||||
{
|
||||
if ( strcmp(token, text) == 0 )
|
||||
|
|
|
@ -17,13 +17,14 @@
|
|||
// target.cpp
|
||||
|
||||
|
||||
#include <windows.h>
|
||||
#include <stdio.h>
|
||||
#include <d3d.h>
|
||||
//#include <windows.h>
|
||||
//#include <stdio.h>
|
||||
//#include <d3d.h>
|
||||
|
||||
#include "common/struct.h"
|
||||
#include "old/d3dengine.h"
|
||||
#include "old/math3d.h"
|
||||
//#include "common/struct.h"
|
||||
//#include "old/d3dengine.h"
|
||||
//#include "old/math3d.h"
|
||||
#include "graphics/engine/engine.h"
|
||||
#include "common/event.h"
|
||||
#include "common/misc.h"
|
||||
#include "common/iman.h"
|
||||
|
@ -34,10 +35,10 @@
|
|||
|
||||
|
||||
|
||||
|
||||
namespace Ui {
|
||||
// Object's constructor.
|
||||
|
||||
CTarget::CTarget(CInstanceManager* iMan) : CControl(iMan)
|
||||
CTarget::CTarget() : CControl()
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -50,11 +51,11 @@ CTarget::~CTarget()
|
|||
|
||||
// Creates a new button.
|
||||
|
||||
bool CTarget::Create(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
bool CTarget::Create(Math::Point pos, Math::Point dim, int icon, EventType eventType)
|
||||
{
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
if ( eventType == EVENT_NULL ) eventType = GetUniqueEventType();
|
||||
|
||||
CControl::Create(pos, dim, icon, eventMsg);
|
||||
CControl::Create(pos, dim, icon, eventType);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -70,26 +71,27 @@ bool CTarget::EventProcess(const Event &event)
|
|||
|
||||
CControl::EventProcess(event);
|
||||
|
||||
if ( event.event == EVENT_MOUSEMOVE )
|
||||
if ( event.type == EVENT_MOUSE_MOVE )
|
||||
{
|
||||
if ( CControl::Detect(event.pos) )
|
||||
{
|
||||
m_engine->SetMouseType(D3DMOUSETARGET);
|
||||
m_engine->SetMouseType(Gfx::ENG_MOUSE_TARGET);
|
||||
Event newEvent = event;
|
||||
newEvent.event = m_eventMsg;
|
||||
newEvent.type = m_eventType;
|
||||
m_event->AddEvent(newEvent);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if ( event.event == EVENT_LBUTTONDOWN &&
|
||||
if ( event.type == EVENT_MOUSE_BUTTON_DOWN &&
|
||||
event.mouseButton.button == 1 &&
|
||||
(m_state & STATE_VISIBLE) &&
|
||||
(m_state & STATE_ENABLE) )
|
||||
{
|
||||
if ( CControl::Detect(event.pos) )
|
||||
{
|
||||
Event newEvent = event;
|
||||
newEvent.event = EVENT_OBJECT_FIRE;
|
||||
newEvent.type = EVENT_OBJECT_FIRE;
|
||||
m_event->AddEvent(newEvent);
|
||||
return false;
|
||||
}
|
||||
|
@ -104,7 +106,7 @@ bool CTarget::EventProcess(const Event &event)
|
|||
|
||||
CControl::EventProcess(event);
|
||||
|
||||
if ( event.event == EVENT_MOUSEMOVE )
|
||||
if ( event.type == EVENT_MOUSE_MOVE )
|
||||
{
|
||||
m_main->SetFriendAim(false);
|
||||
|
||||
|
@ -113,22 +115,23 @@ bool CTarget::EventProcess(const Event &event)
|
|||
pObj = DetectFriendObject(event.pos);
|
||||
if ( pObj == 0 )
|
||||
{
|
||||
m_engine->SetMouseType(D3DMOUSETARGET);
|
||||
m_engine->SetMouseType(Gfx::ENG_MOUSE_TARGET);
|
||||
|
||||
Event newEvent = event;
|
||||
newEvent.event = m_eventMsg;
|
||||
newEvent.type = m_eventType;
|
||||
m_event->AddEvent(newEvent);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_main->SetFriendAim(true);
|
||||
m_engine->SetMouseType(D3DMOUSENORM);
|
||||
m_engine->SetMouseType(Gfx::ENG_MOUSE_NORM);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( event.event == EVENT_LBUTTONDOWN &&
|
||||
if ( event.type == EVENT_MOUSE_BUTTON_DOWN &&
|
||||
event.mouseButton.button == 1 &&
|
||||
(m_state & STATE_VISIBLE) &&
|
||||
(m_state & STATE_ENABLE) )
|
||||
{
|
||||
|
@ -137,7 +140,7 @@ bool CTarget::EventProcess(const Event &event)
|
|||
if ( !m_main->RetFriendAim() )
|
||||
{
|
||||
Event newEvent = event;
|
||||
newEvent.event = EVENT_OBJECT_FIRE;
|
||||
newEvent.type = EVENT_OBJECT_FIRE;
|
||||
m_event->AddEvent(newEvent);
|
||||
return false;
|
||||
}
|
||||
|
@ -202,15 +205,15 @@ CObject* CTarget::DetectFriendObject(Math::Point pos)
|
|||
|
||||
for ( i=0 ; i<1000000 ; i++ )
|
||||
{
|
||||
pObj = (CObject*)m_iMan->SearchInstance(CLASS_OBJECT, i);
|
||||
pObj = static_cast<CObject*>(m_iMan->SearchInstance(CLASS_OBJECT, i));
|
||||
if ( pObj == 0 ) break;
|
||||
|
||||
if ( !pObj->RetActif() ) continue;
|
||||
if ( pObj->RetProxyActivate() ) continue;
|
||||
if ( pObj->RetSelect() ) continue;
|
||||
if ( !pObj->GetActif() ) continue;
|
||||
if ( pObj->GetProxyActivate() ) continue;
|
||||
if ( pObj->GetSelect() ) continue;
|
||||
|
||||
pTarget = 0;
|
||||
type = pObj->RetType();
|
||||
type = pObj->GetType();
|
||||
if ( type == OBJECT_DERRICK ||
|
||||
type == OBJECT_FACTORY ||
|
||||
type == OBJECT_REPAIR ||
|
||||
|
@ -261,10 +264,10 @@ CObject* CTarget::DetectFriendObject(Math::Point pos)
|
|||
}
|
||||
else if ( (type == OBJECT_POWER ||
|
||||
type == OBJECT_ATOMIC ) &&
|
||||
pObj->RetTruck() != 0 ) // battery used?
|
||||
pObj->GetTruck() != 0 ) // battery used?
|
||||
{
|
||||
pTarget = pObj->RetTruck();
|
||||
if ( pTarget->RetType() == OBJECT_MOBILEtg )
|
||||
pTarget = pObj->GetTruck();
|
||||
if ( pTarget->GetType() == OBJECT_MOBILEtg )
|
||||
{
|
||||
pTarget = 0;
|
||||
}
|
||||
|
@ -272,7 +275,7 @@ CObject* CTarget::DetectFriendObject(Math::Point pos)
|
|||
|
||||
for ( j=0 ; j<OBJECTMAXPART ; j++ )
|
||||
{
|
||||
rank = pObj->RetObjectRank(j);
|
||||
rank = pObj->GetObjectRank(j);
|
||||
if ( rank == -1 ) continue;
|
||||
if ( rank != objRank ) continue;
|
||||
return pTarget;
|
||||
|
@ -281,3 +284,4 @@ CObject* CTarget::DetectFriendObject(Math::Point pos)
|
|||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -19,30 +19,27 @@
|
|||
#pragma once
|
||||
|
||||
|
||||
#include "ui/control.h"
|
||||
|
||||
|
||||
class CD3DEngine;
|
||||
class CObject;
|
||||
#include <ui/control.h>
|
||||
|
||||
#include <common/event.h>
|
||||
|
||||
namespace Ui {
|
||||
|
||||
class CTarget : public CControl
|
||||
{
|
||||
public:
|
||||
CTarget(CInstanceManager* iMan);
|
||||
~CTarget();
|
||||
public:
|
||||
CTarget();
|
||||
~CTarget();
|
||||
|
||||
bool Create(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
bool Create(Math::Point pos, Math::Point dim, int icon, EventType eventMsg);
|
||||
|
||||
bool EventProcess(const Event &event);
|
||||
void Draw();
|
||||
bool GetTooltip(Math::Point pos, char* name);
|
||||
bool EventProcess(const Event &event);
|
||||
void Draw();
|
||||
bool GetTooltip(Math::Point pos, char* name);
|
||||
|
||||
protected:
|
||||
CObject* DetectFriendObject(Math::Point pos);
|
||||
|
||||
protected:
|
||||
protected:
|
||||
CObject* DetectFriendObject(Math::Point pos);
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
// * This file is part of the COLOBOT source code
|
||||
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
|
||||
// * Copyright (C) 2012, Polish Portal of Colobot (PPC)
|
||||
// *
|
||||
// * This program is free software: you can redistribute it and/or modify
|
||||
// * it under the terms of the GNU General Public License as published by
|
||||
|
@ -17,14 +18,14 @@
|
|||
// window.cpp
|
||||
|
||||
|
||||
#include <windows.h>
|
||||
#include <stdio.h>
|
||||
#include <d3d.h>
|
||||
//#include <windows.h>
|
||||
//#include <stdio.h>
|
||||
//#include <d3d.h>
|
||||
|
||||
#include "common/struct.h"
|
||||
#include "old/d3dengine.h"
|
||||
//#include "common/struct.h"
|
||||
//#include "old/d3dengine.h"
|
||||
#include "common/language.h"
|
||||
#include "old/math3d.h"
|
||||
//#include "old/math3d.h"
|
||||
#include "common/event.h"
|
||||
#include "common/misc.h"
|
||||
#include "common/restext.h"
|
||||
|
@ -46,15 +47,17 @@
|
|||
#include "ui/gauge.h"
|
||||
#include "ui/compass.h"
|
||||
#include "ui/target.h"
|
||||
#include "old/text.h"
|
||||
//#include "old/text.h"
|
||||
#include "graphics/engine/text.h"
|
||||
#include "ui/window.h"
|
||||
|
||||
|
||||
|
||||
|
||||
namespace Ui {
|
||||
// Object's constructor.
|
||||
|
||||
CWindow::CWindow(CInstanceManager* iMan) : CControl(iMan)
|
||||
//CWindow::CWindow(CInstanceManager* iMan) : CControl(iMan)
|
||||
CWindow::CWindow() : CControl()
|
||||
{
|
||||
int i;
|
||||
|
||||
|
@ -80,7 +83,7 @@ CWindow::CWindow(CInstanceManager* iMan) : CControl(iMan)
|
|||
m_bClosable = false;
|
||||
m_bCapture = false;
|
||||
|
||||
m_fontStretch = NORMSTRETCH*1.2f;
|
||||
// m_fontStretch = NORMSTRETCH*1.2f;
|
||||
}
|
||||
|
||||
// Object's destructor.
|
||||
|
@ -128,9 +131,9 @@ void CWindow::Flush()
|
|||
|
||||
// Creates a new window.
|
||||
|
||||
bool CWindow::Create(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
bool CWindow::Create(Math::Point pos, Math::Point dim, int icon, EventType eventMsg)
|
||||
{
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventType();
|
||||
|
||||
CControl::Create(pos, dim, icon, eventMsg);
|
||||
return true;
|
||||
|
@ -139,18 +142,19 @@ bool CWindow::Create(Math::Point pos, Math::Point dim, int icon, EventMsg eventM
|
|||
|
||||
// Creates a new button.
|
||||
|
||||
CButton* CWindow::CreateButton(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
CButton* CWindow::CreateButton(Math::Point pos, Math::Point dim, int icon, EventType eventMsg)
|
||||
{
|
||||
CButton* pc;
|
||||
int i;
|
||||
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventType();
|
||||
|
||||
for ( i=0 ; i<MAXWINDOW ; i++ )
|
||||
{
|
||||
if ( m_table[i] == 0 )
|
||||
{
|
||||
m_table[i] = new CButton(m_iMan);
|
||||
// m_table[i] = new CButton(m_iMan);
|
||||
m_table[i] = new CButton();
|
||||
pc = (CButton*)m_table[i];
|
||||
pc->Create(pos, dim, icon, eventMsg);
|
||||
return pc;
|
||||
|
@ -161,18 +165,19 @@ CButton* CWindow::CreateButton(Math::Point pos, Math::Point dim, int icon, Event
|
|||
|
||||
// Creates a new button.
|
||||
|
||||
CColor* CWindow::CreateColor(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
CColor* CWindow::CreateColor(Math::Point pos, Math::Point dim, int icon, EventType eventMsg)
|
||||
{
|
||||
CColor* pc;
|
||||
int i;
|
||||
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventType();
|
||||
|
||||
for ( i=0 ; i<MAXWINDOW ; i++ )
|
||||
{
|
||||
if ( m_table[i] == 0 )
|
||||
{
|
||||
m_table[i] = new CColor(m_iMan);
|
||||
// m_table[i] = new CColor(m_iMan);
|
||||
m_table[i] = new CColor();
|
||||
pc = (CColor*)m_table[i];
|
||||
pc->Create(pos, dim, icon, eventMsg);
|
||||
return pc;
|
||||
|
@ -183,18 +188,19 @@ CColor* CWindow::CreateColor(Math::Point pos, Math::Point dim, int icon, EventMs
|
|||
|
||||
// Creates a new button.
|
||||
|
||||
CCheck* CWindow::CreateCheck(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
CCheck* CWindow::CreateCheck(Math::Point pos, Math::Point dim, int icon, EventType eventMsg)
|
||||
{
|
||||
CCheck* pc;
|
||||
int i;
|
||||
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventType();
|
||||
|
||||
for ( i=0 ; i<MAXWINDOW ; i++ )
|
||||
{
|
||||
if ( m_table[i] == 0 )
|
||||
{
|
||||
m_table[i] = new CCheck(m_iMan);
|
||||
// m_table[i] = new CCheck(m_iMan);
|
||||
m_table[i] = new CCheck();
|
||||
pc = (CCheck*)m_table[i];
|
||||
pc->Create(pos, dim, icon, eventMsg);
|
||||
return pc;
|
||||
|
@ -205,18 +211,19 @@ CCheck* CWindow::CreateCheck(Math::Point pos, Math::Point dim, int icon, EventMs
|
|||
|
||||
// Creates a new button.
|
||||
|
||||
CKey* CWindow::CreateKey(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
CKey* CWindow::CreateKey(Math::Point pos, Math::Point dim, int icon, EventType eventMsg)
|
||||
{
|
||||
CKey* pc;
|
||||
int i;
|
||||
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventType();
|
||||
|
||||
for ( i=0 ; i<MAXWINDOW ; i++ )
|
||||
{
|
||||
if ( m_table[i] == 0 )
|
||||
{
|
||||
m_table[i] = new CKey(m_iMan);
|
||||
// m_table[i] = new CKey(m_iMan);
|
||||
m_table[i] = new CKey();
|
||||
pc = (CKey*)m_table[i];
|
||||
pc->Create(pos, dim, icon, eventMsg);
|
||||
return pc;
|
||||
|
@ -227,18 +234,19 @@ CKey* CWindow::CreateKey(Math::Point pos, Math::Point dim, int icon, EventMsg ev
|
|||
|
||||
// Creates a new button.
|
||||
|
||||
CGroup* CWindow::CreateGroup(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
CGroup* CWindow::CreateGroup(Math::Point pos, Math::Point dim, int icon, EventType eventMsg)
|
||||
{
|
||||
CGroup* pc;
|
||||
int i;
|
||||
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventType();
|
||||
|
||||
for ( i=0 ; i<MAXWINDOW ; i++ )
|
||||
{
|
||||
if ( m_table[i] == 0 )
|
||||
{
|
||||
m_table[i] = new CGroup(m_iMan);
|
||||
// m_table[i] = new CGroup(m_iMan);
|
||||
m_table[i] = new CGroup();
|
||||
pc = (CGroup*)m_table[i];
|
||||
pc->Create(pos, dim, icon, eventMsg);
|
||||
return pc;
|
||||
|
@ -249,18 +257,19 @@ CGroup* CWindow::CreateGroup(Math::Point pos, Math::Point dim, int icon, EventMs
|
|||
|
||||
// Creates a new button.
|
||||
|
||||
CImage* CWindow::CreateImage(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
CImage* CWindow::CreateImage(Math::Point pos, Math::Point dim, int icon, EventType eventMsg)
|
||||
{
|
||||
CImage* pc;
|
||||
int i;
|
||||
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventType();
|
||||
|
||||
for ( i=0 ; i<MAXWINDOW ; i++ )
|
||||
{
|
||||
if ( m_table[i] == 0 )
|
||||
{
|
||||
m_table[i] = new CImage(m_iMan);
|
||||
// m_table[i] = new CImage(m_iMan);
|
||||
m_table[i] = new CImage();
|
||||
pc = (CImage*)m_table[i];
|
||||
pc->Create(pos, dim, icon, eventMsg);
|
||||
return pc;
|
||||
|
@ -271,20 +280,21 @@ CImage* CWindow::CreateImage(Math::Point pos, Math::Point dim, int icon, EventMs
|
|||
|
||||
// Creates a new label.
|
||||
|
||||
CLabel* CWindow::CreateLabel(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg,
|
||||
CLabel* CWindow::CreateLabel(Math::Point pos, Math::Point dim, int icon, EventType eventMsg,
|
||||
char *name)
|
||||
{
|
||||
CLabel* pc;
|
||||
char* p;
|
||||
int i;
|
||||
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventType();
|
||||
|
||||
for ( i=0 ; i<MAXWINDOW ; i++ )
|
||||
{
|
||||
if ( m_table[i] == 0 )
|
||||
{
|
||||
m_table[i] = new CLabel(m_iMan);
|
||||
// m_table[i] = new CLabel(m_iMan);
|
||||
m_table[i] = new CLabel();
|
||||
pc = (CLabel*)m_table[i];
|
||||
pc->Create(pos, dim, icon, eventMsg);
|
||||
|
||||
|
@ -312,18 +322,19 @@ CLabel* CWindow::CreateLabel(Math::Point pos, Math::Point dim, int icon, EventMs
|
|||
|
||||
// Creates a new editable pave.
|
||||
|
||||
CEdit* CWindow::CreateEdit(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
CEdit* CWindow::CreateEdit(Math::Point pos, Math::Point dim, int icon, EventType eventMsg)
|
||||
{
|
||||
CEdit* pc;
|
||||
int i;
|
||||
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventType();
|
||||
|
||||
for ( i=0 ; i<MAXWINDOW ; i++ )
|
||||
{
|
||||
if ( m_table[i] == 0 )
|
||||
{
|
||||
m_table[i] = new CEdit(m_iMan);
|
||||
// m_table[i] = new CEdit(m_iMan);
|
||||
m_table[i] = new CEdit();
|
||||
pc = (CEdit*)m_table[i];
|
||||
pc->Create(pos, dim, icon, eventMsg);
|
||||
return pc;
|
||||
|
@ -334,18 +345,19 @@ CEdit* CWindow::CreateEdit(Math::Point pos, Math::Point dim, int icon, EventMsg
|
|||
|
||||
// Creates a new editable pave.
|
||||
|
||||
CEditValue* CWindow::CreateEditValue(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
CEditValue* CWindow::CreateEditValue(Math::Point pos, Math::Point dim, int icon, EventType eventMsg)
|
||||
{
|
||||
CEditValue* pc;
|
||||
int i;
|
||||
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventType();
|
||||
|
||||
for ( i=0 ; i<MAXWINDOW ; i++ )
|
||||
{
|
||||
if ( m_table[i] == 0 )
|
||||
{
|
||||
m_table[i] = new CEditValue(m_iMan);
|
||||
// m_table[i] = new CEditValue(m_iMan);
|
||||
m_table[i] = new CEditValue();
|
||||
pc = (CEditValue*)m_table[i];
|
||||
pc->Create(pos, dim, icon, eventMsg);
|
||||
return pc;
|
||||
|
@ -356,18 +368,19 @@ CEditValue* CWindow::CreateEditValue(Math::Point pos, Math::Point dim, int icon,
|
|||
|
||||
// Creates a new elevator.
|
||||
|
||||
CScroll* CWindow::CreateScroll(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
CScroll* CWindow::CreateScroll(Math::Point pos, Math::Point dim, int icon, EventType eventMsg)
|
||||
{
|
||||
CScroll* pc;
|
||||
int i;
|
||||
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventType();
|
||||
|
||||
for ( i=0 ; i<MAXWINDOW ; i++ )
|
||||
{
|
||||
if ( m_table[i] == 0 )
|
||||
{
|
||||
m_table[i] = new CScroll(m_iMan);
|
||||
// m_table[i] = new CScroll(m_iMan);
|
||||
m_table[i] = new CScroll();
|
||||
pc = (CScroll*)m_table[i];
|
||||
pc->Create(pos, dim, icon, eventMsg);
|
||||
return pc;
|
||||
|
@ -378,18 +391,19 @@ CScroll* CWindow::CreateScroll(Math::Point pos, Math::Point dim, int icon, Event
|
|||
|
||||
// Creates a new cursor.
|
||||
|
||||
CSlider* CWindow::CreateSlider(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
CSlider* CWindow::CreateSlider(Math::Point pos, Math::Point dim, int icon, EventType eventMsg)
|
||||
{
|
||||
CSlider* pc;
|
||||
int i;
|
||||
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventType();
|
||||
|
||||
for ( i=0 ; i<MAXWINDOW ; i++ )
|
||||
{
|
||||
if ( m_table[i] == 0 )
|
||||
{
|
||||
m_table[i] = new CSlider(m_iMan);
|
||||
// m_table[i] = new CSlider(m_iMan);
|
||||
m_table[i] = new CSlider();
|
||||
pc = (CSlider*)m_table[i];
|
||||
pc->Create(pos, dim, icon, eventMsg);
|
||||
return pc;
|
||||
|
@ -400,19 +414,20 @@ CSlider* CWindow::CreateSlider(Math::Point pos, Math::Point dim, int icon, Event
|
|||
|
||||
// Creates a new list.
|
||||
|
||||
CList* CWindow::CreateList(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg,
|
||||
CList* CWindow::CreateList(Math::Point pos, Math::Point dim, int icon, EventType eventMsg,
|
||||
float expand)
|
||||
{
|
||||
CList* pc;
|
||||
int i;
|
||||
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventType();
|
||||
|
||||
for ( i=0 ; i<MAXWINDOW ; i++ )
|
||||
{
|
||||
if ( m_table[i] == 0 )
|
||||
{
|
||||
m_table[i] = new CList(m_iMan);
|
||||
// m_table[i] = new CList(m_iMan);
|
||||
m_table[i] = new CList();
|
||||
pc = (CList*)m_table[i];
|
||||
pc->Create(pos, dim, icon, eventMsg, expand);
|
||||
return pc;
|
||||
|
@ -423,18 +438,18 @@ CList* CWindow::CreateList(Math::Point pos, Math::Point dim, int icon, EventMsg
|
|||
|
||||
// Creates a new shortcut.
|
||||
|
||||
CShortcut* CWindow::CreateShortcut(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
CShortcut* CWindow::CreateShortcut(Math::Point pos, Math::Point dim, int icon, EventType eventMsg)
|
||||
{
|
||||
CShortcut* ps;
|
||||
int i;
|
||||
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventType();
|
||||
|
||||
for ( i=0 ; i<MAXWINDOW ; i++ )
|
||||
{
|
||||
if ( m_table[i] == 0 )
|
||||
{
|
||||
m_table[i] = new CShortcut(m_iMan);
|
||||
m_table[i] = new CShortcut();
|
||||
ps = (CShortcut*)m_table[i];
|
||||
ps->Create(pos, dim, icon, eventMsg);
|
||||
return ps;
|
||||
|
@ -445,18 +460,18 @@ CShortcut* CWindow::CreateShortcut(Math::Point pos, Math::Point dim, int icon, E
|
|||
|
||||
// Creates a new card.
|
||||
|
||||
CMap* CWindow::CreateMap(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
CMap* CWindow::CreateMap(Math::Point pos, Math::Point dim, int icon, EventType eventMsg)
|
||||
{
|
||||
CMap* pm;
|
||||
int i;
|
||||
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventType();
|
||||
|
||||
for ( i=0 ; i<MAXWINDOW ; i++ )
|
||||
{
|
||||
if ( m_table[i] == 0 )
|
||||
{
|
||||
m_table[i] = new CMap(m_iMan);
|
||||
m_table[i] = new CMap();
|
||||
pm = (CMap*)m_table[i];
|
||||
pm->Create(pos, dim, icon, eventMsg);
|
||||
return pm;
|
||||
|
@ -467,18 +482,18 @@ CMap* CWindow::CreateMap(Math::Point pos, Math::Point dim, int icon, EventMsg ev
|
|||
|
||||
// Creates a new gauge.
|
||||
|
||||
CGauge* CWindow::CreateGauge(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
CGauge* CWindow::CreateGauge(Math::Point pos, Math::Point dim, int icon, EventType eventMsg)
|
||||
{
|
||||
CGauge* pc;
|
||||
int i;
|
||||
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventType();
|
||||
|
||||
for ( i=0 ; i<MAXWINDOW ; i++ )
|
||||
{
|
||||
if ( m_table[i] == 0 )
|
||||
{
|
||||
m_table[i] = new CGauge(m_iMan);
|
||||
m_table[i] = new CGauge();
|
||||
pc = (CGauge*)m_table[i];
|
||||
pc->Create(pos, dim, icon, eventMsg);
|
||||
return pc;
|
||||
|
@ -489,18 +504,18 @@ CGauge* CWindow::CreateGauge(Math::Point pos, Math::Point dim, int icon, EventMs
|
|||
|
||||
// Creates a new compass.
|
||||
|
||||
CCompass* CWindow::CreateCompass(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
CCompass* CWindow::CreateCompass(Math::Point pos, Math::Point dim, int icon, EventType eventMsg)
|
||||
{
|
||||
CCompass* pc;
|
||||
int i;
|
||||
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventType();
|
||||
|
||||
for ( i=0 ; i<MAXWINDOW ; i++ )
|
||||
{
|
||||
if ( m_table[i] == 0 )
|
||||
{
|
||||
m_table[i] = new CCompass(m_iMan);
|
||||
m_table[i] = new CCompass();
|
||||
pc = (CCompass*)m_table[i];
|
||||
pc->Create(pos, dim, icon, eventMsg);
|
||||
return pc;
|
||||
|
@ -511,18 +526,18 @@ CCompass* CWindow::CreateCompass(Math::Point pos, Math::Point dim, int icon, Eve
|
|||
|
||||
// Creates a new target.
|
||||
|
||||
CTarget* CWindow::CreateTarget(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg)
|
||||
CTarget* CWindow::CreateTarget(Math::Point pos, Math::Point dim, int icon, EventType eventMsg)
|
||||
{
|
||||
CTarget* pc;
|
||||
int i;
|
||||
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg();
|
||||
if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventType();
|
||||
|
||||
for ( i=0 ; i<MAXWINDOW ; i++ )
|
||||
{
|
||||
if ( m_table[i] == 0 )
|
||||
{
|
||||
m_table[i] = new CTarget(m_iMan);
|
||||
m_table[i] = new CTarget();
|
||||
pc = (CTarget*)m_table[i];
|
||||
pc->Create(pos, dim, icon, eventMsg);
|
||||
return pc;
|
||||
|
@ -533,7 +548,7 @@ CTarget* CWindow::CreateTarget(Math::Point pos, Math::Point dim, int icon, Event
|
|||
|
||||
// Removes a control.
|
||||
|
||||
bool CWindow::DeleteControl(EventMsg eventMsg)
|
||||
bool CWindow::DeleteControl(EventType eventMsg)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
@ -541,7 +556,7 @@ bool CWindow::DeleteControl(EventMsg eventMsg)
|
|||
{
|
||||
if ( m_table[i] != 0 )
|
||||
{
|
||||
if ( eventMsg == m_table[i]->RetEventMsg() )
|
||||
if ( eventMsg == m_table[i]->GetEventType() )
|
||||
{
|
||||
delete m_table[i];
|
||||
m_table[i] = 0;
|
||||
|
@ -554,7 +569,7 @@ bool CWindow::DeleteControl(EventMsg eventMsg)
|
|||
|
||||
// Gives a control.
|
||||
|
||||
CControl* CWindow::SearchControl(EventMsg eventMsg)
|
||||
CControl* CWindow::SearchControl(EventType eventMsg)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
@ -562,7 +577,7 @@ CControl* CWindow::SearchControl(EventMsg eventMsg)
|
|||
{
|
||||
if ( m_table[i] != 0 )
|
||||
{
|
||||
if ( eventMsg == m_table[i]->RetEventMsg() )
|
||||
if ( eventMsg == m_table[i]->GetEventType() )
|
||||
{
|
||||
return m_table[i];
|
||||
}
|
||||
|
@ -646,11 +661,11 @@ void CWindow::SetName(char* name)
|
|||
|
||||
if ( m_name[0] != 0 && m_bRedim ) // title bar exists?
|
||||
{
|
||||
m_buttonReduce = new CButton(m_iMan);
|
||||
m_buttonReduce = new CButton();
|
||||
pc = (CButton*)m_buttonReduce;
|
||||
pc->Create(m_pos, m_dim, 0, EVENT_NULL);
|
||||
|
||||
m_buttonFull = new CButton(m_iMan);
|
||||
m_buttonFull = new CButton();
|
||||
pc = (CButton*)m_buttonFull;
|
||||
pc->Create(m_pos, m_dim, 0, EVENT_NULL);
|
||||
|
||||
|
@ -659,7 +674,7 @@ void CWindow::SetName(char* name)
|
|||
|
||||
if ( m_name[0] != 0 && m_bClosable ) // title bar exists?
|
||||
{
|
||||
m_buttonClose = new CButton(m_iMan);
|
||||
m_buttonClose = new CButton();
|
||||
pc = (CButton*)m_buttonClose;
|
||||
pc->Create(m_pos, m_dim, 0, EVENT_NULL);
|
||||
|
||||
|
@ -697,7 +712,7 @@ void CWindow::MoveAdjust()
|
|||
Math::Point pos, dim;
|
||||
float h, offset;
|
||||
|
||||
h = m_engine->RetText()->RetHeight(m_fontSize, m_fontType);
|
||||
h = m_engine->GetText()->GetHeight(m_fontType, m_fontSize);
|
||||
dim.y = h*1.2f;
|
||||
dim.x = dim.y*0.75f;
|
||||
|
||||
|
@ -742,12 +757,12 @@ void CWindow::SetMaxDim(Math::Point dim)
|
|||
m_maxDim = dim;
|
||||
}
|
||||
|
||||
Math::Point CWindow::RetMinDim()
|
||||
Math::Point CWindow::GetMinDim()
|
||||
{
|
||||
return m_minDim;
|
||||
}
|
||||
|
||||
Math::Point CWindow::RetMaxDim()
|
||||
Math::Point CWindow::GetMaxDim()
|
||||
{
|
||||
return m_maxDim;
|
||||
}
|
||||
|
@ -760,7 +775,7 @@ void CWindow::SetMovable(bool bMode)
|
|||
m_bMovable = bMode;
|
||||
}
|
||||
|
||||
bool CWindow::RetMovable()
|
||||
bool CWindow::GetMovable()
|
||||
{
|
||||
return m_bMovable;
|
||||
}
|
||||
|
@ -773,7 +788,7 @@ void CWindow::SetRedim(bool bMode)
|
|||
m_bRedim = bMode;
|
||||
}
|
||||
|
||||
bool CWindow::RetRedim()
|
||||
bool CWindow::GetRedim()
|
||||
{
|
||||
return m_bRedim;
|
||||
}
|
||||
|
@ -786,7 +801,7 @@ void CWindow::SetClosable(bool bMode)
|
|||
m_bClosable = bMode;
|
||||
}
|
||||
|
||||
bool CWindow::RetClosable()
|
||||
bool CWindow::GetClosable()
|
||||
{
|
||||
return m_bClosable;
|
||||
}
|
||||
|
@ -798,7 +813,7 @@ void CWindow::SetMaximized(bool bMaxi)
|
|||
AdjustButtons();
|
||||
}
|
||||
|
||||
bool CWindow::RetMaximized()
|
||||
bool CWindow::GetMaximized()
|
||||
{
|
||||
return m_bMaximized;
|
||||
}
|
||||
|
@ -809,7 +824,7 @@ void CWindow::SetMinimized(bool bMini)
|
|||
AdjustButtons();
|
||||
}
|
||||
|
||||
bool CWindow::RetMinimized()
|
||||
bool CWindow::GetMinimized()
|
||||
{
|
||||
return m_bMinimized;
|
||||
}
|
||||
|
@ -819,7 +834,7 @@ void CWindow::SetFixed(bool bFix)
|
|||
m_bFixed = bFix;
|
||||
}
|
||||
|
||||
bool CWindow::RetFixed()
|
||||
bool CWindow::GetFixed()
|
||||
{
|
||||
return m_bFixed;
|
||||
}
|
||||
|
@ -877,7 +892,7 @@ void CWindow::SetTrashEvent(bool bTrash)
|
|||
m_bTrashEvent = bTrash;
|
||||
}
|
||||
|
||||
bool CWindow::RetTrashEvent()
|
||||
bool CWindow::GetTrashEvent()
|
||||
{
|
||||
return m_bTrashEvent;
|
||||
}
|
||||
|
@ -885,26 +900,26 @@ bool CWindow::RetTrashEvent()
|
|||
|
||||
// Returns the message from the button "reduce".
|
||||
|
||||
EventMsg CWindow::RetEventMsgReduce()
|
||||
EventType CWindow::GetEventTypeReduce()
|
||||
{
|
||||
if ( m_buttonReduce == 0 ) return EVENT_NULL;
|
||||
return m_buttonReduce->RetEventMsg();
|
||||
return m_buttonReduce->GetEventType();
|
||||
}
|
||||
|
||||
// Returns the message from the button "full".
|
||||
|
||||
EventMsg CWindow::RetEventMsgFull()
|
||||
EventType CWindow::GetEventTypeFull()
|
||||
{
|
||||
if ( m_buttonFull == 0 ) return EVENT_NULL;
|
||||
return m_buttonFull->RetEventMsg();
|
||||
return m_buttonFull->GetEventType();
|
||||
}
|
||||
|
||||
// Returns the message from the button "close".
|
||||
|
||||
EventMsg CWindow::RetEventMsgClose()
|
||||
EventType CWindow::GetEventTypeClose()
|
||||
{
|
||||
if ( m_buttonClose == 0 ) return EVENT_NULL;
|
||||
return m_buttonClose->RetEventMsg();
|
||||
return m_buttonClose->GetEventType();
|
||||
}
|
||||
|
||||
|
||||
|
@ -947,7 +962,7 @@ int CWindow::BorderDetect(Math::Point pos)
|
|||
|
||||
if ( flags == 0 )
|
||||
{
|
||||
h = m_engine->RetText()->RetHeight(m_fontSize, m_fontType);
|
||||
h = m_engine->GetText()->GetHeight(m_fontType, m_fontSize);
|
||||
dim.y = h*1.2f;
|
||||
dim.x = dim.y*0.75f;
|
||||
if ( pos.x < m_pos.x+m_dim.x-0.01f-dim.x*3.0f &&
|
||||
|
@ -967,7 +982,7 @@ bool CWindow::EventProcess(const Event &event)
|
|||
Math::Point pos;
|
||||
int i, flags;
|
||||
|
||||
if ( event.event == EVENT_MOUSEMOVE )
|
||||
if ( event.type == EVENT_MOUSE_MOVE )
|
||||
{
|
||||
if ( m_bCapture )
|
||||
{
|
||||
|
@ -975,7 +990,7 @@ bool CWindow::EventProcess(const Event &event)
|
|||
}
|
||||
else
|
||||
{
|
||||
m_pressMouse = D3DMOUSENORM;
|
||||
m_pressMouse = Gfx::ENG_MOUSE_NORM;
|
||||
|
||||
if ( m_name[0] != 0 && m_bMovable && // title bar?
|
||||
Detect(event.pos) )
|
||||
|
@ -983,29 +998,29 @@ bool CWindow::EventProcess(const Event &event)
|
|||
flags = BorderDetect(event.pos);
|
||||
if ( flags == -1 )
|
||||
{
|
||||
m_pressMouse = D3DMOUSEMOVE; // +
|
||||
m_pressMouse = Gfx::ENG_MOUSE_MOVE; // +
|
||||
}
|
||||
else if ( ((flags & (1<<0)) && (flags & (1<<3))) ||
|
||||
((flags & (1<<1)) && (flags & (1<<2))) )
|
||||
{
|
||||
m_pressMouse = D3DMOUSEMOVEI; // \ //
|
||||
m_pressMouse = Gfx::ENG_MOUSE_MOVEI; // \ //
|
||||
}
|
||||
else if ( ((flags & (1<<0)) && (flags & (1<<1))) ||
|
||||
((flags & (1<<2)) && (flags & (1<<3))) )
|
||||
{
|
||||
m_pressMouse = D3DMOUSEMOVED; // /
|
||||
m_pressMouse = Gfx::ENG_MOUSE_MOVED; // /
|
||||
}
|
||||
else if ( (flags & (1<<0)) || (flags & (1<<2)) )
|
||||
{
|
||||
m_pressMouse = D3DMOUSEMOVEH; // -
|
||||
m_pressMouse = Gfx::ENG_MOUSE_MOVEH; // -
|
||||
}
|
||||
else if ( (flags & (1<<1)) || (flags & (1<<3)) )
|
||||
{
|
||||
m_pressMouse = D3DMOUSEMOVEV; // |
|
||||
m_pressMouse = Gfx::ENG_MOUSE_MOVEV; // |
|
||||
}
|
||||
}
|
||||
|
||||
if ( m_pressMouse != D3DMOUSENORM )
|
||||
if ( m_pressMouse != Gfx::ENG_MOUSE_NORM )
|
||||
{
|
||||
m_engine->SetMouseType(m_pressMouse);
|
||||
}
|
||||
|
@ -1039,7 +1054,8 @@ bool CWindow::EventProcess(const Event &event)
|
|||
}
|
||||
}
|
||||
|
||||
if ( m_bTrashEvent && event.event == EVENT_LBUTTONDOWN )
|
||||
if ( m_bTrashEvent && event.type == EVENT_MOUSE_BUTTON_DOWN &&
|
||||
event.mouseButton.button == 1)
|
||||
{
|
||||
if ( Detect(event.pos) )
|
||||
{
|
||||
|
@ -1056,7 +1072,7 @@ bool CWindow::EventProcess(const Event &event)
|
|||
}
|
||||
}
|
||||
|
||||
if ( event.event == EVENT_MOUSEMOVE && m_bCapture )
|
||||
if ( event.type == EVENT_MOUSE_MOVE && m_bCapture )
|
||||
{
|
||||
pos = event.pos;
|
||||
if ( m_pressFlags == -1 ) // all moves?
|
||||
|
@ -1105,11 +1121,13 @@ bool CWindow::EventProcess(const Event &event)
|
|||
AdjustButtons();
|
||||
|
||||
Event newEvent = event;
|
||||
newEvent.event = m_eventMsg;
|
||||
newEvent.type = m_eventType;
|
||||
m_event->AddEvent(newEvent);
|
||||
}
|
||||
|
||||
if ( event.event == EVENT_LBUTTONUP && m_bCapture )
|
||||
if ( event.type == EVENT_MOUSE_BUTTON_UP &&
|
||||
event.mouseButton == 1 &&
|
||||
m_bCapture )
|
||||
{
|
||||
m_bCapture = false;
|
||||
}
|
||||
|
@ -1137,7 +1155,7 @@ void CWindow::Draw()
|
|||
|
||||
if ( m_name[0] != 0 ) // title bar?
|
||||
{
|
||||
h = m_engine->RetText()->RetHeight(m_fontSize, m_fontType);
|
||||
h = m_engine->GetText()->GetHeight(m_fontType, m_fontSize);
|
||||
|
||||
// Draws the shadow under the title bar.
|
||||
{
|
||||
|
@ -1160,7 +1178,7 @@ void CWindow::Draw()
|
|||
dim.y = h*1.2f;
|
||||
DrawVertex(pos, dim, (m_state&STATE_ENABLE)?2:9);
|
||||
|
||||
sw = m_engine->RetText()->RetStringWidth(m_name, strlen(m_name), m_fontSize, m_fontStretch, m_fontType);
|
||||
sw = m_engine->GetText()->GetStringWidth(m_name, m_fontType, m_fontSize);
|
||||
|
||||
if ( m_state&STATE_ENABLE )
|
||||
{
|
||||
|
@ -1175,7 +1193,7 @@ void CWindow::Draw()
|
|||
|
||||
pos.x = m_pos.x+width/2.0f;
|
||||
pos.y = m_pos.y+m_dim.y-0.01f-h*1.10f;
|
||||
m_engine->RetText()->DrawText(m_name, pos, width, 0, m_fontSize, m_fontStretch, m_fontType, 0);
|
||||
m_engine->GetText()->DrawText(m_name, m_fontType, m_fontSize, pos, width, Gfx::TEXT_ALIGN_CENTER, 0);
|
||||
|
||||
if ( m_buttonReduce != 0 )
|
||||
{
|
||||
|
@ -1215,7 +1233,7 @@ void CWindow::DrawVertex(Math::Point pos, Math::Point dim, int icon)
|
|||
if ( icon == 0 )
|
||||
{
|
||||
m_engine->SetTexture("button2.tga");
|
||||
m_engine->SetState(D3DSTATETTw);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_TTEXTURE_WHITE);
|
||||
uv1.x = 64.0f/256.0f; // dark blue transparent
|
||||
uv1.y = 64.0f/256.0f;
|
||||
uv2.x = 128.0f/256.0f;
|
||||
|
@ -1231,7 +1249,7 @@ void CWindow::DrawVertex(Math::Point pos, Math::Point dim, int icon)
|
|||
else if ( icon == 1 )
|
||||
{
|
||||
m_engine->SetTexture("button1.tga");
|
||||
m_engine->SetState(D3DSTATENORMAL);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_TTEXTURE_WHITE);
|
||||
uv1.x = 128.0f/256.0f; // yellow tooltip
|
||||
uv1.y = 0.0f/256.0f;
|
||||
uv2.x = 224.0f/256.0f;
|
||||
|
@ -1245,7 +1263,7 @@ void CWindow::DrawVertex(Math::Point pos, Math::Point dim, int icon)
|
|||
else if ( icon == 2 )
|
||||
{
|
||||
m_engine->SetTexture("button1.tga");
|
||||
m_engine->SetState(D3DSTATENORMAL);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL);
|
||||
uv1.x = 128.0f/256.0f; // yellow
|
||||
uv1.y = 16.0f/256.0f;
|
||||
uv2.x = 224.0f/256.0f;
|
||||
|
@ -1259,7 +1277,7 @@ void CWindow::DrawVertex(Math::Point pos, Math::Point dim, int icon)
|
|||
else if ( icon == 3 )
|
||||
{
|
||||
m_engine->SetTexture("button2.tga");
|
||||
m_engine->SetState(D3DSTATETTb);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_TTEXTURE_BLACK);
|
||||
uv1.x = 0.0f/256.0f; // transparent blue bar with yellow upper
|
||||
uv1.y = 64.0f/256.0f;
|
||||
uv2.x = 64.0f/256.0f;
|
||||
|
@ -1278,7 +1296,7 @@ void CWindow::DrawVertex(Math::Point pos, Math::Point dim, int icon)
|
|||
dim.y += 60.0f/480.0f;
|
||||
|
||||
m_engine->SetTexture("human.tga");
|
||||
m_engine->SetState(D3DSTATENORMAL);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL);
|
||||
uv1.x = 140.0f/256.0f;
|
||||
uv1.y = 32.0f/256.0f;
|
||||
uv2.x = 182.0f/256.0f;
|
||||
|
@ -1295,7 +1313,7 @@ void CWindow::DrawVertex(Math::Point pos, Math::Point dim, int icon)
|
|||
dim.y += 0.0f/480.0f;
|
||||
|
||||
m_engine->SetTexture("button2.tga");
|
||||
m_engine->SetState(D3DSTATETTw);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_TTEXTURE_WHITE);
|
||||
uv1.x = 192.0f/256.0f;
|
||||
uv1.y = 32.0f/256.0f;
|
||||
uv2.x = 224.0f/256.0f;
|
||||
|
@ -1314,7 +1332,7 @@ void CWindow::DrawVertex(Math::Point pos, Math::Point dim, int icon)
|
|||
dim.y -= 20.0f/480.0f;
|
||||
|
||||
m_engine->SetTexture("button1.tga");
|
||||
m_engine->SetState(D3DSTATENORMAL);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL);
|
||||
uv1.x = 64.0f/256.0f;
|
||||
uv1.y = 0.0f/256.0f;
|
||||
uv2.x = 96.0f/256.0f;
|
||||
|
@ -1433,7 +1451,7 @@ void CWindow::DrawVertex(Math::Point pos, Math::Point dim, int icon)
|
|||
else if ( icon == 5 )
|
||||
{
|
||||
m_engine->SetTexture("button2.tga");
|
||||
m_engine->SetState(D3DSTATETTb);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_TTEXTURE_BLACK);
|
||||
uv1.x = 64.0f/256.0f; // transparent green
|
||||
uv1.y = 160.0f/256.0f;
|
||||
uv2.x = 160.0f/256.0f;
|
||||
|
@ -1447,7 +1465,7 @@ void CWindow::DrawVertex(Math::Point pos, Math::Point dim, int icon)
|
|||
else if ( icon == 6 )
|
||||
{
|
||||
m_engine->SetTexture("button2.tga");
|
||||
m_engine->SetState(D3DSTATETTb);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_TTEXTURE_BLACK);
|
||||
uv1.x = 64.0f/256.0f; // transparent red
|
||||
uv1.y = 176.0f/256.0f;
|
||||
uv2.x = 160.0f/256.0f;
|
||||
|
@ -1461,7 +1479,7 @@ void CWindow::DrawVertex(Math::Point pos, Math::Point dim, int icon)
|
|||
else if ( icon == 7 )
|
||||
{
|
||||
m_engine->SetTexture("button2.tga");
|
||||
m_engine->SetState(D3DSTATETTb);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_TTEXTURE_BLACK);
|
||||
uv1.x = 64.0f/256.0f; // transparent blue
|
||||
uv1.y = 192.0f/256.0f;
|
||||
uv2.x = 160.0f/256.0f;
|
||||
|
@ -1475,7 +1493,7 @@ void CWindow::DrawVertex(Math::Point pos, Math::Point dim, int icon)
|
|||
else if ( icon == 8 )
|
||||
{
|
||||
m_engine->SetTexture("button1.tga");
|
||||
m_engine->SetState(D3DSTATENORMAL);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL);
|
||||
uv1.x = 0.0f/256.0f; // opaque orange
|
||||
uv1.y = 0.0f/256.0f;
|
||||
uv2.x = 32.0f/256.0f;
|
||||
|
@ -1491,7 +1509,7 @@ void CWindow::DrawVertex(Math::Point pos, Math::Point dim, int icon)
|
|||
else if ( icon == 9 )
|
||||
{
|
||||
m_engine->SetTexture("button2.tga");
|
||||
m_engine->SetState(D3DSTATENORMAL);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL);
|
||||
uv1.x = 32.0f/256.0f; // opaque gray
|
||||
uv1.y = 32.0f/256.0f;
|
||||
uv2.x = 64.0f/256.0f;
|
||||
|
@ -1511,7 +1529,7 @@ void CWindow::DrawVertex(Math::Point pos, Math::Point dim, int icon)
|
|||
else if ( icon == 11 )
|
||||
{
|
||||
m_engine->SetTexture("button2.tga");
|
||||
m_engine->SetState(D3DSTATETTb);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_TTEXTURE_BLACK);
|
||||
uv1.x = 64.0f/256.0f; // transparent yellow
|
||||
uv1.y = 224.0f/256.0f;
|
||||
uv2.x = 160.0f/256.0f;
|
||||
|
@ -1525,7 +1543,7 @@ void CWindow::DrawVertex(Math::Point pos, Math::Point dim, int icon)
|
|||
else if ( icon == 12 )
|
||||
{
|
||||
m_engine->SetTexture("button1.tga");
|
||||
m_engine->SetState(D3DSTATENORMAL);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL);
|
||||
uv1.x = 128.0f/256.0f; // dirty opaque gray
|
||||
uv1.y = 128.0f/256.0f;
|
||||
uv2.x = 160.0f/256.0f;
|
||||
|
@ -1541,7 +1559,7 @@ void CWindow::DrawVertex(Math::Point pos, Math::Point dim, int icon)
|
|||
else if ( icon == 13 )
|
||||
{
|
||||
m_engine->SetTexture("button1.tga");
|
||||
m_engine->SetState(D3DSTATENORMAL);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL);
|
||||
uv1.x = 192.0f/256.0f; // dirty opaque blue
|
||||
uv1.y = 128.0f/256.0f;
|
||||
uv2.x = 224.0f/256.0f;
|
||||
|
@ -1557,7 +1575,7 @@ void CWindow::DrawVertex(Math::Point pos, Math::Point dim, int icon)
|
|||
else if ( icon == 14 )
|
||||
{
|
||||
m_engine->SetTexture("button1.tga");
|
||||
m_engine->SetState(D3DSTATENORMAL);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL);
|
||||
uv1.x = 160.0f/256.0f; // dirty opaque red
|
||||
uv1.y = 128.0f/256.0f;
|
||||
uv2.x = 192.0f/256.0f;
|
||||
|
@ -1585,7 +1603,7 @@ void CWindow::DrawHach(Math::Point pos, Math::Point dim)
|
|||
dp = 0.5f/256.0f;
|
||||
|
||||
m_engine->SetTexture("button2.tga");
|
||||
m_engine->SetState(D3DSTATENORMAL);
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL);
|
||||
uv1.x = 64.0f/256.0f; // hatching
|
||||
uv1.y = 208.0f/256.0f;
|
||||
uv2.x = 145.0f/256.0f;
|
||||
|
@ -1618,3 +1636,4 @@ void CWindow::DrawHach(Math::Point pos, Math::Point dim)
|
|||
#endif
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
// * This file is part of the COLOBOT source code
|
||||
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
|
||||
// * Copyright (C) 2012, Polish Portal of Colobot (PPC)
|
||||
// *
|
||||
// * This program is free software: you can redistribute it and/or modify
|
||||
// * it under the terms of the GNU General Public License as published by
|
||||
|
@ -19,92 +20,75 @@
|
|||
#pragma once
|
||||
|
||||
|
||||
#include "ui/control.h"
|
||||
|
||||
|
||||
class CD3DEngine;
|
||||
class CButton;
|
||||
class CColor;
|
||||
class CCheck;
|
||||
class CKey;
|
||||
class CGroup;
|
||||
class CImage;
|
||||
class CLabel;
|
||||
class CEdit;
|
||||
class CEditValue;
|
||||
class CScroll;
|
||||
class CSlider;
|
||||
class CList;
|
||||
class CShortcut;
|
||||
class CMap;
|
||||
class CGauge;
|
||||
class CCompass;
|
||||
class CTarget;
|
||||
#include <ui/control.h>
|
||||
//#include <common/event.h>
|
||||
|
||||
namespace Ui {
|
||||
|
||||
const int MAXWINDOW = 100;
|
||||
|
||||
class CGauge;
|
||||
|
||||
class CWindow : public CControl
|
||||
{
|
||||
public:
|
||||
CWindow(CInstanceManager* iMan);
|
||||
CWindow();
|
||||
~CWindow();
|
||||
|
||||
void Flush();
|
||||
bool Create(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
CButton* CreateButton(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
CColor* CreateColor(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
CCheck* CreateCheck(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
CKey* CreateKey(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
CGroup* CreateGroup(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
CImage* CreateImage(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
CLabel* CreateLabel(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg, char *name);
|
||||
CEdit* CreateEdit(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
CEditValue* CreateEditValue(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
CScroll* CreateScroll(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
CSlider* CreateSlider(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
CList* CreateList(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg, float expand=1.2f);
|
||||
CShortcut* CreateShortcut(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
CMap* CreateMap(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
CGauge* CreateGauge(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
CCompass* CreateCompass(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
CTarget* CreateTarget(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg);
|
||||
bool DeleteControl(EventMsg eventMsg);
|
||||
CControl* SearchControl(EventMsg eventMsg);
|
||||
bool Create(Math::Point pos, Math::Point dim, int icon, EventType eventMsg);
|
||||
CButton* CreateButton(Math::Point pos, Math::Point dim, int icon, EventType eventMsg);
|
||||
CColor* CreateColor(Math::Point pos, Math::Point dim, int icon, EventType eventMsg);
|
||||
CCheck* CreateCheck(Math::Point pos, Math::Point dim, int icon, EventType eventMsg);
|
||||
CKey* CreateKey(Math::Point pos, Math::Point dim, int icon, EventType eventMsg);
|
||||
CGroup* CreateGroup(Math::Point pos, Math::Point dim, int icon, EventType eventMsg);
|
||||
CImage* CreateImage(Math::Point pos, Math::Point dim, int icon, EventType eventMsg);
|
||||
CLabel* CreateLabel(Math::Point pos, Math::Point dim, int icon, EventType eventMsg, char *name);
|
||||
CEdit* CreateEdit(Math::Point pos, Math::Point dim, int icon, EventType eventMsg);
|
||||
CEditValue* CreateEditValue(Math::Point pos, Math::Point dim, int icon, EventType eventMsg);
|
||||
CScroll* CreateScroll(Math::Point pos, Math::Point dim, int icon, EventType eventMsg);
|
||||
CSlider* CreateSlider(Math::Point pos, Math::Point dim, int icon, EventType eventMsg);
|
||||
CList* CreateList(Math::Point pos, Math::Point dim, int icon, EventType eventMsg, float expand=1.2f);
|
||||
CShortcut* CreateShortcut(Math::Point pos, Math::Point dim, int icon, EventType eventMsg);
|
||||
CMap* CreateMap(Math::Point pos, Math::Point dim, int icon, EventType eventMsg);
|
||||
CGauge* CreateGauge(Math::Point pos, Math::Point dim, int icon, EventType eventMsg);
|
||||
CCompass* CreateCompass(Math::Point pos, Math::Point dim, int icon, EventType eventMsg);
|
||||
CTarget* CreateTarget(Math::Point pos, Math::Point dim, int icon, EventType eventMsg);
|
||||
bool DeleteControl(EventType eventMsg);
|
||||
CControl* SearchControl(EventType eventMsg);
|
||||
|
||||
EventMsg RetEventMsgReduce();
|
||||
EventMsg RetEventMsgFull();
|
||||
EventMsg RetEventMsgClose();
|
||||
EventType GetEventTypeReduce();
|
||||
EventType GetEventTypeFull();
|
||||
EventType GetEventTypeClose();
|
||||
|
||||
void SetName(char* name);
|
||||
|
||||
void SetTrashEvent(bool bTrash);
|
||||
bool RetTrashEvent();
|
||||
bool GetTrashEvent();
|
||||
|
||||
void SetPos(Math::Point pos);
|
||||
void SetDim(Math::Point dim);
|
||||
|
||||
void SetMinDim(Math::Point dim);
|
||||
void SetMaxDim(Math::Point dim);
|
||||
Math::Point RetMinDim();
|
||||
Math::Point RetMaxDim();
|
||||
Math::Point GetMinDim();
|
||||
Math::Point GetMaxDim();
|
||||
|
||||
void SetMovable(bool bMode);
|
||||
bool RetMovable();
|
||||
bool GetMovable();
|
||||
|
||||
void SetRedim(bool bMode);
|
||||
bool RetRedim();
|
||||
bool GetRedim();
|
||||
|
||||
void SetClosable(bool bMode);
|
||||
bool RetClosable();
|
||||
bool GetClosable();
|
||||
|
||||
void SetMaximized(bool bMaxi);
|
||||
bool RetMaximized();
|
||||
bool GetMaximized();
|
||||
void SetMinimized(bool bMini);
|
||||
bool RetMinimized();
|
||||
bool GetMinimized();
|
||||
void SetFixed(bool bFix);
|
||||
bool RetFixed();
|
||||
bool GetFixed();
|
||||
|
||||
bool GetTooltip(Math::Point pos, char* name);
|
||||
|
||||
|
@ -140,7 +124,8 @@ protected:
|
|||
bool m_bCapture;
|
||||
Math::Point m_pressPos;
|
||||
int m_pressFlags;
|
||||
D3DMouse m_pressMouse;
|
||||
Gfx::EngineMouseType m_pressMouse;
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue