update
This commit is contained in:
+17
-1
@@ -1,4 +1,5 @@
|
||||
#include "unitrenderer.h"
|
||||
#include "pathfinder.h"
|
||||
#include <cmath>
|
||||
#include <vector>
|
||||
|
||||
@@ -92,7 +93,10 @@ void UnitRenderer::renderUnits(
|
||||
const QMatrix4x4 &projection,
|
||||
const QMatrix4x4 &vMatrix,
|
||||
const QVector3D &lightDir,
|
||||
int selectedUnitId)
|
||||
int selectedUnitId,
|
||||
int cityViewRadius,
|
||||
int cityViewTileX,
|
||||
int cityViewTileY)
|
||||
{
|
||||
if (!m_initialized || !m_program) return;
|
||||
|
||||
@@ -103,6 +107,12 @@ void UnitRenderer::renderUnits(
|
||||
|
||||
// 1. Render Cities (as stylized hexagonal / cylindrical city bastions)
|
||||
for (const auto &c : cities) {
|
||||
if (cityViewRadius >= 0) {
|
||||
if (c.tileX != cityViewTileX || c.tileY != cityViewTileY) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
const Player *p = players.getPlayer(c.playerId);
|
||||
QColor col = p ? p->primaryColor : QColor(100, 100, 100);
|
||||
|
||||
@@ -125,6 +135,12 @@ void UnitRenderer::renderUnits(
|
||||
for (const auto &unit : units) {
|
||||
if (unit->isDead()) continue;
|
||||
|
||||
if (cityViewRadius >= 0) {
|
||||
if (Pathfinder::hexDistance(cityViewTileX, cityViewTileY, unit->tileX, unit->tileY) > cityViewRadius) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
const Player *player = players.getPlayer(unit->playerId);
|
||||
QColor col = player ? player->primaryColor : QColor(200, 200, 200);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user