mirror of
https://github.com/AquariaOSE/Aquaria.git
synced 2025-10-03 21:01:14 +00:00
Merge branch 'experimental' of file:///Users/User/code/coding/Aquaria_fg_clean into experimental
This commit is contained in:
commit
313b539981
812 changed files with 4822 additions and 1579 deletions
|
@ -62,7 +62,7 @@ static void Linux_CopyTree(const char *src, const char *dst)
|
|||
|
||||
if (S_ISDIR(statbuf.st_mode))
|
||||
{
|
||||
mkdir(dst, 0700); // don't care if this fails.
|
||||
createDir(dst); // don't care if this fails.
|
||||
DIR *dirp = opendir(src);
|
||||
if (dirp == NULL)
|
||||
return;
|
||||
|
@ -156,8 +156,6 @@ Vector savesz;
|
|||
DSQ::DSQ(const std::string& fileSystem, const std::string& extraDataDir)
|
||||
: Core(fileSystem, extraDataDir, LR_MAX, APPNAME, PARTICLE_AMOUNT_DEFAULT, "Aquaria")
|
||||
{
|
||||
// 2048
|
||||
//createDirectory(getSaveDirectory());
|
||||
dsq = this;
|
||||
|
||||
cutscene_bg = 0;
|
||||
|
@ -947,14 +945,10 @@ This build is not yet final, and as such there are a couple things lacking. They
|
|||
Linux_CopyTree(core->adjustFilenameCase("_mods").c_str(), core->adjustFilenameCase(fn).c_str());
|
||||
#endif
|
||||
|
||||
std::string p1 = getUserDataFolder();
|
||||
std::string p2 = getUserDataFolder() + "/save";
|
||||
#if defined(BBGE_BUILD_UNIX)
|
||||
mkdir(p1.c_str(), S_IRWXU);
|
||||
mkdir(p2.c_str(), S_IRWXU);
|
||||
#elif defined(BBGE_BUILD_WINDOWS)
|
||||
CreateDirectoryA(p2.c_str(), NULL);
|
||||
#endif
|
||||
createDir(getUserDataFolder());
|
||||
createDir(getUserDataFolder() + "/save");
|
||||
createDir(getUserDataFolder() + "/_mods");
|
||||
createDir(getUserDataFolder() + "/screenshots");
|
||||
|
||||
addStateInstance(game = new Game);
|
||||
addStateInstance(new GameOver);
|
||||
|
@ -2670,6 +2664,8 @@ void DSQ::clearMenu(float t)
|
|||
|
||||
void DSQ::screenMessage(const std::string &msg)
|
||||
{
|
||||
debugLog(msg);
|
||||
|
||||
DebugFont *b = new DebugFont();
|
||||
b->position = Vector(16,300);
|
||||
b->setFontSize(10);
|
||||
|
|
|
@ -1543,7 +1543,7 @@ void Game::pickupIngredientEffects(IngredientData *data)
|
|||
ingOffYTimer = 2;
|
||||
}
|
||||
|
||||
void Game::hideInGameMenu(bool effects)
|
||||
void Game::hideInGameMenu(bool effects, bool cancel)
|
||||
{
|
||||
if (isCooking) return;
|
||||
if (FoodSlot::foodSlotIndex != -1) return;
|
||||
|
@ -1577,8 +1577,11 @@ void Game::hideInGameMenu(bool effects)
|
|||
}
|
||||
|
||||
dsq->continuity.lastMenuPage = currentMenuPage;
|
||||
if(cancel && (optionsMenu || keyConfigMenu))
|
||||
onOptionsCancel();
|
||||
else
|
||||
toggleOptionsMenu(false);
|
||||
|
||||
toggleOptionsMenu(false);
|
||||
if (!optionsOnly)
|
||||
{
|
||||
toggleFoodMenu(false);
|
||||
|
@ -2154,8 +2157,6 @@ void Game::reconstructGrid(bool force)
|
|||
}
|
||||
|
||||
trimGrid();
|
||||
|
||||
dsq->pathFinding.generateZones();
|
||||
}
|
||||
|
||||
void Game::trimGrid()
|
||||
|
@ -3327,7 +3328,7 @@ void Game::createInGameMenu()
|
|||
resBox->position = Vector(196, 285);
|
||||
for (i = 0; i < core->screenModes.size(); i++)
|
||||
{
|
||||
ostringstream os;
|
||||
std::ostringstream os;
|
||||
os << core->screenModes[i].x << "x" << core->screenModes[i].y;
|
||||
resBox->addItem(os.str());
|
||||
if (core->screenModes[i].x == dsq->user.video.resx && core->screenModes[i].y == dsq->user.video.resy)
|
||||
|
|
|
@ -786,7 +786,7 @@ public:
|
|||
void loadEntityTypeList();
|
||||
std::vector<EntitySaveData> entitySaveData;
|
||||
int getIdxForEntityType(std::string type);
|
||||
void hideInGameMenu(bool effects=true);
|
||||
void hideInGameMenu(bool effects=true, bool cancel=false);
|
||||
void showInGameMenu(bool force=false, bool optionsOnly=false, MenuPage menuPage = MENUPAGE_NONE);
|
||||
bool optionsOnly;
|
||||
|
||||
|
@ -1207,8 +1207,9 @@ int Game::getGridRaw(unsigned int x, unsigned int y) const
|
|||
inline
|
||||
int Game::getGrid(const TileVector &tile) const
|
||||
{
|
||||
if (tile.x < 0 || tile.x >= MAX_GRID || tile.y < 0 || tile.y >= MAX_GRID) return OT_INVISIBLE;
|
||||
return grid[tile.x][tile.y];
|
||||
//if (tile.x < 0 || tile.x >= MAX_GRID || tile.y < 0 || tile.y >= MAX_GRID) return OT_INVISIBLE;
|
||||
//return grid[tile.x][tile.y];
|
||||
return (unsigned(tile.x) < unsigned(MAX_GRID) && unsigned(tile.y) < unsigned(MAX_GRID)) ? grid[tile.x][tile.y] : OT_INVISIBLE;
|
||||
}
|
||||
|
||||
inline
|
||||
|
|
|
@ -8,10 +8,6 @@
|
|||
#include "Network.h"
|
||||
#include "tinyxml.h"
|
||||
|
||||
#ifdef BBGE_BUILD_UNIX
|
||||
#include <sys/stat.h>
|
||||
#endif
|
||||
|
||||
using Network::NetEvent;
|
||||
using Network::NE_ABORT;
|
||||
using Network::NE_FINISH;
|
||||
|
@ -22,16 +18,6 @@ using Network::NE_UPDATE;
|
|||
ModDL moddl;
|
||||
|
||||
|
||||
// TODO: move this to Base.cpp and replace other similar occurrances
|
||||
static void createDir(const char *d)
|
||||
{
|
||||
#if defined(BBGE_BUILD_UNIX)
|
||||
mkdir(d, S_IRWXU);
|
||||
#elif defined(BBGE_BUILD_WINDOWS)
|
||||
CreateDirectoryA(d, NULL);
|
||||
#endif
|
||||
}
|
||||
|
||||
// .../_mods/<MODNAME>
|
||||
// .../_mods/<MODNAME>.zip
|
||||
static std::string _PathToModName(const std::string& path)
|
||||
|
@ -156,7 +142,7 @@ void ModDL::GetModlist(const std::string& url, bool allowChaining, bool first)
|
|||
{
|
||||
if(first)
|
||||
knownServers.clear();
|
||||
|
||||
|
||||
// Prevent recursion, self-linking, or cycle linking.
|
||||
// In theory, this allows setting up a server network
|
||||
// where each server links to any servers it knows,
|
||||
|
@ -184,7 +170,7 @@ void ModDL::GetModlist(const std::string& url, bool allowChaining, bool first)
|
|||
std::ostringstream os;
|
||||
os << "Fetching mods list [" << url << "], chain: " << allowChaining;
|
||||
debugLog(os.str());
|
||||
|
||||
|
||||
std::string localName = remoteToLocalName(url);
|
||||
|
||||
debugLog("... to: " + localName);
|
||||
|
@ -240,7 +226,7 @@ void ModDL::NotifyModlist(ModlistRequest *rq, NetEvent ev, size_t recvd, size_t
|
|||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if(scr)
|
||||
{
|
||||
scr->globeIcon->alpha.stop();
|
||||
|
@ -289,7 +275,7 @@ bool ModDL::ParseModXML(const std::string& fn, bool allowChaining)
|
|||
<Properties type="patch" /> //-- optional tag, if not given, "mod" is assumed. Can be "mod", "patch", or "weblink".
|
||||
// if type=="weblink", <Package url> will be opened with the default web browser.
|
||||
</AquariaMod>
|
||||
|
||||
|
||||
<AquariaMod>
|
||||
...
|
||||
</AquariaMod>
|
||||
|
@ -526,7 +512,7 @@ void ModDL::NotifyMod(ModRequest *rq, NetEvent ev, size_t recvd, size_t total)
|
|||
remove(archiveFile.c_str());
|
||||
if(rename(rq->tempFilename.c_str(), archiveFile.c_str()))
|
||||
{
|
||||
debugLog("Could not rename mod " + rq->tempFilename + " to " + archiveFile);
|
||||
dsq->screenMessage("Failed to rename mod\n" + rq->tempFilename + "\n to\n" + archiveFile);
|
||||
return;
|
||||
}
|
||||
else
|
||||
|
@ -537,7 +523,7 @@ void ModDL::NotifyMod(ModRequest *rq, NetEvent ev, size_t recvd, size_t total)
|
|||
// Dir already exists, just remount everything
|
||||
vfs.Reload();
|
||||
}
|
||||
else if(!dsq->mountModPackage(archiveFile))
|
||||
else if(!dsq->mountModPackage(archiveFile))
|
||||
{
|
||||
// make package readable (so that the icon can be shown)
|
||||
// But only if it wasn't mounted before!
|
||||
|
|
|
@ -18,333 +18,37 @@ 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include <JPS.h>
|
||||
#include "PathFinding.h"
|
||||
#include "DSQ.h"
|
||||
#include "Game.h"
|
||||
|
||||
|
||||
const int divs = 6;
|
||||
const int MAX_ZONES=1000;
|
||||
const int MAX_STEPS = 5000;
|
||||
const int cutOff = int((divs*divs)*0.75f);
|
||||
|
||||
namespace PathFindingGlobals
|
||||
class SearchGrid
|
||||
{
|
||||
// This isn't used by the current code, so I've commented it out to
|
||||
// save 4MB of RAM. --achurch
|
||||
//int zones[MAX_ZONES][MAX_ZONES];
|
||||
|
||||
MapSearchNode node_goal;
|
||||
MapSearchNode node_start;
|
||||
RenderObject *render_object;
|
||||
bool hate_diagonals;
|
||||
}
|
||||
|
||||
float MapSearchNode::GoalDistanceEstimate( MapSearchNode &nodeGoal )
|
||||
{
|
||||
float xd = float( ( (float)x - (float)nodeGoal.x ) );
|
||||
float yd = float( ( (float)y - (float)nodeGoal.y) );
|
||||
|
||||
return ((xd*xd) + (yd*yd));
|
||||
//return 0;
|
||||
/*
|
||||
int r = 10;
|
||||
float c = 0;
|
||||
for (int x = -r; x < r; x+=2)
|
||||
public:
|
||||
SearchGrid() : game(dsq->game) {}
|
||||
inline bool operator()(unsigned x, unsigned y) const
|
||||
{
|
||||
for (int y = -r; y < r; y+=2)
|
||||
{
|
||||
if (dsq->game->getGrid(TileVector(this->x+x, this->y+y)))
|
||||
{
|
||||
//c+= r*TILE_SIZE
|
||||
c++;
|
||||
}
|
||||
}
|
||||
}
|
||||
return ((xd*xd) + (yd*yd)) + c * (2*TILE_SIZE);
|
||||
*/
|
||||
return game->getGrid(TileVector(x, y)) == OT_EMPTY;
|
||||
}
|
||||
|
||||
private:
|
||||
const Game *game;
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
float xd = float( ( (float)x - (float)nodeGoal.x ) );
|
||||
float yd = float( ( (float)y - (float)nodeGoal.y) );
|
||||
int dist = ((xd*xd) + (yd*yd));
|
||||
return (int(dist/80)*80);
|
||||
*/
|
||||
|
||||
//return ((xd*xd) + (yd*yd));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// + c; //+ c * (2*TILE_SIZE);
|
||||
}
|
||||
|
||||
bool MapSearchNode::IsGoal( MapSearchNode &nodeGoal )
|
||||
static void generateVectorPath(const JPS::PathVector& rawpath, VectorPath& vp, int offx, int offy)
|
||||
{
|
||||
Vector v(x, y);
|
||||
Vector g(nodeGoal.x, nodeGoal.y);
|
||||
if (divs > 1)
|
||||
{
|
||||
if ((v - g).getSquaredLength2D() <= sqr(divs+1))
|
||||
{
|
||||
// HACK: remember this
|
||||
//debugLog ("really close to the goal!");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
if( int(x/divs) == int(nodeGoal.x/divs) && int(y/divs) == int(nodeGoal.y/divs))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
for(JPS::PathVector::const_iterator it = rawpath.begin(); it != rawpath.end(); ++it)
|
||||
vp.addPathNode(Vector((it->x*TILE_SIZE)+TILE_SIZE/2+offx, (it->y*TILE_SIZE)+TILE_SIZE/2)+offy, 0);
|
||||
}
|
||||
|
||||
// This generates the successors to the given Node. It uses a helper function called
|
||||
// AddSuccessor to give the successors to the AStar class. The A* specific initialisation
|
||||
// is done for each node internally, so here you just set the state information that
|
||||
// is specific to the application
|
||||
bool MapSearchNode::GetSuccessors( AStarSearch *astarsearch, MapSearchNode *parent_node )
|
||||
{
|
||||
|
||||
int parent_x = -1;
|
||||
int parent_y = -1;
|
||||
|
||||
if( parent_node )
|
||||
{
|
||||
parent_x = parent_node->x;
|
||||
parent_y = parent_node->y;
|
||||
}
|
||||
|
||||
|
||||
MapSearchNode NewNode;
|
||||
|
||||
int i = divs;
|
||||
// push each possible move except allowing the search to go backwards
|
||||
if ((GetMap (x-i, y) <= 0) && !((parent_x == x-i) && (parent_y == y)))
|
||||
{
|
||||
NewNode = MapSearchNode( x-i, y );
|
||||
astarsearch->AddSuccessor( NewNode );
|
||||
}
|
||||
|
||||
if ((GetMap (x, y-i) <= 0) && !((parent_x == x) && (parent_y == y-i)))
|
||||
{
|
||||
NewNode = MapSearchNode( x, y-i );
|
||||
astarsearch->AddSuccessor( NewNode );
|
||||
}
|
||||
|
||||
if ((GetMap (x+i, y) <= 0) && !((parent_x == x+i) && (parent_y == y)))
|
||||
{
|
||||
NewNode = MapSearchNode( x+i, y );
|
||||
astarsearch->AddSuccessor( NewNode );
|
||||
}
|
||||
|
||||
if ((GetMap (x, y+i) <= 0) && !((parent_x == x) && (parent_y == y+i)))
|
||||
{
|
||||
NewNode = MapSearchNode( x, y+i );
|
||||
astarsearch->AddSuccessor( NewNode );
|
||||
}
|
||||
|
||||
if (!PathFindingGlobals::hate_diagonals)
|
||||
{
|
||||
if ((GetMap (x-i, y-i) < 1) && !((parent_x == x-i) && (parent_y == y-i)))
|
||||
{
|
||||
NewNode = MapSearchNode( x-i, y-i );
|
||||
astarsearch->AddSuccessor( NewNode );
|
||||
}
|
||||
|
||||
if ((GetMap (x-i, y+i) < 1) && !((parent_x == x-i) && (parent_y == y+i)))
|
||||
{
|
||||
NewNode = MapSearchNode( x-i, y+i );
|
||||
astarsearch->AddSuccessor( NewNode );
|
||||
}
|
||||
|
||||
if ((GetMap (x+i, y+i) <1) && !((parent_x == x+i) && (parent_y == y+i)))
|
||||
{
|
||||
NewNode = MapSearchNode( x+i, y+i );
|
||||
astarsearch->AddSuccessor( NewNode );
|
||||
}
|
||||
|
||||
if ((GetMap (x+i, y-i) < 1) && !((parent_x == x+i) && (parent_y == y-i)))
|
||||
{
|
||||
NewNode = MapSearchNode( x+i, y-i );
|
||||
astarsearch->AddSuccessor( NewNode );
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// given this node, what does it cost to move to successor. In the case
|
||||
// of our map the answer is the map terrain value at this node since that is
|
||||
// conceptually where we're moving
|
||||
float MapSearchNode::GetCost( MapSearchNode &successor )
|
||||
{
|
||||
float cost = 1;
|
||||
/*
|
||||
if (PathFindingGlobals::hate_diagonals)
|
||||
{
|
||||
if (successor.x != x && successor.y != y)
|
||||
{
|
||||
cost = 0.1;
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
//Vector p(x, y);
|
||||
//penalize moving towards obstructions
|
||||
/*
|
||||
int r = 20;
|
||||
float costy=0;
|
||||
int c = 0;
|
||||
float v = 0;
|
||||
float dist = sqr(r*TILE_SIZE);
|
||||
TileVector tme(this->x, this->y);
|
||||
for (int x = -r; x < r; x++)
|
||||
{
|
||||
for (int y = -r; y < r; y++)
|
||||
{
|
||||
TileVector t(this->x + x, this->y + y);
|
||||
if (dsq->game->isObstructed(t))
|
||||
{
|
||||
|
||||
Vector diff = t.worldVector() - tme.worldVector();
|
||||
int d = diff.getSquaredLength2D();
|
||||
if (d < dist)
|
||||
{
|
||||
costy += 0.1;
|
||||
}
|
||||
|
||||
//TileVector tme(this->x, this->y);
|
||||
//Vector diff = t.worldVector() - tme.worldVector();
|
||||
//int d = diff.getSquaredLength2D();
|
||||
//if (d < dist)
|
||||
//{
|
||||
// v += dist-diff.getSquaredLength2D();
|
||||
//}
|
||||
|
||||
}
|
||||
c++;
|
||||
}
|
||||
}
|
||||
cost += costy;
|
||||
*/
|
||||
/*
|
||||
if (v > 0)
|
||||
{
|
||||
v /= float(c);
|
||||
v /= float(dist);
|
||||
cost += v*TILE_SIZE*10;
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
//penalize changing direction to tempt computer into moving in "straighter" paths
|
||||
/*
|
||||
if (successor.y != y && (dir == LEFT || dir == RIGHT))
|
||||
cost +=39;
|
||||
if (successor.x != x && (dir == UP || dir == DOWN))
|
||||
cost +=39;
|
||||
*/
|
||||
|
||||
return cost;
|
||||
}
|
||||
|
||||
int MapSearchNode::GetMap (int tx, int ty)
|
||||
{
|
||||
//return 0;
|
||||
//return PathFindingGlobals::zones[int(tx/divs)][int(ty/divs)] > cutOff;
|
||||
int v = dsq->game->getGrid(TileVector(tx,ty));
|
||||
/*
|
||||
if (v != 0 && v != 1)
|
||||
{
|
||||
std::ostringstream os;
|
||||
os << "v: " << v;
|
||||
debugLog(os.str());
|
||||
}
|
||||
*/
|
||||
return v;
|
||||
/*
|
||||
if (dsq->game->getGrid(TileVector(x,y))
|
||||
|| dsq->game->getGrid(TileVector(x+1,y))
|
||||
|| dsq->game->getGrid(TileVector(x-1,y))
|
||||
|| dsq->game->getGrid(TileVector(x+2,y))
|
||||
|| dsq->game->getGrid(TileVector(x-2,y))
|
||||
*/
|
||||
|
||||
/*
|
||||
int r = 3;
|
||||
for (int x = -r; x < r; x++)
|
||||
{
|
||||
for (int y = -r; y < r; y++)
|
||||
{
|
||||
if (dsq->game->getGrid(TileVector(tx+x, ty+y)))
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
*/
|
||||
|
||||
/*
|
||||
// ignore the start node
|
||||
if (x == KittyTown::instance->nodeStart->x && y == KittyTown::instance->nodeStart->y)
|
||||
{
|
||||
obs = -1;
|
||||
}
|
||||
return obs;
|
||||
*/
|
||||
}
|
||||
|
||||
// same state in a maze search is simply when (x,y) are the same
|
||||
bool MapSearchNode::IsSameState( MapSearchNode &rhs )
|
||||
{
|
||||
if( (int(x/divs) == int(rhs.x/divs)) && (int(y/divs) == int(rhs.y/divs)) )
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
void PathFinding::generateZones()
|
||||
{
|
||||
return;
|
||||
|
||||
/*
|
||||
for (int x = 0; x < MAX_ZONES; x++)
|
||||
{
|
||||
for (int y = 0; y < MAX_ZONES; y++)
|
||||
{
|
||||
PathFindingGlobals::zones[x][y] = 0;
|
||||
}
|
||||
}
|
||||
for (int x = 0; x < MAX_GRID; x+=divs)
|
||||
{
|
||||
for (int y = 0; y < MAX_GRID; y+=divs)
|
||||
{
|
||||
for (int xx = x; xx < x + divs; xx++)
|
||||
{
|
||||
for (int yy = y; yy < y + divs; yy++)
|
||||
{
|
||||
if (dsq->game->getGrid(TileVector(xx,yy)) > 0)
|
||||
{
|
||||
PathFindingGlobals::zones[int(x/divs)][int(y/divs)]++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
void PathFinding::forceMinimumPath(VectorPath &path, const Vector &start, const Vector &dest)
|
||||
{
|
||||
if (path.getNumPathNodes() <= 2)
|
||||
{
|
||||
debugLog(" Path is <= 2 nodes... setting up simple path");
|
||||
//debugLog(" Path is <= 2 nodes... setting up simple path");
|
||||
path.clear();
|
||||
path.addPathNode(start, 0);
|
||||
path.addPathNode(dest, 1);
|
||||
|
@ -353,17 +57,8 @@ void PathFinding::forceMinimumPath(VectorPath &path, const Vector &start, const
|
|||
|
||||
void PathFinding::molestPath(VectorPath &path)
|
||||
{
|
||||
//path.cut(2);
|
||||
|
||||
int sz=path.getNumPathNodes();
|
||||
|
||||
/*
|
||||
//normals.resize(sz);
|
||||
|
||||
*/
|
||||
//float maxDist = 15155;
|
||||
|
||||
|
||||
int i = 0;
|
||||
// make normals
|
||||
std::vector<Vector> normals;
|
||||
|
@ -372,26 +67,12 @@ void PathFinding::molestPath(VectorPath &path)
|
|||
{
|
||||
Vector node = path.getPathNode(i)->value;
|
||||
float dist;
|
||||
/*
|
||||
float coverage = dsq->game->getCoverage(node, 100);
|
||||
int sample = 10;
|
||||
if (coverage > 0.4f)
|
||||
sample = 5;
|
||||
*/
|
||||
int sample = 20;
|
||||
float maxDist = sample * TILE_SIZE;
|
||||
//sqrtf(sqr(sample*TILE_SIZE)+sqr(sample*TILE_SIZE));
|
||||
|
||||
//if (coverage < 0.6f)
|
||||
{
|
||||
Vector n = dsq->game->getWallNormal(node, sample, &dist);
|
||||
if (dist != -1 && (n.x != 0 || n.y != 0))
|
||||
{
|
||||
/*
|
||||
if (dist > maxDist)
|
||||
maxDist = dist;
|
||||
n *= (maxDist-dist); // *(1.0f-coverage);
|
||||
*/
|
||||
n.setLength2D(200);
|
||||
TileVector test(node + n);
|
||||
if (dsq->game->isObstructed(test))
|
||||
|
@ -408,55 +89,27 @@ void PathFinding::molestPath(VectorPath &path)
|
|||
}
|
||||
}
|
||||
}
|
||||
/*std::ostringstream os;
|
||||
os << "pushing node [" << i << "] out by (" << n.x << ", " << n.y << ") - dist: " << dist << " maxDist: " << maxDist;
|
||||
debugLog(os.str());*/
|
||||
//path.getPathNode(i)->value += n;
|
||||
normals[i] = n;
|
||||
}
|
||||
/*
|
||||
std::ostringstream os;
|
||||
os << "largest maxDist: " << maxDist;
|
||||
debugLog(os.str());
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
// use wall normal to push out node a bit
|
||||
std::vector<Vector> newNormals;
|
||||
newNormals.resize(normals.size());
|
||||
for (i = 1; i < normals.size()-1; i++)
|
||||
{
|
||||
|
||||
// not doing smoothing!
|
||||
Vector thisOne = normals[i];
|
||||
|
||||
Vector lastOne = normals[i-1];
|
||||
Vector nextOne = normals[i+1];
|
||||
newNormals[i] = (thisOne + lastOne + nextOne)/3.0f;
|
||||
|
||||
//newNormals[i] = thisOne;
|
||||
}
|
||||
newNormals[i] = (normals[i] + normals[i-1] + normals[i+1])/3.0f;
|
||||
for (i = 1; i < sz-1; i++)
|
||||
{
|
||||
path.getPathNode(i)->value += newNormals[i];
|
||||
}
|
||||
|
||||
|
||||
// kill bowls
|
||||
int start = 0;
|
||||
//int minDist = 150;
|
||||
int runs=0;
|
||||
bool hadSuccess = false;
|
||||
int lastSuccessNode = 0;
|
||||
//int adjust = int(minDist/float(TILE_SIZE*8));
|
||||
int adjust = 2; // 1
|
||||
//bowl_loop:
|
||||
int adjust = 2;
|
||||
sz=path.getNumPathNodes();
|
||||
|
||||
/*std::ostringstream os;
|
||||
os << "kill bowls # " << runs;
|
||||
debugLog(os.str());*/
|
||||
|
||||
for (i = start; i < sz-1; i++)
|
||||
{
|
||||
runs++;
|
||||
|
@ -469,349 +122,58 @@ void PathFinding::molestPath(VectorPath &path)
|
|||
hadSuccess = false;
|
||||
Vector node = path.getPathNode(i)->value;
|
||||
for (int j = sz-3; j >= i+adjust; j--)
|
||||
//for (int j = i+adjust; j < sz-1; j++)
|
||||
{
|
||||
Vector target = path.getPathNode(j)->value;
|
||||
//if ((target-node).getSquaredLength2D() >= sqr(minDist))
|
||||
if (dsq->game->trace(node, target))
|
||||
{
|
||||
if (dsq->game->trace(node, target))
|
||||
{
|
||||
hadSuccess = true;
|
||||
lastSuccessNode = j;
|
||||
break;
|
||||
}
|
||||
/*
|
||||
else if (hadSuccess)
|
||||
{
|
||||
//break;
|
||||
}
|
||||
*/
|
||||
hadSuccess = true;
|
||||
lastSuccessNode = j;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (hadSuccess)
|
||||
{
|
||||
// only do this if
|
||||
//VectorPath copy = path.copySection(i,lastSuccessNode);
|
||||
/*
|
||||
// this code will only delete things that are bowl-ish
|
||||
// (things that take you on detours)
|
||||
float len = path.getSubSectionLength(i, lastSuccessNode);
|
||||
float shortCut = (path.getPathNode(lastSuccessNode)->value - path.getPathNode(i)->value).getLength2D();
|
||||
|
||||
if (len > shortCut+TILE_SIZE*4)
|
||||
*/
|
||||
{
|
||||
path.removeNodes(i+1, lastSuccessNode-1);
|
||||
/*std::ostringstream os;
|
||||
os << "killing bowl: " << i+1 << " - " << lastSuccessNode-1;
|
||||
debugLog(os.str());*/
|
||||
//start = lastSuccessNode - (lastSuccessNode-i);
|
||||
//start = i+1;
|
||||
//i = i+1;
|
||||
i++;
|
||||
}
|
||||
++i;
|
||||
path.removeNodes(i, lastSuccessNode-1);
|
||||
hadSuccess = false;
|
||||
//start += 2;
|
||||
//goto bowl_loop;
|
||||
}
|
||||
sz = path.getNumPathNodes();
|
||||
}
|
||||
//debugLog("kill bowls done");
|
||||
sz=path.getNumPathNodes();
|
||||
|
||||
// remove last node
|
||||
path.removeNodes(path.getNumPathNodes()-2, path.getNumPathNodes()-2);
|
||||
|
||||
/*
|
||||
loop:
|
||||
for (int i = 0; i < sz-2; i++)
|
||||
{
|
||||
Vector node = path.getPathNode(i)->value;
|
||||
Vector next = path.getPathNode(i+1)->value;
|
||||
Vector next2 = path.getPathNode(i+2)->value;
|
||||
int dist1 = (next - node).getSquaredLength2D() + (next2 - next).getSquaredLength2D();
|
||||
int dist2 = (next2 - node).getSquaredLength2D();
|
||||
if (dist2 <= dist1)
|
||||
{
|
||||
// remove next
|
||||
path.removeNode(i+1);
|
||||
goto loop;
|
||||
}
|
||||
}
|
||||
*/
|
||||
//path.removeNodes(path.getNumPathNodes()-2, path.getNumPathNodes()-2);
|
||||
|
||||
path.realPercentageCalc();
|
||||
//path.calculatePercentages();
|
||||
/*
|
||||
int sz=path.getNumPathNodes();
|
||||
std::vector<Vector> normals;
|
||||
normals.resize(sz);
|
||||
for (int i = 1; i < sz-1; i++)
|
||||
{
|
||||
Vector node = path.getPathNode(i)->value;
|
||||
Vector normal = dsq->game->getWallNormal(node, 10);
|
||||
if (normal.x != 0 && normal.y != 0)
|
||||
{
|
||||
normal = normal*TILE_SIZE*10;
|
||||
}
|
||||
normals[i] = normal;
|
||||
//path.getPathNode(i)->value = node;
|
||||
}
|
||||
for (int i = 1; i < sz-1; i++)
|
||||
{
|
||||
Vector normal = normals[i];
|
||||
Vector lastNormal = normals[i-1];
|
||||
|
||||
//Vector node = path.getPathNode(i)->value;
|
||||
//// average with the
|
||||
//Vector prev = path.getPathNode(i-1)->value;
|
||||
//Vector next = path.getPathNode(i+1)->value;
|
||||
|
||||
//node = (node + prev)/2.0f;
|
||||
|
||||
normal = (normal + lastNormal)/2.0f;
|
||||
path.getPathNode(i)->value += normal;
|
||||
}
|
||||
*/
|
||||
/*
|
||||
for (int i = 1; i < sz; i++)
|
||||
{
|
||||
Vector node = path.getPathNode(i)->value;
|
||||
Vector p0 = path.getPathNode(i-1)->value;
|
||||
Vector p1 = path.getPathNode(i)->value;
|
||||
Vector p = p1 - p0;
|
||||
if (i < sz-1)
|
||||
{
|
||||
p += path.getPathNode(i+1)->value - path.getPathNode(i)->value;
|
||||
p /= 2.0f;
|
||||
}
|
||||
Vector pl = p.getPerpendicularLeft();
|
||||
Vector pr = p.getPerpendicularRight();
|
||||
pl.normalize2D();
|
||||
pr.normalize2D();
|
||||
TileVector tl(node), tr(node);
|
||||
int left, right;
|
||||
int maxCheck = 40;
|
||||
for (left = 0; left < maxCheck; left++)
|
||||
{
|
||||
if (dsq->game->isObstructed(tl))
|
||||
break;
|
||||
tl.x += pl.x;
|
||||
tl.y += pl.y;
|
||||
}
|
||||
for (right = 0; right < maxCheck; right++)
|
||||
{
|
||||
if (dsq->game->isObstructed(tr))
|
||||
break;
|
||||
tr.x += pr.x;
|
||||
tr.y += pr.y;
|
||||
}
|
||||
if (left == maxCheck && right == maxCheck)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
else if (left != 0 || right != 0)
|
||||
{
|
||||
//Vector normal = dsq->game->getWallNormal(node);
|
||||
//if (normal.x != 0 && normal.y != 0)
|
||||
//{
|
||||
// if (left < right)
|
||||
// path.getPathNode(i)->value += normal * (right-left)*TILE_SIZE;
|
||||
// if (right > left)
|
||||
// path.getPathNode(i)->value += normal * (left-right)*TILE_SIZE;
|
||||
//}
|
||||
|
||||
|
||||
//int leftSz = left * TILE_SIZE;
|
||||
////if (leftSz <= 0) leftSz = 1;
|
||||
//int rightSz = right * TILE_SIZE;
|
||||
////if (rightSz <= 0) rightSz = 1;
|
||||
//pl |= leftSz;
|
||||
//pr |= rightSz;
|
||||
//
|
||||
|
||||
|
||||
path.getPathNode(i)->value = (tr.worldVector() + tl.worldVector())/2.0f;
|
||||
|
||||
//path.getPathNode(i)->value = tl.worldVector() + (tr.worldVector() - tl.worldVector())/2.0f;//(node + pl) + (pr-pl)/2.0f;
|
||||
path.getPathNode(i)->value.z = 0;
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
for (int i = 1; i < sz; i++)
|
||||
{
|
||||
Vector node = path.getPathNode(i)->value;
|
||||
Vector pl = p.getPerpendicularLeft();
|
||||
Vector pr = p.getPerpendicularRight();
|
||||
pl.normalize2D();
|
||||
pr.normalize2D();
|
||||
TileVector tl(node), tr(node);
|
||||
int left, right;
|
||||
int maxCheck = 40;
|
||||
for (int i = 0; i < maxCheck; i++)
|
||||
{
|
||||
dsq->game->position
|
||||
}
|
||||
if (left == maxCheck && right == maxCheck)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
else if (left != 0 || right != 0)
|
||||
{
|
||||
//Vector normal = dsq->game->getWallNormal(node);
|
||||
//if (normal.x != 0 && normal.y != 0)
|
||||
//{
|
||||
// if (left < right)
|
||||
// path.getPathNode(i)->value += normal * (right-left)*TILE_SIZE;
|
||||
// if (right > left)
|
||||
// path.getPathNode(i)->value += normal * (left-right)*TILE_SIZE;
|
||||
//}
|
||||
|
||||
|
||||
//int leftSz = left * TILE_SIZE;
|
||||
////if (leftSz <= 0) leftSz = 1;
|
||||
//int rightSz = right * TILE_SIZE;
|
||||
////if (rightSz <= 0) rightSz = 1;
|
||||
//pl |= leftSz;
|
||||
//pr |= rightSz;
|
||||
//
|
||||
|
||||
|
||||
path.getPathNode(i)->value = (tr.worldVector() + tl.worldVector())/2.0f;
|
||||
|
||||
//path.getPathNode(i)->value = tl.worldVector() + (tr.worldVector() - tl.worldVector())/2.0f;//(node + pl) + (pr-pl)/2.0f;
|
||||
path.getPathNode(i)->value.z = 0;
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
void PathFinding::generatePath(RenderObject *ro, TileVector start, TileVector goal, int offx, int offy, bool hate_diagonals)
|
||||
void PathFinding::generatePath(RenderObject *ro, TileVector start, TileVector goal, int offx, int offy)
|
||||
{
|
||||
//return;
|
||||
|
||||
int sx = start.x;
|
||||
int sy = start.y;
|
||||
int gx = goal.x;
|
||||
int gy = goal.y;
|
||||
|
||||
|
||||
PathFindingGlobals::hate_diagonals = hate_diagonals;
|
||||
/*
|
||||
if (offx >= TILE_SIZE/2-1)
|
||||
offx--;
|
||||
if (offy >= TILE_SIZE/2-1)
|
||||
offy--;
|
||||
if (offx <= TILE_SIZE/2+1)
|
||||
offx++;
|
||||
if (offy <= TILE_SIZE/2+1)
|
||||
offy++;
|
||||
*/
|
||||
ro->position.ensureData();
|
||||
ro->position.data->path.clear();
|
||||
VectorPath& vp = ro->position.data->path;
|
||||
vp.clear();
|
||||
|
||||
PathFindingGlobals::render_object = ro;
|
||||
AStarSearch astarsearch;
|
||||
|
||||
// Create a start state
|
||||
MapSearchNode nodeStart;
|
||||
nodeStart.x = sx;
|
||||
nodeStart.y = sy;
|
||||
PathFindingGlobals::node_start = nodeStart;
|
||||
|
||||
if (nodeStart.GetMap(gx, gy) > 0)
|
||||
SearchGrid grid;
|
||||
JPS::PathVector path;
|
||||
if(JPS::findPath(path, grid, start.x, start.y, goal.x, goal.y, 10))
|
||||
{
|
||||
std::ostringstream os;
|
||||
os << "goal (" << gx << ", " << gy << ") blocked";
|
||||
debugLog (os.str());
|
||||
return;
|
||||
vp.addPathNode(ro->position, 0);
|
||||
generateVectorPath(path, vp, offx, offy);
|
||||
}
|
||||
|
||||
// Define the goal state
|
||||
|
||||
MapSearchNode nodeEnd;
|
||||
nodeEnd.x = gx;
|
||||
nodeEnd.y = gy;
|
||||
|
||||
PathFindingGlobals::node_goal = nodeEnd;
|
||||
|
||||
// Set Start and goal states
|
||||
|
||||
astarsearch.SetStartAndGoalStates( nodeStart, nodeEnd );
|
||||
|
||||
unsigned int SearchState;
|
||||
unsigned int SearchSteps = 0;
|
||||
|
||||
do
|
||||
{
|
||||
SearchState = astarsearch.SearchStep();
|
||||
|
||||
if (SearchState != AStarSearch::SEARCH_STATE_SEARCHING)
|
||||
break;
|
||||
|
||||
SearchSteps++;
|
||||
|
||||
if (SearchSteps > MAX_STEPS) break;
|
||||
}
|
||||
while( SearchState == AStarSearch::SEARCH_STATE_SEARCHING );
|
||||
|
||||
if( SearchState == AStarSearch::SEARCH_STATE_SUCCEEDED )
|
||||
{
|
||||
//errorLog ("Search found goal state",0);
|
||||
|
||||
MapSearchNode *node = astarsearch.GetSolutionStart();
|
||||
int steps = 0;
|
||||
|
||||
//node->PrintNodeInfo();
|
||||
ro->position.data->path.addPathNode(Vector((node->x*TILE_SIZE)+TILE_SIZE/2+offx, (node->y*TILE_SIZE)+TILE_SIZE/2)+offy, 0);
|
||||
for( ;; )
|
||||
{
|
||||
node = astarsearch.GetSolutionNext();
|
||||
|
||||
if( !node )
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
//node->PrintNodeInfo();
|
||||
ro->position.data->path.addPathNode(Vector((node->x*TILE_SIZE)+TILE_SIZE/2+offx, (node->y*TILE_SIZE)+TILE_SIZE/2)+offy, steps);
|
||||
steps ++;
|
||||
};
|
||||
//ro->position.path.addPathNode(Vector(goal.x*TILE_SIZE, goal.y*TILE_SIZE), steps);
|
||||
/*
|
||||
std::ostringstream os;
|
||||
os << "Solution steps " << steps;
|
||||
msg(os.str());
|
||||
*/
|
||||
|
||||
// Once you're done with the solution you can free the nodes up
|
||||
astarsearch.FreeSolutionNodes();
|
||||
}
|
||||
else if( SearchState == AStarSearch::SEARCH_STATE_FAILED )
|
||||
{
|
||||
debugLog("Search terminated. Did not find goal state");
|
||||
|
||||
//astarsearch.FreeSolutionNodes();
|
||||
astarsearch.FreeStartAndGoalNodes();
|
||||
}
|
||||
else
|
||||
{
|
||||
// exceeded count
|
||||
debugLog("Path too long");
|
||||
|
||||
astarsearch.FreeAllNodes();
|
||||
astarsearch.FreeStartAndGoalNodes();
|
||||
//astarsearch.FreeSolutionNodes();
|
||||
}
|
||||
|
||||
if (astarsearch.m_AllocateNodeCount != astarsearch.m_FreeNodeCount)
|
||||
{
|
||||
debugLog("astar memory leak");
|
||||
}
|
||||
//return path_vector;
|
||||
}
|
||||
|
||||
bool PathFinding::generatePathSimple(VectorPath& path, const Vector& start, const Vector& end, unsigned int step /* = 0 */)
|
||||
{
|
||||
SearchGrid grid;
|
||||
JPS::PathVector p;
|
||||
TileVector tstart(start);
|
||||
TileVector tend(end);
|
||||
if(!JPS::findPath(p, grid, tstart.x, tstart.y, tend.x, tend.y, step))
|
||||
return false;
|
||||
|
||||
generateVectorPath(p, path, 0, 0);
|
||||
molestPath(path);
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -26,782 +26,18 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
#include "TileVector.h"
|
||||
#include <assert.h>
|
||||
|
||||
using namespace std;
|
||||
|
||||
/*
|
||||
class AStarNode
|
||||
{
|
||||
public:
|
||||
const bool operator==(const AStarNode &a) const
|
||||
{
|
||||
return x==a.x && y==a.y;
|
||||
}
|
||||
const bool operator<(const AStarNode &a) const;
|
||||
|
||||
AStarNode(){x=0;y=0;parent=0;}
|
||||
AStarNode (int x, int y) : x(x),y(y){}
|
||||
int x, y;
|
||||
int f, g, h;
|
||||
AStarNode *parent;
|
||||
//int id;
|
||||
//int pid;
|
||||
};
|
||||
*/
|
||||
|
||||
class AStarSearch;
|
||||
|
||||
class MapSearchNode
|
||||
{
|
||||
public:
|
||||
unsigned int x; // the (x,y) positions of the node
|
||||
unsigned int y;
|
||||
|
||||
MapSearchNode() { x = y = 0;}
|
||||
MapSearchNode( unsigned int px, unsigned int py ) { x=px; y=py;}
|
||||
|
||||
float GoalDistanceEstimate( MapSearchNode &nodeGoal );
|
||||
bool IsGoal( MapSearchNode &nodeGoal );
|
||||
bool GetSuccessors( AStarSearch *astarsearch, MapSearchNode *parent_node );
|
||||
float GetCost( MapSearchNode &successor );
|
||||
bool IsSameState( MapSearchNode &rhs );
|
||||
int GetMap (int x, int y);
|
||||
|
||||
//void PrintNodeInfo();
|
||||
};
|
||||
|
||||
class RenderObject;
|
||||
class SearchGrid;
|
||||
class Game;
|
||||
|
||||
class PathFinding
|
||||
{
|
||||
public:
|
||||
void forceMinimumPath(VectorPath &path, const Vector &start, const Vector &dest);
|
||||
void molestPath(VectorPath &path);
|
||||
void generateZones();
|
||||
void generatePath(RenderObject *go, TileVector g1, TileVector g2, int offx=0, int offy=0, bool hate_diagonals=false);
|
||||
};
|
||||
|
||||
// stl includes
|
||||
#include <algorithm>
|
||||
#include <set>
|
||||
#include <vector>
|
||||
|
||||
//#define USE_FSA_MEMORY 1
|
||||
|
||||
#ifdef _MSC_VER
|
||||
// disable warning that debugging information has lines that are truncated
|
||||
// occurs in stl headers
|
||||
#pragma warning( disable : 4786 )
|
||||
#endif
|
||||
|
||||
#define UserState MapSearchNode
|
||||
// The AStar search class. UserState is the users state space type
|
||||
|
||||
class AStarSearch
|
||||
{
|
||||
|
||||
public: // data
|
||||
|
||||
enum
|
||||
{
|
||||
SEARCH_STATE_NOT_INITIALISED,
|
||||
SEARCH_STATE_SEARCHING,
|
||||
SEARCH_STATE_SUCCEEDED,
|
||||
SEARCH_STATE_FAILED,
|
||||
SEARCH_STATE_OUT_OF_MEMORY,
|
||||
SEARCH_STATE_INVALID
|
||||
};
|
||||
|
||||
|
||||
// A node represents a possible state in the search
|
||||
// The user provided state type is included inside this type
|
||||
|
||||
public:
|
||||
|
||||
class Node
|
||||
{
|
||||
public:
|
||||
|
||||
Node *parent; // used during the search to record the parent of successor nodes
|
||||
Node *child; // used after the search for the application to view the search in reverse
|
||||
|
||||
float g; // cost of this node + it's predecessors
|
||||
float h; // heuristic estimate of distance to goal
|
||||
float f; // sum of cumulative cost of predecessors and self and heuristic
|
||||
|
||||
Node() :
|
||||
parent( 0 ),
|
||||
child( 0 ),
|
||||
g( 0.0f ),
|
||||
h( 0.0f ),
|
||||
f( 0.0f )
|
||||
{
|
||||
}
|
||||
|
||||
UserState m_UserState;
|
||||
};
|
||||
|
||||
typedef std::vector<Node*> NodeContainer;
|
||||
|
||||
class Test
|
||||
{
|
||||
};
|
||||
|
||||
|
||||
// For sorting the heap the STL needs compare function that lets us compare
|
||||
// the f value of two nodes
|
||||
|
||||
class HeapCompare_f
|
||||
{
|
||||
public:
|
||||
|
||||
bool operator() ( const Node *x, const Node *y ) const
|
||||
{
|
||||
return x->f > y->f;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
public: // methods
|
||||
|
||||
|
||||
// constructor just initialises private data
|
||||
AStarSearch( int MaxNodes = 1000 ) :
|
||||
m_AllocateNodeCount(0),
|
||||
m_FreeNodeCount(0),
|
||||
/*m_FixedSizeAllocator( MaxNodes ),*/
|
||||
m_State( SEARCH_STATE_NOT_INITIALISED ),
|
||||
m_CurrentSolutionNode( NULL ),
|
||||
m_CancelRequest( false )
|
||||
{
|
||||
}
|
||||
|
||||
// call at any time to cancel the search and free up all the memory
|
||||
void CancelSearch()
|
||||
{
|
||||
m_CancelRequest = true;
|
||||
}
|
||||
|
||||
// Set Start and goal states
|
||||
void SetStartAndGoalStates( UserState &Start, UserState &Goal )
|
||||
{
|
||||
m_CancelRequest = false;
|
||||
|
||||
m_Start = AllocateNode();
|
||||
m_Goal = AllocateNode();
|
||||
|
||||
m_Start->m_UserState = Start;
|
||||
m_Goal->m_UserState = Goal;
|
||||
|
||||
m_State = SEARCH_STATE_SEARCHING;
|
||||
|
||||
// Initialise the AStar specific parts of the Start Node
|
||||
// The user only needs fill out the state information
|
||||
|
||||
m_Start->g = 0;
|
||||
m_Start->h = m_Start->m_UserState.GoalDistanceEstimate( m_Goal->m_UserState );
|
||||
m_Start->f = m_Start->g + m_Start->h;
|
||||
m_Start->parent = 0;
|
||||
|
||||
// Push the start node on the Open list
|
||||
|
||||
m_OpenList.push_back( m_Start ); // heap now unsorted
|
||||
|
||||
// Sort back element into heap
|
||||
push_heap( m_OpenList.begin(), m_OpenList.end(), HeapCompare_f() );
|
||||
|
||||
// Initialise counter for search steps
|
||||
m_Steps = 0;
|
||||
}
|
||||
|
||||
// Advances search one step
|
||||
unsigned int SearchStep()
|
||||
{
|
||||
// Firstly break if the user has not initialised the search
|
||||
assert( (m_State > SEARCH_STATE_NOT_INITIALISED) &&
|
||||
(m_State < SEARCH_STATE_INVALID) );
|
||||
|
||||
// Next I want it to be safe to do a searchstep once the search has succeeded...
|
||||
if( (m_State == SEARCH_STATE_SUCCEEDED) ||
|
||||
(m_State == SEARCH_STATE_FAILED)
|
||||
)
|
||||
{
|
||||
return m_State;
|
||||
}
|
||||
|
||||
// Failure is defined as emptying the open list as there is nothing left to
|
||||
// search...
|
||||
// New: Allow user abort
|
||||
if( m_OpenList.empty() || m_CancelRequest )
|
||||
{
|
||||
FreeAllNodes();
|
||||
m_State = SEARCH_STATE_FAILED;
|
||||
return m_State;
|
||||
}
|
||||
|
||||
// Incremement step count
|
||||
m_Steps ++;
|
||||
|
||||
// Pop the best node (the one with the lowest f)
|
||||
Node *n = m_OpenList.front(); // get pointer to the node
|
||||
pop_heap( m_OpenList.begin(), m_OpenList.end(), HeapCompare_f() );
|
||||
m_OpenList.pop_back();
|
||||
|
||||
// Check for the goal, once we pop that we're done
|
||||
if( n->m_UserState.IsGoal( m_Goal->m_UserState ) )
|
||||
{
|
||||
// The user is going to use the Goal Node he passed in
|
||||
// so copy the parent pointer of n
|
||||
m_Goal->parent = n->parent;
|
||||
|
||||
// A special case is that the goal was passed in as the start state
|
||||
// so handle that here
|
||||
if( n != m_Start )
|
||||
{
|
||||
//delete n;
|
||||
FreeNode( n );
|
||||
|
||||
// set the child pointers in each node (except Goal which has no child)
|
||||
Node *nodeChild = m_Goal;
|
||||
Node *nodeParent = m_Goal->parent;
|
||||
|
||||
do
|
||||
{
|
||||
nodeParent->child = nodeChild;
|
||||
|
||||
nodeChild = nodeParent;
|
||||
nodeParent = nodeParent->parent;
|
||||
|
||||
}
|
||||
while( nodeChild != m_Start ); // Start is always the first node by definition
|
||||
|
||||
}
|
||||
|
||||
// delete nodes that aren't needed for the solution
|
||||
FreeUnusedNodes();
|
||||
|
||||
m_State = SEARCH_STATE_SUCCEEDED;
|
||||
|
||||
return m_State;
|
||||
}
|
||||
else // not goal
|
||||
{
|
||||
|
||||
// We now need to generate the successors of this node
|
||||
// The user helps us to do this, and we keep the new nodes in
|
||||
// m_Successors ...
|
||||
|
||||
m_Successors.clear(); // empty vector of successor nodes to n
|
||||
|
||||
// User provides this functions and uses AddSuccessor to add each successor of
|
||||
// node 'n' to m_Successors
|
||||
bool ret = n->m_UserState.GetSuccessors( this, n->parent ? &n->parent->m_UserState : NULL );
|
||||
|
||||
if( !ret )
|
||||
{
|
||||
|
||||
// free the nodes that may previously have been added
|
||||
NodeContainer::iterator successor;
|
||||
|
||||
for( successor = m_Successors.begin(); successor != m_Successors.end(); successor ++ )
|
||||
{
|
||||
FreeNode( (*successor) );
|
||||
}
|
||||
|
||||
m_Successors.clear(); // empty vector of successor nodes to n
|
||||
|
||||
// free up everything else we allocated
|
||||
FreeAllNodes();
|
||||
|
||||
m_State = SEARCH_STATE_OUT_OF_MEMORY;
|
||||
return m_State;
|
||||
}
|
||||
|
||||
// Now handle each successor to the current node ...
|
||||
for( NodeContainer::iterator successor = m_Successors.begin(); successor != m_Successors.end(); successor ++ )
|
||||
{
|
||||
|
||||
// The g value for this successor ...
|
||||
float newg = n->g + n->m_UserState.GetCost( (*successor)->m_UserState );
|
||||
|
||||
// Now we need to find whether the node is on the open or closed lists
|
||||
// If it is but the node that is already on them is better (lower g)
|
||||
// then we can forget about this successor
|
||||
|
||||
// First linear search of open list to find node
|
||||
|
||||
NodeContainer::iterator openlist_result;
|
||||
|
||||
for( openlist_result = m_OpenList.begin(); openlist_result != m_OpenList.end(); openlist_result ++ )
|
||||
{
|
||||
if( (*openlist_result)->m_UserState.IsSameState( (*successor)->m_UserState ) )
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if( openlist_result != m_OpenList.end() )
|
||||
{
|
||||
|
||||
// we found this state on open
|
||||
|
||||
if( (*openlist_result)->g <= newg )
|
||||
{
|
||||
FreeNode( (*successor) );
|
||||
|
||||
// the one on Open is cheaper than this one
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
NodeContainer::iterator closedlist_result;
|
||||
|
||||
for( closedlist_result = m_ClosedList.begin(); closedlist_result != m_ClosedList.end(); closedlist_result ++ )
|
||||
{
|
||||
if( (*closedlist_result)->m_UserState.IsSameState( (*successor)->m_UserState ) )
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if( closedlist_result != m_ClosedList.end() )
|
||||
{
|
||||
|
||||
// we found this state on closed
|
||||
|
||||
if( (*closedlist_result)->g <= newg )
|
||||
{
|
||||
// the one on Closed is cheaper than this one
|
||||
FreeNode( (*successor) );
|
||||
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
// This node is the best node so far with this particular state
|
||||
// so lets keep it and set up its AStar specific data ...
|
||||
|
||||
(*successor)->parent = n;
|
||||
(*successor)->g = newg;
|
||||
(*successor)->h = (*successor)->m_UserState.GoalDistanceEstimate( m_Goal->m_UserState );
|
||||
(*successor)->f = (*successor)->g + (*successor)->h;
|
||||
|
||||
// Remove successor from closed if it was on it
|
||||
|
||||
if( closedlist_result != m_ClosedList.end() )
|
||||
{
|
||||
// remove it from Closed
|
||||
FreeNode( (*closedlist_result) );
|
||||
m_ClosedList.erase( closedlist_result );
|
||||
}
|
||||
|
||||
// Update old version of this node
|
||||
if( openlist_result != m_OpenList.end() )
|
||||
{
|
||||
|
||||
FreeNode( (*openlist_result) );
|
||||
m_OpenList.erase( openlist_result );
|
||||
|
||||
// re-make the heap
|
||||
make_heap( m_OpenList.begin(), m_OpenList.end(), HeapCompare_f() );
|
||||
|
||||
// make_heap rather than sort_heap is an essential bug fix
|
||||
// thanks to Mike Ryynanen for pointing this out and then explaining
|
||||
// it in detail. sort_heap called on an invalid heap does not work
|
||||
|
||||
// sort_heap( m_OpenList.begin(), m_OpenList.end(), HeapCompare_f() );
|
||||
|
||||
// assert( is_heap( m_OpenList.begin(), m_OpenList.end(), HeapCompare_f() ) );
|
||||
|
||||
}
|
||||
|
||||
// heap now unsorted
|
||||
m_OpenList.push_back( (*successor) );
|
||||
|
||||
// sort back element into heap
|
||||
push_heap( m_OpenList.begin(), m_OpenList.end(), HeapCompare_f() );
|
||||
|
||||
}
|
||||
|
||||
// push n onto Closed, as we have expanded it now
|
||||
|
||||
m_ClosedList.push_back( n );
|
||||
|
||||
} // end else (not goal so expand)
|
||||
|
||||
return m_State; // Succeeded bool is false at this point.
|
||||
|
||||
}
|
||||
|
||||
// User calls this to add a successor to a list of successors
|
||||
// when expanding the search frontier
|
||||
bool AddSuccessor( UserState &State )
|
||||
{
|
||||
Node *node = AllocateNode();
|
||||
|
||||
if( node )
|
||||
{
|
||||
node->m_UserState = State;
|
||||
|
||||
m_Successors.push_back( node );
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// Free the solution nodes
|
||||
// This is done to clean up all used Node memory when you are done with the
|
||||
// search
|
||||
void FreeSolutionNodes()
|
||||
{
|
||||
Node *n = m_Start;
|
||||
|
||||
if( m_Start->child )
|
||||
{
|
||||
do
|
||||
{
|
||||
Node *del = n;
|
||||
n = n->child;
|
||||
FreeNode( del );
|
||||
|
||||
del = NULL;
|
||||
|
||||
} while( n != m_Goal );
|
||||
|
||||
FreeNode( n ); // Delete the goal
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
// if the start node is the solution we need to just delete the start and goal
|
||||
// nodes
|
||||
FreeNode( m_Start );
|
||||
FreeNode( m_Goal );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void FreeStartAndGoalNodes()
|
||||
{
|
||||
//FreeNode( m_Start );
|
||||
FreeNode( m_Goal );
|
||||
}
|
||||
|
||||
// Functions for traversing the solution
|
||||
|
||||
// Get start node
|
||||
UserState *GetSolutionStart()
|
||||
{
|
||||
m_CurrentSolutionNode = m_Start;
|
||||
if( m_Start )
|
||||
{
|
||||
return &m_Start->m_UserState;
|
||||
}
|
||||
else
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
// Get next node
|
||||
UserState *GetSolutionNext()
|
||||
{
|
||||
if( m_CurrentSolutionNode )
|
||||
{
|
||||
if( m_CurrentSolutionNode->child )
|
||||
{
|
||||
|
||||
Node *child = m_CurrentSolutionNode->child;
|
||||
|
||||
m_CurrentSolutionNode = m_CurrentSolutionNode->child;
|
||||
|
||||
return &child->m_UserState;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Get end node
|
||||
UserState *GetSolutionEnd()
|
||||
{
|
||||
m_CurrentSolutionNode = m_Goal;
|
||||
if( m_Goal )
|
||||
{
|
||||
return &m_Goal->m_UserState;
|
||||
}
|
||||
else
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
// Step solution iterator backwards
|
||||
UserState *GetSolutionPrev()
|
||||
{
|
||||
if( m_CurrentSolutionNode )
|
||||
{
|
||||
if( m_CurrentSolutionNode->parent )
|
||||
{
|
||||
|
||||
Node *parent = m_CurrentSolutionNode->parent;
|
||||
|
||||
m_CurrentSolutionNode = m_CurrentSolutionNode->parent;
|
||||
|
||||
return &parent->m_UserState;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// For educational use and debugging it is useful to be able to view
|
||||
// the open and closed list at each step, here are two functions to allow that.
|
||||
|
||||
UserState *GetOpenListStart()
|
||||
{
|
||||
float f,g,h;
|
||||
return GetOpenListStart( f,g,h );
|
||||
}
|
||||
|
||||
UserState *GetOpenListStart( float &f, float &g, float &h )
|
||||
{
|
||||
/*
|
||||
iterDbgOpen = m_OpenList.begin();
|
||||
if( iterDbgOpen != m_OpenList.end() )
|
||||
{
|
||||
f = (*iterDbgOpen)->f;
|
||||
g = (*iterDbgOpen)->g;
|
||||
h = (*iterDbgOpen)->h;
|
||||
return &(*iterDbgOpen)->m_UserState;
|
||||
}
|
||||
*/
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
UserState *GetOpenListNext()
|
||||
{
|
||||
float f,g,h;
|
||||
return GetOpenListNext( f,g,h );
|
||||
}
|
||||
|
||||
UserState *GetOpenListNext( float &f, float &g, float &h )
|
||||
{
|
||||
/*
|
||||
iterDbgOpen++;
|
||||
if( iterDbgOpen != m_OpenList.end() )
|
||||
{
|
||||
f = (*iterDbgOpen)->f;
|
||||
g = (*iterDbgOpen)->g;
|
||||
h = (*iterDbgOpen)->h;
|
||||
return &(*iterDbgOpen)->m_UserState;
|
||||
}
|
||||
*/
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
UserState *GetClosedListStart()
|
||||
{
|
||||
float f,g,h;
|
||||
return GetClosedListStart( f,g,h );
|
||||
}
|
||||
|
||||
UserState *GetClosedListStart( float &f, float &g, float &h )
|
||||
{
|
||||
/*
|
||||
iterDbgClosed = m_ClosedList.begin();
|
||||
if( iterDbgClosed != m_ClosedList.end() )
|
||||
{
|
||||
f = (*iterDbgClosed)->f;
|
||||
g = (*iterDbgClosed)->g;
|
||||
h = (*iterDbgClosed)->h;
|
||||
|
||||
return &(*iterDbgClosed)->m_UserState;
|
||||
}
|
||||
*/
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
UserState *GetClosedListNext()
|
||||
{
|
||||
float f,g,h;
|
||||
return GetClosedListNext( f,g,h );
|
||||
}
|
||||
|
||||
UserState *GetClosedListNext( float &f, float &g, float &h )
|
||||
{
|
||||
/*
|
||||
iterDbgClosed++;
|
||||
if( iterDbgClosed != m_ClosedList.end() )
|
||||
{
|
||||
f = (*iterDbgClosed)->f;
|
||||
g = (*iterDbgClosed)->g;
|
||||
h = (*iterDbgClosed)->h;
|
||||
|
||||
return &(*iterDbgClosed)->m_UserState;
|
||||
}
|
||||
*/
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Get the number of steps
|
||||
|
||||
int GetStepCount() { return m_Steps; }
|
||||
|
||||
// debugging : count memory allocation and free's
|
||||
int m_AllocateNodeCount;
|
||||
int m_FreeNodeCount;
|
||||
|
||||
|
||||
|
||||
|
||||
// This is called when a search fails or is cancelled to free all used
|
||||
// memory
|
||||
void FreeAllNodes()
|
||||
{
|
||||
// iterate open list and delete all nodes
|
||||
NodeContainer::iterator iterOpen = m_OpenList.begin();
|
||||
|
||||
while( iterOpen != m_OpenList.end() )
|
||||
{
|
||||
Node *n = (*iterOpen);
|
||||
FreeNode( n );
|
||||
|
||||
iterOpen ++;
|
||||
}
|
||||
|
||||
m_OpenList.clear();
|
||||
|
||||
// iterate closed list and delete unused nodes
|
||||
NodeContainer::iterator iterClosed;
|
||||
|
||||
for( iterClosed = m_ClosedList.begin(); iterClosed != m_ClosedList.end(); iterClosed ++ )
|
||||
{
|
||||
Node *n = (*iterClosed);
|
||||
FreeNode( n );
|
||||
}
|
||||
|
||||
m_ClosedList.clear();
|
||||
}
|
||||
|
||||
private: // methods
|
||||
|
||||
// This call is made by the search class when the search ends. A lot of nodes may be
|
||||
// created that are still present when the search ends. They will be deleted by this
|
||||
// routine once the search ends
|
||||
void FreeUnusedNodes()
|
||||
{
|
||||
// iterate open list and delete unused nodes
|
||||
NodeContainer::iterator iterOpen = m_OpenList.begin();
|
||||
|
||||
while( iterOpen != m_OpenList.end() )
|
||||
{
|
||||
Node *n = (*iterOpen);
|
||||
|
||||
if( !n->child )
|
||||
{
|
||||
FreeNode( n );
|
||||
|
||||
n = NULL;
|
||||
}
|
||||
|
||||
iterOpen ++;
|
||||
}
|
||||
|
||||
m_OpenList.clear();
|
||||
|
||||
// iterate closed list and delete unused nodes
|
||||
NodeContainer::iterator iterClosed;
|
||||
|
||||
for( iterClosed = m_ClosedList.begin(); iterClosed != m_ClosedList.end(); iterClosed ++ )
|
||||
{
|
||||
Node *n = (*iterClosed);
|
||||
|
||||
if( !n->child )
|
||||
{
|
||||
FreeNode( n );
|
||||
n = NULL;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
m_ClosedList.clear();
|
||||
}
|
||||
|
||||
// Node memory management
|
||||
Node *AllocateNode()
|
||||
{
|
||||
|
||||
m_AllocateNodeCount ++;
|
||||
#if !USE_FSA_MEMORY
|
||||
Node *p = new Node;
|
||||
return p;
|
||||
#else
|
||||
Node *address = m_FixedSizeAllocator.alloc();
|
||||
|
||||
if( !address )
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Node *p = new (address) Node;
|
||||
return p;
|
||||
#endif
|
||||
}
|
||||
|
||||
void FreeNode( Node *node )
|
||||
{
|
||||
|
||||
m_FreeNodeCount ++;
|
||||
|
||||
#if !USE_FSA_MEMORY
|
||||
delete node;
|
||||
#else
|
||||
m_FixedSizeAllocator.free( node );
|
||||
#endif
|
||||
}
|
||||
|
||||
private: // data
|
||||
|
||||
// Heap (simple vector but used as a heap, cf. Steve Rabin's game gems article)
|
||||
NodeContainer m_OpenList;
|
||||
|
||||
// Closed list is a vector.
|
||||
NodeContainer m_ClosedList;
|
||||
|
||||
// Successors is a vector filled out by the user each type successors to a node
|
||||
// are generated
|
||||
NodeContainer m_Successors;
|
||||
|
||||
// State
|
||||
unsigned int m_State;
|
||||
|
||||
// Counts steps
|
||||
int m_Steps;
|
||||
|
||||
// Start and goal state pointers
|
||||
Node *m_Start;
|
||||
Node *m_Goal;
|
||||
|
||||
Node *m_CurrentSolutionNode;
|
||||
|
||||
// Memory
|
||||
// FixedSizeAllocator<Node> m_FixedSizeAllocator;
|
||||
|
||||
//Debug : need to keep these two iterators around
|
||||
// for the user Dbg functions
|
||||
/*
|
||||
vector< Node* > ::iterator iterDbgOpen;
|
||||
vector< Node* > ::iterator iterDbgClosed;
|
||||
*/
|
||||
|
||||
|
||||
bool m_CancelRequest;
|
||||
void generatePath(RenderObject *go, TileVector g1, TileVector g2, int offx=0, int offy=0);
|
||||
|
||||
bool generatePathSimple(VectorPath& path, const Vector& start, const Vector& end, unsigned int step = 0);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -844,6 +844,7 @@ luaFunc(loadfile_caseinsensitive)
|
|||
MakeTypeCheckFunc(isNode, SCO_PATH);
|
||||
MakeTypeCheckFunc(isObject, SCO_RENDEROBJECT);
|
||||
MakeTypeCheckFunc(isEntity, SCO_ENTITY)
|
||||
MakeTypeCheckFunc(isScriptedEntity, SCO_SCRIPTED_ENTITY)
|
||||
MakeTypeCheckFunc(isShot, SCO_SHOT)
|
||||
MakeTypeCheckFunc(isWeb, SCO_WEB)
|
||||
MakeTypeCheckFunc(isIng, SCO_INGREDIENT)
|
||||
|
@ -3349,7 +3350,9 @@ luaFunc(showInGameMenu)
|
|||
|
||||
luaFunc(hideInGameMenu)
|
||||
{
|
||||
dsq->game->hideInGameMenu();
|
||||
bool skipEffect = getBool(L, 1);
|
||||
bool cancel = getBool(L, 2);
|
||||
dsq->game->hideInGameMenu(!skipEffect, cancel);
|
||||
luaReturnNil();
|
||||
}
|
||||
|
||||
|
@ -5120,20 +5123,20 @@ luaFunc(entity_warpSegments)
|
|||
if (se)
|
||||
se->warpSegments();
|
||||
|
||||
luaReturnNum(0);
|
||||
luaReturnNil()
|
||||
}
|
||||
|
||||
luaFunc(avatar_incrLeaches)
|
||||
{
|
||||
dsq->game->avatar->leaches++;
|
||||
luaReturnNum(0);
|
||||
luaReturnNil();
|
||||
}
|
||||
|
||||
luaFunc(avatar_decrLeaches)
|
||||
{
|
||||
// Not checking for underflow here because this allows some neat tricks.
|
||||
dsq->game->avatar->leaches--;
|
||||
luaReturnNum(0);
|
||||
luaReturnNil();
|
||||
}
|
||||
|
||||
luaFunc(entity_rotateToVel)
|
||||
|
@ -6300,7 +6303,7 @@ luaFunc(entity_grabTarget)
|
|||
Entity *e = entity(L);
|
||||
if (e)
|
||||
e->attachEntity(e->getTargetEntity(), Vector(lua_tointeger(L, 2), lua_tointeger(L, 3)));
|
||||
luaReturnNum(0);
|
||||
luaReturnNil();
|
||||
}
|
||||
|
||||
luaFunc(entity_clampToHit)
|
||||
|
@ -6336,7 +6339,7 @@ luaFunc(entity_switchSurfaceDirection)
|
|||
{
|
||||
ScriptedEntity *e = scriptedEntity(L);
|
||||
if (!e)
|
||||
luaReturnNum(0);
|
||||
luaReturnNil();
|
||||
|
||||
int n = -1;
|
||||
if (lua_isnumber(L, 2))
|
||||
|
@ -6558,7 +6561,7 @@ luaFunc(entity_releaseTarget)
|
|||
Entity *e = entity(L);
|
||||
if (e)
|
||||
e->detachEntity(e->getTargetEntity());
|
||||
luaReturnNum(0);
|
||||
luaReturnNil();
|
||||
}
|
||||
|
||||
luaFunc(esetv)
|
||||
|
@ -6833,7 +6836,7 @@ luaFunc(entity_delete_override)
|
|||
e->setDecayRate(1.0f/time);
|
||||
}
|
||||
}
|
||||
luaReturnInt(0);
|
||||
luaReturnNil();
|
||||
}
|
||||
|
||||
luaFunc(entity_isRidingOnEntity)
|
||||
|
@ -6883,7 +6886,7 @@ luaFunc(entity_setActivation)
|
|||
e->activationRadius = activationRadius;
|
||||
}
|
||||
|
||||
luaReturnNum(0);
|
||||
luaReturnNil();
|
||||
}
|
||||
|
||||
luaFunc(entity_setActivationType)
|
||||
|
@ -6892,7 +6895,7 @@ luaFunc(entity_setActivationType)
|
|||
if (e)
|
||||
e->activationType = (Entity::ActivationType)lua_tointeger(L, 2);
|
||||
|
||||
luaReturnInt(0);
|
||||
luaReturnNil();
|
||||
}
|
||||
|
||||
luaFunc(entity_hasTarget)
|
||||
|
@ -7458,7 +7461,7 @@ luaFunc(filterNearestEntities)
|
|||
filteredEntities.clear();
|
||||
|
||||
const Vector p(lua_tonumber(L, 1), lua_tonumber(L, 2));
|
||||
const float radius = lua_tointeger(L, 3);
|
||||
const float radius = lua_tonumber(L, 3);
|
||||
const Entity *ignore = lua_isuserdata(L, 4) ? entity(L, 4) : NULL;
|
||||
const EntityType et = lua_isnumber(L, 5) ? (EntityType)lua_tointeger(L, 5) : ET_NOTYPE;
|
||||
const DamageType dt = lua_isnumber(L, 6) ? (DamageType)lua_tointeger(L, 6) : DT_NONE;
|
||||
|
@ -7608,7 +7611,7 @@ luaFunc(entity_switchLayer)
|
|||
|
||||
core->switchRenderObjectLayer(e, toLayer);
|
||||
}
|
||||
luaReturnNum(0);
|
||||
luaReturnNil();
|
||||
}
|
||||
|
||||
// entity numSegments segmentLength width texture
|
||||
|
@ -8203,16 +8206,13 @@ luaFunc(isStreamingVoice)
|
|||
|
||||
luaFunc(isObstructed)
|
||||
{
|
||||
int x = lua_tonumber(L, 1);
|
||||
int y = lua_tonumber(L, 2);
|
||||
luaReturnBool(dsq->game->isObstructed(TileVector(Vector(x,y))));
|
||||
int obs = lua_tointeger(L, 3);
|
||||
luaReturnBool(dsq->game->isObstructed(TileVector(Vector(lua_tonumber(L, 1), lua_tonumber(L, 2))), obs ? obs : -1));
|
||||
}
|
||||
|
||||
luaFunc(getObstruction)
|
||||
{
|
||||
int x = lua_tonumber(L, 1);
|
||||
int y = lua_tonumber(L, 2);
|
||||
luaReturnInt(dsq->game->getGrid(TileVector(Vector(x,y))));
|
||||
luaReturnInt(dsq->game->getGrid(TileVector(Vector(lua_tonumber(L, 1), lua_tonumber(L, 2)))));
|
||||
}
|
||||
|
||||
luaFunc(isObstructedBlock)
|
||||
|
@ -8223,9 +8223,9 @@ luaFunc(isObstructedBlock)
|
|||
TileVector t(Vector(x,y));
|
||||
|
||||
bool obs = false;
|
||||
for (int xx = t.x-span; xx < t.x+span; xx++)
|
||||
for (int xx = t.x-span; xx <= t.x+span; xx++)
|
||||
{
|
||||
for (int yy = t.y-span; yy < t.y+span; yy++)
|
||||
for (int yy = t.y-span; yy <= t.y+span; yy++)
|
||||
{
|
||||
if (dsq->game->isObstructed(TileVector(xx, yy)))
|
||||
{
|
||||
|
@ -8436,6 +8436,77 @@ luaFunc(isShuttingDownGameState)
|
|||
luaReturnBool(dsq->game->isShuttingDownGameState());
|
||||
}
|
||||
|
||||
// startx, starty, endx, endy [, step, xtab, ytab]
|
||||
luaFunc(findPath)
|
||||
{
|
||||
VectorPath path;
|
||||
Vector start(lua_tonumber(L, 1), lua_tonumber(L, 2));
|
||||
Vector end(lua_tonumber(L, 3), lua_tonumber(L, 4));
|
||||
if(!dsq->pathFinding.generatePathSimple(path, start, end, lua_tointeger(L, 5)))
|
||||
luaReturnBool(false);
|
||||
|
||||
const unsigned num = path.getNumPathNodes();
|
||||
lua_pushinteger(L, num);
|
||||
|
||||
if(lua_istable(L, 6))
|
||||
lua_pushvalue(L, 6);
|
||||
else
|
||||
lua_createtable(L, num, 0);
|
||||
|
||||
if(lua_istable(L, 7))
|
||||
lua_pushvalue(L, 7);
|
||||
else
|
||||
lua_createtable(L, num, 0);
|
||||
|
||||
// [true, xs, yx]
|
||||
|
||||
for(unsigned i = 0; i < num; ++i)
|
||||
{
|
||||
const VectorPathNode *n = path.getPathNode(i);
|
||||
lua_pushnumber(L, n->value.x); // [num, xs, ys, x]
|
||||
lua_rawseti(L, -3, i+1); // [num, xs, ys]
|
||||
lua_pushnumber(L, n->value.y); // [num, xs, ys, y]
|
||||
lua_rawseti(L, -2, i+1); // [num, xs, ys]
|
||||
}
|
||||
// terminate tables
|
||||
lua_pushnil(L); // [num xs, ys, nil]
|
||||
lua_rawseti(L, -3, num+1); // [num, xs, ys]
|
||||
lua_pushnil(L); // [num, xs, ys, nil]
|
||||
lua_rawseti(L, -2, num+1); // [num, xs, ys]
|
||||
|
||||
return 3; // found path?, x positions, y positions
|
||||
}
|
||||
|
||||
luaFunc(castLine)
|
||||
{
|
||||
Vector v(lua_tonumber(L, 1), lua_tonumber(L, 2));
|
||||
Vector end(lua_tonumber(L, 3), lua_tonumber(L, 4));
|
||||
int tiletype = lua_tointeger(L, 5);
|
||||
if(!tiletype)
|
||||
tiletype = -1;
|
||||
Vector step = end - v;
|
||||
int steps = step.getLength2D() / TILE_SIZE;
|
||||
step.setLength2D(TILE_SIZE);
|
||||
|
||||
for(int i = 0; i < steps; ++i)
|
||||
{
|
||||
if(dsq->game->isObstructed(TileVector(v), tiletype))
|
||||
{
|
||||
lua_pushinteger(L, dsq->game->getGrid(TileVector(v)));
|
||||
lua_pushnumber(L, v.x);
|
||||
lua_pushnumber(L, v.y);
|
||||
return 3;
|
||||
}
|
||||
v += step;
|
||||
}
|
||||
|
||||
lua_pushboolean(L, false);
|
||||
lua_pushnumber(L, v.x);
|
||||
lua_pushnumber(L, v.y);
|
||||
return 3;
|
||||
}
|
||||
|
||||
|
||||
luaFunc(inv_isFull)
|
||||
{
|
||||
IngredientData *data = dsq->continuity.getIngredientDataByName(getString(L, 1));
|
||||
|
@ -9240,6 +9311,8 @@ static const struct {
|
|||
luaRegister(isObstructed),
|
||||
luaRegister(isObstructedBlock),
|
||||
luaRegister(getObstruction),
|
||||
luaRegister(findPath),
|
||||
luaRegister(castLine),
|
||||
|
||||
luaRegister(isFlag),
|
||||
|
||||
|
@ -9649,6 +9722,7 @@ static const struct {
|
|||
luaRegister(isNode),
|
||||
luaRegister(isObject),
|
||||
luaRegister(isEntity),
|
||||
luaRegister(isScriptedEntity),
|
||||
luaRegister(isShot),
|
||||
luaRegister(isWeb),
|
||||
luaRegister(isIng),
|
||||
|
|
|
@ -559,6 +559,8 @@ void UserSettings::load(bool doApply, const std::string &overrideFile)
|
|||
setUsedLocale(system.locale);
|
||||
}
|
||||
|
||||
core->initLocalization();
|
||||
|
||||
if (doApply)
|
||||
apply();
|
||||
}
|
||||
|
|
110
BBGE/Base.cpp
110
BBGE/Base.cpp
|
@ -33,6 +33,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
#if defined(BBGE_BUILD_UNIX)
|
||||
#include <sys/types.h>
|
||||
#include <dirent.h>
|
||||
#include <sys/stat.h>
|
||||
#include <errno.h>
|
||||
#endif
|
||||
|
||||
#if defined(BBGE_BUILD_MACOSX)
|
||||
|
@ -105,7 +107,7 @@ Direction getNextDirClockwise(Direction dir)
|
|||
void sizePowerOf2Texture(int &v)
|
||||
{
|
||||
int p = 8, use=0;
|
||||
do
|
||||
do
|
||||
{
|
||||
use = 1 << p;
|
||||
p++;
|
||||
|
@ -152,6 +154,60 @@ unsigned hash(const std::string &string)
|
|||
|
||||
/* hash * 33 + c */
|
||||
|
||||
|
||||
static unsigned char lowerToUpperTable[256];
|
||||
static unsigned char upperToLowerTable[256];
|
||||
|
||||
void initCharTranslationTables(const std::map<unsigned char, unsigned char>& tab)
|
||||
{
|
||||
for (unsigned int i = 0; i < 256; ++i)
|
||||
{
|
||||
lowerToUpperTable[i] = i;
|
||||
upperToLowerTable[i] = i;
|
||||
}
|
||||
for (unsigned char i = 'a'; i <= 'z'; ++i)
|
||||
{
|
||||
lowerToUpperTable[i] = i - 'a' + 'A';
|
||||
upperToLowerTable[i - 'a' + 'A'] = i;
|
||||
}
|
||||
|
||||
for (std::map<unsigned char, unsigned char>::const_iterator it = tab.begin(); it != tab.end(); ++it)
|
||||
{
|
||||
lowerToUpperTable[it->first] = it->second;
|
||||
upperToLowerTable[it->second] = it->first;
|
||||
}
|
||||
}
|
||||
|
||||
struct TransatableStaticInit
|
||||
{
|
||||
TransatableStaticInit()
|
||||
{
|
||||
std::map<unsigned char, unsigned char> dummy;
|
||||
initCharTranslationTables(dummy);
|
||||
}
|
||||
};
|
||||
static TransatableStaticInit _transtable_static_init;
|
||||
|
||||
static unsigned char charIsUpper(unsigned char c)
|
||||
{
|
||||
return c == upperToLowerTable[c];
|
||||
}
|
||||
|
||||
static unsigned char charIsLower(unsigned char c)
|
||||
{
|
||||
return c == lowerToUpperTable[c];
|
||||
}
|
||||
|
||||
static unsigned char charToLower(unsigned char c)
|
||||
{
|
||||
return upperToLowerTable[c];
|
||||
}
|
||||
|
||||
static unsigned char charToUpper(unsigned char c)
|
||||
{
|
||||
return lowerToUpperTable[c];
|
||||
}
|
||||
|
||||
std::string splitCamelCase(const std::string &input)
|
||||
{
|
||||
std::string result;
|
||||
|
@ -160,7 +216,7 @@ std::string splitCamelCase(const std::string &input)
|
|||
{
|
||||
if (last == 1)
|
||||
{
|
||||
if (input[i] >= 'A' && input[i] <= 'Z')
|
||||
if (charIsUpper(input[i]))
|
||||
{
|
||||
result += ' ';
|
||||
}
|
||||
|
@ -168,7 +224,7 @@ std::string splitCamelCase(const std::string &input)
|
|||
|
||||
result += input[i];
|
||||
|
||||
if (input[i] >= 'A' && input[i] <= 'Z')
|
||||
if (charIsUpper(input[i]))
|
||||
{
|
||||
last = 2;
|
||||
}
|
||||
|
@ -201,22 +257,6 @@ bool isVectorInRect(const Vector &vec, const Vector &coord1, const Vector &coord
|
|||
return (vec.x > coord1.x && vec.x < coord2.x && vec.y > coord1.y && vec.y < coord2.y);
|
||||
}
|
||||
|
||||
static char charToUpper(char c)
|
||||
{
|
||||
if (c >= 'a' && c <= 'z') c = c - 'a' + 'A';
|
||||
if ((unsigned char)c >= 0xE0 && (unsigned char)c <= 0xFF)
|
||||
c = c - 0xE0 + 0xC0;
|
||||
return c;
|
||||
}
|
||||
|
||||
static char charToLower(char c)
|
||||
{
|
||||
if (c >= 'A' && c <= 'Z') c = c-'A' + 'a';
|
||||
if ((unsigned char)c >= 0xC0 && (unsigned char)c <= 0xDF)
|
||||
c = c-0xC0+0xE0;
|
||||
return c;
|
||||
}
|
||||
|
||||
void stringToUpper(std::string &s)
|
||||
{
|
||||
for (int i = 0; i < s.size(); i++)
|
||||
|
@ -1132,6 +1172,38 @@ void triggerBreakpoint()
|
|||
#endif
|
||||
}
|
||||
|
||||
bool createDir(const std::string& d)
|
||||
{
|
||||
bool success = false;
|
||||
int err = 0;
|
||||
#if defined(BBGE_BUILD_UNIX)
|
||||
if (!mkdir(d.c_str(), S_IRWXU))
|
||||
success = true;
|
||||
else
|
||||
{
|
||||
err = errno;
|
||||
if (err == EEXIST)
|
||||
success = true;
|
||||
}
|
||||
#elif defined(BBGE_BUILD_WINDOWS)
|
||||
if (CreateDirectoryA(d.c_str(), NULL))
|
||||
success = true;
|
||||
else
|
||||
{
|
||||
err = GetLastError();
|
||||
if(err == ERROR_ALREADY_EXISTS)
|
||||
success = true;
|
||||
}
|
||||
#endif
|
||||
if (!success)
|
||||
{
|
||||
std::ostringstream os;
|
||||
os << "Failed to create directory: [" << d << "], error code: " << err;
|
||||
debugLog(os.str());
|
||||
}
|
||||
return success;
|
||||
}
|
||||
|
||||
|
||||
#include "DeflateCompressor.h"
|
||||
|
||||
|
|
|
@ -204,6 +204,7 @@ struct IntPair
|
|||
std::string numToZeroString(int num, int zeroes);
|
||||
bool chance(int perc);
|
||||
bool chancef(float p);
|
||||
void initCharTranslationTables(const std::map<unsigned char, unsigned char>& tab);
|
||||
void stringToUpper(std::string &s);
|
||||
void stringToLower(std::string &s);
|
||||
void stringToLowerUserData(std::string &s);
|
||||
|
@ -301,5 +302,7 @@ std::string spacesToUnderscores(const std::string &str);
|
|||
|
||||
void triggerBreakpoint();
|
||||
|
||||
bool createDir(const std::string& d);
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
@ -11,10 +11,10 @@
|
|||
|
||||
void cocoaMessageBox(const std::string &title, const std::string &msg)
|
||||
{
|
||||
@autoreleasepool {
|
||||
NSString *nstitle = [NSString stringWithUTF8String:title.c_str()];
|
||||
NSString *nsmsg = [NSString stringWithUTF8String:msg.c_str()];
|
||||
NSRunAlertPanel(nstitle, nsmsg, @"OK", nil, nil);
|
||||
[nsmsg release];
|
||||
[nstitle release];
|
||||
NSRunAlertPanel(nstitle, nsmsg, nil, nil, nil);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -899,7 +899,7 @@ Core::Core(const std::string &filesystem, const std::string& extraDataDir, int n
|
|||
envr = "."; // oh well.
|
||||
const std::string home(envr);
|
||||
|
||||
mkdir(home.c_str(), 0700); // just in case.
|
||||
createDir(home); // just in case.
|
||||
|
||||
// "/home/icculus/.Aquaria" or something. Spaces are okay.
|
||||
#ifdef BBGE_BUILD_MACOSX
|
||||
|
@ -909,11 +909,12 @@ Core::Core(const std::string &filesystem, const std::string& extraDataDir, int n
|
|||
#endif
|
||||
|
||||
userDataFolder = home + "/" + prefix + userDataSubFolder;
|
||||
mkdir(userDataFolder.c_str(), 0700);
|
||||
createDir(userDataFolder);
|
||||
debugLogPath = userDataFolder + "/";
|
||||
mkdir((userDataFolder + "/screenshots").c_str(), 0700);
|
||||
createDir(userDataFolder + "/screenshots");
|
||||
std::string prefpath(getPreferencesFolder());
|
||||
mkdir(prefpath.c_str(), 0700);
|
||||
createDir(prefpath);
|
||||
|
||||
#else
|
||||
debugLogPath = "";
|
||||
userDataFolder = ".";
|
||||
|
@ -929,7 +930,7 @@ Core::Core(const std::string &filesystem, const std::string& extraDataDir, int n
|
|||
// not sure about this right now -- FG
|
||||
/*else
|
||||
{
|
||||
puts("Working directory is not writeable...");
|
||||
puts("Working directory is not writable...");
|
||||
char pathbuf[MAX_PATH];
|
||||
if(SHGetSpecialFolderPathA(NULL, &pathbuf[0], CSIDL_APPDATA, 0))
|
||||
{
|
||||
|
@ -941,7 +942,7 @@ Core::Core(const std::string &filesystem, const std::string& extraDataDir, int n
|
|||
userDataFolder[i] = '/';
|
||||
debugLogPath = userDataFolder + "/";
|
||||
puts(("Using \"" + userDataFolder + "\" as user directory.").c_str());
|
||||
CreateDirectoryA(userDataFolder.c_str(), NULL);
|
||||
createDir(userDataFolder);
|
||||
checkWritable(userDataFolder, true, true);
|
||||
}
|
||||
else
|
||||
|
@ -1293,6 +1294,8 @@ void Core::init()
|
|||
|
||||
initInputCodeMap();
|
||||
|
||||
initLocalization();
|
||||
|
||||
//glfwSetWindowSizeCallback(lockWindowSize);
|
||||
}
|
||||
|
||||
|
@ -3558,7 +3561,7 @@ void Core::pollEvents()
|
|||
case SDL_KEYDOWN:
|
||||
{
|
||||
#if __APPLE__
|
||||
if ((event.key.keysym.sym == SDLK_q) && (event.key.keysym.mod & KMOD_META))
|
||||
if ((event.key.keysym.sym == SDLK_q) && (event.key.keysym.mod & KMOD_GUI))
|
||||
#else
|
||||
if ((event.key.keysym.sym == SDLK_F4) && (event.key.keysym.mod & KMOD_ALT))
|
||||
#endif
|
||||
|
@ -5164,3 +5167,23 @@ void Core::setupFileAccess()
|
|||
debugLog("Done");
|
||||
#endif
|
||||
}
|
||||
|
||||
void Core::initLocalization()
|
||||
{
|
||||
InStream in(localisePath("data/localecase.txt"));
|
||||
if(!in)
|
||||
{
|
||||
debugLog("data/localecase.txt does not exist, using internal locale data");
|
||||
return;
|
||||
}
|
||||
|
||||
std::string low, up;
|
||||
std::map<unsigned char, unsigned char> trans;
|
||||
while(in)
|
||||
{
|
||||
in >> low >> up;
|
||||
trans[low[0]] = up[0];
|
||||
}
|
||||
initCharTranslationTables(trans);
|
||||
}
|
||||
|
||||
|
|
|
@ -1310,6 +1310,8 @@ public:
|
|||
|
||||
virtual void onBackgroundUpdate();
|
||||
|
||||
void initLocalization();
|
||||
|
||||
protected:
|
||||
|
||||
std::string fpsDebugString;
|
||||
|
|
|
@ -220,17 +220,10 @@ void VectorPath::splice(const VectorPath &path, int sz)
|
|||
}
|
||||
}
|
||||
|
||||
void VectorPath::removeNodes(int startInclusive, int endInclusive)
|
||||
void VectorPath::removeNodes(unsigned int startInclusive, unsigned int endInclusive)
|
||||
{
|
||||
std::vector<VectorPathNode> copy = pathNodes;
|
||||
pathNodes.clear();
|
||||
for (int i = 0; i < copy.size(); i++)
|
||||
{
|
||||
if (i < startInclusive || i > endInclusive)
|
||||
{
|
||||
pathNodes.push_back(copy[i]);
|
||||
}
|
||||
}
|
||||
// end iterator is exclusive, so max. end + 1
|
||||
pathNodes.erase(pathNodes.begin() + startInclusive, pathNodes.begin() + std::min<size_t>(pathNodes.size(), endInclusive+1));
|
||||
}
|
||||
|
||||
void VectorPath::prepend(const VectorPath &path)
|
||||
|
@ -273,15 +266,10 @@ void VectorPath::cut(int n)
|
|||
}
|
||||
}
|
||||
|
||||
void VectorPath::removeNode(int t)
|
||||
void VectorPath::removeNode(unsigned int t)
|
||||
{
|
||||
std::vector<VectorPathNode> copy = pathNodes;
|
||||
pathNodes.clear();
|
||||
for (int i = 0; i < copy.size(); i++)
|
||||
{
|
||||
if (i != t)
|
||||
pathNodes.push_back(copy[i]);
|
||||
}
|
||||
if(t < pathNodes.size())
|
||||
pathNodes.erase(pathNodes.begin() + t);
|
||||
}
|
||||
|
||||
Vector VectorPath::getValue(float usePercent)
|
||||
|
|
|
@ -426,11 +426,11 @@ public:
|
|||
void splice(const VectorPath &path, int sz);
|
||||
void prepend(const VectorPath &path);
|
||||
void append(const VectorPath &path);
|
||||
void removeNode(int i);
|
||||
void removeNode(unsigned int i);
|
||||
void calculatePercentages();
|
||||
float getLength();
|
||||
void realPercentageCalc();
|
||||
void removeNodes(int startInclusive, int endInclusive);
|
||||
void removeNodes(unsigned int startInclusive, unsigned int endInclusive);
|
||||
float getSubSectionLength(int startIncl, int endIncl);
|
||||
protected:
|
||||
std::vector <VectorPathNode> pathNodes;
|
||||
|
|
|
@ -486,6 +486,7 @@ SET(BBGE_SRCS
|
|||
${EXTLIBDIR}/tinyxmlparser.cpp
|
||||
${EXTLIBDIR}/FileAPI.cpp
|
||||
${EXTLIBDIR}/minihttp.cpp
|
||||
${EXTLIBDIR}/JPS.h
|
||||
)
|
||||
|
||||
SET(ZLIB_SRCS
|
||||
|
|
682
ExternalLibs/JPS.h
Normal file
682
ExternalLibs/JPS.h
Normal file
|
@ -0,0 +1,682 @@
|
|||
#ifndef JUMP_POINT_SEARCH_H
|
||||
#define JUMP_POINT_SEARCH_H
|
||||
|
||||
// Public domain Jump Point Search implementation by False.Genesis
|
||||
// Please keep the following source information intact when you use this file in your own projects:
|
||||
// This file originates from: https://github.com/fgenesis/jps
|
||||
// Based on the paper http://users.cecs.anu.edu.au/~dharabor/data/papers/harabor-grastien-aaai11.pdf
|
||||
// by Daniel Harabor & Alban Grastien.
|
||||
// Jumper (https://github.com/Yonaba/Jumper) and PathFinding.js (https://github.com/qiao/PathFinding.js)
|
||||
// served as reference for this implementation.
|
||||
|
||||
// ====== COMPILE CONFIG ======
|
||||
|
||||
// If this is defined, compare all jumps against recursive reference implementation (only if _DEBUG is defined)
|
||||
//#define JPS_VERIFY
|
||||
|
||||
// NYI
|
||||
//#define JPS_USE_HASHMAP
|
||||
|
||||
// ============================
|
||||
|
||||
// Usage:
|
||||
/*
|
||||
// Define a class that overloads `operator()(x, y) const`, returning a value that can be treated as boolean.
|
||||
// You are responsible for bounds checking!
|
||||
// You want your operator() to be as fast as possible, as it will be called a LOT.
|
||||
|
||||
struct MyGrid
|
||||
{
|
||||
inline bool operator()(unsigned x, unsigned y) const
|
||||
{
|
||||
if(x < width && y < height) // Unsigned will wrap if < 0
|
||||
... return true if terrain at (x, y) is walkable.
|
||||
}
|
||||
unsigned width, height;
|
||||
};
|
||||
|
||||
// Then you can retrieve a path:
|
||||
|
||||
MyGrid grid;
|
||||
// ... set grid width, height, and whatever
|
||||
unsigned step = 0; // set this to 1 if you want a detailed single-step path
|
||||
// (e.g. if you plan to further mangle the path yourself),
|
||||
// or any other higher value to output every Nth position.
|
||||
JPS::PathVector path; // The resulting path will go here.
|
||||
|
||||
|
||||
// Single-call interface:
|
||||
bool found = JPS::findPath(path, grid, startx, starty, endx, endy, step);
|
||||
|
||||
|
||||
// Alternatively, if you want more control:
|
||||
|
||||
JPS::Searcher<MyGrid> search(grid);
|
||||
while(true)
|
||||
{
|
||||
// ..stuff happening ...
|
||||
|
||||
// build path incrementally from waypoints
|
||||
JPS::Position a, b, c, d; // some waypoints
|
||||
search.findPath(path, a, b);
|
||||
search.findPath(path, b, c);
|
||||
search.findPath(path, c, d);
|
||||
|
||||
if(!search.findPath(path2, JPS::Pos(startx, starty), JPS::Pos(endx, endy), step))
|
||||
{
|
||||
// ...handle failure...
|
||||
}
|
||||
// ... more stuff happening ...
|
||||
|
||||
// At convenient times, you can clean up accumulated nodes to reclaim memory.
|
||||
// This is never necessary, but performance will drop if too many cached nodes exist.
|
||||
if(mapWasReloaded)
|
||||
search.freeMemory();
|
||||
}
|
||||
|
||||
// Further remarks can be found at the bottom of this file.
|
||||
*/
|
||||
|
||||
|
||||
#include <algorithm>
|
||||
#include <vector>
|
||||
#include <map>
|
||||
#include <cmath>
|
||||
|
||||
#ifdef _DEBUG
|
||||
#include <cassert>
|
||||
#define JPS_ASSERT(cond) assert(cond)
|
||||
#else
|
||||
#define JPS_ASSERT(cond)
|
||||
#endif
|
||||
|
||||
#ifdef JPS_USE_HASHMAP
|
||||
#include "JPSUtilHashmap.h"
|
||||
#endif
|
||||
|
||||
namespace JPS {
|
||||
|
||||
struct Position
|
||||
{
|
||||
unsigned x, y;
|
||||
|
||||
inline bool operator==(const Position& p) const
|
||||
{
|
||||
return x == p.x && y == p.y;
|
||||
}
|
||||
inline bool operator!=(const Position& p) const
|
||||
{
|
||||
return x != p.x || y != p.y;
|
||||
}
|
||||
|
||||
// for sorting
|
||||
inline bool operator<(const Position& p) const
|
||||
{
|
||||
return y < p.y || (y == p.y && x < p.x);
|
||||
}
|
||||
|
||||
inline bool isValid() const { return x != unsigned(-1); }
|
||||
};
|
||||
|
||||
typedef std::vector<Position> PathVector;
|
||||
|
||||
// ctor function to keep Position a real POD struct.
|
||||
inline static Position Pos(unsigned x, unsigned y)
|
||||
{
|
||||
Position p;
|
||||
p.x = x;
|
||||
p.y = y;
|
||||
return p;
|
||||
}
|
||||
|
||||
namespace Internal {
|
||||
|
||||
static const Position npos = Pos(-1, -1);
|
||||
|
||||
class Node
|
||||
{
|
||||
public:
|
||||
Node(const Position& p) : f(0), g(0), pos(p), parent(0), flags(0) {}
|
||||
unsigned f, g;
|
||||
const Position pos;
|
||||
const Node *parent;
|
||||
|
||||
inline void setOpen() { flags |= 1; }
|
||||
inline void setClosed() { flags |= 2; }
|
||||
inline unsigned char isOpen() const { return flags & 1; }
|
||||
inline unsigned char isClosed() const { return flags & 2; }
|
||||
inline void clearState() { f = 0; g = 0, parent = 0; flags = 0; }
|
||||
|
||||
private:
|
||||
unsigned char flags;
|
||||
|
||||
bool operator==(const Node& o); // not implemented, nodes should not be compared
|
||||
};
|
||||
} // end namespace Internal
|
||||
|
||||
namespace Heuristic
|
||||
{
|
||||
inline unsigned Manhattan(const Internal::Node *a, const Internal::Node *b)
|
||||
{
|
||||
return abs(int(a->pos.x - b->pos.x)) + abs(int(a->pos.y - b->pos.y));
|
||||
}
|
||||
|
||||
inline unsigned Euclidean(const Internal::Node *a, const Internal::Node *b)
|
||||
{
|
||||
float fx = float(int(a->pos.x - b->pos.x));
|
||||
float fy = float(int(a->pos.y - b->pos.y));
|
||||
return unsigned(int(sqrtf(fx*fx + fy*fy)));
|
||||
}
|
||||
} // end namespace heuristic
|
||||
|
||||
namespace Internal {
|
||||
|
||||
typedef std::vector<Node*> NodeVector;
|
||||
|
||||
class OpenList
|
||||
{
|
||||
public:
|
||||
inline void push(Node *node)
|
||||
{
|
||||
JPS_ASSERT(node);
|
||||
nodes.push_back(node);
|
||||
std::push_heap(nodes.begin(), nodes.end(), _compare);
|
||||
}
|
||||
inline Node *pop()
|
||||
{
|
||||
std::pop_heap(nodes.begin(), nodes.end(), _compare);
|
||||
Node *node = nodes.back();
|
||||
nodes.pop_back();
|
||||
return node;
|
||||
}
|
||||
inline bool empty() const
|
||||
{
|
||||
return nodes.empty();
|
||||
}
|
||||
inline void clear()
|
||||
{
|
||||
nodes.clear();
|
||||
}
|
||||
inline void fixup(const Node *item)
|
||||
{
|
||||
std::make_heap(nodes.begin(), nodes.end(), _compare);
|
||||
}
|
||||
|
||||
protected:
|
||||
static inline bool _compare(const Node *a, const Node *b)
|
||||
{
|
||||
return a->f > b->f;
|
||||
}
|
||||
NodeVector nodes;
|
||||
};
|
||||
|
||||
template <typename GRID> class Searcher
|
||||
{
|
||||
public:
|
||||
Searcher(const GRID& g)
|
||||
: grid(g), skip(1)
|
||||
{}
|
||||
|
||||
void freeMemory();
|
||||
|
||||
bool findPath(PathVector& path, Position start, Position end, unsigned step = 0);
|
||||
inline void setSkip(int s) { skip = std::max(1, s); }
|
||||
|
||||
private:
|
||||
|
||||
#ifdef JPS_USE_HASHMAP
|
||||
typedef Util::HashMap<Position, Node> NodeGrid;
|
||||
#else
|
||||
typedef std::map<Position, Node> NodeGrid;
|
||||
#endif
|
||||
|
||||
const GRID& grid;
|
||||
Node *endNode;
|
||||
int skip;
|
||||
OpenList open;
|
||||
|
||||
NodeGrid nodegrid;
|
||||
|
||||
Node *getNode(const Position& pos);
|
||||
void identifySuccessors(const Node *n);
|
||||
unsigned findNeighbors(const Node *n, Position *wptr) const;
|
||||
Position jumpP(const Position& p, const Position& src) const;
|
||||
Position jumpD(Position p, int dx, int dy) const;
|
||||
Position jumpX(Position p, int dx) const;
|
||||
Position jumpY(Position p, int dy) const;
|
||||
void generatePath(PathVector& path, unsigned step) const;
|
||||
#ifdef JPS_VERIFY
|
||||
Position jumpPRec(const Position& p, const Position& src) const;
|
||||
#endif
|
||||
};
|
||||
|
||||
template <typename GRID> inline Node *Searcher<GRID>::getNode(const Position& pos)
|
||||
{
|
||||
JPS_ASSERT(grid(pos.x, pos.y));
|
||||
return &nodegrid.insert(std::make_pair(pos, Node(pos))).first->second;
|
||||
}
|
||||
|
||||
template <typename GRID> Position Searcher<GRID>::jumpP(const Position &p, const Position& src) const
|
||||
{
|
||||
JPS_ASSERT(grid(p.x, p.y));
|
||||
|
||||
int dx = int(p.x - src.x);
|
||||
int dy = int(p.y - src.y);
|
||||
JPS_ASSERT(dx || dy);
|
||||
|
||||
if(dx && dy)
|
||||
return jumpD(p, dx, dy);
|
||||
else if(dx)
|
||||
return jumpX(p, dx);
|
||||
else if(dy)
|
||||
return jumpY(p, dy);
|
||||
|
||||
// not reached
|
||||
JPS_ASSERT(false);
|
||||
return npos;
|
||||
}
|
||||
|
||||
template <typename GRID> Position Searcher<GRID>::jumpD(Position p, int dx, int dy) const
|
||||
{
|
||||
JPS_ASSERT(grid(p.x, p.y));
|
||||
JPS_ASSERT(dx && dy);
|
||||
|
||||
const Position& endpos = endNode->pos;
|
||||
|
||||
while(true)
|
||||
{
|
||||
if(p == endpos)
|
||||
return p;
|
||||
|
||||
const unsigned x = p.x;
|
||||
const unsigned y = p.y;
|
||||
|
||||
if( (grid(x-dx, y+dy) && !grid(x-dx, y)) || (grid(x+dx, y-dy) && !grid(x, y-dy)) )
|
||||
return p;
|
||||
|
||||
const bool gdx = grid(x+dx, y);
|
||||
const bool gdy = grid(x, y+dy);
|
||||
|
||||
if(gdx && jumpX(Pos(x+dx, y), dx).isValid())
|
||||
return p;
|
||||
|
||||
if(gdy && jumpY(Pos(x, y+dy), dy).isValid())
|
||||
return p;
|
||||
|
||||
if((gdx || gdy) && grid(x+dx, y+dy))
|
||||
{
|
||||
p.x += dx;
|
||||
p.y += dy;
|
||||
}
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
||||
return npos;
|
||||
}
|
||||
|
||||
template <typename GRID> inline Position Searcher<GRID>::jumpX(Position p, int dx) const
|
||||
{
|
||||
JPS_ASSERT(dx);
|
||||
JPS_ASSERT(grid(p.x, p.y));
|
||||
|
||||
const unsigned y = p.y;
|
||||
const Position& endpos = endNode->pos;
|
||||
const int skip = this->skip;
|
||||
|
||||
unsigned a = ~((!!grid(p.x, y+skip)) | ((!!grid(p.x, y-skip)) << 1));
|
||||
|
||||
while(true)
|
||||
{
|
||||
const unsigned xx = p.x + dx;
|
||||
const unsigned b = (!!grid(xx, y+skip)) | ((!!grid(xx, y-skip)) << 1);
|
||||
|
||||
if((b & a) || p == endpos)
|
||||
return p;
|
||||
if(!grid(xx, y))
|
||||
return npos;
|
||||
|
||||
p.x += dx;
|
||||
a = ~b;
|
||||
}
|
||||
}
|
||||
|
||||
template <typename GRID> inline Position Searcher<GRID>::jumpY(Position p, int dy) const
|
||||
{
|
||||
JPS_ASSERT(dy);
|
||||
JPS_ASSERT(grid(p.x, p.y));
|
||||
|
||||
const unsigned x = p.x;
|
||||
const Position& endpos = endNode->pos;
|
||||
const int skip = this->skip;
|
||||
|
||||
unsigned a = ~((!!grid(x+skip, p.y)) | ((!!grid(x-skip, p.y)) << 1));
|
||||
|
||||
while(true)
|
||||
{
|
||||
const unsigned yy = p.y + dy;
|
||||
const unsigned b = (!!grid(x+skip, yy)) | ((!!grid(x-skip, yy)) << 1);
|
||||
|
||||
if((a & b) || p == endpos)
|
||||
return p;
|
||||
if(!grid(x, yy))
|
||||
return npos;
|
||||
|
||||
p.y += dy;
|
||||
a = ~b;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef JPS_VERIFY
|
||||
// Recursive reference implementation -- for comparison only
|
||||
template <typename GRID> Position Searcher<GRID>::jumpPRec(const Position& p, const Position& src) const
|
||||
{
|
||||
unsigned x = p.x;
|
||||
unsigned y = p.y;
|
||||
if(!grid(x, y))
|
||||
return npos;
|
||||
if(p == endNode->pos)
|
||||
return p;
|
||||
|
||||
int dx = int(x - src.x);
|
||||
int dy = int(y - src.y);
|
||||
JPS_ASSERT(dx || dy);
|
||||
|
||||
if(dx && dy)
|
||||
{
|
||||
if( (grid(x-dx, y+dy) && !grid(x-dx, y)) || (grid(x+dx, y-dy) && !grid(x, y-dy)) )
|
||||
return p;
|
||||
}
|
||||
else if(dx)
|
||||
{
|
||||
if( (grid(x+dx, y+skip) && !grid(x, y+skip)) || (grid(x+dx, y-skip) && !grid(x, y-skip)) )
|
||||
return p;
|
||||
}
|
||||
else if(dy)
|
||||
{
|
||||
if( (grid(x+skip, y+dy) && !grid(x+skip, y)) || (grid(x-skip, y+dy) && !grid(x-skip, y)) )
|
||||
return p;
|
||||
}
|
||||
|
||||
if(dx && dy)
|
||||
{
|
||||
if(jumpPRec(Pos(x+dx, y), p).isValid())
|
||||
return p;
|
||||
if(jumpPRec(Pos(x, y+dy), p).isValid())
|
||||
return p;
|
||||
}
|
||||
|
||||
if(grid(x+dx, y) || grid(x, y+dy))
|
||||
return jumpPRec(Pos(x+dx, y+dy), p);
|
||||
|
||||
return npos;
|
||||
}
|
||||
#endif
|
||||
|
||||
template <typename GRID> unsigned Searcher<GRID>::findNeighbors(const Node *n, Position *wptr) const
|
||||
{
|
||||
Position *w = wptr;
|
||||
const unsigned x = n->pos.x;
|
||||
const unsigned y = n->pos.y;
|
||||
|
||||
#define JPS_CHECKGRID(dx, dy) (grid(x+(dx), y+(dy)))
|
||||
#define JPS_ADDPOS(dx, dy) do { *w++ = Pos(x+(dx), y+(dy)); } while(0)
|
||||
#define JPS_ADDPOS_CHECK(dx, dy) do { if(JPS_CHECKGRID(dx, dy)) JPS_ADDPOS(dx, dy); } while(0)
|
||||
#define JPS_ADDPOS_NO_TUNNEL(dx, dy) do { if(grid(x+(dx),y) || grid(x,y+(dy))) JPS_ADDPOS_CHECK(dx, dy); } while(0)
|
||||
|
||||
if(!n->parent)
|
||||
{
|
||||
// straight moves
|
||||
JPS_ADDPOS_CHECK(-skip, 0);
|
||||
JPS_ADDPOS_CHECK(0, -skip);
|
||||
JPS_ADDPOS_CHECK(0, skip);
|
||||
JPS_ADDPOS_CHECK(skip, 0);
|
||||
|
||||
// diagonal moves + prevent tunneling
|
||||
JPS_ADDPOS_NO_TUNNEL(-skip, -skip);
|
||||
JPS_ADDPOS_NO_TUNNEL(-skip, skip);
|
||||
JPS_ADDPOS_NO_TUNNEL(skip, -skip);
|
||||
JPS_ADDPOS_NO_TUNNEL(skip, skip);
|
||||
|
||||
return unsigned(w - wptr);
|
||||
}
|
||||
|
||||
// jump directions (both -1, 0, or 1)
|
||||
int dx = int(x - n->parent->pos.x);
|
||||
dx /= std::max(abs(dx), 1);
|
||||
dx *= skip;
|
||||
int dy = int(y - n->parent->pos.y);
|
||||
dy /= std::max(abs(dy), 1);
|
||||
dy *= skip;
|
||||
|
||||
if(dx && dy)
|
||||
{
|
||||
// diagonal
|
||||
// natural neighbors
|
||||
bool walkX = false;
|
||||
bool walkY = false;
|
||||
if((walkX = grid(x+dx, y)))
|
||||
*w++ = Pos(x+dx, y);
|
||||
if((walkY = grid(x, y+dy)))
|
||||
*w++ = Pos(x, y+dy);
|
||||
|
||||
if(walkX || walkY)
|
||||
JPS_ADDPOS_CHECK(dx, dy);
|
||||
|
||||
// forced neighbors
|
||||
if(walkY && !JPS_CHECKGRID(-dx,0))
|
||||
JPS_ADDPOS_CHECK(-dx, dy);
|
||||
|
||||
if(walkX && !JPS_CHECKGRID(0,-dy))
|
||||
JPS_ADDPOS_CHECK(dx, -dy);
|
||||
}
|
||||
else if(dx)
|
||||
{
|
||||
// along X axis
|
||||
if(JPS_CHECKGRID(dx, 0))
|
||||
{
|
||||
JPS_ADDPOS(dx, 0);
|
||||
|
||||
// Forced neighbors (+ prevent tunneling)
|
||||
if(!JPS_CHECKGRID(0, skip))
|
||||
JPS_ADDPOS_CHECK(dx, skip);
|
||||
if(!JPS_CHECKGRID(0,-skip))
|
||||
JPS_ADDPOS_CHECK(dx,-skip);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
else if(dy)
|
||||
{
|
||||
// along Y axis
|
||||
if(JPS_CHECKGRID(0, dy))
|
||||
{
|
||||
JPS_ADDPOS(0, dy);
|
||||
|
||||
// Forced neighbors (+ prevent tunneling)
|
||||
if(!JPS_CHECKGRID(skip, 0))
|
||||
JPS_ADDPOS_CHECK(skip, dy);
|
||||
if(!JPS_CHECKGRID(-skip, 0))
|
||||
JPS_ADDPOS_CHECK(-skip,dy);
|
||||
}
|
||||
}
|
||||
#undef JPS_ADDPOS
|
||||
#undef JPS_ADDPOS_CHECK
|
||||
#undef JPS_ADDPOS_NO_TUNNEL
|
||||
#undef JPS_CHECKGRID
|
||||
|
||||
return unsigned(w - wptr);
|
||||
}
|
||||
|
||||
template <typename GRID> void Searcher<GRID>::identifySuccessors(const Node *n)
|
||||
{
|
||||
Position buf[8];
|
||||
const int num = findNeighbors(n, &buf[0]);
|
||||
for(int i = num-1; i >= 0; --i)
|
||||
{
|
||||
// Invariant: A node is only a valid neighbor if the corresponding grid position is walkable (asserted in jumpP)
|
||||
Position jp = jumpP(buf[i], n->pos);
|
||||
#ifdef JPS_VERIFY
|
||||
JPS_ASSERT(jp == jumpPRec(buf[i], n->pos));
|
||||
#endif
|
||||
if(!jp.isValid())
|
||||
continue;
|
||||
|
||||
// Now that the grid position is definitely a valid jump point, we have to create the actual node.
|
||||
Node *jn = getNode(jp);
|
||||
JPS_ASSERT(jn && jn != n);
|
||||
if(!jn->isClosed())
|
||||
{
|
||||
unsigned extraG = Heuristic::Euclidean(jn, n);
|
||||
unsigned newG = n->g + extraG;
|
||||
if(!jn->isOpen() || newG < jn->g)
|
||||
{
|
||||
jn->g = newG;
|
||||
jn->f = jn->g + Heuristic::Manhattan(jn, endNode);
|
||||
jn->parent = n;
|
||||
if(!jn->isOpen())
|
||||
{
|
||||
open.push(jn);
|
||||
jn->setOpen();
|
||||
}
|
||||
else
|
||||
open.fixup(jn);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
template <typename GRID> void Searcher<GRID>::generatePath(PathVector& path, unsigned step) const
|
||||
{
|
||||
size_t offset = path.size();
|
||||
if(step)
|
||||
{
|
||||
const Node *next = endNode;
|
||||
const Node *prev = endNode->parent;
|
||||
do
|
||||
{
|
||||
const unsigned x = next->pos.x, y = next->pos.y;
|
||||
int dx = int(prev->pos.x - x);
|
||||
int dy = int(prev->pos.y - y);
|
||||
JPS_ASSERT(!dx || !dy || abs(dx) == abs(dy)); // known to be straight, if diagonal
|
||||
const int steps = std::max(abs(dx), abs(dy));
|
||||
dx /= std::max(abs(dx), 1);
|
||||
dy /= std::max(abs(dy), 1);
|
||||
dx *= int(step);
|
||||
dy *= int(step);
|
||||
int dxa = 0, dya = 0;
|
||||
for(int i = 0; i < steps; i += step)
|
||||
{
|
||||
path.push_back(Pos(x+dxa, y+dya));
|
||||
dxa += dx;
|
||||
dya += dy;
|
||||
}
|
||||
next = prev;
|
||||
prev = prev->parent;
|
||||
}
|
||||
while (prev);
|
||||
}
|
||||
else
|
||||
{
|
||||
const Node *next = endNode;
|
||||
do
|
||||
{
|
||||
path.push_back(next->pos);
|
||||
next = next->parent;
|
||||
}
|
||||
while (next->parent);
|
||||
}
|
||||
std::reverse(path.begin() + offset, path.end());
|
||||
}
|
||||
|
||||
template <typename GRID> bool Searcher<GRID>::findPath(PathVector& path, Position start, Position end, unsigned step /* = 0 */)
|
||||
{
|
||||
for(NodeGrid::iterator it = nodegrid.begin(); it != nodegrid.end(); ++it)
|
||||
it->second.clearState();
|
||||
|
||||
// If skip is > 1, make sure the points are aligned so that the search will always hit them
|
||||
start.x = (start.x / skip) * skip;
|
||||
start.y = (start.y / skip) * skip;
|
||||
end.x = (end.x / skip) * skip;
|
||||
end.y = (end.y / skip) * skip;
|
||||
|
||||
if(start == end)
|
||||
{
|
||||
// There is only a path if this single position is walkable.
|
||||
// But since the starting position is omitted, there is nothing to do here.
|
||||
return grid(end.x, end.y);
|
||||
}
|
||||
|
||||
// If start or end point are obstructed, don't even start
|
||||
if(!grid(start.x, start.y) || !grid(end.x, end.y))
|
||||
return false;
|
||||
|
||||
open.push(getNode(start));
|
||||
endNode = getNode(end);
|
||||
JPS_ASSERT(endNode);
|
||||
|
||||
do
|
||||
{
|
||||
Node *n = open.pop();
|
||||
n->setClosed();
|
||||
if(n == endNode)
|
||||
{
|
||||
open.clear();
|
||||
generatePath(path, step);
|
||||
return true;
|
||||
}
|
||||
identifySuccessors(n);
|
||||
}
|
||||
while (!open.empty());
|
||||
return false;
|
||||
}
|
||||
|
||||
template<typename GRID> void Searcher<GRID>::freeMemory()
|
||||
{
|
||||
NodeGrid v;
|
||||
nodegrid.swap(v);
|
||||
// other containers known to be empty.
|
||||
}
|
||||
|
||||
} // end namespace Internal
|
||||
|
||||
using Internal::Searcher;
|
||||
|
||||
|
||||
// Single-call convenience function
|
||||
//
|
||||
// path: If the function returns true, the path is stored in this vector.
|
||||
// The path does NOT contain the starting position, i.e. if start and end are the same,
|
||||
// the resulting path has no elements.
|
||||
// The vector does not have to be empty. The function does not clear it;
|
||||
// instead, the new path positions are appended at the end.
|
||||
// This allows building a path incrementally.
|
||||
//
|
||||
// grid: expected to overload operator()(x, y), return true if position is walkable, false if not.
|
||||
//
|
||||
// step: If 0, only return waypoints.
|
||||
// If 1, create exhaustive step-by-step path.
|
||||
// If N, put in one position for N blocks travelled, or when a waypoint is hit.
|
||||
// All returned points are guaranteed to be on a straight line (vertically, horizontally, or diagonally),
|
||||
// and there is no obstruction between any two consecutive points.
|
||||
// Note that this parameter does NOT influence the pathfinding in any way;
|
||||
// it only controls the coarseness of the output path.
|
||||
//
|
||||
// skip: If you know your map data well enough, this can be set to > 1 to speed up pathfinding even more.
|
||||
// Warning: Start and end positions will be rounded down to the nearest <skip>-aligned position,
|
||||
// so make sure to give appropriate positions so they do not end up in a wall.
|
||||
// This will also skip through walls if they are less than <skip> blocks thick at any reachable position.
|
||||
template <typename GRID> bool findPath(PathVector& path, const GRID& grid, unsigned startx, unsigned starty, unsigned endx, unsigned endy, unsigned step = 0, int skip = 1)
|
||||
{
|
||||
JPS_ASSERT(skip >= 1);
|
||||
Searcher<GRID> search(grid);
|
||||
search.setSkip(skip);
|
||||
return search.findPath(path, Pos(startx, starty), Pos(endx, endy), step);
|
||||
}
|
||||
|
||||
|
||||
|
||||
} // end namespace JPS
|
||||
|
||||
|
||||
#endif
|
|
@ -97,6 +97,10 @@ bool VFSDir::merge(VFSDir *dir, bool overwrite, EntryFlags flag)
|
|||
if(dir == this)
|
||||
return true; // nothing to do then
|
||||
|
||||
// HACK: make sure the files are there before merging
|
||||
this->load(false);
|
||||
dir->load(false);
|
||||
|
||||
bool result = false;
|
||||
VFS_GUARD_OPT(this);
|
||||
|
||||
|
|
159
README.txt
159
README.txt
|
@ -1,4 +1,4 @@
|
|||
This folder contains all Aquaria sources and necessary build scripts.
|
||||
This folder contains all Aquaria sources and necessary build scripts.
|
||||
However, it does *not* contain any graphical file nor sound. If you
|
||||
want to play the game, you first need to buy the original
|
||||
full-featured version (http://www.bit-blot.com/aquaria/) and install
|
||||
|
@ -6,8 +6,12 @@ it. Once you have done that, you need to build the files in this
|
|||
folder (see below for how to do that) and copy the resulting files to
|
||||
the place where you installed the original full-featured version.
|
||||
|
||||
BUILDING
|
||||
--------
|
||||
In case of problems, you can get support via IRC:
|
||||
#bitblot @ irc.esper.net.
|
||||
|
||||
|
||||
[1] BUILDING
|
||||
------------
|
||||
|
||||
Follow these steps to build Aquaria.
|
||||
|
||||
|
@ -30,36 +34,153 @@ $ cd cmake-build
|
|||
|
||||
$ cmake ..
|
||||
|
||||
Alternatively, if you want to specifiy compile-time options:
|
||||
(See also [2] SETUP further down)
|
||||
|
||||
$ ccmake ..
|
||||
|
||||
|
||||
4- If you miss some dependencies, install them and run cmake again.
|
||||
Due to windows lacking package management, it is recommended
|
||||
to set all AQUARIA_INTERNAL_* cmake variables to TRUE for win32
|
||||
builds, or for statically linked linux builds.
|
||||
builds, or for self-contained linux builds.
|
||||
|
||||
5- run make
|
||||
|
||||
$ make
|
||||
|
||||
6- Copy necessary files to where you installed the original
|
||||
full-featured version of Aquaria (e.g., ~/aquaria which is the
|
||||
default)
|
||||
6- If everything went well, the 'aquaria' binary is now in the
|
||||
current directory (cmake-build).
|
||||
|
||||
$ cp aquaria ~/aquaria/
|
||||
$ cp -r ../games_scripts/* ~/aquaria
|
||||
$ cp -r ../files/* ~/aquaria
|
||||
|
||||
You should *not* remove any file from the aquaria installation, just
|
||||
replace some of them with the versions included in this folder.
|
||||
|
||||
MODS
|
||||
----
|
||||
[2] SETUP
|
||||
---------
|
||||
|
||||
If you plan to use any of the Aquaria mods, you'll also need to update
|
||||
the copies in your personal data directory:
|
||||
First, be sure you have an existing installation of Aquaria.
|
||||
This can be a Windows, Linux, or Mac OSX version, doesn't matter.
|
||||
|
||||
cp -a ~/aquaria/_mods ~/.Aquaria/
|
||||
Take this directory tree, showing the mandatory subdirs:
|
||||
|
||||
LINUX RUMBLE SUPPORT
|
||||
--------------------
|
||||
Aquaria <--- this is the directory you want!
|
||||
|
|
||||
+--- data
|
||||
+--- gfx
|
||||
+--- mus
|
||||
+--- scripts
|
||||
+--- sfx
|
||||
+--- vox
|
||||
+--- ...
|
||||
|
||||
There are three ways to setup Aquaria, you may choose the one that
|
||||
fits your intentions most:
|
||||
|
||||
|
||||
****
|
||||
*** If you just want to get the thing working right now ***
|
||||
*** and don't care much about updating frequently ***
|
||||
****
|
||||
|
||||
After building, copy the executable to your aquaria root directory.
|
||||
Then copy all files inside the repo's "files" directory
|
||||
to your Aquaria root dir, replacing everything that exists.
|
||||
|
||||
You should *not* remove any file from the Aquaria installation, just
|
||||
replace some of them with the versions included in the repo.
|
||||
|
||||
/!\ Be careful if you do this on a Mac with finder because
|
||||
it replaces whole folders instead of just merging the new files in.
|
||||
You have been warned.
|
||||
|
||||
Lastly, if you want to play the included default mods,
|
||||
copy game_scripts/_mods over your local _mods directory.
|
||||
|
||||
|
||||
|
||||
****
|
||||
*** If you want to hack on Aquaria or update frequently: ***
|
||||
****
|
||||
|
||||
* Linux/OSX:
|
||||
Set the AQUARIA_DATA_PATH environment variable to the installation
|
||||
directory as described above. E.g. add this line to your ~/.profile:
|
||||
|
||||
export AQUARIA_DATA_PATH=~/games/Aquaria
|
||||
|
||||
Alternatively, set the AQUARIA_DEFAULT_DATA_DIR compile time option
|
||||
when building with cmake.
|
||||
|
||||
Then, go to $AQUARIA_DATA_PATH and create a symlink
|
||||
to the updated files directory:
|
||||
|
||||
cd ~/games/Aquaria
|
||||
ln -s ~/code/Aquaria-repo/files override
|
||||
|
||||
This will make sure that whenever you update the repo, the updated datafiles
|
||||
from the repo will be loaded instead of those that ship with the game.
|
||||
|
||||
Lastly, if you want to play the included default mods,
|
||||
copy game_scripts/_mods over your local _mods directory.
|
||||
|
||||
|
||||
|
||||
* Windows:
|
||||
|
||||
You'll probably want to install something like this for symlink/junction support:
|
||||
--> http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html
|
||||
(You don't have to, but it's rather tedious to update everything by hand)
|
||||
|
||||
Take all subdirs from the Aquaria root directory, and copy them into
|
||||
path/to/Aquaria-repo/bin, or whereever your compiler will output its executable.
|
||||
If you are able to, better create junctions to save space.
|
||||
|
||||
Note that this will become your main working directory.
|
||||
|
||||
Unfortunately you will have to use junctions to link the updated files.
|
||||
Create a junction in path/to/Aquaria-repo/bin that points to
|
||||
path/to/Aquaria-repo/files.
|
||||
Otherwise, if you don't use junctions, copy the files dir by hand should they change.
|
||||
You can either name it "override" and drop it into bin, or simply copy & replace
|
||||
its contents into bin if you don't mind keeping your data clean.
|
||||
|
||||
Lastly, if you want to play the included default mods,
|
||||
copy game_scripts/_mods over your local _mods directory.
|
||||
|
||||
|
||||
|
||||
****
|
||||
*** If you're a Linux package maintainer ***
|
||||
****
|
||||
|
||||
I assume there is a package for e.g. the Humble Bundle version available;
|
||||
you'll want to make sure that the game path is fixed and the same
|
||||
on all user's installs when you set the following cmake options.
|
||||
|
||||
Set the AQUARIA_DEFAULT_DATA_DIR cmake option to the game data dir
|
||||
as described above.
|
||||
Make sure your package includes all files from the repo's "files" directory.
|
||||
Set the AQUARIA_EXTRA_DATA_DIR cmake option to the directory where these
|
||||
extra files will be installed by the package.
|
||||
|
||||
An example can be found here:
|
||||
https://aur.archlinux.org/packages/aquaria-git/
|
||||
|
||||
Using this package as data dependecy:
|
||||
https://aur.archlinux.org/packages/aquaria-data-hib/
|
||||
|
||||
You also need to make sure that the mod scripts in ~/.Aquaria/_mods/*/scripts/
|
||||
are updated with those from the repo's game_scripts/_mods directory.
|
||||
|
||||
|
||||
If this doesn't apply to your setup, ask. [email, github, IRC, ...]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
[SDL 1.2 ONLY -- LINUX RUMBLE SUPPORT]
|
||||
---------------------------------------
|
||||
|
||||
SDL 1.2 does not support rumble features, even though Linux does. This
|
||||
feature will be added in SDL 1.3, which is still a long time coming.
|
||||
|
|
33
VS2010/.gitignore
vendored
Normal file
33
VS2010/.gitignore
vendored
Normal file
|
@ -0,0 +1,33 @@
|
|||
.*
|
||||
*.o
|
||||
*.o.*
|
||||
*.so
|
||||
*.so.dbg
|
||||
*.bin
|
||||
*.gz
|
||||
*.obj
|
||||
*.user
|
||||
*.manifest
|
||||
*.suo
|
||||
*.ncb
|
||||
*.pdb
|
||||
*.ilk
|
||||
*.exp
|
||||
*.tmp
|
||||
*.aps
|
||||
*.opensdf
|
||||
temp/*
|
||||
build/*
|
||||
bin/*
|
||||
ipch/*
|
||||
Debug/*
|
||||
Release/*
|
||||
New Folder/*
|
||||
*.sdf
|
||||
VS2010/*.vcxproj.user
|
||||
VS2010/*.vcxproj.filters
|
||||
|
||||
*.patch
|
||||
*.diff
|
||||
|
||||
!.gitignore
|
36
VS2010/AquariaVS2010.sln
Normal file
36
VS2010/AquariaVS2010.sln
Normal file
|
@ -0,0 +1,36 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual C++ Express 2010
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Aquaria", "VS2010\Aquaria.vcxproj", "{4DB6D5AA-4EAD-4195-9B54-389B558036D8}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{4C2AD812-6776-4728-A4B0-ABA397224152} = {4C2AD812-6776-4728-A4B0-ABA397224152}
|
||||
{6A2DACD7-DA30-49A1-9214-CCDEB48E6050} = {6A2DACD7-DA30-49A1-9214-CCDEB48E6050}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BBGE", "VS2010\BBGE.vcxproj", "{4C2AD812-6776-4728-A4B0-ABA397224152}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "external", "VS2010\external.vcxproj", "{6A2DACD7-DA30-49A1-9214-CCDEB48E6050}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
Release|Win32 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{4DB6D5AA-4EAD-4195-9B54-389B558036D8}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{4DB6D5AA-4EAD-4195-9B54-389B558036D8}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{4DB6D5AA-4EAD-4195-9B54-389B558036D8}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{4DB6D5AA-4EAD-4195-9B54-389B558036D8}.Release|Win32.Build.0 = Release|Win32
|
||||
{4C2AD812-6776-4728-A4B0-ABA397224152}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{4C2AD812-6776-4728-A4B0-ABA397224152}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{4C2AD812-6776-4728-A4B0-ABA397224152}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{4C2AD812-6776-4728-A4B0-ABA397224152}.Release|Win32.Build.0 = Release|Win32
|
||||
{6A2DACD7-DA30-49A1-9214-CCDEB48E6050}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{6A2DACD7-DA30-49A1-9214-CCDEB48E6050}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{6A2DACD7-DA30-49A1-9214-CCDEB48E6050}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{6A2DACD7-DA30-49A1-9214-CCDEB48E6050}.Release|Win32.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
573
VS2010/VS2010/Aquaria.vcproj
Normal file
573
VS2010/VS2010/Aquaria.vcproj
Normal file
|
@ -0,0 +1,573 @@
|
|||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="9,00"
|
||||
Name="Aquaria"
|
||||
ProjectGUID="{4DB6D5AA-4EAD-4195-9B54-389B558036D8}"
|
||||
RootNamespace="Aquaria_vc90"
|
||||
Keyword="Win32Proj"
|
||||
TargetFrameworkVersion="196613"
|
||||
>
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="$(SolutionDir)\..\bin"
|
||||
IntermediateDirectory="$(SolutionDir)\temp\$(ConfigurationName)\$(ProjectName)"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=""$(SolutionDir)\..\ExternalLibs\freetype2\include\freetype\config";"$(SolutionDir)\..\ExternalLibs\gl";"$(SolutionDir)\..\ExternalLibs\glpng\zlib";"$(SolutionDir)\..\ExternalLibs\glpng\png";"$(SolutionDir)\..\ExternalLibs\libogg-1.3.0\include";"$(SolutionDir)\..\ExternalLibs\libvorbis-1.3.3\include";"$(SolutionDir)\..\ExternalLibs\freetype2\include";"$(SolutionDir)\..\ExternalLibs\FTGL\include";"$(SolutionDir)\..\ExternalLibs\SDL2\include";"$(SolutionDir)\..\ExternalLibs\AL\include";"$(SolutionDir)\..\BBGE";"$(SolutionDir)\..\ExternalLibs\lua-5.1.4\src";"$(SolutionDir)\..\ExternalLibs\lvpa\include";"$(SolutionDir)\..\ExternalLibs\lvpa";"$(SolutionDir)\..\ExternalLibs\ttvfs";"$(SolutionDir)\..\ExternalLibs""
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;GL_GLEXT_LEGACY=1;TIXML_USE_STL=1;HAVE_PUTENV=1;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;BBGE_BUILD_WINDOWS=1"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="0"
|
||||
RuntimeLibrary="3"
|
||||
EnableFunctionLevelLinking="true"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="4"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
OutputFile="$(OutDir)\$(ProjectName)d.exe"
|
||||
LinkIncremental="2"
|
||||
AdditionalLibraryDirectories=""
|
||||
IgnoreDefaultLibraryNames="msvcrt.lib"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="$(SolutionDir)\..\bin"
|
||||
IntermediateDirectory="$(SolutionDir)\temp\$(ConfigurationName)\$(ProjectName)"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="3"
|
||||
InlineFunctionExpansion="2"
|
||||
EnableIntrinsicFunctions="true"
|
||||
FavorSizeOrSpeed="1"
|
||||
OmitFramePointers="true"
|
||||
EnableFiberSafeOptimizations="true"
|
||||
AdditionalIncludeDirectories=""$(SolutionDir)\..\ExternalLibs\freetype2\include\freetype\config";"$(SolutionDir)\..\ExternalLibs\gl";"$(SolutionDir)\..\ExternalLibs\glpng\zlib";"$(SolutionDir)\..\ExternalLibs\glpng\png";"$(SolutionDir)\..\ExternalLibs\libogg-1.3.0\include";"$(SolutionDir)\..\ExternalLibs\libvorbis-1.3.3\include";"$(SolutionDir)\..\ExternalLibs\freetype2\include";"$(SolutionDir)\..\ExternalLibs\FTGL\include";"$(SolutionDir)\..\ExternalLibs\SDL2\include";"$(SolutionDir)\..\ExternalLibs\AL\include";"$(SolutionDir)\..\BBGE";"$(SolutionDir)\..\ExternalLibs\lua-5.1.4\src";"$(SolutionDir)\..\ExternalLibs\lvpa\include";"$(SolutionDir)\..\ExternalLibs\lvpa";"$(SolutionDir)\..\ExternalLibs\ttvfs";"$(SolutionDir)\..\ExternalLibs""
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;GL_GLEXT_LEGACY=1;TIXML_USE_STL=1;HAVE_PUTENV=1;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;BBGE_BUILD_WINDOWS=1;_HAS_EXCEPTIONS=0"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="0"
|
||||
RuntimeLibrary="0"
|
||||
BufferSecurityCheck="false"
|
||||
EnableFunctionLevelLinking="false"
|
||||
EnableEnhancedInstructionSet="2"
|
||||
FloatingPointModel="2"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
LinkIncremental="1"
|
||||
IgnoreDefaultLibraryNames="msvcrt.lib"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="2"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\AnimationEditor.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\AquariaComboBox.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\AquariaMenuItem.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\AquariaMenuItem.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\AquariaProgressBar.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\AquariaProgressBar.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\AquariaSaveSlot.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\AStar.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\AutoMap.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\AutoMap.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\Avatar.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\Avatar.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\Beam.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\BitBlotLogo.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\CollideEntity.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\CollideEntity.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\Continuity.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\Credits.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\CurrentRender.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\Demo.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\DSQ.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\DSQ.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\Element.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\Element.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\Emote.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\Entity.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\Entity.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\FlockEntity.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\FlockEntity.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\Game.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\Game.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\GameplayVariables.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\GasCloud.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\GridRender.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\GridRender.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\Hair.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\Hair.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\Ingredient.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\Intro.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\Main.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\ManaBall.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\MiniMapRender.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\Mod.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\ModDownloader.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\ModDownloader.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\ModSelector.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\Network.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\Network.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\ParticleEditor.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\Path.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\Path.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\PathFinding.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\PathFinding.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\PathRender.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\RecipeMenuEntry.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\resource.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\SceneEditor.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\SchoolFish.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\SchoolFish.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\ScriptedEntity.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\ScriptedEntity.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\ScriptInterface.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\ScriptInterface.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\Segmented.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\Segmented.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\SFXLoops.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\Shot.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\Shot.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\Spore.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\States.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\States.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\StatsAndAchievements.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\StatsAndAchievements.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\SteamRender.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\Strand.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\StringBank.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\SubtitlePlayer.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\TileVector.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\ToolTip.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\ToolTip.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\UserSettings.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\UserSettings.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\WaterFont.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\WaterFont.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\WaterSurfaceRender.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\WaterSurfaceRender.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\Web.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\Web.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\WorldMapRender.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\WorldMapTiles.cpp"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\AquariaCompileConfig.h"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Resource Files"
|
||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
|
||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\..\Aquaria\Aquaria.rc"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
209
VS2010/VS2010/Aquaria.vcxproj
Normal file
209
VS2010/VS2010/Aquaria.vcxproj
Normal file
|
@ -0,0 +1,209 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{4DB6D5AA-4EAD-4195-9B54-389B558036D8}</ProjectGuid>
|
||||
<RootNamespace>Aquaria_vc90</RootNamespace>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)temp\$(Configuration)\$(ProjectName)\</IntDir>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)temp\$(Configuration)\$(ProjectName)\</IntDir>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\ExternalLibs\freetype2\include\freetype\config;$(SolutionDir)\..\ExternalLibs\gl;$(SolutionDir)\..\ExternalLibs\glpng\zlib;$(SolutionDir)\..\ExternalLibs\glpng\png;$(SolutionDir)\..\ExternalLibs\libogg-1.3.0\include;$(SolutionDir)\..\ExternalLibs\libvorbis-1.3.3\include;$(SolutionDir)\..\ExternalLibs\freetype2\include;$(SolutionDir)\..\ExternalLibs\FTGL\include;$(SolutionDir)\..\ExternalLibs\SDL2\include;$(SolutionDir)\..\ExternalLibs\AL\include;$(SolutionDir)\..\BBGE;$(SolutionDir)\..\ExternalLibs\lua-5.1.4\src;$(SolutionDir)\..\ExternalLibs\lvpa\include;$(SolutionDir)\..\ExternalLibs\lvpa;$(SolutionDir)\..\ExternalLibs\ttvfs;$(SolutionDir)\..\ExternalLibs;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;GL_GLEXT_LEGACY=1;TIXML_USE_STL=1;HAVE_PUTENV=1;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;BBGE_BUILD_WINDOWS=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
||||
<UndefinePreprocessorDefinitions>
|
||||
</UndefinePreprocessorDefinitions>
|
||||
<ObjectFileName>$(IntDir)/$(Configuration/%(RelativeDir)/</ObjectFileName>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)temp\$(Configuration)\external\;$(SolutionDir)temp\$(Configuration)\BBGE\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<IgnoreSpecificDefaultLibraries>msvcrt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<AdditionalDependencies>external.lib;BBGE.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Full</Optimization>
|
||||
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<EnableFiberSafeOptimizations>true</EnableFiberSafeOptimizations>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\ExternalLibs\freetype2\include\freetype\config;$(SolutionDir)\..\ExternalLibs\gl;$(SolutionDir)\..\ExternalLibs\glpng\zlib;$(SolutionDir)\..\ExternalLibs\glpng\png;$(SolutionDir)\..\ExternalLibs\libogg-1.3.0\include;$(SolutionDir)\..\ExternalLibs\libvorbis-1.3.3\include;$(SolutionDir)\..\ExternalLibs\freetype2\include;$(SolutionDir)\..\ExternalLibs\FTGL\include;$(SolutionDir)\..\ExternalLibs\SDL2\include;$(SolutionDir)\..\ExternalLibs\AL\include;$(SolutionDir)\..\BBGE;$(SolutionDir)\..\ExternalLibs\lua-5.1.4\src;$(SolutionDir)\..\ExternalLibs\lvpa\include;$(SolutionDir)\..\ExternalLibs\lvpa;$(SolutionDir)\..\ExternalLibs\ttvfs;$(SolutionDir)\..\ExternalLibs;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;GL_GLEXT_LEGACY=1;TIXML_USE_STL=1;HAVE_PUTENV=1;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;BBGE_BUILD_WINDOWS=1;_HAS_EXCEPTIONS=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<ExceptionHandling>
|
||||
</ExceptionHandling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<FunctionLevelLinking>false</FunctionLevelLinking>
|
||||
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
|
||||
<FloatingPointModel>Fast</FloatingPointModel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<UndefinePreprocessorDefinitions>
|
||||
</UndefinePreprocessorDefinitions>
|
||||
<ObjectFileName>$(IntDir)/$(Configuration/%(RelativeDir)/</ObjectFileName>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<IgnoreSpecificDefaultLibraries>msvcrt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)temp\$(Configuration)\external\;$(SolutionDir)temp\$(Configuration)\BBGE\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>external.lib;BBGE.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\Aquaria\AnimationEditor.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\AquariaComboBox.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\AquariaMenuItem.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\AquariaProgressBar.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\AquariaSaveSlot.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\AutoMap.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\Avatar.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\Beam.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\BitBlotLogo.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\CollideEntity.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\Continuity.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\Credits.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\CurrentRender.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\Demo.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\DSQ.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\Element.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\Emote.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\Entity.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\FlockEntity.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\Game.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\GameplayVariables.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\GasCloud.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\GridRender.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\Hair.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\Ingredient.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\Intro.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\Main.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\ManaBall.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\MiniMapRender.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\Mod.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\ModDownloader.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\ModSelector.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\Network.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\ParticleEditor.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\Path.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\PathFinding.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\PathRender.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\RecipeMenuEntry.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\SceneEditor.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\SchoolFish.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\ScriptedEntity.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\ScriptInterface.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\Segmented.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\SFXLoops.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\Shot.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\Spore.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\States.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\StatsAndAchievements.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\SteamRender.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\Strand.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\StringBank.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\SubtitlePlayer.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\ToolTip.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\UserSettings.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\WaterFont.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\WaterSurfaceRender.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\Web.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\WorldMapRender.cpp" />
|
||||
<ClCompile Include="..\..\Aquaria\WorldMapTiles.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\..\Aquaria\AquariaMenuItem.h" />
|
||||
<ClInclude Include="..\..\Aquaria\AquariaProgressBar.h" />
|
||||
<ClInclude Include="..\..\Aquaria\AStar.h" />
|
||||
<ClInclude Include="..\..\Aquaria\AutoMap.h" />
|
||||
<ClInclude Include="..\..\Aquaria\Avatar.h" />
|
||||
<ClInclude Include="..\..\Aquaria\CollideEntity.h" />
|
||||
<ClInclude Include="..\..\Aquaria\DSQ.h" />
|
||||
<ClInclude Include="..\..\Aquaria\Element.h" />
|
||||
<ClInclude Include="..\..\Aquaria\Entity.h" />
|
||||
<ClInclude Include="..\..\Aquaria\FlockEntity.h" />
|
||||
<ClInclude Include="..\..\Aquaria\Game.h" />
|
||||
<ClInclude Include="..\..\Aquaria\GridRender.h" />
|
||||
<ClInclude Include="..\..\Aquaria\Hair.h" />
|
||||
<ClInclude Include="..\..\Aquaria\ModDownloader.h" />
|
||||
<ClInclude Include="..\..\Aquaria\Network.h" />
|
||||
<ClInclude Include="..\..\Aquaria\Path.h" />
|
||||
<ClInclude Include="..\..\Aquaria\PathFinding.h" />
|
||||
<ClInclude Include="..\..\Aquaria\resource.h" />
|
||||
<ClInclude Include="..\..\Aquaria\SchoolFish.h" />
|
||||
<ClInclude Include="..\..\Aquaria\ScriptedEntity.h" />
|
||||
<ClInclude Include="..\..\Aquaria\ScriptInterface.h" />
|
||||
<ClInclude Include="..\..\Aquaria\Segmented.h" />
|
||||
<ClInclude Include="..\..\Aquaria\Shot.h" />
|
||||
<ClInclude Include="..\..\Aquaria\States.h" />
|
||||
<ClInclude Include="..\..\Aquaria\StatsAndAchievements.h" />
|
||||
<ClInclude Include="..\..\Aquaria\TileVector.h" />
|
||||
<ClInclude Include="..\..\Aquaria\ToolTip.h" />
|
||||
<ClInclude Include="..\..\Aquaria\UserSettings.h" />
|
||||
<ClInclude Include="..\..\Aquaria\WaterFont.h" />
|
||||
<ClInclude Include="..\..\Aquaria\WaterSurfaceRender.h" />
|
||||
<ClInclude Include="..\..\Aquaria\Web.h" />
|
||||
<ClInclude Include="..\..\Aquaria\AquariaCompileConfig.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="..\..\Aquaria\Aquaria.rc" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
543
VS2010/VS2010/BBGE.vcproj
Normal file
543
VS2010/VS2010/BBGE.vcproj
Normal file
|
@ -0,0 +1,543 @@
|
|||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="9,00"
|
||||
Name="BBGE"
|
||||
ProjectGUID="{4C2AD812-6776-4728-A4B0-ABA397224152}"
|
||||
RootNamespace="Aquaria_vc90"
|
||||
Keyword="Win32Proj"
|
||||
TargetFrameworkVersion="196613"
|
||||
>
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="$(SolutionDir)\temp\$(ConfigurationName)\$(ProjectName)"
|
||||
IntermediateDirectory="$(SolutionDir)\temp\$(ConfigurationName)\$(ProjectName)"
|
||||
ConfigurationType="4"
|
||||
UseOfMFC="0"
|
||||
CharacterSet="2"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=""$(SolutionDir)\..\ExternalLibs\freetype2\include\freetype\config";"$(SolutionDir)\..\ExternalLibs\gl";"$(SolutionDir)\..\ExternalLibs\glpng\zlib";"$(SolutionDir)\..\ExternalLibs\glpng\png";"$(SolutionDir)\..\ExternalLibs\libogg-1.3.0\include";"$(SolutionDir)\..\ExternalLibs\libvorbis-1.3.3\include";"$(SolutionDir)\..\ExternalLibs\freetype2\include";"$(SolutionDir)\..\ExternalLibs\FTGL\include";"$(SolutionDir)\..\ExternalLibs\SDL2\include";"$(SolutionDir)\..\ExternalLibs\AL\include";"$(SolutionDir)\..\ExternalLibs\ttvfs";"$(SolutionDir)\..\ExternalLibs\lvpa";"$(SolutionDir)\..\ExternalLibs\lvpa\include";"$(SolutionDir)\..\ExternalLibs""
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;GL_GLEXT_LEGACY=1;TIXML_USE_STL=1;HAVE_PUTENV=1;FTGL_LIBRARY_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;BBGE_BUILD_WINDOWS=1"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="0"
|
||||
RuntimeLibrary="3"
|
||||
EnableFunctionLevelLinking="true"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="4"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
AdditionalDependencies="SDL2.lib SDL2main.lib OpenAL32.lib"
|
||||
AdditionalLibraryDirectories=""$(SolutionDir)\..\ExternalLibs\AL\lib\win32";"$(SolutionDir)\..\ExternalLibs\SDL2\lib\win32""
|
||||
IgnoreAllDefaultLibraries="true"
|
||||
IgnoreDefaultLibraryNames=""
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="$(SolutionDir)\temp\$(ConfigurationName)\$(ProjectName)"
|
||||
IntermediateDirectory="$(SolutionDir)\temp\$(ConfigurationName)\$(ProjectName)"
|
||||
ConfigurationType="4"
|
||||
CharacterSet="2"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="3"
|
||||
InlineFunctionExpansion="2"
|
||||
EnableIntrinsicFunctions="true"
|
||||
FavorSizeOrSpeed="1"
|
||||
OmitFramePointers="true"
|
||||
EnableFiberSafeOptimizations="true"
|
||||
AdditionalIncludeDirectories=""$(SolutionDir)\..\ExternalLibs\freetype2\include\freetype\config";"$(SolutionDir)\..\ExternalLibs\gl";"$(SolutionDir)\..\ExternalLibs\glpng\zlib";"$(SolutionDir)\..\ExternalLibs\glpng\png";"$(SolutionDir)\..\ExternalLibs\libogg-1.3.0\include";"$(SolutionDir)\..\ExternalLibs\libvorbis-1.3.3\include";"$(SolutionDir)\..\ExternalLibs\freetype2\include";"$(SolutionDir)\..\ExternalLibs\FTGL\include";"$(SolutionDir)\..\ExternalLibs\SDL2\include";"$(SolutionDir)\..\ExternalLibs\AL\include";"$(SolutionDir)\..\ExternalLibs\ttvfs";"$(SolutionDir)\..\ExternalLibs\lvpa";"$(SolutionDir)\..\ExternalLibs\lvpa\include";"$(SolutionDir)\..\ExternalLibs""
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;GL_GLEXT_LEGACY=1;TIXML_USE_STL=1;HAVE_PUTENV=1;FTGL_LIBRARY_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;BBGE_BUILD_WINDOWS=1;_HAS_EXCEPTIONS=0"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="0"
|
||||
RuntimeLibrary="0"
|
||||
BufferSecurityCheck="false"
|
||||
EnableFunctionLevelLinking="false"
|
||||
EnableEnhancedInstructionSet="2"
|
||||
FloatingPointModel="2"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
AdditionalDependencies="SDL2.lib SDL2main.lib OpenAL32.lib"
|
||||
AdditionalLibraryDirectories=""$(SolutionDir)\..\ExternalLibs\AL\lib\win32";"$(SolutionDir)\..\ExternalLibs\SDL2\lib\win32""
|
||||
IgnoreAllDefaultLibraries="true"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\ActionInput.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\ActionInput.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\ActionMapper.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\ActionMapper.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\ActionSet.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\ActionSet.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\AfterEffect.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\AfterEffect.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\Base.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\Base.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\BaseText.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\BitmapFont.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\BitmapFont.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\Collision.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\Collision.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\CommonEvents.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\Core.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\Core.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\DarkLayer.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\DarkLayer.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\DebugFont.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\DebugFont.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\Effects.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\Effects.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\Emitter.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\Event.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\Event.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\Flags.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\Flags.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\FmodOpenALBridge.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\FmodOpenALBridge.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\FrameBuffer.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\FrameBuffer.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\Gradient.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\Gradient.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\Joystick.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\LensFlare.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\Localization.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\Localization.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\Math.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\MathFunctions.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\MT.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\MT.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\OpenGLStubs.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\ParticleEffect.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\ParticleManager.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\Particles.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\Precacher.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\Precacher.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\Quad.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\Quad.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\QuadTrail.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\QuadTrail.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\Rect.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\RenderObject.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\RenderObject.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\RenderObject_inline.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\RenderObjectLayer.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\RenderRect.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\Resource.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\Resource.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\RoundedRect.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\RoundedRect.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\ScreenTransition.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\ScreenTransition.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\ScriptObject.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\ScriptObject.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\Shader.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\Shader.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\SimpleIStringStream.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\SkeletalSprite.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\SkeletalSprite.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\Slider.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\Slider.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\SoundManager.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\SoundManager.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\SpawnParticleData.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\StateMachine.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\StateMachine.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\StateManager.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\StateManager.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\Strings.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\Texture.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\Texture.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\TTFFont.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\TTFFont.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\Vector.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\Vector.h"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\..\BBGE\BBGECompileConfig.h"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Resource Files"
|
||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
|
||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
||||
>
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
198
VS2010/VS2010/BBGE.vcxproj
Normal file
198
VS2010/VS2010/BBGE.vcxproj
Normal file
|
@ -0,0 +1,198 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{4C2AD812-6776-4728-A4B0-ABA397224152}</ProjectGuid>
|
||||
<RootNamespace>Aquaria_vc90</RootNamespace>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)temp\$(Configuration)\$(ProjectName)\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)temp\$(Configuration)\$(ProjectName)\</IntDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)temp\$(Configuration)\$(ProjectName)\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)temp\$(Configuration)\$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\ExternalLibs\freetype2\include\freetype\config;$(SolutionDir)\..\ExternalLibs\gl;$(SolutionDir)\..\ExternalLibs\glpng\zlib;$(SolutionDir)\..\ExternalLibs\glpng\png;$(SolutionDir)\..\ExternalLibs\libogg-1.3.0\include;$(SolutionDir)\..\ExternalLibs\libvorbis-1.3.3\include;$(SolutionDir)\..\ExternalLibs\freetype2\include;$(SolutionDir)\..\ExternalLibs\FTGL\include;$(SolutionDir)\..\ExternalLibs\SDL2\include;$(SolutionDir)\..\ExternalLibs\AL\include;$(SolutionDir)\..\ExternalLibs\ttvfs;$(SolutionDir)\..\ExternalLibs\lvpa;$(SolutionDir)\..\ExternalLibs\lvpa\include;$(SolutionDir)\..\ExternalLibs;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;GL_GLEXT_LEGACY=1;TIXML_USE_STL=1;HAVE_PUTENV=1;FTGL_LIBRARY_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;BBGE_BUILD_WINDOWS=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
||||
<UndefinePreprocessorDefinitions>
|
||||
</UndefinePreprocessorDefinitions>
|
||||
<ObjectFileName>$(IntDir)/$(Configuration/%(RelativeDir)/</ObjectFileName>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<AdditionalDependencies>SDL2.lib;SDL2main.lib;OpenAL32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)\..\ExternalLibs\AL\lib\win32;$(SolutionDir)\..\ExternalLibs\SDL2\lib\win32;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
||||
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Full</Optimization>
|
||||
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<EnableFiberSafeOptimizations>true</EnableFiberSafeOptimizations>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\ExternalLibs\freetype2\include\freetype\config;$(SolutionDir)\..\ExternalLibs\gl;$(SolutionDir)\..\ExternalLibs\glpng\zlib;$(SolutionDir)\..\ExternalLibs\glpng\png;$(SolutionDir)\..\ExternalLibs\libogg-1.3.0\include;$(SolutionDir)\..\ExternalLibs\libvorbis-1.3.3\include;$(SolutionDir)\..\ExternalLibs\freetype2\include;$(SolutionDir)\..\ExternalLibs\FTGL\include;$(SolutionDir)\..\ExternalLibs\SDL2\include;$(SolutionDir)\..\ExternalLibs\AL\include;$(SolutionDir)\..\ExternalLibs\ttvfs;$(SolutionDir)\..\ExternalLibs\lvpa;$(SolutionDir)\..\ExternalLibs\lvpa\include;$(SolutionDir)\..\ExternalLibs;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;GL_GLEXT_LEGACY=1;TIXML_USE_STL=1;HAVE_PUTENV=1;FTGL_LIBRARY_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;BBGE_BUILD_WINDOWS=1;_HAS_EXCEPTIONS=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<ExceptionHandling>
|
||||
</ExceptionHandling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<FunctionLevelLinking>false</FunctionLevelLinking>
|
||||
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
|
||||
<FloatingPointModel>Fast</FloatingPointModel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<UndefinePreprocessorDefinitions>
|
||||
</UndefinePreprocessorDefinitions>
|
||||
<ObjectFileName>$(IntDir)/$(Configuration/%(RelativeDir)/</ObjectFileName>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<AdditionalDependencies>SDL2.lib;SDL2main.lib;OpenAL32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)\..\ExternalLibs\AL\lib\win32;$(SolutionDir)\..\ExternalLibs\SDL2\lib\win32;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\BBGE\ActionInput.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\ActionMapper.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\ActionSet.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\AfterEffect.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\Base.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\BitmapFont.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\Collision.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\Core.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\DarkLayer.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\DebugFont.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\Effects.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\Emitter.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\Event.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\Flags.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\FmodOpenALBridge.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\FrameBuffer.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\Gradient.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\Joystick.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\LensFlare.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\Localization.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\Math.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\MT.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\ParticleEffect.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\ParticleManager.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\Precacher.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\Quad.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\QuadTrail.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\RenderObject.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\RenderObjectLayer.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\RenderRect.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\Resource.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\RoundedRect.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\ScreenTransition.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\ScriptObject.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\Shader.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\SkeletalSprite.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\Slider.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\SoundManager.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\SpawnParticleData.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\StateMachine.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\StateManager.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\Strings.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\Texture.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\TTFFont.cpp" />
|
||||
<ClCompile Include="..\..\BBGE\Vector.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\..\BBGE\ActionInput.h" />
|
||||
<ClInclude Include="..\..\BBGE\ActionMapper.h" />
|
||||
<ClInclude Include="..\..\BBGE\ActionSet.h" />
|
||||
<ClInclude Include="..\..\BBGE\AfterEffect.h" />
|
||||
<ClInclude Include="..\..\BBGE\Base.h" />
|
||||
<ClInclude Include="..\..\BBGE\BaseText.h" />
|
||||
<ClInclude Include="..\..\BBGE\BitmapFont.h" />
|
||||
<ClInclude Include="..\..\BBGE\Collision.h" />
|
||||
<ClInclude Include="..\..\BBGE\CommonEvents.h" />
|
||||
<ClInclude Include="..\..\BBGE\Core.h" />
|
||||
<ClInclude Include="..\..\BBGE\DarkLayer.h" />
|
||||
<ClInclude Include="..\..\BBGE\DebugFont.h" />
|
||||
<ClInclude Include="..\..\BBGE\Effects.h" />
|
||||
<ClInclude Include="..\..\BBGE\Event.h" />
|
||||
<ClInclude Include="..\..\BBGE\Flags.h" />
|
||||
<ClInclude Include="..\..\BBGE\FmodOpenALBridge.h" />
|
||||
<ClInclude Include="..\..\BBGE\FrameBuffer.h" />
|
||||
<ClInclude Include="..\..\BBGE\Gradient.h" />
|
||||
<ClInclude Include="..\..\BBGE\Localization.h" />
|
||||
<ClInclude Include="..\..\BBGE\MathFunctions.h" />
|
||||
<ClInclude Include="..\..\BBGE\MT.h" />
|
||||
<ClInclude Include="..\..\BBGE\OpenGLStubs.h" />
|
||||
<ClInclude Include="..\..\BBGE\Particles.h" />
|
||||
<ClInclude Include="..\..\BBGE\Precacher.h" />
|
||||
<ClInclude Include="..\..\BBGE\Quad.h" />
|
||||
<ClInclude Include="..\..\BBGE\QuadTrail.h" />
|
||||
<ClInclude Include="..\..\BBGE\Rect.h" />
|
||||
<ClInclude Include="..\..\BBGE\RenderObject.h" />
|
||||
<ClInclude Include="..\..\BBGE\RenderObject_inline.h" />
|
||||
<ClInclude Include="..\..\BBGE\Resource.h" />
|
||||
<ClInclude Include="..\..\BBGE\RoundedRect.h" />
|
||||
<ClInclude Include="..\..\BBGE\ScreenTransition.h" />
|
||||
<ClInclude Include="..\..\BBGE\ScriptObject.h" />
|
||||
<ClInclude Include="..\..\BBGE\Shader.h" />
|
||||
<ClInclude Include="..\..\BBGE\SimpleIStringStream.h" />
|
||||
<ClInclude Include="..\..\BBGE\SkeletalSprite.h" />
|
||||
<ClInclude Include="..\..\BBGE\Slider.h" />
|
||||
<ClInclude Include="..\..\BBGE\SoundManager.h" />
|
||||
<ClInclude Include="..\..\BBGE\StateMachine.h" />
|
||||
<ClInclude Include="..\..\BBGE\StateManager.h" />
|
||||
<ClInclude Include="..\..\BBGE\Texture.h" />
|
||||
<ClInclude Include="..\..\BBGE\TTFFont.h" />
|
||||
<ClInclude Include="..\..\BBGE\Vector.h" />
|
||||
<ClInclude Include="..\..\BBGE\BBGECompileConfig.h" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
1540
VS2010/VS2010/external.vcproj
Normal file
1540
VS2010/VS2010/external.vcproj
Normal file
File diff suppressed because it is too large
Load diff
421
VS2010/VS2010/external.vcxproj
Normal file
421
VS2010/VS2010/external.vcxproj
Normal file
|
@ -0,0 +1,421 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{6A2DACD7-DA30-49A1-9214-CCDEB48E6050}</ProjectGuid>
|
||||
<RootNamespace>Aquaria_vc90</RootNamespace>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)temp\$(Configuration)\$(ProjectName)\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)temp\$(Configuration)\$(ProjectName)\</IntDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)temp\$(Configuration)\$(ProjectName)\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)temp\$(Configuration)\$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\ExternalLibs\freetype2\include\freetype\config;$(SolutionDir)\..\ExternalLibs\gl;$(SolutionDir)\..\ExternalLibs\glpng\zlib;$(SolutionDir)\..\ExternalLibs\glpng\png;$(SolutionDir)\..\ExternalLibs\libogg-1.3.0\include;$(SolutionDir)\..\ExternalLibs\libvorbis-1.3.3\include;$(SolutionDir)\..\ExternalLibs\freetype2\include;$(SolutionDir)\..\ExternalLibs\FTGL\include;$(SolutionDir)\..\ExternalLibs\SDL2\include;$(SolutionDir)\..\ExternalLibs\ttvfs;$(SolutionDir)\..\ExternalLibs\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;HAVE_FCNTL_H;FT_CONFIG_OPTION_SYSTEM_ZLIB;FTGL_LIBRARY_STATIC;FT2_BUILD_LIBRARY;GL_GLEXT_LEGACY=1;TIXML_USE_STL=1;HAVE_PUTENV=1;BBGE_BUILD_VFS=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
||||
<DisableSpecificWarnings>4244;4996;4305;4800;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<ObjectFileName>$(IntDir)/$(Configuration/%(RelativeDir)/</ObjectFileName>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<AdditionalDependencies>ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
||||
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Full</Optimization>
|
||||
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<EnableFiberSafeOptimizations>true</EnableFiberSafeOptimizations>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\ExternalLibs\freetype2\include\freetype\config;$(SolutionDir)\..\ExternalLibs\gl;$(SolutionDir)\..\ExternalLibs\glpng\zlib;$(SolutionDir)\..\ExternalLibs\glpng\png;$(SolutionDir)\..\ExternalLibs\libogg-1.3.0\include;$(SolutionDir)\..\ExternalLibs\libvorbis-1.3.3\include;$(SolutionDir)\..\ExternalLibs\freetype2\include;$(SolutionDir)\..\ExternalLibs\FTGL\include;$(SolutionDir)\..\ExternalLibs\SDL12\include;$(SolutionDir)\..\ExternalLibs\ttvfs;$(SolutionDir)\..\ExternalLibs;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;HAVE_FCNTL_H;FT_CONFIG_OPTION_SYSTEM_ZLIB;FTGL_LIBRARY_STATIC;FT2_BUILD_LIBRARY;GL_GLEXT_LEGACY=1;TIXML_USE_STL=1;HAVE_PUTENV=1;_HAS_EXCEPTIONS=0;BBGE_BUILD_VFS=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<ExceptionHandling>
|
||||
</ExceptionHandling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<FunctionLevelLinking>false</FunctionLevelLinking>
|
||||
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
|
||||
<FloatingPointModel>Fast</FloatingPointModel>
|
||||
<RuntimeTypeInfo>false</RuntimeTypeInfo>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<DisableSpecificWarnings>4244;4996;4305;4800;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<ObjectFileName>$(IntDir)/$(Configuration/%(RelativeDir)/</ObjectFileName>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<AdditionalDependencies>ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\..\ExternalLibs\ByteBuffer.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\DeflateCompressor.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\FileAPI.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\minihttp.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\tinyxml.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\glpng.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\glpng\png\png.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\glpng\png\pngconf.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\glpng\png\pngdebug.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\glpng\png\pnginfo.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\glpng\png\pnglibconf.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\glpng\png\pngpriv.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\glpng\png\pngstruct.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\glpng\zlib\crc32.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\glpng\zlib\deflate.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\glpng\zlib\inffast.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\glpng\zlib\inffixed.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\glpng\zlib\inflate.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\glpng\zlib\inftrees.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\glpng\zlib\trees.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\glpng\zlib\zconf.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\glpng\zlib\zlib.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\glpng\zlib\zutil.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\libvorbis-1.3.3\lib\backends.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\libvorbis-1.3.3\lib\bitrate.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\libvorbis-1.3.3\lib\codebook.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\libvorbis-1.3.3\lib\codec_internal.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\libvorbis-1.3.3\lib\envelope.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\libvorbis-1.3.3\lib\highlevel.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\libvorbis-1.3.3\lib\lookup.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\libvorbis-1.3.3\lib\lookup_data.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\libvorbis-1.3.3\lib\lpc.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\libvorbis-1.3.3\lib\lsp.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\libvorbis-1.3.3\lib\masking.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\libvorbis-1.3.3\lib\mdct.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\libvorbis-1.3.3\lib\misc.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\libvorbis-1.3.3\lib\os.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\libvorbis-1.3.3\lib\psy.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\libvorbis-1.3.3\lib\registry.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\libvorbis-1.3.3\lib\scales.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\libvorbis-1.3.3\lib\smallft.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\libvorbis-1.3.3\lib\window.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\freetype2\src\base\ftbase.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\glfont2\glfont2.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\lua-5.1.4\src\lapi.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\lua-5.1.4\src\lauxlib.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\lua-5.1.4\src\lcode.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\lua-5.1.4\src\ldebug.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\lua-5.1.4\src\ldo.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\lua-5.1.4\src\lfunc.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\lua-5.1.4\src\lgc.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\lua-5.1.4\src\llex.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\lua-5.1.4\src\llimits.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\lua-5.1.4\src\lmem.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\lua-5.1.4\src\lobject.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\lua-5.1.4\src\lopcodes.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\lua-5.1.4\src\lparser.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\lua-5.1.4\src\lstate.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\lua-5.1.4\src\lstring.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\lua-5.1.4\src\ltable.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\lua-5.1.4\src\ltm.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\lua-5.1.4\src\lua.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\lua-5.1.4\src\luaconf.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\lua-5.1.4\src\lualib.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\lua-5.1.4\src\lundump.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\lua-5.1.4\src\lvm.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\lua-5.1.4\src\lzio.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\ttvfs\VFS.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\ttvfs\VFSArchiveLoader.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\ttvfs\VFSAtomic.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\ttvfs\VFSBase.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\ttvfs\VFSDefines.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\ttvfs\VFSDir.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\ttvfs\VFSFile.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\ttvfs\VFSFileFuncs.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\ttvfs\VFSHashmap.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\ttvfs\VFSHelper.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\ttvfs\VFSInternal.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\ttvfs\VFSLoader.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\ttvfs\VFSSelfRefCounter.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\ttvfs\VFSTools.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\ttvfs_zip\miniz.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\ttvfs_zip\VFSDirZip.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\ttvfs_zip\VFSFileZip.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\ttvfs_zip\VFSZipArchiveLoader.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\algorithmx.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\FTGL\include\FTBBox.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\FTGL\include\FTBitmapGlyph.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\FTGL\include\FTCharmap.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\FTGL\include\FTCharToGlyphIndexMap.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\FTGL\include\FTContour.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\FTGL\include\FTExtrdGlyph.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\FTGL\include\FTFace.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\FTGL\include\FTFont.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\FTGL\include\FTGL.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\FTGL\include\FTGLBitmapFont.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\FTGL\include\FTGLExtrdFont.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\FTGL\include\FTGLOutlineFont.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\FTGL\include\FTGLPixmapFont.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\FTGL\include\FTGLPolygonFont.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\FTGL\include\FTGLTextureFont.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\FTGL\include\FTGlyph.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\FTGL\include\FTGlyphContainer.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\FTGL\include\FTLibrary.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\FTGL\include\FTList.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\FTGL\include\FTOutlineGlyph.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\FTGL\include\FTPixmapGlyph.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\FTGL\include\FTPoint.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\FTGL\include\FTPolyGlyph.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\FTGL\include\FTSize.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\FTGL\include\FTTextureGlyph.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\FTGL\include\FTVector.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\FTGL\include\FTVectoriser.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\AL\include\al.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\AL\include\alc.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\libvorbis-1.3.3\include\vorbis\codec.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\libvorbis-1.3.3\include\vorbis\vorbisenc.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\libvorbis-1.3.3\include\vorbis\vorbisfile.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\libogg-1.3.0\include\ogg\ogg.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\libogg-1.3.0\include\ogg\os_types.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\gl\gl.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\gl\gles.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\gl\glext.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\SDL12\include\begin_code.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\SDL12\include\close_code.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\SDL12\include\SDL.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\SDL12\include\SDL_active.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\SDL12\include\SDL_audio.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\SDL12\include\SDL_byteorder.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\SDL12\include\SDL_cdrom.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\SDL12\include\SDL_config.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\SDL12\include\SDL_cpuinfo.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\SDL12\include\SDL_endian.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\SDL12\include\SDL_error.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\SDL12\include\SDL_events.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\SDL12\include\SDL_getenv.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\SDL12\include\SDL_joystick.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\SDL12\include\SDL_keyboard.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\SDL12\include\SDL_keysym.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\SDL12\include\SDL_loadso.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\SDL12\include\SDL_main.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\SDL12\include\SDL_mouse.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\SDL12\include\SDL_mutex.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\SDL12\include\SDL_name.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\SDL12\include\SDL_net.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\SDL12\include\SDL_opengl.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\SDL12\include\SDL_platform.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\SDL12\include\SDL_quit.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\SDL12\include\SDL_rwops.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\SDL12\include\SDL_stdinc.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\SDL12\include\SDL_syswm.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\SDL12\include\SDL_thread.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\SDL12\include\SDL_timer.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\SDL12\include\SDL_types.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\SDL12\include\SDL_version.h" />
|
||||
<ClInclude Include="..\..\ExternalLibs\SDL12\include\SDL_video.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\ExternalLibs\DeflateCompressor.cpp" />
|
||||
<ClCompile Include="..\..\ExternalLibs\FileAPI.cpp" />
|
||||
<ClCompile Include="..\..\ExternalLibs\minihttp.cpp" />
|
||||
<ClCompile Include="..\..\ExternalLibs\tinyxml.cpp" />
|
||||
<ClCompile Include="..\..\ExternalLibs\tinyxmlerror.cpp" />
|
||||
<ClCompile Include="..\..\ExternalLibs\tinyxmlparser.cpp" />
|
||||
<ClCompile Include="..\..\ExternalLibs\glpng\glpng.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\glpng\png\png.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\glpng\png\pngerror.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\glpng\png\pngget.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\glpng\png\pngmem.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\glpng\png\pngpread.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\glpng\png\pngread.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\glpng\png\pngrio.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\glpng\png\pngrtran.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\glpng\png\pngrutil.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\glpng\png\pngset.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\glpng\png\pngtrans.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\glpng\zlib\adler32.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\glpng\zlib\compress.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\glpng\zlib\crc32.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\glpng\zlib\deflate.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\glpng\zlib\infback.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\glpng\zlib\inffast.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\glpng\zlib\inflate.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\glpng\zlib\inftrees.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\glpng\zlib\trees.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\glpng\zlib\uncompr.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\glpng\zlib\zutil.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\FTGL\src\FTBitmapGlyph.cpp" />
|
||||
<ClCompile Include="..\..\ExternalLibs\FTGL\src\FTCharmap.cpp" />
|
||||
<ClCompile Include="..\..\ExternalLibs\FTGL\src\FTContour.cpp" />
|
||||
<ClCompile Include="..\..\ExternalLibs\FTGL\src\FTExtrdGlyph.cpp" />
|
||||
<ClCompile Include="..\..\ExternalLibs\FTGL\src\FTFace.cpp" />
|
||||
<ClCompile Include="..\..\ExternalLibs\FTGL\src\FTFont.cpp" />
|
||||
<ClCompile Include="..\..\ExternalLibs\FTGL\src\FTGLBitmapFont.cpp" />
|
||||
<ClCompile Include="..\..\ExternalLibs\FTGL\src\FTGLExtrdFont.cpp" />
|
||||
<ClCompile Include="..\..\ExternalLibs\FTGL\src\FTGLOutlineFont.cpp" />
|
||||
<ClCompile Include="..\..\ExternalLibs\FTGL\src\FTGLPixmapFont.cpp" />
|
||||
<ClCompile Include="..\..\ExternalLibs\FTGL\src\FTGLPolygonFont.cpp" />
|
||||
<ClCompile Include="..\..\ExternalLibs\FTGL\src\FTGLTextureFont.cpp" />
|
||||
<ClCompile Include="..\..\ExternalLibs\FTGL\src\FTGlyph.cpp" />
|
||||
<ClCompile Include="..\..\ExternalLibs\FTGL\src\FTGlyphContainer.cpp" />
|
||||
<ClCompile Include="..\..\ExternalLibs\FTGL\src\FTLibrary.cpp" />
|
||||
<ClCompile Include="..\..\ExternalLibs\FTGL\src\FTOutlineGlyph.cpp" />
|
||||
<ClCompile Include="..\..\ExternalLibs\FTGL\src\FTPixmapGlyph.cpp" />
|
||||
<ClCompile Include="..\..\ExternalLibs\FTGL\src\FTPoint.cpp" />
|
||||
<ClCompile Include="..\..\ExternalLibs\FTGL\src\FTPolyGlyph.cpp" />
|
||||
<ClCompile Include="..\..\ExternalLibs\FTGL\src\FTSize.cpp" />
|
||||
<ClCompile Include="..\..\ExternalLibs\FTGL\src\FTTextureGlyph.cpp" />
|
||||
<ClCompile Include="..\..\ExternalLibs\libogg-1.3.0\src\bitwise.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\libogg-1.3.0\src\framing.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\libvorbis-1.3.3\lib\analysis.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\libvorbis-1.3.3\lib\bitrate.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\libvorbis-1.3.3\lib\block.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\libvorbis-1.3.3\lib\codebook.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\libvorbis-1.3.3\lib\envelope.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\libvorbis-1.3.3\lib\floor0.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\libvorbis-1.3.3\lib\floor1.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\libvorbis-1.3.3\lib\info.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\libvorbis-1.3.3\lib\lookup.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\libvorbis-1.3.3\lib\lpc.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\libvorbis-1.3.3\lib\lsp.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\libvorbis-1.3.3\lib\mapping0.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\libvorbis-1.3.3\lib\mdct.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\libvorbis-1.3.3\lib\psy.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\libvorbis-1.3.3\lib\registry.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\libvorbis-1.3.3\lib\res0.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\libvorbis-1.3.3\lib\sharedbook.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\libvorbis-1.3.3\lib\smallft.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\libvorbis-1.3.3\lib\synthesis.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\libvorbis-1.3.3\lib\vorbisenc.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\libvorbis-1.3.3\lib\vorbisfile.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\libvorbis-1.3.3\lib\window.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\freetype2\src\autofit\autofit.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\freetype2\src\bdf\bdf.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\freetype2\src\cff\cff.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\freetype2\src\base\ftapi.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\freetype2\src\base\ftbase.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\freetype2\src\base\ftbbox.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\freetype2\src\base\ftbdf.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\freetype2\src\base\ftbitmap.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\freetype2\src\cache\ftcache.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\freetype2\src\base\ftcid.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\freetype2\src\base\ftdebug.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\freetype2\src\base\ftfstype.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\freetype2\src\base\ftgasp.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\freetype2\src\base\ftglyph.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\freetype2\src\base\ftgxval.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\freetype2\src\gzip\ftgzip.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\freetype2\src\base\ftinit.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\freetype2\src\base\ftlcdfil.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\freetype2\src\lzw\ftlzw.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\freetype2\src\base\ftmm.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\freetype2\src\base\ftotval.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\freetype2\src\base\ftpatent.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\freetype2\src\base\ftpfr.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\freetype2\src\base\ftstroke.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\freetype2\src\base\ftsynth.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\freetype2\src\base\ftsystem.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\freetype2\src\base\fttype1.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\freetype2\src\base\ftwinfnt.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\freetype2\src\base\ftxf86.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\freetype2\src\pcf\pcf.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\freetype2\src\pfr\pfr.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\freetype2\src\psaux\psaux.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\freetype2\src\pshinter\pshinter.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\freetype2\src\psnames\psmodule.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\freetype2\src\raster\raster.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\freetype2\src\sfnt\sfnt.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\freetype2\src\smooth\smooth.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\freetype2\src\truetype\truetype.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\freetype2\src\type1\type1.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\freetype2\src\cid\type1cid.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\freetype2\src\type42\type42.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\freetype2\src\winfonts\winfnt.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\glfont2\glfont2.cpp" />
|
||||
<ClCompile Include="..\..\ExternalLibs\lua-5.1.4\src\lapi.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\lua-5.1.4\src\lauxlib.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\lua-5.1.4\src\lbaselib.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\lua-5.1.4\src\lcode.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\lua-5.1.4\src\ldblib.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\lua-5.1.4\src\ldebug.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\lua-5.1.4\src\ldo.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\lua-5.1.4\src\ldump.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\lua-5.1.4\src\lfunc.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\lua-5.1.4\src\lgc.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\lua-5.1.4\src\linit.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\lua-5.1.4\src\liolib.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\lua-5.1.4\src\llex.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\lua-5.1.4\src\lmathlib.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\lua-5.1.4\src\lmem.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\lua-5.1.4\src\loadlib.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\lua-5.1.4\src\lobject.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\lua-5.1.4\src\lopcodes.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\lua-5.1.4\src\loslib.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\lua-5.1.4\src\lparser.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\lua-5.1.4\src\lstate.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\lua-5.1.4\src\lstring.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\lua-5.1.4\src\lstrlib.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\lua-5.1.4\src\ltable.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\lua-5.1.4\src\ltablib.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\lua-5.1.4\src\ltm.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\lua-5.1.4\src\lundump.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\lua-5.1.4\src\lvm.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\lua-5.1.4\src\lzio.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\lua-5.1.4\src\print.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\ttvfs\VFSAtomic.cpp" />
|
||||
<ClCompile Include="..\..\ExternalLibs\ttvfs\VFSBase.cpp" />
|
||||
<ClCompile Include="..\..\ExternalLibs\ttvfs\VFSDir.cpp" />
|
||||
<ClCompile Include="..\..\ExternalLibs\ttvfs\VFSFile.cpp" />
|
||||
<ClCompile Include="..\..\ExternalLibs\ttvfs\VFSFileFuncs.cpp" />
|
||||
<ClCompile Include="..\..\ExternalLibs\ttvfs\VFSHelper.cpp" />
|
||||
<ClCompile Include="..\..\ExternalLibs\ttvfs\VFSLoader.cpp" />
|
||||
<ClCompile Include="..\..\ExternalLibs\ttvfs\VFSTools.cpp" />
|
||||
<ClCompile Include="..\..\ExternalLibs\ttvfs_zip\miniz.c" />
|
||||
<ClCompile Include="..\..\ExternalLibs\ttvfs_zip\VFSDirZip.cpp" />
|
||||
<ClCompile Include="..\..\ExternalLibs\ttvfs_zip\VFSFileZip.cpp" />
|
||||
<ClCompile Include="..\..\ExternalLibs\ttvfs_zip\VFSZipArchiveLoader.cpp" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
60
files/data/localecase.txt
Normal file
60
files/data/localecase.txt
Normal file
|
@ -0,0 +1,60 @@
|
|||
a A
|
||||
b B
|
||||
c C
|
||||
d D
|
||||
e E
|
||||
f F
|
||||
g G
|
||||
h H
|
||||
i I
|
||||
j J
|
||||
k K
|
||||
l L
|
||||
m M
|
||||
n N
|
||||
o O
|
||||
p P
|
||||
q Q
|
||||
r R
|
||||
s S
|
||||
t T
|
||||
u U
|
||||
v V
|
||||
w W
|
||||
x X
|
||||
y Y
|
||||
z Z
|
||||
š Š
|
||||
œ Œ
|
||||
ž Ž
|
||||
ÿ Ÿ
|
||||
à À
|
||||
á Á
|
||||
â Â
|
||||
ã Ã
|
||||
ä Ä
|
||||
å Å
|
||||
æ Æ
|
||||
ç Ç
|
||||
è È
|
||||
é É
|
||||
ê Ê
|
||||
ë Ë
|
||||
ì Ì
|
||||
í Í
|
||||
î Î
|
||||
ï Ï
|
||||
ð Ð
|
||||
ñ Ñ
|
||||
ò Ò
|
||||
ó Ó
|
||||
ô Ô
|
||||
õ Õ
|
||||
ö Ö
|
||||
ø Ø
|
||||
ù Ù
|
||||
ú Ú
|
||||
û Û
|
||||
ü Ü
|
||||
ý Ý
|
||||
þ Þ
|
72
files/locales/ru/data/localecase.txt
Normal file
72
files/locales/ru/data/localecase.txt
Normal file
|
@ -0,0 +1,72 @@
|
|||
a A
|
||||
b B
|
||||
c C
|
||||
d D
|
||||
e E
|
||||
f F
|
||||
g G
|
||||
h H
|
||||
i I
|
||||
j J
|
||||
k K
|
||||
l L
|
||||
m M
|
||||
n N
|
||||
o O
|
||||
p P
|
||||
q Q
|
||||
r R
|
||||
s S
|
||||
t T
|
||||
u U
|
||||
v V
|
||||
w W
|
||||
x X
|
||||
y Y
|
||||
z Z
|
||||
<EFBFBD> €
|
||||
ƒ <20>
|
||||
š Š
|
||||
œ Œ
|
||||
<EFBFBD> <20>
|
||||
ž Ž
|
||||
Ÿ <20>
|
||||
¢ ¡
|
||||
¼ £
|
||||
´ ¥
|
||||
¸ ¨
|
||||
º ª
|
||||
¾ ½
|
||||
¿ ¯
|
||||
à À
|
||||
ð Ð
|
||||
á Á
|
||||
ñ Ñ
|
||||
â Â
|
||||
ò Ò
|
||||
ã Ã
|
||||
ó Ó
|
||||
ä Ä
|
||||
ô Ô
|
||||
å Å
|
||||
õ Õ
|
||||
æ Æ
|
||||
ö Ö
|
||||
ç Ç
|
||||
÷ ×
|
||||
è È
|
||||
ø Ø
|
||||
é É
|
||||
ù Ù
|
||||
ê Ê
|
||||
ú Ú
|
||||
ë Ë
|
||||
û Û
|
||||
ì Ì
|
||||
ü Ü
|
||||
í Í
|
||||
ý Ý
|
||||
î Î
|
||||
þ Þ
|
||||
ï Ï
|
||||
ÿ ß
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue