1
0
Fork 0
mirror of https://github.com/AquariaOSE/Aquaria.git synced 2024-11-14 21:39:09 +00:00

Add world map gem Lua functions:

setGemName() to change texture
setGemBlink() to allow blinking other gems than only the first added one
This commit is contained in:
fgenesis 2015-07-09 01:12:52 +02:00
parent af1b831c85
commit e285c26e05
3 changed files with 44 additions and 3 deletions

View file

@ -620,12 +620,13 @@ class Path;
struct GemData
{
GemData() { canMove=false; }
GemData() { canMove=false; blink = false; }
std::string name;
std::string userString;
std::string mapName;
bool canMove;
Vector pos;
bool canMove;
bool blink; // not saved
};
struct BeaconData

View file

@ -8466,6 +8466,44 @@ luaFunc(setGemPosition)
luaReturnBool(result);
}
luaFunc(setGemName)
{
int gemId = lua_tointeger(L, 1);
bool result = false;
if(gemId >= 0 && gemId < dsq->continuity.gems.size())
{
Continuity::Gems::iterator it = dsq->continuity.gems.begin();
std::advance(it, gemId);
GemData& gem = *it;
gem.name = getString(L, 2);
result = true;
}
else
debugLog("setGemName: invalid index");
luaReturnBool(result);
}
luaFunc(setGemBlink)
{
int gemId = lua_tointeger(L, 1);
bool result = false;
if(gemId >= 0 && gemId < dsq->continuity.gems.size())
{
Continuity::Gems::iterator it = dsq->continuity.gems.begin();
std::advance(it, gemId);
GemData& gem = *it;
gem.blink = getBool(L, 2);
result = true;
}
else
debugLog("setGemBlink: invalid index");
luaReturnBool(result);
}
luaFunc(removeGem)
{
int gemId = lua_tointeger(L, 1);
@ -9762,6 +9800,8 @@ static const struct {
luaRegister(pickupGem),
luaRegister(setGemPosition),
luaRegister(setGemName),
luaRegister(setGemBlink),
luaRegister(removeGem),
luaRegister(setBeacon),
luaRegister(getBeacon),

View file

@ -1344,7 +1344,7 @@ void WorldMapRender::addAllGems()
for (Continuity::Gems::reverse_iterator i = dsq->continuity.gems.rbegin(); i != dsq->continuity.gems.rend(); i++)
{
GemMover *g = addGem(&(*i));
if (c == dsq->continuity.gems.size()-1)
if (c == dsq->continuity.gems.size()-1 || i->blink)
g->setBlink(true);
else
g->setBlink(false);