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

◆ DrawSunAndMoon()

void Terraria.Main.DrawSunAndMoon ( SceneArea sceneArea,
Microsoft::Xna::Framework::Color moonColor,
Microsoft::Xna::Framework::Color sunColor,
float tempMushroomInfluence )
inlineprivate

Definition at line 59644 of file Main.cs.

59645 {
59647 int num = moonType;
59648 if (!TextureAssets.Moon.IndexInRange(num))
59649 {
59650 num = Utils.Clamp(num, 0, 8);
59651 }
59652 Texture2D value2 = TextureAssets.Moon[num].Value;
59653 int num2 = sceneArea.bgTopY;
59654 int num3 = (int)(time / 54000.0 * (double)(sceneArea.totalWidth + (float)(value.Width * 2))) - value.Width;
59655 int num4 = 0;
59656 float num5 = 1f;
59657 float rotation = (float)(time / 54000.0) * 2f - 7.3f;
59658 int num6 = (int)(time / 32400.0 * (double)(sceneArea.totalWidth + (float)(value2.Width * 2))) - value2.Width;
59659 int num7 = 0;
59660 float num8 = 1f;
59661 float num9 = (float)(time / 32400.0) * 2f - 7.3f;
59662 if (dayTime)
59663 {
59664 double num10;
59665 if (time < 27000.0)
59666 {
59667 num10 = Math.Pow(1.0 - time / 54000.0 * 2.0, 2.0);
59668 num4 = (int)((double)num2 + num10 * 250.0 + 180.0);
59669 }
59670 else
59671 {
59672 num10 = Math.Pow((time / 54000.0 - 0.5) * 2.0, 2.0);
59673 num4 = (int)((double)num2 + num10 * 250.0 + 180.0);
59674 }
59675 num5 = (float)(1.2 - num10 * 0.4);
59676 }
59677 else
59678 {
59679 double num11;
59680 if (time < 16200.0)
59681 {
59682 num11 = Math.Pow(1.0 - time / 32400.0 * 2.0, 2.0);
59683 num7 = (int)((double)num2 + num11 * 250.0 + 180.0);
59684 }
59685 else
59686 {
59687 num11 = Math.Pow((time / 32400.0 - 0.5) * 2.0, 2.0);
59688 num7 = (int)((double)num2 + num11 * 250.0 + 180.0);
59689 }
59690 num8 = (float)(1.2 - num11 * 0.4);
59691 }
59694 if (starGame)
59695 {
59696 if (WorldGen.generatingWorld)
59697 {
59699 if (rand.Next(60) == 0)
59700 {
59701 for (int i = 0; i < numStars; i++)
59702 {
59703 if (star[i].hidden)
59704 {
59705 Star.SpawnStars(i);
59706 }
59707 }
59708 }
59709 if (dayTime)
59710 {
59711 dayTime = false;
59712 time = 0.0;
59713 }
59714 }
59715 else
59716 {
59717 starGame = false;
59718 }
59719 }
59720 else
59721 {
59722 starsHit = 0;
59723 }
59724 if (dayTime)
59725 {
59726 if ((remixWorld && !gameMenu) || WorldGen.remixWorldGen)
59727 {
59728 return;
59729 }
59730 num5 *= 1.1f;
59731 float num12 = 1f - tempMushroomInfluence;
59732 num12 -= cloudAlpha * 1.5f * atmo;
59733 if (num12 < 0f)
59734 {
59735 num12 = 0f;
59736 }
59737 Microsoft.Xna.Framework.Color color = new Microsoft.Xna.Framework.Color((byte)(255f * num12), (byte)((float)(int)sunColor.G * num12), (byte)((float)(int)sunColor.B * num12), (byte)(255f * num12));
59738 Microsoft.Xna.Framework.Color color2 = new Microsoft.Xna.Framework.Color((byte)((float)(int)sunColor.R * num12), (byte)((float)(int)sunColor.G * num12), (byte)((float)(int)sunColor.B * num12), (byte)((float)(int)sunColor.B * num12));
59739 bool flag = false;
59740 if (eclipse)
59741 {
59742 value = TextureAssets.Sun3.Value;
59743 flag = true;
59744 }
59745 else if (!gameMenu && player[myPlayer].head == 12)
59746 {
59747 value = TextureAssets.Sun2.Value;
59748 flag = true;
59749 }
59750 if (flag)
59751 {
59752 color2 = new Microsoft.Xna.Framework.Color((byte)((float)(int)sunColor.R * num12), (byte)((float)(int)sunColor.G * num12), (byte)((float)(int)sunColor.B * num12), (byte)((float)(sunColor.B - 60) * num12));
59753 }
59754 Vector2 origin = value.Size() / 2f;
59755 Vector2 position = new Vector2(num3, num4 + sunModY) + sceneArea.SceneLocalScreenPositionOffset;
59756 spriteBatch.Draw(value, position, null, color, rotation, origin, num5, SpriteEffects.None, 0f);
59757 spriteBatch.Draw(value, position, null, color2, rotation, origin, num5, SpriteEffects.None, 0f);
59758 }
59759 if (!dayTime)
59760 {
59761 float num13 = 1f - cloudAlpha * 1.5f * atmo;
59762 if (num13 < 0f)
59763 {
59764 num13 = 0f;
59765 }
59766 moonColor *= num13;
59767 Vector2 position2 = new Vector2(num6, num7 + moonModY) + sceneArea.SceneLocalScreenPositionOffset;
59768 if (WorldGen.drunkWorldGen)
59769 {
59771 }
59772 else if (pumpkinMoon)
59773 {
59775 }
59776 else if (snowMoon)
59777 {
59779 }
59780 else
59781 {
59782 spriteBatch.Draw(TextureAssets.Moon[num].Value, position2, new Microsoft.Xna.Framework.Rectangle(0, TextureAssets.Moon[num].Width() * moonPhase, TextureAssets.Moon[num].Width(), TextureAssets.Moon[num].Width()), moonColor, num9, new Vector2(TextureAssets.Moon[num].Width() / 2, TextureAssets.Moon[num].Width() / 2), num8, SpriteEffects.None, 0f);
59783 }
59784 }
59785 Microsoft.Xna.Framework.Rectangle value3 = ((!dayTime) ? new Microsoft.Xna.Framework.Rectangle((int)((double)num6 - (double)TextureAssets.Moon[num].Width() * 0.5 * (double)num8), (int)((double)num7 - (double)TextureAssets.Moon[num].Width() * 0.5 * (double)num8 + (double)moonModY), (int)((float)TextureAssets.Moon[num].Width() * num8), (int)((float)TextureAssets.Moon[num].Width() * num8)) : new Microsoft.Xna.Framework.Rectangle((int)((double)num3 - (double)TextureAssets.Sun.Width() * 0.5 * (double)num5), (int)((double)num4 - (double)TextureAssets.Sun.Height() * 0.5 * (double)num5 + (double)sunModY), (int)((float)TextureAssets.Sun.Width() * num5), (int)((float)TextureAssets.Sun.Width() * num5)));
59786 value3.Offset((int)sceneArea.SceneLocalScreenPositionOffset.X, (int)sceneArea.SceneLocalScreenPositionOffset.Y);
59788 sunModY = (short)((double)sunModY * 0.999);
59789 moonModY = (short)((double)moonModY * 0.999);
59790 if (!gameMenu || netMode == 1)
59791 {
59792 return;
59793 }
59794 if (rectangle.Intersects(value3) || alreadyGrabbingSunOrMoon)
59795 {
59796 player[myPlayer].mouseInterface = true;
59797 }
59798 if ((mouseLeft || starGame) && hasFocus)
59799 {
59800 if (!rectangle.Intersects(value3) && !alreadyGrabbingSunOrMoon)
59801 {
59802 return;
59803 }
59804 if (dayTime)
59805 {
59806 time = 54000.0 * (double)((float)(mouseX + TextureAssets.Sun.Width()) / ((float)screenWidth + (float)(TextureAssets.Sun.Width() * 2)));
59807 sunModY = (short)(mouseY - num4);
59808 if (time > 53990.0)
59809 {
59810 time = 53990.0;
59811 }
59812 }
59813 else
59814 {
59815 time = 32400.0 * (double)((float)(mouseX + TextureAssets.Moon[num].Width()) / ((float)screenWidth + (float)(TextureAssets.Moon[num].Width() * 2)));
59816 moonModY = (short)(mouseY - num7);
59817 if (time > 32390.0)
59818 {
59819 time = 32390.0;
59820 }
59821 }
59822 if (time < 10.0)
59823 {
59824 time = 10.0;
59825 }
59827 }
59828 else
59829 {
59831 }
59832 }
static double Pow(double x, double y)
const double PI
Definition Math.cs:16
static Asset< Texture2D > Sun3
static Asset< Texture2D > SmileyMoon
static Asset< Texture2D > Sun
static Asset< Texture2D > Sun2
static Asset< Texture2D > PumpkinMoon
static Asset< Texture2D > SnowMoon
static Asset< Texture2D >[] Moon
static double time
Definition Main.cs:1284
static Star[] star
Definition Main.cs:1679
static int numStars
Definition Main.cs:1348
static float cloudAlpha
Definition Main.cs:1302
static SpriteBatch spriteBatch
Definition Main.cs:974
static int myPlayer
Definition Main.cs:1801
static int netMode
Definition Main.cs:2095
static bool starGame
Definition Main.cs:2597
static bool hasFocus
Definition Main.cs:1781
static bool dayTime
Definition Main.cs:1282
static short moonModY
Definition Main.cs:1292
static int moonPhase
Definition Main.cs:1288
static float atmo
Definition Main.cs:2571
static int starsHit
Definition Main.cs:2599
static bool eclipse
Definition Main.cs:1312
static bool alreadyGrabbingSunOrMoon
Definition Main.cs:1294
static int moonType
Definition Main.cs:1397
static UnifiedRandom rand
Definition Main.cs:1387
static int screenWidth
Definition Main.cs:1719
static short sunModY
Definition Main.cs:1290
static bool snowMoon
Definition Main.cs:1300
static bool pumpkinMoon
Definition Main.cs:1298
static int mouseY
Definition Main.cs:606
static bool gameMenu
Definition Main.cs:1926
static Player[] player
Definition Main.cs:1803
static int mouseX
Definition Main.cs:604
static float ForcedMinimumZoom
Definition Main.cs:225
static bool remixWorld
Definition Main.cs:349
static bool mouseLeft
Definition Main.cs:614

