1
0
Fork 0
mirror of https://github.com/AquariaOSE/Aquaria.git synced 2025-06-08 01:22:02 +00:00

Merge branch 'experimental' into moreclean

Conflicts:
	Aquaria/Avatar.cpp
	Aquaria/BoxElement.cpp
	Aquaria/BubbleRender.cpp
	Aquaria/FFTNotes.cpp
	Aquaria/StarRenderer.cpp
	Aquaria/WaterFont.cpp
	Aquaria/resource.h
	BBGE/AnimatedSprite.cpp
	BBGE/AnimatedSprite.h
	BBGE/BloomEffect.cpp
	BBGE/CShim.cpp
	BBGE/Collision.cpp
	BBGE/Collision.h
	BBGE/Core.cpp
	BBGE/Core.h
	BBGE/Cube.cpp
	BBGE/Cutscene.cpp
	BBGE/DFSprite.cpp
	BBGE/DFSprite.h
	BBGE/Datafile.cpp
	BBGE/Datafile.h
	BBGE/Flags.h
	BBGE/Interpolator.cpp
	BBGE/Light.cpp
	BBGE/Light.h
	BBGE/LightCone.cpp
	BBGE/Model.cpp
	BBGE/Model.h
	BBGE/OggStream.cpp
	BBGE/PackRead.cpp
	BBGE/PointSprites.cpp
	BBGE/RenderObject.cpp
	BBGE/SkeletalSprite.cpp
This commit is contained in:
fgenesis 2016-05-10 18:40:01 +02:00
commit d6dc3a8a09
145 changed files with 1977 additions and 8889 deletions

View file

@ -18,4 +18,3 @@ 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.
*/
// moved

View file

@ -37,7 +37,6 @@ class TimelineRender : public RenderObject
{
void onRender()
{
#ifdef BBGE_BUILD_OPENGL
glLineWidth(1);
glBegin(GL_LINES);
glColor4f(1, 1, 1, 1);
@ -47,7 +46,6 @@ class TimelineRender : public RenderObject
glVertex3f(x, 5, 0);
}
glEnd();
#endif
}
};
@ -100,11 +98,7 @@ void KeyframeWidget::shiftRight()
void KeyframeWidget::onUpdate(float dt)
{
/*
if (this->key == ae->currentKey)
color = Vector(0.75, 0.75, 1);
else
*/
Quad::onUpdate(dt);
if (life != 1 || ae->editSprite->isAnimating()) return;
switch(ae->editSprite->getCurrentAnimation()->getKeyframe(this->key)->lerpType)
@ -139,7 +133,7 @@ void KeyframeWidget::onUpdate(float dt)
{
if (core->mouse.buttons.left)
{
//ae->selectionLocked = false;
movingWidget = this;
ae->currentKey = this->key;
}
@ -236,7 +230,7 @@ void AnimationEditor::applyState()
editSprite->cull = false;
editSprite->loadSkeletal(editingFile);
editSprite->position = Vector(400,300);
//editSprite->scale = Vector(0.5, 0.5);
addAction(MakeFunctionEvent(AnimationEditor, lmbu), ActionMapper::MOUSE_BUTTON_LEFT, 0);
addAction(MakeFunctionEvent(AnimationEditor, lmbd), ActionMapper::MOUSE_BUTTON_LEFT, 1);
@ -271,7 +265,7 @@ void AnimationEditor::applyState()
addAction(MakeFunctionEvent(AnimationEditor, undo), KEY_Z, 0);
addAction(MakeFunctionEvent(AnimationEditor, redo), KEY_Y, 0);
//addAction(MakeFunctionEvent(AnimationEditor, lockSelection), KEY_L, 0);
addAction(MakeFunctionEvent(AnimationEditor, cycleLerpType), KEY_L, 0);
addAction(MakeFunctionEvent(AnimationEditor, selectPrevBone), KEY_UP, 0);
@ -294,32 +288,12 @@ void AnimationEditor::applyState()
/*
addAction("mbl", KEY_A);
addAction("mbr", KEY_D);
addAction("mbu", KEY_W);
addAction("mbd", KEY_S);
*/
addAction(ACTION_SWIMLEFT, KEY_J);
addAction(ACTION_SWIMRIGHT, KEY_K);
addAction(ACTION_SWIMUP, KEY_UP);
addAction(ACTION_SWIMDOWN, KEY_DOWN);
/*
addAction(ACTION_BONELEFT, KEY_NUMPAD4);
addAction(ACTION_BONERIGHT, KEY_NUMPAD6);
addAction(ACTION_BONEUP, KEY_NUMPAD8);
addAction(ACTION_BONEDOWN, KEY_NUMPAD2);
*/
//addAction("", );
/*
addAction(MakeFunctionEvent(AnimationEditor, zoomOut), KEY_NUMPAD2, 0);
addAction(MakeFunctionEvent(AnimationEditor, zoomIn), KEY_NUMPAD8, 0);
*/
addRenderObject(editSprite, LR_ENTITIES);
@ -620,11 +594,11 @@ void AnimationEditor::rebuildKeyframeWidgets()
offx = keyframeWidgets[i]->offset.x;
}
keyframeWidgets.clear();
for (int i = 0; i < 1000; i++)
if (Animation *a = editSprite->getCurrentAnimation())
{
if (editSprite->getCurrentAnimation())
for (int i = 0; i < 1000; i++)
{
SkeletalKeyframe *key = editSprite->getCurrentAnimation()->getKeyframe(i);
SkeletalKeyframe *key = a->getKeyframe(i);
if (!key) break;
KeyframeWidget *k = new KeyframeWidget(i);
k->offset.x = offx;
@ -670,35 +644,9 @@ void AnimationEditor::moveBoneStripPoint(const Vector &mov)
b->strip[selectedStripPoint] = sel->changeStrip[selectedStripPoint] += mov*0.006f;
sel->setGridPoints(sel->stripVert, sel->strip);
/*
float sz = sel->getStripSegmentSize();
for (int i = selectedStripPoint; i > 0; i--)
{
Vector diff = sel->changeStrip[i] - sel->changeStrip[i-1];
if (!diff.isLength2DIn(sz))
{
diff.setLength2D(sz);
sel->changeStrip[i-1] = sel->changeStrip[i] - diff;
}
}
for (int i = selectedStripPoint; i < sel->changeStrip.size()-1; i++)
{
Vector diff = sel->changeStrip[i] - sel->changeStrip[i+1];
if (!diff.isLength2DIn(sz))
{
diff.setLength2D(sz);
sel->changeStrip[i+1] = sel->changeStrip[i] - diff;
}
}
b->strip = sel->changeStrip;
*/
//sel->setStrip(sel->changeStrip);
}
}
}
@ -710,7 +658,7 @@ void AnimationEditor::selectPrevBone()
if (editingStrip)
{
//moveBoneStripPoint(Vector(0, 1));
}
else
{
@ -724,7 +672,7 @@ void AnimationEditor::selectNextBone()
if (editingStrip)
{
//moveBoneStripPoint(Vector(0, -1));
}
else
{
@ -767,7 +715,7 @@ void AnimationEditor::update(float dt)
if (core->mouse.buttons.middle)
{
editSprite->position += core->mouse.change;
//core->setMousePosition(Vector(400,300));
}
if (editingStrip)
@ -811,29 +759,7 @@ void AnimationEditor::update(float dt)
updateEditingBone();
if (editingBone)
{
/*
float amt = dt;
if (isActing("mbl"))
{
editingBone->position.x -= amt;
applyTranslation();
}
if (isActing("mbr"))
{
editingBone->position.x += amt;
applyTranslation();
}
if (isActing("mbu"))
{
editingBone->position.y -= amt;
applyTranslation();
}
if (isActing("mbd"))
{
editingBone->position.y += amt;
applyTranslation();
}
*/
}
}
if (editingBone && boneEdit == 1)
@ -1053,8 +979,8 @@ void AnimationEditor::lmbd()
{
pushUndo();
updateEditingBone();
if (editingBone /*&& (editSprite->position - core->mouse.position).isLength2DIn(400)*/
/*&& core->mouse.position.x > 200 && core->mouse.position.y < 560*/
if (editingBone
&& core->mouse.position.x > 400-200 && core->mouse.position.x < 400+200
&& core->mouse.position.y > 300-200 && core->mouse.position.y < 300+200
)
@ -1148,7 +1074,7 @@ void AnimationEditor::rmbd()
updateEditingBone();
if (editingBone)
{
//cursorOffset = editingBone->position + editSprite->position - core->mouse.position;
cursorOffset = core->mouse.position;
rotOffset = editingBone->rotation.z;
boneEdit = 2;
@ -1307,8 +1233,8 @@ void AnimationEditor::rmbu()
void AnimationEditor::mmbd()
{
//editingBone = editSprite->getSelectedBone(ignoreBone);
//cloneBoneAhead();
}
void AnimationEditor::cloneBoneAhead()
@ -1429,8 +1355,8 @@ void AnimationEditor::loadSkin()
std::string file = dsq->getUserInputString("Enter skin file to load:");
if (file.empty()) return;
//this->editingFile = file;
//loadFile();
SkeletalSprite::clearCache();
editSprite->loadSkin(file);
}
@ -1453,7 +1379,7 @@ void AnimationEditor::moveNextWidgets(float dt)
s = 1;
}
}
}
void AnimationEditor::toggleRenderBorders()

View file

@ -29,7 +29,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
AquariaComboBox::AquariaComboBox(Vector textscale) : RenderObject()
{
//Quad *bar, *window, *scrollBtnUp, *scrollBtnDown, *scrollBar;
bar = new Quad("gui/combo-drop", Vector(0,0));
addChild(bar, PM_POINTER);
@ -120,7 +120,7 @@ void AquariaComboBox::onUpdate(float dt)
if (alpha.x < 1)
return;
//window->alpha.interpolateTo(1, 0.2);
if (enqueuedSelectItem != -1)
{
@ -375,7 +375,7 @@ void AquariaComboBoxItem::onUpdate(float dt)
{
color = selectedColor;
label->color = selectedColor;
//alphaMod = 1;
if (!mb && core->mouse.buttons.left)
{
mb = true;
@ -396,6 +396,6 @@ void AquariaComboBoxItem::onUpdate(float dt)
label->color = unselectedColor;
mb = false;
//alphaMod = 0.5;
}
}

View file

@ -5,7 +5,7 @@
// Define BBGE_SKIP_CONFIG_HEADERS to use CMake-only configuration.
#ifndef BBGE_SKIP_CONFIG_HEADERS
//#define AQUARIA_DEMO 1
#define AQUARIA_BUILD_CONSOLE 1
#define AQUARIA_BUILD_SCENEEDITOR 1

View file

@ -77,7 +77,7 @@ void AquariaGuiElement::setCanDirMove(bool on)
void AquariaGuiElement::setFocus(bool v)
{
hasFocus = v;
if (v)
{
currentFocus = this;
@ -100,17 +100,11 @@ void AquariaGuiElement::setFocus(bool v)
void AquariaGuiElement::updateMovement(float dt)
{
//debugLog("in update movement");
if (hasFocus && isGuiVisible() && canDirMove && canDirMoveGlobal && hasInput())
{
//debugLog("has focus");
/*
if (alpha.x <= 0 || alphaMod <= 0)
{
setFocus(false);
return;
}
*/
if (guiMoveTimer > 0)
{
@ -162,14 +156,13 @@ void AquariaGuiElement::updateMovement(float dt)
if (gui)
{
gui->setFocus(true);
//this->setFocus(false);
guiMoveTimer = moveDelay;
}
}
if (!gui)
{
debugLog("updating closest");
@ -461,21 +454,12 @@ AquariaKeyConfig::AquariaKeyConfig(const std::string &actionInputName, InputSetT
bg->alphaMod = 0;
addChild(bg, PM_POINTER);
/*
label = new BitmapText(&dsq->smallFont);
label->setText("KeyConfig");
label->parentManagedPointer = 1;
label->position = Vector(0, -10);
label->scale = Vector(0.8, 0.8);
addChild(label);
*/
//keyConfigFont = new DebugFont(6, "keyConfig");
keyConfigFont = new TTFText(&dsq->fontArialSmallest);
keyConfigFont->setAlign(ALIGN_CENTER);
//keyConfigFont->position = Vector(0, -10);
addChild(keyConfigFont, PM_POINTER);
@ -523,16 +507,7 @@ void AquariaKeyConfig::toggleEnterKey(int on)
bg->alphaMod = 0.5;
bg->color = Vector(0.5, 0.5, 0.5);
}
/*
if (on)
{
label->scale = Vector(2, 2);
}
else
{
label->scale = Vector(1, 1);
}
*/
}
void AquariaKeyConfig::setLock(int lock)
@ -546,9 +521,7 @@ void AquariaKeyConfig::onUpdate(float dt)
if (inLoop) return;
AquariaGuiElement::updateMovement(dt);
@ -562,7 +535,7 @@ void AquariaKeyConfig::onUpdate(float dt)
int *k = 0;
ActionInput *ai = 0;
if (inputSetType != INPUTSET_OTHER)
{
ai = dsq->user.control.actionSet.getActionInputByName(actionInputName);
@ -640,15 +613,8 @@ void AquariaKeyConfig::onUpdate(float dt)
{
if (i != KEY_ESCAPE)
{
/*
if (i == KEY_DELETE || i == KEY_BACKSPACE)
else
{
*/
/*
if (i == KEY_0 || i == KEY_1 || i == KEY_2 || i == KEY_3 || i == KEY_4 || i == KEY_5 || i == KEY_6 || i == KEY_7
|| i == KEY_8 || i == KEY_9)
*/
if (i >= KEY_0 && i <= KEY_9)
{
*value = i-KEY_0;
@ -714,7 +680,7 @@ void AquariaKeyConfig::onUpdate(float dt)
if (dsq->game->getKeyState(i))
{
*k = i;
while (dsq->game->getKeyState(i))
{
dsq->main(0.1);
@ -745,11 +711,11 @@ void AquariaKeyConfig::onUpdate(float dt)
}
if (!keyDown && (core->mouse.buttons.left || core->mouse.buttons.right/* || core->getKeyState(KEY_RETURN)*/))
if (!keyDown && (core->mouse.buttons.left || core->mouse.buttons.right))
{
keyDown = true;
}
else if (keyDown && (!core->mouse.buttons.left && !core->mouse.buttons.right /*&& !core->getKeyState(KEY_RETURN)*/))
else if (keyDown && (!core->mouse.buttons.left && !core->mouse.buttons.right ))
{
keyDown = false;
@ -805,18 +771,15 @@ AquariaMenuItem::AquariaMenuItem() : Quad(), ActionMapper(), AquariaGuiElement()
glowFont->position = Vector(0, -sz/2, 0);
glowFont->setBlendType(BLEND_ADD);
glowFont->alpha = 0;
//glowFont->scale.interpolateTo(Vector(1.1,1.1), 0.5, -1, 1, 1);
addChild(glowFont, PM_POINTER, RBP_OFF);
//setTexture("bubble");
//this->shareAlphaWithChildren = true;
width = 0;
height = 0;
highlighted = false;
/*
width = 256;
height = 64;
*/
cull = false;
followCamera = 1;
addAction(MakeFunctionEvent(AquariaMenuItem, onClick), ActionMapper::MOUSE_BUTTON_LEFT, 0);
@ -887,10 +850,9 @@ void AquariaMenuItem::onClick()
dsq->playMenuSelectSfx();
event.call();
//glowFont->scale.interpolateTo(Vector(4,4), 0.5, 1, 1);
//glowFont->alpha.interpolateTo(0, 0.5);
//scale.interpolateTo(Vector(4, 4), 3);
}
}
@ -899,7 +861,7 @@ void AquariaMenuItem::setLabel(const std::string &label)
font->setText(label);
glowFont->setText(label);
}
void AquariaMenuItem::toggleHighlight(bool state)
{
highlighted = state;
@ -913,7 +875,7 @@ void AquariaMenuItem::toggleHighlight(bool state)
{
glowFont->alpha.interpolateTo(0.3, 0.2);
}
//scale.interpolateTo(Vector(1.1, 1.1), 0.2);
}
else
{
@ -922,11 +884,11 @@ void AquariaMenuItem::toggleHighlight(bool state)
else
glowFont->alpha.interpolateTo(0, 0.2);
}
//scale.interpolateTo(Vector(1,1), 0.2);
}
void AquariaMenuItem::onUpdate(float dt)
{
{
AquariaGuiElement::updateMovement(dt);
if (font)
@ -951,16 +913,13 @@ void AquariaMenuItem::onUpdate(float dt)
quad->alpha.x = alpha.x;
}
/*
font->position = this->position;
font->alpha = this->alpha;
*/
if (hasInput())
{
if (alpha.x == 1)
{
bool on = true;
if (isCursorInMenuItem())
{
@ -969,9 +928,9 @@ void AquariaMenuItem::onUpdate(float dt)
}
else
on = false;
if (!on && highlighted)
toggleHighlight(false);
toggleHighlight(false);
}
else
{

View file

@ -84,7 +84,7 @@ public:
bool useQuad(const std::string &tex);
void useGlow(const std::string &tex, int w, int h);
void useSound(const std::string &tex);
virtual bool isCursorInMenuItem();
Vector getGuiPosition();
bool isGuiVisible();
@ -120,7 +120,7 @@ protected:
bool selected;
static bool closed;
bool done;
int slotIndex;
bool empty;
Quad *gfx;
@ -168,9 +168,9 @@ public:
bool isGuiVisible();
static AquariaKeyConfig *waitingForInput;
void setLock(int lock);
protected:
int locked;
void toggleEnterKey(int on);
@ -179,13 +179,13 @@ protected:
bool keyDown;
std::string actionInputName;
InputSetType inputSetType;
int inputIdx;
//BitmapText *label;
//DebugFont *keyConfigFont;
TTFText *keyConfigFont;
Quad *bg;
};
@ -247,18 +247,6 @@ protected:
std::vector<AquariaComboBoxItem*> shownItems;
};
/*
class SelectionList : public RenderObject
{
public:
SelectionList(std::string file, std::string font, int items);
void reload();
virtual void onSelect(int idx){}
protected:
void load();
std::vector<std::string> list;
};
*/
#endif

View file

@ -37,12 +37,8 @@ AquariaSaveSlot::AquariaSaveSlot(int slot) : AquariaGuiQuad()
box->setWidthHeight(450, 96);
box->alphaMod = 0;
addChild(box, PM_POINTER);
//setTexture("dialogue-bg");
//setTexture("HintBox");
//renderQuad = false;
//shareAlphaWithChildren = 1;
text1 = new BitmapText(&dsq->smallFont);
text1->setFontSize(14);
@ -122,7 +118,7 @@ AquariaSaveSlot::AquariaSaveSlot(int slot) : AquariaGuiQuad()
core->resetTimer();
screen->upperLeftTextureCoordinates = Vector(0, 1);
screen->lowerRightTextureCoordinates = Vector(1, 0.25);
//screen->scale = Vector(0.4, 0.3);
if (screen->getWidth() == 0)
screen->color = 0;
@ -131,7 +127,7 @@ AquariaSaveSlot::AquariaSaveSlot(int slot) : AquariaGuiQuad()
screen->position = Vector(-250, 0) + Vector(-1.5, -1.6);
addChild(screen, PM_POINTER);
closed = false;
closed = false;
selected = false;
}
@ -147,7 +143,7 @@ void AquariaSaveSlot::hide()
glowText->alpha.interpolateTo(0, 0.5);
box->alpha.interpolateTo(0, 0.5);
if (!selected)
{
{
screen->alpha.interpolateTo(0, 0.5);
}
}
@ -155,12 +151,12 @@ void AquariaSaveSlot::hide()
void AquariaSaveSlot::close(bool trans)
{
done = true;
if (trans)
{
screen->alpha.interpolateTo(0, 0.1);
text1->alpha.interpolateTo(0, 0.1);
setLife(1);
setDecayRate(10);
fadeAlphaWithLife = 1;
@ -171,7 +167,7 @@ void AquariaSaveSlot::close(bool trans)
setDecayRate(2);
fadeAlphaWithLife = 1;
}
//shareAlphaWithChildren = 1;
}
void AquariaSaveSlot::transition()
@ -204,10 +200,10 @@ void AquariaSaveSlot::onUpdate(float dt)
if (core->mouse.position.x < position.x + 150 && core->mouse.position.x > position.x - 300
&& core->mouse.position.y < position.y+32 && core->mouse.position.y > position.y-32)
{
//setBlendType(BLEND_ADD);
glowText->alpha.interpolateTo(0.5, 0.2);
screen->color.interpolateTo(Vector(1,1,1), 0.1);
//screen->scale.interpolateTo(Vector(1.2, 1.2), 0.2);
if ((core->mouse.buttons.left || core->mouse.buttons.right) && !mbDown)
{
mbDown = true;
@ -218,22 +214,22 @@ void AquariaSaveSlot::onUpdate(float dt)
if (!(empty && dsq->saveSlotMode == SSM_LOAD))
{
selected = true;
// pick this file
dsq->playMenuSelectSfx();
dsq->playMenuSelectSfx();
closed = true;
if (dsq->saveSlotMode == SSM_LOAD)
{
//dsq->clearSaveSlots();
dsq->hideSaveSlots();
this->moveToFront();
//screen->enableMotionBlur(10, 5);
screen->position.interpolateTo(Vector(400-position.x, 300-position.y), 1.0, 0, 0, 1);
dsq->tfader->alpha.interpolateTo(1, 1);
dsq->toggleCursor(false);
core->main(1);
//core->main(2);
}
bool didIt = dsq->onPickedSaveSlot(this);
@ -241,10 +237,9 @@ void AquariaSaveSlot::onUpdate(float dt)
if (didIt)
{
done = true;
//alpha = 0.9;
//setBlendType(BLEND_DEFAULT);
//glowText->alpha.interpolateTo(0, 0.2);
return;
}
else
@ -258,7 +253,7 @@ void AquariaSaveSlot::onUpdate(float dt)
else
{
glowText->alpha.interpolateTo(0, 0.2);
//screen->scale.interpolateTo(Vector(1, 1), 0.2);
screen->color.interpolateTo(Vector(0.7, 0.7, 1), 0.3);
}
if ((core->mouse.buttons.left || core->mouse.buttons.right) && !mbDown)
@ -404,7 +399,7 @@ std::string AquariaSaveSlot::getSaveDescription(const XMLDocument &doc)
float s = dsq->continuity.seconds;
dsq->continuity.seconds = time;
dsq->continuity.getHoursMinutesSeconds(&hours, &minutes, &seconds);
const char *loccstr = startData->Attribute("sceneDisplayName");
std::string location = (loccstr && *loccstr) ? loccstr : getPrettySceneName_internal(startData);
@ -416,8 +411,8 @@ std::string AquariaSaveSlot::getSaveDescription(const XMLDocument &doc)
std::ostringstream os;
os << location << std::endl;
os << hours << ":" << numToZeroString(minutes, 2) << showLoc;
// << ": " << seconds;
//" T: " << time;
dsq->continuity.seconds = s;

View file

@ -25,11 +25,11 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#define AUTOMAP_GRIDTILE 512
//#define FOR(ir,mx) for (int ir=0;ir<mx;ir++)
AutoMap::AutoMap() : RenderObject(), ActionMapper()
{
//texture = 0;
followCamera = 1;
scale = Vector(0.4, 0.4);
position = Vector(400,300);
@ -41,7 +41,7 @@ AutoMap::AutoMap() : RenderObject(), ActionMapper()
initedGrid = false;
//shadowTex = core->addTexture("particles/glow");
setTexture("particles/glow");
paintColor = Vector(1,1,1);
@ -52,17 +52,7 @@ AutoMap::AutoMap() : RenderObject(), ActionMapper()
shadowTex = 0;
}
/*
void AutoMap::create(const std::string &startMap)
{
bool done = false;
while (!done)
{
dsq->game->smallLoadXML("NAIJACAVE");
}
}
*/
void AutoMap::destroy()
{
@ -84,7 +74,7 @@ void AutoMap::toggle(bool on)
{
const float t = 0.2;
if (on)
{
{
autoMapMode = 0;
dsq->game->togglePause(true);
dsq->fade(1, t);
@ -93,50 +83,17 @@ void AutoMap::toggle(bool on)
core->overrideEndLayer = LR_MAX;
vis = true;
/*
for (Children::iterator i = children.begin(); i != children.end(); i++)
{
(*i)->safeKill();
}
Vector c(dsq->game->cameraMax.x/2, dsq->game->cameraMax.y/2);
int drawsz = AUTOMAP_GRIDTILE/TILE_SIZE;
int hsz = drawsz*0.5f;
c *= AUTOMAP_GRIDTILE;
c /= TILE_SIZE;
c += Vector(hsz, hsz);
FOR(x,MAX_AUTOMAP_GRID)
{
FOR(y,MAX_AUTOMAP_GRID)
{
if (grid[x][y])
{
Quad *q = new Quad;
q->setTexture("particles/WhiteGlow");
float rx = float(x * AUTOMAP_GRIDTILE)/float(TILE_SIZE) + hsz - c.x;
float ry = float(y * AUTOMAP_GRIDTILE)/float(TILE_SIZE) + hsz - c.y;
q->position = Vector(rx, ry);
q->color = Vector(0,0,0);
addChild(q);
}
}
}
*/
//alpha.interpolateTo(1, 0.5);
alpha = 1;
dsq->fade(0, t);
dsq->main(t);
dsq->main(t);
}
else
{
dsq->fade(1, t);
dsq->main(t);
dsq->main(t);
core->overrideStartLayer = 0;
core->overrideEndLayer = 0;
@ -161,7 +118,7 @@ void AutoMap::setGridFromWorld(Vector worldPos, int gridValue)
os << "AutoMap::setGridFromWorld - exceeded grid size";
os << "(" << gx <<", " << gy << ")";
debugLog(os.str());
return;
return;
}
grid[gx][gy] = gridValue;
@ -169,11 +126,8 @@ void AutoMap::setGridFromWorld(Vector worldPos, int gridValue)
void AutoMap::initGrid()
{
/*
int xsz = dsq->game->cameraMax.x/200;
int ysz = dsq->game->cameraMax.y/200;
*/
//std::vector<std::vector> grid
for (int x=0;x<MAX_AUTOMAP_GRID;x++)
{
for (int y=0;y<MAX_AUTOMAP_GRID;y++)
@ -205,45 +159,21 @@ void AutoMap::onUpdate(float dt)
initGrid();
}
if (dsq->game->avatar)
{
setGridFromWorld(dsq->game->avatar->position, 0);
}
if (vis && alpha.x == 1)
{
const float maxScale=1.25, minScale=0.5;
blip.update(dt);
/*
static Vector lastHeldPos;
if (core->mouse.buttons.left)
{
if (!lastHeldPos.isZero() && !(core->mouse.position - lastHeldPos).isLength2DIn(32))
{
Vector diff = core->mouse.position - lastHeldPos;
int len = diff.getLength2D();
for (int i = 0; i < len; i+=8)
{
paint(lastHeldPos + diff * i);
}
}
else
{
paint(core->mouse.position);
}
lastHeldPos = core->mouse.position;
}
else
{
lastHeldPos = Vector(0,0);
}
*/
//bool c=false;
Vector sTarget=scale;
Vector sTarget=scale;
float spd = 0.5;
if (core->mouse.scrollWheelChange < 0)
{
@ -261,7 +191,7 @@ void AutoMap::onUpdate(float dt)
{
offset += core->mouse.change*scale;
}
//scale.interpolateTo(sTarget, 0.1);
}
}
@ -275,39 +205,31 @@ void AutoMap::lmb()
void AutoMap::onRender()
{
// if (!doRender) return;
if (alpha.x == 0) return;
#ifdef BBGE_BUILD_OPENGL
glBindTexture(GL_TEXTURE_2D, 0);
RenderObject::lastTextureApplied = 0;
float alphaValue = alpha.x;
//int sz2 = 80;//80;
int ysz = dsq->game->cameraMax.y/TILE_SIZE;
int xsz = dsq->game->cameraMax.x/TILE_SIZE;
//TileVector t(dsq->game->avatar->position);
TileVector t(Vector(dsq->game->cameraMax.x/2, dsq->game->cameraMax.y/2));
int skip = 4;
glLineWidth(skip);
if (alphaValue > 0)
{
/*
if (core->getWindowHeight() == 600)
{
skip = 2;
}
*/
//for (int y = t.y-sz2; y < t.y+sz2; y+=skip)
for (int y = 0; y < ysz; y += skip)
{
float f = float(y)/float(ysz);
@ -317,12 +239,12 @@ void AutoMap::onRender()
glBegin(GL_LINES);
int rowStart = -1;
int x = 0;
//for (x = t.x-sz2; x < t.x+sz2; x++)
for (x = 0; x < xsz; x++)
{
if (dsq->game->getGrid(TileVector(x,y))!=OT_BLACK)
{
if (rowStart == -1)
if (rowStart == -1)
{
rowStart = x;
}
@ -345,45 +267,8 @@ void AutoMap::onRender()
glEnd();
}
/*
glColor4f(0,0,0,alphaValue);
glPointSize(8);
//shadowTex->apply();
glEnable(GL_TEXTURE_2D);
glBegin(GL_QUADS);
int rx=0,ry=0;
int sz = (AUTOMAP_GRIDTILE/TILE_SIZE)*0.5f;
for (int x = 0; x < MAX_AUTOMAP_GRID; x++)
{
for (int y = 0; y < MAX_AUTOMAP_GRID; y++)
{
if (grid[x][y])
{
rx = float(x * AUTOMAP_GRIDTILE)/float(TILE_SIZE) + TILE_SIZE/2 - t.x;
ry = float(y * AUTOMAP_GRIDTILE)/float(TILE_SIZE) + TILE_SIZE/2 - t.y;
//glVertex2f(rx, ry);
glTexCoord2f(0, 1.0);
glVertex3f(rx-sz, ry+sz, 0.0f);
glTexCoord2f(0, 1.0);
glVertex3f(rx+sz, ry+sz, 0.0f);
glTexCoord2f(1, 0);
glVertex3f(rx+sz, ry-sz, 0.0f);
glTexCoord2f(1, 0);
glVertex3f(rx-sz, ry-sz, 0.0f);
}
}
}
glEnd();
*/
/*
shadowTex->unbind();
glDisable(GL_TEXTURE_2D);
*/
//glDisable(GL_TEXTURE_2D);
}
TileVector nt(dsq->game->avatar->position);
@ -399,7 +284,6 @@ void AutoMap::onRender()
glColor4f(0.5,0.75,1, alphaValue*0.5f);
drawCircle(blip.x*16, 8);
#endif
}

View file

@ -26,17 +26,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "Shot.h"
#include "GridRender.h"
//#include "CommonEvents.h"
//#include <float.h>
//#define AQ_TEST_QUADTRAIL
#ifdef AQ_TEST_QUADTRAIL
#include "QuadTrail.h"
static QuadTrail *quadTrail = 0;
#endif
const float MULT_DMG_CRABCOSTUME = 0.75;
const float MULT_DMG_FISHFORM = 1.5;
@ -165,7 +154,7 @@ void Avatar::bindInput()
dsq->user.control.actionSet.importAction(this, "SongSlot8", ACTION_SONGSLOT8);
dsq->user.control.actionSet.importAction(this, "SongSlot9", ACTION_SONGSLOT9);
dsq->user.control.actionSet.importAction(this, "SongSlot10", ACTION_SONGSLOT10);
dsq->user.control.actionSet.importAction(this, "Look", ACTION_LOOK);
/*
@ -174,7 +163,7 @@ void Avatar::bindInput()
dsq->user.control.actionSet.importAction(this, "SongSlot7", "f7");
dsq->user.control.actionSet.importAction(this, "SongSlot8", "f8");
*/
dsq->user.control.actionSet.importAction(this, "Roll", ACTION_ROLL);
/*
@ -1091,7 +1080,7 @@ void Avatar::onDamage(DamageData &d)
core->sound->playSfx("Poison");
else
core->sound->playSfx("Pain");
setHeadTexture("Pain", 1);
@ -1151,7 +1140,7 @@ void Avatar::onDamage(DamageData &d)
dsq->emote.playSfx(EMOTE_NAIJALOW);
dsq->game->hasPlayedLow = 1;
}
dsq->gameSpeed.ensureData();
dsq->gameSpeed.data->path.clear();
@ -1639,7 +1628,7 @@ void Avatar::changeForm(FormType form, bool effects, bool onInit, FormType lastF
refreshModel("FishForm", "");
//rotationOffset.interpolateTo(Vector(0,0,-90), 0.5);
//refreshModel("NaijaFish", "");
collideRadius = COLLIDE_RADIUS_FISH;
setCanLockToWall(false);
setCollisionAvoidanceData(COLLIDE_RANGE_FISH, COLLIDE_MOD_FISH);
@ -1970,7 +1959,7 @@ void Avatar::updateTargets(float dt, bool override)
// crappy hack for now, assuming one target:
targets.clear();
Vector dir = getAim();
Vector checkPos = position + dir;
Vector distPos = position;
@ -1991,7 +1980,7 @@ void Avatar::updateTargets(float dt, bool override)
if (!override && core->mouse.buttons.right)
{
maxTargetDelay = 90;
dsq->spawnParticleEffect("TargetAquired", t.pos);
wasDown = true;
}
@ -2048,7 +2037,7 @@ void Avatar::updateTargetQuads(float dt)
/*
for (int i = 0; i < targetQuads.size(); i++)
{
}
*/
@ -2104,7 +2093,7 @@ void Avatar::updateTargetQuads(float dt)
//targetQuads[i]->position.interpolateTo(dsq->getGameCursorPosition(),tt);
/*
std::ostringstream os;
os << "setting targetQuads[i] to game cursor, is running = " << targetQuads[i]->isRunning();
os << "setting targetQuads[i] to game cursor, is running = " << targetQuads[i]->isRunning();
debugLog(os.str());
*/
@ -2290,7 +2279,7 @@ bool Avatar::fireAtNearestValidEntity(const std::string &shot)
{
checkUpgradeForShot(s);
skeletalSprite.transitionAnimate("fireBlast", 0.1, 0, ANIMLAYER_ARMOVERRIDE);
s->position = p;
@ -2371,9 +2360,9 @@ void Avatar::formAbility(int ability)
{
if (dsq->continuity.dualFormMode == Continuity::DUALFORM_NAIJA)
{
// ~~~~~~~~~~ SOUL SCREAM
if (chargeLevelAttained == 1)
{
if (dsq->continuity.dualFormCharge >= requiredDualFormCharge)
@ -2869,7 +2858,7 @@ int Avatar::getNumShots()
void Avatar::doShock(const std::string &shotName)
{
int c = 0;
//int maxHit = 2 + dsq->continuity.getSpellLevel(SPELL_SHOCK)*2;
@ -2950,7 +2939,6 @@ void Avatar::doShock(const std::string &shotName)
if (sz == 0)
{
for (int i = 0; i < thits; i++)
@ -3443,7 +3431,7 @@ void Avatar::lockToWall()
{
if (!dsq->mod.isActive() && !dsq->continuity.getFlag("lockedToWall"))
{
if (!dsq->game->isControlHint()){
dsq->continuity.setFlag("lockedToWall", 1);
dsq->game->setControlHint(dsq->continuity.stringBank.get(13), 1, 0, 0, 6, "", true);
@ -3649,15 +3637,9 @@ void Avatar::clearWeb()
Avatar::Avatar() : Entity(), ActionMapper()
{
canDie = true;
urchinDelay = 0;
jellyDelay = 0;
#ifdef AQ_TEST_QUADTRAIL
quadTrail = new QuadTrail(100, 32);
quadTrail->setTexture("Particles/QuadTrail");
quadTrail->setBlendType(BLEND_ADD);
dsq->game->addRenderObject(quadTrail, LR_PARTICLES);
#endif
curWebPoint = 0;
@ -3842,18 +3824,18 @@ Avatar::Avatar() : Entity(), ActionMapper()
{
targetQuads[i] = new ParticleEffect;
/*
targetQuads[i]->setTexture("missingImage");
targetQuads[i]->setTexture("missingImage");
targetQuads[i]->alpha = 0;
*/
targetQuads[i]->load("EnergyBlastTarget");
// HACK: should have its own layer?
dsq->game->addRenderObject(targetQuads[i], LR_PARTICLES);
}
}
lightFormGlow = new Quad("Naija/LightFormGlow", 0);
lightFormGlow->alpha = 0;
lightFormGlow->scale.interpolateTo(Vector(5.5, 5.5), 0.4, -1, 1);
//lightFormGlow->positionSnapTo = &position;
dsq->game->addRenderObject(lightFormGlow, LR_ELEMENTS13);
@ -4218,7 +4200,7 @@ void Avatar::startWallBurst(bool useCursor)
wallPushVec = wallNormal;
else
{
wallPushVec = (goDir*0.5f + wallNormal*0.5f);
wallPushVec = (goDir*0.5f + wallNormal*0.5f);
}
}
//wallPushVec = (goDir*0.9f + wallNormal*0.1f);
@ -4297,7 +4279,7 @@ Vector Avatar::getVectorToCursor(bool trueMouse)
{
//return getVectorToCursorFromScreenCentre();
Vector pos = dsq->getGameCursorPosition();
if (!trueMouse && dsq->inputMode != INPUT_MOUSE)
return getFakeCursorPosition();
@ -4775,7 +4757,7 @@ void Avatar::setHeadTexture(const std::string &name, float time)
if (dsq->continuity.form == FORM_NORMAL /*&& dsq->continuity.costume.empty()*/)
{
if (!name.empty() && (nocasecmp(lastHeadTexture, "singing")==0)) return;
lastHeadTexture = name;
stringToUpper(lastHeadTexture);
std::string t = "Naija/";
@ -5044,7 +5026,7 @@ void Avatar::updateRoll(float dt)
stopRoll();
}
}
if (!_isUnderWater && isActing(ACTION_ROLL))
{
stopRoll();
@ -5090,7 +5072,7 @@ void Avatar::updateRoll(float dt)
if (rollDelay <= 0)
stopRoll();
}
if (isActing(ACTION_ROLL))
{
if (_isUnderWater)
@ -5109,7 +5091,7 @@ void Avatar::updateRoll(float dt)
rotation.z -= amt;
}
rotation.capRotZ360();
rollDelay = 1.0;
}
}
@ -5418,9 +5400,6 @@ void Avatar::onUpdate(float dt)
looking = 0;
#ifdef AQ_TEST_QUADTRAIL
quadTrail->addPoint(position);
#endif
if (lightFormGlow)
{
@ -5476,7 +5455,7 @@ void Avatar::onUpdate(float dt)
curWebPoint = web->addPoint(position);
}
}
if (!dsq->game->isPaused() && isActing(ACTION_LOOK) && !dsq->game->avatar->isSinging() && dsq->game->avatar->isInputEnabled() && !dsq->game->isInGameMenu())
{
looking = 1;
@ -5623,7 +5602,7 @@ void Avatar::onUpdate(float dt)
core->sound->playSfx("NaijaGasp");
core->main(0.75);
dsq->voiceOnce("Naija_VeilCrossing");
core->main(10*0.1f);
@ -6102,7 +6081,7 @@ void Avatar::onUpdate(float dt)
jellyDelay -= dt;
if (jellyDelay < 0)
{
jellyDelay = JELLYCOSTUME_HEALDELAY;
jellyDelay = JELLYCOSTUME_HEALDELAY;
Vector d;
if (!vel.isZero())
@ -6213,7 +6192,7 @@ void Avatar::onUpdate(float dt)
bool isMovingSlow = false;
float len = 0;
if (dsq->isMiniMapCursorOkay() && !isActing(ACTION_ROLL) &&
_isUnderWater && !riding && !boneLock.on &&
(movingOn || ((dsq->inputMode == INPUT_JOYSTICK || dsq->inputMode== INPUT_KEYBOARD) || (core->mouse.buttons.left || bursting))))
@ -6797,7 +6776,7 @@ void Avatar::onUpdate(float dt)
//debugLog("above water bounce");
Vector n = getWallNormal(TileVector(lastPosition));
n *= vel.getLength2D();
@ -6816,7 +6795,7 @@ void Avatar::onUpdate(float dt)
if (vel.y < 0)
{
//debugLog("Vel less than 0");
}
if (vel.y == 0)
{
@ -6827,14 +6806,14 @@ void Avatar::onUpdate(float dt)
if (vel.isLength2DIn(500))
vel.setLength2D(500);
vel.capLength2D(800);
position = lastPosition;
this->doCollisionAvoidance(1, 4, 0.5, 0, 500);
/*
vel = -vel;
if (vel.y < 0)

View file

@ -118,7 +118,7 @@ public:
bool blind;
bool wasUnderWater;
float shotDelay;
//Timer shockTimer;
Timer useItemDelay;
Timer lockToWallDelay;
float spellCharge;
@ -146,7 +146,7 @@ public:
float burstDelay;
bool bursting;
BurstType lastBurstType;
//void damage(int amount);
bool isCharging();
void setBlind(float time);
@ -265,7 +265,7 @@ public:
float songInterfaceTimer;
void removeEatData(int idx);
//std::list<Entity*>bittenEntities;
typedef std::list<Entity*> BittenEntities;
BittenEntities bittenEntities;
Target getNearestTarget(const Vector &checkPos, const Vector &distPos, Entity *source, DamageType dt, bool override=false, std::vector<Target> *ignore=0, EntityList *entityList=0);
@ -306,7 +306,7 @@ public:
float rollDelay;
bool canSetBoneLock();
void revert();
void doBindSong();
void doShieldSong();
@ -333,7 +333,7 @@ public:
float elementEffectMult;
bool blockBackFlip;
protected:
void setSongIconPositions();
@ -386,7 +386,7 @@ protected:
void updateCursor(float dt);
bool rolling;
int rollDidOne;
void startRoll(int dir);
void stopRoll();
int getQuadrantDirection(int lastQuad, int quad);
@ -431,9 +431,9 @@ protected:
bool checkWarpAreas();
float splashDelay;
//Hair *hair;
//Item *currentItem;
void onUpdate(float dt);
void onRender();

View file

@ -31,7 +31,7 @@ Beam::Beam(Vector pos, float angle) : Quad()
addType(SCO_BEAM);
cull = false;
trace();
//rotation.z = angle;
this->angle = angle;
position = pos;
@ -91,17 +91,13 @@ void Beam::killAllBeams()
void Beam::trace()
{
float angle = MathFunctions::toRadians(this->angle);
//(float(-this->angle)/180.0f)*PI;
//float angle = rotation.z;
Vector mov(sinf(angle), cosf(angle));
TileVector t(position);
Vector startTile(t.x, t.y);
/*
std::ostringstream os;
os << "rotation.z = " << rotation.z << " mov(" << mov.x << ", " << mov.y << ")";
debugLog(os.str());
*/
int moves = 0;
while (!dsq->game->isObstructed(TileVector(startTile.x, startTile.y)))
@ -114,38 +110,24 @@ void Beam::trace()
t = TileVector(startTile.x, startTile.y);
endPos = t.worldVector();
/*
offset = endPos - position;
offset /= 2;
offset *= -1;
*/
//width = (endPos - position).getLength2D();
}
void Beam::render()
{
/*
glLineWidth(4);
glColor4f(1,1,1,1);
glBegin(GL_LINES);
glVertex2f(position.x, position.y);
glVertex2f(endPos.x, endPos.y);
glEnd();
*/
Quad::render();
}
void Beam::onRender()
{
#ifdef BBGE_BUILD_OPENGL
//glDisable(GL_CULL_FACE);
Vector diff = endPos - position;
Vector side = diff;
//side.normalize2D();
side.setLength2D(beamWidth*2);
Vector sideLeft = side.getPerpendicularLeft();
Vector sideRight = side.getPerpendicularRight();
@ -160,7 +142,6 @@ void Beam::onRender()
glTexCoord2f(0, 1);
glVertex2f(sideRight.x, sideRight.y);
glEnd();
#endif
}
void Beam::onUpdate(float dt)

View file

@ -32,39 +32,31 @@ bool BitBlotLogo::watchQuit(float time)
{
core->main(time);
return false;
/*
dsq->watch(time);
if (quitFlag > 0)
{
skipLogo();
return true;
}
return false;
*/
}
void BitBlotLogo::doShortBitBlot()
{
dsq->overlay->color = Vector(0,0,0);
dsq->overlay->alpha = 0;
dsq->overlay2->color = Vector(1,1,1);
dsq->overlay2->alpha = 1;
dsq->overlay2->alpha.interpolateTo(0, 0.25);
Quad *bg = new Quad;
bg->setWidthHeight(800, 600);
bg->position = Vector(400,300);
bg->followCamera = 1;
addRenderObject(bg, LR_HUD);
Quad *logo = new Quad("BitBlot/Logo.png", Vector(400,300));
logo->followCamera = 1;
logo->scale = Vector(0.6,0.6);
addRenderObject(logo, LR_HUD);
core->main(1.5);
dsq->overlay2->alpha.interpolateTo(1, 0.5);
core->main(0.5);
}
@ -78,7 +70,7 @@ void BitBlotLogo::skipLogo()
void BitBlotLogo::getOut()
{
//dsq->continuity.reset();
#ifdef AQUARIA_DEMO
dsq->title();
@ -91,17 +83,17 @@ void BitBlotLogo::getOut()
}
void BitBlotLogo::applyState()
{
{
StateObject::applyState();
quitFlag = 0;
logo = 0;
dsq->toggleCursor(0);
dsq->toggleBlackBars(1);
//dsq->setBlackBarsColor(Vector(1,1,1));
dsq->jiggleCursor();
dsq->forceInputGrabOff();
if (dsq->user.demo.shortLogos)
{
skipLogo();
@ -109,7 +101,7 @@ void BitBlotLogo::applyState()
}
logo = 1;
if (core->getKeyState(KEY_ESCAPE))
{
skipLogo();
@ -127,7 +119,7 @@ void BitBlotLogo::applyState()
landscape->followCamera = 1;
landscape->alpha = 1;
landscape->shareAlphaWithChildren = 1;
for (int i = 2; i < 5 + rand()%10; i++)
{
@ -143,7 +135,7 @@ void BitBlotLogo::applyState()
bird->update((rand()%100)*0.1f);
}
//if (true)
if (rand()%100 < 40)
{
SkeletalSprite *dragon = new SkeletalSprite();
@ -161,7 +153,7 @@ void BitBlotLogo::applyState()
}
std::vector<SkeletalSprite*> windmills;
int numWindmills = rand()%3;
int numWindmills = rand()%3;
for (int i = 0; i < numWindmills; i++)
{
SkeletalSprite *windmill = new SkeletalSprite();
@ -215,7 +207,7 @@ void BitBlotLogo::applyState()
logob->scale = Vector(0.6, 0.6);
logob->offset = Vector(-4, 0);
logob->offset.interpolateTo(Vector(4,0), 0.05, -1, 1);
addRenderObject(logob, LR_ENTITIES);
RenderObject *lines = new RenderObject();
@ -254,12 +246,12 @@ void BitBlotLogo::applyState()
dsq->overlay->alpha.interpolateTo(0, 1);
//sound->playSfx("BBSplash");
sound->playMusic("bblogo", SLT_NONE);
if (watchQuit(1.0)) return;
//sound->playSfx("normalform");
dsq->overlay2->color = Vector(1,1,1);
@ -272,23 +264,20 @@ void BitBlotLogo::applyState()
sound->playSfx("normalform");
//landscape->alpha.interpolateTo(1, 2);
white->alpha.interpolateTo(0, 2);
landscape->position.interpolateTo(Vector(400,400), 5);
/*
if (core->afterEffectManager)
core->afterEffectManager->addEffect(new ShockEffect(Vector(core->width/2, core->height/2),core->screenCenter, 0.1,0.03,30,0.2f, 0.5));
*/
landscape->scale.interpolateTo(Vector(1.1, 1.1), 5);
scanline->alpha.interpolateTo(0, 1);
//scanline->scale.interpolateTo(Vector(5, 5), 1);
logo->scale.interpolateTo(Vector(2, 2), 1);
//logo->offset.interpolateTo(Vector(0, -300), 1);
logo->alpha.interpolateTo(0, 1);
lines->alpha.interpolateTo(0, 4);
@ -300,36 +289,12 @@ void BitBlotLogo::applyState()
dsq->overlay2->alpha.interpolateTo(1, 2);
if (watchQuit(2.0)) return;
getOut();
/*
// BOING
dsq->toggleCursor(0);
Quad *logo = new Quad("BitBlot/Logo.png", Vector(400,300));
logo->followCamera = 1;
addRenderObject(logo);
//logo->scale = Vector(0.6, 0.6);
logo->scale = Vector(0, 0);
core->setClearColor(Vector(1,1,1));
dsq->overlay->alpha = 1;
dsq->overlay->alpha.interpolateTo(0, 1);
core->main(0.5);
logo->scale.path.addPathNode(Vector(0,0), 0);
logo->scale.path.addPathNode(Vector(0,0), 0.4);
logo->scale.path.addPathNode(Vector(1.2,1.2), 0.8);
logo->scale.path.addPathNode(Vector(1.0, 1.0), 0.85);
logo->scale.path.addPathNode(Vector(1.1, 1.1), 0.95);
logo->scale.path.addPathNode(Vector(1,1), 1.0);
logo->scale.startPath(1);
core->main(2);
dsq->overlay->alpha.interpolateTo(1, 1.5);
core->main(1.5);
*/
}
void BitBlotLogo::removeState()
@ -341,15 +306,7 @@ void BitBlotLogo::removeState()
void BitBlotLogo::update(float dt)
{
StateObject::update(dt);
/*
if (quitFlag == 0)
{
if (core->getKeyState(KEY_ESCAPE))
{
quitFlag = 1;
}
}
*/
}

View file

@ -21,7 +21,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "CollideEntity.h"
#include "DSQ.h"
#include "Game.h"
//#include "ParticleEffects.h"
CollideEntity::CollideEntity() : Entity()
{
@ -51,7 +51,7 @@ void CollideEntity::bounce(float ba)
if (getState() == STATE_PUSH)
{
dsq->spawnParticleEffect("HitSurface", dsq->game->lastCollidePosition);
//dsq->effectCollisionSmoke(position);
sound("RockHit");
// HACK: replace damage function
//damage(pushDamage);
@ -64,13 +64,13 @@ void CollideEntity::bounce(float ba)
{
if (!vel.isZero())
{
float len = vel.getLength2D();
float len = vel.getLength2D();
Vector I = vel/len;
Vector N = dsq->game->getWallNormal(dsq->game->lastCollidePosition);
Vector N = dsq->game->getWallNormal(dsq->game->lastCollidePosition);
if (!N.isZero())
{
//2*(-I dot N)*N + I
vel = 2*(-I.dot(N))*N + I;
vel.setLength2D(len*ba);
}
@ -94,25 +94,19 @@ void CollideEntity::bounce(float ba)
}
break;
}
//mov.setLength2D(-len * ba);
onBounce();
}
void CollideEntity::updateMovement(float dt)
{
{
if (isEntityDead()) return;
if (position.isFollowingPath()) return;
vel.capLength2D(getMaxSpeed()*maxSpeedLerp.x);
/*
if (vel.getSquaredLength2D() > sqr(getMaxSpeed()))
{
vel.setLength2D(getMaxSpeed());
vel.z = 0;
}
*/
//Vector lastPos = pos;
updateVel2(dt);
@ -132,27 +126,13 @@ void CollideEntity::updateMovement(float dt)
{
position.y = dsq->game->getWaterLevel()+collideRadius;
}
}
}
/*
if (!canLeaveWater)
{
if (waterBubble)
{
}
else
{
if (position.y-collideRadius < dsq->game->getWaterLevel())
{
}
}
}
*/
bool collided = false;
if (vel.x != 0 || vel.y != 0)
{
@ -161,8 +141,8 @@ void CollideEntity::updateMovement(float dt)
if (isv(EV_COLLIDELEVEL,1))
{
bool doesFreeRange = !isPullable();
if (doesFreeRange)
@ -174,8 +154,8 @@ void CollideEntity::updateMovement(float dt)
}
}
}
//Vector lastPosition = lastPos;
Vector newPosition = position + (getMoveVel() * dt);
position = newPosition;
@ -191,7 +171,7 @@ void CollideEntity::updateMovement(float dt)
}
}
else
{
{
if (!freeRange && ((!canLeaveWater && !isUnderWater() && wasUnderWater) || dsq->game->collideCircleWithGrid(position, hw)))
{
position = lastPosition;
@ -211,7 +191,7 @@ void CollideEntity::updateMovement(float dt)
{
attachedEntities[i]->position = this->position + attachedEntitiesOffsets[i];
attachedEntities[i]->rotation = this->rotation;
}
}
wasUnderWater = underWater;
}

View file

@ -30,15 +30,15 @@ public:
virtual ~CollideEntity();
float bounceAmount;
float weight;
void updateMovement(float dt);
void updateMovement(float dt);
void entityDied(Entity *e);
protected:
protected:
virtual void onHitWall(){}
void onUpdateFrozen(float dt);
virtual void onBounce() {}
void bounce(float ba);
};
#endif

View file

@ -304,11 +304,7 @@ void Continuity::sortFood()
switch (dsq->continuity.foodSortType)
{
/*
case FOODSORT_UNSORTED:
sortOrder = sortByUnsort;
break;
*/
case FOODSORT_BYTYPE:
sortOrder = sortByType;
break;
@ -321,8 +317,7 @@ void Continuity::sortFood()
}
//IngredientData *plantLeaf = dsq->continuity.getIngredientHeldByName("PlantLeaf");
//int oldHeld = plantLeaf->held;
if (doSort)
{
@ -391,11 +386,11 @@ void Continuity::sortFood()
ingredients.push_back(sort[i]);
}
sort.clear();
//dsq->continuity.ingredients = sort;
}
//IngredientData *plantLeaf2 = dsq->continuity.getIngredientHeldByName("PlantLeaf");
//int newHeld = plantLeaf2->held;
}
void Continuity::setRegen(float t)
@ -564,7 +559,7 @@ std::string Continuity::getIEString(IngredientData *data, int i)
os << dsq->continuity.stringBank.get(210);
os << " " << dsq->continuity.stringBank.get(205) << " " << (fx.magnitude*5) << " " << dsq->continuity.stringBank.get(203);
return os.str();
//return dsq->continuity.stringBank.get(210);
break;
case IET_ENERGY:
os << dsq->continuity.stringBank.get(211) << " " << fx.magnitude;
@ -829,7 +824,7 @@ bool Continuity::applyIngredientEffects(IngredientData *data)
dsq->centerMessage(getIEString(data, i), y);
dsq->continuity.setWeb(webTime);
//dsq->centerMessage(dsq->continuity.stringBank.get(216), y);
}
break;
case IET_ALLSTATUS:
@ -1477,8 +1472,8 @@ void Continuity::castSong(int num)
os << "Could not find song with index [" << num << "]";
debugLog(os.str());
}
//float et = 0.5;
//float et = 10;
float et = 0.5;
std::ostringstream os;
os << "Song/SongSlot-" << dsq->continuity.getSongSlotByType(num);
@ -1487,7 +1482,7 @@ void Continuity::castSong(int num)
effect->setTexture(os.str());
effect->position = selected->position + selected->offset;
effect->scale.interpolateTo(Vector(3,3), et);
//effect->setBlendType(RenderObject::BLEND_ADD);
effect->alpha.ensureData();
effect->alpha.data->path.addPathNode(0, 0);
effect->alpha.data->path.addPathNode(0.5, 0.1);
@ -1536,12 +1531,7 @@ void Continuity::castSong(int num)
sound->playSfx("Heal");
selected->heal(2);
/*
Wynia *wynia = new Wynia;
wynia->trackTo(selected);
wynia->position = selected->position;
core->getTopStateData()->addRenderObject(wynia, PROJECTILES);
*/
selected->skeletalSprite.animate("healSelf", 0, 1);
break;
case SONG_TIME:
@ -1575,7 +1565,7 @@ void Continuity::castSong(int num)
{
if (!dsq->game->avatar->isNearObstruction(2) && !dsq->game->avatar->state.lockedToWall && !(dsq->game->li->position - dsq->game->avatar->position).isLength2DIn(400))
{
//dsq->game->avatar->disableInput();
dsq->overlay->color = Vector(1,1,1);
dsq->fade(1, 0.3);
dsq->main(0.3);
@ -1583,7 +1573,7 @@ void Continuity::castSong(int num)
dsq->fade(0, 0.3);
dsq->main(0.3);
dsq->overlay->color = 0;
//dsq->game->avatar->enableInput();
}
else if ((dsq->game->li->position - dsq->game->avatar->position).isLength2DIn(500))
{
@ -1597,13 +1587,7 @@ void Continuity::castSong(int num)
{
core->sound->playSfx("Denied");
}
/*
}
else
{
core->sound->playSfx("SongFail");
}
*/
}
else
{
@ -1785,12 +1769,8 @@ loop:
// make sure last note is more or less close
if (song.notes.size()-last < 2)
{
//rank += song.size()-last;
/*
std::ostringstream os;
os << "songCheck: " << songChecks[i].songIdx << " completed with rank " << rank;
debugLog(os.str());
*/
songChecks[i].pass = true;
songChecks[i].rank = rank;
@ -1813,11 +1793,7 @@ loop:
}
}
/*
std::ostringstream os;
os << "lowest rank: " << lowestRank;
debugLog(os.str());
*/
return songIdx;
}
@ -1835,7 +1811,7 @@ int Continuity::checkSong(const Song &song)
Song *s = &songBank[i];
if (s->notes.empty()) continue;
int j = 0;
//if (s->size() == song.size())
{
bool foundSong = false;
int currentNote = 0;
@ -1867,7 +1843,7 @@ int Continuity::checkSong(const Song &song)
}
}
if (j != song.notes.size()-1) foundSong = false;
//if (j == s->size())
if (foundSong)
{
return i;
@ -1910,7 +1886,7 @@ void Continuity::update(float dt)
statsAndAchievements->RunFrame();
}
if (dsq->game->isActive() && !dsq->game->isPaused() /*&& !(getWorldType() == WT_SPIRIT)*/)
if (dsq->game->isActive() && !dsq->game->isPaused() )
{
if (liPowerTimer.updateCheck(dt))
@ -2011,18 +1987,14 @@ void Continuity::update(float dt)
if (regenTimer.isActive())
{
/*
static float regenBit = 0;
regenBit += dt;
if (regenBit > 1)
*/
{
Avatar *a = dsq->game->avatar;
if (a)
{
a->heal(dt*0.5f);
}
//regenBit = 0;
}
}
}
@ -2104,17 +2076,14 @@ void Continuity::applyWorldEffects(WorldType type, bool transition, bool affectM
{
core->postProcessingFx.blendType = 1;
core->postProcessingFx.intensity = 0.2f;
core->postProcessingFx.layer = LR_AFTER_EFFECTS;//LR_AFTER_EFFECTS;
core->postProcessingFx.layer = LR_AFTER_EFFECTS;
core->postProcessingFx.renderLayer = LR_AFTER_EFFECTS;
core->postProcessingFx.enable(FXT_RADIALBLUR);
}
dsq->game->avatar->canWarp = false;
/*
if (affectMusic)
dsq->sound->toggleEffects(1);
*/
dsq->game->backupSceneColor = dsq->game->sceneColor;
dsq->game->sceneColor.interpolateTo(Vector(0.4, 0.8, 0.9), time);
dsq->game->avatar->applyWorldEffects(type);
@ -2124,23 +2093,15 @@ void Continuity::applyWorldEffects(WorldType type, bool transition, bool affectM
dsq->game->avatar->canWarp = true;
core->postProcessingFx.disable(FXT_RADIALBLUR);
//worldType = WT_SPIRIT;
/*
if (affectMusic)
dsq->sound->toggleEffects(0);
*/
//dsq->game->sceneColor.interpolateTo(dsq->game->backupSceneColor, time);
dsq->game->sceneColor.interpolateTo(Vector(1,1,1), time);
dsq->game->avatar->applyWorldEffects(type);
}
if (time > 0)
{
/*
dsq->game->avatar->slowToRest();
dsq->game->avatar->disableInput();
core->main(time);
dsq->game->avatar->enableInput();
*/
}
worldType = type;
}
@ -2291,12 +2252,7 @@ void Continuity::setFlag(std::string flag, int v)
flags[flag] = v;
}
/*
void Continuity::setActivePet(int flag)
{
setFlag(FLAG_ACTIVEPET, flag);
}
*/
void Continuity::loadPetData()
{
@ -2474,7 +2430,6 @@ void Continuity::saveFile(int slot, Vector position, unsigned char *scrShotData,
}
worldMap->SetAttribute("b", os.str().c_str());
#ifdef AQUARIA_BUILD_MAPVIS
if (dsq->game->worldMapRender)
{
std::ostringstream os;
@ -2487,7 +2442,6 @@ void Continuity::saveFile(int slot, Vector position, unsigned char *scrShotData,
}
worldMap->SetAttribute("va", os.str().c_str());
}
#endif
}
doc.InsertEndChild(worldMap);
@ -2789,20 +2743,7 @@ void Continuity::loadFile(int slot)
e = e->NextSiblingElement("Flag");
}
/*
if (debugEntityflags)
{
for (EntityFlags::iterator i = entityFlags.begin(); i != entityFlags.end(); i++)
{
if ((*i).first == name)
{
std::ostringstream os;
os << "Duplicate entity flag: " << name << " please report this error";
errorLog(os.str());
}
}
}
*/
XMLElement *efx = doc.FirstChildElement("EFX");
if (efx)
@ -3018,7 +2959,6 @@ void Continuity::loadFile(int slot)
}
#ifdef AQUARIA_BUILD_MAPVIS
if (worldMap->Attribute("va") && dsq->continuity.worldMap.getNumWorldMapTiles())
{
std::istringstream is(worldMap->Attribute("va"));
@ -3027,7 +2967,7 @@ void Continuity::loadFile(int slot)
int idx;
//worldMapTiles.clear();
while (is >> idx)
{
@ -3044,7 +2984,6 @@ void Continuity::loadFile(int slot)
tile->stringToData(is);
}
}
#endif
}
@ -3322,13 +3261,7 @@ void Continuity::loadFile(int slot)
void Continuity::setNaijaModel(std::string model)
{
/*
naijaModel = model;
if (dsq->game->avatar)
{
dsq->game->avatar->refreshModel();
}
*/
}
int Continuity::getFlag(int flag)
@ -3404,7 +3337,7 @@ public:
timer = 0;
//GemGet *q = this;
setTexture("Gems/" + gem);
@ -3424,11 +3357,7 @@ public:
setLife(timeScale+0.1f);
setDecayRate(1);
/*
q->position.path.addPathNode(Vector(400,400), 0.6);
q->position.path.addPathNode(dsq->game->miniMapRender->position, 0.9);
q->position.startPath(t);
*/
}
protected:
float timer;
@ -3496,26 +3425,7 @@ GemData *Continuity::pickupGem(std::string name, bool effects)
GemGet *gg = new GemGet(g.name);
dsq->game->addRenderObject(gg, LR_MINIMAP);
/*
Quad *q = new Quad;
q->setTexture("Gems/" + g.name);
q->followCamera = 1;
q->scale = Vector(0, 0);
q->scale.path.addPathNode(Vector(0,0), 0);
q->scale.path.addPathNode(Vector(1,1), 0.3);
q->scale.path.addPathNode(Vector(1,1), 0.6);
q->scale.path.addPathNode(Vector(0.5,0.5), 0.9);
q->scale.path.addPathNode(Vector(0.1,0.1), 1);
q->scale.startPath(t);
q->position = Vector(400,400);
q->position.path.addPathNode(Vector(400,400), 0.6);
q->position.path.addPathNode(dsq->game->miniMapRender->position, 0.9);
q->position.startPath(t);
dsq->game->addRenderObject(q, LR_MESSAGEBOX);
*/
if (!getFlag("tokenHint"))
@ -3523,8 +3433,8 @@ GemData *Continuity::pickupGem(std::string name, bool effects)
setFlag("tokenHint", 1);
dsq->game->setControlHint(dsq->continuity.stringBank.get(4), false, false, false, 8);
}
//dsq->watch(1);
//dsq->resetTimer();
}
// return the last one
@ -3580,7 +3490,7 @@ void Continuity::reset()
dsq->game->recipeMenu.currentPage = 0;
}
//worldMapTiles.clear();
speedMult = biteMult = fishPoison = defenseMult = 1;
speedMult2 = 1;
@ -3636,12 +3546,12 @@ void Continuity::reset()
loadEatBank();
dsq->loadElementEffects();
form = FORM_NORMAL;
//cm.reset();
naijaModel = "Naija";
costume = "";
dsq->emote.load("data/naijaemote.txt");
//learnSong(SONG_SONGDOOR1);
worldType = WT_NORMAL;
@ -3669,7 +3579,7 @@ void Continuity::reset()
inFile >> spd;
speedTypes.push_back(spd);
}
//selectedSpell = SpellType(0);
if (!dsq->mod.isActive())
{

View file

@ -32,7 +32,7 @@ namespace AQCredits
void watchSlide(int slide)
{
float t = 10;//15;
float t = 10;
if (!(slide >= 0 && slide < slides.size())) return;
@ -81,9 +81,9 @@ void Credits::applyState()
dsq->setCutscene(1,0);
core->resetCamera();
core->sound->stopMusic();
// load everything here:
bg1 = new Quad("particles/gas", Vector(400,300));
@ -185,12 +185,12 @@ void Credits::applyState()
{
core->main(1);
}
dsq->setCutscene(0);
dsq->game->transitionToScene("thirteenlair");
#endif
//dsq->title();
}
void Credits::removeState()

View file

@ -25,7 +25,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
CurrentRender::CurrentRender() : RenderObject()
{
cull = false;
//alpha = 0.2f;
setTexture("Particles/Current");
texture->repeat = true;
rippleDelay = 2;
@ -35,32 +35,12 @@ void CurrentRender::onUpdate(float dt)
{
RenderObject::onUpdate(dt);
/*
rippleDelay -= dt;
if (rippleDelay < 0)
{
for (int i = 0; i < dsq->game->paths.size()-1; i++)
{
Path *p = dsq->game->paths[i];
for (int n = 0; n < p->nodes.size()-1; i++)
{
PathNode *n1 = &p->nodes[n];
PathNode *n2 = &p->nodes[n+1];
Vector diff = n2->position - n1->position;
Vector pos = n1->position + diff*p->animOffset;
// spawn effect at pos
if (core->afterEffectManager)
core->afterEffectManager->addEffect(new ShockEffect(Vector(core->width/2, core->height/2),pos,0.04,0.06,15,0.2f));
}
}
rippleDelay = 1.0;
}
*/
}
void CurrentRender::onRender()
{
#ifdef BBGE_BUILD_OPENGL
// note: Leave cull_face disabled!?
//glDisable(GL_CULL_FACE);
//int qs = 0;
@ -69,86 +49,12 @@ void CurrentRender::onRender()
if (p->active)
{
/*
std::ostringstream os;
os << "animOffset: " << p->animOffset;
debugLog(os.str());
*/
int w2 = p->rect.getWidth()/2;
/*
if (false)
{
float offset = 0;
glBegin(GL_QUAD_STRIP);
int sz = p->nodes.size();
float len = 0;
float totalLength = 0;
for (int n = 0; n < sz-1; n++)
{
totalLength += (p->nodes[n+1].position - p->nodes[n].position).getLength2D();
}
float texScale = totalLength/256.0f;
Vector p1, p2, diff, pl, pr;
for (int n = 0; n < sz; n++)
{
PathNode *n1 = &p->nodes[n];
p1 = n1->position;
if (n == sz-1)
{
PathNode *n2 = &p->nodes[n-1];
p2 = n2->position;
diff = p1-p2;
}
else
{
PathNode *n2 = &p->nodes[n+1];
p2 = n2->position;
diff = p2-p1;
}
len = diff.getLength2D();
float add = len/totalLength;
//texScale = len/totalLength;
pl = diff.getPerpendicularLeft();
pr = diff.getPerpendicularRight();
pl.setLength2D(w2);
pr.setLength2D(w2);
Vector r1 = p1+pl;
Vector r4 = p1+pr;
if (n == 0 || n == sz-1)
{
glColor4f(1, 1, 1, 0);
}
else
{
glColor4f(1, 1, 1, 1);
}
//(0+p->animOffset)*texScale +
glTexCoord2f((offset)*texScale+p->animOffset, 0);
glVertex2f(r1.x, r1.y);
glTexCoord2f((offset)*texScale+p->animOffset, 1);
//(0+p->animOffset)*texScale +
glVertex2f(r4.x, r4.y);
offset += add;
}
glEnd();
}
else
*/
if (true)
{
int sz = p->nodes.size()-1;
@ -165,23 +71,7 @@ void CurrentRender::onRender()
p2 += d*0.75f;
diff = p2 - p1;
//bool edge = false;
/*
if (n == 0)
{
p1 -= diff*0.25f;
edge = true;
}
if (n == sz-1)
{
p2 += diff*0.25f;
edge = true;
}
diff = p2-p1;
*/
if (!diff.isZero())
{
@ -202,21 +92,12 @@ void CurrentRender::onRender()
Vector r8 = p2+pr;
float len = diff.getLength2D();
float texScale = len/256.0f;
//float texScale2 = texScale;
/*
if (edge)
texScale *= 2;
*/
/*
if (edge)
texScale2 *= 4;
*/
if (isTouchingLine(p1, p2, dsq->screenCenter, dsq->cullRadius+p->rect.getWidth()/2.0f))
{
//qs++;
glBegin(GL_QUAD_STRIP);
glColor4f(1,1,1,0);
@ -274,7 +155,7 @@ void CurrentRender::onRender()
if (isTouchingLine(p1, p2, dsq->screenCenter, dsq->cullRadius))
{
//qs++;
glBegin(GL_QUADS);
if (n==0)
glColor4f(1,1,1,0);
@ -305,18 +186,11 @@ void CurrentRender::onRender()
}
}
}
//glEnd();
}
//glEnable(GL_CULL_FACE);
/*
std::ostringstream os;
os << "current quads: " << qs;
debugLog(os.str());
*/
#endif
}

File diff suppressed because it is too large Load diff

View file

@ -161,7 +161,7 @@ enum AquariaActions
ACTION_MULTISELECT ,
ACTION_TOGGLEWORLDMAPEDITOR ,
ACTION_LOOK ,
ACTION_TOGGLEHELPSCREEN,
ACTION_PLACE_AVATAR,
@ -191,16 +191,7 @@ enum WorldMapRevealMethod
};
/*
class Title;
class GameOver;
class Logo;
class Entity;
class SCLogo;
class IntroText;
class AnimationEditor;
class Intro;
*/
struct SubLine
{
SubLine() { timeStamp = 0; }
@ -229,7 +220,7 @@ public:
void go(const std::string &subs);
void update(float dt);
void end();
void hide(float t = 0);
void show(float t = 0);
@ -268,11 +259,11 @@ public:
void start();
void stop();
void load(const std::string &path);
void update(float dt);
void recache();
const std::string& getBaseModPath() const;
bool isActive();
@ -282,7 +273,7 @@ public:
const std::string& getPath() const;
const std::string& getName() const;
void shutdown();
bool isShuttingDown();
@ -551,23 +542,7 @@ enum Layers
class Avatar;
/*
class GardenHoleData
{
public:
GardenHoleData();
float timePlanted, timeLastChecked, lastTimeGrown;
int plantedItem;
unsigned int state;
int slotsUsed;
};
class GardenData
{
public:
GardenHoleData holeData[256];
};
*/
#define MAPVIS_SUBDIV 64
@ -857,12 +832,7 @@ const int FLAG_SECRET03 = 236;
const int FLAG_COLLECTIBLE_START = 500;
const int FLAG_COLLECTIBLE_END = 600;
/*
const int FLAG_PET_NAUTILUS = 601;
const int FLAG_PET_DUMBO = 602;
const int FLAG_PET_BLASTER = 603;
const int FLAG_PET_PIRANHA = 604;
*/
struct PetData
{
@ -907,7 +877,7 @@ public:
void drop(int type);
void entityDied(Entity *eDead);
void achieve(const std::string &achievement);
void initFoodSort();
@ -1016,7 +986,7 @@ public:
Song *getSongByIndex(int idx);
bool hasSong(int song);
int getSongTypeBySlot(int slot);
int getSongSlotByType(int type);
@ -1037,7 +1007,7 @@ public:
typedef std::list<GemData> Gems;
Gems gems;
typedef std::list<BeaconData> Beacons;
Beacons beacons;
@ -1084,7 +1054,7 @@ public:
void removeEmptyIngredients();
void spawnAllIngredients(const Vector &position);
std::vector<std::string> unsortedOrder;
typedef std::vector<Recipe> Recipes;
@ -1149,10 +1119,10 @@ public:
enum { DUALFORM_NAIJA = 0, DUALFORM_LI = 1 };
int dualFormMode, dualFormCharge;
BeaconData *getBeaconByIndex(int index);
void setBeacon(int index, bool v, Vector pos=Vector(0,0,0), Vector color=Vector(1,1,1));
int foodSortType;
std::vector<FoodSortOrder> sortByType, sortByHeal, sortByIngredients, sortByUnsort;
@ -1250,7 +1220,7 @@ public:
void init();
void shutdown();
void toggleInputGrabPlat(bool on);
void toggleBlackBars(bool on, float t=0);
@ -1266,7 +1236,7 @@ public:
CountedPtr<Texture> texCursor, texCursorSwim, texCursorBurst, texCursorSing, texCursorLook;
void setBlackBarsColor(Vector color);
void toggleFullscreen();
void setTexturePointers();
@ -1293,7 +1263,7 @@ public:
Game *game;
bool isQuitFlag();
void jiggleCursor();
SFXLoops loops;
@ -1466,7 +1436,7 @@ public:
void setStory();
bool disableMiniMapOnNoInput;
std::string returnToScene;
Demo demo;
@ -1477,7 +1447,7 @@ public:
#endif
BitmapText *versionLabel;
ProfRender *profRender;
void setVersionLabelText();
float menuSelectDelay;
@ -1515,7 +1485,7 @@ public:
void loadFonts();
void instantQuit();
void centerText(const std::string &text);
@ -1548,13 +1518,13 @@ public:
};
Difficulty difficulty;
std::string getSaveDirectory();
void clickRingEffect(Vector position, int type=0, Vector color=Vector(1,1,1), float ut=0);
void bindInput();
void forceInputGrabOff();
int weird;

View file

@ -21,7 +21,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "DSQ.h"
#include "Game.h"
#include "Avatar.h"
//const float key = 0.1;
Demo::Demo()
{
time = 0;
@ -38,11 +38,11 @@ void Demo::toggleRecord(bool on)
mode = DEMOMODE_RECORD;
time = 0;
timeDiff = 0;
frame = 0;
frame = 0;
}
else
{
mode = DEMOMODE_NONE;
mode = DEMOMODE_NONE;
}
}
@ -54,7 +54,7 @@ void Demo::togglePlayback(bool on)
mode = DEMOMODE_PLAYBACK;
time = 0;
timeDiff = 0;
frame = 0;
frame = 0;
}
else
{
@ -74,25 +74,11 @@ void Demo::save(const std::string &name)
{
togglePlayback(false);
toggleRecord(false);
std::string filename = "" + name + ".demo";
/*
XMLDocument doc;
// UNFINISHED
for (int i = 0; i < frames.size(); i++)
{
//DemoFrame *frame = &frames[i];
XMLElement *xmlDemoFrame = doc.NewElement("DemoFrame");
std::ostringstream os;
//os << frame->avatarPos.x << " " << frame->avatarPos.y << " " << frame->mouse;
//xmlDemoFrame->SetAttribute("a", os.str().c_str());
doc.InsertEndChild(xmlDemoFrame);
}
doc.SaveFile(filename.c_str());
*/
}
void Demo::load(const std::string &name)
@ -103,10 +89,8 @@ void Demo::load(const std::string &name)
// UNFINISHED
std::string filename = "" + name + ".demo";
//XMLDocument doc;
//doc.LoadFile(filename.c_str());
//doc.FirstChildElement("");
}
void Demo::clearRecordedFrames()
@ -124,7 +108,7 @@ void Demo::update(float dt)
if (core->getNestedMains() > 1) return;
if (mode == DEMOMODE_RECORD)
{
{
DemoFrame f;
f.avatarPos = dsq->game->avatar->position;
f.vel = dsq->game->avatar->vel;
@ -136,13 +120,7 @@ void Demo::update(float dt)
frames.push_back(f);
/*
timeDiff += dt;
if (timeDiff > key)
{
timeDiff -= key;
}
*/
time += dt;
if (getQuitKey())
@ -153,18 +131,18 @@ void Demo::update(float dt)
}
else if (mode == DEMOMODE_PLAYBACK)
{
//core->updateMouse = false;
while (frame < frames.size())
{
DemoFrame *f = &frames[frame];
if (f->t <= time) {
// temporarily deactivate for seahorse footage
dsq->game->avatar->vel = f->vel;
dsq->game->avatar->vel2 = f->vel2;
dsq->game->avatar->rotation.z = f->rot;
dsq->game->avatar->position = f->avatarPos;
core->mouse = f->mouse;
@ -174,18 +152,18 @@ void Demo::update(float dt)
{
break;
}
//
}
time += dt;
//core->updateMouse = true;
if (getQuitKey() || (!frames.empty() && frame >= frames.size())) {
if (getQuitKey() || (!frames.empty() && frame >= frames.size())) {
togglePlayback(false);
dsq->centerMessage(dsq->continuity.stringBank.get(2011));
}
}
}

View file

@ -100,7 +100,6 @@ void Element::updateEffects(float dt)
/// check player position
{
// if a big wavy doesn't work, this is probably why
//if ((position - ent->position).isLength2DIn(1024))
{
ElementEffectData *eff = this->eff;
@ -142,7 +141,7 @@ void Element::updateEffects(float dt)
eff->wavy[i].x = eff->wavy[i].x*eff->wavyLerpIn + (eff->wavySave[i].x*(1.0f-eff->wavyLerpIn));
}
}
if (eff->wavyLerpIn < 1)
{
eff->wavyLerpIn += dt*lerpSpd;
@ -163,9 +162,9 @@ void Element::updateEffects(float dt)
eff->wavyMagnitude = 0;
}
//std::cout << "setting grid from wav w/ wavyWaving\n";
setGridFromWavy();
}
else
{
@ -210,7 +209,7 @@ void Element::setGridFromWavy()
{
if (drawGrid)
{
//std::cout << "set grid from wavy (" << xDivs << ", " << yDivs << ")\n"
const float w = float(getWidth());
for (int x = 0; x < xDivs-1; x++)
{
@ -220,7 +219,7 @@ void Element::setGridFromWavy()
const float tmp = eff->wavy[wavy_y].x / w;
if (wavy_y < eff->wavy.size())
{
drawGrid[x][y].x = tmp - 0.5f;
drawGrid[x+1][y].x = tmp + 0.5f;
}
@ -262,11 +261,7 @@ void Element::setElementEffectByIndex(int eidx)
break;
case EFX_WAVY:
{
/*
char buf[256];
sprintf(buf, "setting wavy segsy: %d radius: %d min: %d max: %d", e.segsy, e.wavy_radius, e.wavy_min, e.wavy_max);
debugLog(buf);
*/
eff->wavy.resize(e.segsy);
float bity = float(getHeight())/float(e.segsy);
for (int i = 0; i < eff->wavy.size(); i++)
@ -287,7 +282,7 @@ void Element::setElementEffectByIndex(int eidx)
setStatic(true);
break;
}
if (eff)
{
eff->elementEffectIndex = eidx;
@ -317,10 +312,10 @@ void Element::render()
renderBorderColor = Vector(1,1,1);
}
renderBorder = true;
//errorLog("!^!^$");
}
#endif
Quad::render();
renderBorder = false;
@ -340,11 +335,11 @@ void Element::fillGrid()
}
else if (elementFlag == EF_SOLID2)
{
dsq->game->fillGridFromQuad(this, OT_INVISIBLE, false);
dsq->game->fillGridFromQuad(this, OT_INVISIBLE, false);
}
else if (elementFlag == EF_SOLID3)
{
dsq->game->fillGridFromQuad(this, OT_INVISIBLEIN, false);
dsq->game->fillGridFromQuad(this, OT_INVISIBLEIN, false);
}
}
}

View file

@ -43,7 +43,7 @@ enum ElementFlag
};
struct ElementEffectData
{
{
ElementEffectData();
int elementEffectType;

View file

@ -25,5 +25,4 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#endif

View file

@ -50,7 +50,7 @@ void Emote::playSfx(int index)
if (emoteTimer > 0) return;
int r = 0;
if (emotes[index].variations > 1)
{
r = (rand()%emotes[index].variations)+1;

File diff suppressed because it is too large Load diff

View file

@ -217,7 +217,7 @@ public:
ACT_RANGE = 1
};
void destroy();
//void damage(int amount, Spell *spell=0, Entity *attacker=0);
bool isEntityDead() const {return entityDead;}
std::string name;
Vector vel;
@ -238,14 +238,13 @@ public:
void push(const Vector &vec, float time, float maxSpeed, float dmg);
bool canSetState(int state);
virtual void message(const std::string &msg, int v) {}
virtual int messageVariadic(lua_State *L, int nparams) { return 0; }
bool isUnderWater(const Vector &o=Vector());
//virtual void onHitBySpell(Spell *spell) {}
//virtual void onCollide(Entity *e);
virtual bool damage(const DamageData &d);
virtual bool canShotHit(const DamageData &d) { return true; }
@ -313,7 +312,7 @@ public:
STATE_TITLE =24
};
virtual void onNotify(Entity *notify){}
//void followPath(Path *p, int spd, int loop, bool deleteOnEnd = false);
float followPath(Path *p, float speed, int dir, bool deleteOnEnd = false);
Entity *attachedTo;
bool touchAvatarDamage(int radius, float dmg, const Vector &override=Vector(-1,-1,-1), float speed=0, float pushTime = 0, Vector collidePos = Vector(0,0,0));
@ -334,7 +333,7 @@ public:
void doEntityAvoidance(float dt, int range, float mod, Entity *ignore =0);
void setMaxSpeed(float ms);
Entity *findTarget(int dist, int type, int t=0);
//bool hasTarget() { return target != 0; }
bool hasTarget(int t=0);
bool isTargetInRange(int range, int t=0);
void doGlint(const Vector &position, const Vector &scale=Vector(2,2), const std::string &tex="Glint", RenderObject::BlendTypes bt=BLEND_DEFAULT);
@ -419,10 +418,7 @@ public:
Vector ridingOnEntityOffset;
void moveOutOfWall();
bool isSittingOnInvisibleIn();
/*
void setCrawling(bool on) { crawling = on; }
bool isCrawling() { return crawling; }
*/
void flipToVel();
bool isInCurrent() { return inCurrent; }
void clearTargetPoints();
@ -456,10 +452,10 @@ public:
void clampToHit();
bool updateLocalWarpAreas(bool affectAvatar);
virtual void entityDied(Entity *e);
//bool registerEntityDied;
bool clampToSurface(int tcheck=0, Vector usePos=Vector(0,0), TileVector hitTile=TileVector(0,0));
bool checkSurface(int tcheck, int state, float statet);
//static Shader blurShader;
std::string naijaReaction;
Vector lookAtPoint;
Vector getLookAtPoint();
@ -533,7 +529,7 @@ protected:
int lance;
Bone *lanceBone;
void updateLance(float dt);
//InterpolatedVector blurShaderAnim;
int fhScale, fvScale;
@ -555,9 +551,9 @@ protected:
Vector getMoveVel();
DisabledDamageTypes disabledDamageTypes;
//bool crawling;
//Vector backupPos, backupVel;
virtual void onIdle() {}
virtual void onHeal(int type){}
virtual void onDamage(DamageData &d){}
@ -578,7 +574,7 @@ protected:
virtual void onFreeze(){}
//Entity *target;
std::vector<Entity*>targets;
virtual void onAlwaysUpdate(float dt){}
virtual void onUpdateFrozen(float dt){}
@ -589,7 +585,7 @@ protected:
void onEnterState(int action);
void onExitState(int action);
//virtual bool onDamage(int amount, Spell *spell, Entity *attacker);
bool invincibleBreak;
bool entityDead;
@ -606,10 +602,10 @@ protected:
float pushMaxSpeed;
std::string currentAnim;
protected:
Timer poisonTimer, poisonBitTimer;
float poison;
private:

View file

@ -251,7 +251,7 @@ void FoodHolder::setIngredient(IngredientData *i, bool effects)
if (effects)
{
core->sound->playSfx("Wok");
ing->scale.ensureData();
ing->scale.data->path.clear();
ing->scale.data->path.addPathNode(Vector(1,1),0);
@ -560,7 +560,7 @@ void FoodSlot::onUpdate(float dt)
dsq->game->foodLabel->alpha.interpolateTo(0, 2);
dsq->game->foodDescription->alpha.interpolateTo(0, 2);
break;
//return;
}
@ -814,7 +814,7 @@ void TreasureSlot::onUpdate(float dt)
if (doubleClickTimer > 0)
{
doubleClickTimer = 0;
dsq->game->onUseTreasure(flag);
}
else
@ -822,7 +822,7 @@ void TreasureSlot::onUpdate(float dt)
dsq->sound->playSfx("treasure-select", 0.5);
dsq->spawnParticleEffect("menu-switch", worldRightCenter, 0, 0, LR_HUD3, 1);
dsq->game->treasureLabel->setText(treasureName);
dsq->game->treasureLabel->alpha = 1;
@ -889,7 +889,7 @@ void TreasureSlot::refresh()
h = sz;
w = (width*sz)/height;
}
setWidthHeight(w*scl, h*scl);
std::string parse = dsq->continuity.stringBank.get(flag);
@ -1122,7 +1122,7 @@ Ingredient *Game::spawnIngredient(const std::string &ing, const Vector &pos, int
Ingredient *i = 0;
for (int c = 0; c < times; c++)
{
//HACK:
//HACK:
if (nocasecmp(ing, "poultice")==0)
use = "LeafPoultice";
@ -1295,7 +1295,7 @@ void Game::showInGameMenu(bool ignoreInput, bool optionsOnly, MenuPage menuPage)
if (avatar && core->getNestedMains()==1 && !avatar->isSinging() && (ignoreInput || avatar->isInputEnabled()))
{
//dsq->toggleInputGrabPlat(false);
dsq->game->clearControlHint();
selectedTreasureFlag = -1;
@ -1449,7 +1449,7 @@ void Game::showInGameMenu(bool ignoreInput, bool optionsOnly, MenuPage menuPage)
useMenuPage = dsq->continuity.lastMenuPage;
}
}
switch(useMenuPage)
{
@ -1490,7 +1490,7 @@ void Game::showInGameMenu(bool ignoreInput, bool optionsOnly, MenuPage menuPage)
}
}
}
if (!optionsOnly)
{
@ -1500,14 +1500,14 @@ void Game::showInGameMenu(bool ignoreInput, bool optionsOnly, MenuPage menuPage)
menu[i]->alpha.interpolateTo(1, 0.15);
}
menuIconGlow->alpha.interpolateTo(1, 0.5);
}
menuOpenTimer = 0;
inGameMenu = true;
dsq->routeShoulder = false;
@ -1515,7 +1515,7 @@ void Game::showInGameMenu(bool ignoreInput, bool optionsOnly, MenuPage menuPage)
dsq->screenTransition->transition(MENUPAGETRANSTIME);
if (optionsOnly)
{
@ -1553,7 +1553,7 @@ void Game::hideInGameMenu(bool effects, bool cancel)
resBox->close();
//dsq->toggleInputGrabPlat(true);
if (effects)
core->sound->playSfx("Menu-Close");
@ -1588,7 +1588,7 @@ void Game::hideInGameMenu(bool effects, bool cancel)
toggleMainMenu(false);
toggleKeyConfigMenu(false);
}
menuIconGlow->alpha = 0;
for (i = 0; i < menu.size(); i++)
@ -1614,8 +1614,8 @@ void Game::hideInGameMenu(bool effects, bool cancel)
menuBg->alpha.interpolateTo(0, t);
menuBg->scale.interpolateTo(menuBg->scale*0.5f, t);
menuBg2->alpha.interpolateTo(0, t);
if (menuSongs)
menuSongs->alpha.interpolateTo(0, t);
@ -1645,8 +1645,7 @@ void Game::hideInGameMenu(bool effects, bool cancel)
for (int i = 0; i < songTips.size(); i++)
songTips[i]->alpha = 0;
for (int i = 0; i < dropIngrNames.size(); i++)
@ -1654,7 +1653,7 @@ void Game::hideInGameMenu(bool effects, bool cancel)
dsq->game->spawnIngredient(dropIngrNames[i], avatar->position + Vector(0,-96), 1, 1);
}
dropIngrNames.clear();
if (effects)
dsq->quitNestedMain();
@ -1866,7 +1865,7 @@ void Game::transitionToScene(std::string scene)
}
sceneToLoad = scene;
stringToLower(sceneToLoad);
core->enqueueJumpState("Game", false);
}
@ -1949,7 +1948,6 @@ void Game::clearObsRows()
void Game::fillGridFromQuad(Quad *q, ObsType obsType, bool trim)
{
#ifdef BBGE_BUILD_OPENGL
if (q->texture)
{
std::vector<TileVector> obs;
@ -2079,7 +2077,6 @@ void Game::fillGridFromQuad(Quad *q, ObsType obsType, bool trim)
}
glPopMatrix();
}
#endif
}
std::string Game::getNoteName(int n, const std::string &pre)
@ -2764,7 +2761,6 @@ void Game::setTimerText(float time)
void Game::generateCollisionMask(Quad *q, float overrideCollideRadius /* = 0 */)
{
#ifdef BBGE_BUILD_OPENGL
if (q->texture)
{
if (overrideCollideRadius)
@ -2868,7 +2864,6 @@ void Game::generateCollisionMask(Quad *q, float overrideCollideRadius /* = 0 */)
rot += 360;
*/
}
#endif
}
void Game::addPath(Path *p)
@ -3217,10 +3212,10 @@ void Game::sortFood()
dsq->continuity.sortByUnsort.push_back(FoodSortOrder(IT_NONE, IET_NONE, dsq->continuity.ingredients[i].name));
}
*/
std::vector<std::string> foodHolderNames;
foodHolderNames.resize(foodHolders.size());
for (int i = 0; i < foodHolders.size(); i++) {
IngredientData *ing = foodHolders[i]->getIngredient();
if (ing) {
@ -3233,22 +3228,22 @@ void Game::sortFood()
dsq->continuity.foodSortType++;
if (dsq->continuity.foodSortType >= MAX_FOODSORT)
dsq->continuity.foodSortType = 0;
dsq->continuity.sortFood();
// rebuild the page
refreshFoodSlots(false);
/*
toggleFoodMenu(false);
toggleFoodMenu(true);
*/
dsq->sound->playSfx("shuffle");
dsq->sound->playSfx("menu-switch", 0.5);
dsq->spawnParticleEffect("menu-switch", worldLeftCenter, 0, 0, LR_HUD3, 1);
for (int i = 0; i < foodHolders.size(); i++) {
if (!foodHolderNames[i].empty()) {
IngredientData *ing = dsq->continuity.getIngredientHeldByName(foodHolderNames[i]);
@ -3336,7 +3331,7 @@ void Game::createInGameMenu()
int h = controllabels->getHeight();
controllabels->position = Vector(checkx-16-w/2.0f, checky + h/2.0f - 14);
options->addChild(controllabels, PM_POINTER);
int scheckx=270;
@ -3471,7 +3466,7 @@ void Game::createInGameMenu()
// Vector(575,250);
songLabel = new BitmapText(&dsq->smallFont);
{
@ -3486,7 +3481,6 @@ void Game::createInGameMenu()
ToolTip *tip = 0;
foodTips.clear();
@ -3579,24 +3573,24 @@ void Game::createInGameMenu()
int offy = -20;
#define SB(x) dsq->continuity.stringBank.get(x)
TTFText *header_action = new TTFText(&dsq->fontArialSmall);
header_action->setText(SB(2101));
header_action->position = Vector(140, 80+offy);
group_keyConfig->addChild(header_action, PM_POINTER);
TTFText *header_key1 = new TTFText(&dsq->fontArialSmall);
header_key1->setText(SB(2102));
header_key1->position = Vector(350, 80+offy);
header_key1->setAlign(ALIGN_CENTER);
group_keyConfig->addChild(header_key1, PM_POINTER);
TTFText *header_key2 = new TTFText(&dsq->fontArialSmall);
header_key2->setText(SB(2103));
header_key2->position = Vector(475, 80+offy);
header_key2->setAlign(ALIGN_CENTER);
group_keyConfig->addChild(header_key2, PM_POINTER);
TTFText *header_joy = new TTFText(&dsq->fontArialSmall);
header_joy->setText(SB(2104));
header_joy->position = Vector(600, 80+offy);
@ -3620,7 +3614,7 @@ void Game::createInGameMenu()
AquariaKeyConfig* s1y = addAxesConfigLine(group_keyConfig, SB(2118), "s1ay", 340+offy, 130);
AquariaKeyConfig* s2x = addAxesConfigLine(group_keyConfig, SB(2119), "s2ax", 340+offy, 260);
AquariaKeyConfig* s2y = addAxesConfigLine(group_keyConfig, SB(2120), "s2ay", 340+offy, 380);
s1x->setDirMove(DIR_LEFT, s1x);
s1x->setDirMove(DIR_RIGHT, s1y);
@ -3634,7 +3628,7 @@ void Game::createInGameMenu()
s2y->setDirMove(DIR_RIGHT, s2y);
offy += 20;
addKeyConfigLine(group_keyConfig, SB(2121), "PrevPage", 340+offy);
addKeyConfigLine(group_keyConfig, SB(2122), "NextPage", 360+offy);
addKeyConfigLine(group_keyConfig, SB(2123), "CookFood", 380+offy);
@ -3643,7 +3637,7 @@ void Game::createInGameMenu()
addKeyConfigLine(group_keyConfig, SB(2126), "FoodDrop", 440+offy);
addKeyConfigLine(group_keyConfig, SB(2127), "Look", 460+offy);
addKeyConfigLine(group_keyConfig, SB(2128), "ToggleHelp", 480+offy);
#undef SB
@ -3656,7 +3650,7 @@ void Game::createInGameMenu()
group_keyConfig->position = Vector(0, -40);
addRenderObject(group_keyConfig, LR_OVERLAY);
cook = new AquariaMenuItem;
cook->useQuad("Gui/cook-button");
@ -3774,7 +3768,7 @@ void Game::createInGameMenu()
showRecipe->followCamera = 1;
showRecipe->position = Vector(575,250);
addRenderObject(showRecipe, LR_MENU);
float scrollx = 555;
recipeMenu.scroll = new Quad("gui/recipe-scroll", Vector(scrollx, 200));
recipeMenu.scroll->followCamera = 1;
@ -3801,7 +3795,7 @@ void Game::createInGameMenu()
recipeMenu.page->setText(dsq->continuity.stringBank.get(2006));
recipeMenu.page->alpha = 0;
addRenderObject(recipeMenu.page, LR_RECIPES);
recipeMenu.prevPage = new AquariaMenuItem;
recipeMenu.prevPage->useQuad("Gui/arrow-left");
recipeMenu.prevPage->useSound("click");
@ -3845,8 +3839,6 @@ void Game::createInGameMenu()
int outer = 0;
int inner = 0;
for (i = 0; i < songSlots.size(); i++)
@ -3953,13 +3945,13 @@ void Game::createInGameMenu()
menu[4]->position = Vector(400,ty+10);
int gs = 40;
menu[5]->event.set(MakeFunctionEvent(Game, switchToSongMenu));
menu[5]->useQuad("gui/icon-songs");
menu[5]->useGlow("particles/glow", gs, gs);
menu[5]->useSound("Click");
menu[5]->position = Vector(400-60, 350);
menuIconGlow = new Quad("particles/glow", menu[5]->position);
menuIconGlow->alphaMod = 0.4;
menuIconGlow->alpha = 0;
@ -4014,7 +4006,7 @@ void Game::createInGameMenu()
((AquariaMenuItem*)menu[4])->setDirMove(DIR_UP, ((AquariaMenuItem*)menu[6]));
// ---------- FOOD MENU
@ -4026,7 +4018,7 @@ void Game::createInGameMenu()
for (i = 0; i < foodSlots.size(); i++)
{
foodSlots[i] = new FoodSlot(i);
float angle = (float(food)/float(foodSlots.size()))*PI*2;
foodSlots[i]->position = worldCenter + Vector(sinf(angle), cosf(angle))*foodSlotRadius;
@ -4073,7 +4065,7 @@ void Game::createInGameMenu()
// ---------- TREASURES
int treasureSlotRadius = 96;
treasureSlots.resize(treasurePageSize);
@ -6127,16 +6119,16 @@ void Game::toggleWorldMap()
void Game::applyState()
{
bool verbose = true;
applyingState = true;
applyingState = true;
helpText = 0;
helpUp = helpDown = 0;
inHelpScreen = false;
helpBG = 0;
helpBG2 = 0;
dsq->returnToScene = "";
// new place where mods get stopped!
// this lets recaching work
// (presumably because there has been time for the garbage to be cleared)
@ -6155,7 +6147,7 @@ void Game::applyState()
enqueuedPreviewRecipe = 0;
dsq->toggleBlackBars(false);
dsq->setTexturePointers();
@ -6226,9 +6218,9 @@ void Game::applyState()
{
dsq->game->setElementLayerVisible(i-LR_ELEMENTS1, true);
}
dsq->applyParallaxUserSettings();
controlHintTimer = 0;
cameraConstrained = true;
// reset parallax
@ -6462,15 +6454,12 @@ void Game::applyState()
if (toFlip == 1)
{
dsq->game->avatar->flipHorizontal();
toFlip = -1;
}
// li
@ -6943,7 +6932,7 @@ void Game::applyState()
{
dsq->toggleCursor(true, 0.5);
}
dsq->forceInputGrabOff();
debugLog("Game::applyState Done");
@ -7366,7 +7355,7 @@ void Game::onCook()
goto endcook;
}
}
if(!data)
{
dsq->sound->playSfx("Denied");
@ -7412,7 +7401,7 @@ void Game::onCook()
//dsq->main(0.2);
if (longAnim)
{
float ft = 0.8;
@ -7719,7 +7708,7 @@ void Game::setControlHint(const std::string &h, bool left, bool right, bool midd
controlHint_image->alpha.interpolateTo(0, hintTransTime);
}
controlHint_text->position.x = 400 - controlHint_text->getSetWidth()/2 + 25;
//400 - controlHint_bg->getWidth()/2 + 25;
controlHint_text->setAlign(ALIGN_LEFT);
@ -7858,7 +7847,7 @@ void Game::toggleHelpScreen(bool on, const std::string &label)
helpWasPaused = isPaused();
togglePause(true);
std::string data;
// These say "Mac" but we use them on Linux, too.
@ -7879,7 +7868,7 @@ void Game::toggleHelpScreen(bool on, const std::string &label)
}
fname = localisePath("data/help_start.txt");
appendFileToString(data, fname);
// These say "Mac" but we use them on Linux, too.
#if defined(BBGE_BUILD_UNIX)
fname = localisePath("data/help_end_mac.txt");
@ -7927,7 +7916,7 @@ void Game::toggleHelpScreen(bool on, const std::string &label)
int line = helpText->findLine(label);
helpText->offset.interpolateTo(Vector(0, -helpText->getLineHeight()*line), -1200);
}
//helpText->offset.interpolateTo(Vector(0, -400), 4, -1, 1);
//test->position = Vector(400,300);
addRenderObject(helpText, LR_HELP);
@ -7972,7 +7961,7 @@ void Game::toggleHelpScreen(bool on, const std::string &label)
{
core->getRenderObjectLayer(i)->visible = false;
}
core->resetTimer();
dsq->screenTransition->transition(MENUPAGETRANSTIME);
@ -8447,7 +8436,7 @@ void Game::preLocalWarp(LocalWarpType localWarpType)
{
dsq->game->avatar->warpInLocal = Vector(0,0,0);
}
dsq->screenTransition->capture();
core->resetTimer();
}
@ -9092,7 +9081,7 @@ void Game::toggleFoodMenu(bool f)
if (dsq->game->avatar)
{
Path *p=0;
if (dsq->continuity.getFlag(FLAG_UPGRADE_WOK) > 0
if (dsq->continuity.getFlag(FLAG_UPGRADE_WOK) > 0
|| ((p=dsq->game->getNearestPath(dsq->game->avatar->position, PATH_COOK))
&& p->isCoordinateInside(dsq->game->avatar->position)))
{
@ -9173,7 +9162,7 @@ void Game::toggleFoodMenu(bool f)
foodLabel->alphaMod = 0;
foodLabel->alpha = 0;
foodDescription->alpha = 0;
foodSort->alpha = 0;
foodSort->alpha = 0;
showRecipe->alpha = 0;
liCrystal->alpha = 0;
@ -9276,7 +9265,7 @@ void Game::toggleKeyConfigMenu(bool f)
{
const float t = 0;
playingSongInMenu = -1;
if (f && !keyConfigMenu)
{
@ -9322,13 +9311,13 @@ void Game::toggleKeyConfigMenu(bool f)
opt_cancel->alpha = 1;
opt_save->alpha = 1;
opt_save->position = opt_save_original + Vector(0, 120);
opt_cancel->position = opt_cancel_original + Vector(0, 120);
opt_cancel->setFocus(true);
menuIconGlow->alpha = 0;
//dsq->screenTransition->transition(MENUPAGETRANSTIME);
@ -9345,7 +9334,7 @@ void Game::toggleKeyConfigMenu(bool f)
opt_save->position = opt_save_original;
opt_cancel->position = opt_cancel_original;
menuIconGlow->alpha = 1;
}
}
@ -9364,7 +9353,7 @@ void Game::toggleOptionsMenu(bool f, bool skipBackup, bool isKeyConfig)
{
dsq->continuity.lastOptionsMenuPage = currentMenuPage;
}
toggleFoodMenu(false);
optionsMenu = true;
voxslider->setValue(dsq->user.audio.voxvol);
@ -9434,7 +9423,7 @@ void Game::toggleOptionsMenu(bool f, bool skipBackup, bool isKeyConfig)
liCrystal->alpha = 1;
optionsMenu = true;
menuIconGlow->alpha = 0;
/*
@ -9447,7 +9436,7 @@ void Game::toggleOptionsMenu(bool f, bool skipBackup, bool isKeyConfig)
lips->alpha = 0;
keyConfigButton->alpha = 0;
options->alpha.interpolateTo(0, t);
opt_cancel->alpha = 0;
@ -9465,7 +9454,7 @@ void Game::toggleOptionsMenu(bool f, bool skipBackup, bool isKeyConfig)
optionsMenu = false;
if (!optionsOnly)
{
for (int i = 0; i <= 1; i++)
@ -9503,12 +9492,12 @@ void Game::toggleOptionsMenu(bool f, bool skipBackup, bool isKeyConfig)
//((AquariaMenuItem*)menu[4])->setFocus(true);
menuBg2->alpha.interpolateTo(1, t);
}
menuIconGlow->alpha = 1;
}
}
@ -9752,7 +9741,7 @@ void Game::updateCursor(float dt)
// instant during map fadeout).
if (dsq->inputMode == INPUT_MOUSE || isSceneEditorActive() || dsq->game->isPaused())
dsq->cursor->alphaMod = 0.5;
/*
dsq->cursor->offset.stop();
dsq->cursor->offset = Vector(0,0);
@ -10000,7 +9989,7 @@ const float helpTextScrollSpeed = 800.0f;
const float helpTextScrollClickAmount = 340.0f;
const float helpTextScrollClickTime = -helpTextScrollSpeed;
void Game::onHelpDown()
{
{
float to = helpText->offset.y - helpTextScrollClickAmount;
if (to < -helpText->getHeight() + core->getVirtualHeight())
{
@ -10393,7 +10382,7 @@ void Game::update(float dt)
if (cameraFollow)
{
Vector dest = *cameraFollow;
if (avatar)
{
if (avatar->looking && !dsq->game->isPaused()) {
@ -10732,7 +10721,7 @@ void Game::removeState()
const float fadeTime = 0.25;
dsq->toggleVersionLabel(false);
dsq->subtitlePlayer.hide(fadeTime);
dropIngrNames.clear();

View file

@ -58,7 +58,7 @@ struct RecipeMenu
Quad *scrollEnd;
BitmapText *header, *page, *description;
AquariaMenuItem *nextPage, *prevPage;
void toggle(bool on, bool watch=false);
void createPage(int p);
@ -68,7 +68,7 @@ struct RecipeMenu
void goPrevPage();
int getNumPages();
int getNumKnown();
int currentPage;
bool on;
@ -100,7 +100,7 @@ const float MIN_SIZE = 0.1;
#undef AQUARIA_BUILD_SCENEEDITOR
#endif
//#include "GridRender.h"
class GridRender;
class MiniMapRender;
class WaterSurfaceRender;
@ -487,9 +487,9 @@ public:
void updateSelectedElementPosition(Vector position);
int selectedEntityType;
//int curEntity;
SelectedEntity selectedEntity;
//EntityGroups::iterator page;
int entityPageNum;
void checkForRebuild();
@ -633,7 +633,7 @@ public:
void removeState();
void update(float dt);
void onLeftMouseButton();
//std::vector<Item*>items;
Avatar *avatar;
Entity *li;
@ -642,7 +642,7 @@ public:
FoodSlot *moveFoodSlotToFront;
//void doChoiceMenu(Vector position, std::vector<std::string> choices);
std::string getSelectedChoice() { return selectedChoice; }
@ -824,8 +824,8 @@ public:
Precacher tileCache;
//void cameraPanToNode(Path *p, int speed=500);
//void cameraRestore();
void setCameraFollow(Vector *position);
Shot *fireShot(Entity *firer, const std::string &particleEffect, Vector position, bool big, Vector direction, Entity *target, int homing=0, int velLenOverride=0, int targetPt=-1);
Shot *fireShot(const std::string &bankShot, Entity *firer, Entity *target=0, const Vector &pos=Vector(0,0,0), const Vector &aim=Vector(0,0,0), bool playSfx=true);
@ -910,7 +910,7 @@ public:
void selectEntityFromGroups();
InterpolatedVector cameraInterp;
//InterpolatedVector tintColor;
float getWaterLevel();
void setMusicToPlay(const std::string &musicToPlay);
Vector lastCollidePosition;
@ -1047,7 +1047,7 @@ protected:
bool isCooking;
void doMenuSectionHighlight(int sect);
float cookDelay;
float ingOffY;
@ -1058,7 +1058,7 @@ protected:
void onPrevRecipePage();
void onNextRecipePage();
typedef std::vector<IngredientData*> CookList;
CookList cookList;
@ -1163,12 +1163,7 @@ protected:
float deathTimer;
/*
void onAssignMenuScreenItemToSlot0();
void onAssignMenuScreenItemToSlot1();
void onAssignMenuScreenItemToSlot2();
void onAssignMenuScreenItemToSlot3();
*/
void onInGameMenuInventory();
void onInGameMenuSpellBook();

View file

@ -56,11 +56,7 @@ void GameplayVariables::load()
inFile >> s >> zoomNaija;
inFile >> s >> maxOutOfWaterSpeed;
inFile >> s >> defaultCameraLerpDelay;
/*
inFile >> s >> initialId;
inFile >> s >> initialEgo;
inFile >> s >> initialSuperEgo;
*/
inFile.close();
}

View file

@ -29,8 +29,8 @@ GasCloud::GasCloud(Entity *source, const Vector &position, const std::string &pa
this->poisonTime = poisonTime;
this->particles = particles;
//this->gfx = gfx;
//this->isMoney = isMoney;
this->position = position;
this->damage = damage;
this->radius = radius;
@ -46,10 +46,10 @@ GasCloud::GasCloud(Entity *source, const Vector &position, const std::string &pa
emitter->load(particles);
emitter->start();
emitter->setDie(true);
//emitter->parentManagedStatic = true;
//addChild(&emitter);
dsq->game->addRenderObject(emitter, LR_PARTICLES);
//setDamageTarget(DT_ENEMY_GAS, false)
setEntityType(ET_NEUTRAL);
deathSound = "";
@ -96,32 +96,7 @@ void GasCloud::onUpdate(float dt)
}
}
/*
pTimer += dt;
while (pTimer > pSpawnRate)
{
int a = rand()%360;
int r = rand()%radius;
Vector pos = position;
pos += Vector(sinf(a)*r, cosf(a)*r);
Quad *quad = new Quad;
{
quad->rotation.z = rand()%360;
quad->position = pos;
quad->color = color;
quad->setTexture(gfx);
quad->alpha.path.addPathNode(0, 0);
quad->alpha.path.addPathNode(0.5, 0.2);
quad->alpha.path.addPathNode(0.5, 0.8);
quad->alpha.path.addPathNode(0, 1);
quad->alpha.startPath(3);
quad->scale = Vector(0.5, 0.5);
quad->scale.interpolateTo(Vector(2,2),4);
}
dsq->getTopStateData()->addRenderObject(quad, LR_PARTICLES);
pTimer -= pSpawnRate;
}
*/
}
else
{

View file

@ -24,18 +24,18 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
GridRender::GridRender(ObsType obsType) : RenderObject()
{
color = Vector(1, 0, 0);
//color = Vector(0.2,0.2,1);
position.z = 5;
cull = false;
alpha = 0.5f;
this->obsType = obsType;
blendEnabled = false;
//setTexture("grid");
}
void GridRender::onUpdate(float dt)
{
RenderObject::onUpdate(dt);
RenderObject::onUpdate(dt);
if (obsType != OT_BLACK) { blendEnabled = true; }
}
@ -46,22 +46,13 @@ inline static void doRenderGrid(int x, int startCol, int endCol)
const int drawy1 = startCol*TILE_SIZE;
const int drawy2 = (endCol+1)*TILE_SIZE;
#ifdef BBGE_BUILD_OPENGL
glBegin(GL_QUADS);
glVertex3i(drawx1, drawy2, 0.0f);
glVertex3i(drawx2, drawy2, 0.0f);
glVertex3i(drawx2, drawy1, 0.0f);
glVertex3i(drawx1, drawy1, 0.0f);
glEnd();
#endif
#ifdef BBGE_BUILD_DIRECTX
core->blitD3DVerts(0,
drawx1, drawy1,
drawx2, drawy1,
drawx2, drawy2,
drawx1, drawy2);
#endif
}
void GridRender::onRender()
@ -159,11 +150,10 @@ void SongLineRender::clear()
void SongLineRender::onRender()
{
int w=core->getWindowWidth();
//core->getWindowWidth(&w);
int ls = (4*w)/1024.0f;
if (ls < 0)
ls = 1;
#ifdef BBGE_BUILD_OPENGL
glLineWidth(ls);
const int alphaLine = pts.size()*(0.9f);
float a = 1;
@ -173,11 +163,10 @@ void SongLineRender::onRender()
if (i < alphaLine)
a = float(i)/float(alphaLine);
else
a = 1;
a = 1;
glColor4f(pts[i].color.x, pts[i].color.y, pts[i].color.z, a);
glVertex2f(pts[i].pt.x, pts[i].pt.y);
}
glEnd();
#endif
}

View file

@ -23,8 +23,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "Hair.h"
#include "DSQ.h"
// nodes = 40
// segmentLength = 3
Hair::Hair(int nodes, float segmentLength, float hairWidth) : RenderObject()
{
this->segmentLength = segmentLength;
@ -33,8 +33,8 @@ Hair::Hair(int nodes, float segmentLength, float hairWidth) : RenderObject()
cull = false;
hairNodes.resize(nodes);
// nodes: 20 length: 6
//segmentLength = 3;
for (int i = 0; i < hairNodes.size(); i++)
{
float perc = (float(i)/(float(hairNodes.size())));
@ -47,64 +47,14 @@ Hair::Hair(int nodes, float segmentLength, float hairWidth) : RenderObject()
void Hair::exertWave(float dt)
{
/*
Vector diff = headPos - position;
Vector diff2;
if (!isFlippedHorizontal())
diff2 = diff.getPerpendicularLeft();
else
diff2 = diff.getPerpendicularRight();
Vector diff3 = position - headPos;
float len =diff2.getLength2D();
diff3.setLength2D(len);
hairTimer += dt;
while (hairTimer > 2.0f)
{
hairTimer -= 2.0f;
}
float useTimer = hairTimer;
if (useTimer > 1.0f)
useTimer = 1.0f - (hairTimer-1);
float frc = 0.5;
diff = (diff2*(frc*(1.0f-(useTimer*0.5f))) + diff3*(frc);
diff.setLength2D(400);
//if (!vel.isLength2DIn(10))
exertForce(diff, dt);
*/
}
void Hair::exertGravityWave(float dt)
{
/*
Vector diff = headPos - position;
Vector diff2;
if (!isFlippedHorizontal())
diff2 = diff.getPerpendicularLeft();
else
diff2 = diff.getPerpendicularRight();
Vector diff3 = position - headPos;
float len =diff2.getLength2D();
diff3.setLength2D(len);
hairTimer += dt;
while (hairTimer > 2.0f)
{
hairTimer -= 2.0f;
}
float useTimer = hairTimer;
if (useTimer > 1.0f)
useTimer = 1.0f - (hairTimer-1);
float frc = 0.333333;
diff = (diff2*(frc*(1.0f-(useTimer*0.5f))) + diff3*(frc) + Vector(0,len)*(frc*(0.5f+useTimer*0.5f)));
diff.setLength2D(400);
//if (!vel.isLength2DIn(10))
exertForce(diff, dt);
*/
}
void Hair::setHeadPosition(const Vector &vec)
@ -125,16 +75,15 @@ HairNode *Hair::getHairNode(int idx)
void Hair::onRender()
{
#ifdef BBGE_BUILD_OPENGL
//glDisable(GL_CULL_FACE);
glBegin(GL_QUAD_STRIP);
float texBits = 1.0f / (hairNodes.size()-1);
//float height2 = 2.5f;
Vector pl, pr;
for (int i = 0; i < hairNodes.size(); i++)
{
//glNormal3f( 0.0f, 0.0f, 1.0f);
if (i != hairNodes.size()-1)
{
@ -144,14 +93,6 @@ void Hair::onRender()
pr = diffVec.getPerpendicularRight();
}
/*
if (hairNodes[i].problem)
{
glColor3f(1,0,0);
}
else
glColor3f(1,1,1);
*/
glTexCoord2f(0, texBits*i);
@ -159,99 +100,33 @@ void Hair::onRender()
glTexCoord2f(1, texBits*i);
glVertex3f( hairNodes[i].position.x + pr.x, hairNodes[i].position.y + pr.y, 0);
//float angle = 0;
/*
float angle = 0;
if (i < hairNodes.size()-1)
{
MathFunctions::calculateAngleBetweenVectorsInDegrees(hairNodes[i+1].position, hairNodes[i].position, angle);
angle += 90;
angle = (angle*PI)/180.0f;
}
*/
/*
glTexCoord2f(0, 1-texBits*i);
glVertex3f(hairNodes[i].position.x -sinf(angle)*hairWidth, hairNodes[i].position.y + cosf(angle)*height2, 0);
glTexCoord2f(1, 1-texBits*i);
glVertex3f( hairNodes[i].position.x + sinf(angle)*hairWidth, hairNodes[i].position.y + cosf(angle)*height2, 0);
*/
}
glEnd();
/*
glColor3f(1,1,1);
for (int i = 0; i < hairNodes.size(); i++)
{
std::ostringstream os;
os << hairNodes[i].angleDiff;
core->print(hairNodes[i].position.x, hairNodes[i].position.y, os.str().c_str(), 6);
}
*/
//glEnable(GL_CULL_FACE);
#endif
}
void Hair::onUpdate(float dt)
{
RenderObject::onUpdate(dt);
/*
// straighten hair
if (hairNodes.size()>2)
{
Vector d1 = hairNodes[1].position - hairNodes[0].position;
for (int i = 2; i < hairNodes.size(); i++)
{
Vector d2 = hairNodes[i].position - hairNodes[i-1].position;
Vector wantPos = hairNodes[i-1].position + d1;
float perc = 1.0f-float(i)/float(hairNodes.size());
hairNodes[i].position += (wantPos - hairNodes[i].position)*dt*(40 * perc);
//Vector d1 = hairNodes[i-1].position - hairNodes[i-2].position;
//Vector d2 = hairNodes[i].position - hairNodes[i-1].position;
//float prod = d1.dot2D(d2);
////if (prod < 0.5f)
//{
// d1.setLength2D(segmentLength);
//
// Vector wantPos = (hairNodes[i-1].position + d1)*0.5f + hairNodes[i].position*0.5f;
// hairNodes[i].position += (wantPos - hairNodes[i].position)*dt*10;
// break;
//}
}
}
*/
}
void Hair::updatePositions()
{
BBGE_PROF(Hair_updatePositions);
//int minLength = 1;
/*
Vector accum;
for (int i = 1; i < hairNodes.size(); i++)
{
Vector diff = hairNodes[i].position - hairNodes[i-1].position;
accum += diff;
}
accum /= float(hairNodes.size()-1);
*/
for (int i = 1; i < hairNodes.size(); i++)
{
Vector diff = hairNodes[i].position - hairNodes[i-1].position;
/*
if (diff.getLength2D() < 1)
{
diff = accum;
}
*/
/*
if (diff.getLength2D() <= 1)
{
diff = hairNodes[i].position - hairNodes[0].position;
}
*/
if (diff.getLength2D() < segmentLength)
{
@ -260,181 +135,13 @@ void Hair::updatePositions()
}
else if (diff.getLength2D() > segmentLength)
{
//diff |= segmentLength;
diff.setLength2D(segmentLength);
hairNodes[i].position = hairNodes[i-1].position + diff;
}
/*
if (i > 1)
{
Vector d1 = hairNodes[i-1].position - hairNodes[i-2].position;
Vector d2 = hairNodes[i].position - hairNodes[i-1].position;
float prod = d1.dot2D(d2);
float a1 = 0, a2 = 0;
float maxAngle = 0.3;
MathFunctions::calculateAngleBetweenVectorsInRadians(d1, Vector(0,0,0), a1);
MathFunctions::calculateAngleBetweenVectorsInRadians(d2, Vector(0,0,0), a2);
float a = a2 - a1;
hairNodes[i].angleDiff = a;
if (fabsf(a) > maxAngle)
{
float len = d2.getLength2D();
//d2 = d1;
Vector dt1 = d1;
Vector dt2 = d1;
dt1.rotate2D(-maxAngle);
dt2.rotate2D(maxAngle);
//if (a < 0)
// d2.rotate2D(-maxAngle);
//else
// d2.rotate2D(maxAngle);
//d2.setLength2D(len);
//hairNodes[i].position = hairNodes[i-1].position + d2;
dt1 = hairNodes[i-1].position + dt1;
dt2 = hairNodes[i-1].position + dt2;
if ((hairNodes[i].position - dt1).getSquaredLength2D() < (hairNodes[i].position - dt2).getSquaredLength2D())
{
hairNodes[i].position = dt1;
}
else
hairNodes[i].position = dt2;
hairNodes[i].problem = true;
}
else
{
hairNodes[i].problem = false;
}
}
*/
/*
int diffLength = segmentLength * 2;
Vector accum;
int c=0;
for (int j = 0; j < hairNodes.size(); j++)
{
if (j != i && j != i-1 && j != i+1)
{
Vector diff = hairNodes[i].position - hairNodes[j].position;
if (diff.getLength2D() < diffLength)
{
diff.setLength2D(diffLength);
//hairNodes[i].position = hairNodes[j].position + diff;
accum += hairNodes[j].position + diff;
c++;
//break;
}
}
}
if (!accum.isZero())
{
accum /= c;
//hairNodes[i].position = (hairNodes[i].position + accum)*0.5f;
hairNodes[i].position = accum;
}
*/
/*
if (i > 1)
{
Vector d1 = hairNodes[i-1].position - hairNodes[i-2].position;
Vector d2 = hairNodes[i].position - hairNodes[i-1].position;
float prod = d1.dot2D(d2);
if (prod < -0.5f)
{
//d1.setLength2D(d2.getLength2D());
Vector wantPos = hairNodes[i-1].position + d1;
hairNodes[i].position = wantPos;//hairNodes[i].position*0.75f + wantPos*0.25f;
//
//d2 = (d2 + d1)*0.5f;
//hairNodes[i].position = hairNodes[i-1].position + d1;
}
}
*/
/*
if (i > 1)
{
//float a1,a2;
float a1=0;
// MathFunctions::calculateAngleBetweenVectorsInRadians(hairNodes[i].position, hairNodes[i-1].position, a1);
MathFunctions::calculateAngleBetweenVectorsInRadians(hairNodes[i-1].position, hairNodes[i-2].position, a1);
Vector d1 = hairNodes[i-1].position - hairNodes[i-2].position;
Vector d2 = hairNodes[i].position - hairNodes[i-1].position;
float a=0;
MathFunctions::calculateAngleBetweenVectorsInRadians(d2, d1, a);
//float d = a2 - a1, c=PI/2;
float c=PI/2;
float d=0;
bool adjust = 0;
if (a > c)
{
d = a1 + c;
adjust = 1;
}
else if (a < -c)
{
d = a1 - c;
adjust = -1;
}
if (adjust)
{
Vector add(sinf(d), cosf(d));
add.setLength2D(d2.getLength2D());
hairNodes[i].position = hairNodes[i-1].position + add;
}
//Vector diff2 = hairNodes[i-1] - hairNodes[i-2].position;
//hairNodes[i].position = hairNodes[i-1].position + diff;
}
*/
/*
if (i < hairNodes.size()-1)
{
Vector diff2 = hairNodes[i+1].position - hairNodes[i].position;
float a=0,c=PI/2;
bool adjust = false;
MathFunctions::calculateAngleBetweenVectorsInRadians(hairNodes[i+1].position, hairNodes[i].position, a);
if (a > c)
{
a = c;
adjust = true;
}
else if (a < -c)
{
a = -c;
adjust = true;
}
if (adjust)
{
Vector add(sinf(a), cosf(a));
add *= diff2.getLength2D();
hairNodes[i+1].position = hairNodes[i].position + add;
}
}
*/
/*
else if (diff.getLength2D() < minLength)
{
*/
/*
diff.setLength2D(minLength);
hairNodes[i].position = hairNodes[i-1].position + diff;
*/
//}
}
@ -474,15 +181,7 @@ void Hair::exertForce(const Vector &force, float dt, int usePerc)
hairNodes[i].position += force*dt;
break;
}
/*
Vector diff = hairNodes[i].position - hairNodes[i-1].position;
if (diff.getSquaredLength2D() > sqr(segmentLength))
{
diff |= segmentLength;
hairNodes[i].position = hairNodes[i-1].position + diff;
}
*/
}
}

View file

@ -38,7 +38,7 @@ bool IngredientData::hasIET(IngredientEffectType iet)
for (IngredientEffects::iterator i = effects.begin(); i != effects.end(); i++)
{
if ((*i).type == iet)
return true;
return true;
}
return false;
}
@ -59,7 +59,7 @@ Ingredient::Ingredient(const Vector &pos, IngredientData *data, int amount)
velocity = randVector(mag)*0.5f + Vector(0, -mag)*0.5f;
else
velocity = Vector(0,-mag*0.5f);
gravity = Vector(0, 250); //300
gravity = Vector(0, 250);
scale = Vector(0.2,0.2);
scale.interpolateTo(Vector(1, 1), 0.75);
@ -89,7 +89,7 @@ bool Ingredient::isRotKind()
IngredientData *Ingredient::getIngredientData()
{
return data;
return data;
}
void Ingredient::eat(Entity *e)
@ -110,12 +110,7 @@ void Ingredient::onUpdate(float dt)
if (dsq->game->collideCircleWithGrid(position, 24))
{
position = lastPosition;
/*
if (velocity.x < velocity.y)
velocity.x = -velocity.x;
else
velocity.y = -velocity.y;
*/
velocity = 0;
}
@ -145,7 +140,7 @@ void Ingredient::onUpdate(float dt)
dsq->game->pickupIngredientEffects(data);
dsq->spawnParticleEffect("IngredientCollect", position);
dsq->sound->playSfx("pickup-ingredient");
}
}

View file

@ -227,7 +227,7 @@ void Intro::update(float dt)
dsq->toggleBlackBars(1);
dsq->setBlackBarsColor(Vector(0,0,0));
cachy.precacheTex("intro/*.png");
meteors.clear();
@ -245,7 +245,7 @@ void Intro::update(float dt)
dsq->sound->loadLocalSound("aqfocus");
dsq->sound->loadLocalSound("thewave");
dsq->sound->loadLocalSound("screaming");
SkeletalSprite *citybg = new SkeletalSprite();
citybg->loadSkeletal("citybg");
@ -278,7 +278,7 @@ void Intro::update(float dt)
}
addRenderObject(eric, LR_ENTITIES);
dsq->overlay->alpha = 0;
dsq->overlay2->alpha = 0;
@ -288,7 +288,7 @@ void Intro::update(float dt)
dsq->overlay2->color.interpolateTo(Vector(0,0,0), 1);
dsq->overlay2->alpha = 1;
core->cacheRender();
@ -404,7 +404,7 @@ void Intro::update(float dt)
// -- floating city in clouds
dsq->setClearColor(Vector(0.4,0.4,0.4));
/*
@ -474,7 +474,7 @@ void Intro::update(float dt)
if (waitQuit(2)) return;
// -- window
@ -514,7 +514,7 @@ void Intro::update(float dt)
ericHead->alpha = 0;
// -- brush
float brusht=7;
@ -544,7 +544,7 @@ void Intro::update(float dt)
dsq->sound->playSfx("aqfocus", 0.8);
if (waitQuit(1.5)) return;
if (waitQuit(2)) return;
@ -764,8 +764,6 @@ void Intro::update(float dt)
if (waitQuit(1.9)) return;
dsq->overlay->color = Vector(0,0,0);
dsq->fade(1, 0.1);
@ -817,7 +815,7 @@ void Intro::update(float dt)
play4.name = "bgloop-interior";
play4.loops = -1;
play4.time = 1;
play4.fade = SFT_IN;
play4.fade = SFT_IN;
void *bgLoop = dsq->sound->playSfx(play4);
if (waitQuit(3)) return;
@ -835,7 +833,7 @@ void Intro::update(float dt)
core->sound->playVoice("titleb");
dsq->sound->playSfx("heartbeat", 0.2);
if (waitQuit(2.5)) return;
underwaterBG->alphaMod = 0;

View file

@ -22,7 +22,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
void Logo::JumpTitle::act()
{
//dsq->title();
}
Logo::Logo() : StateObject()
@ -36,25 +36,8 @@ void Logo::applyState()
core->setClearColor(Vector(1,1,1));
//glClearColor(1,1,1,0);
//core->enable2D(800);
/*
Quad *q = new Quad;
{
q->setTexture("zs");
q->width=800;
q->height=100;
q->position = Vector(400,300);
q->alpha = 0;
q->alpha.interpolateTo(1, 3, 0);
}
addRenderObject(q);
addAction(&jumpTitle, MOUSE_BUTTON_LEFT, 1);
*/
Quad *q = new Quad;
{

View file

@ -66,20 +66,6 @@ static void CheckConfig(void)
}
#if defined(BBGE_BUILD_WINDOWS) && !defined(BBGE_BUILD_SDL)
int WINAPI WinMain( HINSTANCE hInstance, // Instance
HINSTANCE hPrevInstance, // Previous Instance
LPSTR lpCmdLine, // Command Line Parameters
int nCmdShow) // Window Show State
{
#ifdef _DEBUG
_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
_CrtSetReportMode ( _CRT_ERROR, _CRTDBG_MODE_DEBUG);
#endif
std::string dsqParam = GetCommandLine();
#else
extern "C" int main(int argc,char *argv[])
{
@ -102,7 +88,6 @@ static void CheckConfig(void)
extraDataDir = AQUARIA_EXTRA_DATA_DIR;
#endif
#endif
CheckConfig();

View file

@ -86,8 +86,8 @@ void ManaBall::onUpdate(float dt)
this->scale.interpolateTo(Vector(0,0),1);
setLife(1);
setDecayRate(1);
//this->shareAlphaWithChildren = 1;
//this->fadeAlphaWithLife = 1;
}
}
@ -99,7 +99,7 @@ void ManaBall::onUpdate(float dt)
if (diff.isLength2DIn(96))
{
use(dsq->game->avatar);
//position.interpolateTo(dsq->game->avatar->position, 0.5);
}
else
{
@ -122,7 +122,7 @@ void ManaBall::onUpdate(float dt)
else
{
position.interpolateTo(dsq->game->avatar->position, 0.2);
//position = ;
}
}
position.z = 0.5;

View file

@ -171,7 +171,7 @@ MiniMapRender::MiniMapRender() : RenderObject()
texMinimapBtm = core->addTexture("gui/minimap/btm");
texMinimapTop = core->addTexture("gui/minimap/top");
texNaija = core->addTexture("gems/naija-token");
texHealthBar = core->addTexture("particles/glow-masked");
texHealthBar = core->addTexture("particles/glow-masked");
texMarker = core->addTexture("gui/minimap/marker");
buttons.clear();
@ -295,7 +295,7 @@ float MiniMapRender::getMiniMapHeight() const
void MiniMapRender::onUpdate(float dt)
{
RenderObject::onUpdate(dt);
RenderObject::onUpdate(dt);
position.x = core->getVirtualWidth() - core->getVirtualOffX() - getMiniMapWidth()/2;
position.y = 600 - getMiniMapHeight()/2;
@ -323,7 +323,7 @@ void MiniMapRender::onUpdate(float dt)
{
radarHide = true;
}
if(!radarHide)
{
for (Path *p = dsq->game->getFirstPathOfType(PATH_RADARHIDE); p; p = p->nextOfType)
@ -378,7 +378,7 @@ void MiniMapRender::onUpdate(float dt)
_isCursorIn = false;
if (alpha.x == 1)
{
{
if (!dsq->game->isInGameMenu() && (!dsq->game->isPaused() || (dsq->game->isPaused() && dsq->game->worldMapRender->isOn())))
{
if (isCursorInButtons())
@ -433,7 +433,7 @@ void MiniMapRender::onUpdate(float dt)
{
if (doubleClickDelay > 0 && !core->isStateJumpPending())
{
if (dsq->continuity.gems.empty())
dsq->continuity.pickupGem("Naija-Token");
@ -475,7 +475,6 @@ void MiniMapRender::onUpdate(float dt)
void MiniMapRender::onRender()
{
#ifdef BBGE_BUILD_OPENGL
glBindTexture(GL_TEXTURE_2D, 0);
RenderObject::lastTextureApplied = 0;
@ -760,7 +759,6 @@ void MiniMapRender::onRender()
glBindTexture(GL_TEXTURE_2D, 0);
#endif
}
void MiniMapRender::renderIcon(MinimapIcon *ico, const Vector& pos)

View file

@ -33,9 +33,9 @@ void refreshBaseModPath()
Mod::Mod()
{
clear();
enqueueModStart = 0;
shuttingDown = false;
}
@ -92,12 +92,12 @@ bool Mod::loadModXML(XMLDocument *d, std::string modName)
const std::string& Mod::getBaseModPath() const
{
refreshBaseModPath();
return baseModPath;
}
void Mod::load(const std::string &p)
{
{
clear();
refreshBaseModPath();
@ -108,10 +108,10 @@ void Mod::load(const std::string &p)
setLocalisationModPath(path);
setActive(true);
XMLDocument d;
loadModXML(&d, p);
XMLElement *mod = d.FirstChildElement("AquariaMod");
if (mod)
{
@ -204,7 +204,7 @@ void Mod::start()
core->main(t);
core->sound->stopMusic();
enqueueModStart = 1;
dsq->recentSaveSlot = -1;
}
@ -296,7 +296,7 @@ void Mod::update(float dt)
if (enqueueModStart)
{
enqueueModStart = 0;
applyStart();
}
}

View file

@ -149,7 +149,7 @@ public:
void showPanel(int id);
void updateFade();
void initModAndPatchPanel();
void initNetPanel();

View file

@ -2,7 +2,7 @@
#include "DSQ.h"
#include "Network.h"
#include "ByteBuffer.h"
//#include "VFSTools.h"
#include "MT.h"
#include <map>
#include <set>
@ -44,7 +44,7 @@ public:
protected:
virtual void _OnClose()
{
//puts("_OnClose()");
minihttp::HttpSocket::_OnClose();
const Request& r = GetCurrentRequest();
@ -57,7 +57,7 @@ protected:
}
virtual void _OnOpen()
{
//puts("_OnOpen()");
minihttp::HttpSocket::_OnOpen();
const Request& r = GetCurrentRequest();
@ -68,7 +68,7 @@ protected:
{
const Request& r = GetCurrentRequest();
RequestData *data = (RequestData*)(r.user);
//printf("_OnRequestDone(): %s\n", r.resource.c_str());
if(data->fp)
{
fclose(data->fp);
@ -91,11 +91,7 @@ protected:
{
if(!size)
return;
/*if(GetStatusCode() != minihttp::HTTP_OK)
{
printf("NETWORK: Got %u bytes with status code %u", size, GetStatusCode());
return;
}*/
const Request& r = GetCurrentRequest();
RequestData *data = (RequestData*)(r.user);
if(!data->fp && !data->fail)

View file

@ -46,8 +46,8 @@ void ParticleEditor::applyState()
addAction(MakeFunctionEvent(ParticleEditor, load), KEY_F1, 0);
addAction(MakeFunctionEvent(ParticleEditor, reload), KEY_F5, 0);
//addAction(MakeFunctionEvent(ParticleEditor, start), KEY_F5, 0);
//addAction(MakeFunctionEvent(ParticleEditor, stop), KEY_F6, 0);
addAction(MakeFunctionEvent(ParticleEditor, start), MOUSE_BUTTON_LEFT, 0);
addAction(MakeFunctionEvent(ParticleEditor, stop), MOUSE_BUTTON_RIGHT, 0);
@ -64,8 +64,8 @@ void ParticleEditor::applyState()
core->cameraPos = Vector(0,0);
emitter = new ParticleEffect;
//emitter->followCamera = 1;
//emitter->position = Vector(400,300);
addRenderObject(emitter, LR_ENTITIES);
dsq->overlay->alpha.interpolateTo(0, 0.5);

View file

@ -391,7 +391,7 @@ void Path::refreshScript()
std::string dummy;
is >> dummy;
float v = 0;
float v = 0;
is >> v;
if (v != 0)
currentMod = v;
@ -454,20 +454,15 @@ void Path::refreshScript()
spawnEnemyDistance = 0;
is >> dummy >> spawnEnemyName >> spawnEnemyDistance >> spawnEnemyNumber;
neverSpawned = true;
/*
if (!spawnedEntity && !nodes.empty())
{
spawnedEntity = dsq->game->createEntity(spawnEnemyName, 0, nodes[0].position, 0, false, "");
}
*/
}
else if (label == "pe")
{
std::string dummy, particleEffect;
SimpleIStringStream is(name);
is >> dummy >> particleEffect;
//core->removeRenderObject(&emitter, Core::DO_NOT_DESTROY_RENDER_OBJECT);
//core->getTopStateData()->addRenderObject(&emitter, LR_PARTICLES);
setEmitter(particleEffect);
}
@ -552,10 +547,7 @@ void Path::update(float dt)
if (pathType == PATH_CURRENT && !dsq->game->isWorldPaused())
{
animOffset -= currentMod*(dt/830);
/*
while (animOffset < -1.0f)
animOffset += 1.0f;
*/
}
if (pathType == PATH_GEM && dsq->game->avatar)
{
@ -603,10 +595,7 @@ void Path::update(float dt)
Entity *e = *i;
if (e)
{
/*
if (e->getEntityType() == ET_AVATAR && dsq->continuity.form == FORM_SPIRIT)
continue;
*/
if (dsq->game->collideCircleVsLine(e, start, end, rect.getWidth()*0.5f))
{
if (e->getEntityType() == ET_AVATAR)
@ -621,24 +610,13 @@ void Path::update(float dt)
d.damage = 0.1;
d.damageType = DT_STEAM;
e->damage(d);
//a->position = a->lastPosition;
}
Vector push;
push = e->position - dsq->game->lastCollidePosition;
// old method:
/*
int d1 = ((mid + left)-e->position).getSquaredLength2D();
if (((mid + right)-e->position).getSquaredLength2D() < d1)
{
push = right;
}
else
{
push = left;
}
*/
push.setLength2D(1000*dt);
if (e->vel2.isLength2DIn(1000) && !e->isNearObstruction(3))
@ -650,11 +628,7 @@ void Path::update(float dt)
if (dsq->game->collideCircleVsLine(e, start, end, rect.getWidth()*0.25f))
{
push.setLength2D(100);
/*
Vector oldVel = e->vel;
Vector nvel = v;
nvel.setLength2D(e->vel);
*/
e->vel = 0;
e->vel += push;
}

View file

@ -58,7 +58,7 @@ void PathFinding::forceMinimumPath(VectorPath &path, const Vector &start, const
{
if (path.getNumPathNodes() <= 2)
{
//debugLog(" Path is <= 2 nodes... setting up simple path");
path.clear();
path.addPathNode(start, 0);
path.addPathNode(dest, 1);
@ -105,7 +105,7 @@ void PathFinding::molestPath(VectorPath &path)
}
}
}
// use wall normal to push out node a bit
std::vector<Vector> newNormals;
newNormals.resize(normals.size());

View file

@ -22,7 +22,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#define PATHFINDING_H
#include "../BBGE/Base.h"
//#include "Astar.h"
#include "TileVector.h"
#include <assert.h>

View file

@ -22,15 +22,14 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
PathRender::PathRender() : RenderObject()
{
//color = Vector(1, 0, 0);
position.z = 5;
cull = false;
alpha = 0.5f;
}
void PathRender::onRender()
{
#ifdef BBGE_BUILD_OPENGL
{
const int pathcount = dsq->game->getNumPaths();
if (pathcount <= 0)
return;
@ -68,9 +67,9 @@ void PathRender::onRender()
glVertex2f(nd->position.x+p->rect.x1, nd->position.y+p->rect.y2);
glVertex2f(nd->position.x+p->rect.x2, nd->position.y+p->rect.y2);
glVertex2f(nd->position.x+p->rect.x2, nd->position.y+p->rect.y1);
glVertex2f(nd->position.x+p->rect.x1, nd->position.y+p->rect.y1);
glVertex2f(nd->position.x+p->rect.x1, nd->position.y+p->rect.y1);
glEnd();
glColor4f(1, 1, 1, 0.3);
glBegin(GL_LINES);
glVertex2f(nd->position.x+p->rect.x1, nd->position.y+p->rect.y1);
@ -104,10 +103,9 @@ void PathRender::onRender()
glColor4f(1, 0.5, 0.5, a);
glPushMatrix();
glTranslatef(nd->position.x, nd->position.y, 0);
glTranslatef(nd->position.x, nd->position.y, 0);
drawCircle(32);
glPopMatrix();
}
}
#endif
}

View file

@ -36,12 +36,12 @@ namespace RecipeMenuNamespace
}
using namespace RecipeMenuNamespace;
RecipeMenuEntry::RecipeMenuEntry(Recipe *recipe) : RenderObject(), recipe(recipe)
{
selected = 0;
// Quad *result, *i1, *i2, *i3;
// Recipe *recipe;
data = dsq->continuity.getIngredientDataByName(recipe->result);
if (data)
@ -51,16 +51,16 @@ RecipeMenuEntry::RecipeMenuEntry(Recipe *recipe) : RenderObject(), recipe(recipe
glow->setBlendType(BLEND_ADD);
glow->alphaMod = 0;
addChild(glow, PM_POINTER);
result = new Quad("ingredients/" + data->gfx, Vector(-100,0));
result->scale = Vector(0.7, 0.7);
addChild(result, PM_POINTER);
BitmapText *text = new BitmapText(&dsq->smallFont);
text->scale = Vector(0.7, 0.7);
text->color = 0;
text->position = result->position + Vector(0, 18);
text->setText(processFoodName(data->displayName));
addChild(text, PM_POINTER);
}
@ -70,7 +70,7 @@ RecipeMenuEntry::RecipeMenuEntry(Recipe *recipe) : RenderObject(), recipe(recipe
addChild(equals, PM_POINTER);
int c = 0;
//int size = (recipe->names.size() + recipe->types.size())-1;
int size=0;
for (int i = 0; i < recipe->names.size(); i++)
@ -81,7 +81,7 @@ RecipeMenuEntry::RecipeMenuEntry(Recipe *recipe) : RenderObject(), recipe(recipe
size --;
for (int i = 0; i < recipe->names.size(); i++)
{
debugLog("recipe name: " + recipe->names[i].name);
@ -93,21 +93,21 @@ RecipeMenuEntry::RecipeMenuEntry(Recipe *recipe) : RenderObject(), recipe(recipe
ing[c] = new Quad("ingredients/" + data->gfx, Vector(100*c,0));
ing[c]->scale = Vector(0.7, 0.7);
addChild(ing[c], PM_POINTER);
BitmapText *text = new BitmapText(&dsq->smallFont);
text->scale = Vector(0.7, 0.7);
text->color = 0;
text->position = ing[c]->position + Vector(0, 18);
text->setText(processFoodName(data->displayName));
addChild(text, PM_POINTER);
if (c < size)
{
Quad *plus = new Quad("gui/recipe-plus", Vector(100*c+50, 0));
plus->scale = Vector(0.7, 0.7);
addChild(plus, PM_POINTER);
}
c++;
if (c > 3)
{
@ -117,17 +117,17 @@ RecipeMenuEntry::RecipeMenuEntry(Recipe *recipe) : RenderObject(), recipe(recipe
}
}
}
for (int i = 0; i < recipe->types.size(); i++)
{
//debugLog("recipe type: " + recipe->types[i].typeName);
for (int j = 0; j < recipe->types[i].amount; j++)
{
// any type of whatever...
BitmapText *text = new BitmapText(&dsq->smallFont);
text->color = 0;
text->scale = Vector(0.8, 0.8);
text->position = Vector(100*c, 0); //-20
text->position = Vector(100*c, 0);
std::string typeName = dsq->continuity.getIngredientDisplayName(recipe->types[i].typeName);
@ -139,16 +139,16 @@ RecipeMenuEntry::RecipeMenuEntry(Recipe *recipe) : RenderObject(), recipe(recipe
text->setText(typeName);
addChild(text, PM_POINTER);
if (c < size)
{
Quad *plus = new Quad("gui/recipe-plus", Vector(100*c+50, 0));
plus->scale = Vector(0.7, 0.7);
addChild(plus, PM_POINTER);
}
c++;
}
}
}
description = 0;
@ -180,15 +180,15 @@ void RecipeMenuEntry::onUpdate(float dt)
glow->alphaMod = 0.2;
std::ostringstream ds;
//ds << data->name << ": ";
//ds << "* ";
for (int i = 0; i < data->effects.size(); i++)
{
ds << dsq->continuity.getIEString(data, i);
if (i == data->effects.size()-1)
{
// do nothing
//ds << ".";
}
else
{
@ -198,7 +198,7 @@ void RecipeMenuEntry::onUpdate(float dt)
game->recipeMenu.description->setText(ds.str());
game->recipeMenu.description->offset = Vector(0, -10 * (game->recipeMenu.description->getNumLines()-1));
// description->setText(ds.str());
selected = 1;
}
else
@ -235,7 +235,7 @@ void RecipeMenu::slide(RenderObject *r, bool in, float t)
if (in)
{
r->alpha = 1;
//r->alpha.interpolateTo(1, 0.2);
r->offset = Vector(0,oy);
r->offset.interpolateTo(Vector(0,0), t, 0, 0, 1);
}
@ -261,20 +261,15 @@ int RecipeMenu::getNumKnown()
int RecipeMenu::getNumPages()
{
int numKnown = dsq->continuity.recipes.size();//getNumKnown();
int numKnown = dsq->continuity.recipes.size();
int numPages = (numKnown/pageSize);
/*
for (int i = 0; i < dsq->continuity.recipes.size(); i++)
{
debugLog("r: " + dsq->continuity.recipes[i].result);
}
*/
std::ostringstream os;
os << "numKnown: " << numKnown << " pagesSize: " << pageSize << " numPages: " << numPages;
debugLog(os.str());
return numPages;
}
@ -285,12 +280,12 @@ void RecipeMenu::goPrevPage()
dsq->sound->playSfx("recipemenu-pageturn");
destroyPage();
currentPage--;
if (currentPage < 0)
currentPage = getNumPages();
createPage(currentPage);
}
@ -301,15 +296,15 @@ void RecipeMenu::goNextPage()
dsq->sound->playSfx("recipemenu-pageturn");
destroyPage();
currentPage++;
int pages = getNumPages();
if (currentPage > pages)
{
currentPage = 0;
}
createPage(currentPage);
}
@ -324,7 +319,7 @@ void RecipeMenu::toggle(bool on, bool watch)
debugLog("RecipeMenu::toggle");
toggling = true;
float t = 0.6;
if (on)
@ -350,7 +345,7 @@ void RecipeMenu::toggle(bool on, bool watch)
}
createPage(currentPage);
nextPage->alpha.interpolateTo(1, 0.2);
prevPage->alpha.interpolateTo(1, 0.2);
}
@ -365,7 +360,7 @@ void RecipeMenu::toggle(bool on, bool watch)
if (this->on)
dsq->sound->playSfx("recipemenu-close");
nextPage->alpha = 0;
prevPage->alpha = 0;
@ -395,7 +390,7 @@ void RecipeMenu::createPage(int p)
{
RecipeMenuEntry *r = new RecipeMenuEntry(&dsq->continuity.recipes[i]);
recipeMenuEntries.push_back(r);
//80 + num * 70
r->position = Vector(500-5, 65 + num * 70);
dsq->game->addRenderObject(r, scroll->layer);
num++;
@ -409,21 +404,21 @@ void RecipeMenu::createPage(int p)
}
}
}
if (num == 0)
{
}
description = new BitmapText(&dsq->smallFont);
description->followCamera = 1;
description->scale = Vector(0.7, 0.7);
description->setAlign(ALIGN_LEFT);
description->position = Vector(364, 334); //most recent: (364, 334) //348, 328
description->position = Vector(364, 334); //most recent: (364, 334) //348, 328
description->color = Vector(0,0,0);//Vector(0.7,0,0);
description->setText("");
description->setWidth(500); // 1000??
dsq->game->addRenderObject(description, scroll->layer);
std::ostringstream os2;

View file

@ -32,7 +32,7 @@ void SFXLoops::updateVolume()
core->sound->updateChannelVolume(roll);
core->sound->updateChannelVolume(charge);
core->sound->updateChannelVolume(shield);
core->sound->updateChannelVolume(current);
core->sound->updateChannelVolume(current);
core->sound->updateChannelVolume(trip);
}

View file

@ -93,7 +93,6 @@ std::string getMapTemplateFilename()
void WarpAreaRender::onRender()
{
#ifdef BBGE_BUILD_OPENGL
for (int i = 0; i < dsq->game->warpAreas.size(); i++)
{
WarpArea *a = &dsq->game->warpAreas[i];
@ -141,53 +140,6 @@ void WarpAreaRender::onRender()
}
glTranslatef(-a->position.x, -a->position.y,0);
}
#endif
#ifdef BBGE_BUILD_DIRECTX
for (int i = 0; i < dsq->game->warpAreas.size(); i++)
{
WarpArea *a = &dsq->game->warpAreas[i];
core->translateMatrixStack(a->position.x, a->position.y);
switch (a->warpAreaType[0])
{
case 'B':
core->setColor(0, 0, 1, alpha.x);
break;
case 'R':
core->setColor(1,0,0,alpha.x);
break;
case 'G':
core->setColor(0,1,0,alpha.x);
break;
case 'Y':
core->setColor(1,1,0,alpha.x);
break;
case 'P':
core->setColor(1,0,1,alpha.x);
break;
}
if (a->radius)
{
// drawCircle(a->radius);
}
else
{
core->applyMatrixStackToWorld();
core->blitD3D(0, a->w*2, a->h*2);
/*
glBegin(GL_QUADS);
{
glVertex2f(-a->w,-a->h);
glVertex2f(-a->w,a->h);
glVertex2f(a->w,a->h);
glVertex2f(a->w,-a->h);
}
glEnd();
*/
}
core->translateMatrixStack(-a->position.x, -a->position.y);
//glTranslatef(-a->position.x, -a->position.y,0);
}
#endif
}
SceneEditor::SceneEditor() : ActionMapper(), on(false)
@ -217,8 +169,8 @@ void SceneEditor::changeDepth()
{
if (editingElement)
{
//editingElement->parallax = 0.9;
//editingElement->followCamera = 0.001;
editingElement->followCamera = 0.9;
editingElement->cull = false;
}
@ -280,7 +232,7 @@ public:
if (doubleClickTimer > 0)
doubleClickTimer -= dt;
Quad::onUpdate(dt);
//if ()
if (dsq->game->sceneEditor.selectedEntity.name == selectedEntity.name
|| (entType != -1 && dsq->game->sceneEditor.selectedEntity.typeListIndex == entType))
@ -311,7 +263,7 @@ public:
{
dsq->game->sceneEditor.selectedEntity.setName(selectedEntity.name, selectedEntity.prevGfx);
}
//se_changedEntityType = true;
if (doubleClickTimer > 0)
{
doubleClickTimer = 0;
@ -486,11 +438,7 @@ void SceneEditor::addMainMenuItem(const std::string &label, int bid)
void SceneEditor::openMainMenu()
{
/*
core->clearDebugMenu();
core->addDebugMenuItem("", bid);
core->doModalDebugMenu();
*/
if (core->getNestedMains()>1)
{
@ -520,12 +468,9 @@ void SceneEditor::openMainMenu()
addMainMenuItem("EDIT NODES (F7)", 108);
addMainMenuItem("REGEN COLLISIONS (ALT-R)", 103);
addMainMenuItem("RECACHE TEXTURES (CTRL-R)", 130);
// addMainMenuItem("REFRESH DATAFILES (F11)", 117);
addMainMenuItem("REGEN ROCK FROM MAPTEMPLATE (F11+F12)", 116);
/*
addMainMenuItem("RE-TEMPLATE (F11)", 104);
addMainMenuItem("RE-SKIN (F12)", 105);
*/
addMainMenuItem("SET BG GRADIENT", 110);
addMainMenuItem("SET MUSIC", 111);
addMainMenuItem("ENTITY GROUPS (CTRL-E)", 112);
@ -589,7 +534,7 @@ void SceneEditor::init()
btnMenu->label->setText("Menu");
btnMenu->followCamera = 1;
btnMenu->alpha = 0;
//btnMenu->event.set(MakeFunctionEvent(SceneEditor, openMainMenu));
dsq->game->addRenderObject(btnMenu, LR_HUD);
selectedEntityType = 0;
@ -601,7 +546,7 @@ void SceneEditor::init()
text->followCamera = 1;
text->position = Vector(125,20,4.5);
//text->setAlign(ALIGN_CENTER);
dsq->game->addRenderObject(text, LR_HUD);
text->alpha = 0;
selectedVariation = -1;
@ -613,13 +558,12 @@ void SceneEditor::init()
dsq->game->addRenderObject(boxPromo, LR_HUD);
on = false;
//addAction(MakeFunctionEvent(SceneEditor, addSpringPlant), KEY_K, 0);
addAction(MakeFunctionEvent(SceneEditor, loadScene), KEY_F1, 0);
addAction(MakeFunctionEvent(SceneEditor, saveScene), KEY_F2, 0);
// removed in fc3
//addAction(MakeFunctionEvent(SceneEditor, setGroup), KEY_G, 0);
addAction(MakeFunctionEvent(SceneEditor, moveToBack), KEY_Z, 0);
addAction(MakeFunctionEvent(SceneEditor, moveToFront), KEY_X, 0);
@ -640,12 +584,6 @@ void SceneEditor::init()
/*
addAction(MakeFunctionEvent(SceneEditor, placeEntity), KEY_U, 0);
addAction(MakeFunctionEvent(SceneEditor, removeEntity), KEY_I, 0);
*/
//addAction(MakeFunctionEvent(SceneEditor, changeDepth), KEY_N, 0);
addAction(MakeFunctionEvent(SceneEditor, placeElement), KEY_SPACE, 1);
addAction(MakeFunctionEvent(SceneEditor, enterName), KEY_N, 0);
@ -667,7 +605,7 @@ void SceneEditor::init()
addAction(MakeFunctionEvent(SceneEditor, generateLevel), KEY_F11, 0);
addAction(MakeFunctionEvent(SceneEditor, skinLevel), KEY_F12, 0);
//addAction(MakeFunctionEvent(SceneEditor, regenLevel), KEY_F12, 0);
addAction(MakeFunctionEvent(SceneEditor, nextEntityType), KEY_RIGHT, 0);
addAction(MakeFunctionEvent(SceneEditor, prevEntityType), KEY_LEFT, 0);
@ -699,17 +637,6 @@ void SceneEditor::init()
addAction(MakeFunctionEvent(SceneEditor, dumpObs), KEY_F8, 0);
/*
// OLD CRAP
addAction(MakeFunctionEvent(SceneEditor, rotateElement), KEY_MULTIPLY, 0);
addAction(MakeFunctionEvent(SceneEditor, rotateElement2), KEY_DIVIDE, 0);
addAction(MakeFunctionEvent(SceneEditor, scaleElementUp), KEY_NUMPAD7, 0);
addAction(MakeFunctionEvent(SceneEditor, scaleElementDown), KEY_NUMPAD1, 0);
addAction(MakeFunctionEvent(SceneEditor, scaleElement1), KEY_NUMPAD0, 0);
addAction(MakeFunctionEvent(SceneEditor, nextVariation), KEY_UP, 0);
addAction(MakeFunctionEvent(SceneEditor, prevVariation), KEY_DOWN, 0);
*/
addAction(ACTION_ZOOMIN, KEY_PGUP);
addAction(ACTION_ZOOMOUT, KEY_PGDN);
@ -844,10 +771,10 @@ void SceneEditor::alignVert()
void SceneEditor::createAquarian()
{
//if (dsq->mod.isActive()) return;
static bool inCreateAqurian = false;
if (inCreateAqurian) return;
//if (dsq->game->isPaused()) return;
inCreateAqurian = true;
std::string t = dsq->getUserInputString("Enter Aquarian:", "");
stringToUpper(t);
@ -863,7 +790,7 @@ void SceneEditor::createAquarian()
{
v = 1024+26;
}
//ElementTemplate et = dsq->game->getElementTemplateForLetter(v);
dsq->game->createElement(v, startPos + Vector(64*i,0), this->bgLayer);
}
inCreateAqurian = false;
@ -935,7 +862,7 @@ void SceneEditor::toggleWarpAreaRender()
warpAreaRender->alpha.x = 0.5;
else if (warpAreaRender->alpha.x >= 0.5f)
warpAreaRender->alpha.x = 0;
//warpAreaRender->alpha.interpolateTo(1, 0.2);
}
@ -1038,7 +965,7 @@ void SceneEditor::editModeEntities()
//target->alpha.interpolateTo(0, 0.5);
editType = ET_ENTITIES;
//dsq->game->entityTypeList[curEntity].prevGfx
placer->setTexture(selectedEntity.prevGfx);
placer->alpha = 0.5;
pathRender->alpha = 0;
@ -1066,7 +993,7 @@ Element *SceneEditor::getElementAtCursor()
{
if (e->life == 1)
{
if (e->isCoordinateInside(dsq->getGameCursorPosition()))//, minSelectionSize
if (e->isCoordinateInside(dsq->getGameCursorPosition()))
{
Vector v = dsq->getGameCursorPosition() - e->position;
int dist = v.getSquaredLength2D();
@ -1157,11 +1084,8 @@ void SceneEditor::deleteSelected()
}
else
p->removeNode(selectedNode);
/*
if (p->nodes.size() > 1)
p->nodes.resize(p->nodes.size()-1);
*/
//selectedIdx = -1;
}
}
}
@ -1362,11 +1286,7 @@ void SceneEditor::updateEntitySaveData(Entity *editingEntity)
{
if (editingEntity)
{
/*
std::ostringstream os;
os << "oldPos (" << oldPosition.x << ", " << oldPosition.y << ")";
debugLog(os.str());
*/
EntitySaveData *d = dsq->game->getEntitySaveDataForEntity(editingEntity, oldPosition);
if (d)
{
@ -1374,22 +1294,18 @@ void SceneEditor::updateEntitySaveData(Entity *editingEntity)
os << "idx1: " << d->idx << " ";
os << "idx2: " << editingEntity->entityTypeIdx << " ";
os << "name: " << editingEntity->name;
//os << "state: " << editingEntity->getState();
debugLog(os.str());
//debugLog("changing entity save data");
d->x = editingEntity->position.x;
d->y = editingEntity->position.y;
editingEntity->startPos = Vector(d->x, d->y);
/*
std::ostringstream os2;
os2 << "setting savedata rot to: " << d->rot;
debugLog(os2.str());
*/
d->rot = editingEntity->rotation.z;
}
else
{
//debugLog("didn't get entity save data");
}
}
}
@ -1458,7 +1374,7 @@ void SceneEditor::mouseButtonRightUp()
checkForRebuild();
}
state = ES_SELECTING;
//dsq->game->reconstructGrid();
}
@ -1664,7 +1580,7 @@ bool getGrassPixel(pngRawInfo *png, int x, int y)
{
if (x >= png->Width || y >= png->Height || x < 0 || y < 0) return false;
//int c = ((x*png->Width)*3)+y*3;
int c = (y*png->Width)*png->Components + x*png->Components;
if (png->Data[c] == 128 &&
png->Data[c+1] == 255 &&
@ -1738,21 +1654,15 @@ void SceneEditor::skinLevel(pngRawInfo *png, int minX, int minY, int maxX, int m
)
)
{
// do color check
/*
int ci = x+(y*png->Height);
if (png->data[ci] < pixelColor.x &&
png->data[ci+1] < pixelColor.y &&
png->data[ci+2] < pixelColor.z)
{
*/
float dist=0;
wallNormal = dsq->game->getWallNormal(t.worldVector(), 5, &dist, OT_MASK_BLACK);
offset = wallNormal*(-TILE_SIZE*0.6f);
MathFunctions::calculateAngleBetweenVectorsInDegrees(Vector(0,0,0), wallNormal, rot);
rot = 180-(360-rot);
addTile = true;
//}
}
if (addTile)
@ -1788,7 +1698,7 @@ void SceneEditor::skinLevel(pngRawInfo *png, int minX, int minY, int maxX, int m
Element *e = dsq->getElement(i);
if (e->templateIdx <= 4 && e->templateIdx >= 1)
{
if ((p - e->position).getSquaredLength2D() < sqr(120))//sqr(60*3+10)) // 120
if ((p - e->position).getSquaredLength2D() < sqr(120))
{
cantUse[e->templateIdx-1]++;
}
@ -1811,40 +1721,6 @@ void SceneEditor::skinLevel(pngRawInfo *png, int minX, int minY, int maxX, int m
e->offset = offset;
/*
bool addGrass = false;
int search = 2;
for (int dx = -search; dx < search; dx++)
{
for (int dy = -search; dy < search; dy++)
{
if (getGrassPixel(png, x+dx, y+dy))
{
//std::ostringstream os;
//os << "found grass pixel at (" << x+dx << ", " << y+dy << ")";
//debugLog(os.str());
//errorLog ("add grass");
addGrass = true;
break;
}
}
}
if (addGrass)
{
//Vector detailPos = p + wallNormal*48;
Element *grassE = dsq->game->createElement(5, p, 0, &q);
//dsq->game->createElement(5, detailPos, 6, &q);
//grassE->offset = offset;
}
*/
/*
float sz = ((rand()%1000)/4000.0f);
e->scale = Vector(1+sz, 1+sz, 1);
*/
idx++;
if(idx > 4)
@ -1866,13 +1742,11 @@ void SceneEditor::skinLevel(pngRawInfo *png, int minX, int minY, int maxX, int m
void SceneEditor::generateLevel()
{
//pngSetStandardOrientation(0);
std::string file=getMapTemplateFilename();
//pngInfo info;
//PNG_ALPHA
//errorLog("generate level");
// Y R G B P
std::string file=getMapTemplateFilename();
int maxX=0, maxY=0;
const int YELLOW=0, RED=1, GREEN=2, BLUE=3, PURPLE=4, ORANGE=5, BROWN=6, MAX=7;
int firstColorX[MAX], firstColorY[MAX];
@ -1894,10 +1768,10 @@ void SceneEditor::generateLevel()
bool success = pngLoadRaw(file.c_str(), &rawinfo);
if (success)
{
//dsq->elements.clear();
std::vector<Row> rows;
std::vector<Vector> positions;
const int maxRowCount = 9999;//9999;//9999;
const int maxRowCount = 9999;
int rowCount = 0;
if (rawinfo.Components < 3)
{
@ -1905,7 +1779,7 @@ void SceneEditor::generateLevel()
}
int scale = TILE_SIZE;
int c = 0;
//for (int y = rawinfo.Height-1; y >= 0; y--)
for (int y = 0; y < rawinfo.Height; y++)
{
Vector lastElement;
@ -1950,7 +1824,7 @@ void SceneEditor::generateLevel()
}
for (int i = 0; i < MAX; i++)
{
//if (checkWarpPixel(rawinfo.Data, c, colorVects[i]))
bool p1, p2, p3;
p1=p2=p3=false;
int diff;
@ -1960,25 +1834,7 @@ void SceneEditor::generateLevel()
p2 = (diff < 5);
diff = fabsf((colorVects[i].z*255) - rawinfo.Data[c+2]);
p3 = (diff < 5);
/*
p1 = (colorVects[i].x == 1 && rawinfo.Data[c] > 200);
if (!p1)
{
p1 = (colorVects[i].x == 0 && rawinfo.Data[c] < 32);
}
p2 = (colorVects[i].y == 1 && rawinfo.Data[c+1] > 200);
if (!p2)
{
p2 = (colorVects[i].y == 0 && rawinfo.Data[c+1] < 32);
if (!p2)
{
p2 = (colorVects[i].y == 0.5f && rawinfo.Data[c+1] > 96 && rawinfo.Data[c+1] < 164);
}
}
p3 = (colorVects[i].z == 1 && rawinfo.Data[c+2] > 200);
if (!p3)
p3 = (colorVects[i].z == 0 && rawinfo.Data[c+2] < 32);
*/
if (p1 && p2 && p3)
{
lastColorX[i] = x;
@ -1990,63 +1846,25 @@ void SceneEditor::generateLevel()
}
}
}
/*
else if (checkPixel(1, 0, 0))
{
lastColorX[RED] = x;
lastColorY[RED] = y;
if (firstColorX[RED] == -1)
{
firstColorX[RED] = x;
firstColorY[RED] = y;
}
}
*/
/*
else if ( rawinfo.Data[c] > 200 &&
rawinfo.Data[c+1] < 32 &&
rawinfo.Data[c+2] < 32)
{
}
else if (rawinfo.
*/
c += rawinfo.Components;
if ((e==0 && firstRowElement) || (firstRowElement && rowCount >= maxRowCount && hasLastElement)
|| (firstRowElement && x == rawinfo.Width-1))
{
/*
if (x == rawinfo.Width-1)
row.x2 = rawinfo.Width-1;
else
{
*/
// HACK: it crashes here:
// because lastElement is garbage data
// fixed!
if (hasLastElement)
row.x2 = lastElement.x;
//}
hasLastElement = false;
firstRowElement = 0;
bool add = true;
/*
for (int i = 0; i < rows.size(); i++)
{
if (rows[i].x1 == row.x1 && rows[i].x2 == row.x2)
{
if (abs(rows[i].y - row.y) <= TILE_SIZE+1)
{
rows[i].rows++;
add = false;
break;
}
}
}
*/
if (add)
rows.push_back(row);
}
@ -2073,7 +1891,7 @@ void SceneEditor::generateLevel()
for (i = 0; i < rows.size(); i++)
{
int w = rows[i].x2 - rows[i].x1;
//int h = scale * rows[i].rows;
int useY = rows[i].y;
if (rows[i].rows > 1)
{
@ -2131,7 +1949,7 @@ void SceneEditor::generateLevel()
this->skinMinY = 4;
this->skinMaxX = maxX;
this->skinMaxY = maxY;
//skinLevel(&rawinfo, 4, 4, maxX, maxY);
if (rawinfo.Data != NULL)
free(rawinfo.Data);
}
@ -2294,9 +2112,7 @@ void SceneEditor::action(int id, int state)
this->bgLayer = newLayer;
}
/*
Vector multiSelectPoint, secondMultiSelectPoint;
*/
if (id == ACTION_MULTISELECT && this->state == ES_SELECTING)
{
if (state)
@ -2398,7 +2214,7 @@ void destroyEntityPage()
}
if (se_grad)
{
//se_grad->safeKill();
se_grad->setLife(1);
se_grad->setDecayRate(10);
se_grad->fadeAlphaWithLife = 1;
@ -2421,8 +2237,8 @@ void createEntityPage()
destroyEntityPage();
se_grad = new Quad();
//Gradient()
//se_grad->makeHorizontal(Vector(0,0,0.3), Vector(0,0,0.1));
se_grad->scale = Vector(800, 500);
se_grad->position = Vector(400,350);
se_grad->followCamera = 1;
@ -2472,7 +2288,7 @@ void createEntityPage()
{
q->setWidthHeight((q->getWidth()*sizing) / q->getHeight(), sizing);
}
//q->setWidthHeight(sizing, sizing);
q->followCamera = 1;
dsq->game->addRenderObject(q, LR_HUD);
qs.push_back(q);
@ -2528,12 +2344,12 @@ void SceneEditor::selectEntityFromGroups()
if (core->mouse.position.y < 100)
break;
}
if (core->getKeyState(KEY_ESCAPE))
break;
if (core->getKeyState(KEY_SPACE))
break;
if (!core->getKeyState(KEY_E))
ld = false;
else if (!ld)
@ -2541,7 +2357,7 @@ void SceneEditor::selectEntityFromGroups()
ld=true;
nextEntityPage();
}
if (!core->getKeyState(KEY_R))
rd = !true;
else if (!rd)
@ -2713,7 +2529,7 @@ void SceneEditor::prevElement()
cycleElementPrev(editingElement);
editingElement = 0;
}
else
else
{
doPrevElement();
}
@ -2874,7 +2690,7 @@ void SceneEditor::cloneSelectedElement()
Element *e = dsq->game->createElement(e1->templateIdx, placer->position + Vector(40,40), e1->bgLayer, e1);
e->elementFlag = e1->elementFlag;
e->setElementEffectByIndex(e1->getElementEffectIndex());
//e->repeatTextureToFill(e1->isRepeatingTextureToFill());
}
dsq->game->reconstructGrid();
}
@ -2938,7 +2754,7 @@ void SceneEditor::toggle(bool on)
movingEntity = 0;
dsq->toggleCursor(true);
dsq->setCursor(CURSOR_NORMAL);
//core->flags.set(CF_CLEARBUFFERS);
dsq->darkLayer.toggle(false);
@ -2959,7 +2775,7 @@ void SceneEditor::toggle(bool on)
else
{
btnMenu->alpha = 0;
//dsq->game->reconstructGrid();
selectedElements.clear();
for (int i = 0; i < 9; i++)
dsq->getRenderObjectLayer(LR_ELEMENTS1+i)->visible = true;
@ -2976,7 +2792,7 @@ void SceneEditor::toggle(bool on)
dsq->game->avatar->enableInput();
text->alpha.interpolateTo(0, 0.2);
placer->alpha.interpolateTo(0, 0.2);
//core->flags.unset(CF_CLEARBUFFERS);
dsq->darkLayer.toggle(true);
dsq->game->rebuildElementUpdateList();
@ -2998,8 +2814,8 @@ void SceneEditor::updateText()
std::ostringstream os;
os << dsq->game->sceneName << " bgL[" << bgLayer << "] (" <<
(int)dsq->cameraPos.x << "," << (int)dsq->cameraPos.y << ") ("
//<< (int)dsq->game->avatar->position.x
//<< "," << (int)dsq->game->avatar->position.y << "," << (int)dsq->game->avatar->position.z << ")" << " ("
<< (int)dsq->getGameCursorPosition().x << "," << (int)dsq->getGameCursorPosition().y << ")" << " ";
switch(editType)
{
@ -3254,7 +3070,7 @@ void SceneEditor::update(float dt)
smallestDist = dist;
selectedIdx = i;
selectedNode = n;
//return;
}
}
}
@ -3442,7 +3258,7 @@ void SceneEditor::update(float dt)
}
else
{
//editingElement->scale=oldScale + add;
editVec = (repeatScale ? oldRepeatScale : oldScale) + add;
if (!uni && !repeatScale)
{

View file

@ -50,12 +50,8 @@ SchoolFish::SchoolFish(const std::string &texname) : FlockEntity()
float randScale = float(rand()%200)/1000.0f;
scale = Vector(0.6f-randScale, 0.6f-randScale);
/*
float randColor = float(rand()%250)/1000.0f;
color = Vector(1-randColor, 1-randColor, 1-randColor);
*/
//color.interpolateTo(Vector(0.5, 0.5, 0.5), 2, -1, 1);
color.ensureData();
color.data->path.addPathNode(Vector(1,1,1), 0);
color.data->path.addPathNode(Vector(1,1,1), 0.5);
@ -72,30 +68,24 @@ SchoolFish::SchoolFish(const std::string &texname) : FlockEntity()
setEntityType(ET_ENEMY);
canBeTargetedByAvatar = true;
health = maxHealth = 1;
//scale = Vector(0.5, 0.5);
avoidTime=0;
vel = Vector(-minUrgency, 0);
setTexture(texname);
flockType = FLOCK_FISH;
//updateCull = -1;
updateCull = 4000;
collideRadius = 20;
//2 32 0.1 0.1 -0.03 0 4 0
setSegs(8, 2, 0.1, 0.9, 0, -0.03, 8, 0);
/*
setDamageTarget(DT_AVATAR_SPORECHILD, false);
setDamageTarget(DT_AVATAR_ENERGYBLAST, false);
*/
//setAllDamageTargets(true);
setDamageTarget(DT_AVATAR_LIZAP, false);
/*
setDamageTarget(DT_AVATAR_ENERGYBLAST, false);
setDamageTarget(DT_AVATAR_SHOCK, false);
*/
//setDamageTarget(DT_AVATAR_BITE, true);
// updateCull = 10248;
targetPriority = -1;
setEatType(EAT_FILE, "SchoolFish");
@ -111,7 +101,7 @@ void SchoolFish::onEnterState(int action)
Entity::onEnterState(action);
if (action == STATE_DEAD)
{
//rotation.interpolateTo(Vector(0,0,180), 2);
vel.setLength2D(vel.getLength2D()*-1);
oldFlockID = flock ? flock->flockID : -1;
@ -119,24 +109,11 @@ void SchoolFish::onEnterState(int action)
doDeathEffects(0, false);
/*
alpha = 0;
alphaMod = 0;
*/
respawnTimer = 20 + rand()%20;
alphaMod = 0;
/*
this->setLife(2);
this->setDecayRate(1);
this->fadeAlphaWithLife = true;
*/
/*
dsq->game->spawnIngredient("FishOil", position, 10);
dsq->game->spawnIngredient("FishMeat", position, 10);
dsq->game->spawnIngredient("SmallEgg", position, 10);
dsq->game->spawnIngredient("PlantLeaf", position, 60);
*/
if (!isGoingToBeEaten())
{
@ -182,54 +159,27 @@ void SchoolFish::updateVelocity(Vector &accumulator)
vel.z = 0;
if (fabsf(vel.y) > fabsf(vel.x))
{
/*
float sign = vel.y / fabsf(vel.y);
vel.y = fabsf(vel.x) * sign;
*/
//std::swap(vel.x, vel.y);
// going up
/*
float len = vel.getLength2D();
if (vel.y < 0)
{
if (vel.x < 0)
vel.y = vel.x;
else
vel.y = -vel.x;
}
else
{
if (vel.x < 0)
vel.y = -vel.x;
else
vel.y = vel.x;
}
vel.setLength2D(len);
*/
}
}
inline
void SchoolFish::avoid(Vector &accumulator, Vector pos, bool inv)
{
//accumulator = Vector(0,0,0);
Vector change;
if (inv)
change = pos - this->position;
else
change = this->position - pos;
//change = position;
//change -= this->position;
change.setLength2D(maxUrgency);
//change |= maxUrgency;
//change = Vector(100,0);
//avoidTime = 2;
/*
std::ostringstream os;
os << "change(" << change.x << ", " << change.y << ")";
debugLog (os.str());
*/
change.setLength2D(maxUrgency);
accumulator += change;
}
@ -256,7 +206,6 @@ void SchoolFish::applyAvoidance(Vector &accumulator)
}
//return;
if (avoidTime>0) return;
@ -285,7 +234,7 @@ void SchoolFish::applyAvoidance(Vector &accumulator)
const float tileMult = (float)TILE_SIZE / (float)obsCount;
Vector change(obsSumX*tileMult, obsSumY*tileMult);
change += position - t0.worldVector();
//change |= 200;
float dist = change.getLength2D();
float ratio = dist / radius;
@ -346,7 +295,7 @@ void SchoolFish::applyCohesion(Vector &accumulator)
change = dsq->game->avatar->position - position;
change.setLength2D(maxUrgency*strengthCohesion);
accumulator += change;
//avoid(accumulator, dsq->game->avatar->position, true);
}
}
}
@ -382,47 +331,8 @@ void SchoolFish::applySeparation(Vector &accumulator)
void SchoolFish::onUpdate(float dt)
{
BBGE_PROF(SchoolFish_onUpdate);
/*
Quad::onUpdate(dt);
return;
*/
/*
if (dsq->continuity.form == FORM_BEAST)
this->activationType = ACT_CLICK;
else
this->activationType = ACT_NONE;
*/
/*
if (burstDelay == 0)
{
maxSpeedLerp = 2;
Vector v = getNormal();
vel = 0;
v *= -5000;
vel += v;
//float t = (100 + rand()%100)/100.0f;
float t = 2;
maxSpeedLerp.interpolateTo(1, t);
burstDelay = 10;// + (rand()%100)/100.0f;
//rotateToVec(v, 0, 90);
//rotation.interpolateTo(0, 1);
if (v.x > 0 && !isfh())
{
flipHorizontal();
flipDelay = 0.5;
}
if (v.x < 0 && isfh())
{
flipHorizontal();
flipDelay = 0.5;
}
}
else
*/
{
burstDelay -= dt;
@ -437,13 +347,8 @@ void SchoolFish::onUpdate(float dt)
if (this->layer < LR_ENTITIES)
{
//debugLog("background fish!");
/*
setDamageTarget(DT_AVATAR_SHOCK, false);
setDamageTarget(DT_AVATAR_BITE, false);
setDamageTarget(DT_AVATAR_VOMIT, false);
setDamageTarget(DT_AVATAR_ENERGYBLAST, false);
*/
setEntityType(ET_NEUTRAL);
collideRadius = 0;
}
@ -463,18 +368,7 @@ void SchoolFish::onUpdate(float dt)
}
else
{
/*
if (layer == LR_ENTITIES || layer == LR_ENTITIES2)
{
rippleTimer -= dt;
if (rippleTimer < 0)
{
if (core->afterEffectManager)
core->afterEffectManager->addEffect(new ShockEffect(Vector(core->width/2, core->height/2),position,0.04,0.06,15,0.2f));
rippleTimer = 0.5;
}
}
*/
FlockEntity::onUpdate(dt);
@ -482,31 +376,7 @@ void SchoolFish::onUpdate(float dt)
dsq->game->handleShotCollisions(this);
/*
soundDelay -= dt;
if (soundDelay <= 0)
{
//sound(swimSound, 1000 + rand()%100);
soundDelay = 4+(rand()%50)/100.0f;
}
*/
/*
1. if distance_to(closest_boid) <= too_close then set direction away from closest_boid
2. speed_of_neighbors := average(speed(x), for all x where distance_to(x) <= neighborhood_size)
direction_of_neighbors := avg(direction(x), for all x where distance_to(x) <= neighborhood_size)
if speed < speed_of_neighbors then increase speed
if speed > speed_of_neighbors then decrease speed
turn towards direction_of_neighbors
3. position_of_neighbors := avg(position(x), for all x where distance_to(x) <= neighborhood_size)
turn towards position_of_neighbors
*/
/*
FlockPiece flock;
getFlockInRange(160, &flock);
*/
// if flock in 160 ?
if (true)
{
VectorSet newDirection;
@ -530,10 +400,6 @@ void SchoolFish::onUpdate(float dt)
applyAvoidance(accumulator);
updateVelocity(accumulator);
/*
if (dsq->game->isValidTarget(this, 0))
doSpellAvoidance(dt, 96, dodgeAbility);
*/
Vector lastPosition = position;
@ -542,57 +408,21 @@ void SchoolFish::onUpdate(float dt)
if (dsq->game->isObstructed(position))
{
position = lastPosition;
/*
Vector newPosition = position;
position = Vector(newPosition.x, lastPosition.y);
if (dsq->game->isObstructed(position))
{
position = Vector(lastPosition.x, newPosition.y);
if (dsq->game->isObstructed(position))
{
position = lastPosition;
}
}
*/
}
//updateCurrents(dt);
updateVel2(dt);
/*
if (flipDelay > 0)
{
flipDelay -= dt;
if (flipDelay < 0)
{
flipDelay = 0;
}
}
*/
flipDelay = 0;
//dir.normalize2D();
if (flipDelay <= 0)
{
const float amt = 0;
/*
if (fabsf(dir.x) > fabsf(dir.y))
{
if (dir.x > amt && !isfh())
{
flipHorizontal();
flipDelay = 0.5;
}
if (dir.x < -amt && isfh())
{
flipHorizontal();
flipDelay = 0.5;
}
}
*/
if (vel.x > amt && !isfh())
{
flipHorizontal();
@ -604,7 +434,6 @@ void SchoolFish::onUpdate(float dt)
}
//rotateToVec(accumulator, 5, 90);
float angle = atan2f(dir.x<0 ? -dir.y : dir.y, fabsf(dir.x));
angle = ((angle*180)/PI);
@ -613,11 +442,11 @@ void SchoolFish::onUpdate(float dt)
angle = 45;
if (angle < -45)
angle = -45;
rotation = Vector(0,0,angle);
//rotation.interpolateTo(Vector(0, 0, angle), 0);
}
}
@ -626,19 +455,6 @@ void SchoolFish::onUpdate(float dt)
void SchoolFish::onRender()
{
FlockEntity::onRender();
/*
glDisable(GL_BLEND);
glPointSize(12);
glDisable(GL_LIGHTING);
glColor3f(1,1,1);
glBegin(GL_POINTS);
glVertex3f(0,0,0);
glEnd();
glBegin(GL_LINES);
glVertex3f(0,0,0);
glVertex3f(vel.x*50, vel.y*50, 0);
glEnd();
*/
}

View file

@ -42,13 +42,13 @@ protected:
void applyAlignment(Vector &accumulator, const Vector &dir);
void applyAvoidance(Vector &accumulator);
void updateVelocity(Vector &accumulator);
void onEnterState(int action);
void onUpdate(float dt);
void onRender();
float avoidTime;
};
#endif

View file

@ -2108,7 +2108,7 @@ luaFunc(getNoteColor)
luaFunc(getRandNote)
{
//int note = lua_tointeger(L, 1);
luaReturnNum(dsq->getRandNote());
}
@ -2230,11 +2230,7 @@ luaFunc(shot_setOut)
Vector adjust = shot->velocity;
adjust.setLength2D(outness);
shot->position += adjust;
/*
std::ostringstream os;
os << "out(" << adjust.x << ", " << adjust.y << ")";
debugLog(os.str());
*/
}
luaReturnNil();
}
@ -2496,7 +2492,7 @@ static size_t _shotFilter(lua_State *L)
for(Shot::Shots::iterator it = Shot::shots.begin(); it != Shot::shots.end(); ++it)
{
Shot *s = *it;
if (s->isActive() && s->life >= 1.0f)
{
if (dt == DT_NONE || s->getDamageType() == dt)
@ -2693,7 +2689,7 @@ luaFunc(entity_getBoneLockEntity)
{
BoneLock *b = e->getBoneLock();
ent = b->entity;
//ent = e->boneLock.entity;
}
luaReturnPtr(ent);
}
@ -2953,11 +2949,7 @@ luaFunc(isWithin)
Vector v1 = getVector(L, 1);
Vector v2 = getVector(L, 3);
float dist = lua_tonumber(L, 5);
/*
std::ostringstream os;
os << "v1(" << v1.x << ", " << v1.y << ") v2(" << v2.x << ", " << v2.y << ")";
debugLog(os.str());
*/
Vector d = v2-v1;
bool v = false;
if (d.isLength2DIn(dist))
@ -4049,29 +4041,13 @@ luaFunc(entity_isNearGround)
Vector v = dsq->game->getWallNormal(e->position, sampleArea);
if (!v.isZero())
{
//if (v.y < -0.5f && fabsf(v.x) < 0.4f)
if (v.y < 0 && fabsf(v.x) < 0.6f)
{
value = true;
}
}
/*
Vector v = e->position + Vector(0,e->collideRadius + TILE_SIZE/2);
std::ostringstream os;
os << "checking (" << v.x << ", " << v.y << ")";
debugLog(os.str());
TileVector t(v);
TileVector c;
for (int i = -5; i < 5; i++)
{
c.x = t.x+i;
c.y = t.y;
if (dsq->game->isObstructed(t))
{
value = true;
}
}
*/
}
luaReturnBool(value);
}
@ -4680,7 +4656,7 @@ luaFunc(savePoint)
Vector position;
if (p)
{
//dsq->game->avatar->moveToNode(p, 0, 0, 1);
position = p->nodes[0].position;
}
@ -4818,7 +4794,7 @@ luaFunc(entity_damage)
if (e)
{
DamageData d;
//d.attacker = e;
d.attacker = lua_isuserdata(L, 2) ? entity(L, 2) : NULL;
d.damage = lua_tonumber(L, 3);
d.damageType = (DamageType)lua_tointeger(L, 4);
@ -4991,11 +4967,7 @@ luaFunc(decrFlag)
luaFunc(setFlag)
{
/*
if (lua_isstring(L, 1))
dsq->continuity.setFlag(lua_tostring(L, 1), lua_tonumber(L, 2));
else
*/
dsq->continuity.setFlag(lua_tointeger(L, 1), lua_tointeger(L, 2));
luaReturnNil();
}
@ -5003,11 +4975,7 @@ luaFunc(setFlag)
luaFunc(getFlag)
{
int v = 0;
/*
if (lua_isstring(L, 1))
v = dsq->continuity.getFlag(lua_tostring(L, 1));
else if (lua_isnumber(L, 1))
*/
v = dsq->continuity.getFlag(lua_tointeger(L, 1));
luaReturnNum(v);
@ -6688,7 +6656,7 @@ luaFunc(playMusic)
luaFunc(playMusicStraight)
{
dsq->sound->setMusicFader(1,0);
dsq->sound->playMusic(getString(L, 1), SLT_LOOP, SFT_IN, 0.5); //SFT_IN, 0.1);//, SFT_IN, 0.2);
dsq->sound->playMusic(getString(L, 1), SLT_LOOP, SFT_IN, 0.5);
luaReturnNil();
}
@ -6813,7 +6781,7 @@ luaFunc(entity_adjustPositionBySurfaceNormal)
e->position += v;
}
e->setv(EV_CRAWLING, 0);
//e->setCrawling(false);
}
luaReturnNil();
}
@ -6827,16 +6795,10 @@ luaFunc(entity_moveAlongSurface)
{
e->lastPosition = e->position;
//if (!e->position.isInterpolating())
{
/*
if (dsq->game->isObstructed(TileVector(e->position)))
{
e->moveOutOfWall();
}
*/
Vector v;
if (e->ridingOnEntity)
@ -6846,58 +6808,22 @@ luaFunc(entity_moveAlongSurface)
}
else
v = dsq->game->getWallNormal(e->position);
//int outFromWall = lua_tointeger(L, 5);
int outFromWall = e->getv(EV_WALLOUT);
bool invisibleIn = e->isSittingOnInvisibleIn();
/*
if (invisibleIn)
debugLog("Found invisibleIn");
else
debugLog("NOT FOUND");
*/
/*
for (int x = -2; x < 2; x++)
{
for (int y = -2; y< 2; y++)
{
if (dsq->game->getGrid(TileVector(x,y))== OT_INVISIBLEIN)
{
debugLog("found invisible in");
invisibleIn = true;
break;
}
}
}
*/
if (invisibleIn)
outFromWall -= TILE_SIZE;
float t = 0.1;
e->offset.interpolateTo(v*outFromWall, t);
/*
if (outFromWall)
{
//e->lastWallOffset = dsq->game->getWallNormal(e->position)*outFromWall;
//e->offset.interpolateTo(dsq->game->getWallNormal(e->position)*outFromWall, time*2);
//e->offset = v*outFromWall;
//float t = 0;
e->offset.interpolateTo(v*outFromWall, t);
//pos += e->lastWallOffset;
}
else
{
e->offset.interpolateTo(Vector(0,0), t);
//e->offset.interpolateTo(Vector(0,0), time*2);
//e->lastWallOffset = Vector(0,0);g
}
*/
// HACK: make this an optional parameter?
//e->rotateToVec(v, 0.1);
float dt = lua_tonumber(L, 2);
float speed = lua_tonumber(L, 3);
//int climbHeight = lua_tonumber(L, 4);
Vector mov;
if (e->surfaceMoveDir==1)
mov = Vector(v.y, -v.x);
@ -6910,49 +6836,8 @@ luaFunc(entity_moveAlongSurface)
e->vel = 0;
/*
float adjustbit = float(speed)/float(TILE_SIZE);
if (e->isNearObstruction(0))
{
Vector n = dsq->game->getWallNormal(e->position);
if (!n.isZero())
{
Vector sp = e->position;
e->position += n * adjustbit * dt;
}
}
if (!e->isNearObstruction(1))
{
Vector n = dsq->game->getWallNormal(e->position);
if (!n.isZero())
{
Vector sp = e->position;
e->position -= n * adjustbit * dt;
}
}
*/
/*
Vector sp = e->position;
e->clampToSurface();
*/
/*
e->position = sp;
e->internalOffset.interpolateTo(e->position-sp, 0.2);
*/
/*
e->position = e->lastPosition;
e->position.interpolateTo(to*0.5f + e->position*0.5f, 0.5);
*/
/*
Vector to = e->position;
e->position = e->lastPosition;
e->position.interpolateTo(to, 0.5);
*/
/*
e->position = sp;
e->internalOffset.interpolateTo(e->position - sp, 0.2);
*/
//e->clampToSurface(0.1);
}
}
@ -6961,7 +6846,7 @@ luaFunc(entity_moveAlongSurface)
luaFunc(entity_rotateToSurfaceNormal)
{
//ScriptedEntity *e = scriptedEntity(L);
Entity *e = entity(L);
float t = lua_tonumber(L, 2);
int n = lua_tointeger(L, 3);
@ -6970,7 +6855,7 @@ luaFunc(entity_rotateToSurfaceNormal)
{
e->rotateToSurfaceNormal(t, n, rot);
}
//Entity *e = entity(L);
luaReturnNil();
}
@ -7219,11 +7104,7 @@ luaFunc(entity_pullEntities)
Vector pull = pos - ent->position;
pull.setLength2D(float(len) * dt);
ent->vel2 += pull;
/*
std::ostringstream os;
os << "ent: " << ent->name << " + (" << pull.x << ", " << pull.y << ")";
debugLog(os.str());
*/
}
}
}
@ -7267,7 +7148,7 @@ luaFunc(entity_isRidingOnEntity)
luaReturnPtr(NULL);
}
//entity_setProperty(me, EP_SOLID, true)
luaFunc(entity_isProperty)
{
Entity *e = entity(L);
@ -7279,7 +7160,7 @@ luaFunc(entity_isProperty)
luaReturnBool(v);
}
//entity_setProperty(me, EP_SOLID, true)
luaFunc(entity_setProperty)
{
Entity *e = entity(L);
@ -7335,10 +7216,7 @@ luaFunc(entity_hurtTarget)
d.damage = lua_tointeger(L, 2);
e->getTargetEntity(e->currentEntityTarget)->damage(d);
}
/*
if (e && e->getTargetEntity())
e->getTargetEntity(e->currentEntityTarget)->damage(lua_tointeger(L, 2), 0, e);
*/
luaReturnNil();
}
@ -8194,7 +8072,7 @@ luaFunc(entity_getTarget)
if (e)
{
retEnt = e->getTargetEntity(lua_tonumber(L, 2));
//e->activate();
}
luaReturnPtr(retEnt);
}
@ -8815,11 +8693,7 @@ luaFunc(entity_getFlag)
luaFunc(isFlag)
{
int v = 0;
/*
if (lua_isstring(L, 1))
v = dsq->continuity.getFlag(lua_tostring(L, 1));
else if (lua_isnumber(L, 1))
*/
bool f = false;
if (lua_isnumber(L, 1))
{
@ -8831,11 +8705,7 @@ luaFunc(isFlag)
v = dsq->continuity.getFlag(getString(L, 1));
f = (v == lua_tointeger(L, 2));
}
/*
int f = 0;
dsq->continuity.getFlag(lua_tostring(L, 1));
*/
luaReturnBool(f);
}

View file

@ -39,7 +39,7 @@ ScriptedEntity::ScriptedEntity(const std::string &scriptName, Vector position, E
strandSpacing = 10;
animKeyFunc = true;
canShotHitFunc = true;
//runningActivation = false;
setEntityType(et);
myTimer = 0;
@ -118,7 +118,7 @@ void ScriptedEntity::warpSegments()
}
void ScriptedEntity::init()
{
{
if (script)
{
if (!script->call("init", this))
@ -129,7 +129,7 @@ void ScriptedEntity::init()
}
void ScriptedEntity::postInit()
{
{
if (script)
{
if (!script->call("postInit", this))
@ -207,7 +207,7 @@ void ScriptedEntity::initSegments(int numSegments, int minDist, int maxDist, std
else
q->setTexture(bodyTex);
q->setWidthHeight(w, h);
if (i > 0 && i < segments.size()-1 && taper !=0)
q->scale = Vector(1.0f-(i*taper), 1-(i*taper));
dsq->game->addRenderObject(q, LR_ENTITIES);
@ -231,7 +231,7 @@ void ScriptedEntity::setupEntity(const std::string &tex, int lcode)
void ScriptedEntity::setupBasicEntity(const std::string& texture, int health, int manaBall, int exp, int money, float collideRadius, int state, int w, int h, int expType, bool hitEntity, int updateCull, int layer)
{
//this->updateCull = updateCull;
updateCull = -1;
if (texture.empty())
@ -326,7 +326,7 @@ void ScriptedEntity::onAlwaysUpdate(float dt)
e->sound("RockHit");
dsq->spawnParticleEffect("rockhit", e->position, 0, 0);
}
//e->push(vel, 0.2, 500, 0);
Vector add = vel;
add.setLength2D(5000*dt);
e->vel += add;
@ -343,7 +343,7 @@ void ScriptedEntity::onAlwaysUpdate(float dt)
}
if (isPullable())
{
{
Entity *followEntity = dsq->game->avatar;
if (followEntity && dsq->game->avatar->pullTarget == this)
{
@ -354,13 +354,13 @@ void ScriptedEntity::onAlwaysUpdate(float dt)
}
else if (!dist.isLength2DIn(800))
{
// break;
vel.setZero();
dsq->game->avatar->pullTarget->stopPull();
dsq->game->avatar->pullTarget = 0;
}
else if (!dist.isLength2DIn(128))
{
{
Vector v = dist;
int moveSpeed = 1000;
moveSpeed = 4000;
@ -390,7 +390,7 @@ void ScriptedEntity::updateStrands(float dt)
if (strands.empty()) return;
float angle = rotation.z;
angle = (PI*(360-(angle-90)))/180.0;
//angle = (180*angle)/PI;
float sz = (strands.size()/2);
for (int i = 0; i < strands.size(); i++)
{
@ -434,7 +434,7 @@ void ScriptedEntity::shiftWorlds(WorldType lastWorld, WorldType worldType)
}
void ScriptedEntity::startPull()
{
{
Entity::startPull();
beforePullMaxSpeed = getMaxSpeed();
becomeSolidDelay = false;
@ -642,7 +642,7 @@ void ScriptedEntity::songNoteDone(int note, float len)
void ScriptedEntity::becomeSolid()
{
//vel = 0;
float oldRot = 0;
bool doRot=false;
Vector n = dsq->game->getWallNormal(position);
@ -683,7 +683,7 @@ void ScriptedEntity::onHitWall()
{
becomeSolidDelay = true;
}
if (isEntityProperty(EP_BLOCKER) && !fillGridFromQuad)
{
Vector n = dsq->game->getWallNormal(position);
@ -703,10 +703,10 @@ void ScriptedEntity::onHitWall()
}
void ScriptedEntity::activate()
{
{
if (runningActivation) return;
Entity::activate();
runningActivation = true;
if (script)
{
@ -762,7 +762,7 @@ void ScriptedEntity::onDieEaten()
void ScriptedEntity::onEnterState(int action)
{
CollideEntity::onEnterState(action);
if (script)
{
if (!script->call("enterState", this))
@ -772,7 +772,7 @@ void ScriptedEntity::onEnterState(int action)
{
case STATE_DEAD:
if (!isGoingToBeEaten())
{
{
doDeathEffects(manaBallAmount);
dsq->spawnParticleEffect(deathParticleEffect, position);
onDieNormal();
@ -799,7 +799,7 @@ void ScriptedEntity::onEnterState(int action)
void ScriptedEntity::onExitState(int action)
{
if (script)
{
if (!script->call("exitState", this))

View file

@ -50,7 +50,7 @@ public:
void entityDied(Entity *e);
void message(const std::string &msg, int v);
int messageVariadic(lua_State *L, int nparams);
static bool runningActivation;
void sporesDropped(const Vector &pos, int type);
@ -101,8 +101,8 @@ protected:
void onAlwaysUpdate(float dt);
void updateStrands(float dt);
bool animKeyFunc;
//void onPathEnd();
void onExitTimer();
float myTimer;
void onHitWall();

View file

@ -345,7 +345,7 @@ void Shot::loadBankShot(const std::string &ident, Shot *setter)
{
std::string id = ident;
stringToLower(id);
//setter->shotData = &shotBank[id];
setter->applyShotData(&shotBank[id]);
}
}
@ -470,7 +470,7 @@ void Shot::onHitWall()
if (!shotData->spawnEntity.empty())
{
dsq->game->createEntity(shotData->spawnEntity, 0, position, 0, false, "", ET_ENEMY, true);
//(shotData->spawnEntity, 0, position, 0, false, "");
if (shotData->spawnEntity == "NatureFormFlowers")
{
dsq->game->registerSporeDrop(position, 0);
@ -518,9 +518,9 @@ void Shot::reflectFromEntity(Entity *e)
{
firer = e;
target = oldFirer;
//int d = (int)dt;
//d += DT_AVATAR;oll
//damageType = DamageType(d);
}
}
@ -542,11 +542,7 @@ void Shot::targetDied(Entity *target)
}
/*
std::ostringstream os;
os << "# of shots in list: " << c;
debugLog(os.str());
*/
}
bool Shot::isHitEnts() const
@ -585,13 +581,13 @@ void Shot::hitEntity(Entity *e, Bone *b)
if (damageType == DT_AVATAR_BITE)
{
//debugLog("Shot::hitEntity bittenEntities.push_back");
dsq->game->avatar->bittenEntities.push_back(e);
}
bool damaged = e->damage(d);
// doesn't have anything to do with effectTime
if (shotData)
{
if (!damaged && checkDamageTarget && !shotData->alwaysDoHitEffects)
@ -611,11 +607,11 @@ void Shot::hitEntity(Entity *e, Bone *b)
}
//debugLog("Shot hit enemy: " + e->name);
}
else
{
//debugLog("Shot hit 0 enemy");
}
if (doEffects)
@ -640,7 +636,7 @@ void Shot::hitEntity(Entity *e, Bone *b)
}
}
//d.bone = c.bone;
}
void Shot::noSegs()
@ -679,11 +675,7 @@ void Shot::setAimVector(const Vector &aim)
{
velocity.setLength2D(shotData->maxSpeed);
}
/*
std::ostringstream os;
os << "setting aim vector(" << aim.x << ", " << aim.y << ") to vel(" << velocity.x << ", " << velocity.y << ")";
debugLog(os.str());
*/
}
void Shot::setTarget(Entity *target)
@ -737,7 +729,7 @@ void Shot::onUpdate(float dt)
{
if (velocity.isZero())
{
//velocity = Vector(rand()%100-50, rand()%100-50);
}
else if (velocity.isLength2DIn(maxSpeed*0.75f))
{
@ -745,18 +737,7 @@ void Shot::onUpdate(float dt)
}
}
/*
if (!gravity.isZero())
{
velocity += shotData->gravity * dt;
}
*/
/*
std::ostringstream os;
os << "shotVel(" << velocity.x << ", " << velocity.y << ")";
debugLog(os.str());
*/
homingness += shotData->homingIncr*dt;
if (shotData->homingMax != 0 && homingness > shotData->homingMax)
@ -779,7 +760,7 @@ void Shot::onUpdate(float dt)
add.setLength2D(shotData->rotIncr);
velocity += add * dt;
}
//emitter.update(dt);
if (emitter)
{
emitter->position = position + offset;
@ -814,7 +795,7 @@ void Shot::onUpdate(float dt)
return;
}
}
//TileVector t(position);
Vector diff;
if (target)
diff = target->getTargetPoint(targetPt) - this->position;
@ -846,13 +827,13 @@ void Shot::onUpdate(float dt)
if (!N.isZero())
{
//2*(-I dot N)*N + I
velocity = 2*(-I.dot(N))*N + I;
velocity *= len;
}
break;
}
// fall through
}
default:
{

View file

@ -69,15 +69,15 @@ struct ShotData
Vector gravity;
void bankLoad(const std::string &file, const std::string &path);
};
class Shot : public Quad, public Segmented
{
public:
//Shot(DamageType damageType, Entity *firer, Vector pos, Entity *target, std::string tex="", float homingness=1000, int maxSpeed=400, int segments=10, float segMin=0.1, float segMax=5, float damage = 1, float lifeTime = 0);
Shot();
//void destroy();
void reflectFromEntity(Entity *e);
void setParticleEffect(const std::string &particleEffect);
typedef std::vector<Shot*> Shots;
@ -95,7 +95,7 @@ public:
void fire(bool playSfx = true);
void hitEntity(Entity *e, Bone *b);
void noSegs();
void rotateToVec(Vector addVec, float time, int offsetAngle);
@ -156,7 +156,7 @@ public:
Beam(Vector pos, float angle);
typedef std::list<Beam*> Beams;
static Beams beams;
//static void targetDied(Entity *t);
static void killAllBeams();
float angle;

View file

@ -49,7 +49,7 @@ bool Spore::isPositionClear(const Vector &position)
{
if (dsq->game->isObstructed(TileVector(position)))
return false;
for (Spores::iterator i = spores.begin(); i != spores.end(); i++)
for (Spores::iterator i = spores.begin(); i != spores.end(); i++)
{
Spore *s = *i;
if (s->position == position)
@ -68,7 +68,7 @@ void Spore::destroy()
void Spore::onEndOfLife()
{
//::onEndLife();
spores.remove(this);
}
@ -84,9 +84,9 @@ void Spore::onEnterState(int state)
}
void Spore::killAllSpores()
{
{
std::queue<Spore*>sporeDeleteQueue;
for (Spores::iterator i = spores.begin(); i != spores.end(); i++)
for (Spores::iterator i = spores.begin(); i != spores.end(); i++)
{
sporeDeleteQueue.push(*i);
}
@ -104,8 +104,8 @@ void Spore::killAllSpores()
}
void Spore::onUpdate(float dt)
{
{
CollideEntity::onUpdate(dt);
if (life < 1) return;
@ -118,7 +118,7 @@ void Spore::onUpdate(float dt)
int sporeCr = 48;
collideRadius = scale.x * sporeCr;
if (touchAvatarDamage(collideRadius, 1, Vector(-1,-1,-1), 500))
{
// YAY!

View file

@ -28,15 +28,12 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Bubble::Bubble() : Quad()
{
setTexture("particles/bubble");
/*
this->life = 10;
this->decayRate = 1;
*/
this->alpha = 0.5f;
this->speed = rand()%10+20;
this->width = 32;
this->height = 32;
//this->scale = Vector(0.5f, 0.5f, 0.5f);
}
void Bubble::onUpdate(float dt)
@ -64,12 +61,12 @@ void Intro2::applyState()
ActionMapper::clearActions();
//addAction(MakeFunctionEvent(Intro2, skipIntro), KEY_ESCAPE, 0);
dsq->subtitlePlayer.show(0.5f);
core->resetCamera();
dsq->jiggleCursor();
dsq->setCutscene(1,1);
@ -78,8 +75,7 @@ void Intro2::applyState()
dsq->overlay->alpha.interpolateTo(0, 40);
dsq->toggleCursor(0);
// OLD WAY of skipping
//dsq->user.control.actionSet.importAction(this, "Escape", ACTION_ESC);
Quad *frame4 = new Quad;
{
@ -110,96 +106,11 @@ void Intro2::applyState()
dsq->voice("Naija_Intro-music");
while (dsq->sound->isPlayingVoice())
dsq->main(FRAME_TIME);
/*
while (dsq->sound->isPlayingVoice())
{
if (isActing(ACTION_ESC))
{
while (isActing(ACTION_ESC) && dsq->sound->isPlayingVoice())
{
core->main(FRAME_TIME);
}
dsq->overlay->alpha.interpolateTo(1, 1);
dsq->stopVoice();
dsq->main(1);
dsq->newGame();
return;
}
core->main(FRAME_TIME);
}
*/
/*
Quad *frame3 = new Quad;
{
frame3->setTexture("gameover-0002");
frame3->position = Vector(400,300);
frame3->width = 600;
frame3->height = 600;
}
addRenderObject(frame3, LR_BACKGROUND);
Quad *frame2 = new Quad;
{
frame2->setTexture("gameover-0003");
frame2->position = Vector(400,300);
frame2->width = 600;
frame2->height = 600;
}
addRenderObject(frame2, LR_BACKGROUND);
Quad *frame1 = new Quad;
{
frame1->setTexture("gameover-0004");
frame1->position = Vector(400,300);
frame1->width = 600;
frame1->height = 600;
}
addRenderObject(frame1, LR_BACKGROUND);
*/
/*
dsq->voice("Naija_Intro1");
while (dsq->isStreamingVoice()) core->main(1);
*/
/*
frame1->alpha.interpolateTo(0, 1);
core->main(1);
*/
/*
dsq->voice("Naija_Intro2");
while (dsq->isStreamingVoice()) core->main(1);
*/
//frame2->alpha.interpolateTo(0, 1);
/*
dsq->voice("Naija_Intro3");
while (dsq->isStreamingVoice()) core->main(1);
*/
/*
frame3->alpha.interpolateTo(0, 1);
core->main(1);
*/
/*
dsq->voice("Naija_Intro3");
while (dsq->isStreamingVoice()) core->main(1);
*/
//frame4->alpha.interpolateTo(0, 1);
/*
dsq->voice("Naija_Intro4");
while (dsq->isStreamingVoice()) core->main(1);
*/
emitter->stop();
emitter2->start();
@ -245,8 +156,8 @@ void GameOver::applyState()
const bool frameOutputGameOver = false;
core->sound->fadeMusic(SFT_OUT, 1);
//float transTime = 0.01;
//core->sound->fadeOut(transTime);
StateObject::applyState();
core->globalScale = Vector(1,1);
core->globalScaleChanged();
@ -268,18 +179,6 @@ void GameOver::applyState()
}
addRenderObject(q);
/*
BitmapText *b = new BitmapText(&dsq->font);
{
int sz = 64;
b->setFontSize(sz);
b->setText("GAME OVER");
b->position = Vector(400+sz/2,300-sz/2);
}
addRenderObject(b);
*/
//core->main(transTime);
frame1 = new Quad;
@ -331,11 +230,10 @@ void GameOver::applyState()
core->afterEffectManager->addEffect(new ShockEffect(Vector(core->width/2, core->height/2),core->screenCenter, 0.07,0.03,30,0.2f, 1.1));
}
//dsq->screenTransition->transition(0);
dsq->overlay->alpha = 0;
//core->main(0.1);
//frame3->alpha.interpolateTo(0, GO_ANIM_TIME);
core->main(GO_ANIM_TIME);
frame4->alpha.interpolateTo(0, GO_ANIM_TIME);
@ -351,24 +249,18 @@ void GameOver::applyState()
core->main(GO_ANIM_TIME);
core->main(1.5);
//core->sound->streamMusic("Requiem", 0);
if (dsq->recentSaveSlot != -1)
{
// game over recent save load
dsq->sound->stopMusic();
float transferSeconds = dsq->continuity.seconds;
dsq->continuity.loadFile(dsq->recentSaveSlot);
/*
//float lastLoadSeconds = dsq->continuity.seconds;
// time spent on a session that ended with death is the
// difference between the current total time and the last save time?
// nope.
// ignore doing the above for now!
*/
dsq->continuity.seconds = transferSeconds;
dsq->game->transitionToScene(dsq->game->sceneToLoad);
}
@ -376,20 +268,16 @@ void GameOver::applyState()
dsq->title();
//core->main(transTime);
if (frameOutputGameOver)
core->frameOutputMode = false;
/*
addAction(MakeFunctionEvent(GameOver, onClick), ActionMapper::MOUSE_BUTTON_LEFT, 0);
timer = 1;
*/
}
void GameOver::removeState()
{
//dsq->screenTransition->capture();
StateObject::removeState();
frame3 = frame2 = frame1 = 0;
}
@ -410,30 +298,7 @@ void GameOver::update(float dt)
timer = 0;
}
/*
if (frame1 && frame2 && frame3)
{
if (frame3->alpha.x == 0 && !frame3->alpha.isInterpolating())
{
if (frame2->alpha.x == 0 && !frame2->alpha.isInterpolating())
{
if (frame1->alpha.x == 0 && !frame1->alpha.isInterpolating())
{
frame1=frame2=frame3=0;
}
else if (!frame1->alpha.isInterpolating())
{
frame1->alpha.interpolateTo(0, 0.8);
}
}
else if (!frame2->alpha.isInterpolating())
{
frame2->alpha.interpolateTo(0, GO_ANIM_TIME);
}
}
}
*/
}
namespace NagStuff
@ -442,10 +307,7 @@ namespace NagStuff
int ic=0;
const int numScreens = 11;
float screenTimer = 0;
/*
const float screenTime = 7;
const float nagFadeTime = 3;
*/
const float screenTime = 3;
const float nagFadeTime = 1;
};
@ -477,7 +339,7 @@ void Nag::applyState()
core->setInputGrab(false);
grab = false;
dsq->overlay2->alpha = 0;
dsq->stopVoice();
@ -489,8 +351,8 @@ void Nag::applyState()
AquariaMenuItem *buy = new AquariaMenuItem();
buy->followCamera = 1;
buy->position = Vector(630, 400); //300, 540);
//buy->setLabel("Buy");
buy->position = Vector(630, 400);
buy->useGlow("particles/glow", 480, 128);
buy->event.set(MakeFunctionEvent(Nag, onBuy));
buy->setDirMove(DIR_LEFT, buy);
@ -501,7 +363,7 @@ void Nag::applyState()
AquariaMenuItem *exit = new AquariaMenuItem();
exit->followCamera = 1;
exit->position = Vector(732, 543);
//exit->setLabel("Exit");
exit->useGlow("particles/glow", 128, 64);
exit->event.set(MakeFunctionEvent(Nag, onExit));
exit->setDirMove(DIR_LEFT, exit);
@ -518,7 +380,7 @@ void Nag::applyState()
ic = 0;
irot.clear();
//Vector framePos(235, 405);
Vector framePos(240, 400);
Vector frameScale(0.98, 0.98);

View file

@ -68,7 +68,7 @@ protected:
bool done;
Precacher cachy;
//void update(float dt);
};
class Intro2 : public StateObject
@ -88,11 +88,11 @@ public:
void applyState();
void removeState();
void update(float dt);
void doShortBitBlot();
void getOut();
void skipLogo();
bool watchQuit(float time);
protected:
int quitFlag;

View file

@ -122,15 +122,11 @@ const int FLAG_MINIBOSS_END = 720;
#pragma warning( push )
// warning C4355: 'this' : used in base member initializer list
// This is OK because it's warning on setting up the Steam callbacks, they won't use this until after construction is done
#pragma warning( disable : 4355 )
#pragma warning( disable : 4355 )
#endif
StatsAndAchievements::StatsAndAchievements()
{
/*
std::ostringstream os;
os << "app_id: " << SteamUtils()->GetAppID();
debugLog(os.str());
*/
#ifdef BBGE_BUILD_ACHIEVEMENTS_INTERNAL
unlockedDisplayTimestamp = -1.0f;
@ -140,21 +136,7 @@ StatsAndAchievements::StatsAndAchievements()
statsValid = false;
storeStats = false;
/*
m_flGameFeetTraveled = 0;
m_nTotalGamesPlayed = 0;
m_nTotalNumWins = 0;
m_nTotalNumLosses = 0;
m_flTotalFeetTraveled = 0;
m_flMaxFeetTraveled = 0;
m_flAverageSpeed = 0;
m_hDisplayFont = pGameEngine->HCreateFont( ACHDISP_FONT_HEIGHT, FW_MEDIUM, false, "Arial" );
if ( !m_hDisplayFont )
OutputDebugString( "Stats font was not created properly, text won't draw\n" );
*/
}
#ifdef _MSC_VER
#pragma warning( pop )
@ -343,7 +325,7 @@ void StatsAndAchievements::OnGameStateChange( EClientGameState eNewState )
m_ulTickCountGameStart = m_pGameEngine->GetGameTickCount();
break;
case k_EClientFindInternetServers:
break;
break;
case k_EClientGameWinner:
if ( SpaceWarClient()->BLocalPlayerWonLastGame() )
m_nTotalNumWins++;
@ -379,11 +361,11 @@ void StatsAndAchievements::OnGameStateChange( EClientGameState eNewState )
//-----------------------------------------------------------------------------
void StatsAndAchievements::EvaluateAchievement( Achievement &achievement )
{
//debugLog("Eval...");
// Already have it?
if ( achievement.achieved ) {
//debugLog(std::string(achievement.chAchievementID) + " was already achieved");
return;
}
@ -423,11 +405,7 @@ void StatsAndAchievements::EvaluateAchievement( Achievement &achievement )
|| (dsq->continuity.recipes[i].result == "VeggieSoup" && didVeggieSoup))
{}
else {
/*
std::ostringstream os;
os << "doesn't know recipe: " << dsq->continuity.recipes[i].result;
debugLog(os.str());
*/
knowAll = false;
}
}
@ -442,20 +420,7 @@ void StatsAndAchievements::EvaluateAchievement( Achievement &achievement )
case ACH_MASS_TRANSIT:
{
/*
debugLog("eval ACH_MASS_TRANSIT");
std::ostringstream os;
os << "FLAG_TRANSTURTLE_VEIL01: " << dsq->continuity.getFlag(FLAG_TRANSTURTLE_VEIL01) << "\n";
os << "FLAG_TRANSTURTLE_VEIL02: " << dsq->continuity.getFlag(FLAG_TRANSTURTLE_VEIL02) << "\n";
os << "FLAG_TRANSTURTLE_OPENWATER03: " << dsq->continuity.getFlag(FLAG_TRANSTURTLE_OPENWATER03) << "\n";
os << "FLAG_TRANSTURTLE_FOREST04: " << dsq->continuity.getFlag(FLAG_TRANSTURTLE_FOREST04) << "\n";
os << "FLAG_TRANSTURTLE_FOREST05: " << dsq->continuity.getFlag(FLAG_TRANSTURTLE_FOREST05) << "\n";
os << "FLAG_TRANSTURTLE_MAINAREA: " << dsq->continuity.getFlag(FLAG_TRANSTURTLE_MAINAREA) << "\n";
os << "FLAG_TRANSTURTLE_SEAHORSE: " << dsq->continuity.getFlag(FLAG_TRANSTURTLE_SEAHORSE) << "\n";
os << "FLAG_TRANSTURTLE_ABYSS03: " << dsq->continuity.getFlag(FLAG_TRANSTURTLE_ABYSS03) << "\n";
os << "FLAG_TRANSTURTLE_FINALBOSS: " << dsq->continuity.getFlag(FLAG_TRANSTURTLE_FINALBOSS) << "\n";
debugLog(os.str());
*/
if (dsq->continuity.getFlag(FLAG_TRANSTURTLE_VEIL01) > 0
&& dsq->continuity.getFlag(FLAG_TRANSTURTLE_VEIL02) > 0
@ -481,11 +446,7 @@ void StatsAndAchievements::EvaluateAchievement( Achievement &achievement )
{
WorldMapTile *tile = dsq->continuity.worldMap.getWorldMapTile(i);
if (!tile->revealed && (nocasecmp(tile->name, "thirteenlair") != 0)) {
/*
std::ostringstream os;
os << "does not have: " << tile->name;
debugLog(os.str());
*/
hasAllMap = false;
break;
}
@ -506,7 +467,7 @@ void StatsAndAchievements::EvaluateAchievement( Achievement &achievement )
break;
case ACH_AQUIRE_ALL_SONGS:
//debugLog("eval ACH_AQUIRE_ALL_SONGS");
if (dsq->continuity.hasSong(SONG_BIND)
&& dsq->continuity.hasSong(SONG_SHIELDAURA)
&& dsq->continuity.hasSong(SONG_LI)
@ -518,14 +479,14 @@ void StatsAndAchievements::EvaluateAchievement( Achievement &achievement )
&& dsq->continuity.hasSong(SONG_FISHFORM)
&& dsq->continuity.hasSong(SONG_SPIRITFORM))
{
//errorLog("ACH_AQUIRE_ALL_SONGS!");
UnlockAchievement(achievement);
}
break;
// gameplay
case ACH_DEFEAT_PRIESTS:
//if (dsq->continuity.getFlag(FLAG_MINIBOSS_PRIESTS) > 0)
if (dsq->continuity.hasSong(SONG_SPIRITFORM))
{
UnlockAchievement(achievement);
@ -609,7 +570,7 @@ void StatsAndAchievements::EvaluateAchievement( Achievement &achievement )
UnlockAchievement(achievement);
}
break;
case ACH_THE_FROZEN_VEIL:
if (dsq->game->sceneName == "frozenveil")
{
@ -618,8 +579,8 @@ void StatsAndAchievements::EvaluateAchievement( Achievement &achievement )
break;
case ACH_MOMMY_AND_DADDY:
//if (dsq->continuity.getFlag(SUNKENCITY_BOSSDONE) > 0)
//setFlag(FLAG_SUNKENCITY_PUZZLE, SUNKENCITY_BOSSDONE)
if (dsq->continuity.getFlag(FLAG_SUNKENCITY_PUZZLE) >= SUNKENCITY_BOSSDONE)
{
UnlockAchievement(achievement);
@ -723,16 +684,8 @@ void StatsAndAchievements::entityDied(Entity *eDead)
biteDeathComboCounter = 0;
}
/*
eDead->getState() ==
if (eDead->name == "monkey") {
// we killed a monkey, but how?
if (eDead->lastDamage.damageType == DT_AVATAR_VINE) {
// with a nature form vine
flungMonkey = true;
}
}
*/
}
void StatsAndAchievements::update(float dt)
@ -748,15 +701,11 @@ void StatsAndAchievements::update(float dt)
if (!rodeEkkritToTheStars) {
if (!dsq->game->isPaused() && b->on) {
//debugLog("boneLock->entity->name: " + b->entity->name);
if (b->entity->name == "ekkrit") {
ridingEkkritTime += dt;
/*
std::ostringstream os;
os << "ridingEkkritTime: " << ridingEkkritTime;
debugLog(os.str());
*/
if (ridingEkkritTime >= ridingEkkritTimeMax) {
rodeEkkritToTheStars = true;
@ -864,7 +813,7 @@ void StatsAndAchievements::StoreStatsIfNecessary()
const size_t max_achievements = ARRAYSIZE(g_rgAchievements);
unsigned char *buf = new unsigned char[max_achievements];
for (size_t i = 0; i < max_achievements; i++)
{
int val = g_rgAchievements[i].achieved ? 1 : 0;

View file

@ -99,13 +99,13 @@ struct PlayStats
// maybe
int timesPlayed; // # of times the game started
int timesPoisoned; // # of times the poison applied gets called on Naija
int timesUsedTurtle; // # of times trans turtle is used (how to check?)
int timesRideSeahorse; // # of times ride seahorse
int timesLeptOutOfWater; // # of times Naija goes not underwater after being underwater
int timesBackflipped; // # of times Naija does a backflip, check in Avatar.cpp
float highestDive; // ...?
int creaturesConsumed; // # of times swallow creatures, check in Avatar.cpp
int sealoafsConsumed; // # of sealoafs eaten
int creaturesKilled; //

View file

@ -25,7 +25,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
SteamRender::SteamRender() : RenderObject()
{
cull = false;
//alpha = 0.1f;
alpha = 0.7;
setTexture("Particles/Steam");
texture->repeat = true;
@ -40,9 +40,8 @@ void SteamRender::onUpdate(float dt)
void SteamRender::onRender()
{
#ifdef BBGE_BUILD_OPENGL
//glDisable(GL_CULL_FACE);
//int qs = 0;
for (Path *p = dsq->game->getFirstPathOfType(PATH_STEAM); p; p = p->nextOfType)
{
@ -84,7 +83,7 @@ void SteamRender::onRender()
const float len = diff.getLength2D();
const float texScale = len/256.0f;
//qs++;
glBegin(GL_QUAD_STRIP);
glColor4f(1,1,1,0);
glTexCoord2f((0)*texScale+p->animOffset, 0);
@ -121,7 +120,6 @@ void SteamRender::onRender()
}
}
//glEnable(GL_CULL_FACE);
#endif
}

View file

@ -50,7 +50,6 @@ void Strand::onUpdate(float dt)
void Strand::onRender()
{
#ifdef BBGE_BUILD_OPENGL
const int numSegments = segments.size();
if (numSegments == 0) return;
@ -59,8 +58,8 @@ void Strand::onRender()
glLineWidth(1);
glBegin(GL_LINE_STRIP);
//glColor4f(0.25,0.25,0.5,1);
// Use fixed-point math to speed things up. --achurch
unsigned int r = (unsigned int)(color.x * (255<<8));
unsigned int g = (unsigned int)(color.y * (255<<8));
unsigned int b = (unsigned int)(color.z * (255<<8));
@ -90,5 +89,4 @@ void Strand::onRender()
glVertex2f(segments[i]->position.x, segments[i]->position.y);
}
glEnd();
#endif
}

View file

@ -48,7 +48,7 @@ void StringBank::load()
void StringBank::_load(const std::string &file)
{
//debugLog("StringBank::load("+file+")");
InStream in(file.c_str());
@ -59,9 +59,7 @@ void StringBank::_load(const std::string &file)
{
std::getline(in, line);
//std::ostringstream os;
//os << idx << ": StringBank Read Line: " << line;
//debugLog(os.str());
if (!line.empty() && line[0] == ' ')
line = line.substr(1, line.size());

View file

@ -23,7 +23,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "../BBGE/DebugFont.h"
#include "../BBGE/BitmapFont.h"
//#define DISABLE_SUBS
SubtitlePlayer::SubtitlePlayer()
{
@ -130,7 +130,7 @@ void SubtitlePlayer::update(float dt)
// set text
debugLog(subLines[curLine].line);
dsq->subtext->scrollText(subLines[curLine].line, 0.02);
//dsq->subtext->scrollText(subLines[curLine].line, 0.1);
// advance
curLine++;
}

View file

@ -54,7 +54,7 @@ void ToolTip::setText(const std::string &t, const Vector &center, int width)
int height = 0;
back->position = center;
text->setWidth(width - 40);
text->setText(t);
@ -62,7 +62,7 @@ void ToolTip::setText(const std::string &t, const Vector &center, int width)
back->setWidthHeight(width, height);
text->position = center - Vector(width,height)*0.5f + Vector(5, 5);
text->position = center - Vector(width,height)*0.5f + Vector(5, 5);
}
void ToolTip::setArea(const Vector &p1, const Vector &p2)
@ -114,7 +114,7 @@ void ToolTip::onUpdate(float dt)
break;
}
const float t = 0.0;//0.4;//0.05;
const float t = 0.0;
if (in && (required || dsq->user.control.toolTipsOn))
{
back->alpha.interpolateTo(1, t);

View file

@ -32,7 +32,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
void UserSettings::save()
{
//initInputCodeMap();
XMLDocument doc;
{
@ -268,7 +268,7 @@ void UserSettings::save()
doc.SaveFile(userSettingsFilename.c_str());
#endif
//clearInputCodeMap();
}
static void readInt(XMLElement *xml, const char *elem, const char *att, int *toChange)
@ -328,7 +328,7 @@ void UserSettings::load(bool doApply, const std::string &overrideFile)
}
control.actionSet.clearActions();
//initInputCodeMap();
control.actionSet.addActionInput("lmb");
control.actionSet.addActionInput("rmb");
@ -419,9 +419,7 @@ void UserSettings::load(bool doApply, const std::string &overrideFile)
readInt(xml_video, "FpsSmoothing", "v", &video.fpsSmoothing);
/*
readInt(xml_video, "Parallax", "on", &video.parallaxOn);
*/
XMLElement *xml_parallax = xml_video->FirstChildElement("Parallax");
if (xml_parallax)
{
@ -534,7 +532,7 @@ void UserSettings::load(bool doApply, const std::string &overrideFile)
network.masterServer = serv;
}
//clearInputCodeMap();
if (system.locale.empty())
{

View file

@ -1,37 +1,10 @@
/*
Copyright (C) 2007, 2010 - Bit-Blot
This file is part of Aquaria.
Aquaria is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#include "WaterSurfaceRender.h"
#include "DSQ.h"
#include "Game.h"
#include "Avatar.h"
/*
{
public:
WaterSurfaceRender();
void render();
protected:
void onRender();
};
*/
namespace WaterSurfaceRenderStuff
{
@ -44,7 +17,7 @@ WaterSurfaceRender::WaterSurfaceRender() : Quad()
{
color = baseColor;
cull = false;
//alpha = 0.98;
alpha = 0.75;
if (dsq->useFrameBuffer && dsq->frameBuffer.isInited())
@ -54,33 +27,17 @@ WaterSurfaceRender::WaterSurfaceRender() : Quad()
//addChild(qSurface);
//qSurface->renderBeforeParent = 1;
/*
qLine = new Quad("water/water-line", Vector(0,50));
qLine->repeatTextureToFill(1);
addChild(qLine);
*/
qLine = new Quad("water/water-line", Vector(0,0));
qLine->repeatTextureToFill(1);
qLine->cull = false;
dsq->game->addRenderObject(qLine, LR_WATERSURFACE2);
qLine2 = 0;
/*
qLine2 = new Quad("water/water-line", Vector(0,0));
qLine2->repeatTextureToFill(1);
qLine2->cull = false;
//qLine2->flipVertical();
dsq->game->addRenderObject(qLine2, LR_ELEMENTS3);
*/
//water/water-surface
qSurface = new Quad("missingimage", Vector(0,0));
//qSurface->parentManagedPointer = 1;
qSurface->cull = false;
qSurface->repeatTextureToFill(1);
dsq->game->addRenderObject(qSurface, LR_WATERSURFACE2);
@ -90,22 +47,22 @@ WaterSurfaceRender::WaterSurfaceRender() : Quad()
}
void WaterSurfaceRender::render()
{
//if (dsq->frameBuffer.isInited())
{
if (dsq->game->waterLevel.x > 0)
{
{
qLine->alpha = qSurface->alpha = 1;
//qSurface->alpha = 0;
position.x = core->screenCenter.x;
position.y = dsq->game->waterLevel.x;
width = core->getVirtualWidth()*core->invGlobalScale;
height = 100;
float dist = (core->screenCenter.y - position.y);
if (dist > 0)
@ -117,7 +74,7 @@ void WaterSurfaceRender::render()
}
offset.y = (height*scale.y);
//offset.y += 10;
offset.y -= 40*scale.y;
@ -125,11 +82,7 @@ void WaterSurfaceRender::render()
qLine->alphaMod = 0.5;
qLine->setWidth(width);
/*
qLine2->position = position + offset;
qLine2->alphaMod = 0.5;
qLine2->width = this->width;
*/
qSurface->position = position+offset;
qSurface->scale = scale.y;
@ -137,48 +90,35 @@ void WaterSurfaceRender::render()
qSurface->setWidthHeight(width, height);
float bit = core->cameraPos.x/300.0f;
//qSurface->texOff.x = bit;
qLine->texOff.x = bit;
//qSurface->refreshRepeatTextureToFill();
qLine->refreshRepeatTextureToFill();
/*
qLine2->texOff.x = bit;
qLine2->refreshRepeatTextureToFill();
*/
if (dsq->useFrameBuffer && dsq->frameBuffer.isInited())
{
qSurface->alphaMod = 0.5;
Quad::render();
//qLine->alpha = qSurface->alpha = 0;
}
else
{
//color = baseColor;
Quad::render();
//qSurface->alphaMod = 0.6;
//deleteGrid();
//color = Vector(1,1,1);
}
/*
//core->setupRenderPositionAndScale();
glClear(GL_DEPTH_BUFFER_BIT);
core->currentLayerPass = 0;
dsq->game->avatar->color = Vector(1,0,0);
dsq->game->avatar->render();
dsq->game->avatar->color = Vector(1,1,1);
//glBindTexture(GL_TEXTURE_2D, 0);
*/
}
else
{
qLine->alpha = qSurface->alpha = 0;
if (qLine2)
{
qLine2->alpha = 0;
@ -188,7 +128,6 @@ void WaterSurfaceRender::render()
void WaterSurfaceRender::onRender()
{
#ifdef BBGE_BUILD_OPENGL
if (dsq->game->waterLevel == 0) return;
if (dsq->useFrameBuffer && dsq->frameBuffer.isInited())
{
@ -218,22 +157,13 @@ void WaterSurfaceRender::onRender()
Quad::onRender();
/*
glTranslatef(0, -height - 20);
height = 40;
Quad::onRender();
*/
glBindTexture(GL_TEXTURE_2D, 0);
}
else
{
/*
upperLeftTextureCoordinates.x = 0;
lowerRightTextureCoordinates.x = core->frameBuffer.getWidthP();
*/
glColor4f(0.4, 0.7, 0.8, 0.2);
Quad::onRender();
@ -242,19 +172,6 @@ void WaterSurfaceRender::onRender()
RenderObject::lastTextureApplied = 0;
//dsq->game->avatar->setRenderPass(0);
/*
glEnable(GL_SCISSOR_TEST);
float realSz2 = sz2*scale.x;
float factor = float(core->getWindowWidth()) / 800.0f;
glScissor(dsq->game->waterLevel.x*factor - realSz2 * factor, 600*factor-(position.y+realSz2)*factor, realSz2*2*factor, realSz2*2*factor);
*/
//glDisable(GL_SCISSOR_TEST);
#endif
}

View file

@ -18,7 +18,7 @@ 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 "Web.h"
#include "Web.h"
#include "DSQ.h"
#include "Game.h"
#include "Avatar.h"
@ -40,9 +40,9 @@ void Web::setParentEntity(Entity *e)
}
void Web::killAllWebs()
{
{
std::queue<Web*>shotDeleteQueue;
for (Webs::iterator i = webs.begin(); i != webs.end(); i++)
for (Webs::iterator i = webs.begin(); i != webs.end(); i++)
{
shotDeleteQueue.push(*i);
}
@ -136,14 +136,7 @@ void Web::onUpdate(float dt)
}
if (hit)
{
/*
if (!e->vel.isZero())
{
Vector n = e->vel;
n.setLength2D(e->getv(EV_WEBSLOW)*dt);
e->vel -= n;
}
*/
e->vel /= float(e->getv(EV_WEBSLOW)) * dt;
}
}
@ -153,24 +146,22 @@ void Web::onUpdate(float dt)
void Web::onRender()
{
#ifdef BBGE_BUILD_OPENGL
glBindTexture(GL_TEXTURE_2D, 0);
//glDisable(GL_BLEND);
glLineWidth(4);
//glDisable(GL_CULL_FACE);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glBegin(GL_LINES);
for (int i = 0; i < points.size()-1; i++)
{
{
glColor4f(1, 1, 1, 0.5f*alpha.x);
glVertex3f(points[i].x, points[i].y, 0);
glColor4f(1, 1, 1, 0.5f*alpha.x);
glVertex3f(points[i+1].x, points[i+1].y, 0);
}
glEnd();
#endif
}

View file

@ -67,7 +67,7 @@ namespace WorldMapRenderNamespace
bool editorActive=false;
Quad *tophud=0;
Gradient *underlay = 0;
}
@ -157,44 +157,35 @@ public:
BeaconRender(BeaconData *beaconData) : Quad(), beaconData(beaconData)
{
renderQuad = false;
setTexture("gui/minimap/ripple"); //"particles/softring"); // or whatever
setTexture("gui/minimap/ripple");
position = beaconData->pos;
truePosition = beaconData->pos;
followCamera = 1;
/*
scale = Vector(0.2, 0.2);
scale.interpolateTo(Vector(0.5, 0.5), 0.75, -1, 1, 1);
*/
alpha = 0.5;
color = beaconData->color;
/*
pe = new ParticleEffect();
pe->load("sparkle");
pe->followCamera = 1;
pe->start();
core->addRenderObject(pe, LR_PARTICLES);
*/
spawnBitTimer = 0;
}
//float spawnBitTimer;
Vector truePosition;
ParticleEffect *pe;
float spawnBitTimer;
void render()
{
//setProperPosition();
Quad::render();
}
protected:
BeaconData *beaconData;
void setProperPosition()
{
Vector wp = parent->getWorldCollidePosition(truePosition);
@ -215,13 +206,13 @@ protected:
Vector move = wp - getWorldPosition();
position += move;
}
void onUpdate(float dt)
{
Quad::onUpdate(dt);
//setProperPosition();
if (!dsq->game->worldMapRender->isOn()) return;
@ -244,7 +235,7 @@ protected:
int x = sinf(radius)*len;
int y = cosf(radius)*len;
//truePosition +
float t = 0.75;
WorldMapBoundQuad *q = new WorldMapBoundQuad(Vector(x, y, 0));
q->setTexture("particles/glow");
@ -257,16 +248,15 @@ protected:
q->color = color;
q->scale = Vector(pscale, pscale);
//q->fadeAlphaWithLife = 1;
q->setLife(1);
q->setDecayRate(1.0f/t);
q->setBlendType(BLEND_ADD);
addChild(q, PM_POINTER);
//std::ostringstream os;
//os << "children: " << children.size();
//debugLog(os.str());
}
else
{
@ -276,9 +266,6 @@ protected:
/*
*/
}
};
@ -295,41 +282,26 @@ public:
blinkTimer = 0;
alphaMod = 0.66;
canMove = gemData->canMove;
//canMove = true;
//gemData->userString = "HI THERE!";
std::string useString = gemData->userString;
/*
if (gemData->userString.empty())
{
if (gemData->name == "savepoint")
useString = "Memory Crystal";
if (gemData->name == "cook")
useString = "Kitchen";
}
*/
/*
text = new BitmapText(&dsq->smallFont);
text->position = Vector(0, -20);
text->setText(gemData->userString);
addChild(text, PM_POINTER);
*/
text = new TTFText(&dsq->fontArialSmall);//new DebugFont(10, useString);
text->offset = Vector(0, 4); //Vector(0,5);
text = new TTFText(&dsq->fontArialSmall);
text->offset = Vector(0, 4);
text->setText(useString);
text->setAlign(ALIGN_CENTER);
textBG = new RoundedRect();
textBG->setWidthHeight(text->getActualWidth() + 20, 25, 10); // 30
textBG->setWidthHeight(text->getActualWidth() + 20, 25, 10);
textBG->alpha = 0;
textBG->followCamera = 1;
game->addRenderObject(textBG, LR_WORLDMAPHUD);
textBG->addChild(text, PM_POINTER);
//game->addRenderObject(text, LR_WORLDMAPHUD);
}
void destroy()
@ -348,32 +320,16 @@ public:
{
this->blink = blink;
//if (blink)
//{
// scale = Vector(0.5, 0.5);
// scale.interpolateTo(Vector(1,1), 0.5, -1, 1);
// /*
// alpha = 0.5;
// alpha.interpolateTo(1, 0.5, -1, 1);
// */
//}
//else
//{
// scale.stop();
// scale = Vector(1,1);
// /*
// alpha.stop();
// alpha = 1;
// */
//}
}
bool canMove;
protected:
float blinkTimer;
bool blink;
GemData *gemData;
//BitmapText *text;
TTFText *text;
RoundedRect *textBG;
void onUpdate(float dt)
@ -386,7 +342,7 @@ protected:
sz.x = sz.y = zoomMin;
if (sz.x > zoomMax)
sz.x = sz.y = zoomMax;
if (sz.x > 1.0f)
{
scale.x = (1.0f/sz.x);
@ -421,22 +377,22 @@ protected:
{
core->sound->playSfx("Gem-Move");
mover = this;
//offset = Vector(position - core->mouse.position);
//position += core->mouse.position - wp;
//offset = Vector(0, 4);
}
}
else if (mover == this)
{
//position = core->mouse.position;
position += (core->mouse.position - wp)/parent->scale.x;
if (!core->mouse.buttons.left)
{
mover = 0;
core->sound->playSfx("Gem-Place");
//position += offset;
//offset = Vector(0,0);
//offset = Vector(0,0);
gemData->pos = position;
}
}
@ -450,20 +406,14 @@ protected:
if ((core->mouse.position - wp).isLength2DIn(GEM_GRAB))
{
//text->alpha.interpolateTo(1, 0.1);
/*
if (!gemData->userString.empty())
textBG->alpha.interpolateTo(1, 0.1);
*/
if (!gemData->userString.empty())
textBG->show();
}
else
{
/*
text->alpha.interpolateTo(0, 0.1);
textBG->alpha.interpolateTo(0, 0.1);
*/
if (textBG->alpha == 1)
textBG->hide();
}
@ -502,7 +452,6 @@ void WorldMapRender::setProperTileColor(WorldMapTile *tile)
}
}
#ifdef AQUARIA_BUILD_MAPVIS
static void tileDataToVis(WorldMapTile *tile, Vector **vis)
{
@ -615,24 +564,16 @@ static void resetTileAlpha(WorldMapTile *tile, const unsigned char *savedTexData
tile->q->texture->write(0, 0, tile->q->texture->width, tile->q->texture->height, savedTexData);
}
#endif // AQUARIA_BUILD_MAPVIS
void WorldMapRender::setVis(WorldMapTile *tile)
{
if (!tile) return;
#ifdef AQUARIA_BUILD_MAPVIS
/*
if (lastVisQuad)
{
lastVisQuad->alphaMod = 0.5;
lastVisQuad->color = Vector(0.7, 0.8, 1);
}
*/
tile->q->color = Vector(1,1,1);
tile->q->alphaMod = 1;
if (visMethod == VIS_VERTEX)
{
tile->q->setSegs(MAPVIS_SUBDIV, MAPVIS_SUBDIV, 0, 0, 0, 0, 2.0, 1);
@ -645,13 +586,11 @@ void WorldMapRender::setVis(WorldMapTile *tile)
lastVisQuad = tile->q;
lastVisTile = tile;
#endif
}
void WorldMapRender::clearVis(WorldMapTile *tile)
{
if (!tile) return;
#ifdef AQUARIA_BUILD_MAPVIS
if (visMethod == VIS_VERTEX)
{
if (tile->q)
@ -666,7 +605,6 @@ void WorldMapRender::clearVis(WorldMapTile *tile)
savedTexData = 0;
}
}
#endif
}
@ -704,19 +642,7 @@ WorldMapRender::WorldMapRender() : RenderObject(), ActionMapper()
savedTexData = 0;
/*
bg = new Quad("", Vector(400,300));
bg->setWidthHeight(810, 610);
bg->setSegs(32, 32, 0.5, 0.5, 0.008, 0.008, 2.0, 1);
bg->alphaMod = 0.5;
bg->alpha = 0;
bg->followCamera = 1;
bg->repeatTextureToFill(true);
//bg->parentManagedPointer = 1;
dsq->game->addRenderObject(bg, LR_MESSAGEBOX);
bg->renderQuad = false;
*/
int num = dsq->continuity.worldMap.getNumWorldMapTiles();
std::string n = dsq->game->sceneName;
@ -750,7 +676,7 @@ WorldMapRender::WorldMapRender() : RenderObject(), ActionMapper()
q->alphaMod = 0;
tile->q = q;
q->setWidthHeight(q->getWidth()*tile->scale, q->getHeight()*tile->scale);
q->scale = Vector(0.25f*tile->scale2, 0.25f*tile->scale2);
@ -769,7 +695,7 @@ WorldMapRender::WorldMapRender() : RenderObject(), ActionMapper()
activeTile->q->color = Vector(1,1,1);
activeTile->q->alphaMod = 1;
}
addChild(q, PM_POINTER);
tiles.push_back(q);
@ -789,14 +715,14 @@ WorldMapRender::WorldMapRender() : RenderObject(), ActionMapper()
tophud->alpha = 0;
dsq->game->addRenderObject(tophud, LR_WORLDMAPHUD);
//int fontSize = 6;
float aly = 26, aly2 = 18;
float sz = 0.6;
//hover
areaLabel = new BitmapText(&dsq->smallFont);
areaLabel->scale = Vector(sz,sz);
//areaLabel->setFontSize(fontSize);
areaLabel->setAlign(ALIGN_CENTER);
areaLabel->followCamera = 1;
areaLabel->position = Vector(150,aly);
@ -805,7 +731,7 @@ WorldMapRender::WorldMapRender() : RenderObject(), ActionMapper()
//in
areaLabel2 = new BitmapText(&dsq->smallFont);
//areaLabel2->setFontSize(fontSize);
areaLabel2->scale = Vector(sz,sz);
areaLabel2->followCamera = 1;
areaLabel2->setAlign(ALIGN_CENTER);
@ -816,7 +742,7 @@ WorldMapRender::WorldMapRender() : RenderObject(), ActionMapper()
//select
areaLabel3 = new BitmapText(&dsq->smallFont);
areaLabel3->scale = Vector(sz,sz);
//areaLabel3->setFontSize(fontSize);
areaLabel3->followCamera = 1;
areaLabel3->setAlign(ALIGN_CENTER);
areaLabel3->position = Vector(650, aly);
@ -831,9 +757,9 @@ WorldMapRender::WorldMapRender() : RenderObject(), ActionMapper()
originalActiveTile = activeTile;
bindInput();
underlay = new Gradient;
//underlay->makeVertical(Vector(0.5,0.5,1), Vector(0,0,0.5));
underlay->makeVertical(Vector(0.25,0.25,0.5), Vector(0,0,0.25));
underlay->position = Vector(400,300);
underlay->autoWidth = AUTO_VIRTUALWIDTH;
@ -852,14 +778,14 @@ WorldMapRender::WorldMapRender() : RenderObject(), ActionMapper()
addHintQuad2->alpha = 0;
dsq->game->addRenderObject(addHintQuad2, LR_WORLDMAPHUD);
//helpButton->event.set(MakeFunctionEvent(WorldMapRender, onToggleHelpScreen));
helpButton = new AquariaMenuItem;
helpButton->event.setActionMapperCallback(this, ACTION_TOGGLEHELPSCREEN, 0);
helpButton->useQuad("gui/icon-help");
helpButton->useGlow("particles/glow", 40, 40);
helpButton->useSound("Click");
helpButton->alpha = 0;
//helpButton->position = Vector(800-20, 20);
dsq->game->addRenderObject(helpButton, LR_WORLDMAPHUD);
}
@ -886,7 +812,7 @@ void WorldMapRender::bindInput()
void WorldMapRender::destroy()
{
//clearVis(activeTile);
for (int i = 0; i < dsq->continuity.worldMap.getNumWorldMapTiles(); i++)
{
WorldMapTile *tile = dsq->continuity.worldMap.getWorldMapTile(i);
@ -939,7 +865,7 @@ void WorldMapRender::onUpdate(float dt)
if (alpha.x > 0)
{
//if (activeTile && activeTile==originalActiveTile && !gemMovers.empty())
if (originalActiveTile && !gemMovers.empty())
{
gemMovers.back()->position = getAvatarWorldMapPosition();
@ -975,7 +901,7 @@ void WorldMapRender::onUpdate(float dt)
if (q)
{
d = (q->getWorldPosition() - core->mouse.position).getSquaredLength2D();
if (q->isCoordinateInsideWorld(core->mouse.position) && (sd == -1 || d < sd))
{
sd = d;
@ -993,7 +919,7 @@ void WorldMapRender::onUpdate(float dt)
{
areaLabel3->setText(dsq->continuity.stringBank.get(activeTile->stringIndex));
}
if (selectedTile)
{
areaLabel->setText(dsq->continuity.stringBank.get(selectedTile->stringIndex));
@ -1009,7 +935,7 @@ void WorldMapRender::onUpdate(float dt)
activeTile = selectedTile;
activeQuad = activeTile->q;
//activeTile->gridPos = activeTile->q->position;
if (activeQuad)
{
dsq->clickRingEffect(activeQuad->getWorldPosition(), 0);
@ -1126,7 +1052,7 @@ void WorldMapRender::onUpdate(float dt)
zoomMax = exteriorZoomMax;
}
float scrollAmount = 0.2;//0.25;
float scrollAmount = 0.2;
if (core->mouse.scrollWheelChange)
{
@ -1219,7 +1145,6 @@ void WorldMapRender::onUpdate(float dt)
}
else
{
#ifdef AQUARIA_BUILD_MAPVIS
if (!dsq->isInCutscene() && dsq->game->avatar && activeTile
#ifdef AQUARIA_BUILD_SCENEEDITOR
&& !dsq->game->sceneEditor.isOn()
@ -1261,7 +1186,6 @@ void WorldMapRender::onUpdate(float dt)
}
}
}
#endif
}
lastMousePosition = core->mouse.position;
@ -1357,7 +1281,7 @@ void WorldMapRender::toggle(bool turnON)
if (alpha.isInterpolating()) return;
if (dsq->mod.isActive() && !dsq->mod.hasWorldMap()) return;
if (dsq->isNested()) return;
if (!dsq->game->avatar) return;
@ -1367,7 +1291,7 @@ void WorldMapRender::toggle(bool turnON)
if (dsq->game->isInGameMenu()) return;
if (!dsq->game->isActive()) return;
if (turnON && dsq->game->isPaused()) return;
if (!this->on && !dsq->game->avatar->isInputEnabled()) return;
@ -1387,7 +1311,7 @@ void WorldMapRender::toggle(bool turnON)
{
restoreVel = dsq->game->avatar->vel;
dsq->game->avatar->vel = Vector(0,0,0);
//dsq->game->avatar->idle();
dsq->game->togglePause(true);
core->sound->playSfx("menu-open");
@ -1435,23 +1359,23 @@ void WorldMapRender::toggle(bool turnON)
alpha.interpolateTo(1, 0.2);
//dsq->game->hudUnderlay->alpha.interpolateTo(WORLDMAP_UNDERLAY_ALPHA, 0.2);
underlay->alpha.interpolateTo(WORLDMAP_UNDERLAY_ALPHA, 0.2);
addHintQuad1->alpha.interpolateTo(1.0, 0.2);
addHintQuad2->alpha.interpolateTo(1.0, 0.2);
helpButton->alpha.interpolateTo(1.0, 0.2);
addAllGems();
for (Continuity::Beacons::reverse_iterator i = dsq->continuity.beacons.rbegin(); i != dsq->continuity.beacons.rend(); i++)
{
if ((*i).on)
{
BeaconRender *b = new BeaconRender(&(*i));
//b->position = (*i).pos;
//game->addRenderObject(b, layer+1);
addChild(b, PM_POINTER);
beaconRenders.push_back(b);
}
@ -1496,14 +1420,6 @@ void WorldMapRender::toggle(bool turnON)
}
//setVis(activeTile);
/*
for (int i = 0; i < LR_MENU; i++)
{
RenderObjectLayer *rl = dsq->getRenderObjectLayer(i);
rl->visible = true;
}
*/
core->sound->playSfx("Menu-Close");
@ -1513,7 +1429,7 @@ void WorldMapRender::toggle(bool turnON)
alpha.interpolateTo(0, 0.2);
dsq->game->togglePause(false);
//dsq->game->hudUnderlay->alpha.interpolateTo(0, 0.2);
underlay->alpha.interpolateTo(0, 0.2);
addHintQuad1->alpha.interpolateTo(0, 0.2);
addHintQuad2->alpha.interpolateTo(0, 0.2);
@ -1522,14 +1438,14 @@ void WorldMapRender::toggle(bool turnON)
for (GemMovers::iterator i = gemMovers.begin(); i != gemMovers.end(); i++)
{
//removeChild(*i);
(*i)->safeKill();
}
gemMovers.clear();
for (BeaconRenders::iterator i = beaconRenders.begin(); i != beaconRenders.end(); i++)
{
//removeChild(*i);
(*i)->safeKill();
}
beaconRenders.clear();
@ -1546,7 +1462,7 @@ void WorldMapRender::createGemHint(const std::string &gfx)
doubleClickTimer = 0;
GemData *g = dsq->continuity.pickupGem(gfx, false);
g->canMove = 1;
g->pos = getAvatarWorldMapPosition();// + Vector(0, -20);
g->pos = getAvatarWorldMapPosition();
g->userString = useString;
addGem(g);
fixGems();
@ -1614,25 +1530,6 @@ void WorldMapRender::action (int id, int state)
}
/*
if (id == ACTION_PRIMARY && state)
{
if (doubleClickTimer > 0)
{
doubleClickTimer = 0;
GemData *g = dsq->continuity.pickupGem("pyramidyellow", false);
g->canMove = 1;
g->userString = dsq->getUserInputString("Enter Map Hint Name:", "");
addGem(g);
}
else
{
if (doubleClickTimer == 0)
{
doubleClickTimer = DOUBLE_CLICK_DELAY;
}
}
}
*/
}
}

View file

@ -255,7 +255,7 @@ void WorldMap::_load(const std::string &file)
std::string line;
InStream in(file.c_str());
while (std::getline(in, line))
{
WorldMapTile t;
@ -337,18 +337,8 @@ WorldMapTile *WorldMap::getWorldMapTileByIndex(int index)
return 0;
}
/*
void WorldMap::revealMapIndex(int index)
{
if (index < 0 || index >= worldMapTiles.size()) return;
worldMapTiles[index].revealed = true;
}
*/
void WorldMap::hideMap()
{
for (int i = 0; i < worldMapTiles.size(); i++)

View file

@ -13,53 +13,11 @@ but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#include "ActionMapper.h"
#include "Core.h"
//bool ActionMapper::isActing(const std::string &action)
//{
// ButtonList::iterator i = actionMap[action].begin();
// for (; i != actionMap[action].end(); i++)
// {
// if (keyDownMap[(*i)])
// return true;
// }
// return false;
// //return keyDownMap[actionMap[action]];
//}
//bool ActionMapper::isActing(int actionID)
//{
// std::string action = "A";
// action[0] = char(actionID);
// ButtonList::iterator i = actionMap[action].begin();
// for (; i != actionMap[action].end(); i++)
// {
// if (keyDownMap[(*i)])
// return true;
// }
// return false;
// //return keyDownMap[actionMap[action]];
//}
//void ActionMapper::addAction (const std::string &action, int k)
//{
// actionMap[action].push_back(k);
// keyDownMap[k] = core->getKeyState(k);
//}
//
//void ActionMapper::addAction (int actionID, int k)
//{
// std::string action = "A";
// action[0] = char(actionID);
// actionMap[action].push_back(k);
// keyDownMap[k] = core->getKeyState(k);
//}
ActionMapper::ActionMapper()
{
@ -104,11 +62,7 @@ void ActionMapper::addAction (int actionID, int k)
if (ad)
{
/*
std::ostringstream os;
os << "Action ID [" << actionID << "] already exists!";
debugLog(os.str());
*/
}
else
{
@ -166,55 +120,7 @@ void ActionMapper::clearCreatedEvents()
createdEvents.clear();
}
/*
void ActionMapper::addMouseButtonAction (const std::string &action, int b)
{
actionMap[action].push_back (0-b);
keyDownMap[0-b] = mouse_b & b;
}
void ActionMapper::addJoystickButtonAction (const std::string &action, int b)
{
if (num_joysticks)
{
actionMap[action].push_back (b+9000);
keyDownMap[b+9000] = joy[0].button[b].b;
}
}
int ActionMapper::getDPad(int dir)
{
// for (int = 0; i < joy[0].num_sticks; i++)
//int s = 4;
int s = 0;
switch (dir)
{
case 0:
return (joy[0].stick[s].axis[0].d1);
break;
case 1:
return (joy[0].stick[s].axis[0].d2);
break;
case 2:
return (joy[0].stick[s].axis[1].d1);
break;
case 3:
return (joy[0].stick[s].axis[1].d2);
break;
}
return 0;
}
void ActionMapper::addJoystickDPadAction (const std::string &action, int dir)
{
if (num_joysticks)
{
actionMap[action].push_back (dir+8000);
keyDownMap[dir+8000] = getDPad(dir);
}
}
*/
void ActionMapper::enableInput()
{
@ -235,7 +141,7 @@ void ActionMapper::removeAction(int actionID)
for (; i != ad->buttonList.end(); i++)
{
int k = (*i);
cleared = true; // it's a hack, but it works
cleared = true; // it's a hack, but it works
keyDownMap.erase(k);
}
for (ActionDataSet::iterator i = actionData.begin(); i != actionData.end();)
@ -248,19 +154,7 @@ void ActionMapper::removeAction(int actionID)
}
}
//int ActionMapper::getKeyForAction (std::string action)
//{
// ButtonList b = actionMap[action];
// if (!b.empty())
// {
// return b[0];
// }
// else
// {
// debugLog ("no action: " +action);
// return -1;
// }
//}
bool ActionMapper::pollAction(int actionID)
{
@ -272,7 +166,7 @@ bool ActionMapper::pollAction(int actionID)
ButtonList *blist = &ad->buttonList;
ButtonList::iterator j;
j = blist->begin();
for (; j != blist->end(); j++)
{
if (getKeyState((*j)))
@ -316,11 +210,11 @@ bool ActionMapper::getKeyState(int k)
else if (k == MOUSE_BUTTON_MIDDLE)
{
keyState = (core->mouse.buttons.middle == DOWN);
}
}
else if (k >= JOY1_BUTTON_0 && k <= JOY1_BUTTON_16)
{
int v = k - JOY1_BUTTON_0;
if (core->joystickEnabled)
keyState = core->joystick.buttons[v];
}
@ -369,13 +263,10 @@ bool ActionMapper::getKeyState(int k)
}
void ActionMapper::onUpdate (float dt)
{
{
if (inUpdate) return;
inUpdate = true;
/*
if (num_joysticks)
poll_joystick();
*/
if (cleared) cleared = false;
ActionDataSet::iterator i;
KeyDownMap oldKeyDownMap = keyDownMap;
@ -392,7 +283,7 @@ void ActionMapper::onUpdate (float dt)
keyState = getKeyState(k);
if (keyState != oldKeyDownMap[k])
{
{
keyDownMap[k] = keyState;
if (inputEnabled)
{
@ -417,7 +308,7 @@ void ActionMapper::onUpdate (float dt)
out:
inUpdate = false;
// keyDownMap[k] = ;
}
void ActionMapper::clearActions()

View file

@ -44,45 +44,37 @@ struct ActionData
class ActionMapper
{
public:
// funcs
ActionMapper();
virtual ~ActionMapper();
//void addAction (const std::string &action, int k);
void addAction(Event *event, int k, int state=-1);
void addAction(int actionID, int k);
/*
void addMouseButtonAction (const std::string &action, int b);
void addJoystickButtonAction (const std::string &action, int b);
void addJoystickDPadAction (const std::string &action, int dir);
int getDPad(int dir);
*/
void removeAction(int actionID);
void removeAllActions();
bool isActing(int actionID);
virtual void action(int actionID, int state){}
void clearActions();
bool isInputEnabled() { return inputEnabled; }
// vars
typedef std::list<ActionData> ActionDataSet;
ActionDataSet actionData;
typedef std::map <int, int> KeyDownMap;
KeyDownMap keyDownMap;
bool cleared;
//typedef std::map <std::string, int> StringIntMap;
//StringIntMap stateCheckMap;
enum {
MOUSE_BUTTON_LEFT = 999,
MOUSE_BUTTON_RIGHT = 1000,
@ -106,7 +98,7 @@ public:
JOY1_BUTTON_15 = 2015,
JOY1_BUTTON_16 = 2016,
//JOY1_BUTTON_X360_START=2011,
X360_BTN_START = 3016,
X360_BTN_BACK = 3017,
@ -122,13 +114,13 @@ public:
enum { DPAD_LEFT = 0, DPAD_RIGHT, DPAD_UP, DPAD_DOWN };
//int getKeyForAction(std::string action);
virtual void enableInput();
virtual void disableInput();
/*void loadActionSet(const std::string &fn);*/
//nasty hack
//void forceUpdate(float dt);
Event *addCreatedEvent(Event *event);
void clearCreatedEvents();
@ -149,4 +141,3 @@ protected:

View file

@ -38,68 +38,7 @@ ActionInput *ActionSet::getActionInputByName(const std::string &name)
return 0;
}
//void ActionSet::loadAction(const std::string &name, int inputCode, InputSetType set)
//{
// ActionInput *a = getActionInputByName(name);
// if (!a)
// {
// ActionInput newa;
// newa.name = name;
// inputSet.push_back(newa);
// a = getActionInputByName(name);
//
// if (!a) return;
// }
//
// switch(set)
// {
// case INPUTSET_KEY:
// a->keyCodes.push_back(inputCode);
// break;
// case INPUTSET_JOY:
// a->joyCodes.push_back(inputCode);
// break;
// case INPUTSET_MOUSE:
// a->mouseCodes.push_back(inputCode);
// break;
// case INPUTSET_GENERAL:
// default:
// a->inputCodes.push_back(inputCode);
// break;
// }
//}
//
//void ActionSet::loadAction(const std::string &name, const std::vector<int> &inputCodes, InputSetType set)
//{
//
// ActionInput *a = getActionInputByName(name);
// if (!a)
// {
// ActionInput newa;
// newa.name = name;
// inputSet.push_back(newa);
// a = getActionInputByName(name);
//
// if (!a) return;
// }
//
// switch(set)
// {
// case INPUTSET_KEY:
// a->keyCodes = inputCodes;
// break;
// case INPUTSET_JOY:
// a->joyCodes = inputCodes;
// break;
// case INPUTSET_MOUSE:
// a->mouseCodes = inputCodes;
// break;
// case INPUTSET_GENERAL:
// default:
// a->inputCodes = inputCodes;
// break;
// }
//}
void ActionSet::importAction(ActionMapper *mapper, const std::string &name, int actionID)
{
@ -168,7 +107,7 @@ ActionInput *ActionSet::addActionInput(const std::string &name)
std::string ActionSet::insertInputIntoString(const std::string &string)
{
std::string str = string;
int start = str.find('{');
int end = str.find('}');
if (start == std::string::npos || end == std::string::npos)
@ -177,18 +116,18 @@ std::string ActionSet::insertInputIntoString(const std::string &string)
stringToLower(code);
std::string part1 = str.substr(0, start);
std::string part3 = str.substr(end+1, str.size());
//{ToggleHelp:k0}
int thing = code.find(':');
std::string input = code.substr(0, thing);
std::string button = code.substr(thing+1, code.size());
char buttonType;
int buttonNum;
std::istringstream is(button);
is >> buttonType >> buttonNum;
ActionInput *actionInput=0;
actionInput = getActionInputByName(input);
if (!actionInput)
@ -209,7 +148,7 @@ std::string ActionSet::insertInputIntoString(const std::string &string)
inputCode = actionInput->mse[buttonNum];
break;
}
std::string part2 = getInputCodeToUserString(inputCode);
return part1 + part2 + part3;
}

View file

@ -39,13 +39,12 @@ public:
ActionInput *addActionInput(const std::string &name);
//void loadAction(const std::string &name, int inputCode, InputSetType set);
//void loadAction(const std::string &name, const std::vector<int> &inputCodes, InputSetType set=INPUTSET_GENERAL);
ActionInput *getActionInputByName(const std::string &name);
ActionInputSet inputSet;
std::string insertInputIntoString(const std::string &string);
};

View file

@ -19,7 +19,7 @@ along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#include "AfterEffect.h"
//#include "math.h"
#include <assert.h>
@ -76,7 +76,7 @@ AfterEffectManager::~AfterEffectManager()
for (i = 0; i < xDivs; i++)
{
delete[] drawGrid[i];
}
}
delete[] drawGrid;
}
deleteEffects();
@ -128,7 +128,7 @@ void AfterEffectManager::clear()
void AfterEffectManager::update(float dt)
{
if (core->particlesPaused) return;
if (core->particlesPaused) return;
resetGrid();
@ -138,7 +138,7 @@ void AfterEffectManager::update(float dt)
active = false;
for (int i = 0; i < effects.size(); i++)
{
{
Effect *e = effects[i];
if (e)
{
@ -177,7 +177,6 @@ void AfterEffectManager::render()
{
assert(core->frameBuffer.isInited());
#ifdef BBGE_BUILD_OPENGL
glPushMatrix();
glDisable (GL_ALPHA_TEST);
@ -189,14 +188,12 @@ void AfterEffectManager::render()
glColor4f(1,1,1,1);
renderGrid();
//renderGridPoints();
glPopMatrix();
#endif
}
void AfterEffectManager::renderGrid()
{
#ifdef BBGE_BUILD_OPENGL
int firstShader = -1;
int lastShader = -1;
@ -237,29 +234,29 @@ void AfterEffectManager::renderGrid()
backupBuffer.startCapture();
}
//float div = xDivs;
for (int i = 0; i < (xDivs-1); i++)
{
for (int j = 0; j < (yDivs-1); j++)
{
glBegin(GL_QUADS);
//glColor3f(i/div, i/div, i/div);
{
glBegin(GL_QUADS);
glTexCoord2f(i/(float)(xDivs-1)*percentX, 1*percentY-(j)/(float)(yDivs-1)*percentY);
//glMultiTexCoord2fARB(GL_TEXTURE0_ARB,i/(float)(xDivs-1)*percentX, 1*percentY-(j)/(float)(yDivs-1)*percentY);
//glMultiTexCoord2fARB(GL_TEXTURE1_ARB,0,0);
glVertex2f(offx + vw*drawGrid[i][j].x, offy + vh*drawGrid[i][j].y);
glTexCoord2f(i/(float)(xDivs-1)*percentX, 1*percentY-(j+1)/(float)(yDivs-1)*percentY);
//glMultiTexCoord2fARB(GL_TEXTURE0_ARB,i/(float)(xDivs-1)*percentX, 1*percentY-(j+1)/(float)(yDivs-1)*percentY);
//glMultiTexCoord2fARB(GL_TEXTURE1_ARB,0,(float)(screenHeight/(yDivs-1))/16);
glVertex2f(offx + vw*drawGrid[i][j+1].x, offy + vh*drawGrid[i][j+1].y);
glTexCoord2f((i+1)/(float)(xDivs-1)*percentX, 1*percentY-(j+1)/(float)(yDivs-1)*percentY);
//glMultiTexCoord2fARB(GL_TEXTURE0_ARB,(i+1)/(float)(xDivs-1)*percentX, 1*percentY-(j+1)/(float)(yDivs-1)*percentY);
//glMultiTexCoord2fARB(GL_TEXTURE1_ARB,(float)(screenWidth/(xDivs-1))/16,(float)(screenHeight/(yDivs-1))/16);
glTexCoord2f((i+1)/(float)(xDivs-1)*percentX, 1*percentY-(j+1)/(float)(yDivs-1)*percentY);
glVertex2f(offx + vw*drawGrid[i+1][j+1].x, offy + vh*drawGrid[i+1][j+1].y);
glTexCoord2f((i+1)/(float)(xDivs-1)*percentX, 1*percentY-(j)/(float)(yDivs-1)*percentY);
//glMultiTexCoord2fARB(GL_TEXTURE0_ARB,(i+1)/(float)(xDivs-1)*percentX, 1*percentY-(j)/(float)(yDivs-1)*percentY);
//glMultiTexCoord2fARB(GL_TEXTURE1_ARB,(float)(screenWidth/(xDivs-1))/16,0);
glVertex2f(offx + vw*drawGrid[i+1][j].x, offy + vh*drawGrid[i+1][j].y);
glTexCoord2f((i+1)/(float)(xDivs-1)*percentX, 1*percentY-(j)/(float)(yDivs-1)*percentY);
glVertex2f(offx + vw*drawGrid[i+1][j].x, offy + vh*drawGrid[i+1][j].y);
glEnd();
}
}
@ -296,7 +293,7 @@ void AfterEffectManager::renderGrid()
activeShader->bind();
activeShader->setInt("tex", 0);
// note that offx, offy are negative here!
glBegin(GL_QUADS);
glTexCoord2d(0.0f, 0.0f);
@ -308,7 +305,7 @@ void AfterEffectManager::renderGrid()
glTexCoord2d(0.0f, percentY);
glVertex3f(offx, offy, 0.0f);
glEnd();
activeShader->unbind();
}
}
@ -322,8 +319,8 @@ void AfterEffectManager::renderGrid()
for (int i = 0; i < (xDivs-1); i++)
{
for (int j = 0; j < (yDivs-1); j++)
{
glBegin(GL_POINTS);
{
glBegin(GL_POINTS);
//glColor3f(i/div, i/div, i/div);
glTexCoord2f(i/(float)(xDivs-1)*percentX, 1*percentY-(j)/(float)(yDivs-1)*percentY);
//glMultiTexCoord2fARB(GL_TEXTURE0_ARB,i/(float)(xDivs-1)*percentX, 1*percentY-(j)/(float)(yDivs-1)*percentY);
@ -333,17 +330,17 @@ void AfterEffectManager::renderGrid()
//glMultiTexCoord2fARB(GL_TEXTURE0_ARB,i/(float)(xDivs-1)*percentX, 1*percentY-(j+1)/(float)(yDivs-1)*percentY);
//glMultiTexCoord2fARB(GL_TEXTURE1_ARB,0,(float)(screenHeight/(yDivs-1))/16);
glVertex2f(800*drawGrid[i][j+1].x, 600*drawGrid[i][j+1].y);
glTexCoord2f((i+1)/(float)(xDivs-1)*percentX, 1*percentY-(j+1)/(float)(yDivs-1)*percentY);
//glMultiTexCoord2fARB(GL_TEXTURE0_ARB,(i+1)/(float)(xDivs-1)*percentX, 1*percentY-(j+1)/(float)(yDivs-1)*percentY);
//glMultiTexCoord2fARB(GL_TEXTURE1_ARB,(float)(screenWidth/(xDivs-1))/16,(float)(screenHeight/(yDivs-1))/16);
glTexCoord2f((i+1)/(float)(xDivs-1)*percentX, 1*percentY-(j+1)/(float)(yDivs-1)*percentY);
//glMultiTexCoord2fARB(GL_TEXTURE0_ARB,(i+1)/(float)(xDivs-1)*percentX, 1*percentY-(j+1)/(float)(yDivs-1)*percentY);
//glMultiTexCoord2fARB(GL_TEXTURE1_ARB,(float)(screenWidth/(xDivs-1))/16,(float)(screenHeight/(yDivs-1))/16);
glVertex2f(800*drawGrid[i+1][j+1].x, 600*drawGrid[i+1][j+1].y);
glTexCoord2f((i+1)/(float)(xDivs-1)*percentX, 1*percentY-(j)/(float)(yDivs-1)*percentY);
//glMultiTexCoord2fARB(GL_TEXTURE0_ARB,(i+1)/(float)(xDivs-1)*percentX, 1*percentY-(j)/(float)(yDivs-1)*percentY);
//glMultiTexCoord2fARB(GL_TEXTURE1_ARB,(float)(screenWidth/(xDivs-1))/16,0);
glVertex2f(800*drawGrid[i+1][j].x, 600*drawGrid[i+1][j].y);
glTexCoord2f((i+1)/(float)(xDivs-1)*percentX, 1*percentY-(j)/(float)(yDivs-1)*percentY);
//glMultiTexCoord2fARB(GL_TEXTURE0_ARB,(i+1)/(float)(xDivs-1)*percentX, 1*percentY-(j)/(float)(yDivs-1)*percentY);
//glMultiTexCoord2fARB(GL_TEXTURE1_ARB,(float)(screenWidth/(xDivs-1))/16,0);
glVertex2f(800*drawGrid[i+1][j].x, 600*drawGrid[i+1][j].y);
glEnd();
}
}
}
*/
//glDisable(GL_TEXTURE_2D);
@ -352,15 +349,13 @@ void AfterEffectManager::renderGrid()
//bwShader.unbind();
//glActiveTextureARB(GL_TEXTURE0_ARB);
//glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
//glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
//if (bRenderGridPoints)
// renderGridPoints();
#endif
}
void AfterEffectManager::renderGridPoints()
{
#ifdef BBGE_BUILD_OPENGL
glColor4f(0.0f,0.0f,0.0f,1.0f);
for (int i = 0; i < (xDivs); i++)
{
@ -374,7 +369,6 @@ void AfterEffectManager::renderGridPoints()
glEnd();
}
}
#endif
}
void AfterEffectManager::unloadDevice()
@ -438,31 +432,15 @@ void AfterEffectManager::addEffect(Effect *e)
effects.push_back(e);
}
numEffects++;
//float lowest = 9999;
Vector base(0,0,0);
//Vector *newPos = &base;
//Vector *v;
e->position.x /= screenWidth;
//e->position.x *= xDivs;
e->position.y /= screenHeight;
//e->position.y *= yDivs;
/*
for (int x = 1; x < xDivs-1; x++)
{
for (int y = 1; y < yDivs-1; y++)
{
v = &drawGrid[x][y];
float dist = (v->x - e->position.x)*(v->x - e->position.x)+(v->y - e->position.y)*(v->y - e->position.y);
if (dist < lowest)
{
lowest = dist;
newPos = &drawGrid[x][y];
}
}
}
e->position = Vector(newPos->x, newPos->y, newPos->z);
*/
Vector base(0,0,0);
e->position.x /= screenWidth;
e->position.y /= screenHeight;
}
@ -471,18 +449,13 @@ void ShockEffect::update(float dt, Vector ** drawGrid, int xDivs, int yDivs)
{
dt *= timeMultiplier;
Effect::update(dt, drawGrid, xDivs, yDivs);
//GLdouble sx, sy,sz;
/*
gluProject(position.x,position.y,position.z,
nCameraPointer->modelMatrix,nCameraPointer->projMatrix,nCameraPointer->viewport,
&sx,&sy,&sz); // Find out where the light is on the screen.
centerPoint.Set(sx/(float)nCameraPointer->viewport[2],1-sy/(float)nCameraPointer->viewport[3],sz);
*/
centerPoint = position;
centerPoint -= ((core->screenCenter-originalCenter)*core->globalScale.x)/core->width;
//centerPoint = position/xDivs;
//centerPoint = drawGrid[xDivs/2][yDivs/2];
float xDist,yDist,tDist;
@ -490,8 +463,7 @@ void ShockEffect::update(float dt, Vector ** drawGrid, int xDivs, int yDivs)
currentDistance+=dt*frequency;
//float distFromCamp =(core->cameraPos - position).getLength2D();//v3dDist(nCameraPointer->pos, position);
//if (distFromCamp < 4)
float distFromCamp = 4;
float adjWaveLength = waveLength/distFromCamp;
@ -504,33 +476,21 @@ void ShockEffect::update(float dt, Vector ** drawGrid, int xDivs, int yDivs)
{
for (int j = 1; j < (yDivs-1); j++)
{
/*
Vector p = getNearestPointOnLine(centerPoint, centerPoint + Vector(-200, -200), Vector(drawGrid[i][j].x*core->width, drawGrid[i][j].y*core->height));
p.x /= core->width;
p.y /= core->height;
*/
xDist = (centerPoint.x - drawGrid[i][j].x)/.75;
yDist = centerPoint.y - drawGrid[i][j].y;
/*
xDist = (p.x - drawGrid[i][j].x)/.75;
yDist = p.y - drawGrid[i][j].y;
*/
//xDist = 1;
//yDist = 2;
tDist = sqrtf(xDist*xDist+yDist*yDist);
//drawGrid[i][j].x += (rand()%100)/10000.0f;
//drawGrid[i][j].y += (rand()%100)/10000.0f;
if (tDist < currentDistance*adjWaveLength)
{
//drawGrid[i][j].x += rand()%50;
//drawGrid[i][j].y += rand()%50;
drawGrid[i][j].x += adjAmplitude*sinf(-tDist/adjWaveLength+currentDistance)*.75f;
drawGrid[i][j].y += adjAmplitude*cosf(-tDist/adjWaveLength+currentDistance);
}
@ -546,20 +506,9 @@ RippleEffect::RippleEffect() : Effect()
void RippleEffect::update(float dt, Vector ** drawGrid, int xDivs, int yDivs)
{
/*
// whole screen roll
time += dt;
float amp = 0.01;
for (int i = 0; i < (xDivs-1); i++)
{
for (int j = 0; j < (yDivs-1); j++)
{
float offset = +i/float(xDivs) +j/float(xDivs);
//drawGrid[i][j].x += sinf(time+offset)*amp;
drawGrid[i][j].y += cosf((time+offset)*2.5f)*amp;
}
}
*/
time += dt*0.5f;
float amp = 0.002;
for (int i = 0; i < (xDivs-1); i++)
@ -567,7 +516,7 @@ void RippleEffect::update(float dt, Vector ** drawGrid, int xDivs, int yDivs)
for (int j = 0; j < (yDivs-1); j++)
{
float offset = i/float(xDivs) + (core->screenCenter.x/float(core->width)/2) +j/float(xDivs) + (core->screenCenter.y/float(core->height)/2);
//drawGrid[i][j].x += sinf(time+offset)*amp;
drawGrid[i][j].x += sinf((time+offset)*7.5f)*(amp*0.5f);
drawGrid[i][j].y += cosf((time+offset)*7.5f)*amp;
}

View file

@ -51,7 +51,7 @@ public:
this->timeMultiplier = timeMultiplier;
}
float timeMultiplier;
//void go();
void update(float dt, Vector ** drawGrid, int xDivs, int yDivs);
float waveLength;

View file

@ -160,7 +160,6 @@ unsigned hash(const std::string &string)
return hash;
}
/* hash * 33 + c */
static unsigned char lowerToUpperTable[256];
@ -351,8 +350,7 @@ bool exists(const std::string &f, bool makeFatal, bool skipVFS)
void drawCircle(float radius, int stepSize)
{
#ifdef BBGE_BUILD_OPENGL
//glDisable(GL_CULL_FACE);
glBegin(GL_POLYGON);
{
@ -363,8 +361,7 @@ void drawCircle(float radius, int stepSize)
}
glEnd();
//glEnable(GL_CULL_FACE);
#endif
}
void exit_error(const std::string &message)
@ -385,9 +382,7 @@ std::string parseCommand(const std::string &line, const std::string &command)
void glColor3_256(int r, int g, int b)
{
#ifdef BBGE_BUILD_OPENGL
glColor4f(float(r)/256.0f, float(g)/256.0f, float(b)/256.0f, 1.0f);
#endif
}
bool chance(int perc)
@ -404,68 +399,7 @@ bool chancef(float p)
return ((rand()%100) <= p*100);
}
/*
PHYSFS_file *openRead(const std::string &f)
{
PHYSFS_file *file = PHYSFS_openRead(f.c_str());
if (!file)
{
errorLog ("Could not open [" + f + "]");
exit(0);
}
return file;
}
void pfread(void *buffer, PHYSFS_uint32 size, PHYSFS_uint32 objs, PHYSFS_file *handle)
{
PHYSFS_read(handle, buffer, size, objs);
}
void pfseek(PHYSFS_file *handle,PHYSFS_uint64 byte,int origin)
{
if (origin == SEEK_CUR)
{
byte += PHYSFS_tell(handle);
}
PHYSFS_seek(handle,byte);
}
void pfclose(PHYSFS_file *handle)
{
PHYSFS_close(handle);
}
std::string pLoadStream(const std::string &filename)
{
PHYSFS_file *f = openRead(filename.c_str());
int len = PHYSFS_fileLength(f);
std::string s;
for (int i = 0; i < len; i++)
{
char p;
PHYSFS_read(f, &p, sizeof(char), 1);
s += p;
}
//std::istringstream is(s);
PHYSFS_close(f);
return s;
}
void pSaveStream(const std::string &filename, std::ostringstream &os)
{
PHYSFS_file *f = PHYSFS_openWrite(filename.c_str());
//int size = os.str().size();
//PHYSFS_write(f, (void*)size, sizeof(int), 1);
PHYSFS_write(f, (void*)os.str().c_str(), sizeof(char)*os.str().size(), 1);
PHYSFS_close(f);
}
*/
void errorLog(const std::string &s)
{
@ -561,29 +495,7 @@ tinyxml2::XMLDocument *readXML(const std::string& fn, tinyxml2::XMLError *perr /
return doc;
}
/*
void pForEachFile(std::string path, std::string type, void callback(const std::string &filename, int param), int param)
{
char **rc = PHYSFS_enumerateFiles(path.c_str());
char **i;
for (i = rc; *i != NULL; i++)
{
std::string s(*i);
int p=0;
if ((p=s.find('.'))!=std::string::npos)
{
std::string ext = s.susbtr(p, s.getLength2D());
if (ext == type)
{
callback(fielnameafhghaha
}
}
}
PHYSFS_freeList(rc);
}
*/
void doSingleFile(const std::string &path, const std::string &type, std::string filename, void callback(const std::string &filename, int param), int param)
{
@ -592,9 +504,9 @@ void doSingleFile(const std::string &path, const std::string &type, std::string
std::string search = filename;
stringToLower(search);
std::string filetype = filename.substr(search.size()-4, search.size());
//stringToUpper(filetype);
//debugLog("comparing: " + filetype + " and: " + type);
//if (filetype==type)
debugLog("checking:" + search + " for type:" + type);
if (search.find(type)!=std::string::npos)
{
@ -725,9 +637,7 @@ void forEachFile(std::string path, std::string type, void callback(const std::st
}
//std::string add = "%s*" + type;
//sprintf(szDir, "%s*", path.c_str());
sprintf(szDir, "%s\\*", path.c_str());
stringToUpper(type);
@ -736,7 +646,7 @@ void forEachFile(std::string path, std::string type, void callback(const std::st
hList = FindFirstFile(szDir, &FileData);
if (hList == INVALID_HANDLE_VALUE)
{
//printf("No files found\n\n");
debugLog("No files of type " + type + " found in path " + path);
}
else
@ -748,13 +658,13 @@ void forEachFile(std::string path, std::string type, void callback(const std::st
// Check the object is a directory or not
//printf("%*s%s\n", indent, "", FileData.cFileName);
std::string filename = FileData.cFileName;
//debugLog("found: " + filename);
if (filename.size()>4)
{
std::string filetype = filename.substr(filename.size()-4, filename.size());
stringToUpper(filetype);
//debugLog("comparing: " + filetype + " and: " + type);
if (filetype==type)
{
callback(path+filename, param);
@ -764,12 +674,7 @@ void forEachFile(std::string path, std::string type, void callback(const std::st
if (!FindNextFile(hList, &FileData))
{
/*
if (GetLastError() == ERROR_NO_MORE_FILES)
{
fFinished = TRUE;
}
*/
fFinished = TRUE;
}
}
@ -810,19 +715,14 @@ std::vector<std::string> getFileList(std::string path, std::string type, int par
std::string filename = FileData.cFileName;
if (filename.size()>4 && filename.substr(filename.size()-4, filename.size())==type)
{
//callback(path+filename, param);
list.push_back (filename);
}
if (!FindNextFile(hList, &FileData))
{
/*
if (GetLastError() == ERROR_NO_MORE_FILES)
{
fFinished = TRUE;
}
*/
fFinished = TRUE;
}
}
@ -883,18 +783,7 @@ Vector getNearestPointOnLine(Vector a, Vector b, Vector c)
return nearest;
}
/*
bool isTouchingLine(Vector lineStart, Vector lineEnd, Vector point, int radius)
{
Vector p = getNearestPointOnLine(lineStart, lineEnd, point);
Vector diff = p - point;
std::ostringstream os;
os << "s(" << lineStart.x << ", " << lineStart.y << ") e(";
os << lineEnd.x << ", " << lineEnd.y << ") - p(" << point.x << ", " << point.y << ")";
debugLog(os.str());
return (diff.getSquaredLength2D() < sqr(radius));
}
*/
bool isTouchingLine(Vector lineStart, Vector lineEnd, Vector point, int radius, Vector *closestP)
{
@ -930,14 +819,12 @@ GLuint generateEmptyTexture(int quality) // Create An Empty Texture
memset(data, 0, size); // Clear Storage Memory
#ifdef BBGE_BUILD_OPENGL
glGenTextures(1, &txtnumber); // Create 1 Texture
glBindTexture(GL_TEXTURE_2D, txtnumber); // Bind The Texture
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, quality, quality, 0,
GL_RGBA, GL_UNSIGNED_BYTE, data); // Build Texture Using Information In data
#endif
delete [] data; // Release data

View file

@ -39,67 +39,25 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#ifdef BBGE_BUILD_WINDOWS
//#include "iprof/prof.h"
//#define BBGE_PROF(x) Prof(x)
#define BBGE_PROF(x)
/*
//#ifdef BBGE_BUILD_DIRECTX
#define DIRECTINPUT_VERSION 0x0800
#include <dinput.h>
//#endif
*/
#else
#define BBGE_PROF(x)
#endif
#ifdef BBGE_BUILD_GLFW
#include <glfw.h>
#include "glext.h"
//#include "glext.h"
#elif BBGE_BUILD_DIRECTX
#if defined(BBGE_BUILD_X360) && !defined(BBGE_BUILD_WINDOWS)
#include <xtl.h>
#include <ppcintrinsics.h>
#endif // _XBOX
#if defined(BBGE_BUILD_X360) && defined(BBGE_BUILD_WINDOWS)
// Using the win32\ path prefix on the D3D include files makes sure that the Xbox 360
// version of D3D is used, not the DirectX SDK version.
#include <win32\vs2005\d3d9.h>
#include <win32\vs2005\d3dx9.h>
#pragma warning(disable:4100)
#include "XTLOnPC.h"
#endif // _PC
#if defined(BBGE_BUILD_X360)
#include <xgraphics.h>
#include <xboxmath.h>
#include <stdio.h>
#include <stdarg.h>
#include <assert.h>
#endif
#endif
#ifdef BBGE_BUILD_SDL
#include "SDL.h"
#endif
#if defined(BBGE_BUILD_OPENGL)
#define GL_GLEXT_LEGACY 1
#include "gl.h"
#include "glext.h"
#endif
#define compile_assert(pred) switch(0){case 0:case (pred):;}
@ -136,7 +94,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include <queue>
#include <map>
#include <stack>
//#include <typeinfo.h>
#include "Rect.h"
@ -233,23 +191,9 @@ Direction getOppositeDir(Direction dir);
Direction getNextDirClockwise(Direction dir);
Vector colorRGB(int r, int g, int b);
#ifdef BBGE_BUILD_DIRECTX
typedef unsigned int GLuint;
#endif
GLuint generateEmptyTexture(int res);
//void pForEachFile(std::string path, std::string type, void callback(const std::string &filename, int param), int param);
/*
void pfread(void *buffer, PHYSFS_uint32 size, PHYSFS_uint32 objs, PHYSFS_file *handle);
void pfseek(PHYSFS_file *handle,PHYSFS_uint64 byte,int origin);
void pfclose(PHYSFS_file *handle);
PHYSFS_file *openRead(const std::string &f);
std::string pLoadStream(const std::string &filename);
void pSaveStream(const std::string &filename, std::ostringstream &os);
*/
void drawCircle(float radius, int steps=1);
bool isVectorInRect(const Vector &vec, const Vector &coord1, const Vector &coord2);
@ -287,8 +231,7 @@ enum LerpType
float lerp(const float &v1, const float &v2, float dt, int lerpType);
//int packFile(const std::string &sourcef, const std::string &destf, int level);
//int unpackFile(const std::string &sourcef, const std::string &destf);
void openURL(const std::string &url);

View file

@ -20,7 +20,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#include "BitmapFont.h"
#include "Core.h"
//#include "DSQ.h"
using namespace glfont;
@ -56,14 +56,12 @@ void BmpFont::load(const std::string &file, float scale, bool loadTexture)
this->scale = scale;
#ifdef BBGE_BUILD_OPENGL
GLuint id=0;
glGenTextures(1, &id);
if (!font.Create(file.c_str(), id, loadTexture))
return;
#endif
loaded = true;
}
@ -81,13 +79,13 @@ BitmapText::BitmapText(BmpFont *bmpFont)
align = ALIGN_CENTER;
textWidth = 600;
this->fontDrawSize = 24;
//color = Vector(0.5,0.5,1);
cull = false;
//setTexture(font);
alignWidth = 0;
//fontTextureTest = core->addTexture("font");
}
void BitmapText::autoKern()
@ -164,8 +162,8 @@ void BitmapText::formatText()
alignWidth = 0;
maxW = 0;
for (int i = 0; i < text.size(); i++)
{
//currentWidth += spacingMap[text[i]]*fontDrawSize;
{
float sz = bmpFont->font.GetCharWidth(text[i])*bmpFont->scale;
currentWidth += sz;
@ -218,24 +216,7 @@ void BitmapText::updateWordColoring()
}
}
/*
for (int i = 0; i < lines.size(); i++)
{
int c = 0;
for (int t = 0; t < dsq->continuity.wordColoring.size(); t++)
{
WordColoring *w = &dsq->continuity.wordColoring[t];
if ((c = lines[i].find(w->word)) != std::string::npos)
{
for (int j = c; j < c + w->word.size(); j++)
{
colorIndices[i][j] = w->color;
}
}
}
}
*/
//lines.push_back(text);
}
@ -316,15 +297,9 @@ void BitmapText::onRender()
float top_color[3] = {bmpFont->fontTopColor.x*color.x, bmpFont->fontTopColor.y*color.y, bmpFont->fontTopColor.z*color.z};
float bottom_color[3] = {bmpFont->fontBtmColor.x*color.x, bmpFont->fontBtmColor.y*color.y, bmpFont->fontBtmColor.z*color.z};
#ifdef BBGE_BUILD_OPENGL
glEnable(GL_TEXTURE_2D);
/*
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
*/
//glDisable(GL_CULL_FACE);
//glScalef(1, -1, 0);
bmpFont->font.Begin();
@ -353,11 +328,7 @@ void BitmapText::onRender()
x = -sz.first*0.5f*bmpFont->scale;
}
float la = 1.0f-(scrollDelay/scrollSpeed);
/*
std::ostringstream os;
os << "la: " << la;
debugLog(os.str());
*/
bmpFont->font.DrawString(theLine, bmpFont->scale, x, y, top_color, bottom_color, alpha.x, la);
y += adj;
@ -378,11 +349,10 @@ void BitmapText::onRender()
y += adj;
}
}
//glEnable(GL_CULL_FACE);
glBindTexture(GL_TEXTURE_2D, 0);
#endif
}
void BitmapText::unloadDevice()
@ -454,33 +424,4 @@ float BitmapText::getStringWidth(const std::string& text)
return maxsize * bmpFont->scale;
}
/*
BitmapText::BitmapText() : RenderObject()
{
cull = false;
followCamera = 1;
scrollSpeed = 0.1f;
}
void BitmapText::scrollText(const std::string &text, float scrollSpeed)
{
setText(text);
this->scrollSpeed = scrollSpeed;
}
void BitmapText::setText(const std::string &text)
{
this->text = text;
}
std::string BitmapText::getText()
{
return text;
}
void BitmapText::onRender()
{
CTextDrawer::GetSingleton().SetColor(color.x, color.y, color.z, alpha.getValue());
dsq->print(position.x, 600 - (position.y + 16*2), text);
}
*/

View file

@ -21,7 +21,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#ifndef BITMAPFONT_H
#define BITMAPFONT_H
//#include "DrawText.h"
#include "RenderObject.h"
#include "BaseText.h"

File diff suppressed because it is too large Load diff

View file

@ -40,11 +40,7 @@ BUILD_LINUX
#include "DarkLayer.h"
/*
#ifdef BBGE_BUILD_WINDOWS
#include "Joystick.h"
#endif
*/
#include "FrameBuffer.h"
#include "Shader.h"
@ -102,183 +98,10 @@ class Texture;
const int baseVirtualWidth = 800;
const int baseVirtualHeight = 600;
#if (defined(BBGE_BUILD_WINDOWS)) && !defined(BBGE_BUILD_SDL)
enum GameKeys
{
KEY_BACKSPACE = DIK_BACKSPACE,
KEY_CAPSLOCK = DIK_CAPSLOCK,
KEY_CIRCUMFLEX = DIK_CIRCUMFLEX,
KEY_DOWNARROW = DIK_DOWNARROW,
KEY_LALT = DIK_LALT,
KEY_LEFTARROW = DIK_LEFTARROW,
KEY_NUMPADMINUS = DIK_NUMPADMINUS,
KEY_NUMPADPERIOD = DIK_NUMPADPERIOD,
KEY_NUMPADPLUS = DIK_NUMPADPLUS,
KEY_NUMPADSLASH = DIK_NUMPADSLASH,
KEY_NUMPADSTAR = DIK_NUMPADSTAR,
KEY_PGDN = DIK_PGDN,
KEY_PGUP = DIK_PGUP,
KEY_RALT = DIK_RALT,
KEY_RIGHTARROW = DIK_RIGHTARROW,
KEY_UPARROW = DIK_UPARROW,
KEY_TILDE = DIK_GRAVE,
KEY_0 = DIK_0,
KEY_1 = DIK_1,
KEY_2 = DIK_2,
KEY_3 = DIK_3,
KEY_4 = DIK_4,
KEY_5 = DIK_5,
KEY_6 = DIK_6,
KEY_7 = DIK_7,
KEY_8 = DIK_8,
KEY_9 = DIK_9,
KEY_A = DIK_A,
KEY_ABNT_C1 = DIK_ABNT_C1,
KEY_ABNT_C2 = DIK_ABNT_C2,
KEY_ADD = DIK_ADD,
KEY_APOSTROPHE = DIK_APOSTROPHE,
KEY_APPS = DIK_APPS,
KEY_AT = DIK_AT,
KEY_AX = DIK_AX,
KEY_B = DIK_B,
KEY_BACK = DIK_BACK,
KEY_BACKSLASH = DIK_BACKSLASH,
KEY_C = DIK_C,
KEY_CALCULATOR = DIK_CALCULATOR,
KEY_CAPITAL = DIK_CAPITAL,
KEY_COLON = DIK_COLON,
KEY_COMMA = DIK_COMMA,
KEY_CONVERT = DIK_CONVERT,
KEY_D = DIK_D,
KEY_DECIMAL = DIK_DECIMAL,
KEY_DELETE = DIK_DELETE,
KEY_DIVIDE = DIK_DIVIDE,
KEY_DOWN = DIK_DOWN,
KEY_E = DIK_E,
KEY_END = DIK_END,
KEY_EQUALS = DIK_EQUALS,
KEY_ESCAPE = DIK_ESCAPE,
KEY_F = DIK_F,
KEY_F1 = DIK_F1,
KEY_F2 = DIK_F2,
KEY_F3 = DIK_F3,
KEY_F4 = DIK_F4,
KEY_F5 = DIK_F5,
KEY_F6 = DIK_F6,
KEY_F7 = DIK_F7,
KEY_F8 = DIK_F8,
KEY_F9 = DIK_F9,
KEY_F10 = DIK_F10,
KEY_F11 = DIK_F11,
KEY_F12 = DIK_F12,
KEY_F13 = DIK_F13,
KEY_F14 = DIK_F14,
KEY_F15 = DIK_F15,
KEY_G = DIK_G,
KEY_GRAVE = DIK_GRAVE,
KEY_H = DIK_H,
KEY_HOME = DIK_HOME,
KEY_I = DIK_I,
KEY_INSERT = DIK_INSERT,
KEY_J = DIK_J,
KEY_K = DIK_K,
KEY_KANA = DIK_KANA,
KEY_KANJI = DIK_KANJI,
KEY_L = DIK_L,
KEY_LBRACKET = DIK_LBRACKET,
KEY_LCONTROL = DIK_LCONTROL,
KEY_LEFT = DIK_LEFT,
KEY_LMENU = DIK_LMENU,
KEY_LSHIFT = DIK_LSHIFT,
KEY_LMETA = DIK_LWIN,
KEY_M = DIK_M,
KEY_MAIL = DIK_MAIL,
KEY_MEDIASELECT = DIK_MEDIASELECT,
KEY_MEDIASTOP = DIK_MEDIASTOP,
KEY_MINUS = DIK_MINUS,
KEY_MULTIPLY = DIK_MULTIPLY,
KEY_MUTE = DIK_MUTE,
KEY_MYCOMPUTER = DIK_MYCOMPUTER,
KEY_N = DIK_N,
KEY_NEXT = DIK_NEXT,
KEY_NEXTTRACK = DIK_NEXTTRACK,
KEY_NOCONVERT = DIK_NOCONVERT,
KEY_NUMLOCK = DIK_NUMLOCK,
KEY_NUMPAD0 = DIK_NUMPAD0,
KEY_NUMPAD1 = DIK_NUMPAD1,
KEY_NUMPAD2 = DIK_NUMPAD2,
KEY_NUMPAD3 = DIK_NUMPAD3,
KEY_NUMPAD4 = DIK_NUMPAD4,
KEY_NUMPAD5 = DIK_NUMPAD5,
KEY_NUMPAD6 = DIK_NUMPAD6,
KEY_NUMPAD7 = DIK_NUMPAD7,
KEY_NUMPAD8 = DIK_NUMPAD8,
KEY_NUMPAD9 = DIK_NUMPAD9,
KEY_NUMPADCOMMA = DIK_NUMPADCOMMA,
KEY_NUMPADENTER = DIK_NUMPADENTER,
KEY_NUMPADEQUALS = DIK_NUMPADEQUALS,
KEY_O = DIK_O,
KEY_OEM_102 = DIK_OEM_102,
KEY_P = DIK_P,
KEY_PAUSE = DIK_PAUSE,
KEY_PERIOD = DIK_PERIOD,
KEY_PLAYPAUSE = DIK_PLAYPAUSE,
KEY_POWER = DIK_POWER,
KEY_PREVTRACK = DIK_PREVTRACK,
KEY_PRIOR = DIK_PRIOR,
KEY_Q = DIK_Q,
KEY_R = DIK_R,
KEY_RBRACKET = DIK_RBRACKET,
KEY_RCONTROL = DIK_RCONTROL,
KEY_RETURN = DIK_RETURN,
KEY_RIGHT = DIK_RIGHT,
KEY_RMENU = DIK_RMENU,
KEY_RSHIFT = DIK_RSHIFT,
KEY_RMETA = DIK_RWIN,
KEY_S = DIK_S,
KEY_SCROLL = DIK_SCROLL,
KEY_SEMICOLON = DIK_SEMICOLON,
KEY_SLASH = DIK_SLASH,
KEY_SLEEP = DIK_SLEEP,
KEY_SPACE = DIK_SPACE,
KEY_STOP = DIK_STOP,
KEY_SUBTRACT = DIK_SUBTRACT,
KEY_SYSRQ = DIK_SYSRQ,
KEY_T = DIK_T,
KEY_TAB = DIK_TAB,
KEY_U = DIK_U,
KEY_UNDERLINE = DIK_UNDERLINE,
KEY_UNLABELED = DIK_UNLABELED,
KEY_UP = DIK_UP,
KEY_V = DIK_V,
KEY_VOLUMEDOWN = DIK_VOLUMEDOWN,
KEY_VOLUMEUP = DIK_VOLUMEUP,
KEY_W = DIK_W,
KEY_WAKE = DIK_WAKE,
KEY_WEBBACK = DIK_WEBBACK,
KEY_WEBFAVORITES = DIK_WEBFAVORITES,
KEY_WEBFORWARD = DIK_WEBFORWARD,
KEY_WEBHOME = DIK_WEBHOME,
KEY_WEBREFRESH = DIK_WEBREFRESH,
KEY_WEBSEARCH = DIK_WEBSEARCH,
KEY_WEBSTOP = DIK_WEBSTOP,
KEY_X = DIK_X,
KEY_Y = DIK_Y,
KEY_YEN = DIK_YEN,
KEY_Z = DIK_Z,
KEY_ANYKEY = 4059,
KEY_MAXARRAY = 256
};
#elif defined(BBGE_BUILD_SDL)
enum GameKeys
{
// replace with GLFW equivalent
/*
KEY_DOWNARROW = GLFW_KEY_DOWN,
KEY_RIGHTARROW = GLFW_KEY_RIGHT,
KEY_UPARROW = GLFW_KEY_UP,
KEY_LEFTARROW = GLFW_KEY_LEFT,
*/
KEY_LSUPER,
KEY_RSUPER,
@ -287,8 +110,8 @@ enum GameKeys
KEY_BACKSPACE,
KEY_PRINTSCREEN,
//KEY_CAPSLOCK,
//KEY_CIRCUMFLEX,
KEY_LALT,
KEY_RALT,
KEY_LSHIFT,
@ -307,7 +130,7 @@ enum GameKeys
KEY_SEMICOLON,
KEY_LBRACKET,
KEY_RBRACKET,
//KEY_RALT,
KEY_TILDE,
KEY_0,
KEY_1,
@ -390,353 +213,6 @@ enum GameKeys
KEY_ANYKEY,
KEY_MAXARRAY
};
#elif defined(BBGE_BUILD_XINPUT)
enum GameKeys
{
KEY_LSUPER = 0,
KEY_RSUPER = 0,
KEY_LMETA = 0,
KEY_RMETA = 0,
KEY_BACKSPACE = 0,
KEY_PRINTSCREEN = 0,
KEY_LALT = 0,
KEY_RALT = 0,
KEY_LSHIFT = 0,
KEY_RSHIFT = 0,
KEY_LCONTROL = 0,
KEY_RCONTROL = 0,
KEY_NUMPADMINUS = 0,
KEY_NUMPADPERIOD = 0,
KEY_NUMPADPLUS = 0,
KEY_NUMPADSLASH = 0,
KEY_NUMPADSTAR = 0,
KEY_PGDN = 0,
KEY_PGUP = 0,
KEY_TILDE = 0,
KEY_0 = 0,
KEY_1 = 0,
KEY_2 = 0,
KEY_3 = 0,
KEY_4 = 0,
KEY_5 = 0,
KEY_6 = 0,
KEY_7 = 0,
KEY_8 = 0,
KEY_9 = 0,
KEY_A = 0,
KEY_B = 0,
KEY_C = 0,
KEY_D = 0,
KEY_E = 0,
KEY_F = 0,
KEY_G = 0,
KEY_H = 0,
KEY_I = 0,
KEY_J = 0,
KEY_K = 0,
KEY_L = 0,
KEY_M = 0,
KEY_N = 0,
KEY_O = 0,
KEY_P = 0,
KEY_Q = 0,
KEY_R = 0,
KEY_S = 0,
KEY_T = 0,
KEY_U = 0,
KEY_V = 0,
KEY_W = 0,
KEY_X = 0,
KEY_Y = 0,
KEY_Z = 0,
KEY_LEFT = 0,
KEY_RIGHT = 0,
KEY_UP = 0,
KEY_DOWN = 0,
KEY_NUMPAD1 = 0,
KEY_NUMPAD2 = 0,
KEY_NUMPAD3 = 0,
KEY_NUMPAD4 = 0,
KEY_NUMPAD5 = 0,
KEY_NUMPAD6 = 0,
KEY_NUMPAD7 = 0,
KEY_NUMPAD8 = 0,
KEY_NUMPAD9 = 0,
KEY_NUMPAD0 = 0,
KEY_DELETE = 0,
KEY_SPACE = 0,
KEY_RETURN = 0,
KEY_PERIOD = 0,
KEY_MINUS = 0,
KEY_CAPSLOCK = 0,
KEY_SYSRQ = 0,
KEY_TAB = 0,
KEY_HOME = 0,
KEY_END = 0,
KEY_COMMA = 0,
KEY_SLASH = 0,
KEY_F1 = 0,
KEY_F2 = 0,
KEY_F3 = 0,
KEY_F4 = 0,
KEY_F5 = 0,
KEY_F6 = 0,
KEY_F7 = 0,
KEY_F8 = 0,
KEY_F9 = 0,
KEY_F10 = 0,
KEY_F11 = 0,
KEY_F12 = 0,
KEY_F13 = 0,
KEY_F14 = 0,
KEY_F15 = 0,
KEY_ESCAPE = 0,
KEY_ANYKEY = 4059,
KEY_MAXARRAY = 256
};
#elif defined(BBGE_BUILD_GLFW)
enum GameKeys
{
// replace with GLFW equivalent
/*
KEY_DOWNARROW = GLFW_KEY_DOWN,
KEY_RIGHTARROW = GLFW_KEY_RIGHT,
KEY_UPARROW = GLFW_KEY_UP,
KEY_LEFTARROW = GLFW_KEY_LEFT,
*/
KEY_BACKSPACE = GLFW_KEY_BACKSPACE,
//KEY_CAPSLOCK = DIK_CAPSLOCK,
//KEY_CIRCUMFLEX = DIK_CIRCUMFLEX,
KEY_LALT = GLFW_KEY_LALT,
KEY_RALT = GLFW_KEY_RALT,
KEY_LSHIFT = GLFW_KEY_LSHIFT,
KEY_RSHIFT = GLFW_KEY_RSHIFT,
KEY_LCONTROL = GLFW_KEY_LCTRL,
KEY_RCONTROL = GLFW_KEY_RCTRL,
KEY_NUMPADMINUS = GLFW_KEY_KP_SUBTRACT,
KEY_NUMPADPERIOD = GLFW_KEY_KP_DECIMAL,
KEY_NUMPADPLUS = GLFW_KEY_KP_ADD,
KEY_NUMPADSLASH = GLFW_KEY_KP_DIVIDE,
KEY_NUMPADSTAR = GLFW_KEY_KP_MULTIPLY,
KEY_PGDN = GLFW_KEY_PAGEDOWN,
KEY_PGUP = GLFW_KEY_PAGEUP,
//KEY_RALT = GLFW_KEY_RALT,
KEY_TILDE = '`',
KEY_0 = '0',
KEY_1 = '1',
KEY_2 = '2',
KEY_3 = '3',
KEY_4 = '4',
KEY_5 = '5',
KEY_6 = '6',
KEY_7 = '7',
KEY_8 = '8',
KEY_9 = '9',
KEY_A = 'A',
KEY_B = 'B',
KEY_C = 'C',
KEY_D = 'D',
KEY_E = 'E',
KEY_F = 'F',
KEY_G = 'G',
KEY_H = 'H',
KEY_I = 'I',
KEY_J = 'J',
KEY_K = 'K',
KEY_L = 'L',
KEY_M = 'M',
KEY_N = 'N',
KEY_O = 'O',
KEY_P = 'P',
KEY_Q = 'Q',
KEY_R = 'R',
KEY_S = 'S',
KEY_T = 'T',
KEY_U = 'U',
KEY_V = 'V',
KEY_W = 'W',
KEY_X = 'X',
KEY_Y = 'Y',
KEY_Z = 'Z',
KEY_LEFT = GLFW_KEY_LEFT,
KEY_RIGHT = GLFW_KEY_RIGHT,
KEY_UP = GLFW_KEY_UP,
KEY_DOWN = GLFW_KEY_DOWN,
KEY_NUMPAD1 = GLFW_KEY_KP_1,
KEY_NUMPAD2 = GLFW_KEY_KP_2,
KEY_NUMPAD3 = GLFW_KEY_KP_3,
KEY_NUMPAD4 = GLFW_KEY_KP_4,
KEY_NUMPAD5 = GLFW_KEY_KP_5,
KEY_NUMPAD6 = GLFW_KEY_KP_6,
KEY_NUMPAD7 = GLFW_KEY_KP_7,
KEY_NUMPAD8 = GLFW_KEY_KP_8,
KEY_NUMPAD9 = GLFW_KEY_KP_9,
KEY_NUMPAD0 = GLFW_KEY_KP_0,
KEY_DELETE = GLFW_KEY_DEL,
KEY_SPACE = GLFW_KEY_SPACE,
// mac os x
KEY_RETURN = 13,
KEY_PERIOD = '.',
KEY_MINUS = '-',
KEY_CAPSLOCK = -1,
KEY_SYSRQ = '`',
KEY_TAB = GLFW_KEY_TAB,
KEY_HOME = GLFW_KEY_HOME,
KEY_END = GLFW_KEY_END,
KEY_COMMA = ',',
KEY_SLASH = '/',
//KEY_ABNT_C1 = DIK_ABNT_C1,
//KEY_ABNT_C2 = DIK_ABNT_C2,
/*
KEY_ADD = DIK_ADD,
KEY_APOSTROPHE = DIK_APOSTROPHE,
KEY_APPS = DIK_APPS,
KEY_AT = DIK_AT,
KEY_AX = DIK_AX,
*/
/*
KEY_B = 'B',
KEY_BACK = DIK_BACK,
KEY_BACKSLASH = DIK_BACKSLASH,
KEY_C = DIK_C,
KEY_CALCULATOR = DIK_CALCULATOR,
KEY_CAPITAL = DIK_CAPITAL,
KEY_COLON = DIK_COLON,
KEY_COMMA = DIK_COMMA,
KEY_CONVERT = DIK_CONVERT,
KEY_D = DIK_D,
KEY_DECIMAL = DIK_DECIMAL,
KEY_DELETE = DIK_DELETE,
KEY_DIVIDE = DIK_DIVIDE,
KEY_DOWN = DIK_DOWN,
KEY_E = DIK_E,
KEY_END = DIK_END,
KEY_EQUALS = DIK_EQUALS,
KEY_ESCAPE = DIK_ESCAPE,
KEY_F = DIK_F,
*/
KEY_F1 = GLFW_KEY_F1,
KEY_F2 = GLFW_KEY_F2,
KEY_F3 = GLFW_KEY_F3,
KEY_F4 = GLFW_KEY_F4,
KEY_F5 = GLFW_KEY_F5,
KEY_F6 = GLFW_KEY_F6,
KEY_F7 = GLFW_KEY_F7,
KEY_F8 = GLFW_KEY_F8,
KEY_F9 = GLFW_KEY_F9,
KEY_F10 = GLFW_KEY_F10,
KEY_F11 = GLFW_KEY_F11,
KEY_F12 = GLFW_KEY_F12,
KEY_F13 = GLFW_KEY_F13,
KEY_F14 = GLFW_KEY_F14,
KEY_F15 = GLFW_KEY_F15,
/*
KEY_G = DIK_G,
KEY_GRAVE = DIK_GRAVE,
KEY_H = DIK_H,
KEY_HOME = DIK_HOME,
KEY_I = DIK_I,
KEY_INSERT = DIK_INSERT,
KEY_J = DIK_J,
KEY_K = DIK_K,
KEY_KANA = DIK_KANA,
KEY_KANJI = DIK_KANJI,
KEY_L = DIK_L,
KEY_LBRACKET = DIK_LBRACKET,
KEY_LCONTROL = DIK_LCONTROL,
KEY_LEFT = DIK_LEFT,
KEY_LMENU = DIK_LMENU,
KEY_LWIN = DIK_LWIN,
KEY_M = DIK_M,
KEY_MAIL = DIK_MAIL,
KEY_MEDIASELECT = DIK_MEDIASELECT,
KEY_MEDIASTOP = DIK_MEDIASTOP,
KEY_MINUS = DIK_MINUS,
KEY_MULTIPLY = DIK_MULTIPLY,
KEY_MUTE = DIK_MUTE,
KEY_MYCOMPUTER = DIK_MYCOMPUTER,
KEY_N = DIK_N,
KEY_NEXT = DIK_NEXT,
KEY_NEXTTRACK = DIK_NEXTTRACK,
KEY_NOCONVERT = DIK_NOCONVERT,
KEY_NUMLOCK = DIK_NUMLOCK,
KEY_NUMPAD0 = DIK_NUMPAD0,
KEY_NUMPAD1 = DIK_NUMPAD1,
KEY_NUMPAD2 = DIK_NUMPAD2,
KEY_NUMPAD3 = DIK_NUMPAD3,
KEY_NUMPAD4 = DIK_NUMPAD4,
KEY_NUMPAD5 = DIK_NUMPAD5,
KEY_NUMPAD6 = DIK_NUMPAD6,
KEY_NUMPAD7 = DIK_NUMPAD7,
KEY_NUMPAD8 = DIK_NUMPAD8,
KEY_NUMPAD9 = DIK_NUMPAD9,
KEY_NUMPADCOMMA = DIK_NUMPADCOMMA,
KEY_NUMPADENTER = DIK_NUMPADENTER,
KEY_NUMPADEQUALS = DIK_NUMPADEQUALS,
KEY_O = DIK_O,
KEY_OEM_102 = DIK_OEM_102,
KEY_P = DIK_P,
KEY_PAUSE = DIK_PAUSE,
KEY_PERIOD = DIK_PERIOD,
KEY_PLAYPAUSE = DIK_PLAYPAUSE,
KEY_POWER = DIK_POWER,
KEY_PREVTRACK = DIK_PREVTRACK,
KEY_PRIOR = DIK_PRIOR,
KEY_Q = DIK_Q,
KEY_R = DIK_R,
KEY_RBRACKET = DIK_RBRACKET,
KEY_RCONTROL = DIK_RCONTROL,
KEY_RETURN = DIK_RETURN,
KEY_RIGHT = DIK_RIGHT,
KEY_RMENU = DIK_RMENU,
KEY_RWIN = DIK_RWIN,
KEY_S = DIK_S,
KEY_SCROLL = DIK_SCROLL,
KEY_SEMICOLON = DIK_SEMICOLON,
KEY_SLASH = DIK_SLASH,
KEY_SLEEP = DIK_SLEEP,
KEY_SPACE = DIK_SPACE,
KEY_STOP = DIK_STOP,
KEY_SUBTRACT = DIK_SUBTRACT,
KEY_SYSRQ = DIK_SYSRQ,
KEY_T = DIK_T,
KEY_TAB = DIK_TAB,
KEY_U = DIK_U,
KEY_UNDERLINE = DIK_UNDERLINE,
KEY_UNLABELED = DIK_UNLABELED,
KEY_UP = DIK_UP,
KEY_V = DIK_V,
KEY_VOLUMEDOWN = DIK_VOLUMEDOWN,
KEY_VOLUMEUP = DIK_VOLUMEUP,
KEY_W = DIK_W,
KEY_WAKE = DIK_WAKE,
KEY_WEBBACK = DIK_WEBBACK,
KEY_WEBFAVORITES = DIK_WEBFAVORITES,
KEY_WEBFORWARD = DIK_WEBFORWARD,
KEY_WEBHOME = DIK_WEBHOME,
KEY_WEBREFRESH = DIK_WEBREFRESH,
KEY_WEBSEARCH = DIK_WEBSEARCH,
KEY_WEBSTOP = DIK_WEBSTOP,
KEY_X = DIK_X,
KEY_Y = DIK_Y,
KEY_YEN = DIK_YEN,
KEY_Z = DIK_Z,
*/
KEY_ESCAPE = GLFW_KEY_ESC,
KEY_ANYKEY = 4059
};
#endif
enum ButtonState { UP = 0, DOWN };
@ -749,7 +225,7 @@ struct MouseButtons
right = UP;
middle = UP;
}
ButtonState left, right, middle;
};
@ -797,13 +273,11 @@ public:
Vector rightStick;
bool inited, xinited;
bool anyButton();
#ifdef BBGE_BUILD_SDL
# ifdef BBGE_BUILD_SDL2
SDL_GameController *sdl_controller;
SDL_Haptic *sdl_haptic;
# endif
SDL_Joystick *sdl_joy;
#endif
#if defined(__LINUX__) && !defined(BBGE_BUILD_SDL2)
int eventfd;
int16_t effectid;
@ -820,10 +294,10 @@ enum FollowCameraLock
FCL_VERT = 2
};
//RenderObject Layer Type (enable only one)
//#define RLT_DYNAMIC // Dynamic list
#define RLT_FIXED // Static array
//#define RLT_MAP // Mapping
#define RLT_FIXED
typedef std::vector <RenderObject*> RenderObjects;
typedef std::list <RenderObject*> RenderObjectList;
@ -846,48 +320,17 @@ public:
inline bool empty()
{
#ifdef RLT_FIXED
return objectCount == 0;
#endif
#ifdef RLT_DYNAMIC
return renderObjectList.empty();
#endif
return false;
}
inline RenderObject *getFirst()
{
#ifdef RLT_DYNAMIC
if (renderObjectList.empty()) return 0;
iter = renderObjectList.begin();
return *iter;
#endif
#ifdef RLT_MAP
if (renderObjectMap.empty()) return 0;
iter = renderObjectMap.begin();
return (*iter).second;
#endif
#ifdef RLT_FIXED
iter = 0;
return getNext();
#endif
}
RenderObject *getNext()
{
#ifdef RLT_DYNAMIC
if (iter == renderObjectList.end()) return 0;
iter++;
if (iter == renderObjectList.end()) return 0;
return *iter;
#endif
#ifdef RLT_MAP
if (iter == renderObjectMap.end()) return 0;
iter++;
if (iter == renderObjectMap.end()) return 0;
return (*iter).second;
#endif
#ifdef RLT_FIXED
const int size = renderObjects.size();
int i;
for (i = iter; i < size; i++)
@ -905,7 +348,6 @@ public:
iter = i;
return 0;
}
#endif
return 0;
}
@ -941,20 +383,10 @@ protected:
};
std::vector<DisplayListElement> displayList;
#ifdef RLT_DYNAMIC
RenderObjectList renderObjectList;
RenderObjectList::iterator iter;
#endif
#ifdef RLT_MAP
RenderObjectMap renderObjectMap;
RenderObjectMap::iterator iter;
#endif
#ifdef RLT_FIXED
RenderObjects renderObjects;
int objectCount;
int firstFreeIdx;
int iter;
#endif
};
class Core : public ActionMapper, public StateManager
@ -971,10 +403,10 @@ public:
void initRenderObjectLayers(int num);
void applyState(const std::string &state);
//bool createGlWindow(char* title, int width, int height, int bits, bool fullscreenflag);
bool createWindow(int width, int height, int bits, bool fullscreen, std::string windowTitle="");
//void setWindowTitle(const std::string &title); // func not yet written
void clearBuffers();
void clearBuffers();
void render(int startLayer=-1, int endLayer=-1, bool useFrameBufferIfAvail=true);
void showBuffer();
void quit();
@ -989,7 +421,7 @@ public:
void reloadResources();
void unloadResources();
std::string getPreferencesFolder();
std::string getUserDataFolder();
@ -1000,9 +432,9 @@ public:
virtual void shutdown();
void main(float runTime = -1); // can use main
void main(float runTime = -1); // can use main
//void adjustWindowPosition(int x, int y);
// state functions
@ -1029,9 +461,9 @@ public:
void setMouseConstraint(bool on);
void setMouseConstraintCircle(const Vector& pos, float mouseCircle);
void setReentryInputGrab(int on);
void action(int id, int state){}
bool exists(const std::string &file);
@ -1059,15 +491,7 @@ public:
void resetGraphics(int w, int h, int fullscreen=-1, int vsync=-1, int bpp=-1);
/*
#ifdef BBGE_BUILD_OPENGL
void getWindowHeight(int *height)
{glfwGetWindowSize(0, height);}
void getWindowWidth(int *width)
{glfwGetWindowSize(width, 0);}
#endif
*/
void setDockIcon(const std::string &ident);
@ -1097,7 +521,7 @@ public:
RenderObjectLayer *getRenderObjectLayer(int i);
std::vector <int> renderObjectLayerOrder;
//typedef std::list<RenderObject*> RenderObjects;
typedef std::vector<RenderObjectLayer> RenderObjectLayers;
RenderObjectLayers renderObjectLayers;
@ -1130,7 +554,6 @@ public:
ParticleManager *particleManager;
//Scripting::Script script;
void setBaseTextureDirectory(const std::string &baseTextureDirectory)
@ -1177,29 +600,18 @@ public:
void applyMatrixStackToWorld();
void translateMatrixStack(float x, float y, float z=0);
//void translateMatrixStackRelative(float x, float y, float z=0);
void rotateMatrixStack(float x, float y, float z);
void scaleMatrixStack(float x, float y, float z=1);
void rotateMatrixStack(float z);
void setColor(float r, float g, float b, float a);
void bindTexture(int stage, unsigned int handle);
#ifdef BBGE_BUILD_DIRECTX
void blitD3DVerts(IDirect3DTexture9 *texture, float v1x, float v1y, float v2x, float v2y, float v3x, float v3y, float v4x, float v4y);
void blitD3D (IDirect3DTexture9 *texture, int width, int height);
void blitD3DPreTrans (IDirect3DTexture9 *texture, float x, float y, int absWidth, int absHeight);
void blitD3DEx (IDirect3DTexture9 *texture, int width, int height, float u1=0, float v1=0, float u2=1, float v2=1);
void blitD3DGradient(D3DCOLOR ulc0, D3DCOLOR ulc1, D3DCOLOR ulc2, D3DCOLOR ulc3);
LPDIRECT3DDEVICE9 getD3DDevice();
LPD3DXSPRITE getD3DSprite();
LPD3DXMATRIXSTACK getD3DMatrixStack();
#endif
bool getKeyState(int k);
bool getMouseButtonState(int m);
int currentLayerPass;
int keys[KEY_MAXARRAY];
virtual void debugLog(const std::string &s);
@ -1219,20 +631,16 @@ public:
void setupRenderPositionAndScale();
void setupGlobalResolutionScale();
int particlesPaused;
//JoystickData joystickData[4];
bool joystickEnabled;
bool joystickOverrideMouse;
/*
int numJoysticks;
DIJOYSTATE2 joystate;
Joystick* joysticks[4];
*/
bool debugLogTextures;
Joystick joystick;
void setClearColor(const Vector &c);
@ -1248,7 +656,7 @@ public:
bool frameOutputMode;
int overrideStartLayer, overrideEndLayer;
void setWindowCaption(const std::string &caption, const std::string &icon);
ParticleEffect* createParticleEffect(const std::string &name, const Vector &position, int layer, float rotz=0);
@ -1281,7 +689,7 @@ public:
Vector center;
void enable2DWide(int rx, int ry);
void enumerateScreenModes();
std::vector<ScreenMode> screenModes;
@ -1319,13 +727,13 @@ protected:
float old_dt;
float current_dt;
std::string debugLogPath;
virtual void onReloadResources();
CountedPtr<Texture> doTextureAdd(const std::string &texture, const std::string &name, std::string internalTextureName);
void deleteRenderObjectMemory(RenderObject *r);
bool _hasFocus;
bool lib_graphics, lib_sound, lib_input;
@ -1338,9 +746,9 @@ protected:
bool mouseConstraint;
float mouseCircle;
Vector mouseConstraintCenter;
bool doMouseConstraint();
virtual void onMouseInput(){}
bool doScreenshot;
float baseCullRadius;
@ -1361,10 +769,10 @@ protected:
bool sortFlag;
virtual void modifyDt(float &dt){}
void setPixelScale(int pixelScaleX, int pixelScaleY);
int virtualHeight, virtualWidth;
bool shuttingDown;
bool quitNestedMainFlag;
bool clearedGarbageFlag;
@ -1376,10 +784,8 @@ protected:
std::ofstream _logOut;
#ifdef BBGE_BUILD_SDL
int nowTicks, thenTicks;
#endif
int _vsync, _bpp;
bool _fullscreen;
@ -1387,9 +793,8 @@ protected:
CountedPtr<Texture> texError;
//unsigned int windowWidth, windowHeight;
int tgaSaveSeries(char *filename, short int width, short int height, unsigned char pixelDepth, unsigned char *imageData);
virtual void onUpdate(float dt);
virtual void onRender(){}

View file

@ -40,10 +40,8 @@ void DarkLayer::unloadDevice()
frameBuffer.unloadDevice();
else
{
#ifdef BBGE_BUILD_OPENGL
if (texture)
glDeleteTextures(1, &texture);
#endif
}
}
@ -65,7 +63,7 @@ bool DarkLayer::isUsed()
//HACK: disabling dark layer for temporary testing build
// MAKE SURE TO RESTORE THIS CODE TO THE WAY IT WAS
return layer > -1 && active;
//return false;
}
void DarkLayer::setLayers(int layer, int rl)
@ -81,7 +79,7 @@ void DarkLayer::init(int quality, bool useFrameBufferParam)
this->quality = quality;
if (useFrameBuffer)
{
{
if (!frameBuffer.init(quality, quality))
useFrameBuffer = false;
else
@ -106,33 +104,31 @@ void DarkLayer::toggle(bool on)
void DarkLayer::preRender()
{
#ifdef BBGE_BUILD_OPENGL
bool verbose = core->coreVerboseDebug;
if (layer != -1)
{
if (verbose) debugLog("viewport");
glViewport(0,0,quality,quality);
//core->clearBuffers();
//glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
if (verbose) debugLog("startCapture");
if (useFrameBuffer)
frameBuffer.startCapture();
if (verbose) debugLog("clearColor");
glClearColor(1,1,1,1);
glClear(GL_COLOR_BUFFER_BIT);
if (verbose) debugLog("render");
core->render(layer, layer, false);
core->render(layer, layer, false);
if (verbose) debugLog("endCapture");
if (useFrameBuffer)
frameBuffer.endCapture();
else
@ -143,44 +139,36 @@ void DarkLayer::preRender()
}
if (verbose) debugLog("viewport");
glViewport(0, 0, core->width, core->height);
glClearColor(0,0,0,0);
if (verbose) debugLog("done");
/*
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
*/
//glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, quality, quality, 0);
}
#endif
}
void DarkLayer::render()
{
#ifdef BBGE_BUILD_OPENGL
if (renderLayer != -1)
{
glPushMatrix();
glLoadIdentity();
//float percentX = (float)core->width/(float)quality;
//float percentY = (float)core->height/(float)quality;
glEnable(GL_TEXTURE_2D);
if (useFrameBuffer)
frameBuffer.bindTexture();
else
glBindTexture(GL_TEXTURE_2D,texture);
//glDisable(GL_BLEND);
glEnable(GL_BLEND);
//glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
//glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
//glBlendFunc(GL_ZERO, GL_SRC_COLOR);
//glBlendEquation(GL_FUNC_SUBTRACT);
glEnable(GL_BLEND);
// subtractive blend! (using color)
glBlendFunc(GL_ZERO, GL_SRC_COLOR);
@ -194,9 +182,9 @@ void DarkLayer::render()
{
debugLog("darkLayer: invalid operation");
}
//glBlendFunc(GL_SRC_ALPHA_SATURATE, GL_ONE);
//glBlendFunc(GL_ONE_MINUS_SRC_COLOR, GL_ONE_MINUS_SRC_ALPHA);
glColor4f(1,1,1,1);
float width = core->getWindowWidth();
@ -221,10 +209,9 @@ void DarkLayer::render()
glEnd();
glPopMatrix();
RenderObject::lastTextureApplied = 0;
glBindTexture(GL_TEXTURE_2D, 0);
}
#endif
}

View file

@ -36,7 +36,7 @@ public:
int getLayer();
int getRenderLayer();
bool isUsed();
void unloadDevice();
void reloadDevice();
@ -47,8 +47,8 @@ protected:
int quality;
bool active;
int layer, renderLayer;
GLuint texture;
GLuint format;
};

View file

@ -132,10 +132,9 @@ void DebugFont::onRender()
{
const float vspc = 1.5;
#ifdef BBGE_BUILD_OPENGL
for (int i = 0; i < lines.size(); i++)
{
//float width = (lines[i].size()-1) * fontDrawSize * 1.4f * 0.75f;
float width = (lines[i].size()) * fontDrawSize * 1.4f * 0.75f;
if (align == ALIGN_CENTER)
{
@ -152,7 +151,6 @@ void DebugFont::onRender()
glTranslatef(width*0.5f, 0, 0);
}
}
#endif
}
void DebugFont::setAlign(Align align)

View file

@ -58,7 +58,7 @@ public:
EventPtr event;
bool quitMain;
int buttonID;
protected:
void onUpdate(float dt);
Quad *highlight;

View file

@ -76,7 +76,6 @@ void PostProcessingFX::render()
{
if (enabled[i])
{
#ifdef BBGE_BUILD_OPENGL
glPushMatrix();
FXTypes type = (FXTypes)i;
switch(type)
@ -153,97 +152,9 @@ void PostProcessingFX::render()
}
glPopMatrix();
#endif
}
}
}
/*
GLuint blurTexture;
GLuint emptyTexture() // Create An Empty Texture
{
GLuint txtnumber; // Texture ID
unsigned int* data; // Stored Data
// Create Storage Space For Texture Data (128x128x4)
data = (unsigned int*)new GLuint[((128 * 128)* 4 * sizeof(unsigned int))];
ZeroMemory(data,((128 * 128)* 4 * sizeof(unsigned int))); // Clear Storage Memory
glGenTextures(1, &txtnumber); // Create 1 Texture
glBindTexture(GL_TEXTURE_2D, txtnumber); // Bind The Texture
glTexImage2D(GL_TEXTURE_2D, 0, 4, 128, 128, 0,
GL_RGBA, GL_UNSIGNED_BYTE, data); // Build Texture Using Information In data
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
delete [] data; // Release data
return txtnumber; // Return The Texture ID
}
PostProcessingFX::PostProcessingFX()
{
}
void PostProcessingFX::init(FXTypes type)
{
if (type == FXT_RADIALBLUR)
{
blurTexture = emptyTexture();
}
enabled[(int)type] = true;
}
void PostProcessingFX::shutdown(FXTypes type)
{
enabled[int(type)] = false;
}
void PostProcessingFX::preRender()
{
for (int i = 0; i < FXT_MAX; i++)
{
if (enabled[i])
{
FXTType type = (FXType)i;
switch(type)
{
case FXT_RADIALBLUR:
glViewport(0,0,128,128); // Set Our Viewport (Match Texture Size;
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear The Screen And Depth Buffer
core->render();
glBindTexture(GL_TEXTURE_2D,BlurTexture); // Bind To The Blur Texture
// Copy Our ViewPort To The Blur Texture (From 0,0 To 128,128... No Border)
glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, 0, 0, 128, 128, 0);
glClearColor(0.0f, 0.0f, 0.5f, 0.5); // Set The Clear Color To Medium Blue
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear The Screen And Depth Buffer
glViewport(0, 0, 800, 600);
break;
}
}
}
}
void PostProcessingFX::render()
{
for (int i = 0; i < FXT_MAX; i++)
{
if (enabled[i])
{
FXTType type = (FXType)i;
switch(type)
{
case FXT_RADIALBLUR:
glBegin(GL_QUADS);
glEnd();
break;
}
}
}
}
*/

View file

@ -37,7 +37,7 @@ void Emitter::destroy()
}
particles.clear();
Quad::destroy();
//particleManager->setFree(firstFree);
}
void Emitter::spawnParticle(float perc)
@ -46,7 +46,7 @@ void Emitter::spawnParticle(float perc)
Particle *p = particleManager->getFreeParticle(this);
p->active = true;
p->life = data.life;
setBlendType(data.blendType);
@ -105,14 +105,7 @@ void Emitter::spawnParticle(float perc)
p->rot.data->target.z += p->rot.z;
}
/*
if (data.calculateVelocityToCenter)
{
Vector pos = p->position - this->position;
pos.setLength2D(1);
quad->velocity = -p*particles[i].velocityMagnitude.x;
}
*/
if (data.randomVelocityMagnitude > 0)
{
@ -137,13 +130,8 @@ Vector Emitter::getSpawnPosition()
void Emitter::onUpdate(float dt)
{
Quad::onUpdate(dt);
/*
for (Particles::iterator i = particles.begin(); i != particles.end(); i++)
{
particleManager->updateParticle(*i, dt);
}
*/
if (pe->isRunning() && core->particlesPaused <= data.pauseLevel)
{
@ -232,16 +220,7 @@ void Emitter::removeParticle(Particle *p)
}
else
particles.remove(p);
/*
for (Particles::reverse_iterator i = particles.rbegin(); i != particles.rend(); i++)
{
if (*i == p)
{
particles.erase(i);
return;
}
}
*/
}
void Emitter::render()
@ -257,20 +236,8 @@ void Emitter::onRender()
if (!data.spawnLocal)
{
#ifdef BBGE_BUILD_OPENGL
glLoadIdentity();
#endif
/*
if (pe && pe->followCamera)
{
glLoadIdentity();
glScalef(core->globalResolutionScale.x, core->globalResolutionScale.y,0);
}
else
{
core->setupRenderPositionAndScale();
}
*/
core->setupRenderPositionAndScale();
}
@ -294,32 +261,26 @@ void Emitter::onRender()
const float dx = w2 * p->scale.x;
const float dy = h2 * p->scale.y;
#ifdef BBGE_BUILD_OPENGL
Vector col = p->color * colorMult;
glColor4f(col.x, col.y, col.z, p->alpha.x * alphaMult);
if (p->rot.z != 0 || p->rot.isInterpolating())
{
glPushMatrix();
glTranslatef(p->pos.x, p->pos.y,0);
glRotatef(p->rot.z, 0, 0, 1);
if (data.flipH || (data.copyParentFlip && (pe->isfh() || (pe->getParent() && pe->getParent()->isfh()))))
{
//glDisable(GL_CULL_FACE);
glRotatef(180, 0, 1, 0);
}
/*
if (data.flipV || (data.copyParentFlip && (this->isfv() || (parent && parent->isfv()))))
{
glDisable(GL_CULL_FACE);
}
*/
glBegin(GL_QUADS);
glTexCoord2f(0,1);
glVertex2f(-dx, +dy);
@ -329,7 +290,7 @@ void Emitter::onRender()
glTexCoord2f(1,0);
glVertex2f(+dx, -dy);
glTexCoord2f(0,0);
glVertex2f(-dx, -dy);
glEnd();
@ -350,18 +311,16 @@ void Emitter::onRender()
glTexCoord2f(1,0);
glVertex2f(x+dx, y-dy);
glTexCoord2f(0,0);
glVertex2f(x-dx, y-dy);
glEnd();
}
#endif
}
}
}
else
{
#ifdef BBGE_BUILD_OPENGL
glBegin(GL_QUADS);
for (Particles::iterator i = particles.begin(); i != particles.end(); i++)
{
@ -374,7 +333,7 @@ void Emitter::onRender()
const float dy = h2 * p->scale.y;
glColor4f(p->color.x, p->color.y, p->color.z, p->alpha.x);
glTexCoord2f(0,1);
glVertex2f(x-dx, y+dy);
@ -383,34 +342,14 @@ void Emitter::onRender()
glTexCoord2f(1,0);
glVertex2f(x+dx, y-dy);
glTexCoord2f(0,0);
glVertex2f(x-dx, y-dy);
}
}
glEnd();
#endif
}
/*
glDisable(GL_TEXTURE_2D);
glPointSize(4);
glBegin(GL_POINTS);
for (Particles::iterator i = particles.begin(); i != particles.end(); i++)
{
Particle *p = *i;
if (p->active)
{
glColor4f(1, 0, 0, 1);
x = p->pos.x;
y = p->pos.y;
glVertex2f(x, y);
}
}
glEnd();
glEnable(GL_TEXTURE_2D);
*/
}

View file

@ -221,7 +221,7 @@ void Timer::update(float dt)
}
break;
case 2:
timer += dt;
timer += dt;
break;
}
}
@ -239,5 +239,5 @@ float Timer::getValue()
{
return timer;
}
//EventPtr endEvent, startEvent;

View file

@ -80,7 +80,7 @@ enum EventManage
{
EVM_NONE = 0,
EVM_CLEANUP = 1,
EVM_MAX
EVM_MAX
};
class ActionMapper;

View file

@ -139,17 +139,11 @@ private:
bool stopped; // true if enqueued deletion
unsigned int samples_done; // Number of samples played and dequeued
#ifdef BBGE_BUILD_SDL
static SDL_Thread *decoderThread;
static LockedQueue<OggDecoder*> decoderQ;
static volatile bool stop_thread;
static std::list<OggDecoder*> decoderList; // used by decoder thread only
#else
#warning Threads not supported, music may cut out on area changes!
// ... because the stream runs out of decoded data while the area is
// still loading, so OpenAL aborts playback.
#endif
static void detachDecoder(OggDecoder *);
};
@ -181,16 +175,13 @@ static const ov_callbacks ogg_memory_callbacks = {
OggDecoder::mem_tell
};
#ifdef BBGE_BUILD_SDL
SDL_Thread *OggDecoder::decoderThread = NULL;
LockedQueue<OggDecoder*> OggDecoder::decoderQ;
volatile bool OggDecoder::stop_thread;
std::list<OggDecoder*> OggDecoder::decoderList;
#endif
void OggDecoder::startDecoderThread()
{
#ifdef BBGE_BUILD_SDL
stop_thread = false;
#ifdef BBGE_BUILD_SDL2
decoderThread = SDL_CreateThread((int (*)(void *))decode_loop, "OggDecoder", NULL);
@ -202,12 +193,10 @@ void OggDecoder::startDecoderThread()
debugLog("Failed to create Ogg Vorbis decode thread: "
+ std::string(SDL_GetError()));
}
#endif
}
void OggDecoder::stopDecoderThread()
{
#ifdef BBGE_BUILD_SDL
if (decoderThread)
{
stop_thread = true;
@ -215,27 +204,22 @@ void OggDecoder::stopDecoderThread()
SDL_WaitThread(decoderThread, NULL);
decoderThread = NULL;
}
#endif
}
void OggDecoder::detachDecoder(OggDecoder *ogg)
{
#ifdef BBGE_BUILD_SDL
if(decoderThread)
{
ogg->thread = true;
decoderQ.push(ogg);
}
#endif
}
void OggDecoder::decode_loop(OggDecoder *this_)
{
while (!this_->stop_thread)
{
#ifdef BBGE_BUILD_SDL
SDL_Delay(10);
#endif
// Transfer decoder to this background thread
OggDecoder *ogg;
while(decoderQ.pop(ogg))
@ -371,7 +355,7 @@ bool OggDecoder::preStart(ALuint source)
/* NOTE: The failure to use alGetError() here and elsewhere is
* intentional -- since alGetError() writes to a global buffer and
* is thus not thread-safe, we can't use it either in the decoding
* threads _or_ here in the main thread. In this case, we rely on
* threads _or_ here in the main thread. In this case, we rely on
* the specification that failing OpenAL calls do not modify return
* parameters to detect failure; for functions that do not return
* values, we have no choice but to hope for the best. (From a
@ -1298,7 +1282,6 @@ void OpenALChannel::setSound(OpenALSound *_sound)
// FMOD::System implementation ...
class OpenALSystem

View file

@ -24,7 +24,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//WARNING: FrameBuffer objects have to have reloadDevice/unloadDevice called manually!
#ifdef BBGE_BUILD_FRAMEBUFFER
#if defined(BBGE_BUILD_OPENGL)
PFNGLISRENDERBUFFEREXTPROC glIsRenderbufferEXT = NULL;
PFNGLBINDRENDERBUFFEREXTPROC glBindRenderbufferEXT = NULL;
PFNGLDELETERENDERBUFFERSEXTPROC glDeleteRenderbuffersEXT = NULL;
@ -43,7 +42,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC glGetFramebufferAttachmentParameterivEXT = NULL;
PFNGLGENERATEMIPMAPEXTPROC glGenerateMipmapEXT = NULL;
#endif
#endif
FrameBuffer::FrameBuffer()
{
@ -85,7 +83,7 @@ bool FrameBuffer::init(int width, int height, bool fitToScreen, GLint filter)
std::ostringstream oss;
oss << "Vendor: [" << glGetString(GL_VENDOR) << "] Renderer: [" << glGetString(GL_RENDERER) << "]";
debugLog(oss.str());
std::string renderer = (const char*)glGetString(GL_RENDERER);
if (renderer.find("Intel GMA 950") != std::string::npos)
{
@ -94,7 +92,7 @@ bool FrameBuffer::init(int width, int height, bool fitToScreen, GLint filter)
}
#endif
#ifdef BBGE_BUILD_FRAMEBUFFER
_w = width;
@ -115,15 +113,11 @@ bool FrameBuffer::init(int width, int height, bool fitToScreen, GLint filter)
_fitToScreen = fitToScreen;
if (width == 0 || height == 0)
return false;
/*
if (width > height)
height = width;
*/
w=width;
h=height;
#ifdef BBGE_BUILD_OPENGL
char *ext = (char*)glGetString( GL_EXTENSIONS );
std::ostringstream os;
@ -137,7 +131,6 @@ bool FrameBuffer::init(int width, int height, bool fitToScreen, GLint filter)
}
else
{
#if defined(BBGE_BUILD_SDL)
if (!glIsRenderbufferEXT)
{
glIsRenderbufferEXT = (PFNGLISRENDERBUFFEREXTPROC)SDL_GL_GetProcAddress("glIsRenderbufferEXT");
@ -158,7 +151,6 @@ bool FrameBuffer::init(int width, int height, bool fitToScreen, GLint filter)
glGetFramebufferAttachmentParameterivEXT = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC)SDL_GL_GetProcAddress("glGetFramebufferAttachmentParameterivEXT");
glGenerateMipmapEXT = (PFNGLGENERATEMIPMAPEXTPROC)SDL_GL_GetProcAddress("glGenerateMipmapEXT");
}
#endif
if( !glIsRenderbufferEXT || !glBindRenderbufferEXT || !glDeleteRenderbuffersEXT ||
!glGenRenderbuffersEXT || !glRenderbufferStorageEXT || !glGetRenderbufferParameterivEXT ||
@ -218,8 +210,7 @@ bool FrameBuffer::init(int width, int height, bool fitToScreen, GLint filter)
}
glBindTexture(GL_TEXTURE_2D, 0);
#endif
debugLog("Done");
inited = true;
enabled = true;
@ -237,7 +228,6 @@ void FrameBuffer::unloadDevice()
#ifdef BBGE_BUILD_FRAMEBUFFER
#ifdef BBGE_BUILD_OPENGL
if (glDeleteFramebuffersEXT == NULL)
{
@ -274,13 +264,11 @@ void FrameBuffer::unloadDevice()
glDeleteRenderbuffersEXT(1, &g_depthRenderBuffer);
g_depthRenderBuffer = 0;
}
#endif
#endif
debugLog("done");
}
#if defined(BBGE_BUILD_SDL)
void FrameBuffer::resetOpenGL()
{
#if defined(BBGE_BUILD_FRAMEBUFFER)
@ -305,7 +293,6 @@ void FrameBuffer::resetOpenGL()
glGenerateMipmapEXT = NULL;
#endif
}
#endif
void FrameBuffer::reloadDevice()
{
@ -317,15 +304,13 @@ void FrameBuffer::startCapture()
{
#ifdef BBGE_BUILD_FRAMEBUFFER
#ifdef BBGE_BUILD_OPENGL
glBindFramebufferEXT( GL_FRAMEBUFFER_EXT, g_frameBuffer );
//glBindRenderbufferEXT( GL_RENDERBUFFER_EXT, g_depthRenderBuffer );
glFramebufferTexture2DEXT( GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, g_dynamicTextureID, 0 );
glFramebufferRenderbufferEXT( GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, g_depthRenderBuffer );
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
#endif
#endif
}
@ -334,9 +319,7 @@ void FrameBuffer::endCapture()
{
#ifdef BBGE_BUILD_FRAMEBUFFER
#ifdef BBGE_BUILD_OPENGL
glBindFramebufferEXT( GL_FRAMEBUFFER_EXT, 0 );
#endif
#endif
}
@ -345,9 +328,7 @@ void FrameBuffer::bindTexture()
{
#ifdef BBGE_BUILD_FRAMEBUFFER
#ifdef BBGE_BUILD_OPENGL
glBindTexture( GL_TEXTURE_2D, g_dynamicTextureID );
#endif
#endif
}

View file

@ -27,7 +27,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
class FrameBuffer
{
public:
FrameBuffer();
FrameBuffer();
~FrameBuffer();
bool init(int width, int height, bool fitToScreen=false, GLint filter=GL_LINEAR);
bool isInited() { return inited; }
@ -40,13 +40,11 @@ public:
int getHeight() { return h; }
float getWidthP();
float getHeightP();
void unloadDevice();
void reloadDevice();
#if defined(BBGE_BUILD_SDL)
static void resetOpenGL();
#endif
protected:
int _w, _h;

View file

@ -8,20 +8,20 @@ extern "C" {
/*
** Copyright 1998-2002, NVIDIA Corporation.
** All Rights Reserved.
**
**
** THE INFORMATION CONTAINED HEREIN IS PROPRIETARY AND CONFIDENTIAL TO
** NVIDIA, CORPORATION. USE, REPRODUCTION OR DISCLOSURE TO ANY THIRD PARTY
** IS SUBJECT TO WRITTEN PRE-APPROVAL BY NVIDIA, CORPORATION.
**
**
**
**
** Copyright 1992-1999, Silicon Graphics, Inc.
** All Rights Reserved.
**
**
** Portions of this file are UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon
** Graphics, Inc.; the contents of this file may not be disclosed to third
** parties, copied or duplicated in any form, in whole or in part, without
** the prior written permission of Silicon Graphics, Inc.
**
**
** RESTRICTED RIGHTS LEGEND:
** Use, duplication or disclosure by the Government is subject to
** restrictions as set forth in subdivision (c)(1)(ii) of the Rights in
@ -44,9 +44,7 @@ extern "C" {
#undef WINGDIAPI
#define WINGDIAPI extern
/*#ifndef WIN32
#define WINGDIAPI
#endif*/
#ifndef GLAPI
# ifdef _WIN32
@ -104,13 +102,13 @@ typedef void GLvoid;
#define GL_SCISSOR_BIT 0x00080000
#define GL_ALL_ATTRIB_BITS 0xFFFFFFFF
/* ClearBufferMask */
/* GL_COLOR_BUFFER_BIT */
/* GL_ACCUM_BUFFER_BIT */
/* GL_STENCIL_BUFFER_BIT */
/* GL_DEPTH_BUFFER_BIT */
/* ClientAttribMask */
#define GL_CLIENT_PIXEL_STORE_BIT 0x00000001
#define GL_CLIENT_VERTEX_ARRAY_BIT 0x00000002
#define GL_CLIENT_ALL_ATTRIB_BITS 0xFFFFFFFF
@ -158,55 +156,55 @@ typedef void GLvoid;
#define GL_DST_ALPHA 0x0304
#define GL_ONE_MINUS_DST_ALPHA 0x0305
/* BlendingFactorSrc */
/* GL_ZERO */
/* GL_ONE */
#define GL_DST_COLOR 0x0306
#define GL_ONE_MINUS_DST_COLOR 0x0307
#define GL_SRC_ALPHA_SATURATE 0x0308
/* GL_SRC_ALPHA */
/* GL_ONE_MINUS_SRC_ALPHA */
/* GL_DST_ALPHA */
/* GL_ONE_MINUS_DST_ALPHA */
/* ColorMaterialFace */
/* GL_FRONT */
/* GL_BACK */
/* GL_FRONT_AND_BACK */
/* ColorMaterialParameter */
/* GL_AMBIENT */
/* GL_DIFFUSE */
/* GL_SPECULAR */
/* GL_EMISSION */
/* GL_AMBIENT_AND_DIFFUSE */
/* ColorPointerType */
/* GL_BYTE */
/* GL_UNSIGNED_BYTE */
/* GL_SHORT */
/* GL_UNSIGNED_SHORT */
/* GL_INT */
/* GL_UNSIGNED_INT */
/* GL_FLOAT */
/* GL_DOUBLE */
/* CullFaceMode */
/* GL_FRONT */
/* GL_BACK */
/* GL_FRONT_AND_BACK */
/* DepthFunction */
/* GL_NEVER */
/* GL_LESS */
/* GL_EQUAL */
/* GL_LEQUAL */
/* GL_GREATER */
/* GL_NOTEQUAL */
/* GL_GEQUAL */
/* GL_ALWAYS */
/* DrawBufferMode */
#define GL_NONE 0
#define GL_FRONT_LEFT 0x0400
#define GL_FRONT_RIGHT 0x0401
@ -222,75 +220,75 @@ typedef void GLvoid;
#define GL_AUX2 0x040B
#define GL_AUX3 0x040C
/* EnableCap */
/* GL_FOG */
/* GL_LIGHTING */
/* GL_TEXTURE_1D */
/* GL_TEXTURE_2D */
/* GL_LINE_STIPPLE */
/* GL_POLYGON_STIPPLE */
/* GL_CULL_FACE */
/* GL_ALPHA_TEST */
/* GL_BLEND */
/* GL_INDEX_LOGIC_OP */
/* GL_COLOR_LOGIC_OP */
/* GL_DITHER */
/* GL_STENCIL_TEST */
/* GL_DEPTH_TEST */
/* GL_CLIP_PLANE0 */
/* GL_CLIP_PLANE1 */
/* GL_CLIP_PLANE2 */
/* GL_CLIP_PLANE3 */
/* GL_CLIP_PLANE4 */
/* GL_CLIP_PLANE5 */
/* GL_LIGHT0 */
/* GL_LIGHT1 */
/* GL_LIGHT2 */
/* GL_LIGHT3 */
/* GL_LIGHT4 */
/* GL_LIGHT5 */
/* GL_LIGHT6 */
/* GL_LIGHT7 */
/* GL_TEXTURE_GEN_S */
/* GL_TEXTURE_GEN_T */
/* GL_TEXTURE_GEN_R */
/* GL_TEXTURE_GEN_Q */
/* GL_MAP1_VERTEX_3 */
/* GL_MAP1_VERTEX_4 */
/* GL_MAP1_COLOR_4 */
/* GL_MAP1_INDEX */
/* GL_MAP1_NORMAL */
/* GL_MAP1_TEXTURE_COORD_1 */
/* GL_MAP1_TEXTURE_COORD_2 */
/* GL_MAP1_TEXTURE_COORD_3 */
/* GL_MAP1_TEXTURE_COORD_4 */
/* GL_MAP2_VERTEX_3 */
/* GL_MAP2_VERTEX_4 */
/* GL_MAP2_COLOR_4 */
/* GL_MAP2_INDEX */
/* GL_MAP2_NORMAL */
/* GL_MAP2_TEXTURE_COORD_1 */
/* GL_MAP2_TEXTURE_COORD_2 */
/* GL_MAP2_TEXTURE_COORD_3 */
/* GL_MAP2_TEXTURE_COORD_4 */
/* GL_POINT_SMOOTH */
/* GL_LINE_SMOOTH */
/* GL_POLYGON_SMOOTH */
/* GL_SCISSOR_TEST */
/* GL_COLOR_MATERIAL */
/* GL_NORMALIZE */
/* GL_AUTO_NORMAL */
/* GL_POLYGON_OFFSET_POINT */
/* GL_POLYGON_OFFSET_LINE */
/* GL_POLYGON_OFFSET_FILL */
/* GL_VERTEX_ARRAY */
/* GL_NORMAL_ARRAY */
/* GL_COLOR_ARRAY */
/* GL_INDEX_ARRAY */
/* GL_TEXTURE_COORD_ARRAY */
/* GL_EDGE_FLAG_ARRAY */
/* ErrorCode */
#define GL_NO_ERROR 0
#define GL_INVALID_ENUM 0x0500
#define GL_INVALID_VALUE 0x0501
@ -317,8 +315,8 @@ typedef void GLvoid;
#define GL_COPY_PIXEL_TOKEN 0x0706
#define GL_LINE_RESET_TOKEN 0x0707
/* FogMode */
/* GL_LINEAR */
#define GL_EXP 0x0800
#define GL_EXP2 0x0801
@ -1635,9 +1633,6 @@ WINGDIAPI void APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei hei
# undef __DEFINED_GLAPI
#endif
#ifndef GL_GLEXT_LEGACY
#include <GL/glext.h>
#endif
#ifdef __cplusplus
}

View file

@ -11,13 +11,13 @@ extern "C" {
TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THIS SOFTWARE IS PROVIDED
*AS IS* AND NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, EITHER EXPRESS
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL
NVIDIA OR ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR
CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR
LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION,
OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR INABILITY TO USE
THIS SOFTWARE, EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL
NVIDIA OR ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR
CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR
LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION,
OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR INABILITY TO USE
THIS SOFTWARE, EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
******************************************************************************/
@ -30,21 +30,21 @@ extern "C" {
** this file except in compliance with the License. You may obtain a copy
** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
**
**
** http://oss.sgi.com/projects/FreeB
**
**
** Note that, as provided in the License, the Software is distributed on an
** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
**
**
** Original Code. The Original Code is: OpenGL Sample Implementation,
** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
** Inc. The Original Code is Copyright (c) 1991-2004 Silicon Graphics, Inc.
** Copyright in any portions created by third parties is as indicated
** elsewhere herein. All Rights Reserved.
**
**
** Additional Notice Provisions: This software was created using the
** OpenGL(R) version 1.2.1 Sample Implementation published by SGI, but has
** not been independently verified as being compliant with the OpenGL(R)
@ -3335,7 +3335,7 @@ extern "C" {
#define GL_READ_FRAMEBUFFER_BINDING_EXT 0x8CAA
#endif
#ifndef GL_EXT_texture_compression_rgtc
#ifndef GL_EXT_texture_compression_rgtc
#define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB
#define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC
#define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD

View file

@ -59,47 +59,26 @@ void Gradient::makeHorizontal(Vector c1, Vector c2)
void Gradient::onRender()
{
#ifdef BBGE_BUILD_DIRECTX
core->blitD3DGradient
( ulc0.getD3DColor(alpha.x),
ulc1.getD3DColor(alpha.x),
ulc2.getD3DColor(alpha.x),
ulc3.getD3DColor(alpha.x));
#endif
#ifdef BBGE_BUILD_OPENGL
//glNormal3f(0, 0, 1);
glBegin(GL_QUADS);
//glNormal3f(0, 0, 1);
glColor4f(ulc2.x*color.x, ulc2.y*color.y, ulc2.z*color.z, alpha.x);
glVertex3f(-0.5, 0.5, 0.0f);
// 2
glColor4f(ulc3.x*color.x, ulc3.y*color.y, ulc3.z*color.z, alpha.x);
glVertex3f( 0.5, 0.5, 0.0f);
// 3
glColor4f(ulc0.x*color.x, ulc0.y*color.y, ulc0.z*color.z, alpha.x);
glVertex3f( 0.5, -0.5, 0.0f);
// 4
glColor4f(ulc1.x*color.x, ulc1.y*color.y, ulc1.z*color.z, alpha.x);
glColor4f(ulc1.x*color.x, ulc1.y*color.y, ulc1.z*color.z, alpha.x);
glVertex3f(-0.5, -0.5, 0.0f);
/*
glColor3f(ulc0.x, ulc0.y, ulc0.z);
glVertex3f(-0.5, -0.5, 0);
glColor3f(ulc1.x, ulc1.y, ulc1.z);
glVertex3f(0.5, -0.5, 0);
glColor3f(ulc2.x, ulc2.y, ulc2.z);
glVertex3f(0.5, 0.5, 0);
glColor3f(ulc3.x, ulc3.y, ulc3.z);
glVertex3f(-0.5, 0.5, 0);
*/
glEnd();
#endif
}

View file

@ -21,51 +21,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "Core.h"
#if defined(BBGE_BUILD_WINDOWS) && defined(BBGE_BUILD_XINPUT)
#include "Xinput.h"
#if defined(BBGE_BUILD_DELAYXINPUT)
#include <DelayImp.h>
#endif
/*
HRESULT (WINAPI *XInputGetState)(HINSTANCE hinst, DWORD dwVersion, REFIID riidltf, LPVOID *ppvOut, LPUNKNOWN punkOuter) = 0;
if ( (winp.hInstDI = LoadLibrary( "dinput.dll" )) == 0 )
if (!pDirectInput8Create) {
pDirectInput8Create = (HRESULT (__stdcall *)(HINSTANCE, DWORD ,REFIID, LPVOID *, LPUNKNOWN)) GetProcAddress(winp.hInstDI,"DirectInput8Create");
if (!pDirectInput8Create) {
error(L"Couldn't get DI proc addr\n");
}
}
bool importXInput()
{
}
*/
bool tryXInput()
{
__try
{
XINPUT_STATE xinp;
XInputGetState(0, &xinp);
}
__except (EXCEPTION_EXECUTE_HANDLER)
{
return false;
}
return true;
}
#endif
#ifdef __LINUX__
#include <sys/types.h>
@ -89,13 +44,11 @@ Joystick::Joystick()
{
xinited = false;
stickIndex = -1;
#ifdef BBGE_BUILD_SDL
# ifdef BBGE_BUILD_SDL2
sdl_controller = NULL;
sdl_haptic = NULL;
# endif
sdl_joy = NULL;
#endif
#if defined(__LINUX__) && !defined(BBGE_BUILD_SDL2)
eventfd = -1;
effectid = -1;
@ -124,11 +77,8 @@ Joystick::Joystick()
void Joystick::init(int stick)
{
#if defined(BBGE_BUILD_SDL) || defined(__LINUX__)
std::ostringstream os;
#endif
#ifdef BBGE_BUILD_SDL
stickIndex = stick;
const int numJoy = SDL_NumJoysticks();
os << "Found [" << numJoy << "] joysticks";
@ -184,8 +134,7 @@ void Joystick::init(int stick)
{
debugLog("Not enough Joystick(s) found");
}
#endif
#if defined(__LINUX__) && !defined(BBGE_BUILD_SDL2)
os.seekp(0);
os << "AQUARIA_EVENT_JOYSTICK" << stick;
@ -223,20 +172,6 @@ void Joystick::init(int stick)
}
#endif
#ifdef BBGE_BUILD_XINPUT
debugLog("about to init xinput");
xinited = tryXInput();
if (!xinited)
debugLog("XInput not found, not installed?");
debugLog("after catch");
#if !defined(BBGE_BUILD_SDL)
inited = xinited;
#endif
#endif
}
void Joystick::shutdown()
@ -250,7 +185,6 @@ void Joystick::shutdown()
eventfd = -1;
}
#endif
#ifdef BBGE_BUILD_SDL
#ifdef BBGE_BUILD_SDL2
if (sdl_haptic)
{
@ -269,7 +203,6 @@ void Joystick::shutdown()
SDL_JoystickClose(sdl_joy);
sdl_joy = 0;
}
#endif
}
void Joystick::rumble(float leftMotor, float rightMotor, float time)
@ -292,25 +225,6 @@ void Joystick::rumble(float leftMotor, float rightMotor, float time)
}
}
#elif defined(BBGE_BUILD_WINDOWS) && defined(BBGE_BUILD_XINPUT)
XINPUT_VIBRATION vib;
vib.wLeftMotorSpeed = WORD(leftMotor*65535);
vib.wRightMotorSpeed = WORD(rightMotor*65535);
clearRumbleTime = time;
DWORD d = XInputSetState(0, &vib);
if (d == ERROR_SUCCESS)
{
//debugLog("success");
}
else if (d == ERROR_DEVICE_NOT_CONNECTED)
{
//debugLog("joystick not connected");
}
else
{
//unknown error
}
#elif defined(__LINUX__)
if (eventfd >= 0) {
struct ff_effect effect;
@ -331,24 +245,24 @@ void Joystick::rumble(float leftMotor, float rightMotor, float time)
effect.u.rumble.strong_magnitude = (uint16_t) (rightMotor * 0xffff);
effect.u.rumble.weak_magnitude = (uint16_t) (leftMotor * 0xffff);
}
if (ioctl(eventfd, EVIOCSFF, &effect) == -1) {
debugLog(std::string("Upload rumble effect: ") + strerror(errno));
return;
}
event.time.tv_sec = 0;
event.time.tv_usec = 0;
event.type = EV_FF;
event.code = effectid = effect.id;
if (leftMotor == 0 && rightMotor == 0) {
event.value = 0;
}
else {
event.value = 1;
}
if (write(eventfd, (const void*) &event, sizeof(event)) == -1) {
debugLog(std::string("Play rumble effect: ") + strerror(errno));
}
@ -359,7 +273,7 @@ void Joystick::rumble(float leftMotor, float rightMotor, float time)
void Joystick::callibrate(Vector &calvec, float deadZone)
{
//float len = position.getLength2D();
if (calvec.isLength2DIn(deadZone))
{
calvec = Vector(0,0,0);
@ -367,7 +281,7 @@ void Joystick::callibrate(Vector &calvec, float deadZone)
else
{
if (!calvec.isZero())
{
{
Vector pos2 = calvec;
pos2.setLength2D(deadZone);
calvec -= pos2;
@ -389,7 +303,6 @@ void Joystick::callibrate(Vector &calvec, float deadZone)
void Joystick::update(float dt)
{
#ifdef BBGE_BUILD_SDL
if (core->joystickEnabled && inited && sdl_joy && stickIndex != -1)
{
#ifdef BBGE_BUILD_SDL2
@ -451,23 +364,14 @@ void Joystick::update(float dt)
rightStick.y = yaxis2/32768.0f;
#endif
/*
std::ostringstream os;
os << "joy(" << position.x << ", " << position.y << ")";
debugLog(os.str());
*/
callibrate(position, deadZone1);
callibrate(rightStick, deadZone2);
/*
std::ostringstream os2;
os2 << "joy2(" << position.x << ", " << position.y << ")";
debugLog(os2.str());
*/
#ifdef BBGE_BUILD_SDL2
if (sdl_controller)
{
@ -485,21 +389,10 @@ void Joystick::update(float dt)
for (int i = 0; i < maxJoyBtns; i++)
buttons[i] = SDL_JoystickGetButton(sdl_joy, i)?DOWN:UP;
#endif
/*
unsigned char btns[maxJoyBtns];
glfwGetJoystickButtons(GLFW_JOYSTICK_1, btns, maxJoyBtns);
for (int i = 0; i < maxJoyBtns; i++)
{
if (btns[i] == GLFW_PRESS)
buttons[i] = DOWN;
else
buttons[i] = UP;
}
*/
}
#endif
if (clearRumbleTime >= 0)
{
@ -510,59 +403,8 @@ void Joystick::update(float dt)
}
}
#if defined(BBGE_BUILD_WINDOWS) && defined(BBGE_BUILD_XINPUT)
if (inited && xinited)
{
XINPUT_STATE xinp;
XInputGetState(0, &xinp);
leftTrigger = float(xinp.Gamepad.bLeftTrigger)/255.0f;
rightTrigger = float(xinp.Gamepad.bRightTrigger)/255.0f;
leftShoulder = xinp.Gamepad.wButtons & XINPUT_GAMEPAD_LEFT_SHOULDER;
rightShoulder = xinp.Gamepad.wButtons & XINPUT_GAMEPAD_RIGHT_SHOULDER;
leftThumb = xinp.Gamepad.wButtons & XINPUT_GAMEPAD_LEFT_THUMB;
rightThumb = xinp.Gamepad.wButtons & XINPUT_GAMEPAD_RIGHT_THUMB;
dpadUp = xinp.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_UP;
dpadDown = xinp.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_DOWN;
dpadLeft = xinp.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_LEFT;
dpadRight = xinp.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_RIGHT;
#if !defined(BBGE_BUILD_SDL)
buttons[0] = xinp.Gamepad.wButtons & XINPUT_GAMEPAD_A?DOWN:UP;
buttons[1] = xinp.Gamepad.wButtons & XINPUT_GAMEPAD_B?DOWN:UP;
buttons[2] = xinp.Gamepad.wButtons & XINPUT_GAMEPAD_X?DOWN:UP;
buttons[3] = xinp.Gamepad.wButtons & XINPUT_GAMEPAD_Y?DOWN:UP;
position = Vector(xinp.Gamepad.sThumbLX, xinp.Gamepad.sThumbLY)/32768.0f;
position.y = -rightStick.y;
rightStick = Vector(xinp.Gamepad.sThumbRX, xinp.Gamepad.sThumbRY)/32768.0f;
rightStick.y = -rightStick.y;
callibrate(position, deadZone1);
callibrate(rightStick, deadZone2);
#endif
btnStart = xinp.Gamepad.wButtons & XINPUT_GAMEPAD_START;
btnSelect = xinp.Gamepad.wButtons & XINPUT_GAMEPAD_BACK;
}
#endif
/*
std::ostringstream os;
os << "j-pos(" << position.x << ", " << position.y << " - b0[" << buttons[0] << "]) - len[" << len << "]";
debugLog(os.str());
*/
}
bool Joystick::anyButton()

View file

@ -43,7 +43,7 @@ void LensFlare::addFlare(const std::string &tex, Vector color, int w, int h)
void LensFlare::onUpdate(float dt)
{
//const int maxLen = 1500;
RenderObject::onUpdate(dt);
Vector v = core->screenCenter - this->position;
if (v.getSquaredLength2D() > sqr(maxLen))
@ -53,7 +53,7 @@ void LensFlare::onUpdate(float dt)
float l = v.getLength2D();
float a = 1.0f-(l/(float)maxLen);
a*=0.8f;
//Vector vbit = v*(1.0f/flares.size());
Vector vbit = v;
vbit *= inc;
for (int i = 0; i < flares.size(); i++)

View file

@ -1,37 +1,28 @@
#include "MT.h"
#include "Base.h"
#ifdef BBGE_BUILD_SDL
// --------- Lockable ----------
Lockable::Lockable()
: _mtx(NULL)
{
#ifdef BBGE_BUILD_SDL
_mtx = SDL_CreateMutex();
#endif
}
Lockable::~Lockable()
{
#ifdef BBGE_BUILD_SDL
SDL_DestroyMutex((SDL_mutex*)_mtx);
#endif
}
void Lockable::lock()
{
#ifdef BBGE_BUILD_SDL
SDL_LockMutex((SDL_mutex*)_mtx);
#endif
}
void Lockable::unlock()
{
#ifdef BBGE_BUILD_SDL
SDL_UnlockMutex((SDL_mutex*)_mtx);
#endif
}
// --------- Waitable ----------
@ -39,37 +30,26 @@ void Lockable::unlock()
Waitable::Waitable()
: _cond(NULL)
{
#ifdef BBGE_BUILD_SDL
_cond = SDL_CreateCond();
#endif
}
Waitable::~Waitable()
{
#ifdef BBGE_BUILD_SDL
SDL_DestroyCond((SDL_cond*)_cond);
#endif
}
void Waitable::wait()
{
#ifdef BBGE_BUILD_SDL
SDL_CondWait((SDL_cond*)_cond, (SDL_mutex*)mutex());
#endif
}
void Waitable::signal()
{
#ifdef BBGE_BUILD_SDL
SDL_CondSignal((SDL_cond*)_cond);
#endif
}
void Waitable::broadcast()
{
#ifdef BBGE_BUILD_SDL
SDL_CondBroadcast((SDL_cond*)_cond);
#endif
}
#endif // BBGE_BUILD_SDL

Some files were not shown because too many files have changed in this diff Show more