1
0
Fork 0
mirror of https://github.com/AquariaOSE/Aquaria.git synced 2024-11-25 09:44:02 +00:00

remove dsq->game-> indirection inside Game

This commit is contained in:
fgenesis 2023-05-31 17:43:27 +02:00
parent dc5d385864
commit 9047e5e083

View file

@ -456,7 +456,7 @@ void Game::fillGridFromQuad(Quad *q, ObsType obsType, bool trim)
//if (num >= int((szx*szy))) //if (num >= int((szx*szy)))
{ {
// add tile // add tile
//dsq->game->setGrid(TileVector(int(tx/TILE_SIZE)+tpos.x, int(ty/TILE_SIZE)+tpos.y), 1); //setGrid(TileVector(int(tx/TILE_SIZE)+tpos.x, int(ty/TILE_SIZE)+tpos.y), 1);
obs.push_back(TileVector(int(tx/TILE_SIZE), int(ty/TILE_SIZE))); obs.push_back(TileVector(int(tx/TILE_SIZE), int(ty/TILE_SIZE)));
} }
} }
@ -512,8 +512,8 @@ void Game::fillGridFromQuad(Quad *q, ObsType obsType, bool trim)
float y = transformMatrix[3][1]; float y = transformMatrix[3][1];
TileVector tvec(tpos.x+w2+x, tpos.y+h2+y); TileVector tvec(tpos.x+w2+x, tpos.y+h2+y);
if (!dsq->game->isObstructed(tvec)) if (!isObstructed(tvec))
dsq->game->addGrid(tvec, obsType); addGrid(tvec, obsType);
} }
#else #else
glPushMatrix(); glPushMatrix();
@ -536,10 +536,10 @@ void Game::fillGridFromQuad(Quad *q, ObsType obsType, bool trim)
float x = m[12]; float x = m[12];
float y = m[13]; float y = m[13];
//dsq->game->setGrid(TileVector(tpos.x+(w2*TILE_SIZE)+(x/TILE_SIZE), tpos.y+(h2*TILE_SIZE)+(y/TILE_SIZE)), obsType); //setGrid(TileVector(tpos.x+(w2*TILE_SIZE)+(x/TILE_SIZE), tpos.y+(h2*TILE_SIZE)+(y/TILE_SIZE)), obsType);
TileVector tvec(tpos.x+w2+x, tpos.y+h2+y); TileVector tvec(tpos.x+w2+x, tpos.y+h2+y);
if (!dsq->game->isObstructed(tvec)) if (!isObstructed(tvec))
dsq->game->addGrid(tvec, obsType); addGrid(tvec, obsType);
} }
glPopMatrix(); glPopMatrix();
@ -628,8 +628,8 @@ void Game::trimGrid()
for (int x = 0; x < MAX_GRID; x++) for (int x = 0; x < MAX_GRID; x++)
{ {
const unsigned char *curCol = grid[x]; // safe const unsigned char *curCol = grid[x]; // safe
const unsigned char *leftCol = dsq->game->getGridColumn(x-1); // unsafe const unsigned char *leftCol = getGridColumn(x-1); // unsafe
const unsigned char *rightCol = dsq->game->getGridColumn(x+1); // unsafe const unsigned char *rightCol = getGridColumn(x+1); // unsafe
for (int y = 0; y < MAX_GRID; y++) for (int y = 0; y < MAX_GRID; y++)
{ {
if (curCol[y] & OT_MASK_BLACK) if (curCol[y] & OT_MASK_BLACK)
@ -1209,9 +1209,9 @@ Path *Game::getNearestPath(const Vector &pos, const std::string &s, const Path *
float smallestDist = HUGE_VALF; float smallestDist = HUGE_VALF;
std::string st = s; std::string st = s;
stringToLower(st); stringToLower(st);
for (size_t i = 0; i < dsq->game->paths.size(); i++) for (size_t i = 0; i < paths.size(); i++)
{ {
Path *cp = dsq->game->paths[i]; Path *cp = paths[i];
if (cp != ignore && !cp->nodes.empty() && (st.empty() || st == cp->label)) if (cp != ignore && !cp->nodes.empty() && (st.empty() || st == cp->label))
{ {
const Vector v = cp->nodes[0].position - pos; const Vector v = cp->nodes[0].position - pos;
@ -1230,7 +1230,7 @@ Path *Game::getNearestPath(const Vector &pos, PathType pathType)
{ {
Path *closest = 0; Path *closest = 0;
float smallestDist = HUGE_VALF; float smallestDist = HUGE_VALF;
for (Path *cp = dsq->game->getFirstPathOfType(pathType); cp; cp = cp->nextOfType) for (Path *cp = getFirstPathOfType(pathType); cp; cp = cp->nextOfType)
{ {
if (!cp->nodes.empty()) if (!cp->nodes.empty())
{ {
@ -2165,7 +2165,7 @@ bool Game::saveScene(std::string scene)
if (level) if (level)
{ {
level->SetAttribute("waterLevel", dsq->game->saveWaterLevel); level->SetAttribute("waterLevel", saveWaterLevel);
if (grad) if (grad)
{ {
@ -2196,10 +2196,10 @@ bool Game::saveScene(std::string scene)
saveFile.InsertEndChild(obsXml); saveFile.InsertEndChild(obsXml);
for (size_t i = 0; i < dsq->game->getNumPaths(); i++) for (size_t i = 0; i < getNumPaths(); i++)
{ {
XMLElement *pathXml = saveFile.NewElement("Path"); XMLElement *pathXml = saveFile.NewElement("Path");
Path *p = dsq->game->getPath(i); Path *p = getPath(i);
pathXml->SetAttribute("name", p->name.c_str()); pathXml->SetAttribute("name", p->name.c_str());
for (size_t n = 0; n < p->nodes.size(); n++) for (size_t n = 0; n < p->nodes.size(); n++)
{ {
@ -2252,14 +2252,14 @@ bool Game::saveScene(std::string scene)
tagBitsUsed[e->bgLayer] |= e->tag; tagBitsUsed[e->bgLayer] |= e->tag;
} }
if (dsq->game->entitySaveData.size() > 0) if (entitySaveData.size() > 0)
{ {
XMLElement *entitiesNode = saveFile.NewElement("Entities"); XMLElement *entitiesNode = saveFile.NewElement("Entities");
std::ostringstream os; std::ostringstream os;
for (size_t i = 0; i < dsq->game->entitySaveData.size(); i++) for (size_t i = 0; i < entitySaveData.size(); i++)
{ {
EntitySaveData *e = &dsq->game->entitySaveData[i]; EntitySaveData *e = &entitySaveData[i];
os << e->idx << " "; os << e->idx << " ";
if (e->idx == -1) if (e->idx == -1)
@ -2527,11 +2527,11 @@ void Game::updateParticlePause()
int game_collideParticle(Vector pos) int game_collideParticle(Vector pos)
{ {
bool aboveWaterLine = (pos.y <= dsq->game->waterLevel.x+20); bool aboveWaterLine = (pos.y <= game->waterLevel.x+20);
bool inWaterBubble = false; bool inWaterBubble = false;
if (!aboveWaterLine) if (!aboveWaterLine)
{ {
Path *p = dsq->game->getNearestPath(pos, PATH_WATERBUBBLE); Path *p = game->getNearestPath(pos, PATH_WATERBUBBLE);
if (p && p->active) if (p && p->active)
{ {
if (p->isCoordinateInside(pos)) if (p->isCoordinateInside(pos))
@ -2546,7 +2546,7 @@ int game_collideParticle(Vector pos)
} }
TileVector t(pos); TileVector t(pos);
return dsq->game->isObstructed(t); return game->isObstructed(t);
} }
void Game::rebuildElementUpdateList() void Game::rebuildElementUpdateList()
@ -2721,7 +2721,7 @@ void Game::applyState()
for (int i = LR_ELEMENTS1; i <= LR_ELEMENTS12; i++) // LR_ELEMENTS13 is darkness, stop before that for (int i = LR_ELEMENTS1; i <= LR_ELEMENTS12; i++) // LR_ELEMENTS13 is darkness, stop before that
{ {
dsq->game->setElementLayerVisible(i-LR_ELEMENTS1, true); setElementLayerVisible(i-LR_ELEMENTS1, true);
} }
dsq->applyParallaxUserSettings(); dsq->applyParallaxUserSettings();
@ -2927,7 +2927,7 @@ void Game::applyState()
if (toFlip == 1) if (toFlip == 1)
{ {
dsq->game->avatar->flipHorizontal(); avatar->flipHorizontal();
toFlip = -1; toFlip = -1;
} }
@ -3033,9 +3033,9 @@ void Game::applyState()
Path *closest = 0; Path *closest = 0;
Vector closestPushOut; Vector closestPushOut;
bool doFlip = false; bool doFlip = false;
for (size_t i = 0; i < dsq->game->getNumPaths(); i++) for (size_t i = 0; i < getNumPaths(); i++)
{ {
Path *p = dsq->game->getPath(i); Path *p = getPath(i);
Vector pos = p->nodes[0].position; Vector pos = p->nodes[0].position;
if (p && (nocasecmp(p->warpMap, fromScene)==0)) if (p && (nocasecmp(p->warpMap, fromScene)==0))
{ {
@ -3101,7 +3101,7 @@ void Game::applyState()
} }
else if (!toNode.empty()) else if (!toNode.empty())
{ {
Path *p = dsq->game->getPathByName(toNode); Path *p = getPathByName(toNode);
if (p) if (p)
{ {
avatar->position = p->nodes[0].position; avatar->position = p->nodes[0].position;
@ -3365,11 +3365,11 @@ void Game::overrideZoom(float sz, float t)
{ {
if (sz == 0) if (sz == 0)
{ {
dsq->game->toggleOverrideZoom(false); toggleOverrideZoom(false);
} }
else else
{ {
dsq->game->toggleOverrideZoom(true); toggleOverrideZoom(true);
dsq->globalScale.stop(); dsq->globalScale.stop();
dsq->globalScale.interpolateTo(Vector(sz, sz), t); dsq->globalScale.interpolateTo(Vector(sz, sz), t);
dsq->globalScaleChanged(); dsq->globalScaleChanged();
@ -3624,7 +3624,7 @@ void Game::onToggleHelpScreen()
void Game::toggleHelpScreen(bool on, const std::string &label) void Game::toggleHelpScreen(bool on, const std::string &label)
{ {
if (dsq->game->isSceneEditorActive()) return; if (isSceneEditorActive()) return;
if (inHelpScreen == on) return; if (inHelpScreen == on) return;
if (core->getShiftState()) return; if (core->getShiftState()) return;
@ -3856,9 +3856,9 @@ void Game::onPressEscape(int source, InputDevice device)
toggleHelpScreen(false); toggleHelpScreen(false);
return; return;
} }
if (dsq->game->worldMapRender->isOn() && !dsq->isNested()) if (worldMapRender->isOn() && !dsq->isNested())
{ {
dsq->game->worldMapRender->toggle(false); worldMapRender->toggle(false);
return; return;
} }
@ -4062,11 +4062,11 @@ void Game::preLocalWarp(LocalWarpType localWarpType)
// won't work if you start the map inside a local warp area... but that doesn't happen much for collecting gems // won't work if you start the map inside a local warp area... but that doesn't happen much for collecting gems
if (localWarpType == LOCALWARP_IN) if (localWarpType == LOCALWARP_IN)
{ {
dsq->game->avatar->warpInLocal = dsq->game->avatar->position; avatar->warpInLocal = avatar->position;
} }
else if (localWarpType == LOCALWARP_OUT) else if (localWarpType == LOCALWARP_OUT)
{ {
dsq->game->avatar->warpInLocal = Vector(0,0,0); avatar->warpInLocal = Vector(0,0,0);
} }
dsq->screenTransition->capture(); dsq->screenTransition->capture();
@ -4075,11 +4075,11 @@ void Game::preLocalWarp(LocalWarpType localWarpType)
void Game::postLocalWarp() void Game::postLocalWarp()
{ {
if (dsq->game->li && dsq->continuity.hasLi()) if (li && dsq->continuity.hasLi())
dsq->game->li->position = dsq->game->avatar->position; li->position = avatar->position;
if (dsq->game->avatar->pullTarget) if (avatar->pullTarget)
dsq->game->avatar->pullTarget->position = dsq->game->avatar->position; avatar->pullTarget->position = avatar->position;
dsq->game->snapCam(); snapCam();
dsq->screenTransition->transition(0.6f); dsq->screenTransition->transition(0.6f);
} }
@ -4125,7 +4125,7 @@ bool Game::isEntityCollideWithShot(Entity *e, Shot *shot)
else if (e->getEntityType() == ET_AVATAR) else if (e->getEntityType() == ET_AVATAR)
{ {
// this used to be stuff != ET_AVATAR.. but what else would do that // this used to be stuff != ET_AVATAR.. but what else would do that
return !dsq->game->isDamageTypeAvatar(shot->getDamageType()) && (!shot->firer || shot->firer->getEntityType() == ET_ENEMY); return !isDamageTypeAvatar(shot->getDamageType()) && (!shot->firer || shot->firer->getEntityType() == ET_ENEMY);
} }
else if (e->getEntityType() == ET_PET) else if (e->getEntityType() == ET_PET)
{ {
@ -4306,10 +4306,10 @@ void Game::updateCursor(float dt)
} }
else if (dsq->getInputMode() == INPUT_JOYSTICK) else if (dsq->getInputMode() == INPUT_JOYSTICK)
{ {
if (!dsq->game->isPaused() || dsq->game->isInGameMenu() || !dsq->game->avatar->isInputEnabled()) if (!isPaused() || isInGameMenu() || !avatar->isInputEnabled())
{ {
int offy = -60; int offy = -60;
if (dsq->game->isInGameMenu() || !dsq->game->avatar->isInputEnabled()) if (isInGameMenu() || !avatar->isInputEnabled())
{ {
//cursor->setTexture(""); //cursor->setTexture("");
offy = 0; offy = 0;
@ -4329,15 +4329,15 @@ void Game::updateCursor(float dt)
} }
} }
if (isSceneEditorActive() || dsq->game->isPaused() || (!avatar || !avatar->isInputEnabled()) || if (isSceneEditorActive() || isPaused() || (!avatar || !avatar->isInputEnabled()) ||
(dsq->game->miniMapRender && dsq->game->miniMapRender->isCursorIn()) (miniMapRender && miniMapRender->isCursorIn())
) )
{ {
dsq->setCursor(CURSOR_NORMAL); dsq->setCursor(CURSOR_NORMAL);
// Don't show the cursor in keyboard/joystick mode if it's not // Don't show the cursor in keyboard/joystick mode if it's not
// already visible (this keeps the cursor from appearing for an // already visible (this keeps the cursor from appearing for an
// instant during map fadeout). // instant during map fadeout).
if (dsq->getInputMode() == INPUT_MOUSE || isSceneEditorActive() || dsq->game->isPaused()) if (dsq->getInputMode() == INPUT_MOUSE || isSceneEditorActive() || isPaused())
dsq->cursor->alphaMod = 0.5; dsq->cursor->alphaMod = 0.5;
/* /*
@ -4348,12 +4348,12 @@ void Game::updateCursor(float dt)
else if (avatar) else if (avatar)
{ {
//Vector v = avatar->getVectorToCursorFromScreenCentre(); //Vector v = avatar->getVectorToCursorFromScreenCentre();
if (dsq->getInputMode() == INPUT_JOYSTICK)// && !avatar->isSinging() && !dsq->game->isInGameMenu() && !dsq->game->isPaused()) if (dsq->getInputMode() == INPUT_JOYSTICK)// && !avatar->isSinging() && !isInGameMenu() && !isPaused())
{ {
dsq->cursor->alphaMod = 0; dsq->cursor->alphaMod = 0;
if (!avatar->isSinging()) if (!avatar->isSinging())
core->setMousePosition(core->center); core->setMousePosition(core->center);
if (!dsq->game->isPaused()) if (!isPaused())
{ {
/* /*
@ -4377,7 +4377,7 @@ void Game::updateCursor(float dt)
{ {
dsq->setCursor(CURSOR_SING); dsq->setCursor(CURSOR_SING);
} }
else if (dsq->game->isInGameMenu() || v.isLength2DIn(avatar->getStopDistance()) || (avatar->entityToActivate || avatar->pathToActivate)) else if (isInGameMenu() || v.isLength2DIn(avatar->getStopDistance()) || (avatar->entityToActivate || avatar->pathToActivate))
{ {
dsq->setCursor(CURSOR_NORMAL); dsq->setCursor(CURSOR_NORMAL);
} }
@ -4475,7 +4475,7 @@ bool Game::trace(Vector start, Vector target)
pos += mov; pos += mov;
if (dsq->game->isObstructed(TileVector(pos))) if (isObstructed(TileVector(pos)))
return false; return false;
@ -4492,7 +4492,7 @@ bool Game::trace(Vector start, Vector target)
{ {
TileVector tl(pos + pl*i);//(start.x + pl.x*i, start.y + pl.y*i); TileVector tl(pos + pl*i);//(start.x + pl.x*i, start.y + pl.y*i);
TileVector tr(pos + pr*i);//(start.x + pr.x*i, start.y + pr.y*i); TileVector tr(pos + pr*i);//(start.x + pr.x*i, start.y + pr.y*i);
if (dsq->game->isObstructed(tl) || dsq->game->isObstructed(tr)) if (isObstructed(tl) || isObstructed(tr))
return false; return false;
} }
@ -4506,8 +4506,8 @@ void Game::updateBgSfxLoop()
{ {
if (!avatar) return; if (!avatar) return;
Path *p = getNearestPath(dsq->game->avatar->position, PATH_BGSFXLOOP); Path *p = getNearestPath(avatar->position, PATH_BGSFXLOOP);
if (p && p->isCoordinateInside(dsq->game->avatar->position) && !p->content.empty()) if (p && p->isCoordinateInside(avatar->position) && !p->content.empty())
{ {
if (bgSfxLoopPlaying2 != p->content) if (bgSfxLoopPlaying2 != p->content)
{ {
@ -4540,10 +4540,10 @@ void Game::updateBgSfxLoop()
if (avatar->isUnderWater(avatar->getHeadPosition())) if (avatar->isUnderWater(avatar->getHeadPosition()))
{ {
dsq->game->switchBgLoop(0); switchBgLoop(0);
} }
else else
dsq->game->switchBgLoop(1); switchBgLoop(1);
} }
const float helpTextScrollSpeed = 800.0f; const float helpTextScrollSpeed = 800.0f;
@ -4643,9 +4643,9 @@ void Game::update(float dt)
size_t i = 0; size_t i = 0;
for (i = 0; i < dsq->game->getNumPaths(); i++) for (i = 0; i < getNumPaths(); i++)
{ {
dsq->game->getPath(i)->update(dt); getPath(i)->update(dt);
} }
FOR_ENTITIES(j) FOR_ENTITIES(j)
@ -4747,14 +4747,14 @@ void Game::update(float dt)
avatar->pathToActivate = 0; avatar->pathToActivate = 0;
// make sure you also disable entityToActivate // make sure you also disable entityToActivate
if (dsq->game && dsq->game->avatar->canActivateStuff()) if (dsq->game && avatar->canActivateStuff())
{ {
Path* p = dsq->game->getScriptedPathAtCursor(true); Path* p = getScriptedPathAtCursor(true);
if (p && p->cursorActivation) if (p && p->cursorActivation)
{ {
Vector diff = p->nodes[0].position - dsq->game->avatar->position; Vector diff = p->nodes[0].position - avatar->position;
if (p->isCoordinateInside(dsq->game->avatar->position) || diff.getSquaredLength2D() < sqr(p->activationRange)) if (p->isCoordinateInside(avatar->position) || diff.getSquaredLength2D() < sqr(p->activationRange))
{ {
//if (trace(avatar->position, p->nodes[0].position)) //if (trace(avatar->position, p->nodes[0].position))
{ {
@ -4795,7 +4795,7 @@ void Game::update(float dt)
if (avatar) if (avatar)
{ {
if (avatar->looking && !dsq->game->isPaused()) { if (avatar->looking && !isPaused()) {
Vector diff = avatar->getAim();//dsq->getGameCursorPosition() - avatar->position; Vector diff = avatar->getAim();//dsq->getGameCursorPosition() - avatar->position;
diff.capLength2D(maxLookDistance); diff.capLength2D(maxLookDistance);
dest += diff; dest += diff;
@ -5086,11 +5086,11 @@ void Game::removeState()
} }
dsq->continuity.zoom = core->globalScale; dsq->continuity.zoom = core->globalScale;
dsq->game->toggleOverrideZoom(false); toggleOverrideZoom(false);
dsq->game->avatar->myZoom.stop(); avatar->myZoom.stop();
dsq->globalScale.stop(); dsq->globalScale.stop();
dsq->game->avatar->myZoom = Vector(1,1); avatar->myZoom = Vector(1,1);
dsq->globalScale = Vector(1,1); dsq->globalScale = Vector(1,1);
core->globalScaleChanged(); core->globalScaleChanged();
@ -5284,7 +5284,7 @@ void Game::learnedRecipe(Recipe *r, bool effects)
{ {
if (effects) if (effects)
{ {
dsq->game->setControlHint(os.str(), 0, 0, 0, 3, std::string("gfx/ingredients/") + data->gfx); setControlHint(os.str(), 0, 0, 0, 3, std::string("gfx/ingredients/") + data->gfx);
} }
} }
} }