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

◆ DoDraw()

void Terraria.Main.DoDraw ( GameTime gameTime)
inlineprivate

Definition at line 58369 of file Main.cs.

58370 {
58372 stopwatch.Start();
58373 if (showSplash)
58374 {
58376 TimeLogger.SplashDrawTime(stopwatch.Elapsed.TotalMilliseconds);
58377 TimeLogger.EndDrawFrame();
58378 return;
58379 }
58380 if (_drawCycleCounter == 0L)
58381 {
58382 TileFrameSeed = Utils.RandomNextSeed(TileFrameSeed);
58383 }
58385 MenuUI.IsVisible = gameMenu && menuMode == 888;
58386 InGameUI.IsVisible = !gameMenu && InGameUI.CurrentState != null;
58389 CaptureManager.Instance.DrawTick();
58390 TimeLogger.NewDrawFrame();
58391 if (!gameMenu)
58392 {
58394 }
58395 for (int i = 0; i < ContentThatNeedsRenderTargets.Count; i++)
58396 {
58397 ContentThatNeedsRenderTargets[i].PrepareRenderTarget(base.GraphicsDevice, spriteBatch);
58398 }
58400 TimeLogger.DetailedDrawTime(0);
58401 if (loadMap)
58402 {
58403 refreshMap = false;
58404 DrawToMap();
58405 TimeLogger.DetailedDrawTime(1);
58406 }
58407 if (Lighting.UpdateEveryFrame)
58408 {
58409 drawToScreen = true;
58410 }
58411 else
58412 {
58413 drawToScreen = false;
58414 }
58415 if (drawToScreen && targetSet)
58416 {
58418 }
58419 if (!drawToScreen && !targetSet)
58420 {
58421 InitTargets();
58422 }
58423 fpsCount++;
58424 if (!base.IsActive)
58425 {
58426 maxQ = true;
58427 }
58428 if (!dedServ)
58429 {
58431 if (Main.OnPreDraw != null)
58432 {
58433 Main.OnPreDraw(gameTime);
58434 }
58435 }
58438 if (stackSplit == 0)
58439 {
58441 stackCounter = 0;
58442 stackDelay = 7;
58443 superFastStack = 0;
58444 }
58445 else
58446 {
58447 stackCounter++;
58448 int num = 30;
58449 num = ((stackDelay == 7) ? 30 : ((stackDelay == 6) ? 25 : ((stackDelay == 5) ? 20 : ((stackDelay == 4) ? 15 : ((stackDelay != 3) ? 5 : 10)))));
58450 if (stackCounter >= num)
58451 {
58452 stackDelay--;
58453 if (stackDelay < 2)
58454 {
58455 stackDelay = 2;
58457 }
58458 if (timesTriedToFastStack < 10)
58459 {
58460 superFastStack = 0;
58461 }
58463 stackCounter = 0;
58464 }
58465 }
58466 if (myPlayer >= 0)
58467 {
58468 player[myPlayer].lastMouseInterface = player[myPlayer].mouseInterface;
58469 player[myPlayer].mouseInterface = false;
58470 }
58471 if (mapTime > 0)
58472 {
58473 mapTime--;
58474 }
58475 if (gameMenu)
58476 {
58478 }
58479 HoverItem = new Item();
58482 sunCircle += 0.01f;
58483 if ((double)sunCircle > 6.285)
58484 {
58485 sunCircle -= 6.285f;
58486 }
58487 TimeLogger.DetailedDrawReset();
58488 if (!gameMenu)
58489 {
58491 TimeLogger.DetailedDrawTime(2);
58492 if (renderNow)
58493 {
58495 renderNow = false;
58496 renderCount = 99;
58497 Draw(gameTime);
58498 Lighting.LightTiles(firstTileX, lastTileX, firstTileY, lastTileY);
58499 Lighting.LightTiles(firstTileX, lastTileX, firstTileY, lastTileY);
58500 RenderTiles();
58501 sceneTilePos.X = screenPosition.X - (float)offScreenRange;
58502 sceneTilePos.Y = screenPosition.Y - (float)offScreenRange;
58504 sceneBackgroundPos.X = screenPosition.X - (float)offScreenRange;
58505 sceneBackgroundPos.Y = screenPosition.Y - (float)offScreenRange;
58506 RenderWalls();
58507 sceneWallPos.X = screenPosition.X - (float)offScreenRange;
58508 sceneWallPos.Y = screenPosition.Y - (float)offScreenRange;
58509 RenderTiles2();
58510 sceneTile2Pos.X = screenPosition.X - (float)offScreenRange;
58511 sceneTile2Pos.Y = screenPosition.Y - (float)offScreenRange;
58512 RenderWater();
58513 sceneWaterPos.X = screenPosition.X - (float)offScreenRange;
58514 sceneWaterPos.Y = screenPosition.Y - (float)offScreenRange;
58515 renderCount = 99;
58516 }
58517 else
58518 {
58519 if (renderCount == 3)
58520 {
58521 RenderTiles();
58522 sceneTilePos.X = screenPosition.X - (float)offScreenRange;
58523 sceneTilePos.Y = screenPosition.Y - (float)offScreenRange;
58524 }
58525 if (renderCount == 3)
58526 {
58527 RenderTiles2();
58528 sceneTile2Pos.X = screenPosition.X - (float)offScreenRange;
58529 sceneTile2Pos.Y = screenPosition.Y - (float)offScreenRange;
58530 }
58531 if (renderCount == 3)
58532 {
58533 RenderWalls();
58534 sceneWallPos.X = screenPosition.X - (float)offScreenRange;
58535 sceneWallPos.Y = screenPosition.Y - (float)offScreenRange;
58536 }
58537 if (renderCount == 2)
58538 {
58540 sceneBackgroundPos.X = screenPosition.X - (float)offScreenRange;
58541 sceneBackgroundPos.Y = screenPosition.Y - (float)offScreenRange;
58542 }
58543 if (renderCount == 1)
58544 {
58545 RenderWater();
58546 sceneWaterPos.X = screenPosition.X - (float)offScreenRange;
58547 sceneWaterPos.Y = screenPosition.Y - (float)offScreenRange;
58548 }
58549 }
58550 if (render && !gameMenu)
58551 {
58553 {
58554 RenderTiles();
58555 sceneTilePos.X = screenPosition.X - (float)offScreenRange;
58556 sceneTilePos.Y = screenPosition.Y - (float)offScreenRange;
58557 }
58559 {
58560 RenderTiles2();
58561 sceneTile2Pos.X = screenPosition.X - (float)offScreenRange;
58562 sceneTile2Pos.Y = screenPosition.Y - (float)offScreenRange;
58563 }
58565 {
58567 sceneBackgroundPos.X = screenPosition.X - (float)offScreenRange;
58568 sceneBackgroundPos.Y = screenPosition.Y - (float)offScreenRange;
58569 }
58571 {
58572 RenderWalls();
58573 sceneWallPos.X = screenPosition.X - (float)offScreenRange;
58574 sceneWallPos.Y = screenPosition.Y - (float)offScreenRange;
58575 }
58577 {
58578 RenderWater();
58579 sceneWaterPos.X = screenPosition.X - (float)offScreenRange;
58580 sceneWaterPos.Y = screenPosition.Y - (float)offScreenRange;
58581 }
58582 }
58583 }
58584 if (!loadMap)
58585 {
58586 if (!gameMenu)
58587 {
58588 TimeLogger.DetailedDrawReset();
58590 stopwatch2.Start();
58591 int num2 = 0;
58592 int x;
58593 int y;
58594 while (stopwatch2.ElapsedMilliseconds < 5 && sectionManager.GetNextMapDraw(player[myPlayer].position, out x, out y))
58595 {
58596 DrawToMap_Section(x, y);
58597 num2++;
58598 }
58599 TimeLogger.DetailedDrawTime(3);
58600 }
58601 if (updateMap)
58602 {
58603 if (base.IsActive || netMode == 1)
58604 {
58605 if (refreshMap)
58606 {
58607 refreshMap = false;
58608 sectionManager.ClearMapDraw();
58609 }
58610 DrawToMap();
58611 updateMap = false;
58612 }
58613 else if (MapHelper.numUpdateTile > 0)
58614 {
58615 DrawToMap();
58616 }
58617 TimeLogger.DetailedDrawTime(4);
58618 }
58619 }
58620 bgParallax = 0.1;
58623 bgStartY = 0;
58624 bgLoopsY = 0;
58625 bgTopY = (int)((double)(0f - screenPosition.Y) / (worldSurface * 16.0 - 600.0) * 200.0);
58626 if (gameMenu || netMode == 2)
58627 {
58628 bgTopY = -200;
58629 }
58630 int num3 = dayRate;
58631 if (num3 < 1)
58632 {
58633 num3 = 1;
58634 }
58635 float num4 = 0.0005f * (float)num3;
58636 if (gameMenu)
58637 {
58638 num4 *= 20f;
58639 }
58640 if (raining)
58641 {
58642 if (cloudAlpha > maxRaining)
58643 {
58644 cloudAlpha -= num4;
58645 if (cloudAlpha < maxRaining)
58646 {
58648 }
58649 }
58650 else if (cloudAlpha < maxRaining)
58651 {
58652 cloudAlpha += num4;
58653 if (cloudAlpha > maxRaining)
58654 {
58656 }
58657 }
58658 }
58659 else
58660 {
58661 cloudAlpha -= num4;
58662 if (cloudAlpha < 0f)
58663 {
58664 cloudAlpha = 0f;
58665 }
58666 }
58667 if (gameMenu || netMode == 2)
58668 {
58669 bgDelay = 1000;
58670 SceneMetrics.EvilTileCount = (int)(bgAlphaFrontLayer[1] * (float)SceneMetrics.CorruptionTileMax);
58671 }
58674 float num5 = SceneMetrics.MushroomTileCount / SceneMetrics.MushroomTileMax;
58676 if (num5 > 0f)
58677 {
58678 if (num5 > num6)
58679 {
58680 num6 += 0.01f;
58681 }
58682 if (num5 < num6)
58683 {
58684 num6 -= 0.01f;
58685 }
58686 }
58687 else
58688 {
58689 num6 -= 0.02f;
58690 }
58691 if (num6 < 0f)
58692 {
58693 num6 = 0f;
58694 }
58695 if (num6 > 1f)
58696 {
58697 num6 = 1f;
58698 }
58700 InfoToSetBackColor info = default(InfoToSetBackColor);
58701 info.isInGameMenuOrIsServer = gameMenu || netMode == 2;
58702 info.CorruptionBiomeInfluence = (float)SceneMetrics.EvilTileCount / (float)SceneMetrics.CorruptionTileMax;
58703 info.CrimsonBiomeInfluence = (float)SceneMetrics.BloodTileCount / (float)SceneMetrics.CrimsonTileMax;
58704 info.JungleBiomeInfluence = (float)SceneMetrics.JungleTileCount / (float)SceneMetrics.JungleTileMax;
58705 info.MushroomBiomeInfluence = SmoothedMushroomLightInfluence;
58706 info.GraveyardInfluence = GraveyardVisualIntensity;
58707 info.BloodMoonActive = bloodMoon || SceneMetrics.BloodMoonMonolith;
58708 info.LanternNightActive = LanternNight.LanternsUp;
58710 if (gameMenu || netMode == 2)
58711 {
58712 bgTopY = 0;
58713 }
58716 base.GraphicsDevice.Clear(Microsoft.Xna.Framework.Color.Black);
58717 base.Draw(gameTime);
58718 float val = (float)screenWidth / MinimumZoomComparerX;
58719 float val2 = (float)screenHeight / MinimumZoomComparerY;
58720 ForcedMinimumZoom = Math.Max(Math.Max(1f, val), val2);
58721 GameViewMatrix.Effects = ((!gameMenu && player[myPlayer].gravDir != 1f) ? SpriteEffects.FlipVertically : SpriteEffects.None);
58722 BackgroundViewMatrix.Effects = GameViewMatrix.Effects;
58723 BackgroundViewMatrix.Zoom = new Vector2(ForcedMinimumZoom);
58724 GameViewMatrix.Zoom = new Vector2(ForcedMinimumZoom * MathHelper.Clamp(GameZoomTarget, 1f, 2f));
58725 if (gameMenu || player[myPlayer].gravDir == 1f)
58726 {
58728 }
58729 else
58730 {
58732 }
58733 bool flag = gameMenu;
58734 if (dontStarveWorld && WorldGen.generatingWorld)
58735 {
58736 if (!Terraria.Graphics.Effects.Filters.Scene["Sepia"].IsActive())
58737 {
58738 Terraria.Graphics.Effects.Filters.Scene.Activate("Sepia", default(Vector2));
58739 }
58740 flag = false;
58741 }
58742 else if (flag && Terraria.Graphics.Effects.Filters.Scene["Sepia"].IsActive())
58743 {
58744 Terraria.Graphics.Effects.Filters.Scene.Deactivate("Sepia");
58745 }
58746 if (Terraria.Graphics.Effects.Filters.Scene["Sepia"].IsInUse())
58747 {
58748 flag = false;
58749 }
58750 bool flag2 = !(drawToScreen || netMode == 2 || flag) && !mapFullscreen && Lighting.NotRetro && Terraria.Graphics.Effects.Filters.Scene.CanCapture();
58751 if (flag2)
58752 {
58754 }
58756 TimeLogger.DetailedDrawReset();
58757 SceneArea sceneArea = default(SceneArea);
58758 sceneArea.bgTopY = bgTopY;
58759 sceneArea.totalHeight = screenHeight;
58760 sceneArea.totalWidth = screenWidth;
58761 sceneArea.SceneLocalScreenPositionOffset = Vector2.Zero;
58762 SceneArea sceneArea2 = sceneArea;
58763 if (!mapFullscreen)
58764 {
58765 unityMouseOver = false;
58766 if ((double)screenPosition.Y < worldSurface * 16.0 + 16.0)
58767 {
58770 if (destinationRectangle.Bottom < val3.Height())
58771 {
58772 int num7 = val3.Height() - destinationRectangle.Bottom;
58773 destinationRectangle.Height += num7;
58774 }
58775 if (false)
58776 {
58777 for (int j = 0; j < bgLoops; j++)
58778 {
58779 destinationRectangle.X = bgStartX + val3.Width() * j;
58780 spriteBatch.Draw(val3.Value, destinationRectangle, null, ColorOfTheSkies, 0f, Vector2.Zero, SpriteEffects.FlipVertically, 0f);
58781 }
58782 }
58783 else
58784 {
58785 for (int k = 0; k < bgLoops; k++)
58786 {
58787 destinationRectangle.X = bgStartX + val3.Width() * k;
58788 spriteBatch.Draw(val3.Value, destinationRectangle, ColorOfTheSkies);
58789 }
58790 }
58791 TimeLogger.DetailedDrawTime(6);
58792 }
58793 spriteBatch.End();
58795 if (shimmerAlpha != 1f)
58796 {
58798 }
58799 if ((double)(screenPosition.Y / 16f) < worldSurface + 2.0)
58800 {
58802 }
58803 TimeLogger.DetailedDrawTime(7);
58804 }
58806 spriteBatch.End();
58808 int num8 = screenWidth;
58809 int num9 = screenHeight;
58810 screenWidth = (int)((float)screenWidth / BackgroundViewMatrix.Zoom.X);
58811 screenHeight = (int)((float)screenHeight / BackgroundViewMatrix.Zoom.Y);
58812 screenPosition += BackgroundViewMatrix.Translation;
58813 Matrix transformationMatrix = BackgroundViewMatrix.TransformationMatrix;
58814 transformationMatrix.Translation -= BackgroundViewMatrix.ZoomMatrix.Translation * new Vector3(1f, BackgroundViewMatrix.Effects.HasFlag(SpriteEffects.FlipVertically) ? (-1f) : 1f, 1f);
58816 CurrentFrameFlags.Hacks.CurrentBackgroundMatrixForCreditsRoll = transformationMatrix;
58817 DrawBG();
58818 screenWidth = num8;
58821 spriteBatch.End();
58824 spriteBatch.End();
58825 Overlays.Scene.Draw(spriteBatch, RenderLayers.Landscape);
58827 if (gameMenu || netMode == 2)
58828 {
58829 spriteBatch.End();
58834 TimeLogger.MenuDrawTime(stopwatch.Elapsed.TotalMilliseconds);
58835 TimeLogger.EndDrawFrame();
58836 if (flag2)
58837 {
58839 }
58840 return;
58841 }
58842 spriteBatch.End();
58844 DoLightTiles();
58845 TimeLogger.DetailedDrawReset();
58846 if (mapFullscreen)
58847 {
58848 if (player[myPlayer].talkNPC >= 0 || player[myPlayer].sign >= 0 || (playerInventory && !CaptureManager.Instance.Active))
58849 {
58850 player[myPlayer].ToggleInv();
58851 }
58853 spriteBatch.End();
58856 DrawFPS();
58861 spriteBatch.End();
58862 spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, DefaultSamplerState, null, null, null);
58863 TimeLogger.MapDrawTime(stopwatch.Elapsed.TotalMilliseconds);
58864 TimeLogger.EndDrawFrame();
58866 CaptureManager.Instance.Update();
58867 if (CaptureManager.Instance.Active)
58868 {
58870 }
58871 spriteBatch.End();
58872 if (mouseLeft)
58873 {
58874 mouseLeftRelease = false;
58875 }
58876 else
58877 {
58878 mouseLeftRelease = true;
58879 }
58880 return;
58881 }
58882 if (shimmerAlpha > 0f)
58883 {
58885 }
58886 Overlays.Scene.Draw(spriteBatch, RenderLayers.InWorldUI);
58888 if (drawToScreen)
58889 {
58891 }
58892 else
58893 {
58895 TimeLogger.DetailedDrawTime(11);
58896 }
58897 Overlays.Scene.Draw(spriteBatch, RenderLayers.BackgroundWater);
58898 float x2 = (sceneBackgroundPos.X - screenPosition.X + (float)offScreenRange) * caveParallax - (float)offScreenRange;
58899 if (shimmerAlpha > 0f)
58900 {
58901 spriteBatch.End();
58902 spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, DefaultSamplerState, null, null, null);
58905 spriteBatch.End();
58908 }
58909 if (drawToScreen)
58910 {
58911 tileBatch.Begin();
58913 tileBatch.End();
58914 }
58915 else
58916 {
58918 TimeLogger.DetailedDrawTime(12);
58919 }
58920 Overlays.Scene.Draw(spriteBatch, RenderLayers.Background);
58923 if (magmaBGFrameCounter >= 8)
58924 {
58926 magmaBGFrame++;
58927 if (magmaBGFrame >= 3)
58928 {
58929 magmaBGFrame = 0;
58930 }
58931 }
58933 Overlays.Scene.Draw(spriteBatch, RenderLayers.TilesAndNPCs);
58934 if (!mapFullscreen && mapStyle == 2)
58935 {
58936 try
58937 {
58939 }
58940 catch (Exception e)
58941 {
58942 if (!ignoreErrors)
58943 {
58944 throw;
58945 }
58946 TimeLogger.DrawException(e);
58947 }
58948 }
58949 TimeLogger.DetailedDrawReset();
58950 spriteBatch.End();
58951 TimeLogger.DetailedDrawTime(35);
58958 ParticleSystem_World_BehindPlayers.Settings.AnchorPosition = -screenPosition;
58960 spriteBatch.End();
58964 ParticleSystem_World_OverPlayers.Settings.AnchorPosition = -screenPosition;
58966 spriteBatch.End();
58969 if (!gamePaused)
58970 {
58971 essScale += (float)essDir * 0.01f;
58972 if (essScale > 1f)
58973 {
58974 essDir = -1;
58975 essScale = 1f;
58976 }
58977 if ((double)essScale < 0.7)
58978 {
58979 essDir = 1;
58980 essScale = 0.7f;
58981 }
58982 }
58983 DrawItems();
58984 TimeLogger.DetailedDrawTime(22);
58985 DrawRain();
58986 if (ignoreErrors)
58987 {
58988 try
58989 {
58990 DrawGore();
58991 }
58992 catch (Exception e2)
58993 {
58994 TimeLogger.DrawException(e2);
58995 }
58996 }
58997 else
58998 {
58999 DrawGore();
59000 }
59001 spriteBatch.End();
59002 DrawDust();
59004 Overlays.Scene.Draw(spriteBatch, RenderLayers.Entities);
59005 if (drawToScreen)
59006 {
59007 DrawWaters();
59009 {
59010 DrawWires();
59011 }
59012 }
59013 else
59014 {
59017 {
59018 DrawWires();
59019 }
59020 TimeLogger.DetailedDrawTime(26);
59021 }
59022 if (shimmerAlpha > 0f)
59023 {
59024 spriteBatch.End();
59025 spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, DefaultSamplerState, null, null, null, BackgroundViewMatrix.EffectMatrix);
59028 spriteBatch.End();
59031 }
59032 Overlays.Scene.Draw(spriteBatch, RenderLayers.ForegroundWater);
59038 TimeLogger.DetailedDrawReset();
59039 spriteBatch.End();
59041 if (flag2)
59042 {
59044 }
59045 TimeLogger.DetailedDrawTime(36);
59046 if (!hideUI)
59047 {
59049 TimeLogger.DetailedDrawReset();
59051 spriteBatch.End();
59052 spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, DefaultSamplerState, null, null, null, GameViewMatrix.ZoomMatrix);
59053 float targetScale = CombatText.TargetScale;
59054 for (int l = 0; l < 100; l++)
59055 {
59056 if (!combatText[l].active)
59057 {
59058 continue;
59059 }
59060 int num10 = 0;
59061 if (combatText[l].crit)
59062 {
59063 num10 = 1;
59064 }
59065 Vector2 vector2 = FontAssets.CombatText[num10].Value.MeasureString(combatText[l].text);
59066 Vector2 vector3 = new Vector2(vector2.X * 0.5f, vector2.Y * 0.5f);
59067 float num11 = combatText[l].scale / targetScale;
59068 float num12 = (int)combatText[l].color.R;
59069 float num13 = (int)combatText[l].color.G;
59070 float num14 = (int)combatText[l].color.B;
59071 float num15 = (int)combatText[l].color.A;
59072 num12 *= num11 * combatText[l].alpha * 0.3f;
59073 num14 *= num11 * combatText[l].alpha * 0.3f;
59074 num13 *= num11 * combatText[l].alpha * 0.3f;
59075 num15 *= num11 * combatText[l].alpha;
59076 Microsoft.Xna.Framework.Color color = new Microsoft.Xna.Framework.Color((int)num12, (int)num13, (int)num14, (int)num15);
59077 for (int m = 0; m < 5; m++)
59078 {
59079 float num16 = 0f;
59080 float num17 = 0f;
59081 switch (m)
59082 {
59083 case 0:
59084 num16 -= targetScale;
59085 break;
59086 case 1:
59087 num16 += targetScale;
59088 break;
59089 case 2:
59090 num17 -= targetScale;
59091 break;
59092 case 3:
59093 num17 += targetScale;
59094 break;
59095 default:
59096 num12 = (float)(int)combatText[l].color.R * num11 * combatText[l].alpha;
59097 num14 = (float)(int)combatText[l].color.B * num11 * combatText[l].alpha;
59098 num13 = (float)(int)combatText[l].color.G * num11 * combatText[l].alpha;
59099 num15 = (float)(int)combatText[l].color.A * num11 * combatText[l].alpha;
59100 color = new Microsoft.Xna.Framework.Color((int)num12, (int)num13, (int)num14, (int)num15);
59101 break;
59102 }
59103 if (player[myPlayer].gravDir == -1f)
59104 {
59105 float num18 = combatText[l].position.Y - screenPosition.Y;
59106 num18 = (float)screenHeight - num18;
59108 }
59109 else
59110 {
59112 }
59113 }
59114 }
59115 targetScale = PopupText.TargetScale;
59116 if (targetScale == 0f)
59117 {
59118 targetScale = 1f;
59119 }
59122 spriteBatch.End();
59125 DrawFPS();
59126 spriteBatch.End();
59127 spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, DefaultSamplerState, null, null, null, GameViewMatrix.ZoomMatrix);
59129 if (BlackFadeIn > 0)
59130 {
59131 if (BlackFadeIn < 0)
59132 {
59133 BlackFadeIn = 0;
59134 }
59135 int num19 = BlackFadeIn;
59136 if (num19 > 255)
59137 {
59138 num19 = 255;
59139 }
59140 BlackFadeIn -= 25;
59142 }
59143 spriteBatch.End();
59144 if (!mapFullscreen)
59145 {
59146 if (ignoreErrors)
59147 {
59148 try
59149 {
59151 }
59152 catch (Exception e3)
59153 {
59154 TimeLogger.DrawException(e3);
59155 }
59156 }
59157 else
59158 {
59160 }
59161 }
59162 TimeLogger.DetailedDrawTime(27);
59163 }
59164 else
59165 {
59166 maxQ = true;
59167 }
59168 TimeLogger.DetailedDrawTime(37);
59169 if (mouseLeft)
59170 {
59171 mouseLeftRelease = false;
59172 }
59173 else
59174 {
59175 mouseLeftRelease = true;
59176 }
59177 if (mouseRight)
59178 {
59179 mouseRightRelease = false;
59180 }
59181 else
59182 {
59183 mouseRightRelease = true;
59184 }
59185 if (!PlayerInput.Triggers.Current.MouseRight && !PlayerInput.Triggers.Current.MouseLeft && !preventStackSplitReset)
59186 {
59187 stackSplit = 0;
59188 }
59189 if (stackSplit > 0)
59190 {
59191 stackSplit--;
59192 if (stackSplit == 0)
59193 {
59194 preventStackSplitReset = false;
59195 }
59196 }
59197 TimeLogger.RenderTime(renderCount, stopwatch.Elapsed.TotalMilliseconds);
59198 TimeLogger.EndDrawFrame();
59199 }
static readonly BlendState AlphaBlend
Definition BlendState.cs:36
static readonly RasterizerState CullCounterClockwise
static readonly RasterizerState CullClockwise
static readonly SamplerState LinearClamp
static float Clamp(float value, float min, float max)
Definition MathHelper.cs:46
static void DrawString(this SpriteBatch spriteBatch, DynamicSpriteFont spriteFont, string text, Vector2 position, Color color)
static double IEEERemainder(double x, double y)
Definition Math.cs:679
static double Abs(double value)
static byte Max(byte val1, byte val2)
Definition Math.cs:738
static void DrawWhite(SpriteBatch spriteBatch)
static void DrawBack(SpriteBatch spriteBatch)
static void DrawFront(SpriteBatch spriteBatch)
static void Draw(SpriteBatch spriteBatch)
static Asset< DynamicSpriteFont >[] CombatText
Definition FontAssets.cs:14
static Asset< Texture2D > SplashTexture16x9
static Asset< Texture2D >[] Background
static Asset< Texture2D > MagicPixel
static TriggersPack Triggers
static void SetDesiredZoomContext(ZoomContext context)
static FilterManager Scene
Definition Filters.cs:5
static OverlayManager Scene
Definition Overlays.cs:5
static Microsoft.Xna.Framework.Color ColorOfTheSkies
Definition Main.cs:2577
static SceneMetrics SceneMetrics
Definition Main.cs:1344
static bool render
Definition Main.cs:760
void DrawToMap()
Definition Main.cs:52050
double bgParallax
Definition Main.cs:956
static Vector2 sceneTilePos
Definition Main.cs:1046
static bool raining
Definition Main.cs:1310
static float SmoothedMushroomLightInfluence
Definition Main.cs:1378
static List< INeedRenderTargetContent > ContentThatNeedsRenderTargets
Definition Main.cs:2591
static int essDir
Definition Main.cs:622
void DrawDust()
Definition Main.cs:35458
void DrawSuperSpecialProjectiles(List< int > projCache, bool startSpriteBatch=true)
Definition Main.cs:34880
void DrawWires()
Definition Main.cs:55168
static ulong _drawCycleCounter
Definition Main.cs:413
TilePaintSystemV2 TilePaintSystem
Definition Main.cs:2401
static int mapTimeMax
Definition Main.cs:882
static float cloudAlpha
Definition Main.cs:1302
static float GraveyardVisualIntensity
Definition Main.cs:1393
static Vector2 sceneWaterPos
Definition Main.cs:1044
void DrawStarsInBackground(SceneArea sceneArea, bool artificial)
Definition Main.cs:59834
static void DrawItemTextPopups(float scaleTarget)
Definition Main.cs:59201
void RenderTiles()
Definition Main.cs:54076
int firstTileY
Definition Main.cs:952
static bool targetSet
Definition Main.cs:602
void DoDraw_WallsTilesNPCs()
Definition Main.cs:60102
static int stackCounter
Definition Main.cs:1765
void DrawItems()
Definition Main.cs:35423
static float essScale
Definition Main.cs:620
void DrawRain()
Definition Main.cs:35431
void DrawInterface(GameTime gameTime)
Definition Main.cs:41836
RenderTarget2D backgroundTarget
Definition Main.cs:850
static int stackDelay
Definition Main.cs:1769
WaterfallManager waterfallManager
Definition Main.cs:393
static SpriteBatch spriteBatch
Definition Main.cs:974
void DrawMap(GameTime gameTime)
Definition Main.cs:52345
static double worldSurface
Definition Main.cs:1272
void DrawPlayerChat()
Definition Main.cs:37650
static SpriteViewMatrix BackgroundViewMatrix
Definition Main.cs:229
static int fpsCount
Definition Main.cs:730
TileDrawing TilesRenderer
Definition Main.cs:2403
static int myPlayer
Definition Main.cs:1801
static int netMode
Definition Main.cs:2095
static void PostDrawMenu(Microsoft.Xna.Framework.Point screenSizeCache, Microsoft.Xna.Framework.Point screenSizeCacheAfterScaling)
Definition Main.cs:49163
static bool drawToScreen
Definition Main.cs:600
static int superFastStack
Definition Main.cs:1771
void RenderBackground()
Definition Main.cs:52004
static int bgDelay
Definition Main.cs:806
static void DoDraw_UpdateCameraPosition()
Definition Main.cs:59314
void DrawBackgroundBlackFill()
Definition Main.cs:58198
void RefreshPlayerDrawOrder()
Definition Main.cs:20753
static bool mouseRight
Definition Main.cs:616
static bool dedServ
Definition Main.cs:1226
int lastTileY
Definition Main.cs:954
static void ApplyColorOfTheSkiesToTiles()
Definition Main.cs:59988
static int magmaBGFrame
Definition Main.cs:1096
static bool refreshMap
Definition Main.cs:858
static Vector2 screenLastPosition
Definition Main.cs:1717
void RenderWater()
Definition Main.cs:54139
int bgTopY
Definition Main.cs:966
static Vector2 DrawThickCursor(bool smart=false)
Definition Main.cs:45092
static bool bloodMoon
Definition Main.cs:1296
List< int > DrawCacheFirstFractals
Definition Main.cs:2247
static bool updateMap
Definition Main.cs:872
static bool mouseLeftRelease
Definition Main.cs:1755
void DrawInfernoRings()
Definition Main.cs:61078
void RenderTiles2()
Definition Main.cs:54108
static bool hideUI
Definition Main.cs:2219
List< int > DrawCacheNPCsOverPlayers
Definition Main.cs:2231
static int screenHeight
Definition Main.cs:1721
static Vector2 screenPosition
Definition Main.cs:1715
static WorldSections sectionManager
Definition Main.cs:395
static void DrawCursor(Vector2 bonus, bool smart=false)
Definition Main.cs:45012
void SortDrawCacheWorms()
Definition Main.cs:34932
static Matrix Transform
Definition Main.cs:2771
static int[] backgroundWidth
Definition Main.cs:1665
static bool HasInteractibleObjectThatIsNotATile
Definition Main.cs:1998
static int magmaBGFrameCounter
Definition Main.cs:1098
static bool preventStackSplitReset
Definition Main.cs:1763
static int mapStyle
Definition Main.cs:908
static Matrix UIScaleMatrix
Definition Main.cs:2619
void DrawPlayers_AfterProjectiles()
Definition Main.cs:20794
void DrawBG()
Definition Main.cs:60797
static bool maxQ
Definition Main.cs:1054
void DrawCachedNPCs(List< int > npcCache, bool behindTiles)
Definition Main.cs:34837
static SpriteViewMatrix GameViewMatrix
Definition Main.cs:227
static int offScreenRange
Definition Main.cs:836
int bgLoops
Definition Main.cs:960
void DrawGore()
Definition Main.cs:20364
int firstTileX
Definition Main.cs:948
static float MinimumZoomComparerX
Definition Main.cs:1886
static ulong TileFrameSeed
Definition Main.cs:411
static bool showSplash
Definition Main.cs:740
static Vector2 sceneWallPos
Definition Main.cs:1050
void UpdateDisplaySettings()
Definition Main.cs:63184
static SamplerState SamplerStateForCursor
Definition Main.cs:980
void DrawPlayerChatBubbles()
Definition Main.cs:60057
static void DrawPendingMouseText()
Definition Main.cs:41922
int bgLoopsY
Definition Main.cs:964
static Item HoverItem
Definition Main.cs:1910
void ReleaseTargets()
Definition Main.cs:54964
static float[] bgAlphaFrontLayer
Definition Main.cs:812
List< int > DrawCacheProjsOverWiresUI
Definition Main.cs:2243
static TileBatch tileBatch
Definition Main.cs:976
void DrawStarsInForeground(SceneArea sceneArea)
Definition Main.cs:59864
static bool mouseRightRelease
Definition Main.cs:1757
int bgStartX
Definition Main.cs:958
static int BlackFadeIn
Definition Main.cs:548
static SamplerState DefaultSamplerState
Definition Main.cs:2814
static void SetBackColor(InfoToSetBackColor info, out Microsoft.Xna.Framework.Color sunColor, out Microsoft.Xna.Framework.Color moonColor)
Definition Main.cs:60291
static Vector2 sceneTile2Pos
Definition Main.cs:1048
int bgStartY
Definition Main.cs:962
static bool ignoreErrors
Definition Main.cs:742
static ParticleRenderer ParticleSystem_World_OverPlayers
Definition Main.cs:2249
static float MinimumZoomComparerY
Definition Main.cs:1888
static RasterizerState Rasterizer
Definition Main.cs:552
static void CheckMonoliths()
Definition Main.cs:58305
void DrawCachedProjs(List< int > projCache, bool startSpriteBatch=true)
Definition Main.cs:34852
static float GameZoomTarget
Definition Main.cs:239
static float sunCircle
Definition Main.cs:546
RenderTarget2D backWaterTarget
Definition Main.cs:838
void InitTargets()
Definition Main.cs:55106
static float caveParallax
Definition Main.cs:1216
static bool dontStarveWorld
Definition Main.cs:345
static float maxRaining
Definition Main.cs:1304
static bool renderNow
Definition Main.cs:598
static int stackSplit
Definition Main.cs:1761
static RenderTarget2D screenTarget
Definition Main.cs:852
void RenderWalls()
Definition Main.cs:54928
void DrawSunAndMoon(SceneArea sceneArea, Microsoft.Xna.Framework.Color moonColor, Microsoft.Xna.Framework.Color sunColor, float tempMushroomInfluence)
Definition Main.cs:59644
static void DrawNetplayStatusText()
Definition Main.cs:60030
static Vector2 sceneBackgroundPos
Definition Main.cs:1052
static bool playerInventory
Definition Main.cs:1759
static int dayRate
Definition Main.cs:746
static ParticleRenderer ParticleSystem_World_BehindPlayers
Definition Main.cs:2251
static int screenWidth
Definition Main.cs:1719
static bool loadMap
Definition Main.cs:864
void DrawProjectiles()
Definition Main.cs:20676
static RenderTarget2D waterTarget
Definition Main.cs:840
static CombatText[] combatText
Definition Main.cs:1695
static int drawsCountedForFPS
Definition Main.cs:1078
void DoLightTiles()
Definition Main.cs:60764
static int mapTime
Definition Main.cs:884
void PreDrawMenu(out Microsoft.Xna.Framework.Point screenSizeCache, out Microsoft.Xna.Framework.Point screenSizeCacheAfterScaling)
Definition Main.cs:49171
static int menuMode
Definition Main.cs:2379
static bool gameMenu
Definition Main.cs:1926
void DrawMenu(GameTime gameTime)
Definition Main.cs:45228
void DrawWaters(bool isBackground=false)
Definition Main.cs:54244
static float shimmerAlpha
Definition Main.cs:1008
static void UpdateAtmosphereTransparencyToSkyColor()
Definition Main.cs:59998
static bool mapFullscreen
Definition Main.cs:932
void DrawSplash(GameTime gameTime)
Definition Main.cs:49370
List< int > DrawCacheProjsBehindProjectiles
Definition Main.cs:2241
void DrawToMap_Section(int secX, int secY)
Definition Main.cs:52238
static bool gamePaused
Definition Main.cs:1072
static Sign[] sign
Definition Main.cs:1701
static int background
Definition Main.cs:1264
bool unityMouseOver
Definition Main.cs:281
static Player[] player
Definition Main.cs:1803
int lastTileX
Definition Main.cs:950
static int timesTriedToFastStack
Definition Main.cs:1767
static RenderTarget2D screenTargetSwap
Definition Main.cs:854
void DrawBackground()
Definition Main.cs:49686
static int renderCount
Definition Main.cs:968
void DrawFPS()
Definition Main.cs:20012
static float ForcedMinimumZoom
Definition Main.cs:225
static bool mouseLeft
Definition Main.cs:614
List< int > DrawCacheProjsOverPlayers
Definition Main.cs:2245
static int numUpdateTile
Definition MapHelper.cs:168
void FindWaterfalls(bool forced=false)

