Вывод информации о вражеских юнитах на карте в NeoAxis Engine
По просьбам трудящихся.
В классе игрового окна пишем метод -
void DrawEnemyCounter( GuiRenderer renderer )
{
int count = 0;
foreach ( Entity e in Map.Instance.Children )
{
Unit u = e as Unit;
if ( u != null && u.Intellect != null
&& u.Intellect.Faction != GetPlayerUnit().Intellect.Faction )
count++;
}
string str = string.Format( "Enemy on Map - {0}", count );
renderer.AddText( str, new Vec2( .25f, .25f ),
HorizontalAlign.Center, VerticalAlign.Center );
}
Далее нужно выполнить этот метод в методе
OnRenderUI -
protected override void OnRenderUI( GuiRenderer renderer )
{
base.OnRenderUI( renderer );
//Draw some HUD information
if( GetPlayerUnit() != null )
{
if( GetRealCameraType() != CameraType.Free && !IsCutSceneEnabled() &&
GetActiveObserveCameraArea() == null )
{
DrawTarget( renderer );
}
// Выполняем вывод информации о вражеских юнитах на карте.
DrawEnemyCounter( renderer );
DrawPlayerInformation( renderer );
bool activeConsole = EngineConsole.Instance != null && EngineConsole.Instance.Active;
if( EngineApp.Instance.IsKeyPressed( EKeys.Tab ) && !activeConsole )
DrawPlayersStatistics( renderer );
if( GameNetworkServer.Instance != null || GameNetworkClient.Instance != null )
{
renderer.AddText( ""Tab" for players statistics", new Vec2( .01f, .1f ),
HorizontalAlign.Left, VerticalAlign.Top, new ColorValue( 1, 1, 1, .5f ) );
}
}
//Game is paused on server
if( EntitySystemWorld.Instance.IsClientOnly() && !EntitySystemWorld.Instance.Simulation )
{
renderer.AddText( "Game is paused on server", new Vec2( .5f, .5f ),
HorizontalAlign.Center, VerticalAlign.Center, new ColorValue( 1, 0, 0 ) );
}
}
Вот собственно и всё.
Обсудить данный урок можно здесь.
При размещении данного урока на других ресурсах прямая ссылка на данную страницу обязательна.
Оглавление
| На верх