diff --git a/source/gui/MiniMap.cpp b/source/gui/MiniMap.cpp index 9e7c0aa52c..36d4eca73a 100755 --- a/source/gui/MiniMap.cpp +++ b/source/gui/MiniMap.cpp @@ -101,9 +101,18 @@ void CMiniMap::Draw() unit = (CUnit *)(*iter); if(unit && unit->GetEntity()) { - // Set the player colour - const SPlayerColour& colour = unit->GetEntity()->GetPlayer()->GetColour(); - glColor3f(colour.r, colour.g, colour.b); + CEntity* entity = unit->GetEntity(); + CStrW& type = entity->m_minimapType; + + if(type==L"Unit" || type==L"Structure" || type==L"Hero") { + // Set the player colour + const SPlayerColour& colour = unit->GetEntity()->GetPlayer()->GetColour(); + glColor3f(colour.r, colour.g, colour.b); + } + else { + glColor3f(entity->m_minimapR/255.0f, entity->m_minimapG/255.0f, entity->m_minimapB/255.0f); + } + pos = GetMapSpaceCoords(unit->GetEntity()->m_position); diff --git a/source/simulation/BaseEntity.cpp b/source/simulation/BaseEntity.cpp index 6169fc5e2f..0fe2a1598e 100755 --- a/source/simulation/BaseEntity.cpp +++ b/source/simulation/BaseEntity.cpp @@ -29,6 +29,10 @@ CBaseEntity::CBaseEntity() AddProperty( L"traits.health.curr", &m_healthCurr ); AddProperty( L"traits.health.max", &m_healthMax ); AddProperty( L"traits.health.bar_height", &m_healthBarHeight ); + AddProperty( L"traits.minimap.type", &m_minimapType ); + AddProperty( L"traits.minimap.red", &m_minimapR ); + AddProperty( L"traits.minimap.green", &m_minimapG ); + AddProperty( L"traits.minimap.blue", &m_minimapB ); for( int t = 0; t < EVENT_LAST; t++ ) { diff --git a/source/simulation/BaseEntity.h b/source/simulation/BaseEntity.h index 33b8d1a539..9679be23f8 100755 --- a/source/simulation/BaseEntity.h +++ b/source/simulation/BaseEntity.h @@ -51,12 +51,22 @@ public: CStrW m_actorName; - CStrW m_Tag; CBoundingCircle* m_bound_circle; CBoundingBox* m_bound_box; CBoundingObject::EBoundingType m_bound_type; + // HP properties + float m_healthCurr; + float m_healthMax; + float m_healthBarHeight; + + // Minimap properties + CStrW m_minimapType; + int m_minimapR; + int m_minimapG; + int m_minimapB; + float m_speed; SEntityAction m_melee; SEntityAction m_gather; @@ -69,10 +79,6 @@ public: void setClassSet( jsval value ); void rebuildClassSet(); - float m_healthCurr; - float m_healthMax; - float m_healthBarHeight; - // Script-bound functions // Get script execution contexts - always run in the context of the entity that fired it. diff --git a/source/simulation/Entity.cpp b/source/simulation/Entity.cpp index 5a1b336231..21db961782 100755 --- a/source/simulation/Entity.cpp +++ b/source/simulation/Entity.cpp @@ -50,6 +50,10 @@ CEntity::CEntity( CBaseEntity* base, CVector3D position, float orientation ) AddProperty( L"traits.health.curr", &m_healthCurr ); AddProperty( L"traits.health.max", &m_healthMax ); AddProperty( L"traits.health.bar_height", &m_healthBarHeight ); + AddProperty( L"traits.minimap.type", &m_minimapType ); + AddProperty( L"traits.minimap.red", &m_minimapR ); + AddProperty( L"traits.minimap.green", &m_minimapG ); + AddProperty( L"traits.minimap.blue", &m_minimapB ); for( int t = 0; t < EVENT_LAST; t++ ) { diff --git a/source/simulation/Entity.h b/source/simulation/Entity.h index d217bbe826..babb56ab79 100755 --- a/source/simulation/Entity.h +++ b/source/simulation/Entity.h @@ -82,6 +82,12 @@ public: float m_healthCurr; float m_healthMax; float m_healthBarHeight; + + // Minimap properties + CStrW m_minimapType; + int m_minimapR; + int m_minimapG; + int m_minimapB; //-- Interpolated property CVector3D m_position;