Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ Draw()

void Terraria.GameContent.UI.NewMultiplayerClosePlayersOverlay.Draw ( )
inline

Implements Terraria.GameContent.UI.IMultiplayerClosePlayersOverlay.

Definition at line 110 of file NewMultiplayerClosePlayersOverlay.cs.

111 {
112 int teamNamePlateDistance = Main.teamNamePlateDistance;
113 if (teamNamePlateDistance <= 0)
114 {
115 return;
116 }
119 SpriteBatch spriteBatch = Main.spriteBatch;
121 int screenWidth = Main.screenWidth;
122 int screenHeight = Main.screenHeight;
123 Vector2 screenPosition = Main.screenPosition;
125 int num = teamNamePlateDistance * 8;
126 Player[] player = Main.player;
127 int myPlayer = Main.myPlayer;
128 byte mouseTextColor = Main.mouseTextColor;
129 Color[] teamColor = Main.teamColor;
130 _ = Main.screenPosition;
131 Player player2 = player[myPlayer];
132 float num2 = (float)(int)mouseTextColor / 255f;
133 if (player2.team == 0)
134 {
135 return;
136 }
137 DynamicSpriteFont value = FontAssets.MouseText.Value;
138 for (int i = 0; i < 255; i++)
139 {
140 if (i == myPlayer)
141 {
142 continue;
143 }
144 Player player3 = player[i];
145 if (!player3.active || player3.dead || player3.team != player2.team)
146 {
147 continue;
148 }
149 string name = player3.name;
150 GetDistance(screenWidth, screenHeight, screenPosition, player2, value, player3, name, out var namePlatePos, out var namePlateDist, out var measurement);
151 Color color = new Color((byte)((float)(int)teamColor[player3.team].R * num2), (byte)((float)(int)teamColor[player3.team].G * num2), (byte)((float)(int)teamColor[player3.team].B * num2), mouseTextColor);
152 if (namePlateDist > 0f)
153 {
154 float num3 = player3.Distance(player2.Center);
155 if (!(num3 > (float)num))
156 {
157 float num4 = 20f;
158 float num5 = -27f;
159 num5 -= (measurement.X - 85f) / 2f;
160 string textValue = Language.GetTextValue("GameUI.PlayerDistance", (int)(num3 / 16f * 2f));
161 Vector2 npDistPos = value.MeasureString(textValue);
162 npDistPos.X = namePlatePos.X - num5;
163 npDistPos.Y = namePlatePos.Y + measurement.Y / 2f - npDistPos.Y / 2f - num4;
164 _playerOffScreenCache.Add(new PlayerOffScreenCache(name, namePlatePos, color, npDistPos, textValue, player3, measurement));
165 }
166 }
167 else
168 {
169 _playerOnScreenCache.Add(new PlayerOnScreenCache(name, namePlatePos, color));
170 }
171 }
172 spriteBatch.End();
173 spriteBatch.Begin(SpriteSortMode.Deferred, null, null, null, null, null, Main.UIScaleMatrix);
174 for (int j = 0; j < _playerOnScreenCache.Count; j++)
175 {
176 _playerOnScreenCache[j].DrawPlayerName_WhenPlayerIsOnScreen(spriteBatch);
177 }
178 for (int k = 0; k < _playerOffScreenCache.Count; k++)
179 {
180 _playerOffScreenCache[k].DrawPlayerName(spriteBatch);
181 }
182 for (int l = 0; l < _playerOffScreenCache.Count; l++)
183 {
184 _playerOffScreenCache[l].DrawPlayerDistance(spriteBatch);
185 }
186 spriteBatch.End();
187 spriteBatch.Begin(SpriteSortMode.Deferred, null, null, null, null, null, Main.UIScaleMatrix);
188 for (int m = 0; m < _playerOffScreenCache.Count; m++)
189 {
190 _playerOffScreenCache[m].DrawLifeBar();
191 }
192 spriteBatch.End();
193 spriteBatch.Begin(SpriteSortMode.Immediate, null, null, null, null, null, Main.UIScaleMatrix);
194 for (int n = 0; n < _playerOffScreenCache.Count; n++)
195 {
196 _playerOffScreenCache[n].DrawPlayerHead();
197 }
198 }
void Add(TKey key, TValue value)
static void GetDistance(int testWidth, int testHeight, Vector2 testPosition, Player localPlayer, DynamicSpriteFont font, Player player, string nameToShow, out Vector2 namePlatePos, out float namePlateDist, out Vector2 measurement)
static string GetTextValue(string key)
Definition Language.cs:15

References Terraria.GameContent.UI.NewMultiplayerClosePlayersOverlay._playerOffScreenCache, Terraria.GameContent.UI.NewMultiplayerClosePlayersOverlay._playerOnScreenCache, System.Collections.Generic.Dictionary< TKey, TValue >.Add(), Microsoft.Xna.Framework.Color.B, Microsoft.Xna.Framework.Graphics.SpriteBatch.Begin(), System.Collections.Generic.Dictionary< TKey, TValue >.Clear(), Microsoft.Xna.Framework.Graphics.Color, System.Collections.Generic.Dictionary< TKey, TValue >.Count, Microsoft.Xna.Framework.Graphics.SpriteBatch.End(), Microsoft.Xna.Framework.Color.G, Terraria.GameContent.UI.NewMultiplayerClosePlayersOverlay.GetDistance(), Terraria.Localization.Language.GetTextValue(), Terraria.GameContent.FontAssets.MouseText, Terraria.Main.mouseTextColor, Terraria.Main.myPlayer, Terraria.Main.player, Microsoft.Xna.Framework.Color.R, Terraria.Main.screenHeight, Terraria.Main.screenPosition, Terraria.Main.screenWidth, Terraria.GameInput.PlayerInput.SetZoom_UI(), Terraria.GameInput.PlayerInput.SetZoom_World(), Terraria.Main.spriteBatch, Terraria.Main.teamColor, Terraria.Main.teamNamePlateDistance, Terraria.Main.UIScaleMatrix, and System.value.