References Terraria.Main.alreadyGrabbingSunOrMoon, Terraria.Main.atmo, Terraria.Main.cloudAlpha, Terraria.Main.dayTime, Terraria.WorldGen.drunkWorldGen, Terraria.Main.eclipse, Terraria.Main.ForcedMinimumZoom, Terraria.Main.gameMenu, Terraria.WorldGen.generatingWorld, Terraria.Main.hasFocus, System.Text.RegularExpressions.i, Terraria.GameContent.TextureAssets.Moon, Terraria.Main.moonModY, Terraria.Main.moonPhase, Terraria.Main.moonType, Terraria.Main.mouseLeft, Terraria.Main.mouseX, Terraria.Main.mouseY, Terraria.Main.myPlayer, Terraria.Main.netMode, Terraria.Main.numStars, System.Math.PI, Terraria.Main.player, System.Math.Pow(), Terraria.GameContent.TextureAssets.PumpkinMoon, Terraria.Main.pumpkinMoon, Terraria.Main.rand, Terraria.Main.remixWorld, Terraria.WorldGen.remixWorldGen, Terraria.Main.screenWidth, Terraria.GameContent.TextureAssets.SmileyMoon, Terraria.GameContent.TextureAssets.SnowMoon, Terraria.Main.snowMoon, Terraria.Star.SpawnStars(), Terraria.Main.spriteBatch, Terraria.Main.star, Terraria.Main.starGame, Terraria.Main.starsHit, Terraria.GameContent.TextureAssets.Sun, Terraria.GameContent.TextureAssets.Sun2, Terraria.GameContent.TextureAssets.Sun3, Terraria.Main.sunModY, Terraria.Main.time, System.value, and Microsoft.Xna.Framework.Graphics.Vector2.

Referenced by Terraria.Main.DoDraw(), and Terraria.Main.DrawCapture().