|
@@ -68,25 +68,25 @@ static void setScrollingCursor(ui8 direction)
|
|
|
if(direction & CAdvMapInt::RIGHT)
|
|
|
{
|
|
|
if(direction & CAdvMapInt::UP)
|
|
|
- CCS->curh->changeGraphic(ECursor::ADVENTURE, 33);
|
|
|
+ CCS->curh->set(Cursor::Map::SCROLL_NORTHEAST);
|
|
|
else if(direction & CAdvMapInt::DOWN)
|
|
|
- CCS->curh->changeGraphic(ECursor::ADVENTURE, 35);
|
|
|
+ CCS->curh->set(Cursor::Map::SCROLL_SOUTHEAST);
|
|
|
else
|
|
|
- CCS->curh->changeGraphic(ECursor::ADVENTURE, 34);
|
|
|
+ CCS->curh->set(Cursor::Map::SCROLL_EAST);
|
|
|
}
|
|
|
else if(direction & CAdvMapInt::LEFT)
|
|
|
{
|
|
|
if(direction & CAdvMapInt::UP)
|
|
|
- CCS->curh->changeGraphic(ECursor::ADVENTURE, 39);
|
|
|
+ CCS->curh->set(Cursor::Map::SCROLL_NORTHWEST);
|
|
|
else if(direction & CAdvMapInt::DOWN)
|
|
|
- CCS->curh->changeGraphic(ECursor::ADVENTURE, 37);
|
|
|
+ CCS->curh->set(Cursor::Map::SCROLL_SOUTHWEST);
|
|
|
else
|
|
|
- CCS->curh->changeGraphic(ECursor::ADVENTURE, 38);
|
|
|
+ CCS->curh->set(Cursor::Map::SCROLL_WEST);
|
|
|
}
|
|
|
else if(direction & CAdvMapInt::UP)
|
|
|
- CCS->curh->changeGraphic(ECursor::ADVENTURE, 32);
|
|
|
+ CCS->curh->set(Cursor::Map::SCROLL_NORTH);
|
|
|
else if(direction & CAdvMapInt::DOWN)
|
|
|
- CCS->curh->changeGraphic(ECursor::ADVENTURE, 36);
|
|
|
+ CCS->curh->set(Cursor::Map::SCROLL_SOUTH);
|
|
|
}
|
|
|
|
|
|
CTerrainRect::CTerrainRect()
|
|
@@ -231,7 +231,7 @@ void CTerrainRect::handleHover(const SDL_MouseMotionEvent &sEvent)
|
|
|
|
|
|
if(tHovered != pom) //tile outside the map
|
|
|
{
|
|
|
- CCS->curh->changeGraphic(ECursor::ADVENTURE, 0);
|
|
|
+ CCS->curh->set(Cursor::Map::POINTER);
|
|
|
return;
|
|
|
}
|
|
|
|
|
@@ -247,7 +247,7 @@ void CTerrainRect::hover(bool on)
|
|
|
if (!on)
|
|
|
{
|
|
|
adventureInt->statusbar->clear();
|
|
|
- CCS->curh->changeGraphic(ECursor::ADVENTURE,0);
|
|
|
+ CCS->curh->set(Cursor::Map::POINTER);
|
|
|
}
|
|
|
//Hoverable::hover(on);
|
|
|
}
|
|
@@ -968,7 +968,7 @@ void CAdvMapInt::deactivate()
|
|
|
{
|
|
|
scrollingDir = 0;
|
|
|
|
|
|
- CCS->curh->changeGraphic(ECursor::ADVENTURE,0);
|
|
|
+ CCS->curh->set(Cursor::Map::POINTER);
|
|
|
activeMapPanel->deactivate();
|
|
|
if (mode == EAdvMapMode::NORMAL)
|
|
|
{
|
|
@@ -1125,7 +1125,7 @@ void CAdvMapInt::handleMapScrollingUpdate()
|
|
|
}
|
|
|
else if(scrollingState)
|
|
|
{
|
|
|
- CCS->curh->changeGraphic(ECursor::ADVENTURE, 0);
|
|
|
+ CCS->curh->set(Cursor::Map::POINTER);
|
|
|
scrollingState = false;
|
|
|
}
|
|
|
}
|
|
@@ -1138,7 +1138,7 @@ void CAdvMapInt::handleSwipeUpdate()
|
|
|
auto fixedPos = LOCPLINT->repairScreenPos(swipeTargetPosition);
|
|
|
position.x = fixedPos.x;
|
|
|
position.y = fixedPos.y;
|
|
|
- CCS->curh->changeGraphic(ECursor::DEFAULT, 0);
|
|
|
+ CCS->curh->set(Cursor::Map::POINTER);
|
|
|
updateScreen = true;
|
|
|
minimap.redraw();
|
|
|
swipeMovementRequested = false;
|
|
@@ -1656,7 +1656,7 @@ void CAdvMapInt::tileHovered(const int3 &mapPos)
|
|
|
return;
|
|
|
if(!LOCPLINT->cb->isVisible(mapPos))
|
|
|
{
|
|
|
- CCS->curh->changeGraphic(ECursor::ADVENTURE, 0);
|
|
|
+ CCS->curh->set(Cursor::Map::POINTER);
|
|
|
statusbar->clear();
|
|
|
return;
|
|
|
}
|
|
@@ -1682,18 +1682,18 @@ void CAdvMapInt::tileHovered(const int3 &mapPos)
|
|
|
{
|
|
|
case SpellID::SCUTTLE_BOAT:
|
|
|
if(objAtTile && objAtTile->ID == Obj::BOAT)
|
|
|
- CCS->curh->changeGraphic(ECursor::ADVENTURE, 42);
|
|
|
+ CCS->curh->set(Cursor::Map::SCUTTLE_BOAT);
|
|
|
else
|
|
|
- CCS->curh->changeGraphic(ECursor::ADVENTURE, 0);
|
|
|
+ CCS->curh->set(Cursor::Map::POINTER);
|
|
|
return;
|
|
|
case SpellID::DIMENSION_DOOR:
|
|
|
{
|
|
|
const TerrainTile * t = LOCPLINT->cb->getTile(mapPos, false);
|
|
|
int3 hpos = selection->getSightCenter();
|
|
|
if((!t || t->isClear(LOCPLINT->cb->getTile(hpos))) && isInScreenRange(hpos, mapPos))
|
|
|
- CCS->curh->changeGraphic(ECursor::ADVENTURE, 41);
|
|
|
+ CCS->curh->set(Cursor::Map::TELEPORT);
|
|
|
else
|
|
|
- CCS->curh->changeGraphic(ECursor::ADVENTURE, 0);
|
|
|
+ CCS->curh->set(Cursor::Map::POINTER);
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
@@ -1704,17 +1704,25 @@ void CAdvMapInt::tileHovered(const int3 &mapPos)
|
|
|
if(objAtTile)
|
|
|
{
|
|
|
if(objAtTile->ID == Obj::TOWN && objRelations != PlayerRelations::ENEMIES)
|
|
|
- CCS->curh->changeGraphic(ECursor::ADVENTURE, 3);
|
|
|
+ CCS->curh->set(Cursor::Map::TOWN);
|
|
|
else if(objAtTile->ID == Obj::HERO && objRelations == PlayerRelations::SAME_PLAYER)
|
|
|
- CCS->curh->changeGraphic(ECursor::ADVENTURE, 2);
|
|
|
+ CCS->curh->set(Cursor::Map::HERO);
|
|
|
else
|
|
|
- CCS->curh->changeGraphic(ECursor::ADVENTURE, 0);
|
|
|
+ CCS->curh->set(Cursor::Map::POINTER);
|
|
|
}
|
|
|
else
|
|
|
- CCS->curh->changeGraphic(ECursor::ADVENTURE, 0);
|
|
|
+ CCS->curh->set(Cursor::Map::POINTER);
|
|
|
}
|
|
|
else if(const CGHeroInstance * h = curHero())
|
|
|
{
|
|
|
+ std::array<Cursor::Map, 4> cursorMove = { Cursor::Map::T1_MOVE, Cursor::Map::T2_MOVE, Cursor::Map::T3_MOVE, Cursor::Map::T4_MOVE, };
|
|
|
+ std::array<Cursor::Map, 4> cursorAttack = { Cursor::Map::T1_ATTACK, Cursor::Map::T2_ATTACK, Cursor::Map::T3_ATTACK, Cursor::Map::T4_ATTACK, };
|
|
|
+ std::array<Cursor::Map, 4> cursorSail = { Cursor::Map::T1_SAIL, Cursor::Map::T2_SAIL, Cursor::Map::T3_SAIL, Cursor::Map::T4_SAIL, };
|
|
|
+ std::array<Cursor::Map, 4> cursorDisembark = { Cursor::Map::T1_DISEMBARK, Cursor::Map::T2_DISEMBARK, Cursor::Map::T3_DISEMBARK, Cursor::Map::T4_DISEMBARK, };
|
|
|
+ std::array<Cursor::Map, 4> cursorExchange = { Cursor::Map::T1_EXCHANGE, Cursor::Map::T2_EXCHANGE, Cursor::Map::T3_EXCHANGE, Cursor::Map::T4_EXCHANGE, };
|
|
|
+ std::array<Cursor::Map, 4> cursorVisit = { Cursor::Map::T1_VISIT, Cursor::Map::T2_VISIT, Cursor::Map::T3_VISIT, Cursor::Map::T4_VISIT, };
|
|
|
+ std::array<Cursor::Map, 4> cursorSailVisit = { Cursor::Map::T1_SAIL_VISIT, Cursor::Map::T2_SAIL_VISIT, Cursor::Map::T3_SAIL_VISIT, Cursor::Map::T4_SAIL_VISIT, };
|
|
|
+
|
|
|
const CGPathNode * pnode = LOCPLINT->cb->getPathsInfo(h)->getPathInfo(mapPos);
|
|
|
assert(pnode);
|
|
|
|
|
@@ -1725,9 +1733,9 @@ void CAdvMapInt::tileHovered(const int3 &mapPos)
|
|
|
case CGPathNode::NORMAL:
|
|
|
case CGPathNode::TELEPORT_NORMAL:
|
|
|
if(pnode->layer == EPathfindingLayer::LAND)
|
|
|
- CCS->curh->changeGraphic(ECursor::ADVENTURE, 4 + turns*6);
|
|
|
+ CCS->curh->set(cursorMove[turns]);
|
|
|
else
|
|
|
- CCS->curh->changeGraphic(ECursor::ADVENTURE, 28 + turns);
|
|
|
+ CCS->curh->set(cursorSailVisit[turns]);
|
|
|
break;
|
|
|
|
|
|
case CGPathNode::VISIT:
|
|
@@ -1736,48 +1744,48 @@ void CAdvMapInt::tileHovered(const int3 &mapPos)
|
|
|
if(objAtTile && objAtTile->ID == Obj::HERO)
|
|
|
{
|
|
|
if(selection == objAtTile)
|
|
|
- CCS->curh->changeGraphic(ECursor::ADVENTURE, 2);
|
|
|
+ CCS->curh->set(Cursor::Map::HERO);
|
|
|
else
|
|
|
- CCS->curh->changeGraphic(ECursor::ADVENTURE, 8 + turns*6);
|
|
|
+ CCS->curh->set(cursorExchange[turns]);
|
|
|
}
|
|
|
else if(pnode->layer == EPathfindingLayer::LAND)
|
|
|
- CCS->curh->changeGraphic(ECursor::ADVENTURE, 9 + turns*6);
|
|
|
+ CCS->curh->set(cursorVisit[turns]);
|
|
|
else
|
|
|
- CCS->curh->changeGraphic(ECursor::ADVENTURE, 28 + turns);
|
|
|
+ CCS->curh->set(cursorSailVisit[turns]);
|
|
|
break;
|
|
|
|
|
|
case CGPathNode::BATTLE:
|
|
|
case CGPathNode::TELEPORT_BATTLE:
|
|
|
- CCS->curh->changeGraphic(ECursor::ADVENTURE, 5 + turns*6);
|
|
|
+ CCS->curh->set(cursorAttack[turns]);
|
|
|
break;
|
|
|
|
|
|
case CGPathNode::EMBARK:
|
|
|
- CCS->curh->changeGraphic(ECursor::ADVENTURE, 6 + turns*6);
|
|
|
+ CCS->curh->set(cursorSail[turns]);
|
|
|
break;
|
|
|
|
|
|
case CGPathNode::DISEMBARK:
|
|
|
- CCS->curh->changeGraphic(ECursor::ADVENTURE, 7 + turns*6);
|
|
|
+ CCS->curh->set(cursorDisembark[turns]);
|
|
|
break;
|
|
|
|
|
|
default:
|
|
|
if(objAtTile && objRelations != PlayerRelations::ENEMIES)
|
|
|
{
|
|
|
if(objAtTile->ID == Obj::TOWN)
|
|
|
- CCS->curh->changeGraphic(ECursor::ADVENTURE, 3);
|
|
|
+ CCS->curh->set(Cursor::Map::TOWN);
|
|
|
else if(objAtTile->ID == Obj::HERO && objRelations == PlayerRelations::SAME_PLAYER)
|
|
|
- CCS->curh->changeGraphic(ECursor::ADVENTURE, 2);
|
|
|
+ CCS->curh->set(Cursor::Map::HERO);
|
|
|
else
|
|
|
- CCS->curh->changeGraphic(ECursor::ADVENTURE, 0);
|
|
|
+ CCS->curh->set(Cursor::Map::POINTER);
|
|
|
}
|
|
|
else
|
|
|
- CCS->curh->changeGraphic(ECursor::ADVENTURE, 0);
|
|
|
+ CCS->curh->set(Cursor::Map::POINTER);
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if(ourInaccessibleShipyard(objAtTile))
|
|
|
{
|
|
|
- CCS->curh->changeGraphic(ECursor::ADVENTURE, 6);
|
|
|
+ CCS->curh->set(Cursor::Map::T1_SAIL);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1857,7 +1865,9 @@ const IShipyard * CAdvMapInt::ourInaccessibleShipyard(const CGObjectInstance *ob
|
|
|
{
|
|
|
const IShipyard *ret = IShipyard::castFrom(obj);
|
|
|
|
|
|
- if(!ret || obj->tempOwner != player || CCS->curh->type || (CCS->curh->frame != 6 && CCS->curh->frame != 0))
|
|
|
+ if(!ret ||
|
|
|
+ obj->tempOwner != player ||
|
|
|
+ (CCS->curh->get<Cursor::Map>() != Cursor::Map::T1_SAIL && CCS->curh->get<Cursor::Map>() != Cursor::Map::POINTER))
|
|
|
return nullptr;
|
|
|
|
|
|
return ret;
|