1
0
Fork 0
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:
fgenesis 2013-12-11 01:01:04 +00:00
commit 313b539981
812 changed files with 4822 additions and 1579 deletions

View file

@ -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);

View file

@ -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)

View file

@ -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

View file

@ -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!

View file

@ -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;
}

View file

@ -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

View file

@ -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),

View file

@ -559,6 +559,8 @@ void UserSettings::load(bool doApply, const std::string &overrideFile)
setUsedLocale(system.locale);
}
core->initLocalization();
if (doApply)
apply();
}

View file

@ -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"

View file

@ -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

View file

@ -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);
}
}

View file

@ -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);
}

View file

@ -1310,6 +1310,8 @@ public:
virtual void onBackgroundUpdate();
void initLocalization();
protected:
std::string fpsDebugString;

View file

@ -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)

View file

@ -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;

View file

@ -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
View 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

View file

@ -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);

View file

@ -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
View 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
View 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

View 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="&quot;$(SolutionDir)\..\ExternalLibs\freetype2\include\freetype\config&quot;;&quot;$(SolutionDir)\..\ExternalLibs\gl&quot;;&quot;$(SolutionDir)\..\ExternalLibs\glpng\zlib&quot;;&quot;$(SolutionDir)\..\ExternalLibs\glpng\png&quot;;&quot;$(SolutionDir)\..\ExternalLibs\libogg-1.3.0\include&quot;;&quot;$(SolutionDir)\..\ExternalLibs\libvorbis-1.3.3\include&quot;;&quot;$(SolutionDir)\..\ExternalLibs\freetype2\include&quot;;&quot;$(SolutionDir)\..\ExternalLibs\FTGL\include&quot;;&quot;$(SolutionDir)\..\ExternalLibs\SDL2\include&quot;;&quot;$(SolutionDir)\..\ExternalLibs\AL\include&quot;;&quot;$(SolutionDir)\..\BBGE&quot;;&quot;$(SolutionDir)\..\ExternalLibs\lua-5.1.4\src&quot;;&quot;$(SolutionDir)\..\ExternalLibs\lvpa\include&quot;;&quot;$(SolutionDir)\..\ExternalLibs\lvpa&quot;;&quot;$(SolutionDir)\..\ExternalLibs\ttvfs&quot;;&quot;$(SolutionDir)\..\ExternalLibs&quot;"
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="&quot;$(SolutionDir)\..\ExternalLibs\freetype2\include\freetype\config&quot;;&quot;$(SolutionDir)\..\ExternalLibs\gl&quot;;&quot;$(SolutionDir)\..\ExternalLibs\glpng\zlib&quot;;&quot;$(SolutionDir)\..\ExternalLibs\glpng\png&quot;;&quot;$(SolutionDir)\..\ExternalLibs\libogg-1.3.0\include&quot;;&quot;$(SolutionDir)\..\ExternalLibs\libvorbis-1.3.3\include&quot;;&quot;$(SolutionDir)\..\ExternalLibs\freetype2\include&quot;;&quot;$(SolutionDir)\..\ExternalLibs\FTGL\include&quot;;&quot;$(SolutionDir)\..\ExternalLibs\SDL2\include&quot;;&quot;$(SolutionDir)\..\ExternalLibs\AL\include&quot;;&quot;$(SolutionDir)\..\BBGE&quot;;&quot;$(SolutionDir)\..\ExternalLibs\lua-5.1.4\src&quot;;&quot;$(SolutionDir)\..\ExternalLibs\lvpa\include&quot;;&quot;$(SolutionDir)\..\ExternalLibs\lvpa&quot;;&quot;$(SolutionDir)\..\ExternalLibs\ttvfs&quot;;&quot;$(SolutionDir)\..\ExternalLibs&quot;"
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>

View 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
View 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="&quot;$(SolutionDir)\..\ExternalLibs\freetype2\include\freetype\config&quot;;&quot;$(SolutionDir)\..\ExternalLibs\gl&quot;;&quot;$(SolutionDir)\..\ExternalLibs\glpng\zlib&quot;;&quot;$(SolutionDir)\..\ExternalLibs\glpng\png&quot;;&quot;$(SolutionDir)\..\ExternalLibs\libogg-1.3.0\include&quot;;&quot;$(SolutionDir)\..\ExternalLibs\libvorbis-1.3.3\include&quot;;&quot;$(SolutionDir)\..\ExternalLibs\freetype2\include&quot;;&quot;$(SolutionDir)\..\ExternalLibs\FTGL\include&quot;;&quot;$(SolutionDir)\..\ExternalLibs\SDL2\include&quot;;&quot;$(SolutionDir)\..\ExternalLibs\AL\include&quot;;&quot;$(SolutionDir)\..\ExternalLibs\ttvfs&quot;;&quot;$(SolutionDir)\..\ExternalLibs\lvpa&quot;;&quot;$(SolutionDir)\..\ExternalLibs\lvpa\include&quot;;&quot;$(SolutionDir)\..\ExternalLibs&quot;"
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="&quot;$(SolutionDir)\..\ExternalLibs\AL\lib\win32&quot;;&quot;$(SolutionDir)\..\ExternalLibs\SDL2\lib\win32&quot;"
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="&quot;$(SolutionDir)\..\ExternalLibs\freetype2\include\freetype\config&quot;;&quot;$(SolutionDir)\..\ExternalLibs\gl&quot;;&quot;$(SolutionDir)\..\ExternalLibs\glpng\zlib&quot;;&quot;$(SolutionDir)\..\ExternalLibs\glpng\png&quot;;&quot;$(SolutionDir)\..\ExternalLibs\libogg-1.3.0\include&quot;;&quot;$(SolutionDir)\..\ExternalLibs\libvorbis-1.3.3\include&quot;;&quot;$(SolutionDir)\..\ExternalLibs\freetype2\include&quot;;&quot;$(SolutionDir)\..\ExternalLibs\FTGL\include&quot;;&quot;$(SolutionDir)\..\ExternalLibs\SDL2\include&quot;;&quot;$(SolutionDir)\..\ExternalLibs\AL\include&quot;;&quot;$(SolutionDir)\..\ExternalLibs\ttvfs&quot;;&quot;$(SolutionDir)\..\ExternalLibs\lvpa&quot;;&quot;$(SolutionDir)\..\ExternalLibs\lvpa\include&quot;;&quot;$(SolutionDir)\..\ExternalLibs&quot;"
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="&quot;$(SolutionDir)\..\ExternalLibs\AL\lib\win32&quot;;&quot;$(SolutionDir)\..\ExternalLibs\SDL2\lib\win32&quot;"
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
View 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>

File diff suppressed because it is too large Load diff

View 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
View 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
š Š
œ Œ
ž Ž
ÿ Ÿ
à À
á Á
â Â
ã Ã
ä Ä
å Å
æ Æ
ç Ç
è È
é É
ê Ê
ë Ë
ì Ì
í Í
î Î
ï Ï
ð Ð
ñ Ñ
ò Ò
ó Ó
ô Ô
õ Õ
ö Ö
ø Ø
ù Ù
ú Ú
û Û
ü Ü
ý Ý
þ Þ

View 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