Skip to content

Commit 1f7d5d1

Browse files
committed
add shadows to pathfinding orbs to better represent their height.
1 parent 5eb89ea commit 1f7d5d1

7 files changed

Lines changed: 36 additions & 6 deletions

File tree

Makefile.am

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ pkgdata_DATA = bin/data/README.txt
2828
resourcesdir = $(pkgdatadir)/data/Resources
2929
resources_DATA = \
3030
bin/data/Resources/Pathfinding_Orb.png \
31+
bin/data/Resources/Pathfinding_Shadow.png \
32+
bin/data/Resources/Floating_Orb.png \
3133
bin/data/Resources/Alternate_Pathfinding_Orb.png
3234

3335
rulesetdir = $(pkgdatadir)/data/Ruleset
3.54 KB
Loading
0 Bytes
Loading
3.53 KB
Loading

bin/data/Ruleset/Xcom1Ruleset.rul

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2833,6 +2833,14 @@ items:
28332833
recover: false
28342834
floorSprite: 73
28352835
weight: 1000
2836+
- type: FLOATING_ORB
2837+
recover: false
2838+
floorSprite: 74
2839+
weight: 1000
2840+
- type: PATHFINDER_SHADOW
2841+
recover: false
2842+
floorSprite: 75
2843+
weight: 999
28362844
ufos:
28372845
- type: STR_SMALL_SCOUT
28382846
size: STR_VERY_SMALL
@@ -9321,6 +9329,8 @@ extraSprites:
93219329
- type: FLOOROB.PCK
93229330
files:
93239331
73: Resources/Pathfinding_Orb.png
9332+
74: Resources/Floating_Orb.png
9333+
75: Resources/Pathfinding_Shadow.png
93249334
#New spritesheet Example:
93259335
# - type: GIANTBUNNY.PCK
93269336
# width: 32

src/Battlescape/Pathfinding.cpp

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -797,18 +797,33 @@ bool Pathfinding::previewPath(bool bRemove)
797797
Tile *tileBelow = _save->getTile(pos + Position(x,y,-1));
798798
if (!bRemove)
799799
{
800-
BattleItem *item = new BattleItem(_save->getBattleState()->getGame()->getRuleset()->getItem("PATHFINDER_ORB"), _save->getCurrentItemId());
800+
BattleItem *item;
801+
if (tile->getPosition().z > 0 && tile->hasNoFloor(tileBelow))
802+
{
803+
BattleItem *itemB = new BattleItem(_save->getBattleState()->getGame()->getRuleset()->getItem("PATHFINDER_SHADOW"), _save->getCurrentItemId());
804+
tile->addItem(itemB, _save->getBattleState()->getGame()->getRuleset()->getInventory("STR_GROUND"));
805+
_save->getTileEngine()->applyGravity(tile);
806+
item = new BattleItem(_save->getBattleState()->getGame()->getRuleset()->getItem("FLOATING_ORB"), _save->getCurrentItemId());
807+
}
808+
else
809+
{
810+
item = new BattleItem(_save->getBattleState()->getGame()->getRuleset()->getItem("PATHFINDER_ORB"), _save->getCurrentItemId());
811+
}
801812
tile->addItem(item, _save->getBattleState()->getGame()->getRuleset()->getInventory("STR_GROUND"));
802813
}
803814
else
804815
{
805-
for (std::vector<BattleItem*>::iterator j = tile->getInventory()->begin(); j != tile->getInventory()->end(); ++j)
816+
Tile *tile2 = _save->getTileEngine()->applyGravity(tile);
817+
for (std::vector<BattleItem*>::iterator j = tile2->getInventory()->begin(); j != tile2->getInventory()->end();)
806818
{
807-
if ((*j)->getRules()->getType() == "PATHFINDER_ORB")
819+
if ((*j)->getRules()->getType() == "PATHFINDER_ORB" || (*j)->getRules()->getType() == "PATHFINDER_SHADOW" || (*j)->getRules()->getType() == "FLOATING_ORB")
808820
{
809821
delete *j;
810-
tile->getInventory()->erase(j);
811-
break;
822+
j = tile2->getInventory()->erase(j);
823+
}
824+
else
825+
{
826+
++j;
812827
}
813828
}
814829
}

src/Engine/Surface.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -817,7 +817,10 @@ struct ColorReplace
817817
if(src)
818818
{
819819
const int newShade = (src&15) + shade;
820-
if (newShade > 15)
820+
if (src > 248)
821+
// preserve blacks.
822+
dest = src;
823+
else if (newShade > 15)
821824
// so dark it would flip over to another color - make it black instead
822825
dest = 15;
823826
else

0 commit comments

Comments
 (0)