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
|
/* 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 2
* 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
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
*/
#ifndef TITANIC_STAR_CROSSHAIRS_H
#define TITANIC_STAR_CROSSHAIRS_H
#include "titanic/star_control/base_stars.h"
#include "titanic/star_control/fpoint.h"
#include "titanic/star_control/surface_area.h"
#include "titanic/support/video_surface.h"
#include "common/array.h"
#include "common/rect.h"
namespace Titanic {
class CStarField;
class CStarMarkers;
class CStarCamera;
class SimpleFile;
class CStarCrosshairs {
private:
Common::Array<CStarPosition> _positions;
CStarPosition _entries[3];
private:
/**
* Allocates space in the _rects array
*/
void allocate(int count);
/**
* Clears any current data
*/
void clear();
public:
int _matchIndex;
int _entryIndex;
public:
CStarCrosshairs();
~CStarCrosshairs() { clear(); }
/**
* Load the data for the class from file
*/
void load(SimpleFile *file) {}
/**
* Save the data for the class to file
*/
void save(SimpleFile *file, int indent) {}
/**
* Returns true if there are no crosshairs present
*/
bool isEmpty() const { return _entryIndex == -1; }
void selectStar(int starNum, CVideoSurface *surface, CStarField *starField,
CStarMarkers *markers);
void draw(CSurfaceArea *surfaceArea);
bool fn1(CStarField *starField, CSurfaceArea *surfaceArea, CStarCamera *camera);
void fn2(CVideoSurface *surface, CStarField *starField, CStarMarkers *markers);
/**
* Increments the index for the number of matches
*/
void incMatches();
/**
* Draw the crosshairs for a given star
*/
void drawStar(int index, CSurfaceArea *surfaceArea);
/**
* Draws the crosshairs for a specified entry, and adds the star
* to the starfield markers
*/
void drawEntry(int index, CVideoSurface *surface, CStarField *starField, CStarMarkers *markers);
/**
* Erase crosshairs for the most recently selected star
*/
void eraseCurrent(CSurfaceArea *surfaceArea);
/**
* Draw crosshairs at the given position
*/
void drawAt(const FPoint &pt, CSurfaceArea *surfaceArea);
/**
* Returns the position of the most recently selected star
*/
FPoint getPosition() const;
/**
* Returns the index of an entry in the rects list a given point falls within
*/
int indexOf(const Common::Point &pt) const;
/**
* Returns true if the starfield is solved
*/
bool isSolved() const { return _matchIndex >= 2; }
/**
* Return true if the starfield puzzle was skipped
*/
bool isSkipped() const { return _matchIndex == 3; }
};
} // End of namespace Titanic
#endif /* TITANIC_STAR_CROSSHAIRS_H */
|