References Terraria.Main._drawCycleCounter, System.Math.Abs(), Microsoft.Xna.Framework.Graphics.BlendState.AlphaBlend, Terraria.Main.ApplyColorOfTheSkiesToTiles(), Terraria.GameContent.TextureAssets.Background, Terraria.Main.background, Terraria.Main.backgroundTarget, Terraria.Main.BackgroundViewMatrix, Terraria.Main.backgroundWidth, Terraria.Main.backWaterTarget, Terraria.Main.bgAlphaFrontLayer, Terraria.Main.bgDelay, Terraria.Main.bgLoops, Terraria.Main.bgLoopsY, Terraria.Main.bgParallax, Terraria.Main.bgStartX, Terraria.Main.bgStartY, Terraria.Main.bgTopY, Microsoft.Xna.Framework.Color.Black, Terraria.Main.BlackFadeIn, Terraria.Main.bloodMoon, Terraria.SceneMetrics.BloodMoonMonolith, Terraria.SceneMetrics.BloodTileCount, Microsoft.Xna.Framework.Rectangle.Bottom, Terraria.Main.caveParallax, Terraria.Main.CheckMonoliths(), Microsoft.Xna.Framework.MathHelper.Clamp(), System.Collections.Generic.Dictionary< TKey, TValue >.Clear(), Terraria.Main.cloudAlpha, Terraria.Main.ColorOfTheSkies, Terraria.GameContent.FontAssets.CombatText, Terraria.Main.combatText, Terraria.Main.ContentThatNeedsRenderTargets, Terraria.SceneMetrics.CorruptionTileMax, Terraria.SceneMetrics.CrimsonTileMax, Microsoft.Xna.Framework.Graphics.RasterizerState.CullClockwise, Microsoft.Xna.Framework.Graphics.RasterizerState.CullCounterClockwise, Terraria.Main.dayRate, Terraria.Main.dedServ, Terraria.Main.DefaultSamplerState, Terraria.TimeLogger.DetailedDrawReset(), Terraria.TimeLogger.DetailedDrawTime(), Terraria.Main.DoDraw_UpdateCameraPosition(), Terraria.Main.DoDraw_WallsTilesNPCs(), Terraria.Main.DoLightTiles(), Terraria.Main.dontStarveWorld, Microsoft.Xna.Framework.Draw, Terraria.GameContent.Events.ScreenObstruction.Draw(), Terraria.GameContent.Events.ScreenDarkness.DrawBack(), Terraria.Main.DrawBackground(), Terraria.Main.DrawBackgroundBlackFill(), Terraria.Main.DrawBG(), Terraria.Main.DrawCachedNPCs(), Terraria.Main.DrawCachedProjs(), Terraria.Main.DrawCacheFirstFractals, Terraria.Main.DrawCacheNPCsOverPlayers, Terraria.Main.DrawCacheProjsBehindProjectiles, Terraria.Main.DrawCacheProjsOverPlayers, Terraria.Main.DrawCacheProjsOverWiresUI, Terraria.Main.DrawCursor(), Terraria.Main.DrawDust(), Terraria.TimeLogger.DrawException(), Terraria.Main.DrawFPS(), Terraria.GameContent.Events.ScreenDarkness.DrawFront(), Terraria.Main.DrawGore(), Terraria.Main.DrawInfernoRings(), Terraria.Main.DrawInterface(), Terraria.Main.DrawItems(), Terraria.Main.DrawItemTextPopups(), Terraria.Main.DrawMap(), Terraria.Main.DrawMenu(), Terraria.Main.DrawNetplayStatusText(), Terraria.Main.DrawPendingMouseText(), Terraria.Main.DrawPlayerChat(), Terraria.Main.DrawPlayerChatBubbles(), Terraria.Main.DrawPlayers_AfterProjectiles(), Terraria.Main.DrawProjectiles(), Terraria.Main.DrawRain(), Terraria.Main.drawsCountedForFPS, Terraria.Main.DrawSplash(), Terraria.Main.DrawStarsInBackground(), Terraria.Main.DrawStarsInForeground(), ReLogic.Graphics.DynamicSpriteFontExtensionMethods.DrawString(), Terraria.Main.DrawSunAndMoon(), Terraria.Main.DrawSuperSpecialProjectiles(), Terraria.Main.DrawThickCursor(), Terraria.Main.DrawToMap(), Terraria.Main.DrawToMap_Section(), Terraria.Main.drawToScreen, Terraria.Main.DrawWaters(), Terraria.GameContent.Events.MoonlordDeathDrama.DrawWhite(), Terraria.GameContent.UI.WiresUI.Settings.DrawWires, Terraria.Main.DrawWires(), Terraria.TimeLogger.EndDrawFrame(), Terraria.Main.essDir, Terraria.Main.essScale, Terraria.SceneMetrics.EvilTileCount, Terraria.WaterfallManager.FindWaterfalls(), Terraria.Main.firstTileX, Terraria.Main.firstTileY, Terraria.Main.ForcedMinimumZoom, Terraria.Main.fpsCount, Terraria.Main.gameMenu, Terraria.Main.gamePaused, Terraria.Main.GameViewMatrix, Terraria.Main.GameZoomTarget, Terraria.WorldGen.generatingWorld, Terraria.Main.GraveyardVisualIntensity, Terraria.Main.HasInteractibleObjectThatIsNotATile, Terraria.Main.hideUI, Terraria.Main.HoverItem, System.Text.RegularExpressions.i, System.Math.IEEERemainder(), Terraria.Main.ignoreErrors, System.info, Terraria.Main.InitTargets(), Terraria.Graphics.Capture.CaptureManager.Instance, Terraria.SceneMetrics.JungleTileCount, Terraria.SceneMetrics.JungleTileMax, System.L, Terraria.GameContent.Events.LanternNight.LanternsUp, Terraria.Main.lastTileX, Terraria.Main.lastTileY, Terraria.Lighting.LightTiles(), Microsoft.Xna.Framework.Graphics.SamplerState.LinearClamp, Terraria.Main.loadMap, Terraria.GameContent.TextureAssets.MagicPixel, Terraria.Main.magmaBGFrame, Terraria.Main.magmaBGFrameCounter, Terraria.TimeLogger.MapDrawTime(), Terraria.Main.mapFullscreen, Terraria.Main.mapStyle, Terraria.Main.mapTime, Terraria.Main.mapTimeMax, System.Math.Max(), Terraria.Main.maxQ, Terraria.Main.maxRaining, Terraria.TimeLogger.MenuDrawTime(), Terraria.Main.menuMode, Terraria.Main.MinimumZoomComparerX, Terraria.Main.MinimumZoomComparerY, Terraria.Main.mouseLeft, Terraria.Main.mouseLeftRelease, Terraria.Main.mouseRight, Terraria.Main.mouseRightRelease, Terraria.SceneMetrics.MushroomTileMax, Terraria.Main.myPlayer, Terraria.Main.netMode, Terraria.TimeLogger.NewDrawFrame(), Microsoft.Xna.Framework.Graphics.DepthStencilState.None, Terraria.Lighting.NotRetro, Terraria.Map.MapHelper.numUpdateTile, Terraria.Main.offScreenRange, Terraria.Main.OnPreDraw, Terraria.Main.ParticleSystem_World_BehindPlayers, Terraria.Main.ParticleSystem_World_OverPlayers, Terraria.Main.player, Terraria.Main.playerInventory, Terraria.Main.PostDrawMenu(), Terraria.Main.PreDrawMenu(), Terraria.GameContent.TilePaintSystemV2.PrepareAllRequests(), Terraria.GameContent.Drawing.TileDrawing.PreparePaintForTilesOnScreen(), Terraria.Main.preventStackSplitReset, Terraria.Main.raining, Terraria.Utils.RandomNextSeed(), Terraria.Main.Rasterizer, Terraria.Main.refreshMap, Terraria.Main.RefreshPlayerDrawOrder(), Terraria.Main.ReleaseTargets(), Terraria.Main.render, Terraria.Main.RenderBackground(), Terraria.Main.renderCount, Terraria.Main.renderNow, Terraria.Main.RenderTiles(), Terraria.Main.RenderTiles2(), Terraria.TimeLogger.RenderTime(), Terraria.Main.RenderWalls(), Terraria.Main.RenderWater(), Terraria.Main.SamplerStateForCursor, Terraria.Graphics.Effects.Filters.Scene, Terraria.Graphics.Effects.Overlays.Scene, Terraria.Main.sceneBackgroundPos, Terraria.Main.sceneTile2Pos, Terraria.Main.sceneTilePos, Terraria.Main.sceneWallPos, Terraria.Main.sceneWaterPos, Terraria.Main.screenHeight, Terraria.Main.screenLastPosition, Terraria.Main.screenPosition, Terraria.Main.screenTarget, Terraria.Main.screenTargetSwap, Terraria.Main.screenWidth, Terraria.Main.sectionManager, Terraria.Main.SetBackColor(), Terraria.GameInput.PlayerInput.SetDesiredZoomContext(), Terraria.GameInput.PlayerInput.SetZoom_UI(), Terraria.GameInput.PlayerInput.SetZoom_Unscaled(), Terraria.GameInput.PlayerInput.SetZoom_World(), Terraria.Main.shimmerAlpha, Terraria.Main.showSplash, Terraria.Main.sign, Terraria.Main.SmoothedMushroomLightInfluence, Terraria.Main.SortDrawCacheWorms(), Terraria.TimeLogger.SplashDrawTime(), Terraria.GameContent.TextureAssets.SplashTexture16x9, Terraria.Main.spriteBatch, Terraria.Main.stackCounter, Terraria.Main.stackDelay, Terraria.Main.stackSplit, Terraria.Main.sunCircle, Terraria.Main.superFastStack, Terraria.CombatText.TargetScale, Terraria.PopupText.TargetScale, Terraria.Main.targetSet, System.text, Terraria.Main.tileBatch, Terraria.Main.TileFrameSeed, Terraria.Main.TilePaintSystem, Terraria.Main.TilesRenderer, Terraria.Main.timesTriedToFastStack, Terraria.Main.Transform, Terraria.GameInput.PlayerInput.Triggers, Terraria.Main.UIScaleMatrix, Terraria.Main.unityMouseOver, Terraria.Graphics.Camera.UnscaledSize, Terraria.Main.UpdateAtmosphereTransparencyToSkyColor(), Terraria.Main.UpdateDisplaySettings(), Terraria.Lighting.UpdateEveryFrame, Terraria.GameInput.PlayerInput.UpdateMainMouse(), Terraria.Main.updateMap, Microsoft.Xna.Framework.Graphics.Vector2, Microsoft.Xna.Framework.Graphics.Vector3, Terraria.Main.waterfallManager, Terraria.Main.waterTarget, Microsoft.Xna.Framework.Color.White, Terraria.Main.worldSurface, Microsoft.Xna.Framework.Vector2.X, Microsoft.Xna.Framework.Vector2.Y, and Microsoft.Xna.Framework.Vector2.Zero.

Referenced by Terraria.Main.Draw().