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

◆ DrawToMap()

void Terraria.Main.DrawToMap ( )
inlineprotected

Definition at line 52050 of file Main.cs.

52051 {
52052 if (!mapEnabled)
52053 {
52054 return;
52055 }
52056 int num = maxTilesX / textureMaxWidth;
52058 for (int i = 0; i <= num; i++)
52059 {
52060 for (int j = 0; j <= num2; j++)
52061 {
52062 if (!checkMap(i, j))
52063 {
52064 return;
52065 }
52066 }
52067 }
52068 if (clearMap)
52069 {
52070 for (int k = 0; k <= num; k++)
52071 {
52072 for (int l = 0; l <= num2; l++)
52073 {
52074 base.GraphicsDevice.SetRenderTarget(mapTarget[k, l]);
52076 base.GraphicsDevice.SetRenderTarget(null);
52077 }
52078 }
52079 clearMap = false;
52080 }
52081 int num3 = -1;
52082 int num4 = -1;
52083 bool flag = false;
52084 int num5 = 0;
52085 int num6 = mapMinY;
52086 int num7 = mapMinY;
52087 int num8 = mapMaxY;
52088 int num9 = mapMaxY;
52089 int num10 = 1;
52091 {
52094 num10 = 2;
52095 }
52096 for (int m = 0; m < num10; m++)
52097 {
52098 switch (m)
52099 {
52100 case 0:
52101 mapMinY = num6;
52102 mapMaxY = num8;
52103 break;
52104 case 1:
52105 mapMinY = num7;
52106 mapMaxY = num9;
52107 break;
52108 }
52109 if (mapMinX < 0)
52110 {
52111 mapMinX = 0;
52112 }
52113 if (mapMinX >= maxTilesX)
52114 {
52115 mapMinX = maxTilesX - 1;
52116 }
52117 if (mapMinY < 0)
52118 {
52119 mapMinY = 0;
52120 }
52121 if (mapMinY >= maxTilesY)
52122 {
52123 mapMinY = maxTilesY - 1;
52124 }
52125 for (int n = mapMinX; n < mapMaxX; n++)
52126 {
52127 for (int num11 = mapMinY; num11 < mapMaxY; num11++)
52128 {
52129 MapTile mapTile = Map[n, num11];
52131 {
52132 continue;
52133 }
52134 num5++;
52135 if (num5 >= maxMapUpdates)
52136 {
52137 continue;
52138 }
52139 if (loadMap)
52140 {
52141 loadMapLastX = n;
52142 }
52143 Map.ConsumeUpdate(n, num11);
52144 int num12 = n / textureMaxWidth;
52146 if (num12 != num3 || num13 != num4)
52147 {
52148 num3 = num12;
52149 num4 = num13;
52150 if (flag)
52151 {
52152 spriteBatch.End();
52153 base.GraphicsDevice.SetRenderTarget(null);
52154 }
52155 flag = true;
52156 base.GraphicsDevice.SetRenderTarget(mapTarget[num12, num13]);
52157 spriteBatch.Begin();
52158 }
52159 int num14 = n - num12 * textureMaxWidth;
52162 int num16 = 1;
52163 int num17 = 1;
52164 int num18 = num11 + 1;
52165 while (num18 < mapMaxY)
52166 {
52167 MapTile other;
52168 MapTile mapTile2 = (other = Map[n, num18]);
52169 if (!mapTile2.IsChanged || !mapTile.Equals(ref other) || num18 / textureMaxHeight != num13)
52170 {
52171 break;
52172 }
52173 Map.ConsumeUpdate(n, num18);
52174 num16++;
52175 num18++;
52176 num11++;
52177 }
52178 if (num16 == 1)
52179 {
52180 for (num18 = n + 1; num18 < mapMaxX; num18++)
52181 {
52182 MapTile other;
52183 MapTile mapTile2 = (other = Map[num18, num11]);
52184 if (!mapTile2.IsChanged || !mapTile.Equals(ref other) || num18 / textureMaxWidth != num12)
52185 {
52186 break;
52187 }
52188 Map.ConsumeUpdate(num18, num11);
52189 num17++;
52190 }
52191 }
52193 }
52194 }
52195 }
52196 for (int num19 = 0; num19 < MapHelper.numUpdateTile; num19++)
52197 {
52200 MapTile mapTile3 = Map[num20, num21];
52201 if (!mapTile3.IsChanged)
52202 {
52203 continue;
52204 }
52205 Map.ConsumeUpdate(num20, num21);
52206 int num22 = num20 / textureMaxWidth;
52208 if (num22 != num3 || num23 != num4)
52209 {
52210 num3 = num22;
52211 num4 = num23;
52212 if (flag)
52213 {
52214 spriteBatch.End();
52215 base.GraphicsDevice.SetRenderTarget(null);
52216 }
52217 flag = true;
52218 base.GraphicsDevice.SetRenderTarget(mapTarget[num22, num23]);
52219 spriteBatch.Begin();
52220 }
52221 int num24 = num20 - num22 * textureMaxWidth;
52224 spriteBatch.Draw(TextureAssets.MagicPixel.Value, new Vector2(num24, num25), new Microsoft.Xna.Framework.Rectangle(0, 0, 1, 1), mapTileXnaColor2, 0f, default(Vector2), 1f, SpriteEffects.None, 0f);
52225 }
52226 MapHelper.numUpdateTile = 0;
52227 if (flag)
52228 {
52229 spriteBatch.End();
52230 base.GraphicsDevice.SetRenderTarget(null);
52231 }
52232 mapReady = true;
52233 loadMapLastX = 0;
52234 loadMap = false;
52235 loadMapLock = false;
52236 }
static Asset< Texture2D > MagicPixel
static bool clearMap
Definition Main.cs:886
static int maxTilesY
Definition Main.cs:1116
bool checkMap(int i, int j)
Definition Main.cs:55019
static int maxMapUpdates
Definition Main.cs:856
static int loadMapLastX
Definition Main.cs:860
RenderTarget2D[,] mapTarget
Definition Main.cs:892
static SpriteBatch spriteBatch
Definition Main.cs:974
static bool loadMapLock
Definition Main.cs:862
static int maxTilesX
Definition Main.cs:1114
static int mapMinY
Definition Main.cs:878
static int mapMaxX
Definition Main.cs:876
static int mapMinX
Definition Main.cs:874
static int textureMaxHeight
Definition Main.cs:870
static int textureMaxWidth
Definition Main.cs:868
static bool mapEnabled
Definition Main.cs:906
static int mapMaxY
Definition Main.cs:880
static bool loadMap
Definition Main.cs:864
static bool mapReady
Definition Main.cs:866
static short[] updateTileY
Definition MapHelper.cs:172
static Color GetMapTileXnaColor(ref MapTile tile)
static int numUpdateTile
Definition MapHelper.cs:168
static short[] updateTileX
Definition MapHelper.cs:170
static Color Transparent
Definition Color.cs:76

References Terraria.Main.checkMap(), System.Collections.Generic.Dictionary< TKey, TValue >.Clear(), Terraria.Main.clearMap, Terraria.Map.MapHelper.GetMapTileXnaColor(), System.Text.RegularExpressions.i, Microsoft.Xna.Framework.Graphics.RenderTarget2D.IsContentLost, Terraria.Main.loadMap, Terraria.Main.loadMapLastX, Terraria.Main.loadMapLock, Terraria.GameContent.TextureAssets.MagicPixel, Terraria.Main.mapEnabled, Terraria.Main.mapMaxX, Terraria.Main.mapMaxY, Terraria.Main.mapMinX, Terraria.Main.mapMinY, Terraria.Main.mapReady, Terraria.Main.mapTarget, Terraria.Main.maxMapUpdates, Terraria.Main.maxTilesX, Terraria.Main.maxTilesY, Terraria.Map.MapHelper.numUpdateTile, System.other, Terraria.Main.spriteBatch, Terraria.Main.textureMaxHeight, Terraria.Main.textureMaxWidth, Microsoft.Xna.Framework.Color.Transparent, Terraria.Map.MapHelper.updateTileX, and Terraria.Map.MapHelper.updateTileY.

Referenced by Terraria.Main.DoDraw().