1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
|
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* 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
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* aint32 with this program; if not, write to the Free Software
*
*
* Based on the original sources
* Faery Tale II -- The Halls of the Dead
* (c) 1993-1996 The Wyrmkeep Entertainment Co.
*/
#ifndef SAGA2_MAPFEATR_H
#define SAGA2_MAPFEATR_H
#include "saga2/rect.h"
#include "saga2/tcoords.h"
namespace Saga2 {
class gPort;
class gPixelMap;
#define MAX_MAP_FEATURE_NAME_LENGTH 32
/* ===================================================================== *
Types
* ===================================================================== */
// ------------------------------------------------------------------------
// Pure virtual base class for map features
class CMapFeature {
bool _visible;
int16 _world;
TilePoint _featureCoords;
char _name[MAX_MAP_FEATURE_NAME_LENGTH];
public:
CMapFeature(TilePoint where, int16 inWorld, const char *desc);
virtual ~CMapFeature() {}
void expose(bool canSee = true) {
_visible = canSee;
}
void draw(TileRegion tr, int16 inWorld, TilePoint bc, gPort &tport);
bool hitCheck(TileRegion vr, int16 inWorld, TilePoint bc, TilePoint cp);
int16 getWorld() {
return _world;
}
int16 getU() {
return _featureCoords.u;
}
int16 getV() {
return _featureCoords.v;
}
TilePoint getLocation() {
return _featureCoords;
}
char *getText() {
return _name;
}
// The only aspect of different map features is what they look like
virtual void blit(gPort &tp, int32 x, int32 y) = 0;
virtual bool isHit(TilePoint disp, TilePoint mouse) = 0;
virtual void update() = 0;
};
typedef CMapFeature *pCMapFeature;
// ------------------------------------------------------------------------
// class for map features with static icons
class CStaticMapFeature : public CMapFeature {
int16 _color;
public:
CStaticMapFeature(TilePoint where, int16 inWorld, const char *desc, int16 bColor);
virtual void blit(gPort &tp, int32 x, int32 y);
virtual void update() {}
virtual bool isHit(TilePoint disp, TilePoint mouse);
};
// ------------------------------------------------------------------------
// class for map features with static icons
class CPictureMapFeature : public CMapFeature {
gPixelMap *_pic;
public:
CPictureMapFeature(TilePoint where, int16 inWorld, char *desc, gPixelMap *pm);
virtual void blit(gPort &tp, int32 x, int32 y);
virtual void update() {}
virtual bool isHit(TilePoint disp, TilePoint mouse) {
return false;
}
};
/* ===================================================================== *
Prototypes
* ===================================================================== */
void initMapFeatures() ;
void updateMapFeatures(int16 currentWorld);
void drawMapFeatures(TileRegion viewRegion,
int16 world,
TilePoint baseCoords,
gPort &tPort);
void termMapFeatures() ;
char *getMapFeaturesText(TileRegion viewRegion,
int16 inWorld,
TilePoint baseCoords,
Point16 mouseCoords) ;
} // end of namespace Saga2
#endif
|