49553 lines
2.3 MiB
49553 lines
2.3 MiB
// Decompiled with JetBrains decompiler
|
|
// Type: Terraria.Main
|
|
// Assembly: Terraria, Version=1.4.0.5, Culture=neutral, PublicKeyToken=null
|
|
// MVID: 67F9E73E-0A81-4937-A22C-5515CD405A83
|
|
// Assembly location: C:\Users\mikeyisbaeyt\Downloads\depotdownloader-2.4.5\depots\105601\6707058\Terraria.exe
|
|
|
|
using Microsoft.Win32;
|
|
using Microsoft.Xna.Framework;
|
|
using Microsoft.Xna.Framework.Audio;
|
|
using Microsoft.Xna.Framework.Content;
|
|
using Microsoft.Xna.Framework.Graphics;
|
|
using Microsoft.Xna.Framework.Input;
|
|
using ReLogic.Content;
|
|
using ReLogic.Content.Sources;
|
|
using ReLogic.Graphics;
|
|
using ReLogic.Localization.IME;
|
|
using ReLogic.OS;
|
|
using ReLogic.Peripherals.RGB;
|
|
using ReLogic.Utilities;
|
|
using System;
|
|
using System.Collections;
|
|
using System.Collections.Concurrent;
|
|
using System.Collections.Generic;
|
|
using System.Diagnostics;
|
|
using System.Drawing;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Reflection;
|
|
using System.Runtime.InteropServices;
|
|
using System.Text;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
using Terraria.Achievements;
|
|
using Terraria.Audio;
|
|
using Terraria.Chat;
|
|
using Terraria.Cinematics;
|
|
using Terraria.DataStructures;
|
|
using Terraria.Enums;
|
|
using Terraria.GameContent;
|
|
using Terraria.GameContent.Achievements;
|
|
using Terraria.GameContent.Ambience;
|
|
using Terraria.GameContent.Bestiary;
|
|
using Terraria.GameContent.Creative;
|
|
using Terraria.GameContent.Drawing;
|
|
using Terraria.GameContent.Events;
|
|
using Terraria.GameContent.Golf;
|
|
using Terraria.GameContent.ItemDropRules;
|
|
using Terraria.GameContent.Liquid;
|
|
using Terraria.GameContent.NetModules;
|
|
using Terraria.GameContent.Skies;
|
|
using Terraria.GameContent.UI;
|
|
using Terraria.GameContent.UI.BigProgressBar;
|
|
using Terraria.GameContent.UI.Chat;
|
|
using Terraria.GameContent.UI.States;
|
|
using Terraria.GameInput;
|
|
using Terraria.Graphics;
|
|
using Terraria.Graphics.Capture;
|
|
using Terraria.Graphics.Effects;
|
|
using Terraria.Graphics.Light;
|
|
using Terraria.Graphics.Renderers;
|
|
using Terraria.Graphics.Shaders;
|
|
using Terraria.ID;
|
|
using Terraria.Initializers;
|
|
using Terraria.IO;
|
|
using Terraria.Localization;
|
|
using Terraria.Map;
|
|
using Terraria.Net;
|
|
using Terraria.ObjectData;
|
|
using Terraria.Social;
|
|
using Terraria.UI;
|
|
using Terraria.UI.Chat;
|
|
using Terraria.UI.Gamepad;
|
|
using Terraria.Utilities;
|
|
using Terraria.WorldBuilding;
|
|
|
|
namespace Terraria
|
|
{
|
|
public class Main : Game
|
|
{
|
|
private const string versionStringBecauseTheyreTheSame = "v1.4.0.5";
|
|
public const int curRelease = 230;
|
|
public const string assemblyVersionNumber = "1.4.0.5";
|
|
public const string copyrightText = "Copyright © 2020 Re-Logic";
|
|
public const ulong WorldGeneratorVersion = 987842478081;
|
|
public static Dictionary<string, MinimapFrame> MinimapFrames = new Dictionary<string, MinimapFrame>();
|
|
public static MinimapFrame ActiveMinimapFrame;
|
|
public static Dictionary<string, IPlayerResourcesDisplaySet> PlayerResourcesSets = new Dictionary<string, IPlayerResourcesDisplaySet>();
|
|
public static IPlayerResourcesDisplaySet ActivePlayerResourcesSet;
|
|
public static int mapDelay = 2;
|
|
public const string TerrariaSaveFolderPath = "Terraria";
|
|
public static IAssetRepository Assets;
|
|
public static AssetSourceController AssetSourceController;
|
|
private volatile bool _musicLoaded;
|
|
private volatile bool _artLoaded;
|
|
private volatile bool _begunMainAsyncLoad;
|
|
public static int CurrentDrawnEntityShader;
|
|
public static Entity CurrentDrawnEntity;
|
|
private static bool _WeGameReqExit = false;
|
|
public static float ForcedMinimumZoom = 1f;
|
|
public static SpriteViewMatrix GameViewMatrix;
|
|
public static SpriteViewMatrix BackgroundViewMatrix;
|
|
private static Matrix _currentWantedZoomMatrix;
|
|
private static Matrix _uiScaleMatrix;
|
|
private static float _uiScaleWanted = 1f;
|
|
private static float _uiScaleUsed = 1f;
|
|
public static float GameZoomTarget = 1f;
|
|
public static bool LightingEveryFrame = true;
|
|
public static bool SettingsUnlock_WorldEvil;
|
|
public static bool SettingsEnabled_MinersWobble = true;
|
|
public static bool SettingBlockGamepadsEntirely;
|
|
public static bool SettingDontScaleMainMenuUp;
|
|
public static bool SettingsEnabled_OpaqueBoxBehindTooltips = true;
|
|
public static bool SettingMusicReplayDelayEnabled = false;
|
|
public static bool HidePassword;
|
|
public static bool ReversedUpDownArmorSetBonuses;
|
|
public static Microsoft.Xna.Framework.Color MouseBorderColor = new Microsoft.Xna.Framework.Color(64, 64, 64, 64);
|
|
public static bool MouseShowBuildingGrid;
|
|
public static bool AllowUnfocusedInputOnGamepad;
|
|
public static bool InvisibleCursorForGamepad = true;
|
|
public static bool GamepadDisableCursorItemIconInner = true;
|
|
public static bool GamepadDisableInstructionsDisplay;
|
|
public static bool CrouchingEnabled = false;
|
|
private static GameNotificationType _flashNotificationType = GameNotificationType.All;
|
|
public static float MouseBuildingGridAlpha;
|
|
public static bool CaptureModeDisabled = false;
|
|
public bool unityMouseOver;
|
|
public static Main instance;
|
|
public static ChromaEngine Chroma;
|
|
public static ChromaHotkeyPainter ChromaPainter;
|
|
public static World ActiveWorld = new World();
|
|
public static Camera Camera = new Camera();
|
|
public static IPlayerRenderer PlayerRenderer = (IPlayerRenderer) new LegacyPlayerRenderer();
|
|
public static IPlayerRenderer PotionOfReturnRenderer = (IPlayerRenderer) new ReturnGatePlayerRenderer();
|
|
public static MapHeadRenderer MapPlayerRenderer = new MapHeadRenderer();
|
|
public static NPCHeadRenderer TownNPCHeadRenderer = (NPCHeadRenderer) null;
|
|
public static NPCHeadRenderer BossNPCHeadRenderer = (NPCHeadRenderer) null;
|
|
public static string versionNumber = "v1.4.0.5";
|
|
public static string versionNumber2 = "v1.4.0.5";
|
|
public static string SavePath = Program.LaunchParameters.ContainsKey("-savedirectory") ? Program.LaunchParameters["-savedirectory"] : Platform.Get<IPathService>().GetStoragePath("Terraria");
|
|
public static bool AnnouncementBoxDisabled;
|
|
public static int AnnouncementBoxRange = -1;
|
|
public static string AutogenSeedName;
|
|
private static GameModeData _currentGameModeInfo = GameModeData.NormalMode;
|
|
public static Dictionary<int, GameModeData> RegisterdGameModes = new Dictionary<int, GameModeData>()
|
|
{
|
|
{
|
|
0,
|
|
GameModeData.NormalMode
|
|
},
|
|
{
|
|
1,
|
|
GameModeData.ExpertMode
|
|
},
|
|
{
|
|
2,
|
|
GameModeData.MasterMode
|
|
},
|
|
{
|
|
3,
|
|
GameModeData.CreativeMode
|
|
}
|
|
};
|
|
private static bool? _overrideForExpertMode = new bool?();
|
|
private static bool? _overrideForMasterMode = new bool?();
|
|
public static bool drunkWorld = false;
|
|
public static bool getGoodWorld = false;
|
|
public static Vector2 destroyerHB = new Vector2(0.0f, 0.0f);
|
|
public static FavoritesFile LocalFavoriteData = new FavoritesFile(Main.SavePath + "/favorites.json", false);
|
|
public static FavoritesFile CloudFavoritesData = new FavoritesFile("/favorites.json", true);
|
|
public static FileMetadata WorldFileMetadata;
|
|
public static FileMetadata MapFileMetadata;
|
|
public static PingMapLayer Pings = new PingMapLayer();
|
|
public static MapIconOverlay MapIcons = new MapIconOverlay().AddLayer((IMapLayer) new SpawnMapLayer()).AddLayer((IMapLayer) new TeleportPylonsMapLayer()).AddLayer((IMapLayer) Main.Pings);
|
|
public static CreativeUI CreativeMenu = new CreativeUI();
|
|
private static Vector2 _lastPingMousePosition = Vector2.Zero;
|
|
private static double _lastPingMouseDownTime = 0.0;
|
|
private AchievementManager _achievements;
|
|
private AchievementAdvisor _achievementAdvisor;
|
|
public static BigProgressBarSystem BigBossProgressBar = new BigProgressBarSystem();
|
|
public static UserInterface MenuUI = new UserInterface();
|
|
public static UserInterface InGameUI = new UserInterface();
|
|
private static Main.OnPlayerSelected _pendingCharacterSelect;
|
|
public static bool drawBackGore;
|
|
public static ulong LobbyId = 0;
|
|
private static Microsoft.Xna.Framework.Color[] _mapColorCacheArray = new Microsoft.Xna.Framework.Color[30000];
|
|
public WaterfallManager waterfallManager;
|
|
public static WorldSections sectionManager;
|
|
public static bool ServerSideCharacter;
|
|
public static string clientUUID;
|
|
public static bool ContentLoaded = false;
|
|
private static int toolTipDistance = 6;
|
|
public static float GlobalTimeWrappedHourly;
|
|
public static bool GlobalTimerPaused = false;
|
|
public static GameTime gameTimeCache = new GameTime();
|
|
public static ulong TileFrameSeed = (ulong) Guid.NewGuid().GetHashCode();
|
|
private static ulong _drawCycleCounter;
|
|
public static ContentManager ShaderContentManager;
|
|
public static Ref<Effect> ScreenShaderRef = new Ref<Effect>();
|
|
public static Ref<Effect> PixelShaderRef = new Ref<Effect>();
|
|
public static Ref<Effect> TileShaderRef = new Ref<Effect>();
|
|
public static Ref<Effect> VertexPixelShaderRef = new Ref<Effect>();
|
|
public static int WaveQuality = 3;
|
|
public static bool UseStormEffects = true;
|
|
public static bool UseHeatDistortion = true;
|
|
public static int npcStreamSpeed = 30;
|
|
public static int musicError;
|
|
public static bool dedServFPS;
|
|
public static int dedServCount1;
|
|
public static int dedServCount2;
|
|
public static bool superFast = false;
|
|
public const int offLimitBorderTiles = 40;
|
|
public const int maxItemTypes = 5045;
|
|
public const int maxProjectileTypes = 950;
|
|
public const int maxNPCTypes = 663;
|
|
public const int maxTileSets = 623;
|
|
public const int maxWallTypes = 316;
|
|
public const int maxBuffTypes = 323;
|
|
public const int maxGlowMasks = 301;
|
|
public const int maxExtras = 212;
|
|
public const int maxGoreTypes = 1269;
|
|
public const int maxMusic = 89;
|
|
public const int MaxBannerTypes = 289;
|
|
public const int numArmorHead = 266;
|
|
public const int numArmorBody = 235;
|
|
public const int numArmorLegs = 218;
|
|
public const int numAccHandsOn = 22;
|
|
public const int numAccHandsOff = 14;
|
|
public const int numAccNeck = 11;
|
|
public const int numAccBack = 30;
|
|
public const int numAccFront = 9;
|
|
public const int numAccShoes = 25;
|
|
public const int numAccWaist = 17;
|
|
public const int numAccShield = 10;
|
|
public const int numAccFace = 16;
|
|
public const int numAccBalloon = 18;
|
|
public const int maxWings = 47;
|
|
public const int maxBackgrounds = 298;
|
|
public const int MaxShopIDs = 100;
|
|
private static float cameraLerp;
|
|
private static int cameraLerpTimer;
|
|
private static int cameraLerpTimeToggle;
|
|
private static bool cameraGamePadLerp;
|
|
public static Vector2[] OffsetsNPCOffhand = new Vector2[5]
|
|
{
|
|
new Vector2(14f, 34f),
|
|
new Vector2(14f, 32f),
|
|
new Vector2(14f, 26f),
|
|
new Vector2(14f, 22f),
|
|
new Vector2(14f, 18f)
|
|
};
|
|
public static Vector2[] OffsetsPlayerOffhand = new Vector2[20]
|
|
{
|
|
new Vector2(14f, 20f),
|
|
new Vector2(14f, 20f),
|
|
new Vector2(14f, 20f),
|
|
new Vector2(14f, 18f),
|
|
new Vector2(14f, 20f),
|
|
new Vector2(16f, 4f),
|
|
new Vector2(16f, 16f),
|
|
new Vector2(18f, 14f),
|
|
new Vector2(18f, 14f),
|
|
new Vector2(18f, 14f),
|
|
new Vector2(16f, 16f),
|
|
new Vector2(16f, 16f),
|
|
new Vector2(16f, 16f),
|
|
new Vector2(16f, 16f),
|
|
new Vector2(14f, 14f),
|
|
new Vector2(14f, 14f),
|
|
new Vector2(12f, 14f),
|
|
new Vector2(14f, 16f),
|
|
new Vector2(16f, 16f),
|
|
new Vector2(16f, 16f)
|
|
};
|
|
public static Vector2[] OffsetsPlayerOnhand = new Vector2[20]
|
|
{
|
|
new Vector2(6f, 19f),
|
|
new Vector2(5f, 10f),
|
|
new Vector2(12f, 10f),
|
|
new Vector2(13f, 17f),
|
|
new Vector2(12f, 19f),
|
|
new Vector2(5f, 10f),
|
|
new Vector2(7f, 17f),
|
|
new Vector2(6f, 16f),
|
|
new Vector2(6f, 16f),
|
|
new Vector2(6f, 16f),
|
|
new Vector2(6f, 17f),
|
|
new Vector2(7f, 17f),
|
|
new Vector2(7f, 17f),
|
|
new Vector2(7f, 17f),
|
|
new Vector2(8f, 17f),
|
|
new Vector2(9f, 16f),
|
|
new Vector2(9f, 12f),
|
|
new Vector2(8f, 17f),
|
|
new Vector2(7f, 17f),
|
|
new Vector2(7f, 17f)
|
|
};
|
|
public static Vector2[] OffsetsPlayerHeadgear = new Vector2[20]
|
|
{
|
|
new Vector2(0.0f, 2f),
|
|
new Vector2(0.0f, 2f),
|
|
new Vector2(0.0f, 2f),
|
|
new Vector2(0.0f, 2f),
|
|
new Vector2(0.0f, 2f),
|
|
new Vector2(0.0f, 2f),
|
|
new Vector2(0.0f, 2f),
|
|
new Vector2(0.0f, 0.0f),
|
|
new Vector2(0.0f, 0.0f),
|
|
new Vector2(0.0f, 0.0f),
|
|
new Vector2(0.0f, 2f),
|
|
new Vector2(0.0f, 2f),
|
|
new Vector2(0.0f, 2f),
|
|
new Vector2(0.0f, 2f),
|
|
new Vector2(0.0f, 0.0f),
|
|
new Vector2(0.0f, 0.0f),
|
|
new Vector2(0.0f, 0.0f),
|
|
new Vector2(0.0f, 2f),
|
|
new Vector2(0.0f, 2f),
|
|
new Vector2(0.0f, 2f)
|
|
};
|
|
public static Vector2 CurrentPan = Vector2.Zero;
|
|
public static float sunCircle;
|
|
public static int BlackFadeIn;
|
|
public static bool noWindowBorder = false;
|
|
public static RasterizerState Rasterizer = RasterizerState.CullCounterClockwise;
|
|
private string _cachedTitle;
|
|
public static int undergroundBackground;
|
|
public static int oldUndergroundBackground;
|
|
public static bool skipMenu = false;
|
|
public static bool verboseNetplay = false;
|
|
public static bool stopTimeOuts = false;
|
|
public static bool showSpam = false;
|
|
public static bool showItemOwner = false;
|
|
public static bool[] townNPCCanSpawn = new bool[663];
|
|
public static int musicBox2 = -1;
|
|
public static byte HealthBarDrawSettings = 1;
|
|
public static bool runningCollectorsEdition;
|
|
public static float wFrCounter;
|
|
public static float wFrame;
|
|
public static float upTimer;
|
|
public static float upTimerMax;
|
|
public static float upTimerMaxDelay;
|
|
public static bool drawDiag;
|
|
public static bool drawRelease;
|
|
public static bool drawBetterDebug;
|
|
public static bool betterDebugRelease;
|
|
public static bool renderNow;
|
|
public static bool drawToScreen;
|
|
public static bool targetSet;
|
|
public static int mouseX;
|
|
public static int mouseY;
|
|
public static int lastMouseX;
|
|
public static int lastMouseY;
|
|
private static ConcurrentQueue<Action> _mainThreadActions = new ConcurrentQueue<Action>();
|
|
public static bool mouseLeft;
|
|
public static bool mouseRight;
|
|
public static bool isMouseLeftConsumedByUI = false;
|
|
public static float essScale = 1f;
|
|
public static int essDir = -1;
|
|
public static float[] cloudBGX = new float[2];
|
|
public static float cloudBGAlpha;
|
|
public static float cloudBGActive;
|
|
public static int[] cloudBG = new int[2]{ 112, 113 };
|
|
public static int[] treeMntBGSet1 = new int[2];
|
|
public static int[] treeMntBGSet2 = new int[2];
|
|
public static int[] treeMntBGSet3 = new int[2];
|
|
public static int[] treeMntBGSet4 = new int[2];
|
|
public static int[] treeBGSet1 = new int[3];
|
|
public static int[] treeBGSet2 = new int[3];
|
|
public static int[] treeBGSet3 = new int[3];
|
|
public static int[] treeBGSet4 = new int[3];
|
|
public static int[] corruptBG = new int[3];
|
|
public static int[] jungleBG = new int[3];
|
|
public static int[] snowMntBG = new int[2];
|
|
public static int[] snowBG = new int[3];
|
|
public static int[] hallowBG = new int[3];
|
|
public static int[] crimsonBG = new int[3];
|
|
public static int[] desertBG = new int[3];
|
|
public static int[] mushroomBG = new int[3];
|
|
public static int oceanBG;
|
|
public static int[] underworldBG = new int[5];
|
|
public static int[] treeX = new int[4];
|
|
public static int[] treeStyle = new int[4];
|
|
public static int[] caveBackX = new int[4];
|
|
public static int[] caveBackStyle = new int[4];
|
|
public static int iceBackStyle;
|
|
public static int hellBackStyle;
|
|
public static int jungleBackStyle;
|
|
public static string debugWords = "";
|
|
public static bool gamePad = false;
|
|
public static bool xMas;
|
|
public static bool halloween;
|
|
public static bool forceXMasForToday;
|
|
public static bool forceHalloweenForToday;
|
|
public static bool DisableIntenseVisualEffects = false;
|
|
public static int snowDust = 0;
|
|
public static bool changeTheTitle;
|
|
public static bool hairWindow;
|
|
public static bool clothesWindow;
|
|
public static bool ingameOptionsWindow = false;
|
|
public static bool inFancyUI = false;
|
|
public static int keyCount;
|
|
public static string[] keyString = new string[10];
|
|
public static int[] keyInt = new int[10];
|
|
public static byte gFade;
|
|
public static float gFader;
|
|
public static byte gFadeDir = 1;
|
|
public static bool shouldDrawNetDiagnosticsUI;
|
|
public static INetDiagnosticsUI ActiveNetDiagnosticsUI = (INetDiagnosticsUI) new NetDiagnosticsUI();
|
|
public static IMultiplayerClosePlayersOverlay ActiveClosePlayersTeamOverlay = (IMultiplayerClosePlayersOverlay) new NewMultiplayerClosePlayersOverlay();
|
|
public static double UpdateTimeAccumulator;
|
|
public static bool drawSkip;
|
|
public static int fpsCount;
|
|
public static Stopwatch fpsTimer = new Stopwatch();
|
|
public bool gammaTest;
|
|
private const bool USE_ASYNC_LOAD = true;
|
|
private static bool _isAsyncLoadComplete;
|
|
public static bool showSplash = true;
|
|
public static bool ignoreErrors = true;
|
|
public static string defaultIP = "";
|
|
public static int dayRate = 1;
|
|
public static int desiredWorldTilesUpdateRate = 1;
|
|
public static int maxScreenW = 1920;
|
|
public static int maxScreenH = 1200;
|
|
public static int minScreenW = 800;
|
|
public static int minScreenH = 600;
|
|
public static float iS = 1f;
|
|
public static bool render;
|
|
public static int qaStyle;
|
|
public static int buffScanAreaWidth = (Main.maxScreenW + 800) / 16 - 1;
|
|
public static int buffScanAreaHeight = (Main.maxScreenH + 800) / 16 - 1;
|
|
public static float musicPitch = 0.0f;
|
|
public static bool[] projHostile = new bool[950];
|
|
public static bool[] projHook = new bool[950];
|
|
public static bool[] pvpBuff = new bool[323];
|
|
public static bool[] persistentBuff = new bool[323];
|
|
public static bool[] vanityPet = new bool[323];
|
|
public static bool[] lightPet = new bool[323];
|
|
public static bool[] meleeBuff = new bool[323];
|
|
public static bool[] debuff = new bool[323];
|
|
public static bool[] buffNoSave = new bool[323];
|
|
public static bool[] buffNoTimeDisplay = new bool[323];
|
|
public static bool[] buffDoubleApply = new bool[323];
|
|
public static int maxMP = 10;
|
|
public static string[] recentWorld = new string[Main.maxMP];
|
|
public static string[] recentIP = new string[Main.maxMP];
|
|
public static int[] recentPort = new int[Main.maxMP];
|
|
public static bool shortRender = true;
|
|
public static bool BackgroundEnabled = true;
|
|
public static int instantBGTransitionCounter = 2;
|
|
public static int bgDelay;
|
|
public static int bgStyle;
|
|
private const int BG_STYLES_COUNT = 14;
|
|
public static float[] bgAlphaFrontLayer = new float[14];
|
|
public static float[] bgAlphaFarBackLayer = new float[14];
|
|
public static int[] bgFrame = new int[14];
|
|
public static int[] bgFrameCounter = new int[14];
|
|
public static int EquipPage;
|
|
public static int EquipPageSelected;
|
|
public int mouseNPCIndex = -1;
|
|
public int mouseNPCType = -1;
|
|
public static int wofNPCIndex = -1;
|
|
public static int wofDrawAreaTop;
|
|
public static int wofDrawAreaBottom;
|
|
public static int wofDrawFrameIndex;
|
|
public static int offScreenRange = 200;
|
|
private RenderTarget2D backWaterTarget;
|
|
public static RenderTarget2D waterTarget;
|
|
private RenderTarget2D tileTarget;
|
|
private RenderTarget2D blackTarget;
|
|
private RenderTarget2D tile2Target;
|
|
private RenderTarget2D wallTarget;
|
|
private RenderTarget2D backgroundTarget;
|
|
public static RenderTarget2D screenTarget;
|
|
public static RenderTarget2D screenTargetSwap;
|
|
public static int maxMapUpdates = 250000;
|
|
public static bool refreshMap;
|
|
public static int loadMapLastX;
|
|
public static bool loadMapLock;
|
|
public static bool loadMap;
|
|
public static bool mapReady;
|
|
public static int textureMaxWidth = 2000;
|
|
public static int textureMaxHeight = 1800;
|
|
public static bool updateMap;
|
|
public static int mapMinX = 0;
|
|
public static int mapMaxX = 0;
|
|
public static int mapMinY;
|
|
public static int mapMaxY;
|
|
public static int mapTimeMax = 30;
|
|
public static int mapTime = Main.mapTimeMax;
|
|
public static bool clearMap;
|
|
public static int mapTargetX = 5;
|
|
public static int mapTargetY = 2;
|
|
private RenderTarget2D[,] mapTarget = new RenderTarget2D[Main.mapTargetX, Main.mapTargetY];
|
|
private RenderTarget2D mapSectionTexture;
|
|
public static bool[,] initMap = new bool[Main.mapTargetX, Main.mapTargetY];
|
|
public static bool[,] mapWasContentLost = new bool[Main.mapTargetX, Main.mapTargetY];
|
|
public const int numInfoIcons = 13;
|
|
public static Microsoft.Xna.Framework.Color OurFavoriteColor = new Microsoft.Xna.Framework.Color((int) byte.MaxValue, 231, 69);
|
|
public static bool mapInit;
|
|
public static bool mapEnabled = true;
|
|
public static int mapStyle = 1;
|
|
public static float grabMapX;
|
|
public static float grabMapY;
|
|
public static int miniMapX;
|
|
public static int miniMapY;
|
|
public static int miniMapWidth;
|
|
public static int miniMapHeight;
|
|
public static float mapMinimapDefaultScale = 1.05f;
|
|
public static float mapMinimapScale = Main.mapMinimapDefaultScale;
|
|
public static float mapMinimapAlpha = 1f;
|
|
public static float mapOverlayScale = 2.5f;
|
|
public static float mapOverlayAlpha = 0.35f;
|
|
public static bool mapFullscreen;
|
|
public static bool resetMapFull;
|
|
public static float mapFullscreenScale = 4f;
|
|
public static Vector2 mapFullscreenPos = new Vector2(-1f, -1f);
|
|
private static bool IsEnginePreloaded;
|
|
private static bool IsEngineLoaded;
|
|
private static uint _gameUpdateCount;
|
|
public static bool SkipAssemblyLoad;
|
|
private int firstTileX;
|
|
private int lastTileX;
|
|
private int firstTileY;
|
|
private int lastTileY;
|
|
private double bgParallax;
|
|
private int bgStartX;
|
|
private int bgLoops;
|
|
private int bgStartY;
|
|
private int bgLoopsY;
|
|
private int bgTopY;
|
|
public static int renderCount = 99;
|
|
private const int MF_BYPOSITION = 1024;
|
|
public static GraphicsDeviceManager graphics;
|
|
public static SpriteBatch spriteBatch;
|
|
public static TileBatch tileBatch;
|
|
public static BasicDebugDrawer DebugDrawer;
|
|
public static SamplerState SamplerStateForCursor = SamplerState.LinearClamp;
|
|
public static GenerationProgress AutogenProgress = new GenerationProgress();
|
|
private static Process tServer;
|
|
private static Stopwatch saveTime = new Stopwatch();
|
|
public static KeyboardState keyState;
|
|
public static KeyboardState oldKeyState;
|
|
public static Microsoft.Xna.Framework.Color mcColor = new Microsoft.Xna.Framework.Color(1f, 0.6f, 0.0f);
|
|
public static Microsoft.Xna.Framework.Color hcColor = new Microsoft.Xna.Framework.Color(1f, 0.15f, 0.1f);
|
|
public static Microsoft.Xna.Framework.Color creativeModeColor = Microsoft.Xna.Framework.Color.Lerp(Microsoft.Xna.Framework.Color.HotPink, Microsoft.Xna.Framework.Color.White, 0.1f);
|
|
public static Microsoft.Xna.Framework.Color highVersionColor = new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, 0);
|
|
public static Microsoft.Xna.Framework.Color errorColor = new Microsoft.Xna.Framework.Color((int) byte.MaxValue, 0, 0);
|
|
public static bool craftingHide;
|
|
public static bool armorHide;
|
|
public static float craftingAlpha = 1f;
|
|
public static float armorAlpha = 1f;
|
|
public static float[] buffAlpha = new float[323];
|
|
public static bool hardMode;
|
|
public float chestLootScale = 1f;
|
|
public bool chestLootHover;
|
|
public float chestStackScale = 1f;
|
|
public bool chestStackHover;
|
|
public float chestDepositScale = 1f;
|
|
public bool chestDepositHover;
|
|
public float chestRenameScale = 1f;
|
|
public bool chestRenameHover;
|
|
public float chestCancelScale = 1f;
|
|
public bool chestCancelHover;
|
|
public static Vector2 sceneWaterPos = Vector2.Zero;
|
|
public static Vector2 sceneTilePos = Vector2.Zero;
|
|
public static Vector2 sceneTile2Pos = Vector2.Zero;
|
|
public static Vector2 sceneWallPos = Vector2.Zero;
|
|
public static Vector2 sceneBackgroundPos = Vector2.Zero;
|
|
public static bool maxQ = true;
|
|
public static float gfxQuality = 1f;
|
|
public static float gfxRate = 0.01f;
|
|
public int DiscoStyle;
|
|
public static int DiscoR = (int) byte.MaxValue;
|
|
public static int DiscoB;
|
|
public static int DiscoG;
|
|
public static int teamCooldown;
|
|
public static int teamCooldownLen = 300;
|
|
public static bool gamePaused;
|
|
public static bool gameInactive;
|
|
public static int updatesCountedForFPS;
|
|
public static int drawsCountedForFPS;
|
|
public static int uCount;
|
|
public static int updateRate;
|
|
public static int frameRate;
|
|
public static bool RGBRelease;
|
|
public static bool qRelease = false;
|
|
public static bool netRelease;
|
|
public static bool frameRelease;
|
|
public static bool showFrameRate = false;
|
|
public static int magmaBGFrame;
|
|
public static int magmaBGFrameCounter;
|
|
public static int saveTimer = 0;
|
|
public static bool autoJoin;
|
|
public static bool serverStarting = false;
|
|
public static float leftWorld = 0.0f;
|
|
public static float rightWorld = 134400f;
|
|
public static float topWorld = 0.0f;
|
|
public static float bottomWorld = 38400f;
|
|
public static int maxTilesX = (int) Main.rightWorld / 16 + 1;
|
|
public static int maxTilesY = (int) Main.bottomWorld / 16 + 1;
|
|
public const int sectionWidth = 200;
|
|
public const int sectionHeight = 150;
|
|
public static int maxSectionsX = Main.maxTilesX / 200;
|
|
public static int maxSectionsY = Main.maxTilesY / 150;
|
|
public const int maxDust = 6000;
|
|
public static int maxDustToDraw = 6000;
|
|
public const int maxCombatText = 100;
|
|
public const int maxItemText = 20;
|
|
public const int maxPlayers = 255;
|
|
public static int maxNetPlayers = (int) byte.MaxValue;
|
|
public const int maxChests = 8000;
|
|
public const int maxItems = 400;
|
|
public const int maxProjectiles = 1000;
|
|
public const int maxNPCs = 200;
|
|
private static UICharacterSelect _characterSelectMenu = new UICharacterSelect();
|
|
private static UIWorldSelect _worldSelectMenu = new UIWorldSelect();
|
|
public static UIManageControls ManageControlsMenu = new UIManageControls();
|
|
public static UIAchievementsMenu AchievementsMenu = new UIAchievementsMenu();
|
|
public static int maxRain = 750;
|
|
public static int slimeWarningTime;
|
|
public static int slimeWarningDelay = 420;
|
|
public static float slimeRainNPCSlots = 0.65f;
|
|
public static bool[] slimeRainNPC = new bool[663];
|
|
public static double slimeRainTime;
|
|
public static bool slimeRain;
|
|
public static int slimeRainKillCount;
|
|
private const double slimeRainMaxTime = 54000.0;
|
|
private const double slimeRainMinTime = 32400.0;
|
|
private const double slimeRainMaxDelay = 604800.0;
|
|
private const double slimeRainMinDelay = 302400.0;
|
|
private const double slimeRainChance = 1728000.0;
|
|
public const int maxGore = 600;
|
|
public const int InventoryItemSlotsStart = 0;
|
|
public const int InventoryItemSlotsCount = 50;
|
|
public const int InventoryCoinSlotsStart = 50;
|
|
public const int InventoryCoinSlotsCount = 4;
|
|
public const int InventoryAmmoSlotsStart = 54;
|
|
public const int InventoryAmmoSlotsCount = 4;
|
|
public const int InventorySlotsTotal = 58;
|
|
public int invBottom = 210;
|
|
public const int maxLiquidTypes = 13;
|
|
public static float cameraX;
|
|
public static bool drewLava;
|
|
public static float[] liquidAlpha = new float[13];
|
|
public static int waterStyle;
|
|
public static int WorldRollingBackupsCountToKeep = 2;
|
|
private static bool TOWMusicUnlocked = false;
|
|
private static bool swapMusic = false;
|
|
public static float caveParallax = 0.88f;
|
|
public static int dungeonX;
|
|
public static int dungeonY;
|
|
public static Terraria.Liquid[] liquid = new Terraria.Liquid[Terraria.Liquid.maxLiquid];
|
|
public static LiquidBuffer[] liquidBuffer = new LiquidBuffer[50000];
|
|
public static bool dedServ;
|
|
public static int spamCount = 0;
|
|
public static int curMusic;
|
|
public static int dayMusic;
|
|
public static int ugMusic;
|
|
public int newMusic;
|
|
public static bool showItemText = true;
|
|
public static bool autoSave = true;
|
|
public static bool validateSaves = true;
|
|
public static bool bannerMouseOver;
|
|
public static string buffString = "";
|
|
public static string libPath = "";
|
|
public static int lo;
|
|
public static int LogoA = (int) byte.MaxValue;
|
|
public static int LogoB;
|
|
public static bool LogoT;
|
|
public static string statusText = "";
|
|
public static string worldName = "";
|
|
public static int worldID;
|
|
public static int background;
|
|
public static int caveBackground = 0;
|
|
public static float ugBackTransition;
|
|
public static Microsoft.Xna.Framework.Color tileColor;
|
|
public static double worldSurface;
|
|
public static double rockLayer;
|
|
public static Microsoft.Xna.Framework.Color[] teamColor = new Microsoft.Xna.Framework.Color[6];
|
|
public const double dayLength = 54000.0;
|
|
public const double nightLength = 32400.0;
|
|
public static bool dayTime = true;
|
|
public static double time = 13500.0;
|
|
public static double timeForVisualEffects;
|
|
public static int moonPhase;
|
|
public static short sunModY;
|
|
public static short moonModY;
|
|
public static bool alreadyGrabbingSunOrMoon;
|
|
public static bool bloodMoon;
|
|
public static bool pumpkinMoon;
|
|
public static bool snowMoon;
|
|
public static float cloudAlpha;
|
|
public static float maxRaining;
|
|
public static float oldMaxRaining;
|
|
public static int rainTime;
|
|
public static bool raining;
|
|
public static bool eclipse;
|
|
public static float eclipseLight;
|
|
public static int checkForSpawns;
|
|
public static int helpText;
|
|
public static int BartenderHelpTextIndex = 0;
|
|
public static bool autoGen;
|
|
public static bool autoPause = false;
|
|
public static int[] projFrames = new int[950];
|
|
public static bool[] projPet = new bool[950];
|
|
public static float demonTorch = 1f;
|
|
public static int demonTorchDir = 1;
|
|
public static float martianLight = 1f;
|
|
public static int martianLightDir = 1;
|
|
public static float masterColor = 1f;
|
|
public static int masterColorDir = 1;
|
|
public static bool placementPreview = true;
|
|
public static SceneMetrics SceneMetrics;
|
|
public const int maxStars = 400;
|
|
public static int numStars;
|
|
public const int maxStarTypes = 4;
|
|
public const int maxClouds = 200;
|
|
public const int maxCloudTypes = 37;
|
|
public static int weatherCounter;
|
|
public static int numClouds = 200;
|
|
public static int numCloudsTemp = Main.numClouds;
|
|
public static float windSpeedCurrent;
|
|
public static float windSpeedTarget;
|
|
public static int windCounter;
|
|
public static int extremeWindCounter;
|
|
public static bool windPhysics = false;
|
|
public static float windPhysicsStrength = 0.1f;
|
|
public static bool SettingsEnabled_TilesSwayInWind = true;
|
|
public static Cloud[] cloud = new Cloud[200];
|
|
public static bool resetClouds = true;
|
|
public static float SmoothedMushroomLightInfluence;
|
|
public static int fadeCounter;
|
|
public static float invAlpha = 1f;
|
|
public static float invDir = 1f;
|
|
[ThreadStatic]
|
|
public static UnifiedRandom rand;
|
|
public static bool allChestStackHover;
|
|
public static bool inventorySortMouseOver;
|
|
public static float GraveyardVisualIntensity;
|
|
public const int maxMoons = 9;
|
|
public static int moonType = 0;
|
|
public const int numTileColors = 32;
|
|
public const int numTreeStyles = 31;
|
|
public const int numberOfHairstyles = 162;
|
|
public const int maxHairStyles = 162;
|
|
public const int maxCharSelectHair = 51;
|
|
public const int maxHairOfStylistDefault = 123;
|
|
public static bool UseExperimentalFeatures;
|
|
public static string DefaultSeed = "";
|
|
public static AudioEngine engine;
|
|
public static SoundBank soundBank;
|
|
public static WaveBank waveBank;
|
|
public static Cue[] music = new Cue[89];
|
|
public static bool[] musicNoCrossFade = new bool[89];
|
|
public static float[] musicFade = new float[89];
|
|
public static float musicVolume = 1f;
|
|
public static float ambientVolume = 1f;
|
|
public static float soundVolume = 1f;
|
|
public static ServerMode MenuServerMode = ServerMode.Lobby | ServerMode.FriendsCanJoin;
|
|
public static bool[] tileLighted = new bool[623];
|
|
public static bool[] tileMergeDirt = new bool[623];
|
|
public static bool[] tileCut = new bool[623];
|
|
public static bool[] tileAlch = new bool[623];
|
|
public static int[] tileShine = new int[623];
|
|
public static bool[] tileShine2 = new bool[623];
|
|
public static bool[] wallHouse = new bool[316];
|
|
public static bool[] wallDungeon = new bool[316];
|
|
public static bool[] wallLight = new bool[316];
|
|
public static int[] wallBlend = new int[316];
|
|
public static bool[] tileStone = new bool[623];
|
|
public static bool[] tileAxe = new bool[623];
|
|
public static bool[] tileHammer = new bool[623];
|
|
public static bool[] tileWaterDeath = new bool[623];
|
|
public static bool[] tileLavaDeath = new bool[623];
|
|
public static bool[] tileTable = new bool[623];
|
|
public static bool[] tileBlockLight = new bool[623];
|
|
public static bool[] tileNoSunLight = new bool[623];
|
|
public static bool[] tileDungeon = new bool[623];
|
|
public static bool[] tileSpelunker = new bool[623];
|
|
public static bool[] tileSolidTop = new bool[623];
|
|
public static bool[] tileSolid = new bool[623];
|
|
public static bool[] tileBouncy = new bool[623];
|
|
public static short[] tileOreFinderPriority = new short[623];
|
|
public static byte[] tileLargeFrames = new byte[623];
|
|
public static byte[] wallLargeFrames = new byte[316];
|
|
public static bool[] tileRope = new bool[623];
|
|
public static bool[] tileBrick = new bool[623];
|
|
public static bool[] tileMoss = new bool[623];
|
|
public static bool[] tileNoAttach = new bool[623];
|
|
public static bool[] tileNoFail = new bool[623];
|
|
public static bool[] tileCracked = new bool[623];
|
|
public static bool[] tileObsidianKill = new bool[623];
|
|
public static bool[] tileFrameImportant = new bool[623];
|
|
public static bool[] tilePile = new bool[623];
|
|
public static bool[] tileBlendAll = new bool[623];
|
|
public static short[] tileGlowMask = new short[623];
|
|
public static bool[] tileContainer = new bool[623];
|
|
public static bool[] tileSign = new bool[623];
|
|
public static bool[][] tileMerge = new bool[623][];
|
|
public static int cageFrames = 25;
|
|
public static bool critterCage;
|
|
public static int[] bunnyCageFrame = new int[Main.cageFrames];
|
|
public static int[] bunnyCageFrameCounter = new int[Main.cageFrames];
|
|
public static int[] squirrelCageFrame = new int[Main.cageFrames];
|
|
public static int[] squirrelCageFrameCounter = new int[Main.cageFrames];
|
|
public static int[] squirrelCageFrameOrange = new int[Main.cageFrames];
|
|
public static int[] squirrelCageFrameCounterOrange = new int[Main.cageFrames];
|
|
public static int[] mallardCageFrame = new int[Main.cageFrames];
|
|
public static int[] mallardCageFrameCounter = new int[Main.cageFrames];
|
|
public static int[] duckCageFrame = new int[Main.cageFrames];
|
|
public static int[] duckCageFrameCounter = new int[Main.cageFrames];
|
|
public static int[] grebeCageFrame = new int[Main.cageFrames];
|
|
public static int[] grebeCageFrameCounter = new int[Main.cageFrames];
|
|
public static int[] seagullCageFrame = new int[Main.cageFrames];
|
|
public static int[] seagullCageFrameCounter = new int[Main.cageFrames];
|
|
public static int[] birdCageFrame = new int[Main.cageFrames];
|
|
public static int[] birdCageFrameCounter = new int[Main.cageFrames];
|
|
public static int[] redBirdCageFrame = new int[Main.cageFrames];
|
|
public static int[] redBirdCageFrameCounter = new int[Main.cageFrames];
|
|
public static int[] blueBirdCageFrame = new int[Main.cageFrames];
|
|
public static int[] blueBirdCageFrameCounter = new int[Main.cageFrames];
|
|
public static byte[,] butterflyCageMode = new byte[9, Main.cageFrames];
|
|
public static int[,] butterflyCageFrame = new int[9, Main.cageFrames];
|
|
public static int[,] butterflyCageFrameCounter = new int[9, Main.cageFrames];
|
|
public static int[,] dragonflyJarFrameCounter = new int[7, Main.cageFrames];
|
|
public static int[,] dragonflyJarFrame = new int[7, Main.cageFrames];
|
|
public static int[,] scorpionCageFrame = new int[2, Main.cageFrames];
|
|
public static int[,] scorpionCageFrameCounter = new int[2, Main.cageFrames];
|
|
public static int[] snailCageFrame = new int[Main.cageFrames];
|
|
public static int[] snailCageFrameCounter = new int[Main.cageFrames];
|
|
public static int[] snail2CageFrame = new int[Main.cageFrames];
|
|
public static int[] snail2CageFrameCounter = new int[Main.cageFrames];
|
|
public static byte[] fishBowlFrameMode = new byte[Main.cageFrames];
|
|
public static int[] fishBowlFrame = new int[Main.cageFrames];
|
|
public static int[] fishBowlFrameCounter = new int[Main.cageFrames];
|
|
public static int[] lavaFishBowlFrame = new int[Main.cageFrames];
|
|
public static int[] lavaFishBowlFrameCounter = new int[Main.cageFrames];
|
|
public static int[] frogCageFrame = new int[Main.cageFrames];
|
|
public static int[] frogCageFrameCounter = new int[Main.cageFrames];
|
|
public static int[] mouseCageFrame = new int[Main.cageFrames];
|
|
public static int[] mouseCageFrameCounter = new int[Main.cageFrames];
|
|
public static int[] turtleCageFrame = new int[Main.cageFrames];
|
|
public static int[] turtleCageFrameCounter = new int[Main.cageFrames];
|
|
public static int[] fairyJarFrame = new int[Main.cageFrames];
|
|
public static int[] fairyJarFrameCounter = new int[Main.cageFrames];
|
|
public static byte[,] jellyfishCageMode = new byte[3, Main.cageFrames];
|
|
public static int[,] jellyfishCageFrame = new int[3, Main.cageFrames];
|
|
public static int[,] jellyfishCageFrameCounter = new int[3, Main.cageFrames];
|
|
public static int[] wormCageFrame = new int[Main.cageFrames];
|
|
public static int[] wormCageFrameCounter = new int[Main.cageFrames];
|
|
public static int[] maggotCageFrame = new int[Main.cageFrames];
|
|
public static int[] maggotCageFrameCounter = new int[Main.cageFrames];
|
|
public static int[] ratCageFrame = new int[Main.cageFrames];
|
|
public static int[] ratCageFrameCounter = new int[Main.cageFrames];
|
|
public static int[] ladybugCageFrame = new int[Main.cageFrames];
|
|
public static int[] ladybugCageFrameCounter = new int[Main.cageFrames];
|
|
public static int[] penguinCageFrame = new int[Main.cageFrames];
|
|
public static int[] penguinCageFrameCounter = new int[Main.cageFrames];
|
|
public static int[] waterStriderCageFrame = new int[Main.cageFrames];
|
|
public static int[] waterStriderCageFrameCounter = new int[Main.cageFrames];
|
|
public static int[] seahorseCageFrame = new int[Main.cageFrames];
|
|
public static int[] seahorseCageFrameCounter = new int[Main.cageFrames];
|
|
public static int[,] slugCageFrame = new int[3, Main.cageFrames];
|
|
public static int[,] slugCageFrameCounter = new int[3, Main.cageFrames];
|
|
public static int[] owlCageFrame = new int[Main.cageFrames];
|
|
public static int[] owlCageFrameCounter = new int[Main.cageFrames];
|
|
public static int[] grasshopperCageFrame = new int[Main.cageFrames];
|
|
public static int[] grasshopperCageFrameCounter = new int[Main.cageFrames];
|
|
public static bool[] tileSand = new bool[623];
|
|
public static bool[] tileFlame = new bool[623];
|
|
public static bool[] npcCatchable = new bool[663];
|
|
public static int[] tileFrame = new int[623];
|
|
public static int[] tileFrameCounter = new int[623];
|
|
public static byte[] wallFrame = new byte[316];
|
|
public static byte[] wallFrameCounter = new byte[316];
|
|
public static int[] backgroundWidth = new int[298];
|
|
public static int[] backgroundHeight = new int[298];
|
|
public static HairstyleUnlocksHelper Hairstyles = new HairstyleUnlocksHelper();
|
|
public static bool tilesLoaded = false;
|
|
public static WorldMap Map = new WorldMap(Main.maxTilesX, Main.maxTilesY);
|
|
public static Tile[,] tile = new Tile[Main.maxTilesX, Main.maxTilesY];
|
|
public static Dust[] dust = new Dust[6001];
|
|
public static Star[] star = new Star[400];
|
|
public static Item[] item = new Item[401];
|
|
public static int[] timeItemSlotCannotBeReusedFor = new int[401];
|
|
public static NPC[] npc = new NPC[201];
|
|
public static Gore[] gore = new Gore[601];
|
|
public static Rain[] rain = new Rain[Main.maxRain + 1];
|
|
public static Projectile[] projectile = new Projectile[1001];
|
|
public static int[,] projectileIdentity = new int[256, 1001];
|
|
public static CombatText[] combatText = new CombatText[100];
|
|
public static PopupText[] popupText = new PopupText[20];
|
|
public static Chest[] chest = new Chest[8000];
|
|
public static Sign[] sign = new Sign[1000];
|
|
public static int[] itemFrame = new int[401];
|
|
public static int[] itemFrameCounter = new int[401];
|
|
public static DrawAnimation[] itemAnimations = new DrawAnimation[5045];
|
|
private static DrawAnimation _coinOnWorldAnimation = (DrawAnimation) new DrawAnimationVertical(6, 8);
|
|
private static DrawAnimation _monkStaffT3OnWorldAnimation = (DrawAnimation) new DrawAnimationVertical(5, 3);
|
|
public static List<int> itemAnimationsRegistered = new List<int>();
|
|
public static Vector2 screenPosition;
|
|
public static Vector2 screenLastPosition;
|
|
public static int screenWidth = 1152;
|
|
public static int screenHeight = 864;
|
|
public static bool screenMaximized = true;
|
|
public static bool screenBorderless = true;
|
|
public static int screenBorderlessPendingResizes;
|
|
public static int teamNamePlateDistance = 2000;
|
|
public static int multiplayerNPCSmoothingRange = 300;
|
|
public static bool Setting_UseReducedMaxLiquids = false;
|
|
public static int PlayerOverheadChatMessageDisplayTime = 400;
|
|
public static object CurrentInputTextTakerOverride;
|
|
public static bool drawingPlayerChat;
|
|
public static bool chatRelease;
|
|
public static string chatText = "";
|
|
public static bool inputTextEnter;
|
|
public static bool inputTextEscape;
|
|
public static float[] hotbarScale = new float[10]
|
|
{
|
|
1f,
|
|
0.75f,
|
|
0.75f,
|
|
0.75f,
|
|
0.75f,
|
|
0.75f,
|
|
0.75f,
|
|
0.75f,
|
|
0.75f,
|
|
0.75f
|
|
};
|
|
public static byte mouseTextColor;
|
|
public static int mouseTextColorChange = 1;
|
|
public static bool mouseLeftRelease;
|
|
public static bool mouseRightRelease;
|
|
public static bool playerInventory;
|
|
public static int stackSplit;
|
|
public static bool preventStackSplitReset;
|
|
public static int stackCounter;
|
|
public static int stackDelay = 7;
|
|
public static int superFastStack;
|
|
public static Item mouseItem = new Item();
|
|
public static Item guideItem = new Item();
|
|
public static Item reforgeItem = new Item();
|
|
public static float inventoryScale = 0.75f;
|
|
public static bool hasFocus;
|
|
public static Microsoft.Xna.Framework.Point rulerLineDisplayValues = new Microsoft.Xna.Framework.Point();
|
|
public static bool recFastScroll;
|
|
public static bool recBigList;
|
|
public static int recStart;
|
|
public static Recipe[] recipe = new Recipe[Recipe.maxRecipes];
|
|
public static int[] availableRecipe = new int[Recipe.maxRecipes];
|
|
public static float[] availableRecipeY = new float[Recipe.maxRecipes];
|
|
public static int numAvailableRecipes;
|
|
public static int focusRecipe;
|
|
public static int myPlayer;
|
|
public static Player[] player = new Player[256];
|
|
public static Player[] playerVisualClone = new Player[256];
|
|
public static bool[] countsAsHostForGameplay = new bool[256];
|
|
public static int spawnTileX;
|
|
public static int spawnTileY;
|
|
public static bool npcChatRelease;
|
|
public static bool editSign;
|
|
public static bool editChest;
|
|
public static bool blockInput = false;
|
|
public static string blockKey = Microsoft.Xna.Framework.Input.Keys.None.ToString();
|
|
public static string defaultChestName = string.Empty;
|
|
public static string npcChatText = "";
|
|
public static bool npcChatFocus1;
|
|
public static bool npcChatFocus2;
|
|
public static bool npcChatFocus3;
|
|
public static bool npcChatFocus4;
|
|
public static int oldNPCShop;
|
|
public static int npcChatCornerItem;
|
|
public Chest[] shop = new Chest[100];
|
|
public static ItemShopSellbackHelper shopSellbackHelper = new ItemShopSellbackHelper();
|
|
public static int[] travelShop = new int[40];
|
|
public static List<string> anglerWhoFinishedToday = new List<string>();
|
|
public static bool anglerQuestFinished;
|
|
public static int anglerQuest;
|
|
public static int[] anglerQuestItemNetIDs = new int[41]
|
|
{
|
|
2450,
|
|
2451,
|
|
2452,
|
|
2453,
|
|
2454,
|
|
2455,
|
|
2456,
|
|
2457,
|
|
2458,
|
|
2459,
|
|
2460,
|
|
2461,
|
|
2462,
|
|
2463,
|
|
2464,
|
|
2465,
|
|
2466,
|
|
2467,
|
|
2468,
|
|
2469,
|
|
2470,
|
|
2471,
|
|
2472,
|
|
2473,
|
|
2474,
|
|
2475,
|
|
2476,
|
|
2477,
|
|
2478,
|
|
2479,
|
|
2480,
|
|
2481,
|
|
2482,
|
|
2483,
|
|
2484,
|
|
2485,
|
|
2486,
|
|
2487,
|
|
2488,
|
|
4393,
|
|
4394
|
|
};
|
|
public static AmbienceServer AmbienceServer;
|
|
public static ItemDropDatabase ItemDropsDB;
|
|
public static BestiaryDatabase BestiaryDB;
|
|
public static ItemDropResolver ItemDropSolver;
|
|
public static BestiaryUnlocksTracker BestiaryTracker;
|
|
public static UIBestiaryTest BestiaryUI;
|
|
public static TeleportPylonsSystem PylonSystem;
|
|
public static ShopHelper ShopHelper;
|
|
public static GolfState LocalGolfState = new GolfState();
|
|
public static bool Support4K = true;
|
|
public static float MinimumZoomComparerX = 1920f;
|
|
public static float MinimumZoomComparerY = 1200f;
|
|
private static int _renderTargetMaxSize = 2048;
|
|
private static GraphicsProfile _selectedGraphicsProfile = GraphicsProfile.Reach;
|
|
private static GraphicsProfile _currentGraphicsProfile = GraphicsProfile.Reach;
|
|
public static int LogicCheckScreenWidth = 1920;
|
|
public static int LogicCheckScreenHeight = 1200;
|
|
private static Main.WorldPreparationState _worldPreparationState = Main.WorldPreparationState.AwaitingData;
|
|
public static float temporaryGUIScaleSlider = -1f;
|
|
public static bool temporaryGUIScaleSliderUpdate = false;
|
|
public static bool InGuideCraftMenu;
|
|
public static bool InReforgeMenu;
|
|
public static Item HoverItem = new Item();
|
|
private static int backSpaceCount;
|
|
private static float backSpaceRate;
|
|
public static string motd = "";
|
|
public static bool toggleFullscreen;
|
|
public static int numDisplayModes;
|
|
public static int[] displayWidth = new int[99];
|
|
public static int[] displayHeight = new int[99];
|
|
public static bool gameMenu = true;
|
|
public static bool menuBGChangedDay = false;
|
|
public static bool menuBGChangedNight = false;
|
|
public static bool lockMenuBGChange = false;
|
|
private static int maxLoadPlayer = 1000;
|
|
private static int maxLoadWorld = 1000;
|
|
public static List<PlayerFileData> PlayerList = new List<PlayerFileData>();
|
|
public static PlayerFileData ActivePlayerFileData = new PlayerFileData();
|
|
public static Player PendingPlayer = (Player) null;
|
|
public static List<WorldFileData> WorldList = new List<WorldFileData>();
|
|
public static WorldFileData ActiveWorldFileData = new WorldFileData();
|
|
public static string WorldPath = Path.Combine(Main.SavePath, "Worlds");
|
|
public static string CloudWorldPath = "worlds";
|
|
public static string PlayerPath = Path.Combine(Main.SavePath, "Players");
|
|
public static string CloudPlayerPath = "players";
|
|
public static Preferences Configuration = new Preferences(Main.SavePath + Path.DirectorySeparatorChar.ToString() + "config.json");
|
|
public static Preferences InputProfiles = new Preferences(Main.SavePath + Path.DirectorySeparatorChar.ToString() + "input profiles.json");
|
|
public static KeyboardState inputText;
|
|
public static KeyboardState oldInputText;
|
|
public static int PendingResolutionWidth = 800;
|
|
public static int PendingResolutionHeight = 600;
|
|
public static bool PendingBorderlessState;
|
|
public static int invasionType;
|
|
public static double invasionX;
|
|
public static int invasionSize;
|
|
public static int invasionDelay;
|
|
public static int invasionWarn;
|
|
public static int invasionSizeStart;
|
|
public static bool invasionProgressNearInvasion;
|
|
public static int invasionProgressMode = 2;
|
|
public static int invasionProgressIcon;
|
|
public static int invasionProgress;
|
|
public static int invasionProgressMax;
|
|
public static int invasionProgressWave;
|
|
public static int invasionProgressDisplayLeft;
|
|
public static float invasionProgressAlpha;
|
|
public static bool HasInteractibleObjectThatIsNotATile = false;
|
|
public int currentNPCShowingChatBubble = -1;
|
|
public static int[] npcFrameCount = new int[663]
|
|
{
|
|
1,
|
|
2,
|
|
2,
|
|
3,
|
|
6,
|
|
2,
|
|
2,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
2,
|
|
25,
|
|
23,
|
|
25,
|
|
21,
|
|
15,
|
|
26,
|
|
2,
|
|
10,
|
|
1,
|
|
16,
|
|
16,
|
|
16,
|
|
3,
|
|
1,
|
|
15,
|
|
3,
|
|
1,
|
|
3,
|
|
1,
|
|
1,
|
|
21,
|
|
25,
|
|
1,
|
|
1,
|
|
1,
|
|
3,
|
|
3,
|
|
15,
|
|
3,
|
|
7,
|
|
7,
|
|
6,
|
|
5,
|
|
6,
|
|
5,
|
|
3,
|
|
3,
|
|
23,
|
|
6,
|
|
3,
|
|
6,
|
|
6,
|
|
2,
|
|
5,
|
|
6,
|
|
5,
|
|
7,
|
|
7,
|
|
4,
|
|
5,
|
|
8,
|
|
1,
|
|
5,
|
|
1,
|
|
2,
|
|
4,
|
|
16,
|
|
5,
|
|
4,
|
|
4,
|
|
15,
|
|
16,
|
|
16,
|
|
16,
|
|
2,
|
|
4,
|
|
6,
|
|
6,
|
|
18,
|
|
16,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
4,
|
|
3,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
5,
|
|
6,
|
|
7,
|
|
16,
|
|
1,
|
|
1,
|
|
25,
|
|
23,
|
|
12,
|
|
20,
|
|
21,
|
|
1,
|
|
2,
|
|
2,
|
|
3,
|
|
6,
|
|
1,
|
|
1,
|
|
1,
|
|
15,
|
|
4,
|
|
11,
|
|
1,
|
|
23,
|
|
6,
|
|
6,
|
|
3,
|
|
1,
|
|
2,
|
|
2,
|
|
1,
|
|
3,
|
|
4,
|
|
1,
|
|
2,
|
|
1,
|
|
4,
|
|
2,
|
|
1,
|
|
15,
|
|
3,
|
|
25,
|
|
4,
|
|
5,
|
|
7,
|
|
3,
|
|
2,
|
|
12,
|
|
12,
|
|
4,
|
|
4,
|
|
4,
|
|
8,
|
|
8,
|
|
13,
|
|
5,
|
|
6,
|
|
4,
|
|
15,
|
|
23,
|
|
3,
|
|
15,
|
|
8,
|
|
5,
|
|
4,
|
|
13,
|
|
15,
|
|
12,
|
|
4,
|
|
14,
|
|
14,
|
|
3,
|
|
2,
|
|
5,
|
|
3,
|
|
2,
|
|
3,
|
|
23,
|
|
5,
|
|
14,
|
|
16,
|
|
5,
|
|
2,
|
|
2,
|
|
12,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
7,
|
|
14,
|
|
15,
|
|
16,
|
|
8,
|
|
3,
|
|
15,
|
|
15,
|
|
16,
|
|
2,
|
|
3,
|
|
20,
|
|
25,
|
|
23,
|
|
26,
|
|
4,
|
|
4,
|
|
16,
|
|
16,
|
|
20,
|
|
20,
|
|
20,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
8,
|
|
12,
|
|
3,
|
|
4,
|
|
2,
|
|
4,
|
|
25,
|
|
26,
|
|
26,
|
|
6,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
4,
|
|
4,
|
|
5,
|
|
4,
|
|
6,
|
|
7,
|
|
15,
|
|
4,
|
|
7,
|
|
6,
|
|
1,
|
|
1,
|
|
2,
|
|
4,
|
|
3,
|
|
5,
|
|
3,
|
|
3,
|
|
3,
|
|
4,
|
|
5,
|
|
6,
|
|
4,
|
|
2,
|
|
1,
|
|
8,
|
|
4,
|
|
4,
|
|
1,
|
|
8,
|
|
1,
|
|
4,
|
|
15,
|
|
15,
|
|
15,
|
|
15,
|
|
15,
|
|
15,
|
|
16,
|
|
15,
|
|
15,
|
|
15,
|
|
15,
|
|
15,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
3,
|
|
16,
|
|
3,
|
|
6,
|
|
12,
|
|
21,
|
|
21,
|
|
20,
|
|
16,
|
|
15,
|
|
15,
|
|
5,
|
|
5,
|
|
6,
|
|
6,
|
|
5,
|
|
2,
|
|
7,
|
|
2,
|
|
6,
|
|
6,
|
|
6,
|
|
6,
|
|
6,
|
|
15,
|
|
15,
|
|
15,
|
|
15,
|
|
15,
|
|
11,
|
|
4,
|
|
2,
|
|
2,
|
|
3,
|
|
3,
|
|
3,
|
|
16,
|
|
15,
|
|
16,
|
|
10,
|
|
14,
|
|
12,
|
|
1,
|
|
10,
|
|
8,
|
|
3,
|
|
3,
|
|
2,
|
|
2,
|
|
2,
|
|
2,
|
|
7,
|
|
15,
|
|
15,
|
|
15,
|
|
6,
|
|
3,
|
|
10,
|
|
10,
|
|
6,
|
|
9,
|
|
8,
|
|
9,
|
|
8,
|
|
20,
|
|
10,
|
|
6,
|
|
23,
|
|
1,
|
|
4,
|
|
24,
|
|
2,
|
|
4,
|
|
6,
|
|
6,
|
|
13,
|
|
15,
|
|
15,
|
|
15,
|
|
15,
|
|
4,
|
|
4,
|
|
26,
|
|
23,
|
|
8,
|
|
2,
|
|
4,
|
|
4,
|
|
4,
|
|
4,
|
|
2,
|
|
2,
|
|
4,
|
|
12,
|
|
12,
|
|
9,
|
|
9,
|
|
9,
|
|
1,
|
|
9,
|
|
11,
|
|
2,
|
|
2,
|
|
9,
|
|
5,
|
|
6,
|
|
4,
|
|
18,
|
|
8,
|
|
11,
|
|
1,
|
|
4,
|
|
5,
|
|
8,
|
|
4,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
4,
|
|
2,
|
|
5,
|
|
4,
|
|
11,
|
|
5,
|
|
11,
|
|
1,
|
|
1,
|
|
1,
|
|
10,
|
|
10,
|
|
15,
|
|
8,
|
|
17,
|
|
6,
|
|
6,
|
|
1,
|
|
12,
|
|
12,
|
|
13,
|
|
15,
|
|
9,
|
|
5,
|
|
10,
|
|
7,
|
|
7,
|
|
7,
|
|
7,
|
|
7,
|
|
7,
|
|
7,
|
|
4,
|
|
4,
|
|
16,
|
|
16,
|
|
25,
|
|
5,
|
|
7,
|
|
3,
|
|
13,
|
|
2,
|
|
6,
|
|
2,
|
|
19,
|
|
19,
|
|
19,
|
|
20,
|
|
26,
|
|
3,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
16,
|
|
21,
|
|
9,
|
|
16,
|
|
7,
|
|
6,
|
|
18,
|
|
13,
|
|
20,
|
|
12,
|
|
12,
|
|
20,
|
|
6,
|
|
14,
|
|
14,
|
|
14,
|
|
14,
|
|
6,
|
|
1,
|
|
3,
|
|
25,
|
|
19,
|
|
20,
|
|
22,
|
|
2,
|
|
4,
|
|
4,
|
|
4,
|
|
11,
|
|
9,
|
|
8,
|
|
1,
|
|
9,
|
|
1,
|
|
8,
|
|
8,
|
|
12,
|
|
12,
|
|
11,
|
|
11,
|
|
11,
|
|
11,
|
|
11,
|
|
11,
|
|
11,
|
|
11,
|
|
11,
|
|
1,
|
|
6,
|
|
9,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
4,
|
|
1,
|
|
10,
|
|
1,
|
|
8,
|
|
4,
|
|
1,
|
|
5,
|
|
8,
|
|
8,
|
|
8,
|
|
8,
|
|
9,
|
|
9,
|
|
5,
|
|
4,
|
|
8,
|
|
16,
|
|
8,
|
|
2,
|
|
3,
|
|
3,
|
|
6,
|
|
6,
|
|
7,
|
|
13,
|
|
4,
|
|
4,
|
|
4,
|
|
4,
|
|
1,
|
|
1,
|
|
1,
|
|
8,
|
|
25,
|
|
11,
|
|
14,
|
|
14,
|
|
14,
|
|
17,
|
|
17,
|
|
17,
|
|
5,
|
|
5,
|
|
5,
|
|
14,
|
|
14,
|
|
14,
|
|
9,
|
|
9,
|
|
9,
|
|
9,
|
|
17,
|
|
17,
|
|
16,
|
|
16,
|
|
18,
|
|
18,
|
|
10,
|
|
10,
|
|
10,
|
|
10,
|
|
4,
|
|
1,
|
|
6,
|
|
9,
|
|
6,
|
|
4,
|
|
4,
|
|
4,
|
|
14,
|
|
4,
|
|
25,
|
|
13,
|
|
3,
|
|
7,
|
|
6,
|
|
6,
|
|
1,
|
|
4,
|
|
4,
|
|
4,
|
|
4,
|
|
4,
|
|
4,
|
|
4,
|
|
15,
|
|
15,
|
|
8,
|
|
8,
|
|
2,
|
|
6,
|
|
15,
|
|
15,
|
|
6,
|
|
13,
|
|
5,
|
|
5,
|
|
7,
|
|
5,
|
|
14,
|
|
14,
|
|
4,
|
|
6,
|
|
21,
|
|
1,
|
|
1,
|
|
1,
|
|
11,
|
|
12,
|
|
6,
|
|
6,
|
|
17,
|
|
6,
|
|
16,
|
|
21,
|
|
16,
|
|
23,
|
|
5,
|
|
16,
|
|
2,
|
|
28,
|
|
28,
|
|
6,
|
|
6,
|
|
6,
|
|
6,
|
|
6,
|
|
6,
|
|
6,
|
|
7,
|
|
7,
|
|
7,
|
|
7,
|
|
7,
|
|
7,
|
|
7,
|
|
3,
|
|
4,
|
|
6,
|
|
27,
|
|
16,
|
|
2,
|
|
2,
|
|
4,
|
|
3,
|
|
4
|
|
};
|
|
public static Dictionary<int, byte> npcLifeBytes = new Dictionary<int, byte>();
|
|
public static bool mouseExit;
|
|
public static float exitScale = 0.8f;
|
|
public static bool mouseReforge;
|
|
public static float reforgeScale = 0.8f;
|
|
public static Player clientPlayer = new Player();
|
|
public static string getIP = Main.defaultIP;
|
|
public static string getPort = Convert.ToString(Netplay.ListenPort);
|
|
public static bool menuMultiplayer;
|
|
public static bool menuServer;
|
|
public static int netMode;
|
|
private static int _targetNetMode;
|
|
private static bool _hasPendingNetmodeChange;
|
|
public const int MaxTimeout = 120;
|
|
public static int netPlayCounter;
|
|
public static int lastNPCUpdate;
|
|
public static int lastItemUpdate;
|
|
public static int maxNPCUpdates = 5;
|
|
public static int maxItemUpdates = 5;
|
|
public static string cUp = "W";
|
|
public static string cLeft = "A";
|
|
public static string cDown = "S";
|
|
public static string cRight = "D";
|
|
public static string cJump = "Space";
|
|
public static string cThrowItem = "T";
|
|
public static string cHeal = "H";
|
|
public static string cMana = "J";
|
|
public static string cBuff = "B";
|
|
public static string cHook = "E";
|
|
public static string cTorch = "LeftShift";
|
|
public static string cInv = "Escape";
|
|
public static string cSmart = "LeftControl";
|
|
public static string cMount = "R";
|
|
public static string cFavoriteKey = "LeftAlt";
|
|
public static bool cSmartCursorModeIsToggleAndNotHold = true;
|
|
public static bool SmartCursorEnabled = false;
|
|
public static bool SmartCursorShowing = false;
|
|
public static int SmartCursorX;
|
|
public static int SmartCursorY;
|
|
public static bool SmartInteractShowingGenuine;
|
|
public static bool SmartInteractShowingFake;
|
|
public static int SmartInteractX;
|
|
public static int SmartInteractY;
|
|
public static int SmartInteractNPC;
|
|
public static int SmartInteractProj;
|
|
public static bool SmartInteractPotionOfReturn;
|
|
public static List<Microsoft.Xna.Framework.Point> SmartInteractTileCoords = new List<Microsoft.Xna.Framework.Point>();
|
|
public static List<Microsoft.Xna.Framework.Point> SmartInteractTileCoordsSelected = new List<Microsoft.Xna.Framework.Point>();
|
|
public static int TileInteractionLX = -1;
|
|
public static int TileInteractionLY = -1;
|
|
public static int TileInteractionHX = -1;
|
|
public static int TileInteractionHY = -1;
|
|
public static int cursorOverride = -1;
|
|
public static int signHover = -1;
|
|
public static string cMapZoomIn = "Add";
|
|
public static string cMapZoomOut = "Subtract";
|
|
public static string cMapAlphaUp = "PageUp";
|
|
public static string cMapAlphaDown = "PageDown";
|
|
public static string cMapFull = "M";
|
|
public static string cMapStyle = "Tab";
|
|
public static Microsoft.Xna.Framework.Input.Keys FavoriteKey = Microsoft.Xna.Framework.Input.Keys.LeftAlt;
|
|
public static ColorSlidersSet mouseColorSlider = new ColorSlidersSet();
|
|
public static ColorSlidersSet mouseBorderColorSlider = new ColorSlidersSet();
|
|
public static Microsoft.Xna.Framework.Color mouseColor = new Microsoft.Xna.Framework.Color((int) byte.MaxValue, 50, 95);
|
|
public static Microsoft.Xna.Framework.Color cursorColor = Microsoft.Xna.Framework.Color.White;
|
|
public static int cursorColorDirection = 1;
|
|
public static float cursorAlpha;
|
|
public static float cursorScale;
|
|
public static bool signBubble;
|
|
public static int signX = 0;
|
|
public static int signY = 0;
|
|
public static bool hideUI;
|
|
public static bool releaseUI;
|
|
public static int FrameSkipMode = 2;
|
|
public static bool terrariasFixedTiming = true;
|
|
private int splashCounter;
|
|
public List<int> DrawCacheNPCsMoonMoon = new List<int>(200);
|
|
public List<int> DrawCacheNPCsOverPlayers = new List<int>(200);
|
|
public List<int> DrawCacheNPCProjectiles = new List<int>(200);
|
|
public List<int> DrawCacheNPCsBehindNonSolidTiles = new List<int>(200);
|
|
public List<int> DrawCacheProjsBehindNPCsAndTiles = new List<int>(1000);
|
|
public List<int> DrawCacheProjsBehindNPCs = new List<int>(1000);
|
|
public List<int> DrawCacheProjsBehindProjectiles = new List<int>(1000);
|
|
public List<int> DrawCacheProjsOverWiresUI = new List<int>(1000);
|
|
public List<int> DrawCacheProjsOverPlayers = new List<int>(1000);
|
|
public List<int> DrawCacheFirstFractals = new List<int>(1000);
|
|
public static ParticleRenderer ParticleSystem_World_OverPlayers = new ParticleRenderer();
|
|
public static ParticleRenderer ParticleSystem_World_BehindPlayers = new ParticleRenderer();
|
|
private static WindowStateController _windowMover;
|
|
public static AnchoredEntitiesCollection sittingManager;
|
|
public static AnchoredEntitiesCollection sleepingManager;
|
|
private static bool shouldSetDefaultUIScale = true;
|
|
private static float newDefaultUIScale = 0.0f;
|
|
private static bool startFullscreen = false;
|
|
public static string oldStatusText = "";
|
|
public static string autoGenFileLocation = (string) null;
|
|
public static bool autoShutdown;
|
|
private uint previousExecutionState;
|
|
public static int sundialCooldown;
|
|
public static bool fastForwardTime;
|
|
private static Stopwatch splashTimer = new Stopwatch();
|
|
private IEnumerator _gameContentLoadProcess;
|
|
private int _musicReplayDelay;
|
|
public static bool _shouldUseWindyDayMusic = false;
|
|
public static bool _shouldUseStormMusic = false;
|
|
private int lastMusicPlayed = -1;
|
|
private bool playOldTile;
|
|
private static float _minWind = 0.34f;
|
|
private static float _maxWind = 0.4f;
|
|
private static float _minRain = 0.4f;
|
|
private static float _maxRain = 0.5f;
|
|
public static float ambientWaterfallX = -1f;
|
|
public static float ambientWaterfallY = -1f;
|
|
public static float ambientWaterfallStrength = 0.0f;
|
|
public static float ambientLavafallX = -1f;
|
|
public static float ambientLavafallY = -1f;
|
|
public static float ambientLavafallStrength = 0.0f;
|
|
public static float ambientLavaX = -1f;
|
|
public static float ambientLavaY = -1f;
|
|
public static float ambientLavaStrength;
|
|
public static int ambientCounter;
|
|
private static bool _isWaterfallMusicPlaying = false;
|
|
private static bool _isLavafallMusicPlaying = false;
|
|
public static IChatMonitor chatMonitor = (IChatMonitor) new RemadeChatMonitor();
|
|
public static int ProjectileUpdateLoopIndex = -1;
|
|
public static GameTipsDisplay gameTips;
|
|
private Stopwatch _worldUpdateTimeTester = new Stopwatch();
|
|
public SpelunkerProjectileHelper SpelunkerProjectileHelper = new SpelunkerProjectileHelper();
|
|
public ChumBucketProjectileHelper ChumBucketProjectileHelper = new ChumBucketProjectileHelper();
|
|
public static int weatherVaneBobframe = 0;
|
|
private float logoRotation;
|
|
private float logoRotationDirection = -1f;
|
|
private float logoRotationSpeed = 1f;
|
|
private float logoScale = 1f;
|
|
private float logoScaleDirection = 1f;
|
|
private float logoScaleSpeed = 1f;
|
|
private static int maxMenuItems = 16;
|
|
private float[] menuItemScale = new float[Main.maxMenuItems];
|
|
private int focusMenu = -1;
|
|
private int selectedMenu = -1;
|
|
private int selectedMenu2 = -1;
|
|
public static int selectedPlayer = 0;
|
|
public static int selectedWorld;
|
|
public static int menuMode;
|
|
public static int menuSkip;
|
|
private static bool _needsLanguageSelect = true;
|
|
private static Item tooltipPrefixComparisonItem = new Item();
|
|
private Main.MouseTextCache _mouseTextCache;
|
|
public int textBlinkerCount;
|
|
public int textBlinkerState;
|
|
public static string newWorldName = "";
|
|
private static int[] specX = new int[1000];
|
|
private static int[] specY = new int[1000];
|
|
public TilePaintSystemV2 TilePaintSystem;
|
|
public TileDrawing TilesRenderer;
|
|
public WallDrawing WallsRenderer;
|
|
private AmbientWindSystem _ambientWindSys = new AmbientWindSystem();
|
|
private List<Player> _playersThatDrawBehindNPCs = new List<Player>((int) byte.MaxValue);
|
|
private List<Player> _playersThatDrawAfterProjectiles = new List<Player>((int) byte.MaxValue);
|
|
private List<DrawData> _voidLensData = new List<DrawData>();
|
|
private List<DrawData> _voidLensDataSillouette = new List<DrawData>();
|
|
private List<DrawData> _voidLensDataSillouette2 = new List<DrawData>();
|
|
private Main.TextDisplayCache _textDisplayCache = new Main.TextDisplayCache();
|
|
private List<int> _occupantsListToDrawNPCHouses = new List<int>();
|
|
private List<int> _npcsWithBannersToDraw = new List<int>();
|
|
private bool _imeToggle;
|
|
private List<int> _npcTypesThatAlreadyDrewAHead = new List<int>();
|
|
private int[] _npcIndexWhoHoldsHeadIndex = new int[45];
|
|
private static List<string> _requiredObjecsForCraftingText = new List<string>();
|
|
private static bool _preventCraftingBecauseClickWasUsedToChangeFocusedRecipe;
|
|
private static int _currentRecipeBeingCrafted = -1;
|
|
private static bool hidePVPIcons = false;
|
|
public static bool HoveringOverAnNPC;
|
|
public static string hoverItemName = "";
|
|
public static Microsoft.Xna.Framework.Color inventoryBack = new Microsoft.Xna.Framework.Color(220, 220, 220, 220);
|
|
public static bool mouseText;
|
|
private static int mH;
|
|
private static int rare;
|
|
public static int hairStart;
|
|
private static int oldHairStyle;
|
|
private static Microsoft.Xna.Framework.Color oldHairColor;
|
|
public static int selClothes;
|
|
private static Microsoft.Xna.Framework.Color[] oldClothesColor = new Microsoft.Xna.Framework.Color[6];
|
|
private static int oldClothesStyle;
|
|
public static int interactedDresserTopLeftX;
|
|
public static int interactedDresserTopLeftY;
|
|
public static Player dresserInterfaceDummy;
|
|
private bool _needToSetupDrawInterfaceLayers = true;
|
|
private List<GameInterfaceLayer> _gameInterfaceLayers;
|
|
private static GameTime _drawInterfaceGameTime;
|
|
private static bool _settingsButtonIsPushedToSide;
|
|
private static bool _MouseOversCanClear;
|
|
private static Vector2 _itemIconCacheScreenPosition;
|
|
private static int _itemIconCacheSelectedItemID;
|
|
private static int _itemIconCacheTime;
|
|
private static bool _cannotDrawAccessoriesHorizontally = false;
|
|
public static Microsoft.Xna.Framework.Color selColor = Microsoft.Xna.Framework.Color.White;
|
|
public static int focusColor;
|
|
public static int colorDelay;
|
|
public static int setKey = -1;
|
|
public static int bgScroll;
|
|
public static bool autoPass;
|
|
public static int menuFocus = 0;
|
|
public static float hBar = -1f;
|
|
public static float sBar = -1f;
|
|
public static float lBar = 1f;
|
|
public static float aBar = 1f;
|
|
private int grabColorSlider;
|
|
public static bool blockMouse;
|
|
private static bool _blockFancyUIWhileLoading;
|
|
private bool[] menuWide = new bool[100];
|
|
public static float GamepadCursorAlpha = 0.0f;
|
|
private bool _needsMenuUIRecalculation;
|
|
public static float MenuXMovement = 0.0f;
|
|
private float _splashFrameCount;
|
|
private bool quickSplash;
|
|
private float hellBlackBoxBottom;
|
|
public static float MapScale = 1f;
|
|
private static int _minimapTopRightAnchorOffsetTowardsLeft = 52;
|
|
private static int _minimapTopRightAnchorOffsetTowardsBottom = 90;
|
|
public static bool cancelWormHole = false;
|
|
private static VertexColors _glowPaintColors = new VertexColors(Microsoft.Xna.Framework.Color.White);
|
|
protected List<Tuple<int, int, ushort>> DrawWiresSpecialTiles = new List<Tuple<int, int, ushort>>();
|
|
public static float lightning;
|
|
private static float lightningDecay = 1f;
|
|
private static float lightningSpeed = 0.0f;
|
|
private static int thunderDelay;
|
|
public static int thunderDistance;
|
|
private static string[] MonolithFilterNames = new string[5]
|
|
{
|
|
"MonolithVortex",
|
|
"MonolithNebula",
|
|
"MonolithStardust",
|
|
"MonolithSolar",
|
|
"MonolithMoonLord"
|
|
};
|
|
private static string[] MonolithSkyNames = new string[5]
|
|
{
|
|
"MonolithVortex",
|
|
"MonolithNebula",
|
|
"MonolithStardust",
|
|
"MonolithSolar",
|
|
"MonolithMoonLord"
|
|
};
|
|
private static float backgroundLayerTransitionSpeed = 0.05f;
|
|
public static float atmo;
|
|
private static float bgScale = 1f;
|
|
private static int bgWidthScaled = (int) (1024.0 * (double) Main.bgScale);
|
|
public static Microsoft.Xna.Framework.Color ColorOfTheSkies;
|
|
private static Microsoft.Xna.Framework.Color ColorOfSurfaceBackgroundsBase = Microsoft.Xna.Framework.Color.White;
|
|
private static Microsoft.Xna.Framework.Color ColorOfSurfaceBackgroundsModified = Microsoft.Xna.Framework.Color.White;
|
|
private float screenOff;
|
|
private float scAdj;
|
|
private float cTop;
|
|
private bool _isDrawingOrUpdating;
|
|
public static List<INeedRenderTargetContent> ContentThatNeedsRenderTargets = new List<INeedRenderTargetContent>();
|
|
private static string _oldNetplayStatusText;
|
|
private static TextSnippet[] _netplayStatusTextSnippets;
|
|
public static int ladyBugRainBoost = 0;
|
|
private static bool _canShowMeteorFall;
|
|
|
|
public static Vector2 ViewPosition => Main.screenPosition + Main.GameViewMatrix.Translation;
|
|
|
|
public static Vector2 ViewSize => new Vector2((float) Main.screenWidth, (float) Main.screenHeight) / Main.GameViewMatrix.Zoom;
|
|
|
|
public static Matrix CurrentWantedZoomMatrix => Main._currentWantedZoomMatrix;
|
|
|
|
public static void SetRecommendedZoomContext(Matrix matrix) => Main._currentWantedZoomMatrix = matrix;
|
|
|
|
public static Matrix UIScaleMatrix => Main._uiScaleMatrix;
|
|
|
|
public static float UIScaleWanted => Main._uiScaleWanted;
|
|
|
|
public static float UIScale
|
|
{
|
|
get => Main._uiScaleUsed;
|
|
set
|
|
{
|
|
Main._uiScaleWanted = value;
|
|
float uiScaleMax = Main.instance.UIScaleMax;
|
|
if ((double) value > (double) uiScaleMax)
|
|
value = uiScaleMax;
|
|
Main._uiScaleUsed = value;
|
|
Main._uiScaleMatrix = Matrix.CreateScale(value, value, 1f);
|
|
}
|
|
}
|
|
|
|
public float UIScaleMax => Math.Max(1f, Math.Min((float) PlayerInput.RealScreenWidth / 800f, (float) PlayerInput.RealScreenHeight / 600f));
|
|
|
|
public static bool RenderTargetsRequired => (double) Main.GameZoomTarget > 1.0 || (double) Main.GameViewMatrix.TransformationMatrix.M11 > 1.0;
|
|
|
|
public static bool IsItRaining => (double) Main.cloudAlpha > 0.0;
|
|
|
|
public static bool ThickMouse => Main.MouseBorderColor != Microsoft.Xna.Framework.Color.Transparent;
|
|
|
|
public static bool GamepadDisableCursorItemIcon => PlayerInput.UsingGamepad && Main.GamepadDisableCursorItemIconInner;
|
|
|
|
public static void FindAnnouncementBoxStatus()
|
|
{
|
|
Main.AnnouncementBoxDisabled = Program.LaunchParameters.ContainsKey("-disableannouncementbox");
|
|
string s;
|
|
int result;
|
|
if (!Program.LaunchParameters.TryGetValue("-announcementboxrange", out s) || !int.TryParse(s, out result))
|
|
return;
|
|
Main.AnnouncementBoxRange = result;
|
|
}
|
|
|
|
public static GameModeData GameModeInfo => Main._currentGameModeInfo;
|
|
|
|
public static int GameMode
|
|
{
|
|
get => Main.ActiveWorldFileData == null ? 0 : Main.ActiveWorldFileData.GameMode;
|
|
set
|
|
{
|
|
GameModeData gameModeData;
|
|
if (Main.ActiveWorldFileData == null || !Main.RegisterdGameModes.TryGetValue(value, out gameModeData))
|
|
return;
|
|
Main.ActiveWorldFileData.GameMode = value;
|
|
Main._currentGameModeInfo = gameModeData;
|
|
}
|
|
}
|
|
|
|
public static bool masterMode
|
|
{
|
|
get
|
|
{
|
|
if (Main.ActiveWorldFileData == null)
|
|
return false;
|
|
return Main._overrideForMasterMode.HasValue ? Main._overrideForMasterMode.Value : Main._currentGameModeInfo.IsMasterMode;
|
|
}
|
|
}
|
|
|
|
public static bool expertMode
|
|
{
|
|
get
|
|
{
|
|
if (Main.ActiveWorldFileData == null)
|
|
return false;
|
|
return Main._overrideForExpertMode.HasValue ? Main._overrideForExpertMode.Value : Main._currentGameModeInfo.IsExpertMode;
|
|
}
|
|
}
|
|
|
|
public static AchievementManager Achievements => Main.instance._achievements;
|
|
|
|
public static AchievementAdvisor AchievementAdvisor => Main.instance._achievementAdvisor;
|
|
|
|
public static ulong UnpausedUpdateSeed { get; private set; }
|
|
|
|
public static Effect screenShader => Main.ScreenShaderRef.Value;
|
|
|
|
public static Effect pixelShader => Main.PixelShaderRef.Value;
|
|
|
|
public static Effect vertexPixelShader => Main.VertexPixelShaderRef.Value;
|
|
|
|
public static Effect tileShader => Main.TileShaderRef.Value;
|
|
|
|
public static void SetCameraLerp(float lerp, int time)
|
|
{
|
|
Main.cameraLerp = lerp;
|
|
Main.cameraLerpTimer = 0;
|
|
Main.cameraLerpTimeToggle = time;
|
|
Main.cameraGamePadLerp = false;
|
|
}
|
|
|
|
public static void SetCameraGamepadLerp(float lerp)
|
|
{
|
|
double cameraLerp = (double) Main.cameraLerp;
|
|
}
|
|
|
|
[Obsolete("Transform is deprecated. Please use GameViewMatrix & GUIViewMatrix")]
|
|
public static Matrix Transform => Main.GameViewMatrix.TransformationMatrix;
|
|
|
|
public static Vector2 MouseScreen => new Vector2((float) Main.mouseX, (float) Main.mouseY);
|
|
|
|
public static Vector2 MouseWorld
|
|
{
|
|
get
|
|
{
|
|
Vector2 vector2 = Main.MouseScreen + Main.screenPosition;
|
|
if ((double) Main.player[Main.myPlayer].gravDir == -1.0)
|
|
vector2.Y = Main.screenPosition.Y + (float) Main.screenHeight - (float) Main.mouseY;
|
|
return vector2;
|
|
}
|
|
}
|
|
|
|
public static Vector2 ReverseGravitySupport(Vector2 pos, float height = 0.0f)
|
|
{
|
|
if ((double) Main.player[Main.myPlayer].gravDir != -1.0)
|
|
return pos;
|
|
pos.Y = (float) Main.screenHeight - pos.Y - height;
|
|
return pos;
|
|
}
|
|
|
|
public static Microsoft.Xna.Framework.Point ReverseGravitySupport(Microsoft.Xna.Framework.Point pos, int height = 0)
|
|
{
|
|
if ((double) Main.player[Main.myPlayer].gravDir != -1.0)
|
|
return pos;
|
|
pos.Y = Main.screenHeight - pos.Y - height;
|
|
return pos;
|
|
}
|
|
|
|
public static Microsoft.Xna.Framework.Rectangle ReverseGravitySupport(Microsoft.Xna.Framework.Rectangle box)
|
|
{
|
|
if ((double) Main.player[Main.myPlayer].gravDir != -1.0)
|
|
return box;
|
|
box.Y = Main.screenHeight - box.Y - box.Height;
|
|
return box;
|
|
}
|
|
|
|
public void SetMouseNPC(int index, int type)
|
|
{
|
|
this.mouseNPCIndex = index;
|
|
this.mouseNPCType = type;
|
|
}
|
|
|
|
public void SetMouseNPC_ToHousingQuery() => this.SetMouseNPC(-1, 0);
|
|
|
|
public static event Action OnEnginePreload;
|
|
|
|
public static event Action<Vector2> OnResolutionChanged;
|
|
|
|
public static event Action OnEngineLoad;
|
|
|
|
public static uint GameUpdateCount => Main._gameUpdateCount;
|
|
|
|
public static event Action OnTickForThirdPartySoftwareOnly;
|
|
|
|
public static event Action OnTickForInternalCodeOnly;
|
|
|
|
public static event Action<GameTime> OnPreDraw;
|
|
|
|
public static event Action<GameTime> OnPostDraw;
|
|
|
|
public static event Action<Vector2, float> OnPostFullscreenMapDraw;
|
|
|
|
public static event Action OnRenderTargetsReleased;
|
|
|
|
public static event ResolutionChangeEvent OnRenderTargetsInitialized;
|
|
|
|
[DllImport("User32")]
|
|
private static extern int RemoveMenu(IntPtr hMenu, int nPosition, int wFlags);
|
|
|
|
[DllImport("User32")]
|
|
private static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);
|
|
|
|
[DllImport("User32")]
|
|
private static extern int GetMenuItemCount(IntPtr hWnd);
|
|
|
|
[DllImport("kernel32.dll")]
|
|
public static extern IntPtr LoadLibrary(string dllToLoad);
|
|
|
|
public static SamplerState DefaultSamplerState => !Main.drawToScreen ? SamplerState.PointClamp : SamplerState.LinearClamp;
|
|
|
|
public static int UnderworldLayer => Main.maxTilesY - 200;
|
|
|
|
public static MoonPhase GetMoonPhase() => (MoonPhase) Main.moonPhase;
|
|
|
|
public static float WindForVisuals => Main.windSpeedCurrent;
|
|
|
|
public static Vector2 DrawPlayerItemPos(float gravdir, int itemtype)
|
|
{
|
|
float num = 10f;
|
|
Main.instance.LoadItem(itemtype);
|
|
Vector2 vector2 = new Vector2((float) (TextureAssets.Item[itemtype].Width() / 2), (float) (TextureAssets.Item[itemtype].Height() / 2));
|
|
if (itemtype == 95)
|
|
{
|
|
num = 6f;
|
|
vector2.Y += 2f * gravdir;
|
|
}
|
|
else if (itemtype == 1295)
|
|
num = 4f;
|
|
else if (itemtype == 3611)
|
|
num = 2f;
|
|
else if (itemtype == 3350)
|
|
num = 2f;
|
|
else if (itemtype == 2624)
|
|
num = 4f;
|
|
else if (itemtype == 3018)
|
|
num = 2f;
|
|
else if (itemtype == 3007)
|
|
{
|
|
num = 4f;
|
|
vector2.Y -= 1f * gravdir;
|
|
}
|
|
else if (itemtype == 3107)
|
|
{
|
|
num = 4f;
|
|
vector2.Y += 2f * gravdir;
|
|
}
|
|
else if (itemtype == 3008)
|
|
{
|
|
num = -7f;
|
|
vector2.Y += 2f * gravdir;
|
|
}
|
|
else if (itemtype == 1255)
|
|
{
|
|
num = 6f;
|
|
vector2.Y += 0.0f * gravdir;
|
|
}
|
|
else if (itemtype == 2269)
|
|
{
|
|
num = 2f;
|
|
vector2.Y += 2f * gravdir;
|
|
}
|
|
else if (itemtype == 1265)
|
|
{
|
|
num = -8f;
|
|
vector2.Y += 4f * gravdir;
|
|
}
|
|
else if (itemtype == 2272)
|
|
{
|
|
num = 0.0f;
|
|
vector2.Y += 4f * gravdir;
|
|
}
|
|
else if (itemtype == 3029)
|
|
num = 4f;
|
|
else if (itemtype == 4381)
|
|
num = 4f;
|
|
else if (itemtype == 2796)
|
|
{
|
|
num = -28f;
|
|
vector2.Y += 2f * gravdir;
|
|
}
|
|
else if (itemtype == 2797)
|
|
num = 0.0f;
|
|
else if (itemtype == 2610)
|
|
num = 0.0f;
|
|
else if (itemtype == 2623)
|
|
{
|
|
num = -30f;
|
|
vector2.Y -= 4f * gravdir;
|
|
}
|
|
else if (itemtype == 3546)
|
|
{
|
|
num = -14f;
|
|
vector2.Y -= 6f * gravdir;
|
|
}
|
|
else if (itemtype == 1835)
|
|
{
|
|
num = -2f;
|
|
vector2.Y += 2f * gravdir;
|
|
}
|
|
else if (itemtype == 2624)
|
|
num = -4f;
|
|
else if (itemtype == 3859)
|
|
num = -2f;
|
|
else if (itemtype == 2888)
|
|
num = 6f;
|
|
else if (itemtype == 2223)
|
|
{
|
|
num = 2f;
|
|
vector2.Y -= 2f * gravdir;
|
|
}
|
|
else if (itemtype == 1782)
|
|
{
|
|
num = 0.0f;
|
|
vector2.Y += 4f * gravdir;
|
|
}
|
|
else if (itemtype == 1929)
|
|
{
|
|
num = 0.0f;
|
|
vector2.Y += 2f * gravdir;
|
|
}
|
|
else if (itemtype == 2270)
|
|
num = -4f;
|
|
else if (itemtype == 1784)
|
|
{
|
|
num = 0.0f;
|
|
vector2.Y += 4f * gravdir;
|
|
}
|
|
else if (itemtype == 1000)
|
|
{
|
|
num = 6f;
|
|
vector2.Y += 0.0f * gravdir;
|
|
}
|
|
else if (itemtype == 1178)
|
|
{
|
|
num = 4f;
|
|
vector2.Y += 0.0f * gravdir;
|
|
}
|
|
else if (itemtype == 1319)
|
|
{
|
|
num = 0.0f;
|
|
vector2.Y += 0.0f * gravdir;
|
|
}
|
|
else if (itemtype == 1297)
|
|
{
|
|
num = -8f;
|
|
vector2.Y += 0.0f * gravdir;
|
|
}
|
|
else if (itemtype == 1121)
|
|
{
|
|
num = 6f;
|
|
vector2.Y -= 2f * gravdir;
|
|
}
|
|
else if (itemtype == 1314)
|
|
num = 2f;
|
|
else if (itemtype == 1258)
|
|
{
|
|
num = 2f;
|
|
vector2.Y -= 2f * gravdir;
|
|
}
|
|
else if (itemtype == 1155)
|
|
{
|
|
num = -10f;
|
|
vector2.Y -= 2f * gravdir;
|
|
}
|
|
else if (itemtype == 1156)
|
|
num = -2f;
|
|
else if (itemtype == 4703)
|
|
{
|
|
num = -3f;
|
|
vector2.Y -= 2f * gravdir;
|
|
}
|
|
else if (itemtype == 96)
|
|
{
|
|
num = -8f;
|
|
vector2.Y += 2f * gravdir;
|
|
}
|
|
else if (itemtype == 1870)
|
|
{
|
|
num = -8f;
|
|
vector2.Y += 2f * gravdir;
|
|
}
|
|
else if (itemtype == 1260)
|
|
{
|
|
num = -8f;
|
|
vector2.Y += 2f * gravdir;
|
|
}
|
|
else if (itemtype == 1254)
|
|
{
|
|
num = -6f;
|
|
vector2.Y += 2f * gravdir;
|
|
}
|
|
else if (itemtype == 98)
|
|
{
|
|
num = -5f;
|
|
vector2.Y -= 2f * gravdir;
|
|
}
|
|
else if (itemtype == 534)
|
|
{
|
|
num = -2f;
|
|
vector2.Y += 1f * gravdir;
|
|
}
|
|
else if (itemtype == 679)
|
|
{
|
|
num = 0.0f;
|
|
vector2.Y += 2f * gravdir;
|
|
}
|
|
else if (itemtype == 964)
|
|
{
|
|
num = 0.0f;
|
|
vector2.Y += 0.0f * gravdir;
|
|
}
|
|
else if (itemtype == 533)
|
|
{
|
|
num = -7f;
|
|
vector2.Y -= 2f * gravdir;
|
|
}
|
|
else if (itemtype == 1553)
|
|
{
|
|
num = -10f;
|
|
vector2.Y -= 2f * gravdir;
|
|
}
|
|
else if (itemtype == 506)
|
|
{
|
|
num = 0.0f;
|
|
vector2.Y -= 2f * gravdir;
|
|
}
|
|
else if (itemtype == 1910)
|
|
{
|
|
num = 0.0f;
|
|
vector2.Y -= 2f * gravdir;
|
|
}
|
|
else if (itemtype == 494 || itemtype == 508)
|
|
{
|
|
num = -2f;
|
|
}
|
|
else
|
|
{
|
|
switch (itemtype)
|
|
{
|
|
case 434:
|
|
num = 0.0f;
|
|
vector2.Y -= 2f * gravdir;
|
|
break;
|
|
case 514:
|
|
num = 0.0f;
|
|
vector2.Y += 3f * gravdir;
|
|
break;
|
|
default:
|
|
if (itemtype == 435 || itemtype == 436 || itemtype == 481 || itemtype == 578 || itemtype == 1187 || itemtype == 1194 || itemtype == 1201 || itemtype == 1229)
|
|
{
|
|
num = -2f;
|
|
vector2.Y -= 2f * gravdir;
|
|
break;
|
|
}
|
|
switch (itemtype)
|
|
{
|
|
case 126:
|
|
num = 4f;
|
|
vector2.Y += 4f * gravdir;
|
|
break;
|
|
case (int) sbyte.MaxValue:
|
|
num = 4f;
|
|
vector2.Y += 2f * gravdir;
|
|
break;
|
|
case 157:
|
|
num = 6f;
|
|
vector2.Y += 2f * gravdir;
|
|
break;
|
|
case 160:
|
|
num = -8f;
|
|
break;
|
|
case 197:
|
|
num = -5f;
|
|
vector2.Y += 4f * gravdir;
|
|
break;
|
|
case 800:
|
|
num = 4f;
|
|
vector2.Y += 2f * gravdir;
|
|
break;
|
|
case 4060:
|
|
num = -2f;
|
|
vector2.Y += 4f * gravdir;
|
|
break;
|
|
default:
|
|
if (itemtype == 164 || itemtype == 219)
|
|
{
|
|
num = 0.0f;
|
|
vector2.Y += 2f * gravdir;
|
|
break;
|
|
}
|
|
if (itemtype == 165 || itemtype == 272)
|
|
{
|
|
num = 4f;
|
|
vector2.Y += 4f * gravdir;
|
|
break;
|
|
}
|
|
switch (itemtype)
|
|
{
|
|
case 266:
|
|
num = 0.0f;
|
|
vector2.Y += 2f * gravdir;
|
|
break;
|
|
case 281:
|
|
num = 6f;
|
|
vector2.Y -= 6f * gravdir;
|
|
break;
|
|
case 682:
|
|
num = 4f;
|
|
break;
|
|
case 758:
|
|
num -= 20f;
|
|
vector2.Y += 0.0f * gravdir;
|
|
break;
|
|
case 759:
|
|
num -= 18f;
|
|
vector2.Y += 2f * gravdir;
|
|
break;
|
|
case 760:
|
|
num -= 12f;
|
|
vector2.Y += 2f * gravdir;
|
|
break;
|
|
case 779:
|
|
num = 0.0f;
|
|
vector2.Y += 2f * gravdir;
|
|
break;
|
|
case 905:
|
|
num = -5f;
|
|
vector2.Y += 0.0f * gravdir;
|
|
break;
|
|
case 930:
|
|
num = 4f;
|
|
vector2.Y += 2f * gravdir;
|
|
break;
|
|
case 986:
|
|
num = 6f;
|
|
vector2.Y -= 10f * gravdir;
|
|
break;
|
|
case 1946:
|
|
num -= 12f;
|
|
vector2.Y += 2f * gravdir;
|
|
break;
|
|
case 3788:
|
|
num = 2f;
|
|
vector2.Y += 2f * gravdir;
|
|
break;
|
|
case 3870:
|
|
num = 4f;
|
|
vector2.Y += 4f * gravdir;
|
|
break;
|
|
case 4953:
|
|
num = -4f;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
vector2.X = num;
|
|
return vector2;
|
|
}
|
|
|
|
public static void SetupTileMerge()
|
|
{
|
|
int length = 623;
|
|
Main.tileMerge = new bool[length][];
|
|
for (int index = 0; index < Main.tileMerge.Length; ++index)
|
|
Main.tileMerge[index] = new bool[length];
|
|
}
|
|
|
|
public static void RegisterItemAnimation(int index, DrawAnimation animation)
|
|
{
|
|
if (!Main.itemAnimationsRegistered.Contains(index))
|
|
Main.itemAnimationsRegistered.Add(index);
|
|
Main.itemAnimations[index] = animation;
|
|
}
|
|
|
|
public static void InitializeItemAnimations()
|
|
{
|
|
for (int index = 0; index < Main.itemAnimations.Length; ++index)
|
|
Main.itemAnimations[index] = (DrawAnimation) null;
|
|
Main.itemAnimationsRegistered.Clear();
|
|
Main.RegisterItemAnimation(3581, (DrawAnimation) new DrawAnimationVertical(4, 4));
|
|
Main.RegisterItemAnimation(3580, (DrawAnimation) new DrawAnimationVertical(6, 4));
|
|
Main.RegisterItemAnimation(75, (DrawAnimation) new DrawAnimationVertical(5, 8)
|
|
{
|
|
PingPong = true
|
|
});
|
|
Main.RegisterItemAnimation(575, (DrawAnimation) new DrawAnimationVertical(6, 4));
|
|
Main.RegisterItemAnimation(547, (DrawAnimation) new DrawAnimationVertical(6, 4));
|
|
Main.RegisterItemAnimation(520, (DrawAnimation) new DrawAnimationVertical(6, 4));
|
|
Main.RegisterItemAnimation(548, (DrawAnimation) new DrawAnimationVertical(6, 4));
|
|
Main.RegisterItemAnimation(521, (DrawAnimation) new DrawAnimationVertical(6, 4));
|
|
Main.RegisterItemAnimation(549, (DrawAnimation) new DrawAnimationVertical(6, 4));
|
|
Main.RegisterItemAnimation(3453, (DrawAnimation) new DrawAnimationVertical(6, 4));
|
|
Main.RegisterItemAnimation(3454, (DrawAnimation) new DrawAnimationVertical(6, 4));
|
|
Main.RegisterItemAnimation(3455, (DrawAnimation) new DrawAnimationVertical(6, 4));
|
|
Main.RegisterItemAnimation(4068, (DrawAnimation) new DrawAnimationVertical(6, 4)
|
|
{
|
|
NotActuallyAnimating = true
|
|
});
|
|
Main.RegisterItemAnimation(4069, (DrawAnimation) new DrawAnimationVertical(6, 4)
|
|
{
|
|
NotActuallyAnimating = true
|
|
});
|
|
Main.RegisterItemAnimation(4070, (DrawAnimation) new DrawAnimationVertical(6, 4)
|
|
{
|
|
NotActuallyAnimating = true
|
|
});
|
|
for (int index = 0; index < ItemID.Sets.IsFood.Length; ++index)
|
|
{
|
|
if (ItemID.Sets.IsFood[index])
|
|
Main.RegisterItemAnimation(index, (DrawAnimation) new DrawAnimationVertical(int.MaxValue, 3));
|
|
}
|
|
}
|
|
|
|
public static Player LocalPlayer => Main.player[Main.myPlayer];
|
|
|
|
public static CreativeUnlocksTracker LocalPlayerCreativeTracker => Main.player[Main.myPlayer].creativeTracker;
|
|
|
|
public static int npcShop { get; private set; }
|
|
|
|
public static void SetGraphicsProfile(GraphicsProfile profile)
|
|
{
|
|
if (Main._currentGraphicsProfile == profile)
|
|
return;
|
|
Main._selectedGraphicsProfile = profile;
|
|
Main.SetGraphicsProfileInternal();
|
|
}
|
|
|
|
private static void SetGraphicsProfileInternal()
|
|
{
|
|
Main._currentGraphicsProfile = Main._selectedGraphicsProfile;
|
|
Main.graphics.GraphicsProfile = Main._selectedGraphicsProfile;
|
|
switch (Main._selectedGraphicsProfile)
|
|
{
|
|
case GraphicsProfile.Reach:
|
|
Main.maxScreenW = 1920;
|
|
Main.maxScreenH = 1200;
|
|
Main._renderTargetMaxSize = 2048;
|
|
break;
|
|
case GraphicsProfile.HiDef:
|
|
Main.maxScreenW = 4096;
|
|
Main.maxScreenH = 4096;
|
|
Main._renderTargetMaxSize = 4096;
|
|
Main.TrySupporting8K();
|
|
break;
|
|
}
|
|
try
|
|
{
|
|
Main.graphics.ApplyChanges();
|
|
}
|
|
catch (NoSuitableGraphicsDeviceException ex)
|
|
{
|
|
if (Main._currentGraphicsProfile == GraphicsProfile.HiDef)
|
|
{
|
|
Main._selectedGraphicsProfile = GraphicsProfile.Reach;
|
|
Main.SetGraphicsProfileInternal();
|
|
}
|
|
}
|
|
Main.instance.EnsureRenderTargetContent();
|
|
}
|
|
|
|
private static void TrySupporting8K()
|
|
{
|
|
if (!Platform.IsWindows)
|
|
return;
|
|
Main.instance.ReleaseTargets();
|
|
System.Type type = Assembly.GetAssembly(typeof (GraphicsProfile)).GetType("Microsoft.Xna.Framework.Graphics.ProfileCapabilities", true);
|
|
if (!(type != (System.Type) null))
|
|
return;
|
|
FieldInfo field1 = type.GetField("MaxTextureSize", BindingFlags.Instance | BindingFlags.NonPublic);
|
|
FieldInfo field2 = type.GetField("HiDef", BindingFlags.Static | BindingFlags.NonPublic);
|
|
if (!(field1 != (FieldInfo) null) || !(field2 != (FieldInfo) null))
|
|
return;
|
|
field1.SetValue(field2.GetValue((object) null), (object) 8192);
|
|
}
|
|
|
|
public static void AnglerQuestSwap()
|
|
{
|
|
if (Main.netMode == 1)
|
|
return;
|
|
Main.anglerWhoFinishedToday.Clear();
|
|
Main.anglerQuestFinished = false;
|
|
bool flag1 = NPC.downedBoss1 || NPC.downedBoss2 || NPC.downedBoss3 || Main.hardMode || NPC.downedSlimeKing || NPC.downedQueenBee;
|
|
bool flag2 = true;
|
|
while (flag2)
|
|
{
|
|
flag2 = false;
|
|
Main.anglerQuest = Main.rand.Next(Main.anglerQuestItemNetIDs.Length);
|
|
int anglerQuestItemNetId = Main.anglerQuestItemNetIDs[Main.anglerQuest];
|
|
if (anglerQuestItemNetId == 2454 && (!Main.hardMode || WorldGen.crimson))
|
|
flag2 = true;
|
|
if (anglerQuestItemNetId == 2457 && WorldGen.crimson)
|
|
flag2 = true;
|
|
if (anglerQuestItemNetId == 2462 && !Main.hardMode)
|
|
flag2 = true;
|
|
if (anglerQuestItemNetId == 2463 && (!Main.hardMode || !WorldGen.crimson))
|
|
flag2 = true;
|
|
if (anglerQuestItemNetId == 2465 && !Main.hardMode)
|
|
flag2 = true;
|
|
if (anglerQuestItemNetId == 2468 && !Main.hardMode)
|
|
flag2 = true;
|
|
if (anglerQuestItemNetId == 2471 && !Main.hardMode)
|
|
flag2 = true;
|
|
if (anglerQuestItemNetId == 2473 && !Main.hardMode)
|
|
flag2 = true;
|
|
if (anglerQuestItemNetId == 2477 && !WorldGen.crimson)
|
|
flag2 = true;
|
|
if (anglerQuestItemNetId == 2480 && !Main.hardMode)
|
|
flag2 = true;
|
|
if (anglerQuestItemNetId == 2483 && !Main.hardMode)
|
|
flag2 = true;
|
|
if (anglerQuestItemNetId == 2484 && !Main.hardMode)
|
|
flag2 = true;
|
|
if (anglerQuestItemNetId == 2485 && WorldGen.crimson)
|
|
flag2 = true;
|
|
if ((anglerQuestItemNetId == 2476 || anglerQuestItemNetId == 2453 || anglerQuestItemNetId == 2473) && !flag1)
|
|
flag2 = true;
|
|
}
|
|
NetMessage.SendAnglerQuest(-1);
|
|
}
|
|
|
|
public static string playerPathName => Main.ActivePlayerFileData.Path;
|
|
|
|
public static string worldPathName => Main.ActiveWorldFileData.Path;
|
|
|
|
public static bool HasSmartInteractTarget => Main.SmartInteractNPC != -1 || Main.SmartInteractX != -1 && Main.SmartInteractY != -1 || Main.SmartInteractProj != -1;
|
|
|
|
public void UpdateParticleSystems()
|
|
{
|
|
Main.ParticleSystem_World_OverPlayers.Update();
|
|
Main.ParticleSystem_World_BehindPlayers.Update();
|
|
}
|
|
|
|
public static void TrySetPreparationState(Main.WorldPreparationState state)
|
|
{
|
|
if (state != Main.WorldPreparationState.ProcessingData)
|
|
return;
|
|
Main._worldPreparationState = state;
|
|
}
|
|
|
|
public static void UpdateWorldPreparationState()
|
|
{
|
|
if (Main.netMode != 1)
|
|
{
|
|
Main._worldPreparationState = Main.WorldPreparationState.Ready;
|
|
}
|
|
else
|
|
{
|
|
if (Main.netMode == 1 && Main.gameMenu && Main._worldPreparationState == Main.WorldPreparationState.Ready)
|
|
Main._worldPreparationState = Main.WorldPreparationState.AwaitingData;
|
|
if (Main.netMode != 1 || Main._worldPreparationState != Main.WorldPreparationState.ProcessingData)
|
|
return;
|
|
Main._worldPreparationState = Main.WorldPreparationState.Ready;
|
|
Main.gameMenu = false;
|
|
Main.FixUIScale();
|
|
ChatHelper.ShowCachedMessages();
|
|
ChatHelper.ClearDelayedMessagesCache();
|
|
}
|
|
}
|
|
|
|
public static bool InSmartCursorHighlightArea(int x, int y, out bool actuallySelected)
|
|
{
|
|
actuallySelected = Main.SmartInteractTileCoordsSelected.Contains(new Microsoft.Xna.Framework.Point(x, y));
|
|
return !Main.hideUI && Collision.InTileBounds(x, y, Main.TileInteractionLX, Main.TileInteractionLY, Main.TileInteractionHX, Main.TileInteractionHY) && Main.SmartInteractTileCoords.Contains(new Microsoft.Xna.Framework.Point(x, y));
|
|
}
|
|
|
|
public static void LoadWorlds()
|
|
{
|
|
Main.WorldList.Clear();
|
|
if (!Utils.TryCreatingDirectory(Main.WorldPath))
|
|
return;
|
|
string[] files = Directory.GetFiles(Main.WorldPath, "*.wld");
|
|
int num = Math.Min(files.Length, Main.maxLoadWorld);
|
|
for (int index = 0; index < num; ++index)
|
|
{
|
|
WorldFileData allMetadata = WorldFile.GetAllMetadata(files[index], false);
|
|
if (allMetadata != null)
|
|
Main.WorldList.Add(allMetadata);
|
|
else
|
|
Main.WorldList.Add(WorldFileData.FromInvalidWorld(files[index], false));
|
|
}
|
|
if (SocialAPI.Cloud != null)
|
|
{
|
|
foreach (string str in SocialAPI.Cloud.GetFiles().Where<string>((Func<string, bool>) (path => path.StartsWith(Main.CloudWorldPath, StringComparison.CurrentCultureIgnoreCase) && path.EndsWith(".wld", StringComparison.CurrentCultureIgnoreCase))))
|
|
{
|
|
WorldFileData allMetadata = WorldFile.GetAllMetadata(str, true);
|
|
if (allMetadata != null)
|
|
Main.WorldList.Add(allMetadata);
|
|
else
|
|
Main.WorldList.Add(WorldFileData.FromInvalidWorld(str, true));
|
|
}
|
|
}
|
|
Main.WorldList.Sort(new Comparison<WorldFileData>(Main.WorldListSortMethod));
|
|
}
|
|
|
|
private static int WorldListSortMethod(WorldFileData data1, WorldFileData data2) => data1.Name.CompareTo(data2.Name);
|
|
|
|
public static void LoadPlayers()
|
|
{
|
|
Main.PlayerList.Clear();
|
|
if (!Utils.TryCreatingDirectory(Main.PlayerPath))
|
|
return;
|
|
string[] files = Directory.GetFiles(Main.PlayerPath, "*.plr");
|
|
int num = Math.Min(Main.maxLoadPlayer, files.Length);
|
|
for (int index = 0; index < num; ++index)
|
|
{
|
|
PlayerFileData fileData = Player.GetFileData(files[index], false);
|
|
if (fileData != null)
|
|
Main.PlayerList.Add(fileData);
|
|
}
|
|
if (SocialAPI.Cloud != null)
|
|
{
|
|
foreach (string file in SocialAPI.Cloud.GetFiles().Where<string>((Func<string, bool>) (path => path.StartsWith(Main.CloudPlayerPath, StringComparison.CurrentCultureIgnoreCase) && path.EndsWith(".plr", StringComparison.CurrentCultureIgnoreCase))))
|
|
{
|
|
PlayerFileData fileData = Player.GetFileData(file, true);
|
|
if (fileData != null)
|
|
Main.PlayerList.Add(fileData);
|
|
}
|
|
}
|
|
Main.PlayerList.Sort(new Comparison<PlayerFileData>(Main.PlayerListSortMethod));
|
|
}
|
|
|
|
private static int PlayerListSortMethod(PlayerFileData data1, PlayerFileData data2) => data1.Name.CompareTo(data2.Name);
|
|
|
|
protected void OpenRecent()
|
|
{
|
|
try
|
|
{
|
|
if (!File.Exists(Main.SavePath + Path.DirectorySeparatorChar.ToString() + "servers.dat"))
|
|
return;
|
|
using (FileStream fileStream = new FileStream(Main.SavePath + Path.DirectorySeparatorChar.ToString() + "servers.dat", FileMode.Open))
|
|
{
|
|
using (BinaryReader binaryReader = new BinaryReader((Stream) fileStream))
|
|
{
|
|
binaryReader.ReadInt32();
|
|
for (int index = 0; index < 10; ++index)
|
|
{
|
|
Main.recentWorld[index] = binaryReader.ReadString();
|
|
Main.recentIP[index] = binaryReader.ReadString();
|
|
Main.recentPort[index] = binaryReader.ReadInt32();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
}
|
|
|
|
public static void SaveRecent()
|
|
{
|
|
Utils.TryCreatingDirectory(Main.SavePath);
|
|
try
|
|
{
|
|
File.SetAttributes(Main.SavePath + Path.DirectorySeparatorChar.ToString() + "servers.dat", FileAttributes.Normal);
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
try
|
|
{
|
|
using (FileStream fileStream = new FileStream(Main.SavePath + Path.DirectorySeparatorChar.ToString() + "servers.dat", FileMode.Create))
|
|
{
|
|
using (BinaryWriter binaryWriter = new BinaryWriter((Stream) fileStream))
|
|
{
|
|
binaryWriter.Write(230);
|
|
for (int index = 0; index < 10; ++index)
|
|
{
|
|
binaryWriter.Write(Main.recentWorld[index]);
|
|
binaryWriter.Write(Main.recentIP[index]);
|
|
binaryWriter.Write(Main.recentPort[index]);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
}
|
|
|
|
public static bool SaveSettings()
|
|
{
|
|
Main.Configuration.Clear();
|
|
Main.Configuration.Put("ResetDefaultUIScale", (object) false);
|
|
Main.Configuration.Put("SmartCursorToggle", (object) Main.cSmartCursorModeIsToggleAndNotHold);
|
|
Main.Configuration.Put("MapEnabled", (object) Main.mapEnabled);
|
|
Main.Configuration.Put("InvasionBarMode", (object) Main.invasionProgressMode);
|
|
Main.Configuration.Put("AutoSave", (object) Main.autoSave);
|
|
Main.Configuration.Put("AutoPause", (object) Main.autoPause);
|
|
Main.Configuration.Put("Language", (object) Language.ActiveCulture.Name);
|
|
Main.Configuration.Put("PlacementPreview", (object) Main.placementPreview);
|
|
Main.Configuration.Put("GoreVisualsAllowed", (object) ChildSafety.Disabled);
|
|
Main.Configuration.Put("WorldRollbacksToKeep", (object) Main.WorldRollingBackupsCountToKeep);
|
|
Main.Configuration.Put("TeamNameplateDistance", (object) Main.teamNamePlateDistance);
|
|
Main.Configuration.Put("MultiplayerNPCSmoothingRange", (object) Main.multiplayerNPCSmoothingRange);
|
|
Main.Configuration.Put("VolumeSound", (object) Main.soundVolume);
|
|
Main.Configuration.Put("VolumeAmbient", (object) Main.ambientVolume);
|
|
Main.Configuration.Put("VolumeMusic", (object) Main.musicVolume);
|
|
Main.Configuration.Put("UnlockMusicSwap", (object) Main.TOWMusicUnlocked);
|
|
Main.Configuration.Put("UseExperimentalFeatures", (object) Main.UseExperimentalFeatures);
|
|
Main.Configuration.Put("Fullscreen", (object) Main.graphics.IsFullScreen);
|
|
Main.Configuration.Put("WindowMaximized", (object) Main.screenMaximized);
|
|
Main.Configuration.Put("WindowBorderless", (object) Main.screenBorderless);
|
|
Main.Configuration.Put("DisplayWidth", (object) Main.graphics.PreferredBackBufferWidth);
|
|
Main.Configuration.Put("DisplayHeight", (object) Main.graphics.PreferredBackBufferHeight);
|
|
Main.Configuration.Put("GraphicsQuality", (object) Main.qaStyle);
|
|
Main.Configuration.Put("BackgroundEnabled", (object) Main.BackgroundEnabled);
|
|
Main.Configuration.Put("FrameSkipMode", (object) Main.FrameSkipMode);
|
|
Main.Configuration.Put("LightingMode", (object) Lighting.Mode);
|
|
Main.Configuration.Put("BackgroundParallax", (object) Main.bgScroll);
|
|
Main.Configuration.Put("ShowItemText", (object) Main.showItemText);
|
|
Main.Configuration.Put("LastLaunchedVersion", (object) 230);
|
|
Main.Configuration.Put("ClientUUID", (object) Main.clientUUID);
|
|
Main.Configuration.Put("UseSmartCursorForCommonBlocks", (object) Player.SmartCursorSettings.SmartBlocksEnabled);
|
|
Main.Configuration.Put("UseSmartAxeAfterSmartPickaxe", (object) Player.SmartCursorSettings.SmartAxeAfterPickaxe);
|
|
Main.Configuration.Put("DisableLeftShiftTrashCan", (object) ItemSlot.Options.DisableLeftShiftTrashCan);
|
|
Main.Configuration.Put("HighlightNewItems", (object) ItemSlot.Options.HighlightNewItems);
|
|
Main.Configuration.Put("HidePasswords", (object) Main.HidePassword);
|
|
Main.Configuration.Put("ReverseUpDownForArmorSetBonuses", (object) Main.ReversedUpDownArmorSetBonuses);
|
|
Main.Configuration.Put("MouseShowBuildingGrid", (object) Main.MouseShowBuildingGrid);
|
|
Main.Configuration.Put("AllowUnfocusedInputOnGamepad", (object) Main.AllowUnfocusedInputOnGamepad);
|
|
Main.Configuration.Put("LockOnPriority", (object) LockOnHelper.UseMode);
|
|
Main.Configuration.Put("InvisibleCursorForGamepad", (object) Main.InvisibleCursorForGamepad);
|
|
Main.Configuration.Put("GamepadDisableInstructionsDisplay", (object) Main.GamepadDisableInstructionsDisplay);
|
|
Main.Configuration.Put("SettingsUnlock_WorldEvil", (object) Main.SettingsUnlock_WorldEvil);
|
|
Main.Configuration.Put("SettingsEnabled_MinersWobble", (object) Main.SettingsEnabled_MinersWobble);
|
|
Main.Configuration.Put("SettingBlockGamepadsEntirely", (object) Main.SettingBlockGamepadsEntirely);
|
|
Main.Configuration.Put("SettingsEnabled_OpaqueBoxBehindTooltips", (object) Main.SettingsEnabled_OpaqueBoxBehindTooltips);
|
|
Main.Configuration.Put("SettingDontScaleMainMenuUp", (object) Main.SettingDontScaleMainMenuUp);
|
|
Main.Configuration.Put("SettingsEnabled_TilesSwayInWind", (object) Main.SettingsEnabled_TilesSwayInWind);
|
|
Main.Configuration.Put("UseStormEffect", (object) Main.UseStormEffects);
|
|
Main.Configuration.Put("UseHeatDistortion", (object) Main.UseHeatDistortion);
|
|
Main.Configuration.Put("WaveQuality", (object) Main.WaveQuality);
|
|
Main.Configuration.Put("Support4K", (object) Main.Support4K);
|
|
Main.Configuration.Put("MouseColor", (object) new Dictionary<string, byte>()
|
|
{
|
|
{
|
|
"R",
|
|
Main.mouseColor.R
|
|
},
|
|
{
|
|
"G",
|
|
Main.mouseColor.G
|
|
},
|
|
{
|
|
"B",
|
|
Main.mouseColor.B
|
|
}
|
|
});
|
|
Main.Configuration.Put("MouseBorderColor", (object) new Dictionary<string, byte>()
|
|
{
|
|
{
|
|
"R",
|
|
Main.MouseBorderColor.R
|
|
},
|
|
{
|
|
"G",
|
|
Main.MouseBorderColor.G
|
|
},
|
|
{
|
|
"B",
|
|
Main.MouseBorderColor.B
|
|
},
|
|
{
|
|
"A",
|
|
Main.MouseBorderColor.A
|
|
}
|
|
});
|
|
Main.Configuration.Put("QuickLaunch", (object) Main.SkipAssemblyLoad);
|
|
Main.Configuration.Put("Zoom", (object) Main.GameZoomTarget);
|
|
Main.Configuration.Put("UIScale", (object) Main._uiScaleWanted);
|
|
Main.Configuration.Put("MapScale", (object) Main.MapScale);
|
|
if (Main.AssetSourceController != null)
|
|
Main.Configuration.Put("ResourcePacks", (object) Main.AssetSourceController.ActiveResourcePackList.ToJson());
|
|
Main.Configuration.Put("FlashIconForEvents", (object) Enum.GetName(typeof (GameNotificationType), (object) Main._flashNotificationType));
|
|
Main.Configuration.Put("Display", (object) Main._windowMover.ScreenDeviceName);
|
|
Main.Configuration.Put("DisplayScreen", (object) Main._windowMover.ScreenDeviceName);
|
|
Main.Configuration.Put("ThrottleWhenInactive", (object) (Main.instance.InactiveSleepTime != TimeSpan.Zero));
|
|
Main.Configuration.Put("DoorAutoOpeningMode", (object) DoorOpeningHelper.PreferenceSettings);
|
|
Main.Configuration.Put("WaterfallDrawLimit", (object) Main.instance.waterfallManager.maxWaterfallCount);
|
|
Main.Configuration.Put("DisableIntenseVisualEffects", (object) Main.DisableIntenseVisualEffects);
|
|
return Main.Configuration.Save() && PlayerInput.Save();
|
|
}
|
|
|
|
protected void CheckBunny()
|
|
{
|
|
try
|
|
{
|
|
RegistryKey subKey = Registry.CurrentUser.CreateSubKey("Software\\Terraria");
|
|
if (subKey == null || subKey.GetValue("Bunny") == null || !(subKey.GetValue("Bunny").ToString() == "1"))
|
|
return;
|
|
Main.runningCollectorsEdition = true;
|
|
}
|
|
catch
|
|
{
|
|
Main.runningCollectorsEdition = false;
|
|
}
|
|
}
|
|
|
|
private static void TryPickingDefaultUIScale(float displayHeight)
|
|
{
|
|
if (!Main.shouldSetDefaultUIScale)
|
|
return;
|
|
Main.newDefaultUIScale = (float) ((double) displayHeight / 1080.0 * 1.10000002384186);
|
|
Main.shouldSetDefaultUIScale = false;
|
|
Main.Configuration.Put("UIScale", (object) Main.newDefaultUIScale);
|
|
Main.Configuration.Save();
|
|
}
|
|
|
|
protected void LoadSettings()
|
|
{
|
|
if (File.Exists(Main.SavePath + Path.DirectorySeparatorChar.ToString() + "config.dat"))
|
|
{
|
|
this.OpenLegacySettings();
|
|
if (!Main.SaveSettings())
|
|
return;
|
|
File.Delete(Main.SavePath + Path.DirectorySeparatorChar.ToString() + "config.dat");
|
|
}
|
|
else
|
|
{
|
|
Main.Configuration.Load();
|
|
int currentValue1 = 0;
|
|
Main.Configuration.Get<int>("LastLaunchedVersion", ref currentValue1);
|
|
bool flag = false;
|
|
if (currentValue1 < 219)
|
|
flag = true;
|
|
if (!flag)
|
|
{
|
|
Main.Configuration.Get<bool>("ResetDefaultUIScale", ref Main.shouldSetDefaultUIScale);
|
|
Main.Configuration.Get<bool>("Fullscreen", ref Main.startFullscreen);
|
|
Main.Configuration.Get<bool>("WindowMaximized", ref Main.screenMaximized);
|
|
Main.Configuration.Get<bool>("WindowBorderless", ref Main.screenBorderless);
|
|
}
|
|
Main.PendingBorderlessState = Main.screenBorderless;
|
|
Main.screenBorderlessPendingResizes = Main.screenBorderless ? 6 : 0;
|
|
if (!Main.startFullscreen)
|
|
{
|
|
int preferredBackBufferWidth = Main.graphics.PreferredBackBufferWidth;
|
|
int backBufferHeight = Main.graphics.PreferredBackBufferHeight;
|
|
Main.Configuration.Get<int>("DisplayWidth", ref preferredBackBufferWidth);
|
|
Main.Configuration.Get<int>("DisplayHeight", ref backBufferHeight);
|
|
if (Main.PendingBorderlessState)
|
|
Main.screenBorderlessPendingResizes = 1;
|
|
Main.SetDisplayMode(preferredBackBufferWidth, backBufferHeight, false);
|
|
Main.TryPickingDefaultUIScale((float) backBufferHeight);
|
|
}
|
|
Main.Configuration.Get<bool>("SmartCursorToggle", ref Main.cSmartCursorModeIsToggleAndNotHold);
|
|
Main.Configuration.Get<bool>("MapEnabled", ref Main.mapEnabled);
|
|
Main.Configuration.Get<int>("InvasionBarMode", ref Main.invasionProgressMode);
|
|
Main.Configuration.Get<bool>("AutoSave", ref Main.autoSave);
|
|
Main.Configuration.Get<bool>("AutoPause", ref Main.autoPause);
|
|
Main._needsLanguageSelect = !Main.Configuration.Contains("Language");
|
|
string str = Main.Configuration.Get<string>("Language", "en-US");
|
|
int result1 = 0;
|
|
if (int.TryParse(str, out result1))
|
|
{
|
|
LanguageManager.Instance.SetLanguage(result1);
|
|
this.SetTitle();
|
|
}
|
|
else
|
|
{
|
|
LanguageManager.Instance.SetLanguage(str);
|
|
this.SetTitle();
|
|
}
|
|
Main.Configuration.Get<bool>("PlacementPreview", ref Main.placementPreview);
|
|
Main.Configuration.Get<bool>("GoreVisualsAllowed", ref ChildSafety.Disabled);
|
|
Main.Configuration.Get<bool>("DisableIntenseVisualEffects", ref Main.DisableIntenseVisualEffects);
|
|
if (!flag)
|
|
{
|
|
Main.Configuration.Get<float>("VolumeSound", ref Main.soundVolume);
|
|
Main.Configuration.Get<float>("VolumeAmbient", ref Main.ambientVolume);
|
|
Main.Configuration.Get<float>("VolumeMusic", ref Main.musicVolume);
|
|
}
|
|
Main.Configuration.Get<string>("KeyFavoriteModifier", ref Main.cFavoriteKey);
|
|
Microsoft.Xna.Framework.Input.Keys result2;
|
|
if (Enum.TryParse<Microsoft.Xna.Framework.Input.Keys>(Main.cFavoriteKey, out result2))
|
|
Main.FavoriteKey = result2;
|
|
if (!flag)
|
|
{
|
|
Main.Configuration.Get<int>("GraphicsQuality", ref Main.qaStyle);
|
|
Main.Configuration.Get<bool>("BackgroundEnabled", ref Main.BackgroundEnabled);
|
|
}
|
|
if (Main.Configuration.GetAllKeys().Contains("FrameSkip"))
|
|
{
|
|
bool currentValue2 = false;
|
|
Main.Configuration.Get<bool>("FrameSkip", ref currentValue2);
|
|
Main.terrariasFixedTiming = !currentValue2;
|
|
Main.FrameSkipMode = !Main.terrariasFixedTiming ? 1 : 2;
|
|
}
|
|
Main.Configuration.Get<int>("FrameSkipMode", ref Main.FrameSkipMode);
|
|
if (Main.FrameSkipMode < 0)
|
|
Main.FrameSkipMode = 0;
|
|
if (Main.FrameSkipMode > 2)
|
|
Main.FrameSkipMode = 2;
|
|
int mode = (int) Lighting.Mode;
|
|
if (!flag)
|
|
Main.Configuration.Get<int>("LightingMode", ref mode);
|
|
Lighting.Mode = (LightMode) mode;
|
|
Main.Configuration.Get<bool>("UnlockMusicSwap", ref Main.TOWMusicUnlocked);
|
|
Main.Configuration.Get<float>("Parallax", ref Main.caveParallax);
|
|
Main.bgScroll = (int) ((1.0 - (double) Main.caveParallax) * 500.0);
|
|
Main.Configuration.Get<int>("BackgroundParallax", ref Main.bgScroll);
|
|
Main.caveParallax = (float) (1.0 - (double) Main.bgScroll / 500.0);
|
|
Main.Configuration.Get<bool>("ShowItemText", ref Main.showItemText);
|
|
Main.Configuration.Get<string>("ClientUUID", ref Main.clientUUID);
|
|
Main.Configuration.Get<bool>("UseSmartCursorForCommonBlocks", ref Player.SmartCursorSettings.SmartBlocksEnabled);
|
|
Main.Configuration.Get<bool>("UseSmartAxeAfterSmartPickaxe", ref Player.SmartCursorSettings.SmartAxeAfterPickaxe);
|
|
if (!flag)
|
|
Main.Configuration.Get<bool>("DisableLeftShiftTrashCan", ref ItemSlot.Options.DisableLeftShiftTrashCan);
|
|
Main.Configuration.Get<bool>("HidePasswords", ref Main.HidePassword);
|
|
Main.Configuration.Get<bool>("HighlightNewItems", ref ItemSlot.Options.HighlightNewItems);
|
|
Main.Configuration.Get<bool>("ReverseUpDownForArmorSetBonuses", ref Main.ReversedUpDownArmorSetBonuses);
|
|
Main.Configuration.Get<bool>("MouseShowBuildingGrid", ref Main.MouseShowBuildingGrid);
|
|
Main.Configuration.Get<bool>("AllowUnfocusedInputOnGamepad", ref Main.AllowUnfocusedInputOnGamepad);
|
|
Main.Configuration.Get<bool>("GamepadDisableInstructionsDisplay", ref Main.GamepadDisableInstructionsDisplay);
|
|
Main.Configuration.Get<bool>("SettingDontScaleMainMenuUp", ref Main.SettingDontScaleMainMenuUp);
|
|
Main.Configuration.Get<int>("WorldRollbacksToKeep", ref Main.WorldRollingBackupsCountToKeep);
|
|
Main.Configuration.Get<int>("TeamNameplateDistance", ref Main.teamNamePlateDistance);
|
|
if (currentValue1 < 230)
|
|
Main.Configuration.Get<int>("MultiplayerNPCSmoothingRange", ref Main.multiplayerNPCSmoothingRange);
|
|
Main.Configuration.Get<bool>("UseStormEffect", ref Main.UseStormEffects);
|
|
Main.Configuration.Get<bool>("UseHeatDistortion", ref Main.UseHeatDistortion);
|
|
Main.Configuration.Get<int>("WaveQuality", ref Main.WaveQuality);
|
|
if (Main.WaveQuality > 3)
|
|
Main.WaveQuality = 3;
|
|
if (Main.WaveQuality < 0)
|
|
Main.WaveQuality = 0;
|
|
Dictionary<string, byte> currentValue3 = new Dictionary<string, byte>();
|
|
Main.Configuration.Get<Dictionary<string, byte>>("MouseColor", ref currentValue3);
|
|
byte num;
|
|
if (currentValue3.TryGetValue("R", out num))
|
|
Main.mouseColor.R = num;
|
|
if (currentValue3.TryGetValue("G", out num))
|
|
Main.mouseColor.G = num;
|
|
if (currentValue3.TryGetValue("B", out num))
|
|
Main.mouseColor.B = num;
|
|
currentValue3.Clear();
|
|
Main.Configuration.Get<Dictionary<string, byte>>("MouseBorderColor", ref currentValue3);
|
|
if (currentValue3.TryGetValue("R", out num))
|
|
Main.MouseBorderColor.R = num;
|
|
if (currentValue3.TryGetValue("G", out num))
|
|
Main.MouseBorderColor.G = num;
|
|
if (currentValue3.TryGetValue("B", out num))
|
|
Main.MouseBorderColor.B = num;
|
|
if (currentValue3.TryGetValue("A", out num))
|
|
Main.MouseBorderColor.A = num;
|
|
Main.Configuration.Get<bool>("QuickLaunch", ref Main.SkipAssemblyLoad);
|
|
if (!flag)
|
|
Main.GameZoomTarget = Main.Configuration.Get<float>("Zoom", 1f);
|
|
if (!flag)
|
|
Main.UIScale = Main.Configuration.Get<float>("UIScale", Platform.Get<IWindowService>().GetScaling());
|
|
if ((double) Main.newDefaultUIScale > 0.0)
|
|
{
|
|
Main.UIScale = Main.newDefaultUIScale;
|
|
Main.newDefaultUIScale = 0.0f;
|
|
}
|
|
Main.MapScale = MathHelper.Clamp(Main.Configuration.Get<float>("MapScale", 1f), 0.5f, 1f);
|
|
int currentValue4 = -1;
|
|
Main.Configuration.Get<int>("LockOnPriority", ref currentValue4);
|
|
if (currentValue4 < 0)
|
|
currentValue4 = 0;
|
|
if (currentValue4 > 2)
|
|
currentValue4 = 2;
|
|
LockOnHelper.UseMode = (LockOnHelper.LockOnMode) currentValue4;
|
|
if (LockOnHelper.UseMode == LockOnHelper.LockOnMode.FocusTarget)
|
|
LockOnHelper.UseMode = LockOnHelper.LockOnMode.ThreeDS;
|
|
Main.Configuration.Get<bool>("InvisibleCursorForGamepad", ref Main.InvisibleCursorForGamepad);
|
|
GameNotificationType result3;
|
|
if (Enum.TryParse<GameNotificationType>(Main.Configuration.Get<string>("FlashIconForEvents", "All"), out result3))
|
|
Main._flashNotificationType = result3;
|
|
if (!flag)
|
|
{
|
|
string screenDeviceName = Main.Configuration.Get<string>("DisplayScreen", "");
|
|
Main._windowMover.TryMovingToScreen(screenDeviceName);
|
|
this.InactiveSleepTime = TimeSpan.FromMilliseconds(Main.Configuration.Get<bool>("ThrottleWhenInactive", true) ? 20.0 : 0.0);
|
|
}
|
|
Form form = (Form) Control.FromHandle(Main.instance.Window.Handle);
|
|
if (Main.screenBorderless)
|
|
Main.SetBorderlessFormStyle(form);
|
|
else if (Main.screenMaximized)
|
|
{
|
|
form.WindowState = FormWindowState.Maximized;
|
|
form.FormBorderStyle = FormBorderStyle.Sizable;
|
|
}
|
|
else
|
|
form.FormBorderStyle = FormBorderStyle.Sizable;
|
|
Control.FromHandle(Main.instance.Window.Handle).BringToFront();
|
|
if (!flag)
|
|
Main.Configuration.Get<bool>("Support4K", ref Main.Support4K);
|
|
Main.Configuration.Get<bool>("UseExperimentalFeatures", ref Main.UseExperimentalFeatures);
|
|
Main.Configuration.Get<bool>("SettingsUnlock_WorldEvil", ref Main.SettingsUnlock_WorldEvil);
|
|
Main.Configuration.Get<bool>("SettingsEnabled_MinersWobble", ref Main.SettingsEnabled_MinersWobble);
|
|
Main.Configuration.Get<bool>("SettingBlockGamepadsEntirely", ref Main.SettingBlockGamepadsEntirely);
|
|
Main.Configuration.Get<bool>("SettingsEnabled_OpaqueBoxBehindTooltips", ref Main.SettingsEnabled_OpaqueBoxBehindTooltips);
|
|
Main.Configuration.Get<bool>("SettingsEnabled_TilesSwayInWind", ref Main.SettingsEnabled_TilesSwayInWind);
|
|
int preferenceSettings = (int) DoorOpeningHelper.PreferenceSettings;
|
|
Main.Configuration.Get<int>("DoorAutoOpeningMode", ref preferenceSettings);
|
|
DoorOpeningHelper.PreferenceSettings = (DoorOpeningHelper.DoorAutoOpeningPreference) preferenceSettings;
|
|
if (currentValue1 <= 147)
|
|
Main.terrariasFixedTiming = !Main.terrariasFixedTiming;
|
|
if (currentValue1 <= 162)
|
|
{
|
|
bool currentValue5 = false;
|
|
uint currentValue6 = 0;
|
|
Main.Configuration.Get<bool>("ThickMouseEdges", ref currentValue5);
|
|
if (currentValue5)
|
|
{
|
|
Main.Configuration.Get<uint>("ThickMouseEdgesPackedColor", ref currentValue6);
|
|
Main.MouseBorderColor.PackedValue = currentValue6;
|
|
Main.mouseColor.R = Main.Configuration.Get<byte>("MouseColorR", Main.mouseColor.R);
|
|
Main.mouseColor.G = Main.Configuration.Get<byte>("MouseColorG", Main.mouseColor.G);
|
|
Main.mouseColor.B = Main.Configuration.Get<byte>("MouseColorB", Main.mouseColor.B);
|
|
}
|
|
}
|
|
if (currentValue1 <= 162)
|
|
{
|
|
Main.Configuration.Get<string>("KeyUp", ref Main.cUp);
|
|
Main.Configuration.Get<string>("KeyDown", ref Main.cDown);
|
|
Main.Configuration.Get<string>("KeyLeft", ref Main.cLeft);
|
|
Main.Configuration.Get<string>("KeyRight", ref Main.cRight);
|
|
Main.Configuration.Get<string>("KeyJump", ref Main.cJump);
|
|
Main.Configuration.Get<string>("KeyThrowItem", ref Main.cThrowItem);
|
|
Main.Configuration.Get<string>("KeyInventory", ref Main.cInv);
|
|
Main.Configuration.Get<string>("KeyQuickHeal", ref Main.cHeal);
|
|
Main.Configuration.Get<string>("KeyQuickMana", ref Main.cMana);
|
|
Main.Configuration.Get<string>("KeyQuickBuff", ref Main.cBuff);
|
|
Main.Configuration.Get<string>("KeyUseHook", ref Main.cHook);
|
|
Main.Configuration.Get<string>("KeyAutoSelect", ref Main.cTorch);
|
|
Main.Configuration.Get<string>("KeySmartCursor", ref Main.cSmart);
|
|
Main.Configuration.Get<string>("KeyMount", ref Main.cMount);
|
|
Main.Configuration.Get<string>("KeyMapStyle", ref Main.cMapStyle);
|
|
Main.Configuration.Get<string>("KeyFullscreenMap", ref Main.cMapFull);
|
|
Main.Configuration.Get<string>("KeyMapZoomIn", ref Main.cMapZoomIn);
|
|
Main.Configuration.Get<string>("KeyMapZoomOut", ref Main.cMapZoomOut);
|
|
Main.Configuration.Get<string>("KeyMapAlphaUp", ref Main.cMapAlphaUp);
|
|
Main.Configuration.Get<string>("KeyMapAlphaDown", ref Main.cMapAlphaDown);
|
|
PlayerInput.CurrentProfile.InputModes[InputMode.Keyboard].KeyStatus["Up"] = new List<string>()
|
|
{
|
|
Main.cUp
|
|
};
|
|
PlayerInput.CurrentProfile.InputModes[InputMode.Keyboard].KeyStatus["Down"] = new List<string>()
|
|
{
|
|
Main.cDown
|
|
};
|
|
PlayerInput.CurrentProfile.InputModes[InputMode.Keyboard].KeyStatus["Left"] = new List<string>()
|
|
{
|
|
Main.cLeft
|
|
};
|
|
PlayerInput.CurrentProfile.InputModes[InputMode.Keyboard].KeyStatus["Right"] = new List<string>()
|
|
{
|
|
Main.cRight
|
|
};
|
|
PlayerInput.CurrentProfile.InputModes[InputMode.Keyboard].KeyStatus["Jump"] = new List<string>()
|
|
{
|
|
Main.cJump
|
|
};
|
|
PlayerInput.CurrentProfile.InputModes[InputMode.Keyboard].KeyStatus["Throw"] = new List<string>()
|
|
{
|
|
Main.cThrowItem
|
|
};
|
|
PlayerInput.CurrentProfile.InputModes[InputMode.Keyboard].KeyStatus["Inventory"] = new List<string>()
|
|
{
|
|
Main.cInv
|
|
};
|
|
PlayerInput.CurrentProfile.InputModes[InputMode.Keyboard].KeyStatus["QuickHeal"] = new List<string>()
|
|
{
|
|
Main.cHeal
|
|
};
|
|
PlayerInput.CurrentProfile.InputModes[InputMode.Keyboard].KeyStatus["QuickMana"] = new List<string>()
|
|
{
|
|
Main.cMana
|
|
};
|
|
PlayerInput.CurrentProfile.InputModes[InputMode.Keyboard].KeyStatus["QuickBuff"] = new List<string>()
|
|
{
|
|
Main.cBuff
|
|
};
|
|
PlayerInput.CurrentProfile.InputModes[InputMode.Keyboard].KeyStatus["Grapple"] = new List<string>()
|
|
{
|
|
Main.cHook
|
|
};
|
|
PlayerInput.CurrentProfile.InputModes[InputMode.Keyboard].KeyStatus["SmartSelect"] = new List<string>()
|
|
{
|
|
Main.cTorch
|
|
};
|
|
PlayerInput.CurrentProfile.InputModes[InputMode.Keyboard].KeyStatus["SmartCursor"] = new List<string>()
|
|
{
|
|
Main.cSmart
|
|
};
|
|
PlayerInput.CurrentProfile.InputModes[InputMode.Keyboard].KeyStatus["QuickMount"] = new List<string>()
|
|
{
|
|
Main.cMount
|
|
};
|
|
PlayerInput.CurrentProfile.InputModes[InputMode.Keyboard].KeyStatus["MapStyle"] = new List<string>()
|
|
{
|
|
Main.cMapStyle
|
|
};
|
|
PlayerInput.CurrentProfile.InputModes[InputMode.Keyboard].KeyStatus["MapFull"] = new List<string>()
|
|
{
|
|
Main.cMapFull
|
|
};
|
|
PlayerInput.CurrentProfile.InputModes[InputMode.Keyboard].KeyStatus["MapZoomIn"] = new List<string>()
|
|
{
|
|
Main.cMapZoomIn
|
|
};
|
|
PlayerInput.CurrentProfile.InputModes[InputMode.Keyboard].KeyStatus["MapZoomOut"] = new List<string>()
|
|
{
|
|
Main.cMapZoomOut
|
|
};
|
|
PlayerInput.CurrentProfile.InputModes[InputMode.Keyboard].KeyStatus["MapAlphaUp"] = new List<string>()
|
|
{
|
|
Main.cMapAlphaUp
|
|
};
|
|
PlayerInput.CurrentProfile.InputModes[InputMode.Keyboard].KeyStatus["MapAlphaDown"] = new List<string>()
|
|
{
|
|
Main.cMapAlphaDown
|
|
};
|
|
}
|
|
PlayerInput.Load();
|
|
if (currentValue1 < 165)
|
|
{
|
|
try
|
|
{
|
|
PlayerInput.ManageVersion_1_3();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
}
|
|
}
|
|
Main.mouseColorSlider.SetHSL(Main.mouseColor);
|
|
Main.mouseBorderColorSlider.SetHSL(Main.MouseBorderColor);
|
|
Main.mouseBorderColorSlider.Alpha = (float) Main.MouseBorderColor.A / (float) byte.MaxValue;
|
|
if (currentValue1 == 230)
|
|
return;
|
|
Main.SaveSettings();
|
|
}
|
|
}
|
|
|
|
protected void OpenLegacySettings()
|
|
{
|
|
try
|
|
{
|
|
if (!File.Exists(Main.SavePath + Path.DirectorySeparatorChar.ToString() + "config.dat"))
|
|
return;
|
|
using (FileStream fileStream = new FileStream(Main.SavePath + Path.DirectorySeparatorChar.ToString() + "config.dat", FileMode.Open))
|
|
{
|
|
using (BinaryReader binaryReader = new BinaryReader((Stream) fileStream))
|
|
{
|
|
int num1 = binaryReader.ReadInt32();
|
|
if (num1 >= 68)
|
|
{
|
|
if (num1 >= 67)
|
|
Main.clientUUID = binaryReader.ReadString();
|
|
bool fullscreen = binaryReader.ReadBoolean();
|
|
Main.mouseColor.R = binaryReader.ReadByte();
|
|
Main.mouseColor.G = binaryReader.ReadByte();
|
|
Main.mouseColor.B = binaryReader.ReadByte();
|
|
Main.soundVolume = binaryReader.ReadSingle();
|
|
if (num1 >= 90)
|
|
Main.ambientVolume = binaryReader.ReadSingle();
|
|
Main.musicVolume = binaryReader.ReadSingle();
|
|
Main.cUp = binaryReader.ReadString();
|
|
Main.cDown = binaryReader.ReadString();
|
|
Main.cLeft = binaryReader.ReadString();
|
|
Main.cRight = binaryReader.ReadString();
|
|
Main.cJump = binaryReader.ReadString();
|
|
Main.cThrowItem = binaryReader.ReadString();
|
|
if (num1 >= 1)
|
|
Main.cInv = binaryReader.ReadString();
|
|
if (num1 >= 12)
|
|
{
|
|
Main.cHeal = binaryReader.ReadString();
|
|
Main.cMana = binaryReader.ReadString();
|
|
Main.cBuff = binaryReader.ReadString();
|
|
}
|
|
if (num1 >= 13)
|
|
Main.cHook = binaryReader.ReadString();
|
|
Main.caveParallax = binaryReader.ReadSingle();
|
|
if (num1 >= 2)
|
|
Main.terrariasFixedTiming = binaryReader.ReadBoolean();
|
|
if (num1 >= 91 && binaryReader.ReadBoolean())
|
|
((Form) Control.FromHandle(this.Window.Handle)).WindowState = FormWindowState.Maximized;
|
|
if (num1 >= 4)
|
|
Main.SetDisplayMode(binaryReader.ReadInt32(), binaryReader.ReadInt32(), fullscreen);
|
|
if (num1 >= 8)
|
|
Main.autoSave = binaryReader.ReadBoolean();
|
|
if (num1 >= 9)
|
|
Main.autoPause = binaryReader.ReadBoolean();
|
|
if (num1 >= 19)
|
|
Main.showItemText = binaryReader.ReadBoolean();
|
|
if (num1 >= 30)
|
|
{
|
|
Main.cTorch = binaryReader.ReadString();
|
|
Lighting.Mode = (LightMode) binaryReader.ReadByte();
|
|
Main.qaStyle = (int) binaryReader.ReadByte();
|
|
}
|
|
if (num1 >= 37)
|
|
Main.BackgroundEnabled = binaryReader.ReadBoolean();
|
|
if (num1 >= 39)
|
|
{
|
|
byte num2 = binaryReader.ReadByte();
|
|
Main._needsLanguageSelect = num2 == (byte) 0;
|
|
LanguageManager.Instance.SetLanguage((int) num2);
|
|
}
|
|
if (num1 >= 46)
|
|
{
|
|
Main.mapEnabled = binaryReader.ReadBoolean();
|
|
Main.cMapStyle = binaryReader.ReadString();
|
|
Main.cMapFull = binaryReader.ReadString();
|
|
Main.cMapZoomIn = binaryReader.ReadString();
|
|
Main.cMapZoomOut = binaryReader.ReadString();
|
|
Main.cMapAlphaUp = binaryReader.ReadString();
|
|
Main.cMapAlphaDown = binaryReader.ReadString();
|
|
}
|
|
if (num1 >= 89)
|
|
binaryReader.ReadInt32();
|
|
if (num1 >= 100)
|
|
{
|
|
Main.cSmart = binaryReader.ReadString();
|
|
Main.cSmartCursorModeIsToggleAndNotHold = binaryReader.ReadBoolean();
|
|
}
|
|
if (num1 >= 107)
|
|
Main.invasionProgressMode = (int) binaryReader.ReadByte();
|
|
if (num1 >= 111)
|
|
Main.placementPreview = binaryReader.ReadBoolean();
|
|
if (num1 >= 111)
|
|
Main.placementPreview = binaryReader.ReadBoolean();
|
|
Main.SetFullScreen(fullscreen);
|
|
}
|
|
binaryReader.Close();
|
|
}
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
}
|
|
|
|
private static void ErasePlayer(int i)
|
|
{
|
|
try
|
|
{
|
|
FileUtilities.Delete(Main.PlayerList[i].Path, Main.PlayerList[i].IsCloudSave);
|
|
FileUtilities.Delete(Main.PlayerList[i].Path + ".bak", Main.PlayerList[i].IsCloudSave);
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
try
|
|
{
|
|
string path = Main.PlayerList[i].Path.Substring(0, Main.PlayerList[i].Path.Length - 4);
|
|
if (path.Substring(path.Length - 1) != "." && path.Substring(path.Length - 1) != "\\" && Directory.Exists(path))
|
|
Directory.Delete(path, true);
|
|
Main.LoadPlayers();
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
}
|
|
|
|
private static void EraseWorld(int i)
|
|
{
|
|
try
|
|
{
|
|
if (!Main.WorldList[i].IsCloudSave)
|
|
{
|
|
FileOperationAPIWrapper.MoveToRecycleBin(Main.WorldList[i].Path);
|
|
FileOperationAPIWrapper.MoveToRecycleBin(Main.WorldList[i].Path + ".bak");
|
|
}
|
|
else if (SocialAPI.Cloud != null)
|
|
SocialAPI.Cloud.Delete(Main.WorldList[i].Path);
|
|
Main.LoadWorlds();
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
}
|
|
|
|
public static string GetPlayerPathFromName(string playerName, bool cloudSave)
|
|
{
|
|
char[] invalidFileNameChars = Path.GetInvalidFileNameChars();
|
|
string str1 = "";
|
|
playerName = playerName.Replace(".", "_");
|
|
playerName = playerName.Replace("*", "_");
|
|
for (int index = 0; index < playerName.Length; ++index)
|
|
{
|
|
char ch1 = playerName[index];
|
|
char ch2 = !((IEnumerable<char>) invalidFileNameChars).Contains<char>(ch1) ? (ch1 != ' ' ? ch1 : '_') : '-';
|
|
str1 += ch2.ToString();
|
|
}
|
|
string str2 = cloudSave ? Main.CloudPlayerPath : Main.PlayerPath;
|
|
if (FileUtilities.GetFullPath(str2 + Path.DirectorySeparatorChar.ToString() + str1 + ".plr", cloudSave).StartsWith("\\\\.\\", StringComparison.Ordinal))
|
|
str1 += "_";
|
|
string str3 = str2;
|
|
char directorySeparatorChar = Path.DirectorySeparatorChar;
|
|
string str4 = directorySeparatorChar.ToString();
|
|
string str5 = str1;
|
|
if (FileUtilities.Exists(str3 + str4 + str5 + ".plr", cloudSave))
|
|
{
|
|
int num = 2;
|
|
while (true)
|
|
{
|
|
object[] objArray = new object[5]
|
|
{
|
|
(object) str2,
|
|
null,
|
|
null,
|
|
null,
|
|
null
|
|
};
|
|
directorySeparatorChar = Path.DirectorySeparatorChar;
|
|
objArray[1] = (object) directorySeparatorChar.ToString();
|
|
objArray[2] = (object) str1;
|
|
objArray[3] = (object) num;
|
|
objArray[4] = (object) ".plr";
|
|
if (FileUtilities.Exists(string.Concat(objArray), cloudSave))
|
|
++num;
|
|
else
|
|
break;
|
|
}
|
|
str1 += (string) (object) num;
|
|
}
|
|
string str6 = str2;
|
|
directorySeparatorChar = Path.DirectorySeparatorChar;
|
|
string str7 = directorySeparatorChar.ToString();
|
|
string str8 = str1;
|
|
return str6 + str7 + str8 + ".plr";
|
|
}
|
|
|
|
public static string GetWorldPathFromName(string worldName, bool cloudSave)
|
|
{
|
|
char[] invalidFileNameChars = Path.GetInvalidFileNameChars();
|
|
string str1 = worldName;
|
|
string str2 = "";
|
|
for (int index = 0; index < str1.Length; ++index)
|
|
{
|
|
char ch1 = str1[index];
|
|
char ch2 = !((IEnumerable<char>) invalidFileNameChars).Contains<char>(ch1) ? (ch1 != ' ' ? ch1 : '_') : '-';
|
|
str2 += ch2.ToString();
|
|
}
|
|
string str3 = str2.Replace(".", "_").Replace("*", "_");
|
|
string str4 = cloudSave ? Main.CloudWorldPath : Main.WorldPath;
|
|
if (FileUtilities.GetFullPath(str4 + Path.DirectorySeparatorChar.ToString() + str3 + ".wld", cloudSave).StartsWith("\\\\.\\", StringComparison.Ordinal))
|
|
str3 += "_";
|
|
string str5 = str4;
|
|
char directorySeparatorChar = Path.DirectorySeparatorChar;
|
|
string str6 = directorySeparatorChar.ToString();
|
|
string str7 = str3;
|
|
if (FileUtilities.Exists(str5 + str6 + str7 + ".wld", cloudSave))
|
|
{
|
|
int num = 2;
|
|
while (true)
|
|
{
|
|
object[] objArray = new object[5]
|
|
{
|
|
(object) str4,
|
|
null,
|
|
null,
|
|
null,
|
|
null
|
|
};
|
|
directorySeparatorChar = Path.DirectorySeparatorChar;
|
|
objArray[1] = (object) directorySeparatorChar.ToString();
|
|
objArray[2] = (object) str3;
|
|
objArray[3] = (object) num;
|
|
objArray[4] = (object) ".wld";
|
|
if (FileUtilities.Exists(string.Concat(objArray), cloudSave))
|
|
++num;
|
|
else
|
|
break;
|
|
}
|
|
str3 += (string) (object) num;
|
|
}
|
|
string str8 = str4;
|
|
directorySeparatorChar = Path.DirectorySeparatorChar;
|
|
string str9 = directorySeparatorChar.ToString();
|
|
string str10 = str3;
|
|
return str8 + str9 + str10 + ".wld";
|
|
}
|
|
|
|
public void setServerWorldRollbacks(string rollBacksToKeep) => Main.WorldRollingBackupsCountToKeep = Convert.ToInt32(rollBacksToKeep);
|
|
|
|
public void autoCreate(string worldSize)
|
|
{
|
|
if (worldSize == "0")
|
|
Main.autoGen = false;
|
|
else if (worldSize == "1")
|
|
{
|
|
Main.maxTilesX = 4200;
|
|
Main.maxTilesY = 1200;
|
|
Main.autoGen = true;
|
|
}
|
|
else if (worldSize == "2")
|
|
{
|
|
Main.maxTilesX = 6300;
|
|
Main.maxTilesY = 1800;
|
|
Main.autoGen = true;
|
|
}
|
|
else
|
|
{
|
|
if (!(worldSize == "3"))
|
|
return;
|
|
Main.maxTilesX = 8400;
|
|
Main.maxTilesY = 2400;
|
|
Main.autoGen = true;
|
|
}
|
|
}
|
|
|
|
public void NewMOTD(string newMOTD) => Main.motd = newMOTD;
|
|
|
|
public static string ConvertToSafeArgument(string arg) => Uri.EscapeDataString(arg);
|
|
|
|
public static string ConvertFromSafeArgument(string arg) => Uri.UnescapeDataString(arg);
|
|
|
|
public void LoadDedConfig(string configPath)
|
|
{
|
|
if (!File.Exists(configPath))
|
|
return;
|
|
using (StreamReader streamReader = new StreamReader(configPath))
|
|
{
|
|
string line;
|
|
while ((line = streamReader.ReadLine()) != null)
|
|
{
|
|
try
|
|
{
|
|
if (line.Length > 6 && line.Substring(0, 6).ToLower() == "world=")
|
|
{
|
|
string str = line.Substring(6);
|
|
Main.autoGenFileLocation = str;
|
|
Main.ActiveWorldFileData = WorldFile.GetAllMetadata(Platform.Get<IPathService>().ExpandPathVariables(str), false);
|
|
}
|
|
if (line.Length > 5 && line.Substring(0, 5).ToLower() == "port=")
|
|
{
|
|
string str = line.Substring(5);
|
|
try
|
|
{
|
|
Netplay.ListenPort = Convert.ToInt32(str);
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
}
|
|
if (line.Length > 11 && line.Substring(0, 21).ToLower() == "worldrollbackstokeep=")
|
|
{
|
|
string str = line.Substring(21);
|
|
try
|
|
{
|
|
Main.WorldRollingBackupsCountToKeep = Convert.ToInt32(str);
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
}
|
|
if (line.Length > 11 && line.Substring(0, 11).ToLower() == "maxplayers=")
|
|
{
|
|
string str = line.Substring(11);
|
|
try
|
|
{
|
|
Main.maxNetPlayers = Convert.ToInt32(str);
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
}
|
|
if (line.Length > 11 && line.Substring(0, 9).ToLower() == "priority=" && !Program.LaunchParameters.ContainsKey("-forcepriority"))
|
|
{
|
|
string str = line.Substring(9);
|
|
try
|
|
{
|
|
int int32 = Convert.ToInt32(str);
|
|
switch (int32)
|
|
{
|
|
case 0:
|
|
case 1:
|
|
case 2:
|
|
case 3:
|
|
case 4:
|
|
case 5:
|
|
Process currentProcess = Process.GetCurrentProcess();
|
|
if (int32 == 0)
|
|
{
|
|
currentProcess.PriorityClass = ProcessPriorityClass.RealTime;
|
|
break;
|
|
}
|
|
if (int32 == 1)
|
|
{
|
|
currentProcess.PriorityClass = ProcessPriorityClass.High;
|
|
break;
|
|
}
|
|
if (int32 == 2)
|
|
{
|
|
currentProcess.PriorityClass = ProcessPriorityClass.AboveNormal;
|
|
break;
|
|
}
|
|
if (int32 == 3)
|
|
{
|
|
currentProcess.PriorityClass = ProcessPriorityClass.Normal;
|
|
break;
|
|
}
|
|
if (int32 == 4)
|
|
{
|
|
currentProcess.PriorityClass = ProcessPriorityClass.BelowNormal;
|
|
break;
|
|
}
|
|
if (int32 == 5)
|
|
{
|
|
currentProcess.PriorityClass = ProcessPriorityClass.Idle;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
}
|
|
if (line.Length > 9 && line.Substring(0, 9).ToLower() == "password=")
|
|
Netplay.ServerPassword = Main.ConvertFromSafeArgument(line.Substring(9));
|
|
if (line.Length > 5 && line.Substring(0, 5).ToLower() == "motd=")
|
|
Main.motd = line.Substring(5);
|
|
if (line.Length > 5 && line.Substring(0, 5).ToLower() == "lang=")
|
|
{
|
|
string str = line.Substring(5);
|
|
LanguageManager.Instance.SetLanguage(Convert.ToInt32(str));
|
|
}
|
|
if (line.Length > 5 && line.Substring(0, 5).ToLower() == "language=")
|
|
{
|
|
string cultureName = line.Substring(9);
|
|
LanguageManager.Instance.SetLanguage(cultureName);
|
|
}
|
|
if (line.Length >= 10 && line.Substring(0, 10).ToLower() == "worldpath=")
|
|
{
|
|
string str = line.Substring(10);
|
|
Main.WorldPath = Platform.Get<IPathService>().ExpandPathVariables(str);
|
|
}
|
|
if (line.Length >= 10 && line.Substring(0, 10).ToLower() == "worldname=")
|
|
Main.worldName = line.Substring(10);
|
|
if (line.Length >= 5 && line.Substring(0, 5).ToLower() == "seed=")
|
|
Main.AutogenSeedName = line.Substring(5);
|
|
if (line.Length > 8 && line.Substring(0, 8).ToLower() == "banlist=")
|
|
{
|
|
string str = line.Substring(8);
|
|
Netplay.BanFilePath = Platform.Get<IPathService>().ExpandPathVariables(str);
|
|
}
|
|
if (line.Length > 11 && line.Substring(0, 11).ToLower() == "difficulty=")
|
|
{
|
|
string str = line.Substring(11);
|
|
if (str == "0")
|
|
Main.GameMode = 0;
|
|
else if (str == "1")
|
|
Main.GameMode = 1;
|
|
else if (str == "2")
|
|
Main.GameMode = 2;
|
|
else if (str == "3")
|
|
Main.GameMode = 3;
|
|
}
|
|
if (line.Length > 11 && line.Substring(0, 11).ToLower() == "autocreate=")
|
|
{
|
|
string str = line.Substring(11);
|
|
if (str == "0")
|
|
Main.autoGen = false;
|
|
else if (str == "1")
|
|
{
|
|
Main.maxTilesX = 4200;
|
|
Main.maxTilesY = 1200;
|
|
Main.autoGen = true;
|
|
}
|
|
else if (str == "2")
|
|
{
|
|
Main.maxTilesX = 6300;
|
|
Main.maxTilesY = 1800;
|
|
Main.autoGen = true;
|
|
}
|
|
else if (str == "3")
|
|
{
|
|
Main.maxTilesX = 8400;
|
|
Main.maxTilesY = 2400;
|
|
Main.autoGen = true;
|
|
}
|
|
}
|
|
if (line.Length > 7 && line.Substring(0, 7).ToLower() == "secure=" && line.Substring(7) == "1")
|
|
Netplay.SpamCheck = true;
|
|
if (line.Length > 5 && line.Substring(0, 5).ToLower() == "upnp=" && line.Substring(5) != "1")
|
|
Netplay.UseUPNP = false;
|
|
string str1 = "slowliquids=";
|
|
if (line.Length > str1.Length && line.Substring(0, str1.Length).ToLower() == str1 && line.Substring(str1.Length) == "1")
|
|
Main.Setting_UseReducedMaxLiquids = true;
|
|
if (line.Length > 10 && line.Substring(0, 10).ToLower() == "npcstream=")
|
|
{
|
|
string str2 = line.Substring(10);
|
|
try
|
|
{
|
|
Main.npcStreamSpeed = Convert.ToInt32(str2);
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
}
|
|
CreativePowerManager.TryListingPermissionsFrom(line);
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public void SetNetPlayers(int mPlayers) => Main.maxNetPlayers = mPlayers;
|
|
|
|
public void SetWorld(string world, bool cloud) => Main.ActiveWorldFileData = WorldFile.GetAllMetadata(world, cloud);
|
|
|
|
public void SetWorldName(string world) => Main.worldName = world;
|
|
|
|
public void EnableAutoShutdown() => Main.autoShutdown = true;
|
|
|
|
[DllImport("user32.dll")]
|
|
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
|
|
|
|
[DllImport("user32.dll")]
|
|
private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
|
|
|
|
public void AutoPass() => Main.autoPass = true;
|
|
|
|
public void AutoJoin(string IP)
|
|
{
|
|
Main.defaultIP = IP;
|
|
Main.getIP = IP;
|
|
Netplay.SetRemoteIP(Main.defaultIP);
|
|
Main.autoJoin = true;
|
|
}
|
|
|
|
public void AutoHost()
|
|
{
|
|
Main.menuMultiplayer = true;
|
|
Main.menuServer = true;
|
|
Main.ClearPendingPlayerSelectCallbacks();
|
|
Main.menuMode = 1;
|
|
}
|
|
|
|
public void loadLib(string path)
|
|
{
|
|
Main.libPath = path;
|
|
Main.LoadLibrary(Main.libPath);
|
|
}
|
|
|
|
public void NeverSleep() => this.previousExecutionState = Main.NativeMethods.SetThreadExecutionState(2147483649U);
|
|
|
|
public void YouCanSleepNow()
|
|
{
|
|
if (this.previousExecutionState == 0U)
|
|
return;
|
|
int num = (int) Main.NativeMethods.SetThreadExecutionState(this.previousExecutionState);
|
|
}
|
|
|
|
public void DedServ()
|
|
{
|
|
this.NeverSleep();
|
|
Main.rand = new UnifiedRandom();
|
|
if (Main.autoShutdown)
|
|
{
|
|
string lpWindowName = "terraria" + (object) Main.rand.Next(int.MaxValue);
|
|
Console.Title = lpWindowName;
|
|
IntPtr window = Main.FindWindow((string) null, lpWindowName);
|
|
if (window != IntPtr.Zero)
|
|
Main.ShowWindow(window, 0);
|
|
}
|
|
else
|
|
Console.Title = "Terraria Server " + Main.versionNumber2;
|
|
Main.dedServ = true;
|
|
Main.showSplash = false;
|
|
this.Initialize();
|
|
label_126:
|
|
if (Main.worldPathName != null)
|
|
goto label_127;
|
|
label_5:
|
|
bool flag1 = true;
|
|
while (flag1)
|
|
{
|
|
Main.LoadWorlds();
|
|
Console.WriteLine(Language.GetTextValue("CLI.Server", (object) Main.versionNumber2));
|
|
Console.WriteLine("");
|
|
for (int index = 0; index < Main.WorldList.Count; ++index)
|
|
Console.WriteLine((index + 1).ToString() + "\t\t" + Main.WorldList[index].Name);
|
|
string textValue1 = Language.GetTextValue("CLI.NewWorld_Command");
|
|
string textValue2 = Language.GetTextValue("CLI.DeleteWorld_Example");
|
|
int num1 = (Math.Max(Main.newWorldName.Length, textValue2.Length) + 1) / 8 + 1;
|
|
string str1 = textValue1 + new string('\t', num1 - textValue1.Length / 8) + Language.GetTextValue("CLI.NewWorld_Description");
|
|
string str2 = textValue2 + new string('\t', num1 - textValue2.Length / 8) + Language.GetTextValue("CLI.DeleteWorld_Description");
|
|
Console.WriteLine(str1);
|
|
Console.WriteLine(str2);
|
|
Console.WriteLine("");
|
|
Console.Write(Language.GetTextValue("CLI.ChooseWorld"));
|
|
string str3 = Console.ReadLine() ?? "";
|
|
try
|
|
{
|
|
Console.Clear();
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
if (str3.StartsWith(Language.GetTextValue("CLI.DeleteWorld_Command") + " "))
|
|
{
|
|
try
|
|
{
|
|
int length = Language.GetTextValue("CLI.DeleteWorld_Command").Length;
|
|
int num2 = Convert.ToInt32(str3.Substring(length + 1)) - 1;
|
|
if (num2 < Main.WorldList.Count)
|
|
{
|
|
Console.WriteLine(Language.GetTextValue("CLI.Server", (object) Main.versionNumber2));
|
|
Console.WriteLine("");
|
|
Console.WriteLine(Language.GetTextValue("CLI.DeleteConfirmation", (object) Main.WorldList[num2].Name));
|
|
Console.Write("({0}/{1}): ", (object) Language.GetTextValue("CLI.ShortYes"), (object) Language.GetTextValue("CLI.ShortNo"));
|
|
if (Console.ReadLine().ToLower() == Language.GetTextValue("CLI.ShortYes").ToLower())
|
|
Main.EraseWorld(num2);
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
try
|
|
{
|
|
Console.Clear();
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (!(str3 == "n"))
|
|
{
|
|
if (!(str3 == "N"))
|
|
{
|
|
try
|
|
{
|
|
int index = Convert.ToInt32(str3) - 1;
|
|
if (index >= 0)
|
|
{
|
|
if (index < Main.WorldList.Count)
|
|
{
|
|
bool flag2 = true;
|
|
while (flag2)
|
|
{
|
|
Console.WriteLine(Language.GetTextValue("CLI.Server", (object) Main.versionNumber2));
|
|
Console.WriteLine("");
|
|
Console.Write(Language.GetTextValue("CLI.SetInitialMaxPlayers"));
|
|
string str4 = Console.ReadLine();
|
|
try
|
|
{
|
|
if (str4 == "")
|
|
str4 = "16";
|
|
int int32 = Convert.ToInt32(str4);
|
|
if (int32 <= (int) byte.MaxValue && int32 >= 1)
|
|
{
|
|
Main.maxNetPlayers = int32;
|
|
flag2 = false;
|
|
}
|
|
flag2 = false;
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
try
|
|
{
|
|
Console.Clear();
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
}
|
|
bool flag3 = true;
|
|
while (flag3)
|
|
{
|
|
Console.WriteLine(Language.GetTextValue("CLI.Server", (object) Main.versionNumber2));
|
|
Console.WriteLine("");
|
|
Console.Write(Language.GetTextValue("CLI.SetInitialPort"));
|
|
string str5 = Console.ReadLine();
|
|
try
|
|
{
|
|
if (str5 == "")
|
|
str5 = "7777";
|
|
int int32 = Convert.ToInt32(str5);
|
|
if (int32 <= (int) ushort.MaxValue)
|
|
{
|
|
Netplay.ListenPort = int32;
|
|
flag3 = false;
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
try
|
|
{
|
|
Console.Clear();
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
}
|
|
bool flag4 = true;
|
|
while (flag4)
|
|
{
|
|
Console.WriteLine(Language.GetTextValue("CLI.Server", (object) Main.versionNumber2));
|
|
Console.WriteLine("");
|
|
Console.Write(Language.GetTextValue("CLI.AutomaticPortForward", (object) Language.GetTextValue("CLI.ShortYes"), (object) Language.GetTextValue("CLI.ShortNo")));
|
|
string str6 = Console.ReadLine();
|
|
try
|
|
{
|
|
if (str6 == "" || str6.ToLower() == Language.GetTextValue("CLI.ShortYes").ToLower() || str6.ToLower() == Language.GetTextValue("CLI.Yes").ToLower())
|
|
{
|
|
Netplay.UseUPNP = true;
|
|
flag4 = false;
|
|
}
|
|
else
|
|
{
|
|
if (!(str6.ToLower() == Language.GetTextValue("CLI.ShortNo").ToLower()))
|
|
{
|
|
if (!(str6.ToLower() == Language.GetTextValue("CLI.No").ToLower()))
|
|
goto label_117;
|
|
}
|
|
Netplay.UseUPNP = false;
|
|
flag4 = false;
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
label_117:
|
|
try
|
|
{
|
|
Console.Clear();
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
}
|
|
Console.WriteLine(Language.GetTextValue("CLI.Server", (object) Main.versionNumber2));
|
|
Console.WriteLine("");
|
|
Console.Write(Language.GetTextValue("CLI.EnterServerPassword"));
|
|
Netplay.ServerPassword = Console.ReadLine();
|
|
Main.ActiveWorldFileData = Main.WorldList[index];
|
|
flag1 = false;
|
|
try
|
|
{
|
|
Console.Clear();
|
|
continue;
|
|
}
|
|
catch
|
|
{
|
|
continue;
|
|
}
|
|
}
|
|
else
|
|
continue;
|
|
}
|
|
else
|
|
continue;
|
|
}
|
|
catch
|
|
{
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
bool flag5 = true;
|
|
while (flag5)
|
|
{
|
|
Console.WriteLine(Language.GetTextValue("CLI.Server", (object) Main.versionNumber2));
|
|
Console.WriteLine("");
|
|
Console.WriteLine("1\t" + Language.GetTextValue("UI.WorldSizeSmall"));
|
|
Console.WriteLine("2\t" + Language.GetTextValue("UI.WorldSizeMedium"));
|
|
Console.WriteLine("3\t" + Language.GetTextValue("UI.WorldSizeLarge"));
|
|
Console.WriteLine("");
|
|
Console.Write(Language.GetTextValue("CLI.ChooseSize"));
|
|
string str7 = Console.ReadLine();
|
|
try
|
|
{
|
|
switch (Convert.ToInt32(str7))
|
|
{
|
|
case 1:
|
|
Main.maxTilesX = 4200;
|
|
Main.maxTilesY = 1200;
|
|
flag5 = false;
|
|
break;
|
|
case 2:
|
|
Main.maxTilesX = 6400;
|
|
Main.maxTilesY = 1800;
|
|
flag5 = false;
|
|
break;
|
|
case 3:
|
|
Main.maxTilesX = 8400;
|
|
Main.maxTilesY = 2400;
|
|
flag5 = false;
|
|
break;
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
try
|
|
{
|
|
Console.Clear();
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
}
|
|
bool flag6 = true;
|
|
while (flag6)
|
|
{
|
|
Console.WriteLine(Language.GetTextValue("CLI.Server", (object) Main.versionNumber2));
|
|
Console.WriteLine("");
|
|
Console.WriteLine("1\t" + Language.GetTextValue("UI.Normal"));
|
|
Console.WriteLine("2\t" + Language.GetTextValue("UI.Expert"));
|
|
Console.WriteLine("3\t" + Language.GetTextValue("UI.Master"));
|
|
Console.WriteLine("4\t" + Language.GetTextValue("UI.Creative"));
|
|
Console.WriteLine("");
|
|
Console.Write(Language.GetTextValue("CLI.ChooseDifficulty"));
|
|
string str8 = Console.ReadLine();
|
|
try
|
|
{
|
|
switch (Convert.ToInt32(str8))
|
|
{
|
|
case 1:
|
|
Main.GameMode = 0;
|
|
flag6 = false;
|
|
break;
|
|
case 2:
|
|
Main.GameMode = 1;
|
|
flag6 = false;
|
|
break;
|
|
case 3:
|
|
Main.GameMode = 2;
|
|
flag6 = false;
|
|
break;
|
|
case 4:
|
|
Main.GameMode = 3;
|
|
flag6 = false;
|
|
break;
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
try
|
|
{
|
|
Console.Clear();
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
}
|
|
if (Main.SettingsUnlock_WorldEvil)
|
|
{
|
|
bool flag7 = true;
|
|
while (flag7)
|
|
{
|
|
Console.WriteLine(Language.GetTextValue("CLI.Server", (object) Main.versionNumber2));
|
|
Console.WriteLine("");
|
|
Console.WriteLine("1\t" + Language.GetTextValue("CLI.Random"));
|
|
Console.WriteLine("2\t" + Language.GetTextValue("CLI.Corrupt"));
|
|
Console.WriteLine("3\t" + Language.GetTextValue("CLI.Crimson"));
|
|
Console.WriteLine("");
|
|
Console.Write(Language.GetTextValue("CLI.ChooseEvil"));
|
|
string str9 = Console.ReadLine();
|
|
try
|
|
{
|
|
switch (Convert.ToInt32(str9))
|
|
{
|
|
case 1:
|
|
WorldGen.WorldGenParam_Evil = -1;
|
|
flag7 = false;
|
|
break;
|
|
case 2:
|
|
WorldGen.WorldGenParam_Evil = 0;
|
|
flag7 = false;
|
|
break;
|
|
case 3:
|
|
WorldGen.WorldGenParam_Evil = 1;
|
|
flag7 = false;
|
|
break;
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
try
|
|
{
|
|
Console.Clear();
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
}
|
|
}
|
|
bool flag8 = true;
|
|
while (flag8)
|
|
{
|
|
Console.WriteLine(Language.GetTextValue("CLI.Server", (object) Main.versionNumber2));
|
|
Console.WriteLine("");
|
|
Console.Write(Language.GetTextValue("CLI.EnterWorldName"));
|
|
Main.newWorldName = Console.ReadLine();
|
|
if (Main.newWorldName != "" && Main.newWorldName != " " && Main.newWorldName != null)
|
|
flag8 = false;
|
|
try
|
|
{
|
|
Console.Clear();
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
}
|
|
string str10 = "";
|
|
bool flag9 = true;
|
|
while (flag9)
|
|
{
|
|
Console.WriteLine(Language.GetTextValue("CLI.Server", (object) Main.versionNumber2));
|
|
Console.WriteLine("");
|
|
Console.Write(Language.GetTextValue("CLI.EnterSeed"));
|
|
str10 = Console.ReadLine();
|
|
if (str10 != null)
|
|
flag9 = false;
|
|
else
|
|
str10 = "";
|
|
try
|
|
{
|
|
Console.Clear();
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
}
|
|
Main.worldName = Main.newWorldName;
|
|
Main.ActiveWorldFileData = WorldFile.CreateMetadata(Main.worldName, SocialAPI.Cloud != null && SocialAPI.Cloud.EnabledByDefault, Main.GameMode);
|
|
string seedText = str10.Trim();
|
|
if (seedText.Length == 0)
|
|
Main.ActiveWorldFileData.SetSeedToRandom();
|
|
else
|
|
Main.ActiveWorldFileData.SetSeed(seedText);
|
|
Main.menuMode = 10;
|
|
GenerationProgress progress = new GenerationProgress();
|
|
Task newWorld = WorldGen.CreateNewWorld(progress);
|
|
while (Main.menuMode == 10)
|
|
{
|
|
if (Main.oldStatusText != Main.statusText && !WorldGen.drunkWorldGen)
|
|
{
|
|
Main.oldStatusText = Main.statusText;
|
|
Console.WriteLine(Main.statusText);
|
|
}
|
|
}
|
|
try
|
|
{
|
|
Console.Clear();
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
while (!newWorld.IsCompleted)
|
|
{
|
|
Main.statusText = string.Format("{0:0.0%} - " + progress.Message + " - {1:0.0%}", (object) progress.TotalProgress, (object) progress.Value);
|
|
if (Main.oldStatusText != Main.statusText)
|
|
{
|
|
Main.oldStatusText = Main.statusText;
|
|
Console.WriteLine(Main.statusText);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
goto label_126;
|
|
label_127:
|
|
if (!(Main.worldPathName == ""))
|
|
{
|
|
try
|
|
{
|
|
Console.Clear();
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
Task task = WorldGen.serverLoadWorld();
|
|
Console.WriteLine(Language.GetTextValue("CLI.Server", (object) Main.versionNumber));
|
|
Console.WriteLine("");
|
|
while (!task.IsCompleted)
|
|
{
|
|
if (WorldFile.LastThrownLoadException == null)
|
|
{
|
|
if ((double) Main.AutogenProgress.TotalProgress != 0.0)
|
|
Main.statusText = string.Format("{0:0.0%} - " + Main.AutogenProgress.Message + " - {1:0.0%}", (object) Main.AutogenProgress.TotalProgress, (object) Main.AutogenProgress.Value);
|
|
if (Main.oldStatusText != Main.statusText)
|
|
{
|
|
Main.oldStatusText = Main.statusText;
|
|
Console.WriteLine(Main.statusText);
|
|
}
|
|
}
|
|
}
|
|
try
|
|
{
|
|
if (WorldFile.LastThrownLoadException == null)
|
|
Console.Clear();
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
if (WorldGen.loadFailed || !WorldGen.loadSuccess)
|
|
{
|
|
Main.WriteFancyWorldLoadErrorToConsole();
|
|
if (!Main.autoShutdown)
|
|
Console.ReadKey();
|
|
this.YouCanSleepNow();
|
|
}
|
|
else
|
|
{
|
|
Console.WriteLine(Language.GetTextValue("CLI.Server", (object) Main.versionNumber));
|
|
Console.WriteLine("");
|
|
Console.WriteLine(Language.GetTextValue("CLI.ListeningOnPort", (object) Netplay.ListenPort));
|
|
Console.WriteLine(Language.GetTextValue("CLI.HelpHint"));
|
|
Console.WriteLine("");
|
|
Console.Title = "Terraria Server: " + Main.worldName;
|
|
Stopwatch stopwatch = new Stopwatch();
|
|
if (!Main.autoShutdown)
|
|
Main.startDedInput();
|
|
stopwatch.Start();
|
|
double num3 = 50.0 / 3.0;
|
|
double num4 = 0.0;
|
|
int num5 = 0;
|
|
new Stopwatch().Start();
|
|
Netplay.StartServer();
|
|
Main.gameMenu = false;
|
|
while (!Netplay.Disconnect)
|
|
{
|
|
TimeSpan elapsed = stopwatch.Elapsed;
|
|
double totalMilliseconds = elapsed.TotalMilliseconds;
|
|
if (totalMilliseconds + num4 >= num3)
|
|
{
|
|
++num5;
|
|
num4 += totalMilliseconds - num3;
|
|
stopwatch.Reset();
|
|
stopwatch.Start();
|
|
if (Main.oldStatusText != Main.statusText)
|
|
{
|
|
Main.oldStatusText = Main.statusText;
|
|
Console.WriteLine(Main.statusText);
|
|
}
|
|
if (Netplay.HasClients)
|
|
this.Update(new GameTime());
|
|
else if (Main.saveTime.IsRunning)
|
|
Main.saveTime.Stop();
|
|
if (Main.OnTickForThirdPartySoftwareOnly != null)
|
|
Main.OnTickForThirdPartySoftwareOnly();
|
|
elapsed = stopwatch.Elapsed;
|
|
double num6 = elapsed.TotalMilliseconds + num4;
|
|
if (num6 < num3)
|
|
{
|
|
int num7 = (int) (num3 - num6) - 1;
|
|
if (num7 > 1)
|
|
{
|
|
Thread.Sleep(num7 - 1);
|
|
if (!Netplay.HasClients)
|
|
{
|
|
num4 = 0.0;
|
|
Thread.Sleep(10);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
Thread.Sleep(0);
|
|
}
|
|
this.YouCanSleepNow();
|
|
}
|
|
}
|
|
else
|
|
goto label_5;
|
|
}
|
|
|
|
private static void WriteFancyWorldLoadErrorToConsole()
|
|
{
|
|
Console.WriteLine();
|
|
Console.WriteLine(WorldFile.LastThrownLoadException.ToString());
|
|
}
|
|
|
|
public static void startDedInput() => new Thread(new ThreadStart(Main.startDedInputCallBack))
|
|
{
|
|
IsBackground = true,
|
|
Name = "Server Input Thread"
|
|
}.Start();
|
|
|
|
public static void startDedInputCallBack()
|
|
{
|
|
while (!Netplay.Disconnect)
|
|
{
|
|
Console.Write(": ");
|
|
string str1 = Console.ReadLine();
|
|
string str2 = str1;
|
|
string lower1 = str1.ToLower();
|
|
try
|
|
{
|
|
if (lower1 == Language.GetTextValue("CLI.Help_Command"))
|
|
{
|
|
Console.WriteLine(Language.GetTextValue("CLI.AvailableCommands"));
|
|
Console.WriteLine("");
|
|
List<string> stringList = new List<string>()
|
|
{
|
|
"Help",
|
|
"Playing",
|
|
"Clear",
|
|
"Exit",
|
|
"ExitNoSave",
|
|
"Save",
|
|
"Kick",
|
|
"Ban",
|
|
"Password",
|
|
"SetPassword",
|
|
"Version",
|
|
"Time",
|
|
"Port",
|
|
"MaxPlayers",
|
|
"Say",
|
|
"MOTD",
|
|
"SetMOTD",
|
|
"Dawn",
|
|
"Noon",
|
|
"Dusk",
|
|
"Midnight",
|
|
"Settle",
|
|
"Seed"
|
|
};
|
|
int num1 = 0;
|
|
for (int index = 0; index < stringList.Count; ++index)
|
|
{
|
|
string str3 = Language.Exists("CLI." + stringList[index] + "_Example") ? Language.GetTextValue("CLI." + stringList[index] + "_Example") : Language.GetTextValue("CLI." + stringList[index] + "_Command");
|
|
if (str3.Length > num1)
|
|
num1 = str3.Length;
|
|
}
|
|
int num2 = (num1 + 1) / 8;
|
|
for (int index = 0; index < stringList.Count; ++index)
|
|
{
|
|
string str4 = Language.Exists("CLI." + stringList[index] + "_Example") ? Language.GetTextValue("CLI." + stringList[index] + "_Example") : Language.GetTextValue("CLI." + stringList[index] + "_Command");
|
|
Console.WriteLine(str4 + new string('\t', num2 - str4.Length / 8) + Language.GetTextValue("CLI." + stringList[index] + "_Description"));
|
|
}
|
|
}
|
|
else if (lower1 == Language.GetTextValue("CLI.Settle_Command"))
|
|
{
|
|
if (!Terraria.Liquid.panicMode)
|
|
Terraria.Liquid.StartPanic();
|
|
else
|
|
Console.WriteLine(Language.GetTextValue("CLI.WaterIsAlreadySettling"));
|
|
}
|
|
else if (lower1 == Language.GetTextValue("CLI.Dawn_Command"))
|
|
{
|
|
Main.dayTime = true;
|
|
Main.time = 0.0;
|
|
NetMessage.SendData(7);
|
|
}
|
|
else if (lower1 == Language.GetTextValue("CLI.Dusk_Command"))
|
|
{
|
|
Main.dayTime = false;
|
|
Main.time = 0.0;
|
|
NetMessage.SendData(7);
|
|
}
|
|
else if (lower1 == Language.GetTextValue("CLI.Noon_Command"))
|
|
{
|
|
Main.dayTime = true;
|
|
Main.time = 27000.0;
|
|
NetMessage.SendData(7);
|
|
}
|
|
else if (lower1 == Language.GetTextValue("CLI.Midnight_Command"))
|
|
{
|
|
Main.dayTime = false;
|
|
Main.time = 16200.0;
|
|
NetMessage.SendData(7);
|
|
}
|
|
else if (lower1 == Language.GetTextValue("CLI.ExitNoSave_Command"))
|
|
Netplay.Disconnect = true;
|
|
else if (lower1 == Language.GetTextValue("CLI.Exit_Command"))
|
|
{
|
|
WorldFile.SaveWorld();
|
|
Netplay.Disconnect = true;
|
|
SocialAPI.Shutdown();
|
|
}
|
|
else if (lower1 == Language.GetTextValue("CLI.FPS_Command"))
|
|
{
|
|
if (!Main.dedServFPS)
|
|
{
|
|
Main.dedServFPS = true;
|
|
Main.fpsTimer.Reset();
|
|
}
|
|
else
|
|
{
|
|
Main.dedServCount1 = 0;
|
|
Main.dedServCount2 = 0;
|
|
Main.dedServFPS = false;
|
|
}
|
|
}
|
|
else if (lower1 == Language.GetTextValue("CLI.Save_Command"))
|
|
WorldFile.SaveWorld();
|
|
else if (lower1 == Language.GetTextValue("CLI.Time_Command"))
|
|
{
|
|
string textValue = Language.GetTextValue("GameUI.TimeAtMorning");
|
|
double time = Main.time;
|
|
if (!Main.dayTime)
|
|
time += 54000.0;
|
|
double num3 = time / 86400.0 * 24.0 - 7.5 - 12.0;
|
|
if (num3 < 0.0)
|
|
num3 += 24.0;
|
|
if (num3 >= 12.0)
|
|
textValue = Language.GetTextValue("GameUI.TimePastMorning");
|
|
int num4 = (int) num3;
|
|
double num5 = (double) (int) ((num3 - (double) num4) * 60.0);
|
|
string str5 = string.Concat((object) num5);
|
|
if (num5 < 10.0)
|
|
str5 = "0" + str5;
|
|
if (num4 > 12)
|
|
num4 -= 12;
|
|
if (num4 == 0)
|
|
num4 = 12;
|
|
Console.WriteLine(Language.GetTextValue("CLI.Time", (object) (num4.ToString() + ":" + str5 + " " + textValue)));
|
|
}
|
|
else if (lower1 == Language.GetTextValue("CLI.MaxPlayers_Command"))
|
|
Console.WriteLine(Language.GetTextValue("CLI.PlayerLimit", (object) Main.maxNetPlayers));
|
|
else if (lower1 == Language.GetTextValue("CLI.Port_Command"))
|
|
Console.WriteLine(Language.GetTextValue("CLI.Port", (object) Netplay.ListenPort));
|
|
else if (lower1 == Language.GetTextValue("CLI.Version_Command"))
|
|
Console.WriteLine(Language.GetTextValue("CLI.Server", (object) Main.versionNumber));
|
|
else if (lower1 == Language.GetTextValue("CLI.Clear_Command"))
|
|
{
|
|
try
|
|
{
|
|
Console.Clear();
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
}
|
|
else if (lower1 == Language.GetTextValue("CLI.Playing_Command"))
|
|
{
|
|
int num = 0;
|
|
for (int index = 0; index < (int) byte.MaxValue; ++index)
|
|
{
|
|
if (Main.player[index].active)
|
|
{
|
|
++num;
|
|
Console.WriteLine(Main.player[index].name + " (" + (object) Netplay.Clients[index].Socket.GetRemoteAddress() + ")");
|
|
}
|
|
}
|
|
switch (num)
|
|
{
|
|
case 0:
|
|
Console.WriteLine(Language.GetTextValue("CLI.NoPlayers"));
|
|
continue;
|
|
case 1:
|
|
Console.WriteLine(Language.GetTextValue("CLI.OnePlayerConnected"));
|
|
continue;
|
|
default:
|
|
Console.WriteLine(Language.GetTextValue("CLI.PlayersConnected", (object) num));
|
|
continue;
|
|
}
|
|
}
|
|
else if (!(lower1 == ""))
|
|
{
|
|
if (lower1 == Language.GetTextValue("CLI.MOTD_Command"))
|
|
{
|
|
if (Main.motd == "")
|
|
Console.WriteLine(Language.GetTextValue("CLI.NoMOTD", (object) Main.worldName));
|
|
else
|
|
Console.WriteLine(Language.GetTextValue("CLI.MOTD", (object) Main.motd));
|
|
}
|
|
else if (lower1.StartsWith(Language.GetTextValue("CLI.SetMOTD_Command") + " "))
|
|
Main.motd = str2.Substring(Language.GetTextValue("CLI.SetMOTD_Command").Length + 1);
|
|
else if (lower1 == Language.GetTextValue("CLI.Password_Command"))
|
|
{
|
|
if (Netplay.ServerPassword == "")
|
|
Console.WriteLine(Language.GetTextValue("CLI.NoPassword"));
|
|
else
|
|
Console.WriteLine(Language.GetTextValue("CLI.Password", (object) Netplay.ServerPassword));
|
|
}
|
|
else if (lower1.StartsWith(Language.GetTextValue("CLI.SetPassword_Command") + " "))
|
|
{
|
|
string str6 = str2.Substring(Language.GetTextValue("CLI.SetPassword_Command").Length + 1);
|
|
if (str6 == "")
|
|
{
|
|
Netplay.ServerPassword = "";
|
|
Console.WriteLine(Language.GetTextValue("CLI.PasswordDisabled"));
|
|
}
|
|
else
|
|
{
|
|
Netplay.ServerPassword = str6;
|
|
Console.WriteLine(Language.GetTextValue("CLI.PasswordSet", (object) Netplay.ServerPassword));
|
|
}
|
|
}
|
|
else if (lower1 == Language.GetTextValue("CLI.Say_Command"))
|
|
Console.WriteLine(Language.GetTextValue("CLI.Say_Usage"));
|
|
else if (lower1.StartsWith(Language.GetTextValue("CLI.Say_Command") + " "))
|
|
{
|
|
int length = Language.GetTextValue("CLI.Say_Command").Length;
|
|
if (lower1.Length <= length + 1)
|
|
{
|
|
Console.WriteLine(Language.GetTextValue("CLI.Say_Usage"));
|
|
}
|
|
else
|
|
{
|
|
string str7 = str2.Substring(length + 1);
|
|
Console.WriteLine(Language.GetTextValue("CLI.ServerMessage", (object) str7));
|
|
ChatHelper.BroadcastChatMessage(NetworkText.FromKey("CLI.ServerMessage", (object) str7), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, 240, 20));
|
|
}
|
|
}
|
|
else if (lower1 == Language.GetTextValue("CLI.Kick_Command"))
|
|
Console.WriteLine(Language.GetTextValue("CLI.Kick_Usage"));
|
|
else if (lower1.StartsWith(Language.GetTextValue("CLI.Kick_Command") + " "))
|
|
{
|
|
int length = Language.GetTextValue("CLI.Kick_Command").Length;
|
|
if (lower1.Length <= length + 1)
|
|
{
|
|
Console.WriteLine(Language.GetTextValue("CLI.Kick_Usage"));
|
|
}
|
|
else
|
|
{
|
|
string lower2 = lower1.Substring(length + 1).ToLower();
|
|
for (int remoteClient = 0; remoteClient < (int) byte.MaxValue; ++remoteClient)
|
|
{
|
|
if (Main.player[remoteClient].active && Main.player[remoteClient].name.ToLower() == lower2)
|
|
NetMessage.SendData(2, remoteClient, text: NetworkText.FromKey("CLI.KickMessage"));
|
|
}
|
|
}
|
|
}
|
|
else if (lower1 == Language.GetTextValue("CLI.Seed_Command"))
|
|
{
|
|
if (Main.ActiveWorldFileData == null || !Main.ActiveWorldFileData.HasValidSeed)
|
|
Console.WriteLine(Language.GetTextValue("CLI.NoValidSeed"));
|
|
else
|
|
Console.WriteLine(Language.GetTextValue("CLI.DisplaySeed", (object) Main.ActiveWorldFileData.GetFullSeedText()));
|
|
}
|
|
else if (lower1 == Language.GetTextValue("CLI.Ban_Command"))
|
|
Console.WriteLine(Language.GetTextValue("CLI.Ban_Usage"));
|
|
else if (lower1.StartsWith(Language.GetTextValue("CLI.Ban_Command") + " "))
|
|
{
|
|
int length = Language.GetTextValue("CLI.Ban_Command").Length;
|
|
if (lower1.Length <= length + 1)
|
|
{
|
|
Console.WriteLine(Language.GetTextValue("CLI.Ban_Usage"));
|
|
}
|
|
else
|
|
{
|
|
string lower3 = lower1.Substring(4).ToLower();
|
|
for (int index = 0; index < (int) byte.MaxValue; ++index)
|
|
{
|
|
if (Main.player[index].active && Main.player[index].name.ToLower() == lower3)
|
|
{
|
|
Netplay.AddBan(index);
|
|
NetMessage.SendData(2, index, text: NetworkText.FromKey("CLI.BanMessage"));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
Console.WriteLine(Language.GetTextValue("CLI.InvalidCommand"));
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
Console.WriteLine(Language.GetTextValue("CLI.InvalidCommand"));
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void Sundialing()
|
|
{
|
|
if (Main.sundialCooldown != 0)
|
|
return;
|
|
if (Main.netMode == 1)
|
|
{
|
|
NetMessage.SendData(51, number: Main.myPlayer, number2: 3f);
|
|
}
|
|
else
|
|
{
|
|
Main.fastForwardTime = true;
|
|
Main.sundialCooldown = 8;
|
|
NetMessage.SendData(7);
|
|
}
|
|
}
|
|
|
|
public static void UpdateTimeRate()
|
|
{
|
|
if (Main.fastForwardTime)
|
|
{
|
|
Main.dayRate = 60;
|
|
Main.desiredWorldTilesUpdateRate = 1;
|
|
}
|
|
else
|
|
{
|
|
int num1 = CreativePowerManager.Instance.GetPower<CreativePowers.FreezeTime>().Enabled ? 1 : 0;
|
|
int targetTimeRate = CreativePowerManager.Instance.GetPower<CreativePowers.ModifyTimeRate>().TargetTimeRate;
|
|
bool flag = Main.CurrentFrameFlags.SleepingPlayersCount == Main.CurrentFrameFlags.ActivePlayersCount && Main.CurrentFrameFlags.SleepingPlayersCount > 0;
|
|
int num2 = targetTimeRate;
|
|
if (!Main.gameMenu & flag)
|
|
num2 *= 5;
|
|
if (num1 != 0)
|
|
num2 = 0;
|
|
Main.dayRate = num2;
|
|
Main.desiredWorldTilesUpdateRate = num2;
|
|
}
|
|
}
|
|
|
|
public Main()
|
|
{
|
|
Main.instance = this;
|
|
Main.UnpausedUpdateSeed = (ulong) Guid.NewGuid().GetHashCode();
|
|
Main.Configuration.Load();
|
|
Main.graphics = new GraphicsDeviceManager(this as Game);
|
|
this.Content.RootDirectory = "Content";
|
|
}
|
|
|
|
private static void SetDisplayMonitor()
|
|
{
|
|
Main.Configuration.Get<string>("Display", "");
|
|
Main.graphics.PreparingDeviceSettings += new EventHandler<PreparingDeviceSettingsEventArgs>(Main.SetMonitorOnce);
|
|
}
|
|
|
|
private static void SetMonitorOnce(object sender, PreparingDeviceSettingsEventArgs e)
|
|
{
|
|
string displayName = Main.Configuration.Get<string>("Display", "");
|
|
GraphicsAdapter graphicsAdapter = GraphicsAdapter.Adapters.Where<GraphicsAdapter>((Func<GraphicsAdapter, bool>) (adapter => adapter.DeviceName == displayName)).FirstOrDefault<GraphicsAdapter>();
|
|
if (graphicsAdapter != null)
|
|
e.GraphicsDeviceInformation.Adapter = graphicsAdapter;
|
|
Main.graphics.PreparingDeviceSettings -= new EventHandler<PreparingDeviceSettingsEventArgs>(Main.SetMonitorOnce);
|
|
}
|
|
|
|
protected void SetTitle()
|
|
{
|
|
this._cachedTitle = Lang.GetRandomGameTitle();
|
|
Platform.Get<IWindowService>().SetUnicodeTitle(this.Window, this._cachedTitle);
|
|
}
|
|
|
|
private static void SetTileValue()
|
|
{
|
|
Main.tileOreFinderPriority[28] = (short) 100;
|
|
Main.tileOreFinderPriority[407] = (short) 150;
|
|
Main.tileOreFinderPriority[404] = (short) 150;
|
|
Main.tileOreFinderPriority[7] = (short) 200;
|
|
Main.tileOreFinderPriority[166] = (short) 210;
|
|
Main.tileOreFinderPriority[6] = (short) 220;
|
|
Main.tileOreFinderPriority[167] = (short) 230;
|
|
Main.tileOreFinderPriority[9] = (short) 240;
|
|
Main.tileOreFinderPriority[168] = (short) 250;
|
|
Main.tileOreFinderPriority[8] = (short) 260;
|
|
Main.tileOreFinderPriority[169] = (short) 270;
|
|
Main.tileOreFinderPriority[22] = (short) 300;
|
|
Main.tileOreFinderPriority[204] = (short) 310;
|
|
Main.tileOreFinderPriority[37] = (short) 400;
|
|
Main.tileOreFinderPriority[21] = (short) 500;
|
|
Main.tileOreFinderPriority[467] = (short) 500;
|
|
Main.tileOreFinderPriority[441] = (short) 500;
|
|
Main.tileOreFinderPriority[468] = (short) 500;
|
|
Main.tileOreFinderPriority[107] = (short) 600;
|
|
Main.tileOreFinderPriority[221] = (short) 610;
|
|
Main.tileOreFinderPriority[108] = (short) 620;
|
|
Main.tileOreFinderPriority[222] = (short) 630;
|
|
Main.tileOreFinderPriority[111] = (short) 640;
|
|
Main.tileOreFinderPriority[223] = (short) 650;
|
|
Main.tileOreFinderPriority[211] = (short) 700;
|
|
Main.tileOreFinderPriority[227] = (short) 750;
|
|
Main.tileOreFinderPriority[12] = (short) 800;
|
|
Main.tileOreFinderPriority[236] = (short) 810;
|
|
}
|
|
|
|
private static void ResetGameCounter() => Main._gameUpdateCount = 0U;
|
|
|
|
protected override void Initialize()
|
|
{
|
|
Main.musicFade[50] = 1f;
|
|
for (int index = 0; index < 10; ++index)
|
|
{
|
|
Main.recentWorld[index] = "";
|
|
Main.recentIP[index] = "";
|
|
Main.recentPort[index] = 0;
|
|
}
|
|
if (Main.rand == null)
|
|
Main.rand = new UnifiedRandom((int) DateTime.Now.Ticks);
|
|
this.SetTitle();
|
|
Main.lo = Main.rand.Next(6);
|
|
this.waterfallManager = new WaterfallManager();
|
|
Main._windowMover = new WindowStateController();
|
|
Main.sittingManager = new AnchoredEntitiesCollection();
|
|
Main.sleepingManager = new AnchoredEntitiesCollection();
|
|
Main.gameTips = new GameTipsDisplay();
|
|
if (Main.player[Main.myPlayer] == null)
|
|
Main.player[Main.myPlayer] = new Player();
|
|
ContentSamples.Initialize();
|
|
PlayerInput.Initialize();
|
|
Main.player[Main.myPlayer] = new Player();
|
|
WorldGen.Hooks.OnWorldLoad += (Action) (() =>
|
|
{
|
|
Main.AmbienceServer = new AmbienceServer();
|
|
Main.LocalGolfState = new GolfState();
|
|
Lighting.Clear();
|
|
});
|
|
PlayerInput.OnActionableInput += (Action) (() =>
|
|
{
|
|
if (Main.LocalGolfState == null)
|
|
return;
|
|
Main.LocalGolfState.CancelBallTracking();
|
|
});
|
|
Main.SceneMetrics = new SceneMetrics(Main.ActiveWorld);
|
|
TimeLogger.Initialize();
|
|
this.LoadContent_TryEnteringHiDef();
|
|
this.ClientInitialize();
|
|
base.Initialize();
|
|
}
|
|
|
|
private void Initialize_AlmostEverything()
|
|
{
|
|
this.TilePaintSystem = new TilePaintSystemV2();
|
|
this.TilesRenderer = new TileDrawing(this.TilePaintSystem);
|
|
this.WallsRenderer = new WallDrawing(this.TilePaintSystem);
|
|
CreativePowerManager.Initialize();
|
|
Main.LocalFavoriteData.Load();
|
|
Main.CloudFavoritesData.Load();
|
|
this.Initialize_Entities();
|
|
Main.FindAnnouncementBoxStatus();
|
|
CustomCurrencyManager.Initialize();
|
|
WingStatsInitializer.Load();
|
|
TileObjectData.Initialize();
|
|
Animation.Initialize();
|
|
Chest.Initialize();
|
|
Wiring.Initialize();
|
|
Framing.Initialize();
|
|
ItemRarity.Initialize();
|
|
TileEntity.InitializeAll();
|
|
Projectile.InitializeStaticThings();
|
|
TorchID.Initialize();
|
|
Main.InitializeItemAnimations();
|
|
BestiaryDatabase database1 = new BestiaryDatabase();
|
|
new BestiaryDatabaseNPCsPopulator().Populate(database1);
|
|
Main.BestiaryDB = database1;
|
|
ContentSamples.RebuildBestiarySortingIDsByBestiaryDatabaseContents(database1);
|
|
Main.BestiaryTracker = new BestiaryUnlocksTracker();
|
|
ItemDropDatabase database2 = new ItemDropDatabase();
|
|
database2.Populate();
|
|
Main.ItemDropsDB = database2;
|
|
database1.Merge(Main.ItemDropsDB);
|
|
Main.PylonSystem = new TeleportPylonsSystem();
|
|
Main.ItemDropSolver = new ItemDropResolver(database2);
|
|
Main.ShopHelper = new ShopHelper();
|
|
CreativeItemSacrificesCatalog.Instance.Initialize();
|
|
Main.BestiaryUI = new UIBestiaryTest(Main.BestiaryDB);
|
|
Main.ContentThatNeedsRenderTargets.Add((INeedRenderTargetContent) Main.MapPlayerRenderer);
|
|
Lighting.Initialize();
|
|
MapHelper.Initialize();
|
|
WorldGen.RandomizeBackgrounds(Main.rand);
|
|
if (Main.treeBGSet1[0] == 173)
|
|
WorldGen.RandomizeBackgrounds(Main.rand);
|
|
if (Main.treeBGSet1[0] == 173)
|
|
WorldGen.RandomizeBackgrounds(Main.rand);
|
|
WorldGen.RandomizeCaveBackgrounds();
|
|
WorldGen.Hooks.Initialize();
|
|
WorldGen.Hooks.OnWorldLoad += new Action(Main.ResetGameCounter);
|
|
Main.bgAlphaFrontLayer[0] = 1f;
|
|
Main.bgAlphaFarBackLayer[0] = 1f;
|
|
this.invBottom = 258;
|
|
Main.Initialize_TileAndNPCData1();
|
|
Main.Initialize_TileAndNPCData2();
|
|
Main.Initialize_Items();
|
|
for (int index = 0; index < Recipe.maxRecipes; ++index)
|
|
{
|
|
Main.recipe[index] = new Recipe();
|
|
Main.availableRecipeY[index] = (float) (65 * index);
|
|
}
|
|
Recipe.SetupRecipes();
|
|
ContentSamples.FixItemsAfterRecipesAreAdded();
|
|
for (int index = 0; index < Terraria.Liquid.maxLiquid; ++index)
|
|
Main.liquid[index] = new Terraria.Liquid();
|
|
for (int index = 0; index < 50000; ++index)
|
|
Main.liquidBuffer[index] = new LiquidBuffer();
|
|
this.shop[0] = new Chest();
|
|
Chest.SetupTravelShop();
|
|
for (int type = 1; type < 100; ++type)
|
|
{
|
|
this.shop[type] = new Chest();
|
|
this.shop[type].SetupShop(type);
|
|
}
|
|
Main.teamColor[0] = Microsoft.Xna.Framework.Color.White;
|
|
Main.teamColor[1] = new Microsoft.Xna.Framework.Color(218, 59, 59);
|
|
Main.teamColor[2] = new Microsoft.Xna.Framework.Color(59, 218, 85);
|
|
Main.teamColor[3] = new Microsoft.Xna.Framework.Color(59, 149, 218);
|
|
Main.teamColor[4] = new Microsoft.Xna.Framework.Color(242, 221, 100);
|
|
Main.teamColor[5] = new Microsoft.Xna.Framework.Color(224, 100, 242);
|
|
for (int Type = 1; Type < 950; ++Type)
|
|
{
|
|
Projectile projectile = new Projectile();
|
|
projectile.SetDefaults(Type);
|
|
if (projectile.hostile)
|
|
Main.projHostile[Type] = true;
|
|
if (projectile.aiStyle == 7)
|
|
Main.projHook[Type] = true;
|
|
}
|
|
Netplay.Initialize();
|
|
NetworkInitializer.Load();
|
|
ChatInitializer.Load();
|
|
if (Main.menuMode == 1)
|
|
Main.LoadPlayers();
|
|
if (Main.skipMenu)
|
|
{
|
|
WorldGen.clearWorld();
|
|
Main.gameMenu = false;
|
|
Main.LoadPlayers();
|
|
Main.PlayerList[0].SetAsActive();
|
|
Main.LoadWorlds();
|
|
WorldGen.GenerateWorld(new UnifiedRandom().Next());
|
|
WorldGen.EveryTileFrame();
|
|
Main.player[Main.myPlayer].Spawn(PlayerSpawnContext.SpawningIntoWorld);
|
|
Main.ActivePlayerFileData.StartPlayTimer();
|
|
Player.Hooks.EnterWorld(Main.myPlayer);
|
|
}
|
|
else
|
|
{
|
|
IntPtr systemMenu = Main.GetSystemMenu(this.Window.Handle, false);
|
|
Main.RemoveMenu(systemMenu, Main.GetMenuItemCount(systemMenu) - 1, 1024);
|
|
}
|
|
SoundID.FillAccessMap();
|
|
Star.SpawnStars();
|
|
ItemSorting.SetupWhiteLists();
|
|
}
|
|
|
|
private void Initialize_Entities()
|
|
{
|
|
for (int index = 0; index < Main.maxMenuItems; ++index)
|
|
this.menuItemScale[index] = 0.8f;
|
|
for (int index = 0; index < 6001; ++index)
|
|
{
|
|
Main.dust[index] = new Dust();
|
|
Main.dust[index].dustIndex = index;
|
|
}
|
|
for (int index = 0; index < 401; ++index)
|
|
Main.item[index] = new Item();
|
|
for (int index = 0; index < 201; ++index)
|
|
{
|
|
Main.npc[index] = new NPC();
|
|
Main.npc[index].whoAmI = index;
|
|
}
|
|
for (int index = 0; index < 256; ++index)
|
|
Main.player[index] = new Player();
|
|
for (int index = 0; index < 1001; ++index)
|
|
Main.projectile[index] = new Projectile();
|
|
for (int index = 0; index < 601; ++index)
|
|
Main.gore[index] = new Gore();
|
|
for (int index = 0; index < Main.maxRain + 1; ++index)
|
|
Main.rain[index] = new Rain();
|
|
for (int index = 0; index < 200; ++index)
|
|
Main.cloud[index] = new Cloud();
|
|
for (int index = 0; index < 100; ++index)
|
|
Main.combatText[index] = new CombatText();
|
|
for (int index = 0; index < 20; ++index)
|
|
Main.popupText[index] = new PopupText();
|
|
}
|
|
|
|
private static void Initialize_Items()
|
|
{
|
|
for (int Type = 0; Type < 5045; ++Type)
|
|
{
|
|
Item obj = new Item();
|
|
obj.SetDefaults(Type);
|
|
if (obj.headSlot > 0)
|
|
Item.headType[obj.headSlot] = obj.type;
|
|
if (obj.bodySlot > 0)
|
|
Item.bodyType[obj.bodySlot] = obj.type;
|
|
if (obj.legSlot > 0)
|
|
Item.legType[obj.legSlot] = obj.type;
|
|
switch (obj.type)
|
|
{
|
|
case 683:
|
|
case 723:
|
|
case 726:
|
|
case 739:
|
|
case 740:
|
|
case 741:
|
|
case 742:
|
|
case 743:
|
|
case 744:
|
|
case 788:
|
|
case 1296:
|
|
case 1308:
|
|
case 1326:
|
|
case 1444:
|
|
case 1445:
|
|
case 1446:
|
|
case 1801:
|
|
case 1930:
|
|
case 1931:
|
|
case 2188:
|
|
case 2750:
|
|
case 3006:
|
|
case 3051:
|
|
case 3209:
|
|
case 3210:
|
|
case 3377:
|
|
case 3476:
|
|
case 3569:
|
|
case 3571:
|
|
case 3787:
|
|
case 3852:
|
|
case 3870:
|
|
case 4062:
|
|
Item.staff[obj.type] = true;
|
|
break;
|
|
case 1827:
|
|
case 3245:
|
|
Item.claw[obj.type] = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
private static void Initialize_TileAndNPCData2()
|
|
{
|
|
Main.critterCage = true;
|
|
for (int index = 0; index < 3600; ++index)
|
|
Main.AnimateTiles_CritterCages();
|
|
Main.critterCage = false;
|
|
Main.tileBlockLight[549] = true;
|
|
Main.tileBrick[477] = true;
|
|
Main.tileSolid[477] = true;
|
|
Main.tileBlockLight[477] = true;
|
|
Main.tileBrick[492] = true;
|
|
Main.tileSolid[492] = true;
|
|
Main.tileBlockLight[492] = true;
|
|
Main.tileBrick[1] = true;
|
|
Main.tileBrick[54] = true;
|
|
Main.tileBrick[118] = true;
|
|
Main.tileBrick[119] = true;
|
|
Main.tileBrick[120] = true;
|
|
Main.tileBrick[121] = true;
|
|
Main.tileBrick[122] = true;
|
|
Main.tileBrick[140] = true;
|
|
Main.tileBrick[148] = true;
|
|
Main.tileBrick[150] = true;
|
|
Main.tileBrick[151] = true;
|
|
Main.tileBrick[152] = true;
|
|
Main.tileBrick[30] = true;
|
|
Main.tileBrick[38] = true;
|
|
Main.tileBrick[39] = true;
|
|
Main.tileBrick[41] = true;
|
|
Main.tileBrick[43] = true;
|
|
Main.tileBrick[44] = true;
|
|
Main.tileBrick[481] = true;
|
|
Main.tileBrick[482] = true;
|
|
Main.tileBrick[483] = true;
|
|
Main.tileBrick[45] = true;
|
|
Main.tileBrick[46] = true;
|
|
Main.tileBrick[47] = true;
|
|
Main.tileBrick[75] = true;
|
|
Main.tileBrick[76] = true;
|
|
Main.tileBrick[160] = true;
|
|
Main.tileBrick[2] = true;
|
|
Main.tileBrick[199] = true;
|
|
Main.tileBrick[23] = true;
|
|
Main.tileBrick[60] = true;
|
|
Main.tileBrick[70] = true;
|
|
Main.tileBrick[109] = true;
|
|
Main.tileBrick[53] = true;
|
|
Main.tileBrick[116] = true;
|
|
Main.tileBrick[234] = true;
|
|
Main.tileBrick[112] = true;
|
|
Main.tileBrick[147] = true;
|
|
Main.tileBrick[153] = true;
|
|
Main.tileBrick[154] = true;
|
|
Main.tileBrick[155] = true;
|
|
Main.tileBrick[156] = true;
|
|
Main.tileBrick[157] = true;
|
|
Main.tileBrick[158] = true;
|
|
Main.tileBrick[159] = true;
|
|
Main.tileBrick[273] = true;
|
|
Main.tileBrick[274] = true;
|
|
Main.tileMergeDirt[202] = true;
|
|
Main.tileBrick[202] = true;
|
|
Main.tileSolid[202] = true;
|
|
Main.tileBlockLight[202] = true;
|
|
Main.tileMergeDirt[498] = true;
|
|
Main.tileBrick[161] = true;
|
|
Main.tileBlockLight[161] = true;
|
|
Main.tileBlockLight[163] = true;
|
|
Main.tileBlockLight[164] = true;
|
|
Main.tileSolid[188] = true;
|
|
Main.tileBlockLight[188] = true;
|
|
Main.tileBrick[188] = true;
|
|
Main.tileMergeDirt[188] = true;
|
|
Main.tileBrick[179] = true;
|
|
Main.tileSolid[179] = true;
|
|
Main.tileBlockLight[179] = true;
|
|
Main.tileMoss[179] = true;
|
|
Main.tileBrick[381] = true;
|
|
Main.tileSolid[381] = true;
|
|
Main.tileBlockLight[381] = true;
|
|
Main.tileMoss[381] = true;
|
|
Main.tileBrick[534] = true;
|
|
Main.tileSolid[534] = true;
|
|
Main.tileBlockLight[534] = true;
|
|
Main.tileMoss[534] = true;
|
|
Main.tileBrick[536] = true;
|
|
Main.tileSolid[536] = true;
|
|
Main.tileBlockLight[536] = true;
|
|
Main.tileMoss[536] = true;
|
|
Main.tileBrick[539] = true;
|
|
Main.tileSolid[539] = true;
|
|
Main.tileBlockLight[539] = true;
|
|
Main.tileMoss[539] = true;
|
|
Main.tileBrick[180] = true;
|
|
Main.tileSolid[180] = true;
|
|
Main.tileBlockLight[180] = true;
|
|
Main.tileMoss[180] = true;
|
|
Main.tileBrick[181] = true;
|
|
Main.tileSolid[181] = true;
|
|
Main.tileBlockLight[181] = true;
|
|
Main.tileMoss[181] = true;
|
|
Main.tileBrick[182] = true;
|
|
Main.tileSolid[182] = true;
|
|
Main.tileBlockLight[182] = true;
|
|
Main.tileMoss[182] = true;
|
|
Main.tileBrick[183] = true;
|
|
Main.tileSolid[183] = true;
|
|
Main.tileBlockLight[183] = true;
|
|
Main.tileMoss[183] = true;
|
|
Main.tileBrick[512] = true;
|
|
Main.tileSolid[512] = true;
|
|
Main.tileBlockLight[512] = true;
|
|
Main.tileBrick[513] = true;
|
|
Main.tileSolid[513] = true;
|
|
Main.tileBlockLight[513] = true;
|
|
Main.tileBrick[514] = true;
|
|
Main.tileSolid[514] = true;
|
|
Main.tileBlockLight[514] = true;
|
|
Main.tileBrick[515] = true;
|
|
Main.tileSolid[515] = true;
|
|
Main.tileBlockLight[515] = true;
|
|
Main.tileBrick[516] = true;
|
|
Main.tileSolid[516] = true;
|
|
Main.tileBlockLight[516] = true;
|
|
Main.tileBrick[517] = true;
|
|
Main.tileSolid[517] = true;
|
|
Main.tileBlockLight[517] = true;
|
|
Main.tileLighted[517] = true;
|
|
Main.tileBrick[535] = true;
|
|
Main.tileSolid[535] = true;
|
|
Main.tileBlockLight[535] = true;
|
|
Main.tileLighted[535] = true;
|
|
Main.tileBrick[537] = true;
|
|
Main.tileSolid[537] = true;
|
|
Main.tileBlockLight[537] = true;
|
|
Main.tileLighted[537] = true;
|
|
Main.tileBrick[540] = true;
|
|
Main.tileSolid[540] = true;
|
|
Main.tileBlockLight[540] = true;
|
|
Main.tileLighted[540] = true;
|
|
Main.tileLighted[592] = true;
|
|
Main.tileMergeDirt[177] = true;
|
|
Main.tileMergeDirt[190] = true;
|
|
Main.tileSolid[196] = true;
|
|
Main.tileSolid[197] = true;
|
|
Main.tileMergeDirt[197] = true;
|
|
Main.tileBlockLight[197] = true;
|
|
Main.tileNoSunLight[197] = true;
|
|
Main.tileBrick[175] = true;
|
|
Main.tileSolid[175] = true;
|
|
Main.tileBlockLight[175] = true;
|
|
Main.tileBrick[176] = true;
|
|
Main.tileSolid[176] = true;
|
|
Main.tileBlockLight[176] = true;
|
|
Main.tileBrick[177] = true;
|
|
Main.tileSolid[177] = true;
|
|
Main.tileBlockLight[177] = true;
|
|
Main.tileBrick[225] = true;
|
|
Main.tileBrick[229] = true;
|
|
Main.tileShine[221] = 925;
|
|
Main.tileShine[222] = 875;
|
|
Main.tileShine[223] = 825;
|
|
Main.tileShine2[221] = true;
|
|
Main.tileShine2[222] = true;
|
|
Main.tileShine2[223] = true;
|
|
Main.tileMergeDirt[175] = true;
|
|
Main.tileMergeDirt[176] = true;
|
|
Main.tileMergeDirt[177] = true;
|
|
Main.tileMergeDirt[208] = true;
|
|
Main.tileBrick[162] = true;
|
|
Main.tileSolid[162] = true;
|
|
Main.tileBlockLight[162] = false;
|
|
Main.tileBrick[163] = true;
|
|
Main.tileSolid[163] = true;
|
|
Main.tileBrick[164] = true;
|
|
Main.tileSolid[164] = true;
|
|
Main.tileShine2[6] = true;
|
|
Main.tileShine2[7] = true;
|
|
Main.tileShine2[8] = true;
|
|
Main.tileShine2[9] = true;
|
|
Main.tileShine2[166] = true;
|
|
Main.tileShine2[167] = true;
|
|
Main.tileShine2[168] = true;
|
|
Main.tileShine2[169] = true;
|
|
Main.tileShine2[12] = true;
|
|
Main.tileShine2[21] = true;
|
|
Main.tileShine2[467] = true;
|
|
Main.tileShine2[441] = true;
|
|
Main.tileShine2[468] = true;
|
|
Main.tileShine2[22] = true;
|
|
Main.tileShine2[25] = true;
|
|
Main.tileShine2[45] = true;
|
|
Main.tileShine2[46] = true;
|
|
Main.tileShine2[47] = true;
|
|
Main.tileShine2[63] = true;
|
|
Main.tileShine2[64] = true;
|
|
Main.tileShine2[65] = true;
|
|
Main.tileShine2[66] = true;
|
|
Main.tileShine2[67] = true;
|
|
Main.tileShine2[68] = true;
|
|
Main.tileShine2[566] = true;
|
|
Main.tileShine2[107] = true;
|
|
Main.tileShine2[108] = true;
|
|
Main.tileShine2[111] = true;
|
|
Main.tileShine2[121] = true;
|
|
Main.tileShine2[122] = true;
|
|
Main.tileShine2[117] = true;
|
|
Main.tileShine2[211] = true;
|
|
Main.tileShine[129] = 300;
|
|
Main.tileNoFail[81] = true;
|
|
Main.tileCracked[481] = true;
|
|
Main.tileCracked[482] = true;
|
|
Main.tileCracked[483] = true;
|
|
Main.tileNoFail[481] = true;
|
|
Main.tileNoFail[482] = true;
|
|
Main.tileNoFail[483] = true;
|
|
Main.tileNoFail[330] = true;
|
|
Main.tileNoFail[331] = true;
|
|
Main.tileNoFail[332] = true;
|
|
Main.tileNoFail[333] = true;
|
|
Main.tileNoFail[254] = true;
|
|
Main.tileNoFail[324] = true;
|
|
Main.tileNoFail[129] = true;
|
|
Main.tileNoFail[192] = true;
|
|
Main.tileHammer[26] = true;
|
|
Main.tileHammer[31] = true;
|
|
Main.tileAxe[5] = true;
|
|
Main.tileAxe[72] = true;
|
|
Main.tileAxe[80] = true;
|
|
Main.tileAxe[488] = true;
|
|
Main.tileAxe[323] = true;
|
|
Main.tileAxe[596] = true;
|
|
Main.tileAxe[616] = true;
|
|
Main.tileAxe[589] = true;
|
|
Main.tileAxe[584] = true;
|
|
Main.tileAxe[588] = true;
|
|
Main.tileAxe[586] = true;
|
|
Main.tileAxe[587] = true;
|
|
Main.tileAxe[585] = true;
|
|
Main.tileAxe[583] = true;
|
|
Main.tileBrick[59] = true;
|
|
Main.tileBrick[234] = true;
|
|
Main.tileSolid[234] = true;
|
|
Main.tileMergeDirt[234] = true;
|
|
Main.tileSand[53] = true;
|
|
Main.tileSand[112] = true;
|
|
Main.tileSand[116] = true;
|
|
Main.tileSand[234] = true;
|
|
Main.tileFrameImportant[571] = true;
|
|
Main.tileLavaDeath[571] = true;
|
|
Main.tileFrameImportant[579] = true;
|
|
Main.tileLavaDeath[579] = true;
|
|
Main.tileFrameImportant[591] = true;
|
|
Main.tileLavaDeath[591] = true;
|
|
Main.tileFrameImportant[592] = true;
|
|
Main.tileLavaDeath[592] = false;
|
|
Main.tileFrameImportant[538] = true;
|
|
Main.tileLavaDeath[538] = true;
|
|
Main.tileFrameImportant[544] = true;
|
|
Main.tileLavaDeath[544] = true;
|
|
Main.tileFrameImportant[550] = true;
|
|
Main.tileLavaDeath[550] = true;
|
|
Main.tileFrameImportant[551] = true;
|
|
Main.tileLavaDeath[551] = true;
|
|
Main.tileFrameImportant[533] = true;
|
|
Main.tileLavaDeath[533] = true;
|
|
Main.tileFrameImportant[553] = true;
|
|
Main.tileLavaDeath[553] = true;
|
|
Main.tileFrameImportant[554] = true;
|
|
Main.tileLavaDeath[554] = true;
|
|
Main.tileFrameImportant[555] = true;
|
|
Main.tileLavaDeath[555] = true;
|
|
Main.tileFrameImportant[556] = true;
|
|
Main.tileLavaDeath[556] = true;
|
|
Main.tileFrameImportant[558] = true;
|
|
Main.tileLavaDeath[558] = true;
|
|
Main.tileFrameImportant[559] = true;
|
|
Main.tileLavaDeath[559] = true;
|
|
Main.tileFrameImportant[599] = true;
|
|
Main.tileLavaDeath[599] = true;
|
|
Main.tileFrameImportant[600] = true;
|
|
Main.tileLavaDeath[600] = true;
|
|
Main.tileFrameImportant[601] = true;
|
|
Main.tileLavaDeath[601] = true;
|
|
Main.tileFrameImportant[602] = true;
|
|
Main.tileLavaDeath[602] = true;
|
|
Main.tileFrameImportant[603] = true;
|
|
Main.tileLavaDeath[603] = true;
|
|
Main.tileFrameImportant[604] = true;
|
|
Main.tileLavaDeath[604] = true;
|
|
Main.tileFrameImportant[605] = true;
|
|
Main.tileLavaDeath[605] = true;
|
|
Main.tileFrameImportant[606] = true;
|
|
Main.tileLavaDeath[606] = true;
|
|
Main.tileFrameImportant[607] = true;
|
|
Main.tileLavaDeath[607] = true;
|
|
Main.tileFrameImportant[608] = true;
|
|
Main.tileLavaDeath[608] = true;
|
|
Main.tileFrameImportant[609] = true;
|
|
Main.tileLavaDeath[609] = true;
|
|
Main.tileFrameImportant[610] = true;
|
|
Main.tileLavaDeath[610] = true;
|
|
Main.tileFrameImportant[611] = true;
|
|
Main.tileLavaDeath[611] = true;
|
|
Main.tileFrameImportant[612] = true;
|
|
Main.tileLavaDeath[612] = true;
|
|
Main.tileFrameImportant[568] = true;
|
|
Main.tileNoAttach[568] = true;
|
|
Main.tileLavaDeath[568] = true;
|
|
Main.tileLighted[568] = true;
|
|
Main.tileFrameImportant[569] = true;
|
|
Main.tileNoAttach[569] = true;
|
|
Main.tileLavaDeath[569] = true;
|
|
Main.tileLighted[569] = true;
|
|
Main.tileFrameImportant[570] = true;
|
|
Main.tileNoAttach[570] = true;
|
|
Main.tileLavaDeath[570] = true;
|
|
Main.tileLighted[570] = true;
|
|
Main.tileFrameImportant[580] = true;
|
|
Main.tileNoAttach[580] = true;
|
|
Main.tileLavaDeath[580] = true;
|
|
Main.tileLighted[580] = true;
|
|
Main.tileFrameImportant[582] = true;
|
|
Main.tileLavaDeath[582] = true;
|
|
Main.tileLighted[582] = true;
|
|
Main.tileFrameImportant[619] = true;
|
|
Main.tileLavaDeath[619] = true;
|
|
Main.tileLighted[619] = true;
|
|
Main.tileFrameImportant[620] = true;
|
|
Main.tileNoAttach[620] = true;
|
|
Main.tileLavaDeath[620] = true;
|
|
Main.tileLighted[620] = true;
|
|
Main.tileFrameImportant[572] = true;
|
|
Main.tileNoAttach[572] = true;
|
|
Main.tileLavaDeath[572] = true;
|
|
Main.tileLighted[572] = true;
|
|
Main.tileFrameImportant[560] = true;
|
|
Main.tileLavaDeath[560] = true;
|
|
Main.tileFrameImportant[564] = true;
|
|
Main.tileNoAttach[564] = true;
|
|
Main.tileLavaDeath[564] = true;
|
|
Main.tileLighted[564] = true;
|
|
Main.tileFrameImportant[567] = true;
|
|
Main.tileLavaDeath[567] = true;
|
|
Main.tileFrameImportant[565] = true;
|
|
Main.tileNoAttach[565] = true;
|
|
Main.tileLavaDeath[565] = true;
|
|
Main.tileFrameImportant[593] = true;
|
|
Main.tileNoAttach[593] = true;
|
|
Main.tileLavaDeath[593] = false;
|
|
Main.tileLighted[593] = true;
|
|
Main.tileFrameImportant[594] = true;
|
|
Main.tileNoAttach[594] = true;
|
|
Main.tileLavaDeath[594] = false;
|
|
Main.tileLighted[594] = true;
|
|
Main.tileLighted[548] = true;
|
|
Main.tileLighted[613] = true;
|
|
Main.tileLighted[614] = true;
|
|
Main.tileFrameImportant[518] = true;
|
|
Main.tileCut[518] = true;
|
|
Main.tileNoFail[518] = true;
|
|
Main.tileFrameImportant[519] = true;
|
|
Main.tileCut[519] = true;
|
|
Main.tileNoFail[519] = true;
|
|
Main.tileLighted[519] = true;
|
|
Main.tileFrameImportant[549] = true;
|
|
Main.tileCut[549] = true;
|
|
Main.tileNoFail[549] = true;
|
|
Main.tileFrameImportant[529] = true;
|
|
Main.tileCut[529] = true;
|
|
Main.tileNoFail[529] = true;
|
|
Main.tileLavaDeath[529] = true;
|
|
Main.tileFrameImportant[530] = true;
|
|
Main.tileNoFail[530] = true;
|
|
Main.tileLavaDeath[530] = true;
|
|
Main.tileFrameImportant[233] = true;
|
|
Main.tileFrameImportant[485] = true;
|
|
Main.tileLighted[215] = true;
|
|
Main.tileFrameImportant[227] = true;
|
|
Main.tileFrameImportant[228] = true;
|
|
Main.tileFrameImportant[231] = true;
|
|
Main.tileCut[231] = true;
|
|
Main.tileFrameImportant[216] = true;
|
|
Main.tileFrameImportant[217] = true;
|
|
Main.tileFrameImportant[218] = true;
|
|
Main.tileFrameImportant[219] = true;
|
|
Main.tileFrameImportant[220] = true;
|
|
Main.tileFrameImportant[338] = true;
|
|
Main.tileFrameImportant[453] = true;
|
|
Main.tileFrameImportant[456] = true;
|
|
Main.tileFrameImportant[165] = true;
|
|
Main.tileFrameImportant[209] = true;
|
|
Main.tileFrameImportant[215] = true;
|
|
Main.tileFrameImportant[210] = true;
|
|
Main.tileFrameImportant[212] = true;
|
|
Main.tileFrameImportant[207] = true;
|
|
Main.tileFrameImportant[178] = true;
|
|
Main.tileFrameImportant[184] = true;
|
|
Main.tileFrameImportant[185] = true;
|
|
Main.tileFrameImportant[186] = true;
|
|
Main.tileFrameImportant[187] = true;
|
|
Main.tileFrameImportant[173] = true;
|
|
Main.tileFrameImportant[174] = true;
|
|
Main.tileLighted[173] = true;
|
|
Main.tileLighted[174] = true;
|
|
Main.tileFrameImportant[139] = true;
|
|
Main.tileLighted[160] = true;
|
|
Main.tileLighted[149] = true;
|
|
Main.tileFrameImportant[149] = true;
|
|
Main.tileFrameImportant[142] = true;
|
|
Main.tileFrameImportant[143] = true;
|
|
Main.tileFrameImportant[144] = true;
|
|
Main.tileStone[131] = true;
|
|
Main.tileFrameImportant[136] = true;
|
|
Main.tileFrameImportant[137] = true;
|
|
Main.tileFrameImportant[138] = true;
|
|
Main.tileFrameImportant[484] = true;
|
|
Main.tileLavaDeath[484] = true;
|
|
Main.tileNoFail[484] = true;
|
|
Main.tileBlockLight[137] = true;
|
|
Main.tileSolid[137] = true;
|
|
Main.tileBlockLight[160] = true;
|
|
Main.tileSolid[160] = true;
|
|
Main.tileMergeDirt[160] = true;
|
|
Main.tileBlockLight[161] = true;
|
|
Main.tileSolid[161] = true;
|
|
Main.tileBlockLight[145] = true;
|
|
Main.tileSolid[145] = true;
|
|
Main.tileMergeDirt[145] = true;
|
|
Main.tileBlockLight[146] = true;
|
|
Main.tileSolid[146] = true;
|
|
Main.tileMergeDirt[146] = true;
|
|
Main.tileBlockLight[147] = true;
|
|
Main.tileSolid[147] = true;
|
|
Main.tileBlockLight[148] = true;
|
|
Main.tileSolid[148] = true;
|
|
Main.tileMergeDirt[148] = true;
|
|
Main.tileSolid[138] = true;
|
|
Main.tileSolid[484] = true;
|
|
Main.tileCut[484] = true;
|
|
Main.tileBlockLight[140] = true;
|
|
Main.tileSolid[140] = true;
|
|
Main.tileBlockLight[151] = true;
|
|
Main.tileSolid[151] = true;
|
|
Main.tileMergeDirt[151] = true;
|
|
Main.tileBlockLight[152] = true;
|
|
Main.tileSolid[152] = true;
|
|
Main.tileMergeDirt[152] = true;
|
|
Main.tileBlockLight[153] = true;
|
|
Main.tileSolid[153] = true;
|
|
Main.tileMergeDirt[153] = true;
|
|
Main.tileBlockLight[154] = true;
|
|
Main.tileSolid[154] = true;
|
|
Main.tileMergeDirt[154] = true;
|
|
Main.tileBlockLight[155] = true;
|
|
Main.tileSolid[155] = true;
|
|
Main.tileMergeDirt[155] = true;
|
|
Main.tileBlockLight[156] = true;
|
|
Main.tileSolid[156] = true;
|
|
Main.tileMergeDirt[156] = true;
|
|
Main.tileMergeDirt[150] = true;
|
|
Main.tileBlockLight[157] = true;
|
|
Main.tileSolid[157] = true;
|
|
Main.tileMergeDirt[157] = true;
|
|
Main.tileBlockLight[158] = true;
|
|
Main.tileSolid[158] = true;
|
|
Main.tileMergeDirt[158] = true;
|
|
Main.tileBlockLight[159] = true;
|
|
Main.tileSolid[159] = true;
|
|
Main.tileMergeDirt[159] = true;
|
|
Main.tileFrameImportant[320] = true;
|
|
Main.tileFrameImportant[49] = true;
|
|
Main.tileShine[22] = 1150;
|
|
Main.tileShine[6] = 1150;
|
|
Main.tileShine[7] = 1100;
|
|
Main.tileShine[8] = 1000;
|
|
Main.tileShine[9] = 1050;
|
|
Main.tileShine[166] = 1125;
|
|
Main.tileShine[167] = 1075;
|
|
Main.tileShine[168] = 1025;
|
|
Main.tileShine[169] = 975;
|
|
Main.tileShine[617] = 400;
|
|
Main.tileShine[178] = 500;
|
|
Main.tileShine2[178] = true;
|
|
Main.tileShine[12] = 300;
|
|
Main.tileShine[21] = 1200;
|
|
Main.tileShine[467] = 1200;
|
|
Main.tileShine[441] = 1200;
|
|
Main.tileShine[468] = 1200;
|
|
Main.tileShine[63] = 900;
|
|
Main.tileShine[64] = 900;
|
|
Main.tileShine[65] = 900;
|
|
Main.tileShine[66] = 900;
|
|
Main.tileShine[67] = 900;
|
|
Main.tileShine[68] = 900;
|
|
Main.tileShine[566] = 900;
|
|
Main.tileShine[45] = 1900;
|
|
Main.tileShine[46] = 2000;
|
|
Main.tileShine[47] = 2100;
|
|
Main.tileShine[122] = 1800;
|
|
Main.tileShine[121] = 1850;
|
|
Main.tileShine[125] = 600;
|
|
Main.tileShine[109] = 9000;
|
|
Main.tileShine[110] = 9000;
|
|
Main.tileShine[116] = 9000;
|
|
Main.tileShine[117] = 9000;
|
|
Main.tileShine[118] = 8000;
|
|
Main.tileShine[107] = 950;
|
|
Main.tileShine[108] = 900;
|
|
Main.tileShine[111] = 850;
|
|
Main.tileShine[211] = 500;
|
|
Main.tileLighted[4] = true;
|
|
Main.tileLighted[17] = true;
|
|
Main.tileLighted[133] = true;
|
|
Main.tileLighted[31] = true;
|
|
Main.tileLighted[33] = true;
|
|
Main.tileLighted[34] = true;
|
|
Main.tileLighted[35] = true;
|
|
Main.tileLighted[37] = true;
|
|
Main.tileLighted[42] = true;
|
|
Main.tileLighted[49] = true;
|
|
Main.tileLighted[58] = true;
|
|
Main.tileLighted[61] = true;
|
|
Main.tileLighted[70] = true;
|
|
Main.tileLighted[71] = true;
|
|
Main.tileLighted[72] = true;
|
|
Main.tileLighted[76] = true;
|
|
Main.tileLighted[77] = true;
|
|
Main.tileLighted[19] = true;
|
|
Main.tileLighted[22] = true;
|
|
Main.tileLighted[26] = true;
|
|
Main.tileLighted[83] = true;
|
|
Main.tileLighted[84] = true;
|
|
Main.tileLighted[92] = true;
|
|
Main.tileLighted[93] = true;
|
|
Main.tileLighted[95] = true;
|
|
Main.tileLighted[98] = true;
|
|
Main.tileLighted[100] = true;
|
|
Main.tileLighted[109] = true;
|
|
Main.tileLighted[125] = true;
|
|
Main.tileLighted[126] = true;
|
|
Main.tileLighted[129] = true;
|
|
Main.tileLighted[140] = true;
|
|
Main.tileLighted[270] = true;
|
|
Main.tileLighted[271] = true;
|
|
Main.tileLighted[581] = true;
|
|
Main.tileLighted[578] = true;
|
|
Main.tileMergeDirt[1] = true;
|
|
Main.tileMergeDirt[6] = true;
|
|
Main.tileMergeDirt[7] = true;
|
|
Main.tileMergeDirt[8] = true;
|
|
Main.tileMergeDirt[9] = true;
|
|
Main.tileMergeDirt[166] = true;
|
|
Main.tileMergeDirt[167] = true;
|
|
Main.tileMergeDirt[168] = true;
|
|
Main.tileMergeDirt[169] = true;
|
|
Main.tileMergeDirt[22] = true;
|
|
Main.tileMergeDirt[25] = true;
|
|
Main.tileMergeDirt[30] = true;
|
|
Main.tileMergeDirt[37] = true;
|
|
Main.tileMergeDirt[38] = true;
|
|
Main.tileMergeDirt[40] = true;
|
|
Main.tileMergeDirt[53] = true;
|
|
Main.tileMergeDirt[56] = true;
|
|
Main.tileMergeDirt[107] = true;
|
|
Main.tileMergeDirt[108] = true;
|
|
Main.tileMergeDirt[111] = true;
|
|
Main.tileMergeDirt[112] = true;
|
|
Main.tileMergeDirt[116] = true;
|
|
Main.tileMergeDirt[117] = true;
|
|
Main.tileMergeDirt[123] = true;
|
|
Main.tileMergeDirt[140] = true;
|
|
Main.tileMergeDirt[39] = true;
|
|
Main.tileMergeDirt[122] = true;
|
|
Main.tileMergeDirt[121] = true;
|
|
Main.tileMergeDirt[120] = true;
|
|
Main.tileMergeDirt[119] = true;
|
|
Main.tileMergeDirt[118] = true;
|
|
Main.tileMergeDirt[47] = true;
|
|
Main.tileMergeDirt[46] = true;
|
|
Main.tileMergeDirt[45] = true;
|
|
Main.tileMergeDirt[41] = true;
|
|
Main.tileMergeDirt[43] = true;
|
|
Main.tileMergeDirt[44] = true;
|
|
Main.tileMergeDirt[481] = true;
|
|
Main.tileMergeDirt[482] = true;
|
|
Main.tileMergeDirt[483] = true;
|
|
Main.tileFrameImportant[380] = true;
|
|
Main.tileFrameImportant[201] = true;
|
|
Main.tileFrameImportant[3] = true;
|
|
Main.tileFrameImportant[4] = true;
|
|
Main.tileFrameImportant[5] = true;
|
|
Main.tileFrameImportant[10] = true;
|
|
Main.tileFrameImportant[11] = true;
|
|
Main.tileFrameImportant[12] = true;
|
|
Main.tileFrameImportant[13] = true;
|
|
Main.tileFrameImportant[14] = true;
|
|
Main.tileFrameImportant[469] = true;
|
|
Main.tileFrameImportant[486] = true;
|
|
Main.tileFrameImportant[488] = true;
|
|
Main.tileFrameImportant[487] = true;
|
|
Main.tileFrameImportant[489] = true;
|
|
Main.tileFrameImportant[490] = true;
|
|
Main.tileFrameImportant[15] = true;
|
|
Main.tileFrameImportant[497] = true;
|
|
Main.tileFrameImportant[16] = true;
|
|
Main.tileFrameImportant[17] = true;
|
|
Main.tileFrameImportant[18] = true;
|
|
Main.tileFrameImportant[19] = true;
|
|
Main.tileFrameImportant[20] = true;
|
|
Main.tileFrameImportant[21] = true;
|
|
Main.tileFrameImportant[467] = true;
|
|
Main.tileFrameImportant[441] = true;
|
|
Main.tileFrameImportant[468] = true;
|
|
Main.tileFrameImportant[24] = true;
|
|
Main.tileFrameImportant[26] = true;
|
|
Main.tileFrameImportant[27] = true;
|
|
Main.tileFrameImportant[28] = true;
|
|
Main.tileFrameImportant[29] = true;
|
|
Main.tileFrameImportant[31] = true;
|
|
Main.tileFrameImportant[33] = true;
|
|
Main.tileFrameImportant[34] = true;
|
|
Main.tileFrameImportant[35] = true;
|
|
Main.tileFrameImportant[42] = true;
|
|
Main.tileFrameImportant[50] = true;
|
|
Main.tileFrameImportant[55] = true;
|
|
Main.tileFrameImportant[61] = true;
|
|
Main.tileFrameImportant[71] = true;
|
|
Main.tileFrameImportant[72] = true;
|
|
Main.tileFrameImportant[73] = true;
|
|
Main.tileFrameImportant[74] = true;
|
|
Main.tileFrameImportant[77] = true;
|
|
Main.tileFrameImportant[78] = true;
|
|
Main.tileFrameImportant[79] = true;
|
|
Main.tileFrameImportant[81] = true;
|
|
Main.tileFrameImportant[82] = true;
|
|
Main.tileFrameImportant[83] = true;
|
|
Main.tileFrameImportant[84] = true;
|
|
Main.tileFrameImportant[85] = true;
|
|
Main.tileFrameImportant[86] = true;
|
|
Main.tileFrameImportant[87] = true;
|
|
Main.tileFrameImportant[88] = true;
|
|
Main.tileFrameImportant[89] = true;
|
|
Main.tileFrameImportant[90] = true;
|
|
Main.tileFrameImportant[91] = true;
|
|
Main.tileFrameImportant[92] = true;
|
|
Main.tileFrameImportant[93] = true;
|
|
Main.tileFrameImportant[94] = true;
|
|
Main.tileFrameImportant[95] = true;
|
|
Main.tileFrameImportant[96] = true;
|
|
Main.tileFrameImportant[97] = true;
|
|
Main.tileFrameImportant[98] = true;
|
|
Main.tileFrameImportant[99] = true;
|
|
Main.tileFrameImportant[101] = true;
|
|
Main.tileFrameImportant[102] = true;
|
|
Main.tileFrameImportant[103] = true;
|
|
Main.tileFrameImportant[104] = true;
|
|
Main.tileFrameImportant[105] = true;
|
|
Main.tileFrameImportant[100] = true;
|
|
Main.tileFrameImportant[106] = true;
|
|
Main.tileFrameImportant[110] = true;
|
|
Main.tileFrameImportant[113] = true;
|
|
Main.tileFrameImportant[114] = true;
|
|
Main.tileFrameImportant[125] = true;
|
|
Main.tileFrameImportant[287] = true;
|
|
Main.tileFrameImportant[126] = true;
|
|
Main.tileFrameImportant[128] = true;
|
|
Main.tileFrameImportant[129] = true;
|
|
Main.tileFrameImportant[132] = true;
|
|
Main.tileFrameImportant[133] = true;
|
|
Main.tileFrameImportant[134] = true;
|
|
Main.tileFrameImportant[135] = true;
|
|
Main.tileFrameImportant[172] = true;
|
|
Main.tileFrameImportant[319] = true;
|
|
Main.tileFrameImportant[323] = true;
|
|
Main.tileFrameImportant[335] = true;
|
|
Main.tileFrameImportant[337] = true;
|
|
Main.tileFrameImportant[349] = true;
|
|
Main.tileFrameImportant[376] = true;
|
|
Main.tileFrameImportant[378] = true;
|
|
Main.tileFrameImportant[425] = true;
|
|
Main.tileFrameImportant[465] = true;
|
|
Main.tileFrameImportant[506] = true;
|
|
Main.tileFrameImportant[510] = true;
|
|
Main.tileFrameImportant[511] = true;
|
|
Main.tileFrameImportant[531] = true;
|
|
Main.tileFrameImportant[545] = true;
|
|
Main.tileFrameImportant[547] = true;
|
|
Main.tileFrameImportant[548] = true;
|
|
Main.tileFrameImportant[552] = true;
|
|
Main.tileFrameImportant[573] = true;
|
|
Main.tileFrameImportant[613] = true;
|
|
Main.tileFrameImportant[614] = true;
|
|
Main.tileFrameImportant[621] = true;
|
|
Main.tileFrameImportant[622] = true;
|
|
Main.tileFrameImportant[141] = true;
|
|
Main.tileFrameImportant[270] = true;
|
|
Main.tileFrameImportant[271] = true;
|
|
Main.tileFrameImportant[581] = true;
|
|
Main.tileFrameImportant[314] = true;
|
|
Main.tileSolidTop[376] = true;
|
|
Main.tileTable[376] = true;
|
|
Main.tileTable[380] = true;
|
|
Main.tileFrameImportant[583] = true;
|
|
Main.tileFrameImportant[584] = true;
|
|
Main.tileFrameImportant[585] = true;
|
|
Main.tileFrameImportant[586] = true;
|
|
Main.tileFrameImportant[587] = true;
|
|
Main.tileFrameImportant[588] = true;
|
|
Main.tileFrameImportant[589] = true;
|
|
Main.tileFrameImportant[590] = true;
|
|
Main.tileNoAttach[590] = true;
|
|
Main.tileFrameImportant[595] = true;
|
|
Main.tileNoAttach[595] = true;
|
|
Main.tileFrameImportant[596] = true;
|
|
Main.tileFrameImportant[615] = true;
|
|
Main.tileNoAttach[615] = true;
|
|
Main.tileFrameImportant[616] = true;
|
|
Main.tileCut[201] = true;
|
|
Main.tileCut[3] = true;
|
|
Main.tileCut[24] = true;
|
|
Main.tileCut[28] = true;
|
|
Main.tileCut[32] = true;
|
|
Main.tileCut[51] = true;
|
|
Main.tileCut[52] = true;
|
|
Main.tileCut[61] = true;
|
|
Main.tileCut[62] = true;
|
|
Main.tileCut[69] = true;
|
|
Main.tileCut[71] = true;
|
|
Main.tileCut[73] = true;
|
|
Main.tileCut[74] = true;
|
|
Main.tileCut[82] = true;
|
|
Main.tileCut[83] = true;
|
|
Main.tileCut[84] = true;
|
|
Main.tileCut[110] = true;
|
|
Main.tileCut[113] = true;
|
|
Main.tileCut[115] = true;
|
|
Main.tileCut[184] = true;
|
|
Main.tileCut[205] = true;
|
|
Main.tileCut[352] = true;
|
|
Main.tileCut[382] = true;
|
|
Main.tileCut[528] = true;
|
|
Main.tileLighted[528] = true;
|
|
Main.tileCut[444] = true;
|
|
Main.tileCut[485] = true;
|
|
Main.tileAlch[82] = true;
|
|
Main.tileAlch[83] = true;
|
|
Main.tileAlch[84] = true;
|
|
Main.tileSolid[(int) sbyte.MaxValue] = true;
|
|
Main.tileSolid[130] = true;
|
|
Main.tileBlockLight[130] = true;
|
|
Main.tileBlockLight[131] = true;
|
|
Main.tileNoAttach[232] = true;
|
|
Main.tileSolid[107] = true;
|
|
Main.tileBlockLight[107] = true;
|
|
Main.tileSolid[108] = true;
|
|
Main.tileBlockLight[108] = true;
|
|
Main.tileSolid[111] = true;
|
|
Main.tileBlockLight[111] = true;
|
|
Main.tileSolid[109] = true;
|
|
Main.tileBlockLight[109] = true;
|
|
Main.tileSolid[110] = false;
|
|
Main.tileNoAttach[110] = true;
|
|
Main.tileNoFail[110] = true;
|
|
Main.tileSolid[112] = true;
|
|
Main.tileBlockLight[112] = true;
|
|
Main.tileSolid[116] = true;
|
|
Main.tileBlockLight[116] = true;
|
|
Main.tileBrick[117] = true;
|
|
Main.tileBrick[25] = true;
|
|
Main.tileBrick[203] = true;
|
|
Main.tileSolid[117] = true;
|
|
Main.tileBlockLight[117] = true;
|
|
Main.tileSolid[123] = true;
|
|
Main.tileBlockLight[123] = true;
|
|
Main.tileNoFail[165] = true;
|
|
Main.tileNoFail[184] = true;
|
|
Main.tileNoFail[185] = true;
|
|
Main.tileNoFail[186] = true;
|
|
Main.tileNoFail[187] = true;
|
|
Main.tileSolid[118] = true;
|
|
Main.tileBlockLight[118] = true;
|
|
Main.tileSolid[119] = true;
|
|
Main.tileBlockLight[119] = true;
|
|
Main.tileSolid[120] = true;
|
|
Main.tileBlockLight[120] = true;
|
|
Main.tileSolid[121] = true;
|
|
Main.tileBlockLight[121] = true;
|
|
Main.tileSolid[122] = true;
|
|
Main.tileBlockLight[122] = true;
|
|
Main.tileSolid[150] = true;
|
|
Main.tileBlockLight[150] = true;
|
|
Main.tileBlockLight[115] = true;
|
|
Main.tileSolid[199] = true;
|
|
Main.tileBlockLight[199] = true;
|
|
Main.tileNoFail[162] = true;
|
|
Main.tileSolid[0] = true;
|
|
Main.tileBlockLight[0] = true;
|
|
Main.tileSolid[1] = true;
|
|
Main.tileBlockLight[1] = true;
|
|
Main.tileSolid[2] = true;
|
|
Main.tileBlockLight[2] = true;
|
|
Main.tileSolid[3] = false;
|
|
Main.tileNoAttach[3] = true;
|
|
Main.tileNoFail[3] = true;
|
|
Main.tileNoFail[201] = true;
|
|
Main.tileSolid[4] = false;
|
|
Main.tileNoAttach[4] = true;
|
|
Main.tileNoFail[4] = true;
|
|
Main.tileNoFail[24] = true;
|
|
Main.tileSolid[5] = false;
|
|
Main.tileSolid[6] = true;
|
|
Main.tileBlockLight[6] = true;
|
|
Main.tileSolid[7] = true;
|
|
Main.tileBlockLight[7] = true;
|
|
Main.tileSolid[8] = true;
|
|
Main.tileBlockLight[8] = true;
|
|
Main.tileSolid[9] = true;
|
|
Main.tileBlockLight[9] = true;
|
|
Main.tileSolid[166] = true;
|
|
Main.tileBlockLight[166] = true;
|
|
Main.tileSolid[167] = true;
|
|
Main.tileBlockLight[167] = true;
|
|
Main.tileSolid[168] = true;
|
|
Main.tileBlockLight[168] = true;
|
|
Main.tileSolid[169] = true;
|
|
Main.tileBlockLight[169] = true;
|
|
Main.tileBlockLight[10] = true;
|
|
Main.tileSolid[10] = true;
|
|
Main.tileNoAttach[10] = true;
|
|
Main.tileBlockLight[10] = true;
|
|
Main.tileSolid[11] = false;
|
|
Main.tileSolidTop[19] = true;
|
|
Main.tileSolid[19] = true;
|
|
Main.tileSolid[22] = true;
|
|
Main.tileSolid[23] = true;
|
|
Main.tileSolid[25] = true;
|
|
Main.tileSolid[30] = true;
|
|
Main.tileNoFail[32] = true;
|
|
Main.tileBlockLight[32] = true;
|
|
Main.tileNoFail[352] = true;
|
|
Main.tileBlockLight[352] = true;
|
|
Main.tileSolid[37] = true;
|
|
Main.tileBlockLight[37] = true;
|
|
Main.tileSolid[38] = true;
|
|
Main.tileBlockLight[38] = true;
|
|
Main.tileSolid[39] = true;
|
|
Main.tileBlockLight[39] = true;
|
|
Main.tileSolid[40] = true;
|
|
Main.tileBlockLight[40] = true;
|
|
Main.tileSolid[41] = true;
|
|
Main.tileBlockLight[41] = true;
|
|
Main.tileSolid[43] = true;
|
|
Main.tileBlockLight[43] = true;
|
|
Main.tileSolid[44] = true;
|
|
Main.tileBlockLight[44] = true;
|
|
Main.tileSolid[481] = true;
|
|
Main.tileBlockLight[481] = true;
|
|
Main.tileSolid[482] = true;
|
|
Main.tileBlockLight[482] = true;
|
|
Main.tileSolid[483] = true;
|
|
Main.tileBlockLight[483] = true;
|
|
Main.tileSolid[45] = true;
|
|
Main.tileBlockLight[45] = true;
|
|
Main.tileSolid[46] = true;
|
|
Main.tileBlockLight[46] = true;
|
|
Main.tileSolid[47] = true;
|
|
Main.tileBlockLight[47] = true;
|
|
Main.tileSolid[48] = true;
|
|
Main.tileSolid[53] = true;
|
|
Main.tileBlockLight[53] = true;
|
|
Main.tileSolid[54] = true;
|
|
Main.tileBlockLight[52] = true;
|
|
Main.tileBlockLight[205] = true;
|
|
Main.tileSolid[56] = true;
|
|
Main.tileBlockLight[56] = true;
|
|
Main.tileSolid[57] = true;
|
|
Main.tileBlockLight[57] = true;
|
|
Main.tileSolid[58] = true;
|
|
Main.tileBlockLight[58] = true;
|
|
Main.tileBlockLight[382] = true;
|
|
Main.tileSolid[59] = true;
|
|
Main.tileBlockLight[59] = true;
|
|
Main.tileSolid[60] = true;
|
|
Main.tileBlockLight[60] = true;
|
|
Main.tileSolid[63] = true;
|
|
Main.tileBlockLight[63] = true;
|
|
Main.tileStone[63] = true;
|
|
Main.tileStone[130] = true;
|
|
Main.tileSolid[64] = true;
|
|
Main.tileBlockLight[64] = true;
|
|
Main.tileStone[64] = true;
|
|
Main.tileSolid[65] = true;
|
|
Main.tileBlockLight[65] = true;
|
|
Main.tileStone[65] = true;
|
|
Main.tileSolid[66] = true;
|
|
Main.tileBlockLight[66] = true;
|
|
Main.tileStone[66] = true;
|
|
Main.tileSolid[67] = true;
|
|
Main.tileBlockLight[67] = true;
|
|
Main.tileStone[67] = true;
|
|
Main.tileSolid[68] = true;
|
|
Main.tileBlockLight[68] = true;
|
|
Main.tileStone[68] = true;
|
|
Main.tileSolid[566] = true;
|
|
Main.tileBlockLight[566] = true;
|
|
Main.tileStone[566] = true;
|
|
Main.tileSolid[75] = true;
|
|
Main.tileBlockLight[75] = true;
|
|
Main.tileSolid[76] = true;
|
|
Main.tileBlockLight[76] = true;
|
|
Main.tileSolid[70] = true;
|
|
Main.tileBlockLight[70] = true;
|
|
Main.tileNoFail[50] = true;
|
|
Main.tileNoAttach[50] = true;
|
|
Main.tileDungeon[41] = true;
|
|
Main.tileDungeon[43] = true;
|
|
Main.tileDungeon[44] = true;
|
|
Main.tileBlockLight[30] = true;
|
|
Main.tileBlockLight[25] = true;
|
|
Main.tileBlockLight[23] = true;
|
|
Main.tileBlockLight[22] = true;
|
|
Main.tileBlockLight[62] = true;
|
|
Main.tileSolidTop[18] = true;
|
|
Main.tileSolidTop[14] = true;
|
|
Main.tileSolidTop[469] = true;
|
|
Main.tileSolidTop[16] = true;
|
|
Main.tileSolidTop[134] = true;
|
|
Main.tileSolidTop[114] = true;
|
|
Main.tileNoAttach[20] = true;
|
|
Main.tileNoAttach[19] = true;
|
|
Main.tileNoAttach[13] = true;
|
|
Main.tileNoAttach[14] = true;
|
|
Main.tileNoAttach[469] = true;
|
|
Main.tileNoAttach[486] = true;
|
|
Main.tileNoAttach[488] = true;
|
|
Main.tileNoAttach[487] = true;
|
|
Main.tileNoAttach[489] = true;
|
|
Main.tileNoAttach[490] = true;
|
|
Main.tileNoAttach[15] = true;
|
|
Main.tileNoAttach[497] = true;
|
|
Main.tileNoAttach[16] = true;
|
|
Main.tileNoAttach[134] = true;
|
|
Main.tileNoAttach[17] = true;
|
|
Main.tileNoAttach[18] = true;
|
|
Main.tileNoAttach[21] = true;
|
|
Main.tileNoAttach[467] = true;
|
|
Main.tileNoAttach[441] = true;
|
|
Main.tileNoAttach[468] = true;
|
|
Main.tileNoAttach[27] = true;
|
|
Main.tileNoAttach[114] = true;
|
|
Main.tileTable[14] = true;
|
|
Main.tileTable[469] = true;
|
|
Main.tileTable[18] = true;
|
|
Main.tileTable[19] = true;
|
|
Main.tileTable[114] = true;
|
|
Main.tileNoAttach[86] = true;
|
|
Main.tileNoAttach[87] = true;
|
|
Main.tileNoAttach[88] = true;
|
|
Main.tileNoAttach[89] = true;
|
|
Main.tileNoAttach[90] = true;
|
|
Main.tileTable[101] = true;
|
|
Main.tileNoAttach[101] = true;
|
|
Main.tileNoAttach[102] = true;
|
|
Main.tileNoAttach[94] = true;
|
|
Main.tileNoAttach[95] = true;
|
|
Main.tileNoAttach[96] = true;
|
|
Main.tileNoAttach[97] = true;
|
|
Main.tileNoAttach[98] = true;
|
|
Main.tileNoAttach[99] = true;
|
|
Main.tileTable[87] = true;
|
|
Main.tileTable[88] = true;
|
|
Main.tileSolidTop[87] = true;
|
|
Main.tileSolidTop[88] = true;
|
|
Main.tileSolidTop[101] = true;
|
|
Main.tileNoAttach[91] = true;
|
|
Main.tileNoAttach[92] = true;
|
|
Main.tileNoAttach[93] = true;
|
|
Main.tileLighted[190] = true;
|
|
Main.tileBlockLight[192] = true;
|
|
Main.tileWaterDeath[215] = true;
|
|
Main.tileWaterDeath[4] = true;
|
|
Main.tileWaterDeath[51] = true;
|
|
Main.tileWaterDeath[93] = true;
|
|
Main.tileWaterDeath[98] = true;
|
|
Main.tileWaterDeath[552] = true;
|
|
Main.tileLavaDeath[3] = true;
|
|
Main.tileLavaDeath[5] = true;
|
|
Main.tileLavaDeath[10] = true;
|
|
Main.tileLavaDeath[11] = true;
|
|
Main.tileLavaDeath[12] = true;
|
|
Main.tileLavaDeath[13] = true;
|
|
Main.tileLavaDeath[14] = true;
|
|
Main.tileLavaDeath[469] = true;
|
|
Main.tileLavaDeath[486] = true;
|
|
Main.tileLavaDeath[488] = true;
|
|
Main.tileLavaDeath[487] = true;
|
|
Main.tileLavaDeath[489] = true;
|
|
Main.tileLavaDeath[490] = true;
|
|
Main.tileLavaDeath[15] = true;
|
|
Main.tileLavaDeath[497] = true;
|
|
Main.tileLavaDeath[16] = true;
|
|
Main.tileLavaDeath[17] = true;
|
|
Main.tileLavaDeath[18] = true;
|
|
Main.tileLavaDeath[19] = true;
|
|
Main.tileLavaDeath[20] = true;
|
|
Main.tileLavaDeath[24] = true;
|
|
Main.tileLavaDeath[27] = true;
|
|
Main.tileLavaDeath[28] = true;
|
|
Main.tileLavaDeath[29] = true;
|
|
Main.tileLavaDeath[32] = true;
|
|
Main.tileLavaDeath[33] = true;
|
|
Main.tileLavaDeath[34] = true;
|
|
Main.tileLavaDeath[35] = true;
|
|
Main.tileLavaDeath[36] = true;
|
|
Main.tileLavaDeath[42] = true;
|
|
Main.tileLavaDeath[49] = true;
|
|
Main.tileLavaDeath[50] = true;
|
|
Main.tileLavaDeath[51] = true;
|
|
Main.tileLavaDeath[52] = true;
|
|
Main.tileLavaDeath[55] = true;
|
|
Main.tileLavaDeath[61] = true;
|
|
Main.tileLavaDeath[62] = true;
|
|
Main.tileLavaDeath[69] = true;
|
|
Main.tileLavaDeath[71] = true;
|
|
Main.tileLavaDeath[72] = true;
|
|
Main.tileLavaDeath[73] = true;
|
|
Main.tileLavaDeath[74] = true;
|
|
Main.tileLavaDeath[79] = true;
|
|
Main.tileLavaDeath[80] = true;
|
|
Main.tileLavaDeath[81] = true;
|
|
Main.tileLavaDeath[86] = true;
|
|
Main.tileLavaDeath[87] = true;
|
|
Main.tileLavaDeath[88] = true;
|
|
Main.tileLavaDeath[89] = true;
|
|
Main.tileLavaDeath[90] = true;
|
|
Main.tileLavaDeath[91] = true;
|
|
Main.tileLavaDeath[92] = true;
|
|
Main.tileLavaDeath[93] = true;
|
|
Main.tileLavaDeath[94] = true;
|
|
Main.tileLavaDeath[95] = true;
|
|
Main.tileLavaDeath[96] = true;
|
|
Main.tileLavaDeath[97] = true;
|
|
Main.tileLavaDeath[98] = true;
|
|
Main.tileLavaDeath[100] = true;
|
|
Main.tileLavaDeath[101] = true;
|
|
Main.tileLavaDeath[102] = true;
|
|
Main.tileLavaDeath[103] = true;
|
|
Main.tileLavaDeath[104] = true;
|
|
Main.tileLavaDeath[106] = true;
|
|
Main.tileLavaDeath[110] = true;
|
|
Main.tileLavaDeath[113] = true;
|
|
Main.tileLavaDeath[115] = true;
|
|
Main.tileLavaDeath[125] = true;
|
|
Main.tileLavaDeath[126] = true;
|
|
Main.tileLavaDeath[128] = true;
|
|
Main.tileLavaDeath[149] = true;
|
|
Main.tileLavaDeath[172] = true;
|
|
Main.tileLavaDeath[173] = true;
|
|
Main.tileLavaDeath[174] = true;
|
|
Main.tileLavaDeath[184] = true;
|
|
Main.tileLavaDeath[201] = true;
|
|
Main.tileLavaDeath[205] = true;
|
|
Main.tileLavaDeath[201] = true;
|
|
Main.tileLavaDeath[209] = true;
|
|
Main.tileLavaDeath[210] = true;
|
|
Main.tileLavaDeath[212] = true;
|
|
Main.tileLavaDeath[213] = true;
|
|
Main.tileLavaDeath[353] = true;
|
|
Main.tileLavaDeath[214] = true;
|
|
Main.tileLavaDeath[215] = true;
|
|
Main.tileLavaDeath[216] = true;
|
|
Main.tileLavaDeath[217] = true;
|
|
Main.tileLavaDeath[218] = true;
|
|
Main.tileLavaDeath[219] = true;
|
|
Main.tileLavaDeath[220] = true;
|
|
Main.tileLavaDeath[227] = true;
|
|
Main.tileLavaDeath[228] = true;
|
|
Main.tileLavaDeath[233] = true;
|
|
Main.tileLavaDeath[236] = true;
|
|
Main.tileLavaDeath[238] = true;
|
|
Main.tileLavaDeath[240] = true;
|
|
Main.tileLavaDeath[241] = true;
|
|
Main.tileLavaDeath[242] = true;
|
|
Main.tileLavaDeath[243] = true;
|
|
Main.tileLavaDeath[244] = true;
|
|
Main.tileLavaDeath[245] = true;
|
|
Main.tileLavaDeath[246] = true;
|
|
Main.tileLavaDeath[247] = true;
|
|
Main.tileLavaDeath[254] = true;
|
|
Main.tileLavaDeath[269] = true;
|
|
Main.tileLavaDeath[270] = true;
|
|
Main.tileLavaDeath[271] = true;
|
|
Main.tileLavaDeath[581] = true;
|
|
Main.tileLavaDeath[275] = true;
|
|
Main.tileLavaDeath[413] = true;
|
|
Main.tileLavaDeath[276] = true;
|
|
Main.tileLavaDeath[277] = true;
|
|
Main.tileLavaDeath[278] = true;
|
|
Main.tileLavaDeath[279] = true;
|
|
Main.tileLavaDeath[280] = true;
|
|
Main.tileLavaDeath[281] = true;
|
|
Main.tileLavaDeath[282] = true;
|
|
Main.tileLavaDeath[283] = true;
|
|
Main.tileLavaDeath[285] = true;
|
|
Main.tileLavaDeath[286] = true;
|
|
Main.tileLavaDeath[287] = true;
|
|
Main.tileLavaDeath[288] = true;
|
|
Main.tileLavaDeath[289] = true;
|
|
Main.tileLavaDeath[290] = true;
|
|
Main.tileLavaDeath[291] = true;
|
|
Main.tileLavaDeath[292] = true;
|
|
Main.tileLavaDeath[293] = true;
|
|
Main.tileLavaDeath[294] = true;
|
|
Main.tileLavaDeath[295] = true;
|
|
Main.tileLavaDeath[296] = true;
|
|
Main.tileLavaDeath[297] = true;
|
|
Main.tileLavaDeath[298] = true;
|
|
Main.tileLavaDeath[299] = true;
|
|
Main.tileLavaDeath[300] = true;
|
|
Main.tileLavaDeath[301] = true;
|
|
Main.tileLavaDeath[302] = true;
|
|
Main.tileLavaDeath[303] = true;
|
|
Main.tileLavaDeath[304] = true;
|
|
Main.tileLavaDeath[305] = true;
|
|
Main.tileLavaDeath[306] = true;
|
|
Main.tileLavaDeath[307] = true;
|
|
Main.tileLavaDeath[308] = true;
|
|
Main.tileLavaDeath[309] = true;
|
|
Main.tileLavaDeath[310] = true;
|
|
Main.tileLavaDeath[532] = true;
|
|
Main.tileLavaDeath[316] = true;
|
|
Main.tileLavaDeath[317] = true;
|
|
Main.tileLavaDeath[318] = true;
|
|
Main.tileLavaDeath[319] = true;
|
|
Main.tileLavaDeath[354] = true;
|
|
Main.tileLavaDeath[355] = true;
|
|
Main.tileLavaDeath[499] = true;
|
|
Main.tileLavaDeath[323] = true;
|
|
Main.tileLavaDeath[335] = true;
|
|
Main.tileLavaDeath[338] = true;
|
|
Main.tileLavaDeath[339] = true;
|
|
Main.tileLavaDeath[528] = true;
|
|
Main.tileLavaDeath[352] = true;
|
|
Main.tileLavaDeath[382] = true;
|
|
Main.tileLavaDeath[425] = true;
|
|
Main.tileLavaDeath[453] = true;
|
|
Main.tileLavaDeath[456] = true;
|
|
Main.tileLavaDeath[463] = true;
|
|
Main.tileLavaDeath[464] = true;
|
|
Main.tileLavaDeath[465] = true;
|
|
Main.tileLavaDeath[485] = true;
|
|
Main.tileLavaDeath[511] = true;
|
|
Main.tileLavaDeath[510] = true;
|
|
Main.tileLavaDeath[547] = true;
|
|
Main.tileLavaDeath[548] = true;
|
|
Main.tileLavaDeath[552] = true;
|
|
Main.tileLavaDeath[573] = true;
|
|
Main.tileLavaDeath[621] = true;
|
|
Main.tileLavaDeath[622] = true;
|
|
Main.tileLighted[316] = true;
|
|
Main.tileLighted[317] = true;
|
|
Main.tileLighted[318] = true;
|
|
Main.tileFrameImportant[493] = true;
|
|
Main.tileLavaDeath[493] = true;
|
|
for (int index = 0; index < 623; ++index)
|
|
{
|
|
if (Main.tileLavaDeath[index])
|
|
Main.tileObsidianKill[index] = true;
|
|
}
|
|
Main.tileObsidianKill[546] = true;
|
|
Main.tileObsidianKill[77] = true;
|
|
Main.tileObsidianKill[78] = true;
|
|
Main.tileObsidianKill[82] = true;
|
|
Main.tileObsidianKill[83] = true;
|
|
Main.tileObsidianKill[84] = true;
|
|
Main.tileObsidianKill[85] = true;
|
|
Main.tileObsidianKill[105] = true;
|
|
Main.tileObsidianKill[129] = true;
|
|
Main.tileObsidianKill[132] = true;
|
|
Main.tileObsidianKill[133] = true;
|
|
Main.tileObsidianKill[134] = true;
|
|
Main.tileObsidianKill[135] = true;
|
|
Main.tileObsidianKill[136] = true;
|
|
Main.tileObsidianKill[139] = true;
|
|
Main.tileObsidianKill[165] = true;
|
|
Main.tileObsidianKill[178] = true;
|
|
Main.tileObsidianKill[185] = true;
|
|
Main.tileObsidianKill[186] = true;
|
|
Main.tileObsidianKill[187] = true;
|
|
Main.tileObsidianKill[231] = true;
|
|
Main.tileObsidianKill[337] = true;
|
|
Main.tileObsidianKill[349] = true;
|
|
Main.tileObsidianKill[506] = true;
|
|
Main.tileObsidianKill[314] = true;
|
|
Main.tileSolid[384] = true;
|
|
Main.tileBlockLight[384] = true;
|
|
Main.tileNoFail[384] = true;
|
|
Main.tileFrameImportant[395] = true;
|
|
Main.tileLavaDeath[395] = true;
|
|
Main.tileFrameImportant[520] = true;
|
|
Main.tileLavaDeath[520] = true;
|
|
Main.tileLavaDeath[471] = true;
|
|
Main.tileFrameImportant[405] = true;
|
|
Main.tileLavaDeath[405] = true;
|
|
Main.tileSolidTop[405] = true;
|
|
Main.tileTable[405] = true;
|
|
Main.tileLighted[405] = true;
|
|
Main.tileWaterDeath[405] = true;
|
|
Main.tileFrameImportant[406] = true;
|
|
Main.tileLavaDeath[406] = true;
|
|
Main.tileFrameImportant[452] = true;
|
|
Main.tileLavaDeath[452] = true;
|
|
Main.tileFrameImportant[411] = true;
|
|
Main.tileLavaDeath[411] = false;
|
|
Main.tileFrameImportant[457] = true;
|
|
Main.tileLavaDeath[457] = true;
|
|
Main.tileFrameImportant[462] = true;
|
|
Main.tileFrameImportant[454] = true;
|
|
Main.tileLavaDeath[454] = true;
|
|
Main.tileCut[454] = true;
|
|
Main.tileFrameImportant[494] = true;
|
|
Main.tileLavaDeath[494] = true;
|
|
Main.tileFrameImportant[455] = true;
|
|
Main.tileFrameImportant[412] = true;
|
|
for (int index = 0; index < 316; ++index)
|
|
Main.wallBlend[index] = index != 20 ? (index != 19 ? (index != 18 ? (index != 17 ? (index == 16 || index == 59 || index == 261 ? 2 : (index == 1 || index >= 48 && index <= 53 ? 1 : index)) : 7) : 8) : 9) : 14;
|
|
Main.wallBlend[65] = 63;
|
|
Main.wallBlend[66] = 63;
|
|
Main.wallBlend[68] = 63;
|
|
Main.wallBlend[67] = 64;
|
|
Main.wallBlend[80] = 74;
|
|
Main.wallBlend[81] = 77;
|
|
Main.wallBlend[94] = 7;
|
|
Main.wallBlend[95] = 7;
|
|
Main.wallBlend[100] = 7;
|
|
Main.wallBlend[101] = 7;
|
|
Main.wallBlend[96] = 8;
|
|
Main.wallBlend[97] = 8;
|
|
Main.wallBlend[102] = 8;
|
|
Main.wallBlend[103] = 8;
|
|
Main.wallBlend[98] = 9;
|
|
Main.wallBlend[99] = 9;
|
|
Main.wallBlend[104] = 9;
|
|
Main.wallBlend[105] = 9;
|
|
Main.tileNoFail[24] = true;
|
|
Main.tileNoFail[3] = true;
|
|
Main.tileNoFail[52] = true;
|
|
Main.tileNoFail[62] = true;
|
|
Main.tileNoFail[32] = true;
|
|
Main.tileNoFail[61] = true;
|
|
Main.tileNoFail[69] = true;
|
|
Main.tileNoFail[73] = true;
|
|
Main.tileNoFail[74] = true;
|
|
Main.tileNoFail[82] = true;
|
|
Main.tileNoFail[83] = true;
|
|
Main.tileNoFail[84] = true;
|
|
Main.tileNoFail[110] = true;
|
|
Main.tileNoFail[113] = true;
|
|
Main.tileNoFail[115] = true;
|
|
Main.tileNoFail[165] = true;
|
|
Main.tileNoFail[184] = true;
|
|
Main.tileNoFail[201] = true;
|
|
Main.tileNoFail[205] = true;
|
|
Main.tileNoFail[227] = true;
|
|
Main.tileNoFail[233] = true;
|
|
Main.tileNoFail[352] = true;
|
|
Main.tileNoFail[382] = true;
|
|
Main.tileNoFail[528] = true;
|
|
Main.tileNoFail[485] = true;
|
|
Main.tileFrameImportant[387] = true;
|
|
Main.tileSolid[387] = true;
|
|
Main.tileBlockLight[387] = true;
|
|
Main.tileNoAttach[387] = true;
|
|
Main.tileLavaDeath[387] = true;
|
|
Main.tileFrameImportant[386] = true;
|
|
Main.tileLavaDeath[386] = true;
|
|
Main.tileNoSunLight[386] = true;
|
|
Main.tileFrameImportant[388] = true;
|
|
Main.tileSolid[388] = true;
|
|
Main.tileBlockLight[388] = true;
|
|
Main.tileNoAttach[388] = true;
|
|
Main.tileLavaDeath[388] = true;
|
|
Main.tileFrameImportant[389] = true;
|
|
Main.tileLavaDeath[389] = true;
|
|
Main.tileNoSunLight[389] = true;
|
|
for (int index = 0; index < 623; ++index)
|
|
{
|
|
if (Main.tileSolid[index])
|
|
Main.tileNoSunLight[index] = true;
|
|
Main.tileFrame[index] = 0;
|
|
Main.tileFrameCounter[index] = 0;
|
|
}
|
|
Main.tileNoSunLight[546] = false;
|
|
Main.tileNoSunLight[379] = false;
|
|
Main.tileNoSunLight[54] = false;
|
|
Main.tileNoSunLight[328] = false;
|
|
Main.tileNoSunLight[459] = false;
|
|
Main.tileNoSunLight[19] = false;
|
|
Main.tileNoSunLight[11] = true;
|
|
Main.tileNoSunLight[189] = false;
|
|
Main.tileNoSunLight[196] = false;
|
|
Main.tileNoSunLight[48] = false;
|
|
Main.tileNoSunLight[232] = false;
|
|
Main.tileNoSunLight[460] = false;
|
|
Main.tileNoSunLight[541] = false;
|
|
Main.tileNoSunLight[388] = false;
|
|
}
|
|
|
|
private static void Initialize_TileAndNPCData1()
|
|
{
|
|
for (int index = 0; index < 623; ++index)
|
|
Main.tileGlowMask[index] = (short) -1;
|
|
for (int index = 0; index < 950; ++index)
|
|
Main.projFrames[index] = 1;
|
|
Main.projFrames[736] = 3;
|
|
Main.projFrames[737] = 3;
|
|
Main.projFrames[738] = 3;
|
|
Main.projFrames[779] = 4;
|
|
Main.projFrames[783] = 4;
|
|
Main.projFrames[862] = 4;
|
|
Main.projFrames[863] = 4;
|
|
Main.projFrames[820] = 4;
|
|
Main.projFrames[916] = 6;
|
|
Main.projFrames[34] = 6;
|
|
Main.projFrames[706] = 8;
|
|
Main.projFrames[712] = 8;
|
|
Main.projFrames[663] = 7;
|
|
Main.projFrames[665] = 9;
|
|
Main.projFrames[667] = 9;
|
|
Main.projFrames[677] = 6;
|
|
Main.projFrames[678] = 6;
|
|
Main.projFrames[679] = 6;
|
|
Main.projFrames[688] = 6;
|
|
Main.projFrames[689] = 6;
|
|
Main.projFrames[690] = 8;
|
|
Main.projFrames[691] = 4;
|
|
Main.projFrames[692] = 4;
|
|
Main.projFrames[693] = 4;
|
|
Main.projFrames[694] = 4;
|
|
Main.projFrames[695] = 4;
|
|
Main.projFrames[696] = 5;
|
|
Main.projFrames[700] = 4;
|
|
Main.projFrames[643] = 8;
|
|
Main.projFrames[566] = 4;
|
|
Main.projFrames[565] = 4;
|
|
Main.projFrames[525] = 5;
|
|
Main.projFrames[519] = 4;
|
|
Main.projFrames[509] = 2;
|
|
Main.projFrames[485] = 5;
|
|
Main.projFrames[492] = 8;
|
|
Main.projFrames[500] = 4;
|
|
Main.projFrames[499] = 12;
|
|
Main.projFrames[518] = 4;
|
|
Main.projFrames[585] = 4;
|
|
Main.projFrames[593] = 4;
|
|
Main.projFrames[595] = 28;
|
|
Main.projFrames[735] = 28;
|
|
Main.projFrames[596] = 4;
|
|
Main.projFrames[612] = 5;
|
|
Main.projFrames[613] = 4;
|
|
Main.projFrames[614] = 4;
|
|
Main.projFrames[615] = 7;
|
|
Main.projFrames[623] = 19;
|
|
Main.projFrames[633] = 5;
|
|
Main.projFrames[645] = 7;
|
|
Main.projFrames[650] = 4;
|
|
Main.projFrames[652] = 6;
|
|
Main.projFrames[659] = 4;
|
|
Main.projFrames[714] = 7;
|
|
Main.projFrames[734] = 8;
|
|
Main.projFrames[755] = 5;
|
|
Main.projFrames[759] = 5;
|
|
Main.projFrames[765] = 10;
|
|
Main.projFrames[384] = 6;
|
|
Main.projFrames[385] = 3;
|
|
Main.projFrames[386] = 6;
|
|
Main.projFrames[390] = 11;
|
|
Main.projFrames[391] = 11;
|
|
Main.projFrames[392] = 11;
|
|
Main.projFrames[393] = 15;
|
|
Main.projFrames[394] = 15;
|
|
Main.projFrames[395] = 15;
|
|
Main.projFrames[398] = 10;
|
|
Main.projFrames[407] = 6;
|
|
Main.projFrames[408] = 2;
|
|
Main.projFrames[409] = 3;
|
|
Main.projFrames[387] = 3;
|
|
Main.projFrames[388] = 3;
|
|
Main.projFrames[334] = 11;
|
|
Main.projFrames[324] = 10;
|
|
Main.projFrames[351] = 2;
|
|
Main.projFrames[349] = 5;
|
|
Main.projFrames[423] = 4;
|
|
Main.projFrames[435] = 4;
|
|
Main.projFrames[682] = 4;
|
|
Main.projFrames[436] = 4;
|
|
Main.projFrames[439] = 6;
|
|
Main.projFrames[443] = 4;
|
|
Main.projFrames[447] = 4;
|
|
Main.projFrames[448] = 3;
|
|
Main.projFrames[450] = 5;
|
|
Main.projFrames[454] = 2;
|
|
Main.projFrames[456] = 4;
|
|
Main.projFrames[459] = 3;
|
|
Main.projFrames[462] = 5;
|
|
Main.projFrames[465] = 4;
|
|
Main.projFrames[467] = 4;
|
|
Main.projFrames[468] = 4;
|
|
Main.projFrames[533] = 21;
|
|
Main.projFrames[535] = 12;
|
|
Main.projFrames[539] = 4;
|
|
Main.projFrames[575] = 4;
|
|
Main.projFrames[574] = 2;
|
|
Main.projFrames[634] = 4;
|
|
Main.projFrames[635] = 4;
|
|
Main.projFrames[709] = 3;
|
|
Main.projFrames[353] = 14;
|
|
Main.projFrames[346] = 2;
|
|
Main.projFrames[347] = 2;
|
|
Main.projFrames[335] = 4;
|
|
Main.projFrames[344] = 3;
|
|
Main.projFrames[337] = 5;
|
|
Main.projFrames[317] = 8;
|
|
Main.projFrames[321] = 3;
|
|
Main.projFrames[308] = 10;
|
|
Main.projFrames[316] = 4;
|
|
Main.projFrames[275] = 2;
|
|
Main.projFrames[276] = 2;
|
|
Main.projFrames[254] = 5;
|
|
Main.projFrames[307] = 2;
|
|
Main.projFrames[72] = 4;
|
|
Main.projFrames[86] = 4;
|
|
Main.projFrames[87] = 4;
|
|
Main.projFrames[102] = 2;
|
|
Main.projFrames[111] = 8;
|
|
Main.projFrames[112] = 3;
|
|
Main.projFrames[(int) sbyte.MaxValue] = 16;
|
|
Main.projFrames[175] = 2;
|
|
Main.projFrames[181] = 4;
|
|
Main.projFrames[189] = 4;
|
|
Main.projFrames[191] = 18;
|
|
Main.projFrames[192] = 18;
|
|
Main.projFrames[193] = 18;
|
|
Main.projFrames[194] = 18;
|
|
Main.projFrames[190] = 4;
|
|
Main.projFrames[198] = 4;
|
|
Main.projFrames[199] = 8;
|
|
Main.projFrames[200] = 10;
|
|
Main.projFrames[206] = 5;
|
|
Main.projFrames[208] = 5;
|
|
Main.projFrames[209] = 12;
|
|
Main.projFrames[210] = 12;
|
|
Main.projFrames[211] = 10;
|
|
Main.projFrames[221] = 3;
|
|
Main.projFrames[237] = 4;
|
|
Main.projFrames[238] = 6;
|
|
Main.projFrames[221] = 3;
|
|
Main.projFrames[228] = 5;
|
|
Main.projFrames[229] = 4;
|
|
Main.projFrames[236] = 13;
|
|
Main.projFrames[243] = 4;
|
|
Main.projFrames[244] = 6;
|
|
Main.projFrames[249] = 5;
|
|
Main.projFrames[252] = 4;
|
|
Main.projFrames[266] = 6;
|
|
Main.projFrames[268] = 8;
|
|
Main.projFrames[269] = 7;
|
|
Main.projFrames[270] = 3;
|
|
Main.projFrames[313] = 12;
|
|
Main.projFrames[314] = 13;
|
|
Main.projFrames[319] = 11;
|
|
Main.projFrames[373] = 3;
|
|
Main.projFrames[375] = 8;
|
|
Main.projFrames[377] = 9;
|
|
Main.projFrames[379] = 4;
|
|
Main.projFrames[380] = 4;
|
|
Main.projFrames[601] = 2;
|
|
Main.projFrames[602] = 4;
|
|
Main.projFrames[703] = 8;
|
|
Main.projFrames[701] = 3;
|
|
Main.projFrames[702] = 4;
|
|
Main.projFrames[732] = 4;
|
|
Main.projFrames[731] = 4;
|
|
Main.projFrames[758] = 24;
|
|
Main.projFrames[766] = 4;
|
|
Main.projFrames[767] = 4;
|
|
Main.projFrames[768] = 4;
|
|
Main.projFrames[769] = 4;
|
|
Main.projFrames[770] = 4;
|
|
Main.projFrames[774] = 8;
|
|
Main.projFrames[773] = 4;
|
|
Main.projFrames[815] = 10;
|
|
Main.projFrames[816] = 17;
|
|
Main.projFrames[817] = 18;
|
|
Main.projFrames[821] = 23;
|
|
Main.projFrames[824] = 4;
|
|
Main.projFrames[825] = 26;
|
|
Main.projFrames[826] = 3;
|
|
Main.projFrames[828] = 2;
|
|
Main.projFrames[829] = 2;
|
|
Main.projFrames[831] = 6;
|
|
Main.projFrames[833] = 10;
|
|
Main.projFrames[834] = 12;
|
|
Main.projFrames[835] = 12;
|
|
Main.projFrames[836] = 4;
|
|
Main.projFrames[837] = 3;
|
|
Main.projFrames[839] = 4;
|
|
Main.projFrames[840] = 4;
|
|
Main.projFrames[851] = 4;
|
|
Main.projFrames[853] = 4;
|
|
Main.projFrames[854] = 19;
|
|
Main.projFrames[855] = 4;
|
|
Main.projFrames[858] = 14;
|
|
Main.projFrames[859] = 24;
|
|
Main.projFrames[860] = 14;
|
|
Main.projFrames[861] = 4;
|
|
Main.projFrames[864] = 2;
|
|
Main.projFrames[866] = 4;
|
|
Main.projFrames[870] = 4;
|
|
Main.projFrames[875] = 11;
|
|
Main.projFrames[881] = 12;
|
|
Main.projFrames[882] = 20;
|
|
Main.projFrames[883] = 3;
|
|
Main.projFrames[884] = 14;
|
|
Main.projFrames[885] = 10;
|
|
Main.projFrames[886] = 8;
|
|
Main.projFrames[887] = 3;
|
|
Main.projFrames[888] = 36;
|
|
Main.projFrames[889] = 11;
|
|
Main.projFrames[890] = 12;
|
|
Main.projFrames[891] = 15;
|
|
Main.projFrames[892] = 6;
|
|
Main.projFrames[893] = 4;
|
|
Main.projFrames[894] = 8;
|
|
Main.projFrames[895] = 6;
|
|
Main.projFrames[896] = 16;
|
|
Main.projFrames[897] = 11;
|
|
Main.projFrames[898] = 16;
|
|
Main.projFrames[899] = 14;
|
|
Main.projFrames[900] = 14;
|
|
Main.projFrames[901] = 12;
|
|
Main.projFrames[908] = 12;
|
|
Main.projFrames[909] = 6;
|
|
Main.projFrames[920] = 3;
|
|
Main.projFrames[934] = 12;
|
|
Main.projFrames[880] = 8;
|
|
Main.projFrames[929] = 8;
|
|
Main.projPet[492] = true;
|
|
Main.projPet[499] = true;
|
|
Main.projPet[653] = true;
|
|
Main.projPet[701] = true;
|
|
Main.projPet[703] = true;
|
|
Main.projPet[702] = true;
|
|
Main.projPet[764] = true;
|
|
Main.projPet[765] = true;
|
|
Main.projPet[319] = true;
|
|
Main.projPet[334] = true;
|
|
Main.projPet[324] = true;
|
|
Main.projPet[266] = true;
|
|
Main.projPet[313] = true;
|
|
Main.projPet[314] = true;
|
|
Main.projPet[317] = true;
|
|
Main.projPet[175] = true;
|
|
Main.projPet[111] = true;
|
|
Main.projPet[112] = true;
|
|
Main.projPet[(int) sbyte.MaxValue] = true;
|
|
Main.projPet[191] = true;
|
|
Main.projPet[192] = true;
|
|
Main.projPet[193] = true;
|
|
Main.projPet[194] = true;
|
|
Main.projPet[197] = true;
|
|
Main.projPet[198] = true;
|
|
Main.projPet[199] = true;
|
|
Main.projPet[200] = true;
|
|
Main.projPet[208] = true;
|
|
Main.projPet[209] = true;
|
|
Main.projPet[210] = true;
|
|
Main.projPet[211] = true;
|
|
Main.projPet[236] = true;
|
|
Main.projPet[268] = true;
|
|
Main.projPet[269] = true;
|
|
Main.projPet[353] = true;
|
|
Main.projPet[373] = true;
|
|
Main.projPet[375] = true;
|
|
Main.projPet[380] = true;
|
|
Main.projPet[387] = true;
|
|
Main.projPet[388] = true;
|
|
Main.projPet[390] = true;
|
|
Main.projPet[391] = true;
|
|
Main.projPet[392] = true;
|
|
Main.projPet[393] = true;
|
|
Main.projPet[394] = true;
|
|
Main.projPet[395] = true;
|
|
Main.projPet[398] = true;
|
|
Main.projPet[407] = true;
|
|
Main.projPet[423] = true;
|
|
Main.projPet[533] = true;
|
|
Main.projPet[613] = true;
|
|
Main.projPet[623] = true;
|
|
Main.projPet[625] = true;
|
|
Main.projPet[626] = true;
|
|
Main.projPet[627] = true;
|
|
Main.projPet[628] = true;
|
|
Main.projPet[755] = true;
|
|
Main.projPet[758] = true;
|
|
Main.projPet[759] = true;
|
|
Main.projPet[774] = true;
|
|
Main.projPet[815] = true;
|
|
Main.projPet[816] = true;
|
|
Main.projPet[817] = true;
|
|
Main.projPet[821] = true;
|
|
Main.projPet[825] = true;
|
|
Main.projPet[831] = true;
|
|
Main.projPet[833] = true;
|
|
Main.projPet[834] = true;
|
|
Main.projPet[835] = true;
|
|
Main.projPet[854] = true;
|
|
Main.projPet[858] = true;
|
|
Main.projPet[859] = true;
|
|
Main.projPet[860] = true;
|
|
Main.projPet[864] = true;
|
|
Main.projPet[875] = true;
|
|
Main.projPet[946] = true;
|
|
Main.projPet[881] = true;
|
|
Main.projPet[882] = true;
|
|
Main.projPet[883] = true;
|
|
Main.projPet[884] = true;
|
|
Main.projPet[885] = true;
|
|
Main.projPet[886] = true;
|
|
Main.projPet[887] = true;
|
|
Main.projPet[888] = true;
|
|
Main.projPet[889] = true;
|
|
Main.projPet[890] = true;
|
|
Main.projPet[891] = true;
|
|
Main.projPet[892] = true;
|
|
Main.projPet[893] = true;
|
|
Main.projPet[894] = true;
|
|
Main.projPet[895] = true;
|
|
Main.projPet[896] = true;
|
|
Main.projPet[897] = true;
|
|
Main.projPet[898] = true;
|
|
Main.projPet[899] = true;
|
|
Main.projPet[900] = true;
|
|
Main.projPet[901] = true;
|
|
Main.projPet[934] = true;
|
|
Main.tileLighted[237] = true;
|
|
Main.tileLighted[27] = true;
|
|
Main.tileLighted[381] = true;
|
|
Main.tileLighted[534] = true;
|
|
Main.tileLighted[536] = true;
|
|
Main.tileLighted[539] = true;
|
|
Main.tileLighted[184] = true;
|
|
Main.tileLighted[463] = true;
|
|
Main.tileLighted[491] = true;
|
|
Main.slimeRainNPC[1] = true;
|
|
Main.debuff[158] = true;
|
|
Main.debuff[160] = true;
|
|
Main.debuff[20] = true;
|
|
Main.debuff[21] = true;
|
|
Main.debuff[22] = true;
|
|
Main.debuff[23] = true;
|
|
Main.debuff[24] = true;
|
|
Main.debuff[25] = true;
|
|
Main.debuff[28] = true;
|
|
Main.debuff[30] = true;
|
|
Main.debuff[31] = true;
|
|
Main.debuff[32] = true;
|
|
Main.debuff[33] = true;
|
|
Main.debuff[34] = true;
|
|
Main.debuff[35] = true;
|
|
Main.debuff[36] = true;
|
|
Main.debuff[37] = true;
|
|
Main.debuff[38] = true;
|
|
Main.debuff[39] = true;
|
|
Main.debuff[44] = true;
|
|
Main.debuff[46] = true;
|
|
Main.debuff[47] = true;
|
|
Main.debuff[67] = true;
|
|
Main.debuff[68] = true;
|
|
Main.debuff[69] = true;
|
|
Main.debuff[70] = true;
|
|
Main.debuff[80] = true;
|
|
Main.debuff[86] = true;
|
|
Main.debuff[87] = true;
|
|
Main.debuff[88] = true;
|
|
Main.debuff[89] = true;
|
|
Main.debuff[94] = true;
|
|
Main.debuff[103] = true;
|
|
Main.debuff[119] = true;
|
|
Main.debuff[120] = true;
|
|
Main.debuff[137] = true;
|
|
Main.debuff[145] = true;
|
|
Main.debuff[146] = true;
|
|
Main.debuff[147] = true;
|
|
Main.debuff[148] = true;
|
|
Main.debuff[149] = true;
|
|
Main.debuff[156] = true;
|
|
Main.debuff[157] = true;
|
|
Main.debuff[163] = true;
|
|
Main.debuff[164] = true;
|
|
Main.debuff[144] = true;
|
|
Main.debuff[194] = true;
|
|
Main.debuff[195] = true;
|
|
Main.debuff[196] = true;
|
|
Main.debuff[197] = true;
|
|
Main.debuff[199] = true;
|
|
Main.debuff[215] = true;
|
|
Main.debuff[320] = true;
|
|
Main.debuff[321] = true;
|
|
Main.pvpBuff[20] = true;
|
|
Main.pvpBuff[24] = true;
|
|
Main.pvpBuff[31] = true;
|
|
Main.pvpBuff[39] = true;
|
|
Main.pvpBuff[44] = true;
|
|
Main.pvpBuff[20] = true;
|
|
Main.pvpBuff[69] = true;
|
|
Main.pvpBuff[103] = true;
|
|
Main.pvpBuff[119] = true;
|
|
Main.pvpBuff[120] = true;
|
|
Main.pvpBuff[137] = true;
|
|
Main.pvpBuff[320] = true;
|
|
Main.meleeBuff[71] = true;
|
|
Main.meleeBuff[73] = true;
|
|
Main.meleeBuff[74] = true;
|
|
Main.meleeBuff[75] = true;
|
|
Main.meleeBuff[76] = true;
|
|
Main.meleeBuff[77] = true;
|
|
Main.meleeBuff[78] = true;
|
|
Main.meleeBuff[79] = true;
|
|
Main.buffNoSave[20] = true;
|
|
Main.buffNoSave[22] = true;
|
|
Main.buffNoSave[23] = true;
|
|
Main.buffNoSave[24] = true;
|
|
Main.buffNoSave[28] = true;
|
|
Main.buffNoSave[30] = true;
|
|
Main.buffNoSave[31] = true;
|
|
Main.buffNoSave[34] = true;
|
|
Main.buffNoSave[35] = true;
|
|
Main.buffNoSave[37] = true;
|
|
Main.buffNoSave[38] = true;
|
|
Main.buffNoSave[39] = true;
|
|
Main.buffNoSave[43] = true;
|
|
Main.buffNoSave[44] = true;
|
|
Main.buffNoSave[46] = true;
|
|
Main.buffNoSave[47] = true;
|
|
Main.buffNoSave[48] = true;
|
|
Main.buffNoSave[58] = true;
|
|
Main.buffNoSave[59] = true;
|
|
Main.buffNoSave[60] = true;
|
|
Main.buffNoSave[62] = true;
|
|
Main.buffNoSave[63] = true;
|
|
Main.buffNoSave[64] = true;
|
|
Main.buffNoSave[67] = true;
|
|
Main.buffNoSave[68] = true;
|
|
Main.buffNoSave[69] = true;
|
|
Main.buffNoSave[70] = true;
|
|
Main.buffNoSave[72] = true;
|
|
Main.buffNoSave[80] = true;
|
|
Main.buffNoSave[87] = true;
|
|
Main.buffNoSave[158] = true;
|
|
Main.buffNoSave[146] = true;
|
|
Main.buffNoSave[147] = true;
|
|
Main.buffNoSave[215] = true;
|
|
Main.buffNoSave[88] = true;
|
|
Main.buffNoSave[89] = true;
|
|
Main.buffNoSave[94] = true;
|
|
Main.buffNoSave[95] = true;
|
|
Main.buffNoSave[96] = true;
|
|
Main.buffNoSave[97] = true;
|
|
Main.buffNoSave[98] = true;
|
|
Main.buffNoSave[99] = true;
|
|
Main.buffNoSave[100] = true;
|
|
Main.buffNoSave[103] = true;
|
|
Main.buffNoSave[118] = true;
|
|
Main.buffNoSave[138] = true;
|
|
Main.buffNoSave[167] = true;
|
|
Main.buffNoSave[166] = true;
|
|
Main.buffNoSave[184] = true;
|
|
Main.buffNoSave[185] = true;
|
|
Main.buffNoSave[211] = true;
|
|
Main.buffNoSave[210] = true;
|
|
Main.buffNoSave[119] = true;
|
|
Main.buffNoSave[120] = true;
|
|
Main.buffNoSave[90] = true;
|
|
Main.buffNoSave[125] = true;
|
|
Main.buffNoSave[126] = true;
|
|
Main.buffNoSave[128] = true;
|
|
Main.buffNoSave[129] = true;
|
|
Main.buffNoSave[130] = true;
|
|
Main.buffNoSave[131] = true;
|
|
Main.buffNoSave[132] = true;
|
|
Main.buffNoSave[133] = true;
|
|
Main.buffNoSave[134] = true;
|
|
Main.buffNoSave[135] = true;
|
|
Main.buffNoSave[139] = true;
|
|
Main.buffNoSave[140] = true;
|
|
Main.buffNoSave[141] = true;
|
|
Main.buffNoSave[142] = true;
|
|
Main.buffNoSave[143] = true;
|
|
Main.buffNoSave[137] = true;
|
|
Main.buffNoSave[144] = true;
|
|
Main.buffNoSave[161] = true;
|
|
Main.buffNoSave[162] = true;
|
|
Main.buffNoSave[163] = true;
|
|
Main.buffNoSave[164] = true;
|
|
Main.buffNoSave[168] = true;
|
|
Main.buffNoSave[170] = true;
|
|
Main.buffNoSave[171] = true;
|
|
Main.buffNoSave[172] = true;
|
|
Main.buffNoSave[182] = true;
|
|
Main.buffNoSave[187] = true;
|
|
Main.buffNoSave[188] = true;
|
|
Main.buffNoSave[193] = true;
|
|
Main.buffNoSave[194] = true;
|
|
Main.buffNoSave[195] = true;
|
|
Main.buffNoSave[196] = true;
|
|
Main.buffNoSave[197] = true;
|
|
Main.buffNoSave[198] = true;
|
|
Main.buffNoSave[199] = true;
|
|
Main.buffNoSave[205] = true;
|
|
Main.buffNoSave[212] = true;
|
|
Main.buffNoSave[213] = true;
|
|
Main.buffNoSave[214] = true;
|
|
Main.buffNoSave[230] = true;
|
|
Main.buffNoSave[263] = true;
|
|
Main.buffNoSave[265] = true;
|
|
Main.buffNoSave[271] = true;
|
|
Main.buffNoSave[322] = true;
|
|
Main.buffNoSave[275] = true;
|
|
Main.buffNoSave[276] = true;
|
|
Main.buffNoSave[277] = true;
|
|
Main.buffNoSave[278] = true;
|
|
Main.buffNoSave[279] = true;
|
|
Main.buffNoSave[280] = true;
|
|
Main.buffNoSave[281] = true;
|
|
Main.buffNoSave[282] = true;
|
|
Main.buffNoSave[283] = true;
|
|
Main.buffNoSave[305] = true;
|
|
Main.buffNoSave[318] = true;
|
|
Main.buffNoSave[320] = true;
|
|
Main.buffNoSave[321] = true;
|
|
for (int index = 173; index <= 181; ++index)
|
|
Main.buffNoSave[index] = true;
|
|
Main.buffNoTimeDisplay[19] = true;
|
|
Main.buffNoTimeDisplay[27] = true;
|
|
Main.buffNoTimeDisplay[28] = true;
|
|
Main.buffNoTimeDisplay[34] = true;
|
|
Main.buffNoTimeDisplay[37] = true;
|
|
Main.buffNoTimeDisplay[38] = true;
|
|
Main.buffNoTimeDisplay[40] = true;
|
|
Main.buffNoTimeDisplay[41] = true;
|
|
Main.buffNoTimeDisplay[42] = true;
|
|
Main.buffNoTimeDisplay[43] = true;
|
|
Main.buffNoTimeDisplay[45] = true;
|
|
Main.buffNoTimeDisplay[49] = true;
|
|
Main.buffNoTimeDisplay[60] = true;
|
|
Main.buffNoTimeDisplay[62] = true;
|
|
Main.buffNoTimeDisplay[64] = true;
|
|
Main.buffNoTimeDisplay[68] = true;
|
|
Main.buffNoTimeDisplay[81] = true;
|
|
Main.buffNoTimeDisplay[82] = true;
|
|
Main.buffNoTimeDisplay[83] = true;
|
|
Main.buffNoTimeDisplay[90] = true;
|
|
Main.buffNoTimeDisplay[95] = true;
|
|
Main.buffNoTimeDisplay[96] = true;
|
|
Main.buffNoTimeDisplay[97] = true;
|
|
Main.buffNoTimeDisplay[98] = true;
|
|
Main.buffNoTimeDisplay[99] = true;
|
|
Main.buffNoTimeDisplay[100] = true;
|
|
Main.buffNoTimeDisplay[101] = true;
|
|
Main.buffNoTimeDisplay[102] = true;
|
|
Main.buffNoTimeDisplay[118] = true;
|
|
Main.buffNoTimeDisplay[138] = true;
|
|
Main.buffNoTimeDisplay[167] = true;
|
|
Main.buffNoTimeDisplay[166] = true;
|
|
Main.buffNoTimeDisplay[184] = true;
|
|
Main.buffNoTimeDisplay[185] = true;
|
|
Main.buffNoTimeDisplay[211] = true;
|
|
Main.buffNoTimeDisplay[210] = true;
|
|
Main.buffNoTimeDisplay[125] = true;
|
|
Main.buffNoTimeDisplay[126] = true;
|
|
Main.buffNoTimeDisplay[128] = true;
|
|
Main.buffNoTimeDisplay[129] = true;
|
|
Main.buffNoTimeDisplay[130] = true;
|
|
Main.buffNoTimeDisplay[131] = true;
|
|
Main.buffNoTimeDisplay[132] = true;
|
|
Main.buffNoTimeDisplay[133] = true;
|
|
Main.buffNoTimeDisplay[134] = true;
|
|
Main.buffNoTimeDisplay[135] = true;
|
|
Main.buffNoTimeDisplay[136] = true;
|
|
Main.buffNoTimeDisplay[139] = true;
|
|
Main.buffNoTimeDisplay[140] = true;
|
|
Main.buffNoTimeDisplay[141] = true;
|
|
Main.buffNoTimeDisplay[142] = true;
|
|
Main.buffNoTimeDisplay[143] = true;
|
|
Main.buffNoTimeDisplay[137] = true;
|
|
Main.buffNoTimeDisplay[200] = true;
|
|
Main.buffNoTimeDisplay[202] = true;
|
|
Main.buffNoTimeDisplay[201] = true;
|
|
Main.buffNoTimeDisplay[161] = true;
|
|
Main.buffNoTimeDisplay[162] = true;
|
|
Main.buffNoTimeDisplay[163] = true;
|
|
Main.buffNoTimeDisplay[168] = true;
|
|
Main.buffNoTimeDisplay[170] = true;
|
|
Main.buffNoTimeDisplay[171] = true;
|
|
Main.buffNoTimeDisplay[172] = true;
|
|
Main.buffNoTimeDisplay[182] = true;
|
|
Main.buffNoTimeDisplay[165] = true;
|
|
Main.buffNoTimeDisplay[186] = true;
|
|
Main.buffNoTimeDisplay[187] = true;
|
|
Main.buffNoTimeDisplay[188] = true;
|
|
Main.buffNoTimeDisplay[193] = true;
|
|
Main.buffNoTimeDisplay[199] = true;
|
|
Main.buffNoTimeDisplay[212] = true;
|
|
Main.buffNoTimeDisplay[213] = true;
|
|
Main.buffNoTimeDisplay[214] = true;
|
|
Main.buffNoTimeDisplay[216] = true;
|
|
Main.buffNoTimeDisplay[217] = true;
|
|
Main.buffNoTimeDisplay[219] = true;
|
|
Main.buffNoTimeDisplay[230] = true;
|
|
Main.buffNoTimeDisplay[258] = true;
|
|
Main.buffNoTimeDisplay[259] = true;
|
|
Main.buffNoTimeDisplay[260] = true;
|
|
Main.buffNoTimeDisplay[261] = true;
|
|
Main.buffNoTimeDisplay[262] = true;
|
|
Main.buffNoTimeDisplay[263] = true;
|
|
Main.buffNoTimeDisplay[264] = true;
|
|
Main.buffNoTimeDisplay[265] = true;
|
|
Main.buffNoTimeDisplay[266] = true;
|
|
Main.buffNoTimeDisplay[267] = true;
|
|
Main.buffNoTimeDisplay[268] = true;
|
|
Main.buffNoTimeDisplay[271] = true;
|
|
Main.buffNoTimeDisplay[322] = true;
|
|
Main.buffNoTimeDisplay[274] = true;
|
|
Main.buffNoTimeDisplay[275] = true;
|
|
Main.buffNoTimeDisplay[276] = true;
|
|
Main.buffNoTimeDisplay[277] = true;
|
|
Main.buffNoTimeDisplay[278] = true;
|
|
Main.buffNoTimeDisplay[279] = true;
|
|
Main.buffNoTimeDisplay[280] = true;
|
|
Main.buffNoTimeDisplay[281] = true;
|
|
Main.buffNoTimeDisplay[282] = true;
|
|
Main.buffNoTimeDisplay[283] = true;
|
|
Main.buffNoTimeDisplay[284] = true;
|
|
Main.buffNoTimeDisplay[285] = true;
|
|
Main.buffNoTimeDisplay[286] = true;
|
|
Main.buffNoTimeDisplay[287] = true;
|
|
Main.buffNoTimeDisplay[288] = true;
|
|
Main.buffNoTimeDisplay[289] = true;
|
|
Main.buffNoTimeDisplay[290] = true;
|
|
Main.buffNoTimeDisplay[291] = true;
|
|
Main.buffNoTimeDisplay[292] = true;
|
|
Main.buffNoTimeDisplay[293] = true;
|
|
Main.buffNoTimeDisplay[294] = true;
|
|
Main.buffNoTimeDisplay[295] = true;
|
|
Main.buffNoTimeDisplay[296] = true;
|
|
Main.buffNoTimeDisplay[297] = true;
|
|
Main.buffNoTimeDisplay[298] = true;
|
|
Main.buffNoTimeDisplay[299] = true;
|
|
Main.buffNoTimeDisplay[300] = true;
|
|
Main.buffNoTimeDisplay[301] = true;
|
|
Main.buffNoTimeDisplay[302] = true;
|
|
Main.buffNoTimeDisplay[303] = true;
|
|
Main.buffNoTimeDisplay[304] = true;
|
|
Main.buffNoTimeDisplay[305] = true;
|
|
Main.buffNoTimeDisplay[317] = true;
|
|
Main.buffNoTimeDisplay[318] = true;
|
|
Main.buffNoTimeDisplay[320] = true;
|
|
Main.persistentBuff[71] = true;
|
|
Main.persistentBuff[73] = true;
|
|
Main.persistentBuff[74] = true;
|
|
Main.persistentBuff[75] = true;
|
|
Main.persistentBuff[76] = true;
|
|
Main.persistentBuff[77] = true;
|
|
Main.persistentBuff[78] = true;
|
|
Main.persistentBuff[79] = true;
|
|
for (int index = 0; index < BuffID.Sets.BasicMountData.Length; ++index)
|
|
{
|
|
if (BuffID.Sets.BasicMountData[index] != null)
|
|
{
|
|
Main.buffNoTimeDisplay[index] = true;
|
|
Main.buffNoSave[index] = true;
|
|
}
|
|
}
|
|
Main.vanityPet[40] = true;
|
|
Main.vanityPet[41] = true;
|
|
Main.vanityPet[42] = true;
|
|
Main.vanityPet[45] = true;
|
|
Main.vanityPet[50] = true;
|
|
Main.vanityPet[51] = true;
|
|
Main.vanityPet[52] = true;
|
|
Main.vanityPet[53] = true;
|
|
Main.vanityPet[54] = true;
|
|
Main.vanityPet[55] = true;
|
|
Main.vanityPet[56] = true;
|
|
Main.vanityPet[61] = true;
|
|
Main.vanityPet[154] = true;
|
|
Main.vanityPet[65] = true;
|
|
Main.vanityPet[66] = true;
|
|
Main.vanityPet[81] = true;
|
|
Main.vanityPet[82] = true;
|
|
Main.vanityPet[84] = true;
|
|
Main.vanityPet[85] = true;
|
|
Main.vanityPet[91] = true;
|
|
Main.vanityPet[92] = true;
|
|
Main.vanityPet[(int) sbyte.MaxValue] = true;
|
|
Main.vanityPet[136] = true;
|
|
Main.vanityPet[191] = true;
|
|
Main.vanityPet[202] = true;
|
|
Main.vanityPet[200] = true;
|
|
Main.vanityPet[218] = true;
|
|
Main.vanityPet[219] = true;
|
|
Main.vanityPet[217] = true;
|
|
Main.vanityPet[258] = true;
|
|
Main.vanityPet[259] = true;
|
|
Main.vanityPet[260] = true;
|
|
Main.vanityPet[261] = true;
|
|
Main.vanityPet[262] = true;
|
|
Main.vanityPet[264] = true;
|
|
Main.vanityPet[266] = true;
|
|
Main.vanityPet[267] = true;
|
|
Main.vanityPet[268] = true;
|
|
Main.vanityPet[274] = true;
|
|
Main.vanityPet[284] = true;
|
|
Main.vanityPet[285] = true;
|
|
Main.vanityPet[286] = true;
|
|
Main.vanityPet[287] = true;
|
|
Main.vanityPet[288] = true;
|
|
Main.vanityPet[289] = true;
|
|
Main.vanityPet[290] = true;
|
|
Main.vanityPet[291] = true;
|
|
Main.vanityPet[292] = true;
|
|
Main.vanityPet[293] = true;
|
|
Main.vanityPet[295] = true;
|
|
Main.vanityPet[296] = true;
|
|
Main.vanityPet[297] = true;
|
|
Main.vanityPet[300] = true;
|
|
Main.vanityPet[301] = true;
|
|
Main.vanityPet[302] = true;
|
|
Main.vanityPet[303] = true;
|
|
Main.vanityPet[304] = true;
|
|
Main.vanityPet[317] = true;
|
|
Main.lightPet[19] = true;
|
|
Main.lightPet[155] = true;
|
|
Main.lightPet[27] = true;
|
|
Main.lightPet[101] = true;
|
|
Main.lightPet[102] = true;
|
|
Main.lightPet[57] = true;
|
|
Main.lightPet[190] = true;
|
|
Main.lightPet[152] = true;
|
|
Main.lightPet[201] = true;
|
|
Main.lightPet[294] = true;
|
|
Main.lightPet[298] = true;
|
|
Main.lightPet[299] = true;
|
|
Main.tileFlame[4] = true;
|
|
Main.tileFlame[33] = true;
|
|
Main.tileFlame[34] = true;
|
|
Main.tileFlame[35] = true;
|
|
Main.tileFlame[42] = true;
|
|
Main.tileFlame[49] = true;
|
|
Main.tileFlame[93] = true;
|
|
Main.tileFlame[98] = true;
|
|
Main.tileFlame[100] = true;
|
|
Main.tileFlame[173] = true;
|
|
Main.tileFlame[174] = true;
|
|
Main.tileFlame[372] = true;
|
|
Main.tileRope[213] = true;
|
|
Main.tileRope[214] = true;
|
|
Main.tileRope[353] = true;
|
|
Main.tileRope[365] = true;
|
|
Main.tileRope[366] = true;
|
|
Main.tileRope[504] = true;
|
|
Main.tileRope[449] = true;
|
|
Main.tileRope[450] = true;
|
|
Main.tileRope[451] = true;
|
|
Main.tilePile[330] = true;
|
|
Main.tilePile[331] = true;
|
|
Main.tilePile[332] = true;
|
|
Main.tilePile[333] = true;
|
|
for (int index = 0; index < 663; ++index)
|
|
Main.npcCatchable[index] = false;
|
|
Main.npcCatchable[46] = true;
|
|
Main.npcCatchable[55] = true;
|
|
Main.npcCatchable[74] = true;
|
|
Main.npcCatchable[148] = true;
|
|
Main.npcCatchable[149] = true;
|
|
Main.npcCatchable[297] = true;
|
|
Main.npcCatchable[298] = true;
|
|
Main.npcCatchable[299] = true;
|
|
Main.npcCatchable[300] = true;
|
|
Main.npcCatchable[355] = true;
|
|
Main.npcCatchable[356] = true;
|
|
Main.npcCatchable[357] = true;
|
|
Main.npcCatchable[358] = true;
|
|
Main.npcCatchable[359] = true;
|
|
Main.npcCatchable[360] = true;
|
|
Main.npcCatchable[361] = true;
|
|
Main.npcCatchable[362] = true;
|
|
Main.npcCatchable[363] = true;
|
|
Main.npcCatchable[364] = true;
|
|
Main.npcCatchable[365] = true;
|
|
Main.npcCatchable[366] = true;
|
|
Main.npcCatchable[367] = true;
|
|
Main.npcCatchable[374] = true;
|
|
Main.npcCatchable[377] = true;
|
|
Main.npcCatchable[539] = true;
|
|
Main.npcCatchable[538] = true;
|
|
Main.npcCatchable[484] = true;
|
|
Main.npcCatchable[485] = true;
|
|
Main.npcCatchable[486] = true;
|
|
Main.npcCatchable[487] = true;
|
|
Main.npcCatchable[583] = true;
|
|
Main.npcCatchable[584] = true;
|
|
Main.npcCatchable[585] = true;
|
|
Main.npcCatchable[592] = true;
|
|
Main.npcCatchable[593] = true;
|
|
Main.npcCatchable[595] = true;
|
|
Main.npcCatchable[596] = true;
|
|
Main.npcCatchable[597] = true;
|
|
Main.npcCatchable[598] = true;
|
|
Main.npcCatchable[599] = true;
|
|
Main.npcCatchable[600] = true;
|
|
Main.npcCatchable[601] = true;
|
|
Main.npcCatchable[604] = true;
|
|
Main.npcCatchable[605] = true;
|
|
Main.npcCatchable[602] = true;
|
|
Main.npcCatchable[603] = true;
|
|
Main.npcCatchable[606] = true;
|
|
Main.npcCatchable[607] = true;
|
|
Main.npcCatchable[608] = true;
|
|
Main.npcCatchable[609] = true;
|
|
Main.npcCatchable[610] = true;
|
|
Main.npcCatchable[611] = true;
|
|
Main.npcCatchable[612] = true;
|
|
Main.npcCatchable[613] = true;
|
|
Main.npcCatchable[614] = true;
|
|
Main.npcCatchable[616] = true;
|
|
Main.npcCatchable[617] = true;
|
|
Main.npcCatchable[626] = true;
|
|
Main.npcCatchable[627] = true;
|
|
Main.npcCatchable[639] = true;
|
|
Main.npcCatchable[640] = true;
|
|
Main.npcCatchable[641] = true;
|
|
Main.npcCatchable[642] = true;
|
|
Main.npcCatchable[643] = true;
|
|
Main.npcCatchable[644] = true;
|
|
Main.npcCatchable[645] = true;
|
|
Main.npcCatchable[646] = true;
|
|
Main.npcCatchable[647] = true;
|
|
Main.npcCatchable[648] = true;
|
|
Main.npcCatchable[649] = true;
|
|
Main.npcCatchable[650] = true;
|
|
Main.npcCatchable[651] = true;
|
|
Main.npcCatchable[652] = true;
|
|
Main.npcCatchable[653] = true;
|
|
Main.npcCatchable[654] = true;
|
|
Main.npcCatchable[655] = true;
|
|
Main.npcCatchable[661] = true;
|
|
for (int index = 442; index <= 448; ++index)
|
|
Main.npcCatchable[index] = true;
|
|
Main.SetTileValue();
|
|
Main.tileSpelunker[6] = true;
|
|
Main.tileSpelunker[7] = true;
|
|
Main.tileSpelunker[8] = true;
|
|
Main.tileSpelunker[9] = true;
|
|
Main.tileSpelunker[12] = true;
|
|
Main.tileSpelunker[21] = true;
|
|
Main.tileSpelunker[467] = true;
|
|
Main.tileSpelunker[441] = true;
|
|
Main.tileSpelunker[468] = true;
|
|
Main.tileSpelunker[28] = true;
|
|
Main.tileSpelunker[107] = true;
|
|
Main.tileSpelunker[108] = true;
|
|
Main.tileSpelunker[111] = true;
|
|
Main.tileSpelunker[63] = true;
|
|
Main.tileSpelunker[64] = true;
|
|
Main.tileSpelunker[65] = true;
|
|
Main.tileSpelunker[66] = true;
|
|
Main.tileSpelunker[67] = true;
|
|
Main.tileSpelunker[68] = true;
|
|
Main.tileSpelunker[566] = true;
|
|
Main.tileSpelunker[166] = true;
|
|
Main.tileSpelunker[167] = true;
|
|
Main.tileSpelunker[168] = true;
|
|
Main.tileSpelunker[169] = true;
|
|
Main.tileSpelunker[178] = true;
|
|
Main.tileSpelunker[211] = true;
|
|
Main.tileSpelunker[221] = true;
|
|
Main.tileSpelunker[222] = true;
|
|
Main.tileSpelunker[223] = true;
|
|
Main.tileSpelunker[236] = true;
|
|
Main.tileSpelunker[37] = true;
|
|
Main.tileSpelunker[407] = true;
|
|
Main.tileSpelunker[227] = true;
|
|
Main.tileSpelunker[84] = true;
|
|
Main.tileSpelunker[83] = true;
|
|
Main.tileSpelunker[404] = true;
|
|
Main.SetupTileMerge();
|
|
Main.tileSolid[379] = true;
|
|
Main.tileMergeDirt[249] = true;
|
|
Main.tileBrick[268] = true;
|
|
Main.tileBrick[262] = true;
|
|
Main.tileBrick[267] = true;
|
|
Main.tileBrick[265] = true;
|
|
Main.tileBrick[266] = true;
|
|
Main.tileBrick[264] = true;
|
|
Main.tileBrick[263] = true;
|
|
Main.tileSolid[371] = true;
|
|
Main.tileMergeDirt[371] = true;
|
|
Main.tileBlockLight[371] = true;
|
|
Main.tileBouncy[371] = true;
|
|
Main.tileBouncy[448] = true;
|
|
Main.tileBouncy[446] = true;
|
|
Main.tileBouncy[447] = true;
|
|
Main.tileFrameImportant[377] = true;
|
|
Main.tileFrameImportant[373] = true;
|
|
Main.tileFrameImportant[375] = true;
|
|
Main.tileFrameImportant[374] = true;
|
|
Main.tileFrameImportant[461] = true;
|
|
Main.tileLighted[372] = true;
|
|
Main.tileFrameImportant[372] = true;
|
|
Main.tileWaterDeath[372] = true;
|
|
Main.tileLavaDeath[372] = true;
|
|
Main.tileSolid[357] = true;
|
|
Main.tileBrick[357] = true;
|
|
Main.tileBrick[311] = true;
|
|
Main.tileSolid[408] = true;
|
|
Main.tileMergeDirt[408] = true;
|
|
Main.tileBrick[408] = true;
|
|
Main.tileSolid[409] = true;
|
|
Main.tileBrick[409] = true;
|
|
Main.tileSolid[415] = true;
|
|
Main.tileBrick[415] = true;
|
|
Main.tileLighted[415] = true;
|
|
Main.tileSolid[416] = true;
|
|
Main.tileBrick[416] = true;
|
|
Main.tileLighted[416] = true;
|
|
Main.tileSolid[417] = true;
|
|
Main.tileBrick[417] = true;
|
|
Main.tileLighted[417] = true;
|
|
Main.tileSolid[418] = true;
|
|
Main.tileBrick[418] = true;
|
|
Main.tileLighted[418] = true;
|
|
Main.tileSolid[498] = true;
|
|
Main.tileBrick[498] = true;
|
|
Main.tileBlockLight[498] = true;
|
|
Main.tileBrick[37] = true;
|
|
Main.tileBrick[117] = true;
|
|
Main.tileBrick[25] = true;
|
|
Main.tileBrick[203] = true;
|
|
Main.tileSolid[232] = true;
|
|
Main.tileSolid[311] = true;
|
|
Main.tileSolid[312] = true;
|
|
Main.tileSolid[313] = true;
|
|
Main.tileMergeDirt[311] = true;
|
|
Main.tileSolid[315] = true;
|
|
Main.tileMergeDirt[315] = true;
|
|
Main.tileSolid[321] = true;
|
|
Main.tileSolid[322] = true;
|
|
Main.tileBlockLight[321] = true;
|
|
Main.tileBlockLight[322] = true;
|
|
Main.tileMergeDirt[321] = true;
|
|
Main.tileMergeDirt[322] = true;
|
|
Main.tileBrick[321] = true;
|
|
Main.tileBrick[322] = true;
|
|
Main.tileShine[239] = 1100;
|
|
Main.tileSolid[239] = true;
|
|
Main.tileSolidTop[239] = true;
|
|
Main.tileSolid[380] = true;
|
|
Main.tileSolidTop[380] = true;
|
|
Main.tileFrameImportant[358] = true;
|
|
Main.tileFrameImportant[359] = true;
|
|
Main.tileFrameImportant[360] = true;
|
|
Main.tileFrameImportant[361] = true;
|
|
Main.tileFrameImportant[362] = true;
|
|
Main.tileFrameImportant[363] = true;
|
|
Main.tileFrameImportant[364] = true;
|
|
Main.tileFrameImportant[391] = true;
|
|
Main.tileLighted[391] = true;
|
|
Main.tileFrameImportant[392] = true;
|
|
Main.tileFrameImportant[393] = true;
|
|
Main.tileFrameImportant[394] = true;
|
|
Main.tileFrameImportant[542] = true;
|
|
Main.tileFrameImportant[505] = true;
|
|
Main.tileFrameImportant[521] = true;
|
|
Main.tileFrameImportant[522] = true;
|
|
Main.tileFrameImportant[523] = true;
|
|
Main.tileFrameImportant[524] = true;
|
|
Main.tileFrameImportant[525] = true;
|
|
Main.tileFrameImportant[526] = true;
|
|
Main.tileFrameImportant[527] = true;
|
|
Main.tileFrameImportant[543] = true;
|
|
Main.tileFrameImportant[568] = true;
|
|
Main.tileFrameImportant[569] = true;
|
|
Main.tileFrameImportant[570] = true;
|
|
Main.tileFrameImportant[598] = true;
|
|
Main.tileFrameImportant[356] = true;
|
|
Main.tileFrameImportant[334] = true;
|
|
Main.tileFrameImportant[440] = true;
|
|
Main.tileFrameImportant[471] = true;
|
|
Main.tileFrameImportant[300] = true;
|
|
Main.tileFrameImportant[301] = true;
|
|
Main.tileFrameImportant[302] = true;
|
|
Main.tileFrameImportant[303] = true;
|
|
Main.tileFrameImportant[304] = true;
|
|
Main.tileFrameImportant[305] = true;
|
|
Main.tileFrameImportant[306] = true;
|
|
Main.tileFrameImportant[307] = true;
|
|
Main.tileFrameImportant[308] = true;
|
|
Main.tileFrameImportant[354] = true;
|
|
Main.tileLighted[354] = true;
|
|
Main.tileFrameImportant[499] = true;
|
|
Main.tileFrameImportant[355] = true;
|
|
Main.tileFrameImportant[324] = true;
|
|
Main.tileObsidianKill[324] = true;
|
|
Main.tileLavaDeath[324] = true;
|
|
Main.tileFrameImportant[463] = true;
|
|
Main.tileFrameImportant[491] = true;
|
|
Main.tileFrameImportant[464] = true;
|
|
Main.tileFrameImportant[466] = true;
|
|
Main.tileFrameImportant[419] = true;
|
|
Main.tileFrameImportant[442] = true;
|
|
Main.tileFrameImportant[443] = true;
|
|
Main.tileFrameImportant[444] = true;
|
|
Main.tileFrameImportant[420] = true;
|
|
Main.tileFrameImportant[423] = true;
|
|
Main.tileFrameImportant[424] = true;
|
|
Main.tileFrameImportant[428] = true;
|
|
Main.tileFrameImportant[520] = true;
|
|
Main.tileFrameImportant[429] = true;
|
|
Main.tileFrameImportant[445] = true;
|
|
Main.tileFrameImportant[476] = true;
|
|
Main.tileFrameImportant[283] = true;
|
|
Main.tileFrameImportant[288] = true;
|
|
Main.tileFrameImportant[289] = true;
|
|
Main.tileFrameImportant[290] = true;
|
|
Main.tileFrameImportant[291] = true;
|
|
Main.tileFrameImportant[292] = true;
|
|
Main.tileFrameImportant[293] = true;
|
|
Main.tileFrameImportant[294] = true;
|
|
Main.tileFrameImportant[295] = true;
|
|
Main.tileFrameImportant[296] = true;
|
|
Main.tileFrameImportant[297] = true;
|
|
Main.tileFrameImportant[316] = true;
|
|
Main.tileFrameImportant[317] = true;
|
|
Main.tileFrameImportant[318] = true;
|
|
Main.tileLargeFrames[284] = (byte) 1;
|
|
Main.wallHouse[224] = true;
|
|
Main.wallLargeFrames[224] = (byte) 2;
|
|
Main.wallHouse[60] = true;
|
|
Main.wallHouse[225] = true;
|
|
Main.wallHouse[226] = true;
|
|
Main.wallHouse[227] = true;
|
|
Main.wallHouse[231] = true;
|
|
Main.wallHouse[232] = true;
|
|
Main.wallHouse[233] = true;
|
|
Main.wallHouse[235] = true;
|
|
Main.wallHouse[234] = true;
|
|
Main.wallHouse[312] = true;
|
|
Main.wallHouse[313] = true;
|
|
Main.wallHouse[237] = true;
|
|
Main.wallHouse[238] = true;
|
|
Main.wallHouse[239] = true;
|
|
Main.wallHouse[240] = true;
|
|
Main.tileLargeFrames[409] = (byte) 2;
|
|
Main.tileFrameImportant[410] = true;
|
|
Main.tileFrameImportant[480] = true;
|
|
Main.tileFrameImportant[509] = true;
|
|
Main.wallHouse[173] = true;
|
|
Main.wallHouse[183] = true;
|
|
Main.wallHouse[179] = true;
|
|
Main.wallLargeFrames[179] = (byte) 1;
|
|
Main.tileSolid[367] = true;
|
|
Main.tileBlockLight[367] = true;
|
|
Main.tileMergeDirt[367] = true;
|
|
Main.tileSolid[357] = true;
|
|
Main.tileBlockLight[357] = true;
|
|
Main.tileLargeFrames[357] = (byte) 1;
|
|
Main.tileBlendAll[357] = true;
|
|
Main.wallHouse[184] = true;
|
|
Main.wallHouse[181] = true;
|
|
Main.tileSolid[368] = true;
|
|
Main.tileBlockLight[368] = true;
|
|
Main.tileMergeDirt[368] = true;
|
|
Main.tileSolid[369] = true;
|
|
Main.tileBlockLight[369] = true;
|
|
Main.tileBrick[369] = true;
|
|
Main.tileMergeDirt[369] = true;
|
|
Main.wallHouse[186] = true;
|
|
Main.tileLargeFrames[325] = (byte) 1;
|
|
Main.tileSolid[325] = true;
|
|
Main.tileBlockLight[325] = true;
|
|
Main.wallLargeFrames[146] = (byte) 1;
|
|
Main.wallLargeFrames[147] = (byte) 1;
|
|
Main.wallLargeFrames[167] = (byte) 1;
|
|
Main.wallLargeFrames[185] = (byte) 2;
|
|
Main.wallLargeFrames[274] = (byte) 2;
|
|
Main.tileSolid[460] = true;
|
|
Main.tileSolid[326] = true;
|
|
Main.tileBlockLight[326] = true;
|
|
Main.tileBrick[326] = true;
|
|
Main.tileSolid[458] = true;
|
|
Main.tileBlockLight[458] = true;
|
|
Main.tileBrick[458] = true;
|
|
Main.tileSolid[459] = true;
|
|
Main.tileBrick[459] = true;
|
|
Main.tileSolid[327] = true;
|
|
Main.tileBlockLight[327] = true;
|
|
Main.tileBrick[327] = true;
|
|
Main.tileSolid[345] = true;
|
|
Main.tileBlockLight[345] = true;
|
|
Main.tileBrick[345] = true;
|
|
Main.tileLighted[327] = true;
|
|
Main.tileSolid[328] = true;
|
|
Main.tileBrick[328] = true;
|
|
Main.tileSolid[329] = true;
|
|
Main.tileBrick[329] = true;
|
|
Main.tileBlockLight[329] = true;
|
|
Main.tileSolid[507] = true;
|
|
Main.tileBlockLight[507] = true;
|
|
Main.tileBrick[507] = true;
|
|
Main.tileSolid[508] = true;
|
|
Main.tileBlockLight[508] = true;
|
|
Main.tileBrick[508] = true;
|
|
Main.tileLighted[336] = true;
|
|
Main.tileLighted[340] = true;
|
|
Main.tileLighted[341] = true;
|
|
Main.tileLighted[342] = true;
|
|
Main.tileLighted[343] = true;
|
|
Main.tileLighted[344] = true;
|
|
Main.tileLighted[349] = true;
|
|
Main.tileLighted[598] = true;
|
|
Main.tileSolid[421] = true;
|
|
Main.tileBlockLight[421] = true;
|
|
Main.tileSolid[422] = true;
|
|
Main.tileBlockLight[422] = true;
|
|
Main.tileSolid[426] = true;
|
|
Main.tileBlockLight[426] = true;
|
|
Main.tileSolid[430] = true;
|
|
Main.tileBlockLight[430] = true;
|
|
Main.tileSolid[431] = true;
|
|
Main.tileBlockLight[431] = true;
|
|
Main.tileSolid[432] = true;
|
|
Main.tileBlockLight[432] = true;
|
|
Main.tileSolid[433] = true;
|
|
Main.tileBlockLight[433] = true;
|
|
Main.tileSolid[434] = true;
|
|
Main.tileBlockLight[434] = true;
|
|
Main.tileSolid[446] = true;
|
|
Main.tileSolid[447] = true;
|
|
Main.tileSolid[448] = true;
|
|
Main.tileFrameImportant[427] = true;
|
|
Main.tileSolidTop[427] = true;
|
|
Main.tileSolid[427] = true;
|
|
Main.tileNoAttach[427] = true;
|
|
Main.tileTable[427] = true;
|
|
Main.tileLavaDeath[427] = true;
|
|
Main.tileNoSunLight[427] = false;
|
|
Main.tileSolid[476] = true;
|
|
for (int index = 435; index <= 439; ++index)
|
|
{
|
|
Main.tileFrameImportant[index] = true;
|
|
Main.tileSolidTop[index] = true;
|
|
Main.tileSolid[index] = true;
|
|
Main.tileNoAttach[index] = true;
|
|
Main.tileTable[index] = true;
|
|
Main.tileLavaDeath[index] = true;
|
|
Main.tileNoSunLight[index] = false;
|
|
}
|
|
Main.tileSolid[284] = true;
|
|
Main.tileBlockLight[284] = true;
|
|
Main.tileSolid[346] = true;
|
|
Main.tileBlockLight[346] = true;
|
|
Main.tileLighted[346] = true;
|
|
Main.tileShine[346] = 2000;
|
|
Main.tileShine2[346] = true;
|
|
Main.tileBrick[346] = true;
|
|
Main.tileMergeDirt[346] = true;
|
|
Main.tileSolid[347] = true;
|
|
Main.tileBlockLight[347] = true;
|
|
Main.tileLighted[347] = true;
|
|
Main.tileShine[347] = 1900;
|
|
Main.tileShine2[347] = true;
|
|
Main.tileBrick[347] = true;
|
|
Main.tileMergeDirt[347] = true;
|
|
Main.tileSolid[348] = true;
|
|
Main.tileBlockLight[348] = true;
|
|
Main.tileLighted[348] = true;
|
|
Main.tileShine[348] = 1800;
|
|
Main.tileShine2[348] = true;
|
|
Main.tileBrick[348] = true;
|
|
Main.tileMergeDirt[348] = true;
|
|
Main.tileSolid[350] = true;
|
|
Main.tileBlockLight[350] = true;
|
|
Main.tileLighted[350] = true;
|
|
Main.tileBrick[350] = true;
|
|
Main.tileMergeDirt[350] = true;
|
|
Main.tileGlowMask[350] = (short) 94;
|
|
Main.tileGlowMask[390] = (short) 130;
|
|
Main.tileGlowMask[381] = (short) 126;
|
|
Main.tileGlowMask[517] = (short) 258;
|
|
Main.tileGlowMask[534] = (short) 259;
|
|
Main.tileGlowMask[535] = (short) 260;
|
|
Main.tileGlowMask[536] = (short) 261;
|
|
Main.tileGlowMask[537] = (short) 262;
|
|
Main.tileGlowMask[539] = (short) 263;
|
|
Main.tileGlowMask[540] = (short) 264;
|
|
Main.tileGlowMask[370] = (short) 111;
|
|
Main.tileGlowMask[429] = (short) 214;
|
|
Main.tileGlowMask[209] = (short) 215;
|
|
Main.tileGlowMask[445] = (short) 214;
|
|
Main.tileGlowMask[129] = (short) -2;
|
|
Main.tileLighted[429] = true;
|
|
Main.tileLighted[209] = true;
|
|
Main.tileGlowMask[410] = (short) 201;
|
|
Main.tileGlowMask[509] = (short) 265;
|
|
Main.tileSolid[370] = true;
|
|
Main.tileBlockLight[370] = true;
|
|
Main.tileLighted[370] = true;
|
|
Main.tileShine[370] = 1900;
|
|
Main.tileShine2[370] = true;
|
|
Main.tileBrick[370] = true;
|
|
Main.tileMergeDirt[370] = true;
|
|
Main.tileContainer[21] = true;
|
|
Main.tileContainer[467] = true;
|
|
Main.tileContainer[88] = true;
|
|
Main.tileContainer[470] = true;
|
|
Main.tileContainer[475] = true;
|
|
Main.tileSign[55] = true;
|
|
Main.tileSign[85] = true;
|
|
Main.tileSign[425] = true;
|
|
Main.tileSign[573] = true;
|
|
Main.tileSolid[383] = true;
|
|
Main.tileBrick[383] = true;
|
|
Main.tileBlockLight[383] = true;
|
|
Main.tileSolid[385] = true;
|
|
Main.tileBrick[385] = true;
|
|
Main.tileBlockLight[385] = true;
|
|
Main.tileSolid[472] = true;
|
|
Main.tileBrick[472] = true;
|
|
Main.tileMergeDirt[472] = true;
|
|
Main.tileBlockLight[472] = true;
|
|
Main.tileSolid[473] = true;
|
|
Main.tileBrick[473] = true;
|
|
Main.tileMergeDirt[473] = true;
|
|
Main.tileBlockLight[473] = true;
|
|
Main.tileSolid[500] = true;
|
|
Main.tileBrick[500] = true;
|
|
Main.tileLighted[500] = true;
|
|
Main.tileMergeDirt[500] = true;
|
|
Main.tileBlockLight[500] = true;
|
|
Main.tileSolid[501] = true;
|
|
Main.tileBrick[501] = true;
|
|
Main.tileLighted[501] = true;
|
|
Main.tileMergeDirt[501] = true;
|
|
Main.tileBlockLight[501] = true;
|
|
Main.tileSolid[502] = true;
|
|
Main.tileBrick[502] = true;
|
|
Main.tileLighted[502] = true;
|
|
Main.tileMergeDirt[502] = true;
|
|
Main.tileBlockLight[502] = true;
|
|
Main.tileSolid[503] = true;
|
|
Main.tileBrick[503] = true;
|
|
Main.tileLighted[503] = true;
|
|
Main.tileMergeDirt[503] = true;
|
|
Main.tileBlockLight[503] = true;
|
|
Main.tileSolid[541] = true;
|
|
Main.tileBlockLight[541] = false;
|
|
Main.tileSolid[546] = true;
|
|
Main.tileBlockLight[546] = false;
|
|
Main.tileSolid[557] = true;
|
|
Main.tileBlockLight[557] = true;
|
|
Main.tileSolid[474] = true;
|
|
Main.tileBrick[474] = true;
|
|
Main.tileMergeDirt[474] = true;
|
|
Main.tileBlockLight[474] = true;
|
|
Main.tileSolid[478] = true;
|
|
Main.tileBrick[478] = true;
|
|
Main.tileMergeDirt[478] = true;
|
|
Main.tileBlockLight[478] = true;
|
|
Main.tileSolid[479] = true;
|
|
Main.tileBrick[479] = true;
|
|
Main.tileMergeDirt[479] = true;
|
|
Main.tileBlockLight[479] = true;
|
|
Main.tileSolid[562] = true;
|
|
Main.tileBrick[562] = true;
|
|
Main.tileBlockLight[562] = true;
|
|
Main.tileMergeDirt[562] = true;
|
|
Main.tileSolid[563] = true;
|
|
Main.tileBrick[563] = true;
|
|
Main.tileBlockLight[563] = true;
|
|
Main.tileMergeDirt[563] = true;
|
|
Main.tileSolid[496] = true;
|
|
Main.tileBrick[496] = true;
|
|
Main.tileMergeDirt[496] = true;
|
|
Main.tileBlockLight[496] = true;
|
|
Main.tileSolid[495] = true;
|
|
Main.tileBrick[495] = true;
|
|
Main.tileMergeDirt[495] = true;
|
|
Main.tileBlockLight[495] = true;
|
|
Main.tileSolid[396] = true;
|
|
Main.tileBlockLight[396] = true;
|
|
Main.tileSolid[397] = true;
|
|
Main.tileBlockLight[397] = true;
|
|
Main.tileSolid[399] = true;
|
|
Main.tileBlockLight[399] = true;
|
|
Main.tileSolid[401] = true;
|
|
Main.tileBlockLight[401] = true;
|
|
Main.tileSolid[398] = true;
|
|
Main.tileBlockLight[398] = true;
|
|
Main.tileSolid[400] = true;
|
|
Main.tileBlockLight[400] = true;
|
|
Main.tileSolid[402] = true;
|
|
Main.tileBlockLight[402] = true;
|
|
Main.tileSolid[403] = true;
|
|
Main.tileBlockLight[403] = true;
|
|
Main.tileSolid[404] = true;
|
|
Main.tileBlockLight[404] = true;
|
|
Main.tileSolid[407] = true;
|
|
Main.tileBlockLight[407] = true;
|
|
Main.tileShine2[407] = true;
|
|
Main.tileShine[407] = 1000;
|
|
Main.tileFrameImportant[36] = true;
|
|
Main.tileFrameImportant[275] = true;
|
|
Main.tileFrameImportant[276] = true;
|
|
Main.tileFrameImportant[277] = true;
|
|
Main.tileFrameImportant[278] = true;
|
|
Main.tileFrameImportant[279] = true;
|
|
Main.tileFrameImportant[280] = true;
|
|
Main.tileFrameImportant[281] = true;
|
|
Main.tileFrameImportant[282] = true;
|
|
Main.tileFrameImportant[285] = true;
|
|
Main.tileFrameImportant[286] = true;
|
|
Main.tileFrameImportant[414] = true;
|
|
Main.tileFrameImportant[413] = true;
|
|
Main.tileFrameImportant[309] = true;
|
|
Main.tileFrameImportant[310] = true;
|
|
Main.tileFrameImportant[339] = true;
|
|
Main.tileFrameImportant[532] = true;
|
|
Main.tileLighted[286] = true;
|
|
Main.tileLighted[302] = true;
|
|
Main.tileFrameImportant[298] = true;
|
|
Main.tileFrameImportant[299] = true;
|
|
Main.tileSolid[170] = true;
|
|
Main.tileBlockLight[170] = true;
|
|
Main.tileFrameImportant[171] = true;
|
|
Main.tileLighted[171] = true;
|
|
Main.tileFrameImportant[247] = true;
|
|
Main.tileFrameImportant[245] = true;
|
|
Main.tileFrameImportant[246] = true;
|
|
Main.tileFrameImportant[239] = true;
|
|
Main.tileFrameImportant[240] = true;
|
|
Main.tileFrameImportant[241] = true;
|
|
Main.tileFrameImportant[242] = true;
|
|
Main.tileFrameImportant[243] = true;
|
|
Main.tileFrameImportant[244] = true;
|
|
Main.tileFrameImportant[254] = true;
|
|
Main.tileSolid[221] = true;
|
|
Main.tileBlockLight[221] = true;
|
|
Main.tileMergeDirt[221] = true;
|
|
Main.tileLighted[96] = true;
|
|
Main.tileMergeDirt[250] = true;
|
|
Main.tileSolid[272] = true;
|
|
Main.tileBlockLight[272] = true;
|
|
Main.tileSolid[229] = true;
|
|
Main.tileBlockLight[229] = true;
|
|
Main.tileMergeDirt[229] = true;
|
|
Main.tileSolid[230] = true;
|
|
Main.tileBlockLight[230] = true;
|
|
Main.tileMergeDirt[230] = true;
|
|
Main.tileSolid[222] = true;
|
|
Main.tileBlockLight[222] = true;
|
|
Main.tileMergeDirt[222] = true;
|
|
Main.tileSolid[223] = true;
|
|
Main.tileBlockLight[223] = true;
|
|
Main.tileMergeDirt[223] = true;
|
|
Main.tileSolid[224] = true;
|
|
Main.tileBlockLight[224] = true;
|
|
Main.tileFrameImportant[237] = true;
|
|
Main.tileFrameImportant[238] = true;
|
|
Main.tileSolid[225] = true;
|
|
Main.tileBlockLight[225] = true;
|
|
Main.tileBrick[225] = true;
|
|
Main.tileSolid[226] = true;
|
|
Main.tileBlockLight[226] = true;
|
|
Main.tileBrick[226] = true;
|
|
Main.tileSolid[235] = true;
|
|
Main.tileBlockLight[235] = true;
|
|
Main.tileFrameImportant[235] = true;
|
|
Main.tileLighted[238] = true;
|
|
Main.tileCut[254] = true;
|
|
Main.tileFrameImportant[236] = true;
|
|
Main.tileCut[236] = true;
|
|
Main.tileSolid[191] = true;
|
|
Main.tileBrick[191] = true;
|
|
Main.tileBlockLight[191] = true;
|
|
Main.tileSolid[211] = true;
|
|
Main.tileBlockLight[211] = true;
|
|
Main.tileSolid[208] = true;
|
|
Main.tileBrick[208] = true;
|
|
Main.tileBlockLight[208] = true;
|
|
Main.tileSolid[192] = true;
|
|
Main.tileBlockLight[192] = true;
|
|
Main.tileSolid[193] = true;
|
|
Main.tileBrick[193] = true;
|
|
Main.tileBlockLight[193] = true;
|
|
Main.tileMergeDirt[193] = true;
|
|
Main.tileSolid[194] = true;
|
|
Main.tileBrick[194] = true;
|
|
Main.tileBlockLight[194] = true;
|
|
Main.tileSolid[195] = true;
|
|
Main.tileBrick[195] = true;
|
|
Main.tileMergeDirt[195] = true;
|
|
Main.tileBlockLight[195] = true;
|
|
Main.tileBlockLight[200] = true;
|
|
Main.tileSolid[200] = true;
|
|
Main.tileBrick[200] = true;
|
|
Main.tileBlockLight[203] = true;
|
|
Main.tileSolid[203] = true;
|
|
Main.tileMergeDirt[203] = true;
|
|
Main.tileBlockLight[204] = true;
|
|
Main.tileSolid[204] = true;
|
|
Main.tileMergeDirt[204] = true;
|
|
Main.tileBlockLight[165] = true;
|
|
Main.tileShine2[147] = true;
|
|
Main.tileShine2[161] = true;
|
|
Main.tileShine2[163] = true;
|
|
Main.tileShine2[164] = true;
|
|
Main.tileSolid[189] = true;
|
|
Main.tileBlockLight[51] = true;
|
|
Main.tileLighted[204] = true;
|
|
Main.tileShine[204] = 1150;
|
|
Main.tileShine2[204] = true;
|
|
Main.tileSolid[190] = true;
|
|
Main.tileBlockLight[190] = true;
|
|
Main.tileBrick[190] = true;
|
|
Main.tileSolid[198] = true;
|
|
Main.tileMergeDirt[198] = true;
|
|
Main.tileBrick[198] = true;
|
|
Main.tileBlockLight[198] = true;
|
|
Main.tileSolid[206] = true;
|
|
Main.tileBlockLight[206] = true;
|
|
Main.tileMergeDirt[206] = true;
|
|
Main.tileBrick[206] = true;
|
|
Main.tileBlockLight[234] = true;
|
|
Main.tileSolid[248] = true;
|
|
Main.tileSolid[249] = true;
|
|
Main.tileSolid[250] = true;
|
|
Main.tileBrick[248] = true;
|
|
Main.tileBrick[249] = true;
|
|
Main.tileBrick[250] = true;
|
|
Main.tileSolid[251] = true;
|
|
Main.tileSolid[252] = true;
|
|
Main.tileBrick[252] = true;
|
|
Main.tileSolid[253] = true;
|
|
Main.tileBrick[253] = true;
|
|
Main.tileMergeDirt[251] = true;
|
|
Main.tileMergeDirt[252] = true;
|
|
Main.tileMergeDirt[253] = true;
|
|
Main.tileBlockLight[251] = true;
|
|
Main.tileBlockLight[252] = true;
|
|
Main.tileBlockLight[253] = true;
|
|
Main.tileBlockLight[248] = true;
|
|
Main.tileBlockLight[249] = true;
|
|
Main.tileBlockLight[250] = true;
|
|
Main.tileLargeFrames[273] = (byte) 1;
|
|
Main.tileSolid[273] = true;
|
|
Main.tileBlockLight[273] = true;
|
|
Main.tileLargeFrames[274] = (byte) 1;
|
|
Main.tileSolid[274] = true;
|
|
Main.tileBlockLight[274] = true;
|
|
Main.tileLargeFrames[618] = (byte) 1;
|
|
Main.tileSolid[618] = true;
|
|
Main.tileBlockLight[618] = true;
|
|
for (int maxValue = (int) byte.MaxValue; maxValue <= 268; ++maxValue)
|
|
{
|
|
Main.tileSolid[maxValue] = true;
|
|
if (maxValue > 261)
|
|
{
|
|
Main.tileLighted[maxValue] = true;
|
|
Main.tileShine2[maxValue] = true;
|
|
}
|
|
}
|
|
Main.tileFrameImportant[269] = true;
|
|
Main.tileFrameImportant[470] = true;
|
|
Main.tileFrameImportant[475] = true;
|
|
Main.tileFrameImportant[390] = true;
|
|
Main.tileFrameImportant[597] = true;
|
|
Main.tileLighted[597] = true;
|
|
Main.tileNoAttach[390] = true;
|
|
Main.tileLavaDeath[390] = true;
|
|
Main.tileLighted[390] = true;
|
|
Main.tileFrameImportant[617] = true;
|
|
Main.wallHouse[168] = true;
|
|
Main.wallHouse[169] = true;
|
|
Main.wallHouse[142] = true;
|
|
Main.wallHouse[143] = true;
|
|
Main.wallHouse[144] = true;
|
|
Main.wallHouse[149] = true;
|
|
Main.wallHouse[151] = true;
|
|
Main.wallHouse[150] = true;
|
|
Main.wallHouse[152] = true;
|
|
Main.wallHouse[145] = true;
|
|
Main.wallHouse[148] = true;
|
|
Main.wallHouse[175] = true;
|
|
Main.wallHouse[176] = true;
|
|
Main.wallHouse[182] = true;
|
|
for (int index = 153; index < 167; ++index)
|
|
Main.wallHouse[index] = true;
|
|
Main.wallHouse[146] = true;
|
|
Main.wallHouse[147] = true;
|
|
Main.wallHouse[149] = true;
|
|
Main.wallHouse[167] = true;
|
|
Main.wallHouse[168] = true;
|
|
Main.wallHouse[133] = true;
|
|
Main.wallHouse[134] = true;
|
|
Main.wallHouse[135] = true;
|
|
Main.wallHouse[136] = true;
|
|
Main.wallHouse[137] = true;
|
|
Main.wallHouse[75] = true;
|
|
Main.wallHouse[76] = true;
|
|
Main.wallHouse[78] = true;
|
|
Main.wallHouse[82] = true;
|
|
Main.wallHouse[77] = true;
|
|
Main.wallHouse[1] = true;
|
|
Main.wallHouse[4] = true;
|
|
Main.wallHouse[5] = true;
|
|
Main.wallHouse[6] = true;
|
|
Main.wallHouse[10] = true;
|
|
Main.wallHouse[11] = true;
|
|
Main.wallHouse[12] = true;
|
|
Main.wallHouse[16] = true;
|
|
Main.wallHouse[17] = true;
|
|
Main.wallHouse[18] = true;
|
|
Main.wallHouse[19] = true;
|
|
Main.wallHouse[20] = true;
|
|
Main.wallHouse[21] = true;
|
|
Main.wallHouse[22] = true;
|
|
Main.wallHouse[23] = true;
|
|
Main.wallHouse[24] = true;
|
|
Main.wallHouse[25] = true;
|
|
Main.wallHouse[26] = true;
|
|
Main.wallHouse[27] = true;
|
|
Main.wallHouse[29] = true;
|
|
Main.wallHouse[30] = true;
|
|
Main.wallHouse[31] = true;
|
|
Main.wallHouse[32] = true;
|
|
Main.wallHouse[33] = true;
|
|
Main.wallHouse[34] = true;
|
|
Main.wallHouse[35] = true;
|
|
Main.wallHouse[36] = true;
|
|
Main.wallHouse[37] = true;
|
|
Main.wallHouse[38] = true;
|
|
Main.wallHouse[39] = true;
|
|
Main.wallHouse[41] = true;
|
|
Main.wallHouse[42] = true;
|
|
Main.wallHouse[43] = true;
|
|
Main.wallHouse[44] = true;
|
|
Main.wallHouse[45] = true;
|
|
Main.wallHouse[46] = true;
|
|
Main.wallHouse[47] = true;
|
|
Main.wallHouse[66] = true;
|
|
Main.wallHouse[67] = true;
|
|
Main.wallHouse[68] = true;
|
|
Main.wallHouse[72] = true;
|
|
Main.wallHouse[73] = true;
|
|
Main.wallHouse[107] = true;
|
|
Main.wallHouse[106] = true;
|
|
Main.wallHouse[245] = true;
|
|
Main.wallHouse[315] = true;
|
|
Main.wallHouse[109] = true;
|
|
Main.wallHouse[110] = true;
|
|
Main.wallHouse[111] = true;
|
|
Main.wallHouse[112] = true;
|
|
Main.wallHouse[113] = true;
|
|
Main.wallHouse[114] = true;
|
|
Main.wallHouse[115] = true;
|
|
Main.wallHouse[116] = true;
|
|
Main.wallHouse[117] = true;
|
|
Main.wallHouse[118] = true;
|
|
Main.wallHouse[119] = true;
|
|
Main.wallHouse[120] = true;
|
|
Main.wallHouse[121] = true;
|
|
Main.wallHouse[122] = true;
|
|
Main.wallHouse[123] = true;
|
|
Main.wallHouse[124] = true;
|
|
Main.wallHouse[125] = true;
|
|
Main.wallHouse[108] = true;
|
|
Main.wallHouse[100] = true;
|
|
Main.wallHouse[101] = true;
|
|
Main.wallHouse[102] = true;
|
|
Main.wallHouse[103] = true;
|
|
Main.wallHouse[104] = true;
|
|
Main.wallHouse[105] = true;
|
|
Main.wallHouse[84] = true;
|
|
Main.wallHouse[74] = true;
|
|
Main.wallHouse[241] = true;
|
|
Main.wallHouse[85] = true;
|
|
Main.wallHouse[88] = true;
|
|
Main.wallHouse[89] = true;
|
|
Main.wallHouse[90] = true;
|
|
Main.wallHouse[91] = true;
|
|
Main.wallHouse[92] = true;
|
|
Main.wallHouse[93] = true;
|
|
Main.wallHouse[126] = true;
|
|
Main.wallHouse[(int) sbyte.MaxValue] = true;
|
|
Main.wallHouse[128] = true;
|
|
Main.wallHouse[129] = true;
|
|
Main.wallHouse[130] = true;
|
|
Main.wallHouse[131] = true;
|
|
Main.wallHouse[132] = true;
|
|
Main.wallHouse[138] = true;
|
|
Main.wallHouse[139] = true;
|
|
Main.wallHouse[140] = true;
|
|
Main.wallHouse[141] = true;
|
|
Main.wallHouse[177] = true;
|
|
Main.wallHouse[172] = true;
|
|
Main.wallHouse[242] = true;
|
|
Main.wallHouse[243] = true;
|
|
Main.wallHouse[174] = true;
|
|
Main.wallHouse[223] = true;
|
|
Main.wallHouse[230] = true;
|
|
Main.wallHouse[228] = true;
|
|
Main.wallHouse[229] = true;
|
|
Main.wallHouse[236] = true;
|
|
Main.wallHouse[246] = true;
|
|
Main.wallHouse[247] = true;
|
|
Main.wallHouse[248] = true;
|
|
Main.wallHouse[249] = true;
|
|
Main.wallHouse[250] = true;
|
|
Main.wallHouse[251] = true;
|
|
Main.wallHouse[252] = true;
|
|
Main.wallHouse[253] = true;
|
|
Main.wallHouse[254] = true;
|
|
Main.wallHouse[(int) byte.MaxValue] = true;
|
|
Main.wallHouse[314] = true;
|
|
Main.wallHouse[256] = true;
|
|
Main.wallHouse[257] = true;
|
|
Main.wallHouse[258] = true;
|
|
Main.wallHouse[259] = true;
|
|
Main.wallHouse[260] = true;
|
|
Main.wallHouse[261] = true;
|
|
Main.wallHouse[262] = true;
|
|
Main.wallHouse[263] = true;
|
|
Main.wallHouse[264] = true;
|
|
Main.wallHouse[265] = true;
|
|
Main.wallHouse[266] = true;
|
|
Main.wallHouse[267] = true;
|
|
Main.wallHouse[268] = true;
|
|
Main.wallHouse[269] = true;
|
|
Main.wallHouse[270] = true;
|
|
Main.wallHouse[271] = true;
|
|
Main.wallHouse[272] = true;
|
|
Main.wallHouse[273] = true;
|
|
Main.wallHouse[274] = true;
|
|
Main.wallHouse[275] = true;
|
|
Main.wallHouse[276] = true;
|
|
Main.wallHouse[277] = true;
|
|
Main.wallHouse[278] = true;
|
|
Main.wallHouse[279] = true;
|
|
Main.wallHouse[280] = true;
|
|
Main.wallHouse[281] = true;
|
|
Main.wallHouse[282] = true;
|
|
Main.wallHouse[283] = true;
|
|
Main.wallHouse[284] = true;
|
|
Main.wallHouse[285] = true;
|
|
Main.wallHouse[286] = true;
|
|
Main.wallHouse[287] = true;
|
|
Main.wallHouse[288] = true;
|
|
Main.wallHouse[289] = true;
|
|
Main.wallHouse[290] = true;
|
|
Main.wallHouse[291] = true;
|
|
Main.wallHouse[292] = true;
|
|
Main.wallHouse[293] = true;
|
|
Main.wallHouse[294] = true;
|
|
Main.wallHouse[295] = true;
|
|
Main.wallHouse[296] = true;
|
|
Main.wallHouse[297] = true;
|
|
Main.wallHouse[298] = true;
|
|
Main.wallHouse[299] = true;
|
|
Main.wallHouse[300] = true;
|
|
Main.wallHouse[301] = true;
|
|
Main.wallHouse[302] = true;
|
|
Main.wallHouse[303] = true;
|
|
Main.wallHouse[304] = true;
|
|
Main.wallHouse[305] = true;
|
|
Main.wallHouse[306] = true;
|
|
Main.wallHouse[307] = true;
|
|
Main.wallHouse[308] = true;
|
|
Main.wallHouse[309] = true;
|
|
Main.wallHouse[310] = true;
|
|
Main.wallHouse[311] = true;
|
|
Main.wallLight[0] = true;
|
|
Main.wallLight[21] = true;
|
|
Main.wallLight[106] = true;
|
|
Main.wallLight[107] = true;
|
|
Main.wallLight[138] = true;
|
|
Main.wallLight[140] = true;
|
|
Main.wallLight[141] = true;
|
|
Main.wallLight[139] = true;
|
|
Main.wallLight[145] = true;
|
|
Main.wallLight[150] = true;
|
|
Main.wallLight[152] = true;
|
|
Main.wallLight[245] = true;
|
|
Main.wallLight[315] = true;
|
|
Main.wallLight[168] = true;
|
|
for (int index = 0; index < 316; ++index)
|
|
Main.wallDungeon[index] = false;
|
|
Main.wallDungeon[7] = true;
|
|
Main.wallDungeon[8] = true;
|
|
Main.wallDungeon[9] = true;
|
|
Main.wallDungeon[94] = true;
|
|
Main.wallDungeon[95] = true;
|
|
Main.wallDungeon[96] = true;
|
|
Main.wallDungeon[97] = true;
|
|
Main.wallDungeon[98] = true;
|
|
Main.wallDungeon[99] = true;
|
|
}
|
|
|
|
private void ClientInitialize()
|
|
{
|
|
MessageBuffer.OnTileChangeReceived += new TileChangeReceivedEvent(this.OnTileChangeEvent);
|
|
LanguageManager.Instance.OnLanguageChanged += (LanguageChangeCallback) (languageManager => ItemTooltip.InvalidateTooltips());
|
|
PlayerInput.OnBindingChange += new Action(ItemTooltip.InvalidateTooltips);
|
|
Main.clientUUID = Guid.NewGuid().ToString();
|
|
FilterManager scene = Terraria.Graphics.Effects.Filters.Scene;
|
|
((Platform) Platform.Current).InitializeClientServices(this.Window.Handle);
|
|
Platform.Get<IImeService>().AddKeyListener((Action<char>) (keyStroke =>
|
|
{
|
|
if (Main.keyCount >= 10)
|
|
return;
|
|
Main.keyInt[Main.keyCount] = (int) keyStroke;
|
|
Main.keyString[Main.keyCount] = keyStroke.ToString() ?? "";
|
|
++Main.keyCount;
|
|
}));
|
|
this.Window.AllowUserResizing = true;
|
|
this.LoadSettings();
|
|
Main.SetDisplayMonitor();
|
|
if (Main.screenWidth > GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Width)
|
|
Main.screenWidth = GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Width;
|
|
if (Main.screenHeight > GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Height)
|
|
Main.screenHeight = GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Height;
|
|
Main.graphics.ApplyChanges();
|
|
if (Main.OnResolutionChanged != null)
|
|
Main.OnResolutionChanged(new Vector2((float) Main.screenWidth, (float) Main.screenHeight));
|
|
this.CheckBunny();
|
|
this.GraphicsDevice.DeviceLost += new EventHandler<EventArgs>(this.GraphicsDeviceLost);
|
|
this.GraphicsDevice.DeviceReset += new EventHandler<EventArgs>(this.GraphicsDeviceLost);
|
|
this.GraphicsDevice.DeviceResetting += new EventHandler<EventArgs>(this.GraphicsDeviceLost);
|
|
if (Main._needsLanguageSelect)
|
|
Main.menuMode = 1212;
|
|
this._achievements = new AchievementManager();
|
|
this._achievementAdvisor = new AchievementAdvisor();
|
|
this.OpenRecent();
|
|
UILinksInitializer.Load();
|
|
Main.Chroma = new ChromaEngine();
|
|
Main.ChromaPainter = new ChromaHotkeyPainter();
|
|
Main.ChromaPainter.CollectBoundKeys();
|
|
Main.CacheSupportedDisplaySizes();
|
|
if (Main.autoJoin)
|
|
{
|
|
Main.LoadPlayers();
|
|
Main.menuMode = 1;
|
|
Main.menuMultiplayer = true;
|
|
}
|
|
Main.fpsTimer.Start();
|
|
}
|
|
|
|
private static void CacheSupportedDisplaySizes()
|
|
{
|
|
Main.numDisplayModes = 0;
|
|
foreach (DisplayMode supportedDisplayMode in GraphicsAdapter.DefaultAdapter.SupportedDisplayModes)
|
|
{
|
|
if (supportedDisplayMode.Width >= Main.minScreenW && supportedDisplayMode.Height >= Main.minScreenH && supportedDisplayMode.Width <= Main.maxScreenW && supportedDisplayMode.Height <= Main.maxScreenH)
|
|
{
|
|
bool flag = true;
|
|
for (int index = 0; index < Main.numDisplayModes; ++index)
|
|
{
|
|
if (supportedDisplayMode.Width == Main.displayWidth[index] && supportedDisplayMode.Height == Main.displayHeight[index])
|
|
{
|
|
flag = false;
|
|
break;
|
|
}
|
|
}
|
|
if (flag)
|
|
{
|
|
Main.displayHeight[Main.numDisplayModes] = supportedDisplayMode.Height;
|
|
Main.displayWidth[Main.numDisplayModes] = supportedDisplayMode.Width;
|
|
++Main.numDisplayModes;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void LoadTestLog(string logname)
|
|
{
|
|
}
|
|
|
|
private void OnceFailedLoadingAnAsset(string assetPath, Exception e) => FancyErrorPrinter.ShowFailedToLoadAssetError(e, assetPath);
|
|
|
|
protected override void LoadContent()
|
|
{
|
|
SoundEngine.Initialize();
|
|
if (XnaExtensions.Get<IAssetRepository>((System.IServiceProvider) this.Services) == null)
|
|
AssetInitializer.CreateAssetServices(this.Services);
|
|
Main.Assets = XnaExtensions.Get<IAssetRepository>((System.IServiceProvider) this.Services);
|
|
// ISSUE: method pointer
|
|
Main.Assets.AssetLoadFailHandler = new FailedToLoadAssetCustomAction((object) this, __methodptr(OnceFailedLoadingAnAsset));
|
|
this.mapSectionTexture = new RenderTarget2D(this.GraphicsDevice, 200, 150);
|
|
Main.ShaderContentManager = new ContentManager(this.Content.ServiceProvider, this.Content.RootDirectory);
|
|
Main.PixelShaderRef.Value = Main.ShaderContentManager.Load<Effect>("PixelShader");
|
|
Main.VertexPixelShaderRef.Value = Main.ShaderContentManager.Load<Effect>("PixelShader");
|
|
Main.TileShaderRef.Value = Main.ShaderContentManager.Load<Effect>("TileShader");
|
|
Main.ScreenShaderRef.Value = Main.ShaderContentManager.Load<Effect>("ScreenShader");
|
|
Main.spriteBatch = new SpriteBatch(this.GraphicsDevice);
|
|
Main.tileBatch = new TileBatch(this.GraphicsDevice);
|
|
Main.DebugDrawer = new BasicDebugDrawer(this.GraphicsDevice);
|
|
Main.GameViewMatrix = new SpriteViewMatrix(this.GraphicsDevice);
|
|
Main.BackgroundViewMatrix = new SpriteViewMatrix(this.GraphicsDevice);
|
|
Main.AssetSourceController = new AssetSourceController(Main.Assets, (IEnumerable<IContentSource>) new IContentSource[1]
|
|
{
|
|
(IContentSource) new XnaContentSource(this.Content.RootDirectory)
|
|
});
|
|
VanillaContentValidator.Instance = new VanillaContentValidator("Terraria.IO.Data.ResourcePacksDefaultInfo.tsv");
|
|
Main.AssetSourceController.UseResourcePacks(AssetInitializer.CreateResourcePackList((System.IServiceProvider) this.Services));
|
|
AssetInitializer.LoadSplashAssets(true);
|
|
ChromaInitializer.Load();
|
|
this._gameContentLoadProcess = this.LoadContent_Deferred();
|
|
}
|
|
|
|
private void LoadContent_TryEnteringHiDef()
|
|
{
|
|
Main.Configuration.Load();
|
|
Main.Configuration.Get<bool>("UseExperimentalFeatures", ref Main.UseExperimentalFeatures);
|
|
Main.Configuration.Get<bool>("Support4K", ref Main.Support4K);
|
|
bool flag = Main.Support4K && this.GraphicsDevice.Adapter.IsProfileSupported(GraphicsProfile.HiDef);
|
|
if (GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Width <= 1920 && GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Height <= 1200)
|
|
flag = false;
|
|
if (!(Main.Support4K & flag) || this.GraphicsDevice.GraphicsProfile == GraphicsProfile.HiDef)
|
|
return;
|
|
Main.SetGraphicsProfile(GraphicsProfile.HiDef);
|
|
}
|
|
|
|
protected IEnumerator LoadContent_Deferred()
|
|
{
|
|
yield return (object) null;
|
|
AssetInitializer.LoadAssetsWhileInInitialBlackScreen();
|
|
yield return (object) null;
|
|
bool doneLoadingMusic = false;
|
|
IEnumerator musicLoadProcedure = this.LoadMusic_InSteps();
|
|
while (!doneLoadingMusic)
|
|
{
|
|
try
|
|
{
|
|
if (!musicLoadProcedure.MoveNext())
|
|
doneLoadingMusic = true;
|
|
}
|
|
catch
|
|
{
|
|
doneLoadingMusic = true;
|
|
Main.musicVolume = 0.0f;
|
|
Main.soundVolume = 0.0f;
|
|
}
|
|
yield return (object) null;
|
|
}
|
|
this._musicLoaded = true;
|
|
Main.splashTimer.Start();
|
|
yield return (object) null;
|
|
this._begunMainAsyncLoad = true;
|
|
AssetInitializer.Load(true);
|
|
this._artLoaded = true;
|
|
Main.TownNPCHeadRenderer = new NPCHeadRenderer(TextureAssets.NpcHead);
|
|
Main.ContentThatNeedsRenderTargets.Add((INeedRenderTargetContent) Main.TownNPCHeadRenderer);
|
|
Main.BossNPCHeadRenderer = new NPCHeadRenderer(TextureAssets.NpcHeadBoss);
|
|
Main.ContentThatNeedsRenderTargets.Add((INeedRenderTargetContent) Main.BossNPCHeadRenderer);
|
|
}
|
|
|
|
private void TickLoadProcess() => this._gameContentLoadProcess.MoveNext();
|
|
|
|
private void LoadContent_Music() => ((ThreadStart) (() =>
|
|
{
|
|
try
|
|
{
|
|
this.LoadMusic();
|
|
}
|
|
catch
|
|
{
|
|
Main.musicVolume = 0.0f;
|
|
Main.soundVolume = 0.0f;
|
|
}
|
|
this._musicLoaded = true;
|
|
Main.splashTimer.Start();
|
|
}))();
|
|
|
|
private static void PostContentLoadInitialize()
|
|
{
|
|
LiquidRenderer.LoadContent();
|
|
AchievementInitializer.Load();
|
|
Main.AchievementAdvisor.Initialize();
|
|
DyeInitializer.Load();
|
|
ScreenEffectInitializer.Load();
|
|
InGameNotificationsTracker.Initialize();
|
|
Main.moonType = Main.rand.Next(9);
|
|
Main.windSpeedCurrent = (float) Main.rand.Next(-800, 801) * (1f / 1000f);
|
|
Main.windSpeedTarget = Main.windSpeedCurrent;
|
|
Main.numClouds = Main.rand.Next(200);
|
|
Mount.Initialize();
|
|
Minecart.Initialize();
|
|
Main.CacheSupportedDisplaySizes();
|
|
ContentSamples.RebuildItemCreativeSortingIDsAfterRecipesAreSetUp();
|
|
ContentSamples.CommonlyUsedContentSamples.PrepareAfterEverythingElseLoaded();
|
|
}
|
|
|
|
private void LoadMusic()
|
|
{
|
|
if (!SoundEngine.IsAudioSupported)
|
|
return;
|
|
Main.engine = new AudioEngine("Content\\TerrariaMusic.xgs");
|
|
Main.soundBank = new SoundBank(Main.engine, "Content\\Sound Bank.xsb");
|
|
Main.waveBank = new WaveBank(Main.engine, "Content\\Wave Bank.xwb");
|
|
for (int index = 1; index < 89; ++index)
|
|
Main.music[index] = Main.soundBank.GetCue("Music_" + (object) index);
|
|
}
|
|
|
|
private IEnumerator LoadMusic_InSteps()
|
|
{
|
|
Main.engine = new AudioEngine("Content\\TerrariaMusic.xgs");
|
|
Main.soundBank = new SoundBank(Main.engine, "Content\\Sound Bank.xsb");
|
|
Main.waveBank = new WaveBank(Main.engine, "Content\\Wave Bank.xwb");
|
|
yield return (object) null;
|
|
for (int i = 1; i < 89; ++i)
|
|
{
|
|
Main.music[i] = Main.soundBank.GetCue("Music_" + (object) i);
|
|
yield return (object) null;
|
|
}
|
|
}
|
|
|
|
protected override void UnloadContent()
|
|
{
|
|
}
|
|
|
|
public static void CheckForMoonEventsStartingTemporarySeasons()
|
|
{
|
|
if (Main.netMode == 1)
|
|
return;
|
|
int num1 = Main.forceHalloweenForToday ? 1 : 0;
|
|
bool forceXmasForToday = Main.forceXMasForToday;
|
|
Main.forceXMasForToday = false;
|
|
Main.forceHalloweenForToday = false;
|
|
int waveNumber = NPC.waveNumber;
|
|
double waveKills = (double) NPC.waveKills;
|
|
if (Main.pumpkinMoon && waveNumber >= 15)
|
|
Main.forceHalloweenForToday = true;
|
|
if (Main.snowMoon && waveNumber >= 20)
|
|
Main.forceXMasForToday = true;
|
|
Microsoft.Xna.Framework.Color color = new Microsoft.Xna.Framework.Color(50, (int) byte.MaxValue, 130);
|
|
int num2 = Main.forceHalloweenForToday ? 1 : 0;
|
|
if (num1 != num2)
|
|
WorldGen.BroadcastText(NetworkText.FromKey(Main.forceHalloweenForToday ? "Misc.StartedVictoryHalloween" : "Misc.EndedVictoryHalloween"), color);
|
|
if (forceXmasForToday == Main.forceXMasForToday)
|
|
return;
|
|
WorldGen.BroadcastText(NetworkText.FromKey(Main.forceXMasForToday ? "Misc.StartedVictoryXmas" : "Misc.EndedVictoryXmas"), color);
|
|
}
|
|
|
|
public static void stopMoonEvent()
|
|
{
|
|
int waveNumber = NPC.waveNumber;
|
|
double waveKills = (double) NPC.waveKills;
|
|
if (Main.pumpkinMoon)
|
|
{
|
|
Main.pumpkinMoon = false;
|
|
if (Main.netMode != 1)
|
|
{
|
|
NPC.waveKills = 0.0f;
|
|
NPC.waveNumber = 0;
|
|
}
|
|
}
|
|
if (!Main.snowMoon)
|
|
return;
|
|
Main.snowMoon = false;
|
|
if (Main.netMode == 1)
|
|
return;
|
|
NPC.waveKills = 0.0f;
|
|
NPC.waveNumber = 0;
|
|
}
|
|
|
|
public static void startPumpkinMoon()
|
|
{
|
|
Main.pumpkinMoon = true;
|
|
Main.snowMoon = false;
|
|
Main.bloodMoon = false;
|
|
Main.invasionProgress = -1;
|
|
Main.invasionProgressDisplayLeft = 0;
|
|
Main.invasionProgressAlpha = 0.0f;
|
|
Main.invasionProgressIcon = 0;
|
|
if (Main.netMode == 1)
|
|
return;
|
|
NPC.waveKills = 0.0f;
|
|
NPC.waveNumber = 1;
|
|
NetworkText invasionWaveText = Lang.GetInvasionWaveText(1, (short) 305);
|
|
if (Main.netMode == 0)
|
|
{
|
|
Main.NewText(invasionWaveText.ToString(), (byte) 175, (byte) 75);
|
|
}
|
|
else
|
|
{
|
|
if (Main.netMode != 2)
|
|
return;
|
|
ChatHelper.BroadcastChatMessage(invasionWaveText, new Microsoft.Xna.Framework.Color(175, 75, (int) byte.MaxValue));
|
|
}
|
|
}
|
|
|
|
public static void startSnowMoon()
|
|
{
|
|
Main.snowMoon = true;
|
|
Main.pumpkinMoon = false;
|
|
Main.bloodMoon = false;
|
|
Main.invasionProgress = -1;
|
|
Main.invasionProgressDisplayLeft = 0;
|
|
Main.invasionProgressAlpha = 0.0f;
|
|
Main.invasionProgressIcon = 0;
|
|
if (Main.netMode == 1)
|
|
return;
|
|
NPC.waveKills = 0.0f;
|
|
NPC.waveNumber = 1;
|
|
NetworkText invasionWaveText = Lang.GetInvasionWaveText(1, (short) 338, (short) 342);
|
|
if (Main.netMode == 0)
|
|
{
|
|
Main.NewText(invasionWaveText.ToString(), (byte) 175, (byte) 75);
|
|
}
|
|
else
|
|
{
|
|
if (Main.netMode != 2)
|
|
return;
|
|
ChatHelper.BroadcastChatMessage(invasionWaveText, new Microsoft.Xna.Framework.Color(175, 75, (int) byte.MaxValue));
|
|
}
|
|
}
|
|
|
|
protected void UpdateAudio()
|
|
{
|
|
if (!SoundEngine.IsAudioSupported || !this._musicLoaded)
|
|
return;
|
|
if (!Main.showSplash)
|
|
SoundEngine.Update();
|
|
if ((double) Main.musicVolume == 0.0)
|
|
Main.curMusic = 0;
|
|
try
|
|
{
|
|
if (Main.dedServ)
|
|
return;
|
|
bool isActive = this.IsActive;
|
|
if (!isActive)
|
|
{
|
|
for (int index = 0; index < Main.music.Length; ++index)
|
|
{
|
|
if (Main.music[index] != null && !Main.music[index].IsPaused && Main.music[index].IsPlaying)
|
|
{
|
|
if ((double) Main.musicFade[index] > 0.0)
|
|
{
|
|
try
|
|
{
|
|
Main.music[index].Pause();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
}
|
|
}
|
|
}
|
|
}
|
|
SoundEngine.StopAmbientSounds();
|
|
}
|
|
else
|
|
{
|
|
for (int index = 0; index < Main.music.Length; ++index)
|
|
{
|
|
if (Main.music[index] != null && Main.music[index].IsPaused)
|
|
{
|
|
if ((double) Main.musicFade[index] > 0.0)
|
|
{
|
|
try
|
|
{
|
|
Main.music[index].Resume();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (Main.drunkWorld)
|
|
Main.TOWMusicUnlocked = true;
|
|
if (Main.gameMenu)
|
|
Main.swapMusic = false;
|
|
if (Main.swapMusic)
|
|
{
|
|
if (Main.drunkWorld)
|
|
this.UpdateAudio_DecideOnNewMusic();
|
|
else
|
|
this.UpdateAudio_DecideOnTOWMusic();
|
|
}
|
|
else if (!Main.gameMenu && Main.drunkWorld)
|
|
this.UpdateAudio_DecideOnTOWMusic();
|
|
else
|
|
this.UpdateAudio_DecideOnNewMusic();
|
|
if (Main.gameMenu || (double) Main.musicVolume == 0.0)
|
|
{
|
|
Main.musicBox2 = -1;
|
|
Main.SceneMetrics.ActiveMusicBox = -1;
|
|
}
|
|
if (Main.musicBox2 >= 0)
|
|
Main.SceneMetrics.ActiveMusicBox = Main.musicBox2;
|
|
if (Main.SceneMetrics.ActiveMusicBox >= 0)
|
|
{
|
|
if (Main.SceneMetrics.ActiveMusicBox == 0)
|
|
this.newMusic = 1;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 1)
|
|
this.newMusic = 2;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 2)
|
|
this.newMusic = 3;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 4)
|
|
this.newMusic = 4;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 5)
|
|
this.newMusic = 5;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 3)
|
|
this.newMusic = 6;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 6)
|
|
this.newMusic = 7;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 7)
|
|
this.newMusic = 8;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 9)
|
|
this.newMusic = 9;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 8)
|
|
this.newMusic = 10;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 11)
|
|
this.newMusic = 11;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 10)
|
|
this.newMusic = 12;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 12)
|
|
this.newMusic = 13;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 13)
|
|
this.newMusic = 14;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 14)
|
|
this.newMusic = 15;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 15)
|
|
this.newMusic = 16;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 16)
|
|
this.newMusic = 17;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 17)
|
|
this.newMusic = 18;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 18)
|
|
this.newMusic = 19;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 19)
|
|
this.newMusic = 20;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 20)
|
|
this.newMusic = 21;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 21)
|
|
this.newMusic = 22;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 22)
|
|
this.newMusic = 23;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 23)
|
|
this.newMusic = 24;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 24)
|
|
this.newMusic = 25;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 25)
|
|
this.newMusic = 26;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 26)
|
|
this.newMusic = 27;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 27)
|
|
this.newMusic = 29;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 28)
|
|
this.newMusic = 30;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 29)
|
|
this.newMusic = 31;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 30)
|
|
this.newMusic = 32;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 31)
|
|
this.newMusic = 33;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 32)
|
|
this.newMusic = 38;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 33)
|
|
this.newMusic = 37;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 34)
|
|
this.newMusic = 35;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 35)
|
|
this.newMusic = 36;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 36)
|
|
this.newMusic = 34;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 37)
|
|
this.newMusic = 39;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 38)
|
|
this.newMusic = 40;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 39)
|
|
this.newMusic = 41;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 40)
|
|
this.newMusic = 44;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 41)
|
|
this.newMusic = 48;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 42)
|
|
this.newMusic = 42;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 43)
|
|
this.newMusic = 43;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 44)
|
|
this.newMusic = 46;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 45)
|
|
this.newMusic = 47;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 46)
|
|
this.newMusic = 49;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 47)
|
|
this.newMusic = 51;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 48)
|
|
this.newMusic = 52;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 49)
|
|
this.newMusic = 53;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 50)
|
|
this.newMusic = 54;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 51)
|
|
this.newMusic = 55;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 52)
|
|
this.newMusic = 56;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 53)
|
|
this.newMusic = 57;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 54)
|
|
this.newMusic = 58;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 55)
|
|
this.newMusic = 59;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 56)
|
|
this.newMusic = 60;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 57)
|
|
this.newMusic = 61;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 58)
|
|
this.newMusic = 62;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 59)
|
|
this.newMusic = 63;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 60)
|
|
this.newMusic = 64;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 61)
|
|
this.newMusic = 65;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 62)
|
|
this.newMusic = 66;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 63)
|
|
this.newMusic = 67;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 64)
|
|
this.newMusic = 68;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 65)
|
|
this.newMusic = 69;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 66)
|
|
this.newMusic = 70;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 67)
|
|
this.newMusic = 71;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 68)
|
|
this.newMusic = 72;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 69)
|
|
this.newMusic = 73;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 70)
|
|
this.newMusic = 74;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 71)
|
|
this.newMusic = 75;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 72)
|
|
this.newMusic = 76;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 73)
|
|
this.newMusic = 77;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 74)
|
|
this.newMusic = 78;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 75)
|
|
this.newMusic = 79;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 76)
|
|
this.newMusic = 80;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 77)
|
|
this.newMusic = 81;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 78)
|
|
this.newMusic = 82;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 79)
|
|
this.newMusic = 83;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 80)
|
|
this.newMusic = 84;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 81)
|
|
this.newMusic = 85;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 82)
|
|
this.newMusic = 86;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 83)
|
|
this.newMusic = 87;
|
|
if (Main.SceneMetrics.ActiveMusicBox == 84)
|
|
this.newMusic = 88;
|
|
}
|
|
if (Main.curMusic != this.newMusic)
|
|
this._musicReplayDelay = 0;
|
|
if (this._musicReplayDelay > 0)
|
|
--this._musicReplayDelay;
|
|
Main.curMusic = this.newMusic;
|
|
float num1 = 1f;
|
|
if (NPC.MoonLordCountdown > 0)
|
|
{
|
|
float num2 = (float) NPC.MoonLordCountdown / 3600f;
|
|
float amount = num2 * num2;
|
|
if (NPC.MoonLordCountdown > 720)
|
|
{
|
|
num1 = MathHelper.Lerp(0.0f, 1f, amount);
|
|
}
|
|
else
|
|
{
|
|
num1 = 0.0f;
|
|
Main.curMusic = 0;
|
|
}
|
|
if (NPC.MoonLordCountdown == 1 && Main.curMusic >= 1 && Main.curMusic < 89)
|
|
Main.musicFade[Main.curMusic] = 0.0f;
|
|
}
|
|
for (int index = 1; index < 89; ++index)
|
|
{
|
|
float num3 = Main.musicFade[index] * Main.musicVolume * num1;
|
|
if (index >= 62 && index <= 88)
|
|
num3 *= 0.9f;
|
|
else if (index == 52)
|
|
{
|
|
num3 *= 1.15f;
|
|
if ((double) num3 > 1.0)
|
|
num3 = 1f;
|
|
}
|
|
if (index == 28)
|
|
{
|
|
float num4 = 0.5f;
|
|
float num5 = (float) ((double) Main.cloudAlpha / 9.0 * 10.0 * (double) num4 + (1.0 - (double) num4));
|
|
if ((double) num5 > 1.0)
|
|
num5 = 1f;
|
|
if (Main.gameMenu)
|
|
num5 = 0.0f;
|
|
float num6 = num5 * (float) Math.Pow((double) Main.atmo, 4.0);
|
|
if ((double) Main.cloudAlpha > 0.0 && (double) Main.player[Main.myPlayer].position.Y < Main.worldSurface * 16.0 + (double) (Main.screenHeight / 2) && !Main.player[Main.myPlayer].ZoneSnow)
|
|
{
|
|
if ((double) Main.ambientVolume == 0.0 || (double) num6 == 0.0)
|
|
{
|
|
if (Main.music[index].IsPlaying)
|
|
Main.music[index].Stop(AudioStopOptions.Immediate);
|
|
}
|
|
else if (!Main.music[index].IsPlaying)
|
|
{
|
|
Main.music[index] = Main.soundBank.GetCue("Music_" + (object) index);
|
|
Main.music[index].Play();
|
|
Main.music[index].SetVariable("Volume", Main.musicFade[index] * Main.ambientVolume * num6);
|
|
}
|
|
else if (Main.music[index].IsPaused && this.IsActive)
|
|
{
|
|
Main.music[index].Resume();
|
|
}
|
|
else
|
|
{
|
|
Main.musicFade[index] += 0.005f;
|
|
if ((double) Main.musicFade[index] > 1.0)
|
|
Main.musicFade[index] = 1f;
|
|
Main.music[index].SetVariable("Volume", Main.musicFade[index] * Main.ambientVolume * num6);
|
|
}
|
|
}
|
|
else if (Main.music[index].IsPlaying)
|
|
{
|
|
if ((double) Main.musicFade[index] > 0.0)
|
|
Main.musicFade[index] -= 0.005f;
|
|
if ((double) Main.musicFade[index] <= 0.0)
|
|
{
|
|
Main.musicFade[index] -= 0.0f;
|
|
Main.music[index].Stop(AudioStopOptions.Immediate);
|
|
}
|
|
else
|
|
Main.music[index].SetVariable("Volume", Main.musicFade[index] * Main.ambientVolume * num6);
|
|
}
|
|
else
|
|
Main.musicFade[index] = 0.0f;
|
|
}
|
|
else if (index == 45)
|
|
{
|
|
float num7 = 0.7f;
|
|
float num8 = (float) ((double) Math.Abs(Main.windSpeedCurrent) * (double) num7 + (1.0 - (double) num7));
|
|
if ((double) num8 > 1.0)
|
|
num8 = 1f;
|
|
float num9 = num8 * 0.9f;
|
|
float num10 = 20f;
|
|
float num11 = num9 * (float) Math.Pow((double) Main.atmo, 4.0);
|
|
if (!Main.gameMenu && (double) Math.Abs(Main.windSpeedCurrent) >= (double) num10 / 50.0 && (double) Main.player[Main.myPlayer].position.Y < Main.worldSurface * 16.0 + (double) (Main.screenHeight / 2))
|
|
{
|
|
if ((double) Main.ambientVolume == 0.0 || (double) num11 == 0.0)
|
|
{
|
|
if (Main.music[index].IsPlaying)
|
|
Main.music[index].Stop(AudioStopOptions.Immediate);
|
|
}
|
|
else if (!Main.music[index].IsPlaying)
|
|
{
|
|
Main.music[index] = Main.soundBank.GetCue("Music_" + (object) index);
|
|
Main.music[index].Play();
|
|
Main.music[index].SetVariable("Volume", Main.musicFade[index] * Main.ambientVolume * num11);
|
|
}
|
|
else if (Main.music[index].IsPaused && this.IsActive)
|
|
{
|
|
Main.music[index].Resume();
|
|
}
|
|
else
|
|
{
|
|
Main.musicFade[index] += 0.005f;
|
|
if ((double) Main.musicFade[index] > 1.0)
|
|
Main.musicFade[index] = 1f;
|
|
Main.music[index].SetVariable("Volume", Main.musicFade[index] * Main.ambientVolume * num11);
|
|
}
|
|
}
|
|
else if (Main.music[index].IsPlaying)
|
|
{
|
|
if ((double) Main.musicFade[index] > 0.0)
|
|
Main.musicFade[index] -= 0.005f;
|
|
if ((double) Main.musicFade[index] <= 0.0)
|
|
{
|
|
Main.musicFade[index] -= 0.0f;
|
|
Main.music[index].Stop(AudioStopOptions.Immediate);
|
|
}
|
|
else
|
|
Main.music[index].SetVariable("Volume", Main.musicFade[index] * Main.ambientVolume * num11);
|
|
}
|
|
else
|
|
Main.musicFade[index] = 0.0f;
|
|
}
|
|
else if (index == Main.curMusic)
|
|
{
|
|
if (!Main.music[index].IsPlaying & isActive)
|
|
{
|
|
if (this._musicReplayDelay == 0)
|
|
{
|
|
if (Main.SettingMusicReplayDelayEnabled)
|
|
this._musicReplayDelay = Main.rand.Next(14400, 21601);
|
|
Main.music[index].Stop(AudioStopOptions.Immediate);
|
|
Main.music[index] = Main.soundBank.GetCue("Music_" + (object) index);
|
|
Main.music[index].SetVariable("Volume", num3);
|
|
Main.music[index].Play();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Main.musicFade[index] += 0.005f;
|
|
if ((double) Main.musicFade[index] > 1.0)
|
|
Main.musicFade[index] = 1f;
|
|
Main.music[index].SetVariable("Volume", num3);
|
|
}
|
|
}
|
|
else if (Main.music[index].IsPlaying || !Main.music[index].IsStopped)
|
|
{
|
|
if ((double) Main.musicFade[Main.curMusic] > 0.25)
|
|
Main.musicFade[index] -= 0.005f;
|
|
else if (Main.curMusic == 0)
|
|
Main.musicFade[index] = 0.0f;
|
|
if ((double) Main.musicFade[index] <= 0.0)
|
|
{
|
|
Main.musicFade[index] = 0.0f;
|
|
Main.music[index].SetVariable("Volume", 0.0f);
|
|
Main.music[index].Stop(AudioStopOptions.Immediate);
|
|
}
|
|
else
|
|
Main.music[index].SetVariable("Volume", num3);
|
|
}
|
|
else
|
|
Main.musicFade[index] = 0.0f;
|
|
}
|
|
if (Main.musicError <= 0)
|
|
return;
|
|
--Main.musicError;
|
|
}
|
|
catch
|
|
{
|
|
++Main.musicError;
|
|
if (Main.musicError < 100)
|
|
return;
|
|
Main.musicError = 0;
|
|
Main.musicVolume = 0.0f;
|
|
}
|
|
}
|
|
|
|
public static bool IsItAHappyWindyDay => Main._shouldUseWindyDayMusic;
|
|
|
|
public static bool IsItStorming => Main._shouldUseStormMusic;
|
|
|
|
public static bool WindyEnoughForKiteDrops => (double) Math.Abs(Main.windSpeedTarget) >= (double) Main._maxWind;
|
|
|
|
private void UpdateAudio_DecideOnTOWMusic()
|
|
{
|
|
bool flag1 = false;
|
|
bool flag2 = false;
|
|
bool flag3 = false;
|
|
bool flag4 = false;
|
|
bool flag5 = false;
|
|
bool flag6 = false;
|
|
bool flag7 = false;
|
|
bool flag8 = false;
|
|
bool flag9 = false;
|
|
bool flag10 = false;
|
|
bool flag11 = false;
|
|
bool flag12 = false;
|
|
bool flag13 = false;
|
|
bool flag14 = false;
|
|
bool flag15 = false;
|
|
if (!Main.showSplash)
|
|
{
|
|
Microsoft.Xna.Framework.Rectangle rectangle1 = new Microsoft.Xna.Framework.Rectangle((int) Main.screenPosition.X, (int) Main.screenPosition.Y, Main.screenWidth, Main.screenHeight);
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active)
|
|
{
|
|
int num1 = 5000;
|
|
int num2 = 0;
|
|
switch (Main.npc[index].type)
|
|
{
|
|
case 13:
|
|
case 14:
|
|
case 15:
|
|
num2 = 1;
|
|
break;
|
|
case 26:
|
|
case 27:
|
|
case 28:
|
|
case 29:
|
|
case 111:
|
|
case 471:
|
|
num2 = 11;
|
|
break;
|
|
case 113:
|
|
case 114:
|
|
num2 = 3;
|
|
break;
|
|
case 125:
|
|
case 126:
|
|
num2 = 2;
|
|
break;
|
|
case (int) sbyte.MaxValue:
|
|
case 134:
|
|
num2 = 2;
|
|
break;
|
|
case 143:
|
|
case 144:
|
|
case 145:
|
|
num2 = 11;
|
|
break;
|
|
case 212:
|
|
case 213:
|
|
case 214:
|
|
case 215:
|
|
case 216:
|
|
case 491:
|
|
num2 = 8;
|
|
break;
|
|
case 222:
|
|
num2 = 1;
|
|
break;
|
|
case 245:
|
|
num2 = 2;
|
|
break;
|
|
case 262:
|
|
case 263:
|
|
case 264:
|
|
num2 = 6;
|
|
break;
|
|
case 266:
|
|
num2 = 1;
|
|
break;
|
|
case 370:
|
|
num2 = 15;
|
|
break;
|
|
case 381:
|
|
case 382:
|
|
case 383:
|
|
case 385:
|
|
case 386:
|
|
case 388:
|
|
case 389:
|
|
case 390:
|
|
case 391:
|
|
case 395:
|
|
case 520:
|
|
num2 = 9;
|
|
break;
|
|
case 398:
|
|
num2 = 7;
|
|
break;
|
|
case 422:
|
|
case 493:
|
|
case 507:
|
|
case 517:
|
|
num2 = 10;
|
|
break;
|
|
case 438:
|
|
if ((double) Main.npc[index].ai[1] == 1.0)
|
|
{
|
|
num1 = 1600;
|
|
num2 = 2;
|
|
break;
|
|
}
|
|
break;
|
|
case 439:
|
|
num2 = 2;
|
|
break;
|
|
case 636:
|
|
num2 = 14;
|
|
break;
|
|
case 657:
|
|
num2 = 13;
|
|
break;
|
|
}
|
|
if (NPCID.Sets.BelongsToInvasionOldOnesArmy[Main.npc[index].type])
|
|
num2 = 12;
|
|
if (num2 == 0 && Main.npc[index].boss)
|
|
num2 = 1;
|
|
if (num2 != 0)
|
|
{
|
|
Microsoft.Xna.Framework.Rectangle rectangle2 = new Microsoft.Xna.Framework.Rectangle((int) ((double) Main.npc[index].position.X + (double) (Main.npc[index].width / 2)) - num1, (int) ((double) Main.npc[index].position.Y + (double) (Main.npc[index].height / 2)) - num1, num1 * 2, num1 * 2);
|
|
if (rectangle1.Intersects(rectangle2))
|
|
{
|
|
switch (num2)
|
|
{
|
|
case 1:
|
|
flag1 = true;
|
|
goto label_49;
|
|
case 2:
|
|
flag2 = true;
|
|
goto label_49;
|
|
case 3:
|
|
flag3 = true;
|
|
goto label_49;
|
|
case 4:
|
|
flag4 = true;
|
|
goto label_49;
|
|
case 5:
|
|
flag5 = true;
|
|
goto label_49;
|
|
case 6:
|
|
flag6 = true;
|
|
goto label_49;
|
|
case 7:
|
|
flag7 = true;
|
|
goto label_49;
|
|
case 8:
|
|
flag8 = true;
|
|
goto label_49;
|
|
case 9:
|
|
flag9 = true;
|
|
goto label_49;
|
|
case 10:
|
|
flag10 = true;
|
|
goto label_49;
|
|
case 11:
|
|
flag11 = true;
|
|
goto label_49;
|
|
case 12:
|
|
flag12 = true;
|
|
goto label_49;
|
|
case 13:
|
|
flag13 = true;
|
|
goto label_49;
|
|
case 14:
|
|
flag14 = true;
|
|
goto label_49;
|
|
case 15:
|
|
flag15 = true;
|
|
goto label_49;
|
|
default:
|
|
goto label_49;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
label_49:
|
|
double num3 = ((double) Main.screenPosition.X + (double) (Main.screenWidth / 2)) / 16.0;
|
|
if ((double) Main.musicVolume == 0.0)
|
|
{
|
|
this.newMusic = 0;
|
|
}
|
|
else
|
|
{
|
|
float num4 = (float) (Main.maxTilesX / 4200);
|
|
float num5 = num4 * num4;
|
|
float num6 = (float) ((((double) Main.screenPosition.Y + (double) (Main.screenHeight / 2)) / 16.0 - (65.0 + 10.0 * (double) num5)) / (Main.worldSurface / 5.0));
|
|
if (flag7)
|
|
this.newMusic = 84;
|
|
else if (flag9)
|
|
this.newMusic = 82;
|
|
else if (flag10)
|
|
this.newMusic = 83;
|
|
else if (flag6)
|
|
this.newMusic = 85;
|
|
else if (flag14)
|
|
this.newMusic = 80;
|
|
else if (flag15)
|
|
this.newMusic = 80;
|
|
else if (flag2)
|
|
this.newMusic = 80;
|
|
else if (flag1)
|
|
this.newMusic = 81;
|
|
else if (flag3)
|
|
this.newMusic = 87;
|
|
else if (flag4)
|
|
this.newMusic = 81;
|
|
else if (flag5)
|
|
this.newMusic = 81;
|
|
else if (flag13)
|
|
this.newMusic = 80;
|
|
else if (flag8)
|
|
this.newMusic = 82;
|
|
else if (flag11)
|
|
this.newMusic = 82;
|
|
else if (flag12)
|
|
this.newMusic = 82;
|
|
else if (Main.eclipse && (double) Main.player[Main.myPlayer].position.Y < Main.worldSurface * 16.0 + (double) (Main.screenHeight / 2))
|
|
this.newMusic = 79;
|
|
else if (Main.player[Main.myPlayer].ZoneSandstorm)
|
|
this.newMusic = 66;
|
|
else if ((double) Main.player[Main.myPlayer].position.Y > (double) (Main.UnderworldLayer * 16))
|
|
this.newMusic = 71;
|
|
else if ((double) num6 < 1.0)
|
|
this.newMusic = 70;
|
|
else if (Main.tile[(int) ((double) Main.player[Main.myPlayer].Center.X / 16.0), (int) ((double) Main.player[Main.myPlayer].Center.Y / 16.0)].wall == (ushort) 87)
|
|
this.newMusic = 69;
|
|
else if (Main.player[Main.myPlayer].ZoneDungeon)
|
|
this.newMusic = 69;
|
|
else if (Main.bgStyle == 9 && (double) Main.player[Main.myPlayer].position.Y < Main.worldSurface * 16.0 + (double) (Main.screenHeight / 2) || Main.undergroundBackground == 2)
|
|
this.newMusic = 68;
|
|
else if (Main.player[Main.myPlayer].ZoneCorrupt)
|
|
this.newMusic = !Main.player[Main.myPlayer].ZoneCrimson || Main.SceneMetrics.BloodTileCount <= Main.SceneMetrics.EvilTileCount ? ((double) Main.player[Main.myPlayer].position.Y <= Main.worldSurface * 16.0 + (double) (Main.screenHeight / 2) ? 73 : 74) : ((double) Main.player[Main.myPlayer].position.Y <= Main.worldSurface * 16.0 + (double) (Main.screenHeight / 2) ? 75 : 76);
|
|
else if (Main.player[Main.myPlayer].ZoneCrimson)
|
|
this.newMusic = (double) Main.player[Main.myPlayer].position.Y <= Main.worldSurface * 16.0 + (double) (Main.screenHeight / 2) ? 75 : 76;
|
|
else if (Main.player[Main.myPlayer].ZoneMeteor)
|
|
this.newMusic = 79;
|
|
else if (Main.player[Main.myPlayer].ZoneGraveyard)
|
|
this.newMusic = 79;
|
|
else if (Main.player[Main.myPlayer].ZoneJungle)
|
|
this.newMusic = 86;
|
|
else if (Main.player[Main.myPlayer].ZoneSnow)
|
|
this.newMusic = (double) Main.player[Main.myPlayer].position.Y <= Main.worldSurface * 16.0 + (double) (Main.screenHeight / 2) ? 72 : 77;
|
|
else if ((double) Main.player[Main.myPlayer].position.Y >= Main.worldSurface * 16.0 + (double) (Main.screenHeight / 2) && !WorldGen.oceanDepths((int) ((double) Main.screenPosition.X + (double) (Main.screenWidth / 2)) / 16, (int) ((double) Main.screenPosition.Y + (double) (Main.screenHeight / 2)) / 16))
|
|
this.newMusic = !Main.player[Main.myPlayer].ZoneHallow ? (!Main.player[Main.myPlayer].ZoneUndergroundDesert ? 65 : 66) : 78;
|
|
else if (Main.dayTime && Main.player[Main.myPlayer].ZoneHallow)
|
|
this.newMusic = (double) Main.cloudAlpha <= 0.0 || Main.gameMenu ? 88 : 62;
|
|
else if (Main._shouldUseStormMusic)
|
|
this.newMusic = !Main.bloodMoon ? 62 : 79;
|
|
else if (WorldGen.oceanDepths((int) ((double) Main.screenPosition.X + (double) (Main.screenWidth / 2)) / 16, (int) ((double) Main.screenPosition.Y + (double) (Main.screenHeight / 2)) / 16))
|
|
this.newMusic = !Main.bloodMoon ? 67 : 79;
|
|
else if (Main.player[Main.myPlayer].ZoneDesert)
|
|
this.newMusic = 66;
|
|
else if (Main.dayTime)
|
|
this.newMusic = (double) Main.cloudAlpha <= 0.0 || Main.gameMenu ? 63 : 62;
|
|
else if (!Main.dayTime)
|
|
this.newMusic = !Main.bloodMoon ? ((double) Main.cloudAlpha <= 0.0 || Main.gameMenu ? 64 : 64) : 79;
|
|
if ((double) Main.screenPosition.Y / 16.0 < Main.worldSurface + 10.0 && Main.pumpkinMoon)
|
|
this.newMusic = 82;
|
|
if ((double) Main.screenPosition.Y / 16.0 >= Main.worldSurface + 10.0 || !Main.snowMoon)
|
|
return;
|
|
this.newMusic = 82;
|
|
}
|
|
}
|
|
|
|
private void UpdateAudio_DecideOnNewMusic()
|
|
{
|
|
bool flag1 = false;
|
|
bool flag2 = false;
|
|
bool flag3 = false;
|
|
bool flag4 = false;
|
|
bool flag5 = false;
|
|
bool flag6 = false;
|
|
bool flag7 = false;
|
|
bool flag8 = false;
|
|
bool flag9 = false;
|
|
bool flag10 = false;
|
|
bool flag11 = false;
|
|
bool flag12 = false;
|
|
bool flag13 = false;
|
|
bool flag14 = false;
|
|
bool flag15 = false;
|
|
bool flag16 = (double) Main.LocalPlayer.townNPCs > 2.0;
|
|
bool slimeRain = Main.slimeRain;
|
|
float num1 = 0.0f;
|
|
for (int index = 0; index < 89; ++index)
|
|
{
|
|
if ((double) Main.musicFade[index] > (double) num1)
|
|
{
|
|
num1 = Main.musicFade[index];
|
|
if ((double) num1 == 1.0)
|
|
this.lastMusicPlayed = index;
|
|
}
|
|
}
|
|
if (this.lastMusicPlayed == 50)
|
|
Main.musicNoCrossFade[51] = true;
|
|
if (!Main.showSplash)
|
|
{
|
|
Microsoft.Xna.Framework.Rectangle rectangle1 = new Microsoft.Xna.Framework.Rectangle((int) Main.screenPosition.X, (int) Main.screenPosition.Y, Main.screenWidth, Main.screenHeight);
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active)
|
|
{
|
|
int num2 = 5000;
|
|
int num3 = 0;
|
|
switch (Main.npc[index].type)
|
|
{
|
|
case 13:
|
|
case 14:
|
|
case 15:
|
|
num3 = 1;
|
|
break;
|
|
case 26:
|
|
case 27:
|
|
case 28:
|
|
case 29:
|
|
case 111:
|
|
case 471:
|
|
num3 = 11;
|
|
break;
|
|
case 113:
|
|
case 114:
|
|
case 125:
|
|
case 126:
|
|
num3 = 2;
|
|
break;
|
|
case 134:
|
|
case 143:
|
|
case 144:
|
|
case 145:
|
|
case 266:
|
|
num3 = 3;
|
|
break;
|
|
case 212:
|
|
case 213:
|
|
case 214:
|
|
case 215:
|
|
case 216:
|
|
case 491:
|
|
num3 = 8;
|
|
break;
|
|
case 222:
|
|
num3 = 5;
|
|
break;
|
|
case 245:
|
|
num3 = 4;
|
|
break;
|
|
case 262:
|
|
case 263:
|
|
case 264:
|
|
num3 = 6;
|
|
break;
|
|
case 370:
|
|
num3 = 15;
|
|
break;
|
|
case 381:
|
|
case 382:
|
|
case 383:
|
|
case 385:
|
|
case 386:
|
|
case 388:
|
|
case 389:
|
|
case 390:
|
|
case 391:
|
|
case 395:
|
|
case 520:
|
|
num3 = 9;
|
|
break;
|
|
case 398:
|
|
num3 = 7;
|
|
break;
|
|
case 422:
|
|
case 493:
|
|
case 507:
|
|
case 517:
|
|
num3 = 10;
|
|
break;
|
|
case 438:
|
|
if ((double) Main.npc[index].ai[1] == 1.0)
|
|
{
|
|
num2 = 1600;
|
|
num3 = 4;
|
|
break;
|
|
}
|
|
break;
|
|
case 439:
|
|
num3 = 4;
|
|
break;
|
|
case 636:
|
|
num3 = 14;
|
|
break;
|
|
case 657:
|
|
num3 = 13;
|
|
break;
|
|
}
|
|
if (NPCID.Sets.BelongsToInvasionOldOnesArmy[Main.npc[index].type])
|
|
num3 = 12;
|
|
if (num3 == 0 && Main.npc[index].boss)
|
|
num3 = 1;
|
|
if (num3 != 0)
|
|
{
|
|
Microsoft.Xna.Framework.Rectangle rectangle2 = new Microsoft.Xna.Framework.Rectangle((int) ((double) Main.npc[index].position.X + (double) (Main.npc[index].width / 2)) - num2, (int) ((double) Main.npc[index].position.Y + (double) (Main.npc[index].height / 2)) - num2, num2 * 2, num2 * 2);
|
|
if (rectangle1.Intersects(rectangle2))
|
|
{
|
|
switch (num3)
|
|
{
|
|
case 1:
|
|
flag1 = true;
|
|
goto label_56;
|
|
case 2:
|
|
flag2 = true;
|
|
goto label_56;
|
|
case 3:
|
|
flag3 = true;
|
|
goto label_56;
|
|
case 4:
|
|
flag4 = true;
|
|
goto label_56;
|
|
case 5:
|
|
flag5 = true;
|
|
goto label_56;
|
|
case 6:
|
|
flag6 = true;
|
|
goto label_56;
|
|
case 7:
|
|
flag7 = true;
|
|
goto label_56;
|
|
case 8:
|
|
flag8 = true;
|
|
goto label_56;
|
|
case 9:
|
|
flag9 = true;
|
|
goto label_56;
|
|
case 10:
|
|
flag10 = true;
|
|
goto label_56;
|
|
case 11:
|
|
flag11 = true;
|
|
goto label_56;
|
|
case 12:
|
|
flag12 = true;
|
|
goto label_56;
|
|
case 13:
|
|
flag13 = true;
|
|
goto label_56;
|
|
case 14:
|
|
flag14 = true;
|
|
goto label_56;
|
|
case 15:
|
|
flag15 = true;
|
|
goto label_56;
|
|
default:
|
|
goto label_56;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
label_56:
|
|
double num4 = ((double) Main.screenPosition.X + (double) (Main.screenWidth / 2)) / 16.0;
|
|
if ((double) Main.musicVolume == 0.0)
|
|
this.newMusic = 0;
|
|
else if (Main.gameMenu)
|
|
{
|
|
if (Main.netMode != 2)
|
|
{
|
|
if (WorldGen.drunkWorldGen)
|
|
this.newMusic = 60;
|
|
else if (this.playOldTile)
|
|
this.newMusic = 6;
|
|
else if (!Main._isAsyncLoadComplete)
|
|
{
|
|
this.newMusic = 50;
|
|
}
|
|
else
|
|
{
|
|
if (Main.music[50].IsPlaying)
|
|
return;
|
|
this.newMusic = 51;
|
|
if (!Main.musicNoCrossFade[51])
|
|
return;
|
|
Main.musicFade[51] = 1f;
|
|
}
|
|
}
|
|
else
|
|
this.newMusic = 0;
|
|
}
|
|
else
|
|
{
|
|
float num5 = (float) (Main.maxTilesX / 4200);
|
|
float num6 = num5 * num5;
|
|
float num7 = (float) ((((double) Main.screenPosition.Y + (double) (Main.screenHeight / 2)) / 16.0 - (65.0 + 10.0 * (double) num6)) / (Main.worldSurface / 5.0));
|
|
if (Main.player[Main.myPlayer].happyFunTorchTime)
|
|
this.newMusic = 13;
|
|
else if (flag7)
|
|
this.newMusic = 38;
|
|
else if (flag9)
|
|
this.newMusic = 37;
|
|
else if (flag10)
|
|
this.newMusic = 34;
|
|
else if (flag6)
|
|
this.newMusic = 24;
|
|
else if (flag14)
|
|
this.newMusic = 57;
|
|
else if (flag15)
|
|
this.newMusic = 58;
|
|
else if (flag2)
|
|
this.newMusic = 12;
|
|
else if (flag1)
|
|
this.newMusic = 5;
|
|
else if (flag3)
|
|
this.newMusic = 13;
|
|
else if (flag4)
|
|
this.newMusic = 17;
|
|
else if (flag5)
|
|
this.newMusic = 25;
|
|
else if (flag13)
|
|
this.newMusic = 56;
|
|
else if (flag8)
|
|
this.newMusic = 35;
|
|
else if (flag11)
|
|
this.newMusic = 39;
|
|
else if (flag12)
|
|
this.newMusic = 41;
|
|
else if (Main.eclipse && (double) Main.player[Main.myPlayer].position.Y < Main.worldSurface * 16.0 + (double) (Main.screenHeight / 2))
|
|
this.newMusic = 27;
|
|
else if (slimeRain && !Main.player[Main.myPlayer].ZoneGraveyard && (!Main.bloodMoon || Main.dayTime) && (double) Main.player[Main.myPlayer].position.Y < Main.worldSurface * 16.0 + (double) (Main.screenHeight / 2))
|
|
this.newMusic = 48;
|
|
else if (flag16 && Main.dayTime && ((double) Main.cloudAlpha == 0.0 && !Main._shouldUseWindyDayMusic || (double) Main.player[Main.myPlayer].position.Y >= Main.worldSurface * 16.0 + (double) (Main.screenHeight / 2)) && !Main.player[Main.myPlayer].ZoneGraveyard)
|
|
this.newMusic = 46;
|
|
else if (flag16 && !Main.dayTime && (!Main.bloodMoon && (double) Main.cloudAlpha == 0.0 || (double) Main.player[Main.myPlayer].position.Y >= Main.worldSurface * 16.0 + (double) (Main.screenHeight / 2)) && !Main.player[Main.myPlayer].ZoneGraveyard)
|
|
this.newMusic = 47;
|
|
else if (Main.player[Main.myPlayer].ZoneSandstorm)
|
|
this.newMusic = 40;
|
|
else if ((double) Main.player[Main.myPlayer].position.Y > (double) (Main.UnderworldLayer * 16))
|
|
this.newMusic = 36;
|
|
else if ((double) num7 < 1.0)
|
|
this.newMusic = Main.dayTime ? 42 : 15;
|
|
else if (Main.tile[(int) ((double) Main.player[Main.myPlayer].Center.X / 16.0), (int) ((double) Main.player[Main.myPlayer].Center.Y / 16.0)].wall == (ushort) 87)
|
|
this.newMusic = 26;
|
|
else if (Main.player[Main.myPlayer].ZoneDungeon)
|
|
this.newMusic = 23;
|
|
else if (Main.bgStyle == 9 && (double) Main.player[Main.myPlayer].position.Y < Main.worldSurface * 16.0 + (double) (Main.screenHeight / 2) || Main.undergroundBackground == 2)
|
|
this.newMusic = 29;
|
|
else if (Main.player[Main.myPlayer].ZoneCorrupt)
|
|
this.newMusic = !Main.player[Main.myPlayer].ZoneCrimson || Main.SceneMetrics.BloodTileCount <= Main.SceneMetrics.EvilTileCount ? ((double) Main.player[Main.myPlayer].position.Y <= Main.worldSurface * 16.0 + (double) (Main.screenHeight / 2) ? 8 : 10) : ((double) Main.player[Main.myPlayer].position.Y <= Main.worldSurface * 16.0 + (double) (Main.screenHeight / 2) ? 16 : 33);
|
|
else if (Main.player[Main.myPlayer].ZoneCrimson)
|
|
this.newMusic = (double) Main.player[Main.myPlayer].position.Y <= Main.worldSurface * 16.0 + (double) (Main.screenHeight / 2) ? 16 : 33;
|
|
else if (Main.player[Main.myPlayer].ZoneMeteor)
|
|
this.newMusic = 2;
|
|
else if (Main.player[Main.myPlayer].ZoneGraveyard)
|
|
this.newMusic = 53;
|
|
else if (Main.player[Main.myPlayer].ZoneJungle)
|
|
this.newMusic = (double) Main.player[Main.myPlayer].position.Y <= Main.rockLayer * 16.0 + (double) (Main.screenHeight / 2) ? (this.newMusic != 54 || (double) Main.player[Main.myPlayer].position.Y <= (Main.rockLayer - 50.0) * 16.0 + (double) (Main.screenHeight / 2) ? (!Main._shouldUseStormMusic || (double) Main.player[Main.myPlayer].position.Y >= Main.worldSurface * 16.0 + (double) (Main.screenHeight / 2) ? (!Main.dayTime ? 55 : 7) : 52) : 54) : 54;
|
|
else if (Main.player[Main.myPlayer].ZoneSnow)
|
|
this.newMusic = (double) Main.player[Main.myPlayer].position.Y <= Main.worldSurface * 16.0 + (double) (Main.screenHeight / 2) ? 14 : 20;
|
|
else if ((double) Main.player[Main.myPlayer].position.Y >= Main.worldSurface * 16.0 + (double) (Main.screenHeight / 2) && !WorldGen.oceanDepths((int) ((double) Main.screenPosition.X + (double) (Main.screenWidth / 2)) / 16, (int) ((double) Main.screenPosition.Y + (double) (Main.screenHeight / 2)) / 16))
|
|
{
|
|
if (Main.player[Main.myPlayer].ZoneHallow)
|
|
this.newMusic = 11;
|
|
else if (Main.player[Main.myPlayer].ZoneUndergroundDesert)
|
|
{
|
|
this.newMusic = (double) Main.player[Main.myPlayer].position.Y < Main.worldSurface * 16.0 + (double) (Main.screenHeight / 2) ? 21 : 61;
|
|
}
|
|
else
|
|
{
|
|
if (Main.ugMusic == 0)
|
|
Main.ugMusic = 4;
|
|
if (!Main.music[4].IsPlaying && !Main.music[31].IsPlaying)
|
|
{
|
|
if ((double) Main.musicFade[4] == 1.0)
|
|
Main.musicFade[31] = 1f;
|
|
if ((double) Main.musicFade[31] == 1.0)
|
|
Main.musicFade[4] = 1f;
|
|
switch (Main.rand.Next(2))
|
|
{
|
|
case 0:
|
|
Main.ugMusic = 4;
|
|
Main.musicFade[31] = 0.0f;
|
|
break;
|
|
case 1:
|
|
Main.ugMusic = 31;
|
|
Main.musicFade[4] = 0.0f;
|
|
break;
|
|
}
|
|
}
|
|
this.newMusic = Main.ugMusic;
|
|
}
|
|
}
|
|
else if (Main.dayTime && Main.player[Main.myPlayer].ZoneHallow)
|
|
this.newMusic = !Main._shouldUseStormMusic ? ((double) Main.cloudAlpha <= 0.0 || Main.gameMenu ? (!Main._shouldUseWindyDayMusic ? 9 : 44) : 19) : 52;
|
|
else if (Main._shouldUseStormMusic)
|
|
this.newMusic = !Main.bloodMoon ? 52 : 2;
|
|
else if (WorldGen.oceanDepths((int) ((double) Main.screenPosition.X + (double) (Main.screenWidth / 2)) / 16, (int) ((double) Main.screenPosition.Y + (double) (Main.screenHeight / 2)) / 16))
|
|
this.newMusic = !Main.bloodMoon ? (!flag16 ? (Main.dayTime ? 22 : 43) : (!Main.dayTime ? 47 : 46)) : 2;
|
|
else if (Main.player[Main.myPlayer].ZoneDesert)
|
|
{
|
|
if ((double) Main.player[Main.myPlayer].position.Y >= Main.worldSurface * 16.0)
|
|
{
|
|
int x = (int) ((double) Main.player[Main.myPlayer].Center.X / 16.0);
|
|
int y = (int) ((double) Main.player[Main.myPlayer].Center.Y / 16.0);
|
|
this.newMusic = !WorldGen.InWorld(x, y) || !WallID.Sets.Conversion.Sandstone[(int) Main.tile[x, y].wall] && !WallID.Sets.Conversion.HardenedSand[(int) Main.tile[x, y].wall] ? 21 : 61;
|
|
}
|
|
else
|
|
this.newMusic = 21;
|
|
}
|
|
else if (Main.dayTime)
|
|
{
|
|
if ((double) Main.cloudAlpha > 0.0 && !Main.gameMenu)
|
|
{
|
|
this.newMusic = Main.time >= 10800.0 ? 19 : 59;
|
|
}
|
|
else
|
|
{
|
|
if (Main.dayMusic == 0)
|
|
Main.dayMusic = 1;
|
|
if (!Main.music[1].IsPlaying && !Main.music[18].IsPlaying)
|
|
Main.dayMusic = Main.rand.Next(2) != 0 ? 18 : 1;
|
|
this.newMusic = Main.dayMusic;
|
|
if (Main._shouldUseWindyDayMusic)
|
|
this.newMusic = 44;
|
|
}
|
|
}
|
|
else if (!Main.dayTime)
|
|
this.newMusic = !Main.bloodMoon ? ((double) Main.cloudAlpha <= 0.0 || Main.gameMenu ? 3 : 19) : 2;
|
|
if ((double) Main.screenPosition.Y / 16.0 < Main.worldSurface + 10.0 && Main.pumpkinMoon)
|
|
this.newMusic = 30;
|
|
if ((double) Main.screenPosition.Y / 16.0 >= Main.worldSurface + 10.0 || !Main.snowMoon)
|
|
return;
|
|
this.newMusic = 32;
|
|
}
|
|
}
|
|
|
|
private void UpdateWindyDayState()
|
|
{
|
|
if ((double) Main.cloudAlpha == 0.0)
|
|
{
|
|
Main._shouldUseStormMusic = false;
|
|
if (Main.time < 10800.0 || Main.time > 43200.0 || !Main.dayTime)
|
|
{
|
|
Main._shouldUseWindyDayMusic = false;
|
|
}
|
|
else
|
|
{
|
|
if ((double) Math.Abs(Main.windSpeedTarget) < (double) Main._minWind)
|
|
Main._shouldUseWindyDayMusic = false;
|
|
if ((double) Math.Abs(Main.windSpeedTarget) < (double) Main._maxWind)
|
|
return;
|
|
Main._shouldUseWindyDayMusic = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ((double) Main.cloudAlpha < (double) Main._minRain || (double) Math.Abs(Main.windSpeedTarget) < (double) Main._minWind)
|
|
Main._shouldUseStormMusic = false;
|
|
else if ((double) Main.cloudAlpha >= (double) Main._maxRain && (double) Math.Abs(Main.windSpeedTarget) >= (double) Main._maxWind)
|
|
Main._shouldUseStormMusic = true;
|
|
Main._shouldUseWindyDayMusic = false;
|
|
}
|
|
}
|
|
|
|
public static void snowing()
|
|
{
|
|
Vector2 scaledSize = Main.Camera.ScaledSize;
|
|
Vector2 scaledPosition = Main.Camera.ScaledPosition;
|
|
if (Main.gamePaused || Main.SceneMetrics.SnowTileCount <= 0 || (double) Main.player[Main.myPlayer].position.Y >= Main.worldSurface * 16.0)
|
|
return;
|
|
float num1 = (float) Main.SceneMetrics.SnowTileCount / (float) SceneMetrics.SnowTileMax;
|
|
float num2 = num1 * num1;
|
|
float num3 = num2 * num2;
|
|
int num4 = (int) ((double) (int) (500.0 * (double) (Main.Camera.ScaledSize.X / (float) Main.maxScreenW)) * (1.0 + 2.0 * (double) Main.cloudAlpha));
|
|
float num5 = (float) (1.0 + 50.0 * (double) Main.cloudAlpha);
|
|
for (int index1 = 0; (double) index1 < (double) num5; ++index1)
|
|
{
|
|
try
|
|
{
|
|
if ((double) Main.snowDust >= (double) num4 * ((double) Main.gfxQuality / 2.0 + 0.5) + (double) num4 * 0.100000001490116)
|
|
break;
|
|
if ((double) Main.rand.NextFloat() < (double) num3)
|
|
{
|
|
int num6 = Main.rand.Next((int) scaledSize.X + 1500) - 750;
|
|
int num7 = (int) scaledPosition.Y - Main.rand.Next(50);
|
|
if ((double) Main.player[Main.myPlayer].velocity.Y > 0.0)
|
|
num7 -= (int) Main.player[Main.myPlayer].velocity.Y;
|
|
if (Main.rand.Next(5) == 0)
|
|
num6 = Main.rand.Next(500) - 500;
|
|
else if (Main.rand.Next(5) == 0)
|
|
num6 = Main.rand.Next(500) + (int) scaledSize.X;
|
|
if (num6 < 0 || (double) num6 > (double) scaledSize.X)
|
|
num7 += Main.rand.Next((int) ((double) scaledSize.Y * 0.8)) + (int) ((double) scaledSize.Y * 0.1);
|
|
int num8 = num6 + (int) scaledPosition.X;
|
|
int x = num8 / 16;
|
|
int y = num7 / 16;
|
|
if (WorldGen.InWorld(x, y))
|
|
{
|
|
if (Main.tile[x, y] != null)
|
|
{
|
|
if (!Main.tile[x, y].nactive())
|
|
{
|
|
if (Main.tile[x, y].wall == (ushort) 0)
|
|
{
|
|
int index2 = Dust.NewDust(new Vector2((float) num8, (float) num7), 10, 10, 76);
|
|
Main.dust[index2].scale += Main.cloudAlpha * 0.2f;
|
|
Main.dust[index2].velocity.Y = (float) (3.0 + (double) Main.rand.Next(30) * 0.100000001490116);
|
|
Main.dust[index2].velocity.Y *= Main.dust[index2].scale;
|
|
if (!Main.raining)
|
|
{
|
|
Main.dust[index2].velocity.X = Main.windSpeedCurrent + (float) Main.rand.Next(-10, 10) * 0.1f;
|
|
Main.dust[index2].velocity.X += Main.windSpeedCurrent * 15f;
|
|
}
|
|
else
|
|
{
|
|
Main.dust[index2].velocity.X = (float) (Math.Sqrt((double) Math.Abs(Main.windSpeedCurrent)) * (double) Math.Sign(Main.windSpeedCurrent) * ((double) Main.cloudAlpha + 0.5) * 10.0 + (double) Main.rand.NextFloat() * 0.200000002980232 - 0.100000001490116);
|
|
Main.dust[index2].velocity.Y *= 0.5f;
|
|
}
|
|
Main.dust[index2].velocity.Y *= (float) (1.0 + 0.300000011920929 * (double) Main.cloudAlpha);
|
|
Main.dust[index2].scale += Main.cloudAlpha * 0.2f;
|
|
Main.dust[index2].velocity *= (float) (1.0 + (double) Main.cloudAlpha * 0.5);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void checkXMas()
|
|
{
|
|
DateTime now = DateTime.Now;
|
|
int day = now.Day;
|
|
int month = now.Month;
|
|
Main.xMas = day >= 15 && month == 12;
|
|
if (!Main.forceXMasForToday)
|
|
return;
|
|
Main.xMas = true;
|
|
}
|
|
|
|
public static void checkHalloween()
|
|
{
|
|
DateTime now = DateTime.Now;
|
|
int day = now.Day;
|
|
int month = now.Month;
|
|
Main.halloween = day >= 10 && month == 10 || day <= 1 && month == 11;
|
|
if (!Main.forceHalloweenForToday)
|
|
return;
|
|
Main.halloween = true;
|
|
}
|
|
|
|
public void updateCloudLayer()
|
|
{
|
|
switch (Main.netMode)
|
|
{
|
|
case 0:
|
|
if (Main.gameMenu)
|
|
return;
|
|
break;
|
|
case 1:
|
|
return;
|
|
}
|
|
int num1 = 86400;
|
|
int minValue = num1 / 24;
|
|
float num2 = Math.Max(1f, (float) (1.0 + 4.0 * (double) Main.cloudAlpha));
|
|
if ((double) Main.cloudBGActive > 0.0)
|
|
{
|
|
if ((double) Main.cloudBGActive > 1.0)
|
|
Main.cloudBGActive -= (float) Main.dayRate / num2;
|
|
if ((double) Main.cloudBGActive < 1.0)
|
|
Main.cloudBGActive = 1f;
|
|
if ((double) Main.cloudBGActive != 1.0 || Main.rand.Next((int) ((double) (minValue * 2 / Math.Max(Main.dayRate, 1)) * (double) num2)) != 0)
|
|
return;
|
|
Main.cloudBGActive = (float) -Main.rand.Next(minValue * 4, num1 * 4);
|
|
if (Main.netMode != 2)
|
|
return;
|
|
NetMessage.SendData(7);
|
|
}
|
|
else
|
|
{
|
|
if ((double) Main.cloudBGActive < 0.0)
|
|
{
|
|
Main.cloudBGActive += (float) Main.dayRate * num2;
|
|
if (Main.raining)
|
|
Main.cloudBGActive += (float) (2 * Main.dayRate) * num2;
|
|
}
|
|
if ((double) Main.cloudBGActive > 0.0)
|
|
Main.cloudBGActive = 0.0f;
|
|
if ((double) Main.cloudBGActive == 0.0 && Main.rand.Next((int) ((double) (minValue * 12 / (Main.dayRate == 0 ? 1 : Main.dayRate)) / (double) num2)) == 0)
|
|
{
|
|
Main.cloudBGActive = (float) Main.rand.Next(minValue * 3, num1 * 2);
|
|
if (Main.netMode != 2)
|
|
return;
|
|
NetMessage.SendData(7);
|
|
}
|
|
else
|
|
{
|
|
if (!Main.IsItStorming)
|
|
return;
|
|
Main.cloudBGActive = (float) Main.rand.Next(minValue, minValue * 4);
|
|
if (Main.netMode != 2)
|
|
return;
|
|
NetMessage.SendData(7);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void TeleportEffect(
|
|
Microsoft.Xna.Framework.Rectangle effectRect,
|
|
int Style,
|
|
int extraInfo = 0,
|
|
float dustCountMult = 1f,
|
|
TeleportationSide side = TeleportationSide.Entry,
|
|
Vector2 otherPosition = default (Vector2))
|
|
{
|
|
switch (Style)
|
|
{
|
|
case 0:
|
|
SoundEngine.PlaySound(SoundID.Item6, effectRect.X + effectRect.Width / 2, effectRect.Y + effectRect.Height / 2);
|
|
int num1 = (int) ((double) (effectRect.Width * effectRect.Height / 5) * (double) dustCountMult);
|
|
for (int index1 = 0; index1 < num1; ++index1)
|
|
{
|
|
int index2 = Dust.NewDust(new Vector2((float) effectRect.X, (float) effectRect.Y), effectRect.Width, effectRect.Height, 159);
|
|
Main.dust[index2].scale = (float) Main.rand.Next(20, 70) * 0.01f;
|
|
if (index1 < 10)
|
|
Main.dust[index2].scale += 0.25f;
|
|
if (index1 < 5)
|
|
Main.dust[index2].scale += 0.25f;
|
|
}
|
|
break;
|
|
case 1:
|
|
SoundEngine.PlaySound(SoundID.Item8, effectRect.X + effectRect.Width / 2, effectRect.Y + effectRect.Height / 2);
|
|
int num2 = (int) ((double) (effectRect.Width * effectRect.Height / 5) * (double) dustCountMult);
|
|
for (int index3 = 0; index3 < num2; ++index3)
|
|
{
|
|
int index4 = Dust.NewDust(new Vector2((float) effectRect.X, (float) effectRect.Y), effectRect.Width, effectRect.Height, 164);
|
|
Main.dust[index4].scale = (float) Main.rand.Next(20, 70) * 0.01f;
|
|
if (index3 < 10)
|
|
Main.dust[index4].scale += 0.25f;
|
|
if (index3 < 5)
|
|
Main.dust[index4].scale += 0.25f;
|
|
}
|
|
break;
|
|
case 2:
|
|
int num3 = (int) (50.0 * (double) dustCountMult);
|
|
for (int index = 0; index < num3; ++index)
|
|
Main.dust[Dust.NewDust(new Vector2((float) effectRect.X, (float) effectRect.Y), effectRect.Width, effectRect.Height, 58, Alpha: 150, newColor: Microsoft.Xna.Framework.Color.GhostWhite, Scale: 1.2f)].velocity *= 0.5f;
|
|
break;
|
|
case 3:
|
|
SoundEngine.PlaySound(SoundID.Item6, effectRect.X + effectRect.Width / 2, effectRect.Y + effectRect.Height / 2);
|
|
int num4 = (int) (50.0 * (double) dustCountMult);
|
|
for (int index5 = 0; index5 < num4; ++index5)
|
|
{
|
|
int index6 = Dust.NewDust(new Vector2((float) effectRect.X, (float) effectRect.Y), effectRect.Width, effectRect.Height, 180);
|
|
Main.dust[index6].noGravity = true;
|
|
for (int index7 = 0; index7 < 5; ++index7)
|
|
{
|
|
if (Main.rand.Next(3) == 0)
|
|
Main.dust[index6].velocity *= 0.75f;
|
|
}
|
|
if (Main.rand.Next(3) == 0)
|
|
{
|
|
Main.dust[index6].velocity *= 2f;
|
|
Main.dust[index6].scale *= 1.2f;
|
|
}
|
|
if (Main.rand.Next(3) == 0)
|
|
{
|
|
Main.dust[index6].velocity *= 2f;
|
|
Main.dust[index6].scale *= 1.2f;
|
|
}
|
|
if (Main.rand.Next(2) == 0)
|
|
{
|
|
Main.dust[index6].fadeIn = (float) Main.rand.Next(75, 100) * 0.01f;
|
|
Main.dust[index6].scale = (float) Main.rand.Next(25, 75) * 0.01f;
|
|
}
|
|
Main.dust[index6].scale *= 0.8f;
|
|
}
|
|
break;
|
|
case 4:
|
|
SoundEngine.PlaySound(SoundID.Item8, effectRect.X + effectRect.Width / 2, effectRect.Y + effectRect.Height / 2);
|
|
int num5 = (int) ((double) (effectRect.Width * effectRect.Height / 5) * (double) dustCountMult);
|
|
for (int index = 0; index < num5; ++index)
|
|
{
|
|
Dust dust = Main.dust[Dust.NewDust(effectRect.TopLeft(), effectRect.Width, effectRect.Height, 263)];
|
|
dust.color = PortalHelper.GetPortalColor(extraInfo);
|
|
dust.noLight = true;
|
|
dust.noGravity = true;
|
|
dust.scale = 1.2f;
|
|
dust.fadeIn = 0.4f;
|
|
dust.color.A = byte.MaxValue;
|
|
}
|
|
break;
|
|
case 5:
|
|
Vector2 Position1 = effectRect.TopLeft();
|
|
int num6 = (int) (100.0 * (double) dustCountMult);
|
|
for (int index = 0; index < num6; ++index)
|
|
{
|
|
Dust dust = Dust.NewDustDirect(Position1, effectRect.Width, effectRect.Height + 24, Dust.dustWater());
|
|
dust.velocity.Y *= 0.0f;
|
|
dust.velocity.Y -= 3.5f;
|
|
dust.velocity.X *= 1.5f;
|
|
dust.scale = 0.8f;
|
|
dust.alpha = 130;
|
|
dust.noGravity = true;
|
|
dust.fadeIn = 1.2f;
|
|
}
|
|
SoundEngine.PlaySound(19, effectRect.Center.ToVector2(), 0);
|
|
break;
|
|
case 7:
|
|
Vector2 Position2 = effectRect.TopLeft();
|
|
int num7 = (int) (50.0 * (double) dustCountMult);
|
|
for (int index = 0; index < num7; ++index)
|
|
{
|
|
Dust dust = Dust.NewDustDirect(Position2, effectRect.Width, effectRect.Height + 24, 35);
|
|
dust.velocity.Y *= 0.0f;
|
|
dust.velocity.Y -= 3.5f;
|
|
dust.velocity.X *= 1.5f;
|
|
dust.scale = 0.8f;
|
|
dust.alpha = 130;
|
|
dust.noGravity = true;
|
|
dust.fadeIn = 1.2f;
|
|
}
|
|
SoundEngine.PlaySound(SoundID.Item8, effectRect.Center.ToVector2());
|
|
break;
|
|
case 9:
|
|
effectRect.Inflate(15, 15);
|
|
int num8 = (int) (100.0 * (double) dustCountMult);
|
|
for (int index = 0; index < num8; ++index)
|
|
TeleportPylonsSystem.SpawnInWorldDust(extraInfo, effectRect);
|
|
SoundEngine.PlaySound(SoundID.Item6, effectRect.Center.X, effectRect.Center.Y);
|
|
break;
|
|
case 10:
|
|
effectRect.Inflate(15, 15);
|
|
int num9 = (int) (60.0 * (double) dustCountMult);
|
|
Vector2 vector2 = otherPosition - effectRect.TopLeft();
|
|
for (int index = 0; index < num9; ++index)
|
|
{
|
|
float num10 = 0.4f + Main.rand.NextFloat();
|
|
float num11 = 0.4f + Main.rand.NextFloat();
|
|
Microsoft.Xna.Framework.Color rgb = Main.hslToRgb((float) (0.660000026226044 + (double) Main.rand.NextFloat() * 0.239999994635582), 1f, 0.5f);
|
|
Dust rf = Dust.NewDustDirect(effectRect.TopLeft(), effectRect.Width, effectRect.Height, 267, Alpha: ((int) sbyte.MaxValue), newColor: rgb);
|
|
rf.scale = (float) Main.rand.Next(20, 70) * 0.01f;
|
|
if (index < 10)
|
|
rf.scale += 0.25f;
|
|
if (index < 5)
|
|
rf.scale += 0.25f;
|
|
if ((double) index < (double) num9 * 0.800000011920929)
|
|
rf.velocity += vector2 * 0.1f * Main.rand.NextFloat();
|
|
rf.noGravity = true;
|
|
rf.noLight = true;
|
|
rf.scale = num11;
|
|
rf.fadeIn = num10;
|
|
if (rf.dustIndex != 6000)
|
|
{
|
|
Dust dust = Dust.CloneDust(rf);
|
|
dust.scale *= 0.65f;
|
|
dust.fadeIn *= 0.65f;
|
|
dust.color = new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue);
|
|
}
|
|
}
|
|
SoundEngine.PlaySound(SoundID.Item8, effectRect.Center.X, effectRect.Center.Y);
|
|
break;
|
|
}
|
|
}
|
|
|
|
public static void Ambience()
|
|
{
|
|
++Main.ambientCounter;
|
|
if (Main.ambientCounter < 15)
|
|
return;
|
|
Main.ambientCounter = 0;
|
|
Microsoft.Xna.Framework.Point point = Main.LocalPlayer.Center.ToPoint();
|
|
if ((double) Main.ambientWaterfallStrength > 0.0)
|
|
{
|
|
SoundEngine.PlaySound(34, (int) Main.ambientWaterfallX, (int) Main.ambientWaterfallY, (int) Main.ambientWaterfallStrength);
|
|
Main._isWaterfallMusicPlaying = true;
|
|
}
|
|
else
|
|
{
|
|
if (Main._isWaterfallMusicPlaying)
|
|
SoundEngine.PlaySound(34, point.X, point.Y, 0);
|
|
Main._isWaterfallMusicPlaying = false;
|
|
}
|
|
float num1 = Math.Abs(Main.ambientLavaX - (Main.screenPosition.X + (float) (Main.screenWidth / 2))) + Math.Abs(Main.ambientLavaY - (Main.screenPosition.Y + (float) (Main.screenHeight / 2)));
|
|
double num2 = (double) Math.Abs(Main.ambientLavafallX - (Main.screenPosition.X + (float) (Main.screenWidth / 2))) + (double) Math.Abs(Main.ambientLavafallY - (Main.screenPosition.Y + (float) (Main.screenHeight / 2)));
|
|
float num3 = Main.ambientLavaX;
|
|
float num4 = Main.ambientLavaY;
|
|
double num5 = (double) num1;
|
|
if (num2 < num5)
|
|
{
|
|
num3 = Main.ambientLavafallX;
|
|
num4 = Main.ambientLavafallY;
|
|
}
|
|
float num6 = Main.ambientLavafallStrength + Main.ambientLavaStrength;
|
|
if ((double) Main.ambientLavafallStrength > 0.0)
|
|
{
|
|
SoundEngine.PlaySound(35, (int) num3, (int) num4, (int) num6);
|
|
Main._isLavafallMusicPlaying = true;
|
|
}
|
|
else
|
|
{
|
|
if (Main._isLavafallMusicPlaying)
|
|
SoundEngine.PlaySound(35, point.X, point.Y, 0);
|
|
Main._isLavafallMusicPlaying = false;
|
|
}
|
|
}
|
|
|
|
public static void AnimateTiles_CritterCages()
|
|
{
|
|
if (!Main.critterCage)
|
|
return;
|
|
for (int index = 0; index < Main.cageFrames; ++index)
|
|
{
|
|
if (Main.bunnyCageFrame[index] == 0)
|
|
{
|
|
++Main.bunnyCageFrameCounter[index];
|
|
if (Main.bunnyCageFrameCounter[index] > Main.rand.Next(30, 900))
|
|
{
|
|
if (Main.rand.Next(3) != 0)
|
|
{
|
|
int num = Main.rand.Next(7);
|
|
Main.bunnyCageFrame[index] = num != 0 ? (num > 2 ? 1 : 2) : 4;
|
|
}
|
|
Main.bunnyCageFrameCounter[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.bunnyCageFrame[index] == 1)
|
|
{
|
|
++Main.bunnyCageFrameCounter[index];
|
|
if (Main.bunnyCageFrameCounter[index] >= 10)
|
|
{
|
|
Main.bunnyCageFrameCounter[index] = 0;
|
|
Main.bunnyCageFrame[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.bunnyCageFrame[index] >= 2 && Main.bunnyCageFrame[index] <= 3)
|
|
{
|
|
++Main.bunnyCageFrameCounter[index];
|
|
if (Main.bunnyCageFrameCounter[index] >= 10)
|
|
{
|
|
Main.bunnyCageFrameCounter[index] = 0;
|
|
++Main.bunnyCageFrame[index];
|
|
}
|
|
if (Main.bunnyCageFrame[index] > 3)
|
|
Main.bunnyCageFrame[index] = 0;
|
|
}
|
|
else if (Main.bunnyCageFrame[index] >= 4 && Main.bunnyCageFrame[index] <= 10)
|
|
{
|
|
++Main.bunnyCageFrameCounter[index];
|
|
if (Main.bunnyCageFrameCounter[index] >= 5)
|
|
{
|
|
Main.bunnyCageFrameCounter[index] = 0;
|
|
++Main.bunnyCageFrame[index];
|
|
}
|
|
}
|
|
else if (Main.bunnyCageFrame[index] == 11)
|
|
{
|
|
++Main.bunnyCageFrameCounter[index];
|
|
if (Main.bunnyCageFrameCounter[index] > Main.rand.Next(30, 900))
|
|
{
|
|
if (Main.rand.Next(3) != 0)
|
|
Main.bunnyCageFrame[index] = Main.rand.Next(7) != 0 ? 12 : 13;
|
|
Main.bunnyCageFrameCounter[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.bunnyCageFrame[index] == 12)
|
|
{
|
|
++Main.bunnyCageFrameCounter[index];
|
|
if (Main.bunnyCageFrameCounter[index] >= 10)
|
|
{
|
|
Main.bunnyCageFrameCounter[index] = 0;
|
|
Main.bunnyCageFrame[index] = 11;
|
|
}
|
|
}
|
|
else if (Main.bunnyCageFrame[index] >= 13)
|
|
{
|
|
++Main.bunnyCageFrameCounter[index];
|
|
if (Main.bunnyCageFrameCounter[index] >= 5)
|
|
{
|
|
Main.bunnyCageFrameCounter[index] = 0;
|
|
++Main.bunnyCageFrame[index];
|
|
}
|
|
if (Main.bunnyCageFrame[index] > 21)
|
|
Main.bunnyCageFrame[index] = 0;
|
|
}
|
|
}
|
|
for (int index = 0; index < Main.cageFrames; ++index)
|
|
{
|
|
if (Main.squirrelCageFrame[index] == 0)
|
|
{
|
|
++Main.squirrelCageFrameCounter[index];
|
|
if (Main.squirrelCageFrameCounter[index] > Main.rand.Next(30, 900))
|
|
{
|
|
if (Main.rand.Next(3) != 0)
|
|
{
|
|
int num = Main.rand.Next(7);
|
|
Main.squirrelCageFrame[index] = num != 0 ? (num > 2 ? 1 : 2) : 4;
|
|
}
|
|
Main.squirrelCageFrameCounter[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.squirrelCageFrame[index] == 1)
|
|
{
|
|
++Main.squirrelCageFrameCounter[index];
|
|
if (Main.squirrelCageFrameCounter[index] >= 10)
|
|
{
|
|
Main.squirrelCageFrameCounter[index] = 0;
|
|
Main.squirrelCageFrame[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.squirrelCageFrame[index] >= 2 && Main.squirrelCageFrame[index] <= 3)
|
|
{
|
|
++Main.squirrelCageFrameCounter[index];
|
|
if (Main.squirrelCageFrameCounter[index] >= 5)
|
|
{
|
|
Main.squirrelCageFrameCounter[index] = 0;
|
|
++Main.squirrelCageFrame[index];
|
|
}
|
|
if (Main.squirrelCageFrame[index] > 3)
|
|
Main.squirrelCageFrame[index] = Main.rand.Next(5) != 0 ? 2 : 0;
|
|
}
|
|
else if (Main.squirrelCageFrame[index] >= 4 && Main.squirrelCageFrame[index] <= 8)
|
|
{
|
|
++Main.squirrelCageFrameCounter[index];
|
|
if (Main.squirrelCageFrameCounter[index] >= 5)
|
|
{
|
|
Main.squirrelCageFrameCounter[index] = 0;
|
|
++Main.squirrelCageFrame[index];
|
|
}
|
|
}
|
|
else if (Main.squirrelCageFrame[index] == 9)
|
|
{
|
|
++Main.squirrelCageFrameCounter[index];
|
|
if (Main.squirrelCageFrameCounter[index] > Main.rand.Next(30, 900))
|
|
{
|
|
if (Main.rand.Next(3) != 0)
|
|
{
|
|
int num = Main.rand.Next(7);
|
|
Main.squirrelCageFrame[index] = num != 0 ? (num > 2 ? 10 : 11) : 13;
|
|
}
|
|
Main.squirrelCageFrameCounter[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.squirrelCageFrame[index] == 10)
|
|
{
|
|
++Main.squirrelCageFrameCounter[index];
|
|
if (Main.squirrelCageFrameCounter[index] >= 10)
|
|
{
|
|
Main.squirrelCageFrameCounter[index] = 0;
|
|
Main.squirrelCageFrame[index] = 9;
|
|
}
|
|
}
|
|
else if (Main.squirrelCageFrame[index] == 11 || Main.squirrelCageFrame[index] == 12)
|
|
{
|
|
++Main.squirrelCageFrameCounter[index];
|
|
if (Main.squirrelCageFrameCounter[index] >= 5)
|
|
{
|
|
++Main.squirrelCageFrame[index];
|
|
if (Main.squirrelCageFrame[index] > 12)
|
|
Main.squirrelCageFrame[index] = Main.rand.Next(5) == 0 ? 9 : 11;
|
|
Main.squirrelCageFrameCounter[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.squirrelCageFrame[index] >= 13)
|
|
{
|
|
++Main.squirrelCageFrameCounter[index];
|
|
if (Main.squirrelCageFrameCounter[index] >= 5)
|
|
{
|
|
Main.squirrelCageFrameCounter[index] = 0;
|
|
++Main.squirrelCageFrame[index];
|
|
}
|
|
if (Main.squirrelCageFrame[index] > 17)
|
|
Main.squirrelCageFrame[index] = 0;
|
|
}
|
|
}
|
|
for (int index = 0; index < Main.cageFrames; ++index)
|
|
{
|
|
if (Main.squirrelCageFrameOrange[index] == 0)
|
|
{
|
|
++Main.squirrelCageFrameCounterOrange[index];
|
|
if (Main.squirrelCageFrameCounterOrange[index] > Main.rand.Next(30, 900))
|
|
{
|
|
if (Main.rand.Next(3) != 0)
|
|
{
|
|
int num = Main.rand.Next(7);
|
|
Main.squirrelCageFrameOrange[index] = num != 0 ? (num > 2 ? 1 : 2) : 4;
|
|
}
|
|
Main.squirrelCageFrameCounterOrange[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.squirrelCageFrameOrange[index] == 1)
|
|
{
|
|
++Main.squirrelCageFrameCounterOrange[index];
|
|
if (Main.squirrelCageFrameCounterOrange[index] >= 10)
|
|
{
|
|
Main.squirrelCageFrameCounterOrange[index] = 0;
|
|
Main.squirrelCageFrameOrange[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.squirrelCageFrameOrange[index] >= 2 && Main.squirrelCageFrameOrange[index] <= 3)
|
|
{
|
|
++Main.squirrelCageFrameCounterOrange[index];
|
|
if (Main.squirrelCageFrameCounterOrange[index] >= 5)
|
|
{
|
|
Main.squirrelCageFrameCounterOrange[index] = 0;
|
|
++Main.squirrelCageFrameOrange[index];
|
|
}
|
|
if (Main.squirrelCageFrameOrange[index] > 3)
|
|
Main.squirrelCageFrameOrange[index] = Main.rand.Next(5) != 0 ? 2 : 0;
|
|
}
|
|
else if (Main.squirrelCageFrameOrange[index] >= 4 && Main.squirrelCageFrameOrange[index] <= 8)
|
|
{
|
|
++Main.squirrelCageFrameCounterOrange[index];
|
|
if (Main.squirrelCageFrameCounterOrange[index] >= 5)
|
|
{
|
|
Main.squirrelCageFrameCounterOrange[index] = 0;
|
|
++Main.squirrelCageFrameOrange[index];
|
|
}
|
|
}
|
|
else if (Main.squirrelCageFrameOrange[index] == 9)
|
|
{
|
|
++Main.squirrelCageFrameCounterOrange[index];
|
|
if (Main.squirrelCageFrameCounterOrange[index] > Main.rand.Next(30, 900))
|
|
{
|
|
if (Main.rand.Next(3) != 0)
|
|
{
|
|
int num = Main.rand.Next(7);
|
|
Main.squirrelCageFrameOrange[index] = num != 0 ? (num > 2 ? 10 : 11) : 13;
|
|
}
|
|
Main.squirrelCageFrameCounterOrange[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.squirrelCageFrameOrange[index] == 10)
|
|
{
|
|
++Main.squirrelCageFrameCounterOrange[index];
|
|
if (Main.squirrelCageFrameCounterOrange[index] >= 10)
|
|
{
|
|
Main.squirrelCageFrameCounterOrange[index] = 0;
|
|
Main.squirrelCageFrameOrange[index] = 9;
|
|
}
|
|
}
|
|
else if (Main.squirrelCageFrameOrange[index] == 11 || Main.squirrelCageFrameOrange[index] == 12)
|
|
{
|
|
++Main.squirrelCageFrameCounterOrange[index];
|
|
if (Main.squirrelCageFrameCounterOrange[index] >= 5)
|
|
{
|
|
++Main.squirrelCageFrameOrange[index];
|
|
if (Main.squirrelCageFrameOrange[index] > 12)
|
|
Main.squirrelCageFrameOrange[index] = Main.rand.Next(5) == 0 ? 9 : 11;
|
|
Main.squirrelCageFrameCounterOrange[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.squirrelCageFrameOrange[index] >= 13)
|
|
{
|
|
++Main.squirrelCageFrameCounterOrange[index];
|
|
if (Main.squirrelCageFrameCounterOrange[index] >= 5)
|
|
{
|
|
Main.squirrelCageFrameCounterOrange[index] = 0;
|
|
++Main.squirrelCageFrameOrange[index];
|
|
}
|
|
if (Main.squirrelCageFrameOrange[index] > 17)
|
|
Main.squirrelCageFrameOrange[index] = 0;
|
|
}
|
|
}
|
|
for (int index = 0; index < Main.cageFrames; ++index)
|
|
{
|
|
if (Main.mallardCageFrame[index] == 0 || Main.mallardCageFrame[index] == 4)
|
|
{
|
|
++Main.mallardCageFrameCounter[index];
|
|
if (Main.mallardCageFrameCounter[index] > Main.rand.Next(45, 2700))
|
|
{
|
|
if (Main.mallardCageFrame[index] == 0 && Main.rand.Next(3) != 0 || Main.mallardCageFrame[index] == 4 && Main.rand.Next(5) == 0)
|
|
Main.mallardCageFrame[index] = Main.rand.Next(6) != 0 ? (Main.rand.Next(3) != 0 ? 1 : (Main.mallardCageFrame[index] != 4 ? 4 : 0)) : 5;
|
|
Main.mallardCageFrameCounter[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.mallardCageFrame[index] >= 1 && Main.mallardCageFrame[index] <= 3)
|
|
{
|
|
++Main.mallardCageFrameCounter[index];
|
|
if (Main.mallardCageFrameCounter[index] >= 5)
|
|
{
|
|
Main.mallardCageFrameCounter[index] = 0;
|
|
++Main.mallardCageFrame[index];
|
|
}
|
|
if (Main.mallardCageFrame[index] > 3)
|
|
Main.mallardCageFrame[index] = Main.rand.Next(5) != 0 ? 1 : 0;
|
|
}
|
|
else if (Main.mallardCageFrame[index] >= 5 && Main.mallardCageFrame[index] <= 11)
|
|
{
|
|
++Main.mallardCageFrameCounter[index];
|
|
if (Main.mallardCageFrameCounter[index] >= 5)
|
|
{
|
|
Main.mallardCageFrameCounter[index] = 0;
|
|
++Main.mallardCageFrame[index];
|
|
}
|
|
}
|
|
else if (Main.mallardCageFrame[index] == 12 || Main.mallardCageFrame[index] == 16)
|
|
{
|
|
++Main.mallardCageFrameCounter[index];
|
|
if (Main.mallardCageFrameCounter[index] > Main.rand.Next(45, 2700))
|
|
{
|
|
if (Main.mallardCageFrame[index] == 12 && Main.rand.Next(3) != 0 || Main.mallardCageFrame[index] == 16 && Main.rand.Next(5) == 0)
|
|
Main.mallardCageFrame[index] = Main.rand.Next(6) != 0 ? (Main.rand.Next(3) != 0 ? 13 : (Main.mallardCageFrame[index] != 16 ? 16 : 12)) : 17;
|
|
Main.mallardCageFrameCounter[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.mallardCageFrame[index] >= 13 && Main.mallardCageFrame[index] <= 15)
|
|
{
|
|
++Main.mallardCageFrameCounter[index];
|
|
if (Main.mallardCageFrameCounter[index] >= 5)
|
|
{
|
|
++Main.mallardCageFrame[index];
|
|
if (Main.mallardCageFrame[index] > 15)
|
|
Main.mallardCageFrame[index] = Main.rand.Next(5) == 0 ? 13 : 12;
|
|
Main.mallardCageFrameCounter[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.mallardCageFrame[index] >= 17)
|
|
{
|
|
++Main.mallardCageFrameCounter[index];
|
|
if (Main.mallardCageFrameCounter[index] >= 5)
|
|
{
|
|
Main.mallardCageFrameCounter[index] = 0;
|
|
++Main.mallardCageFrame[index];
|
|
}
|
|
if (Main.mallardCageFrame[index] > 23)
|
|
Main.mallardCageFrame[index] = 0;
|
|
}
|
|
}
|
|
for (int index = 0; index < Main.cageFrames; ++index)
|
|
{
|
|
if (Main.duckCageFrame[index] == 0 || Main.duckCageFrame[index] == 4)
|
|
{
|
|
++Main.duckCageFrameCounter[index];
|
|
if (Main.duckCageFrameCounter[index] > Main.rand.Next(45, 2700))
|
|
{
|
|
if (Main.duckCageFrame[index] == 0 && Main.rand.Next(3) != 0 || Main.duckCageFrame[index] == 4 && Main.rand.Next(5) == 0)
|
|
Main.duckCageFrame[index] = Main.rand.Next(6) != 0 ? (Main.rand.Next(3) != 0 ? 1 : (Main.duckCageFrame[index] != 4 ? 4 : 0)) : 5;
|
|
Main.duckCageFrameCounter[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.duckCageFrame[index] >= 1 && Main.duckCageFrame[index] <= 3)
|
|
{
|
|
++Main.duckCageFrameCounter[index];
|
|
if (Main.duckCageFrameCounter[index] >= 5)
|
|
{
|
|
Main.duckCageFrameCounter[index] = 0;
|
|
++Main.duckCageFrame[index];
|
|
}
|
|
if (Main.duckCageFrame[index] > 3)
|
|
Main.duckCageFrame[index] = Main.rand.Next(5) != 0 ? 1 : 0;
|
|
}
|
|
else if (Main.duckCageFrame[index] >= 5 && Main.duckCageFrame[index] <= 11)
|
|
{
|
|
++Main.duckCageFrameCounter[index];
|
|
if (Main.duckCageFrameCounter[index] >= 5)
|
|
{
|
|
Main.duckCageFrameCounter[index] = 0;
|
|
++Main.duckCageFrame[index];
|
|
}
|
|
}
|
|
else if (Main.duckCageFrame[index] == 12 || Main.duckCageFrame[index] == 16)
|
|
{
|
|
++Main.duckCageFrameCounter[index];
|
|
if (Main.duckCageFrameCounter[index] > Main.rand.Next(45, 2700))
|
|
{
|
|
if (Main.duckCageFrame[index] == 12 && Main.rand.Next(3) != 0 || Main.duckCageFrame[index] == 16 && Main.rand.Next(5) == 0)
|
|
Main.duckCageFrame[index] = Main.rand.Next(6) != 0 ? (Main.rand.Next(3) != 0 ? 13 : (Main.duckCageFrame[index] != 16 ? 16 : 12)) : 17;
|
|
Main.duckCageFrameCounter[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.duckCageFrame[index] >= 13 && Main.duckCageFrame[index] <= 15)
|
|
{
|
|
++Main.duckCageFrameCounter[index];
|
|
if (Main.duckCageFrameCounter[index] >= 5)
|
|
{
|
|
++Main.duckCageFrame[index];
|
|
if (Main.duckCageFrame[index] > 15)
|
|
Main.duckCageFrame[index] = Main.rand.Next(5) == 0 ? 13 : 12;
|
|
Main.duckCageFrameCounter[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.duckCageFrame[index] >= 17)
|
|
{
|
|
++Main.duckCageFrameCounter[index];
|
|
if (Main.duckCageFrameCounter[index] >= 5)
|
|
{
|
|
Main.duckCageFrameCounter[index] = 0;
|
|
++Main.duckCageFrame[index];
|
|
}
|
|
if (Main.duckCageFrame[index] > 23)
|
|
Main.duckCageFrame[index] = 0;
|
|
}
|
|
}
|
|
for (int index = 0; index < Main.cageFrames; ++index)
|
|
{
|
|
++Main.grebeCageFrameCounter[index];
|
|
bool flag = Main.grebeCageFrame[index] == 0 || Main.grebeCageFrame[index] == 7;
|
|
int num1 = Main.grebeCageFrame[index] == 16 ? 1 : (Main.grebeCageFrame[index] == 20 ? 1 : 0);
|
|
int num2 = 5;
|
|
if (flag)
|
|
num2 = Main.rand.Next(300, 400);
|
|
if (num1 != 0)
|
|
num2 = Main.rand.Next(480, 600);
|
|
if (Main.grebeCageFrameCounter[index] >= num2)
|
|
{
|
|
Main.grebeCageFrameCounter[index] = 0;
|
|
if (Main.grebeCageFrame[index] >= 25 && Main.grebeCageFrame[index] <= 27)
|
|
{
|
|
++Main.grebeCageFrame[index];
|
|
if (Main.grebeCageFrame[index] > 27)
|
|
Main.grebeCageFrame[index] = Main.rand.Next(5) != 0 ? 25 : 7;
|
|
}
|
|
else if (Main.grebeCageFrame[index] >= 22 && Main.grebeCageFrame[index] <= 24)
|
|
{
|
|
++Main.grebeCageFrame[index];
|
|
if (Main.grebeCageFrame[index] > 24)
|
|
Main.grebeCageFrame[index] = Main.rand.Next(5) != 0 ? 22 : 0;
|
|
}
|
|
else if (Main.grebeCageFrame[index] == 0 && Main.rand.Next(3) == 0)
|
|
Main.grebeCageFrame[index] = Main.rand.Next(2) == 0 ? 22 : 14;
|
|
else if (Main.grebeCageFrame[index] == 7 && Main.rand.Next(3) == 0)
|
|
Main.grebeCageFrame[index] = Main.rand.Next(2) == 0 ? 25 : 18;
|
|
else if (Main.grebeCageFrame[index] == 13 || Main.grebeCageFrame[index] == 17)
|
|
Main.grebeCageFrame[index] = 0;
|
|
else if (Main.grebeCageFrame[index] == 21)
|
|
Main.grebeCageFrame[index] = 7;
|
|
else
|
|
++Main.grebeCageFrame[index];
|
|
}
|
|
}
|
|
for (int index = 0; index < Main.cageFrames; ++index)
|
|
{
|
|
++Main.seagullCageFrameCounter[index];
|
|
bool flag1 = Main.seagullCageFrame[index] == 0 || Main.seagullCageFrame[index] == 14;
|
|
bool flag2 = Main.seagullCageFrame[index] >= 15 && Main.seagullCageFrame[index] <= 18;
|
|
int num3 = Main.seagullCageFrame[index] < 9 ? 0 : (Main.seagullCageFrame[index] <= 13 ? 1 : 0);
|
|
int num4 = 6;
|
|
if (flag1)
|
|
num4 = Main.rand.Next(180, 250);
|
|
if (flag2)
|
|
num4 = 66;
|
|
if (num3 != 0)
|
|
num4 = 78;
|
|
if (Main.seagullCageFrameCounter[index] >= num4)
|
|
{
|
|
Main.seagullCageFrameCounter[index] = 0;
|
|
if (Main.seagullCageFrame[index] == 0 && Main.rand.Next(3) == 0)
|
|
Main.seagullCageFrame[index] = 9;
|
|
else if (Main.seagullCageFrame[index] == 14)
|
|
Main.seagullCageFrame[index] = Main.rand.Next(2) != 0 ? 19 : 15;
|
|
else if (Main.seagullCageFrame[index] == 9)
|
|
Main.seagullCageFrame[index] = 0;
|
|
else if (Main.seagullCageFrame[index] == 8 || Main.seagullCageFrame[index] == 15)
|
|
{
|
|
Main.seagullCageFrame[index] = 14;
|
|
}
|
|
else
|
|
{
|
|
++Main.seagullCageFrame[index];
|
|
if (Main.seagullCageFrame[index] > 26)
|
|
Main.seagullCageFrame[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.seagullCageFrame[index] >= 15 && Main.seagullCageFrame[index] <= 18)
|
|
{
|
|
int num5 = Main.seagullCageFrameCounter[index] % 66;
|
|
Main.seagullCageFrame[index] = num5 <= 60 ? (num5 <= 54 ? (num5 <= 48 ? (num5 <= 42 ? (num5 <= 36 ? (num5 <= 30 ? (num5 <= 24 ? (num5 <= 18 ? (num5 <= 12 ? (num5 <= 6 ? 15 : 16) : 17) : 18) : 17) : 16) : 17) : 18) : 17) : 16) : 15;
|
|
}
|
|
else if (Main.seagullCageFrame[index] >= 9 && Main.seagullCageFrame[index] <= 13)
|
|
{
|
|
int num6 = Main.seagullCageFrameCounter[index] % 78;
|
|
Main.seagullCageFrame[index] = num6 <= 72 ? (num6 <= 66 ? (num6 <= 60 ? (num6 <= 54 ? (num6 <= 48 ? (num6 <= 42 ? (num6 <= 36 ? (num6 <= 30 ? (num6 <= 24 ? (num6 <= 18 ? (num6 <= 12 ? (num6 <= 6 ? 9 : 10) : 11) : 12) : 13) : 12) : 11) : 12) : 13) : 12) : 11) : 10) : 9;
|
|
}
|
|
}
|
|
for (int index = 0; index < Main.cageFrames; ++index)
|
|
{
|
|
if (Main.birdCageFrame[index] == 0)
|
|
{
|
|
++Main.birdCageFrameCounter[index];
|
|
if (Main.birdCageFrameCounter[index] > Main.rand.Next(30, 2700))
|
|
{
|
|
if (Main.rand.Next(3) != 0)
|
|
Main.birdCageFrame[index] = Main.rand.Next(3) == 0 ? 1 : 2;
|
|
Main.birdCageFrameCounter[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.birdCageFrame[index] == 1)
|
|
{
|
|
++Main.birdCageFrameCounter[index];
|
|
if (Main.birdCageFrameCounter[index] > Main.rand.Next(900, 18000) && Main.rand.Next(3) == 0)
|
|
{
|
|
Main.birdCageFrameCounter[index] = 0;
|
|
Main.birdCageFrame[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.birdCageFrame[index] >= 2 && Main.birdCageFrame[index] <= 5)
|
|
{
|
|
++Main.birdCageFrameCounter[index];
|
|
if (Main.birdCageFrameCounter[index] >= 5)
|
|
{
|
|
Main.birdCageFrameCounter[index] = 0;
|
|
if (Main.birdCageFrame[index] == 3 && Main.rand.Next(3) == 0)
|
|
Main.birdCageFrame[index] = 13;
|
|
else
|
|
++Main.birdCageFrame[index];
|
|
}
|
|
}
|
|
else if (Main.birdCageFrame[index] == 6)
|
|
{
|
|
++Main.birdCageFrameCounter[index];
|
|
if (Main.birdCageFrameCounter[index] > Main.rand.Next(45, 2700))
|
|
{
|
|
if (Main.rand.Next(3) != 0)
|
|
{
|
|
if (Main.rand.Next(6) == 0)
|
|
Main.birdCageFrame[index] = 7;
|
|
else if (Main.rand.Next(6) == 0)
|
|
Main.birdCageFrame[index] = 11;
|
|
}
|
|
Main.birdCageFrameCounter[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.birdCageFrame[index] >= 7 && Main.birdCageFrame[index] <= 10)
|
|
{
|
|
++Main.birdCageFrameCounter[index];
|
|
if (Main.birdCageFrameCounter[index] >= 5)
|
|
{
|
|
++Main.birdCageFrame[index];
|
|
if (Main.birdCageFrame[index] > 10)
|
|
Main.birdCageFrame[index] = 0;
|
|
Main.birdCageFrameCounter[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.birdCageFrame[index] >= 11 && Main.birdCageFrame[index] <= 13)
|
|
{
|
|
++Main.birdCageFrameCounter[index];
|
|
if (Main.birdCageFrameCounter[index] >= 5)
|
|
{
|
|
++Main.birdCageFrame[index];
|
|
Main.birdCageFrameCounter[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.birdCageFrame[index] == 14)
|
|
{
|
|
++Main.birdCageFrameCounter[index];
|
|
if (Main.birdCageFrameCounter[index] > Main.rand.Next(5, 600))
|
|
{
|
|
Main.birdCageFrame[index] = Main.rand.Next(20) != 0 ? (Main.rand.Next(20) != 0 ? 15 : 4) : 16;
|
|
Main.birdCageFrameCounter[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.birdCageFrame[index] == 15)
|
|
{
|
|
++Main.birdCageFrameCounter[index];
|
|
if (Main.birdCageFrameCounter[index] >= 10)
|
|
{
|
|
Main.birdCageFrameCounter[index] = 0;
|
|
Main.birdCageFrame[index] = 14;
|
|
}
|
|
}
|
|
else if (Main.birdCageFrame[index] >= 16 && Main.birdCageFrame[index] <= 18)
|
|
{
|
|
++Main.birdCageFrameCounter[index];
|
|
if (Main.birdCageFrameCounter[index] >= 5)
|
|
{
|
|
++Main.birdCageFrame[index];
|
|
if (Main.birdCageFrame[index] > 18)
|
|
Main.birdCageFrame[index] = 0;
|
|
Main.birdCageFrameCounter[index] = 0;
|
|
}
|
|
}
|
|
}
|
|
for (int index = 0; index < Main.cageFrames; ++index)
|
|
{
|
|
if (Main.blueBirdCageFrame[index] == 0)
|
|
{
|
|
++Main.blueBirdCageFrameCounter[index];
|
|
if (Main.blueBirdCageFrameCounter[index] > Main.rand.Next(30, 2700))
|
|
{
|
|
if (Main.rand.Next(3) != 0)
|
|
Main.blueBirdCageFrame[index] = Main.rand.Next(3) == 0 ? 1 : 2;
|
|
Main.blueBirdCageFrameCounter[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.blueBirdCageFrame[index] == 1)
|
|
{
|
|
++Main.blueBirdCageFrameCounter[index];
|
|
if (Main.blueBirdCageFrameCounter[index] > Main.rand.Next(900, 18000) && Main.rand.Next(3) == 0)
|
|
{
|
|
Main.blueBirdCageFrameCounter[index] = 0;
|
|
Main.blueBirdCageFrame[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.blueBirdCageFrame[index] >= 2 && Main.blueBirdCageFrame[index] <= 5)
|
|
{
|
|
++Main.blueBirdCageFrameCounter[index];
|
|
if (Main.blueBirdCageFrameCounter[index] >= 5)
|
|
{
|
|
Main.blueBirdCageFrameCounter[index] = 0;
|
|
if (Main.blueBirdCageFrame[index] == 3 && Main.rand.Next(3) == 0)
|
|
Main.blueBirdCageFrame[index] = 13;
|
|
else
|
|
++Main.blueBirdCageFrame[index];
|
|
}
|
|
}
|
|
else if (Main.blueBirdCageFrame[index] == 6)
|
|
{
|
|
++Main.blueBirdCageFrameCounter[index];
|
|
if (Main.blueBirdCageFrameCounter[index] > Main.rand.Next(45, 2700))
|
|
{
|
|
if (Main.rand.Next(3) != 0)
|
|
{
|
|
if (Main.rand.Next(6) == 0)
|
|
Main.blueBirdCageFrame[index] = 7;
|
|
else if (Main.rand.Next(6) == 0)
|
|
Main.blueBirdCageFrame[index] = 11;
|
|
}
|
|
Main.blueBirdCageFrameCounter[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.blueBirdCageFrame[index] >= 7 && Main.blueBirdCageFrame[index] <= 10)
|
|
{
|
|
++Main.blueBirdCageFrameCounter[index];
|
|
if (Main.blueBirdCageFrameCounter[index] >= 5)
|
|
{
|
|
++Main.blueBirdCageFrame[index];
|
|
if (Main.blueBirdCageFrame[index] > 10)
|
|
Main.blueBirdCageFrame[index] = 0;
|
|
Main.blueBirdCageFrameCounter[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.blueBirdCageFrame[index] >= 11 && Main.blueBirdCageFrame[index] <= 13)
|
|
{
|
|
++Main.blueBirdCageFrameCounter[index];
|
|
if (Main.blueBirdCageFrameCounter[index] >= 5)
|
|
{
|
|
++Main.blueBirdCageFrame[index];
|
|
Main.blueBirdCageFrameCounter[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.blueBirdCageFrame[index] == 14)
|
|
{
|
|
++Main.blueBirdCageFrameCounter[index];
|
|
if (Main.blueBirdCageFrameCounter[index] > Main.rand.Next(5, 600))
|
|
{
|
|
Main.blueBirdCageFrame[index] = Main.rand.Next(20) != 0 ? (Main.rand.Next(20) != 0 ? 15 : 4) : 16;
|
|
Main.blueBirdCageFrameCounter[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.blueBirdCageFrame[index] == 15)
|
|
{
|
|
++Main.blueBirdCageFrameCounter[index];
|
|
if (Main.blueBirdCageFrameCounter[index] >= 10)
|
|
{
|
|
Main.blueBirdCageFrameCounter[index] = 0;
|
|
Main.blueBirdCageFrame[index] = 14;
|
|
}
|
|
}
|
|
else if (Main.blueBirdCageFrame[index] >= 16 && Main.blueBirdCageFrame[index] <= 18)
|
|
{
|
|
++Main.blueBirdCageFrameCounter[index];
|
|
if (Main.blueBirdCageFrameCounter[index] >= 5)
|
|
{
|
|
++Main.blueBirdCageFrame[index];
|
|
if (Main.blueBirdCageFrame[index] > 18)
|
|
Main.blueBirdCageFrame[index] = 0;
|
|
Main.blueBirdCageFrameCounter[index] = 0;
|
|
}
|
|
}
|
|
}
|
|
for (int index = 0; index < Main.cageFrames; ++index)
|
|
{
|
|
if (Main.redBirdCageFrame[index] == 0)
|
|
{
|
|
++Main.redBirdCageFrameCounter[index];
|
|
if (Main.redBirdCageFrameCounter[index] > Main.rand.Next(30, 2700))
|
|
{
|
|
if (Main.rand.Next(3) != 0)
|
|
Main.redBirdCageFrame[index] = Main.rand.Next(3) == 0 ? 1 : 2;
|
|
Main.redBirdCageFrameCounter[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.redBirdCageFrame[index] == 1)
|
|
{
|
|
++Main.redBirdCageFrameCounter[index];
|
|
if (Main.redBirdCageFrameCounter[index] > Main.rand.Next(900, 18000) && Main.rand.Next(3) == 0)
|
|
{
|
|
Main.redBirdCageFrameCounter[index] = 0;
|
|
Main.redBirdCageFrame[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.redBirdCageFrame[index] >= 2 && Main.redBirdCageFrame[index] <= 5)
|
|
{
|
|
++Main.redBirdCageFrameCounter[index];
|
|
if (Main.redBirdCageFrameCounter[index] >= 5)
|
|
{
|
|
Main.redBirdCageFrameCounter[index] = 0;
|
|
if (Main.redBirdCageFrame[index] == 3 && Main.rand.Next(3) == 0)
|
|
Main.redBirdCageFrame[index] = 13;
|
|
else
|
|
++Main.redBirdCageFrame[index];
|
|
}
|
|
}
|
|
else if (Main.redBirdCageFrame[index] == 6)
|
|
{
|
|
++Main.redBirdCageFrameCounter[index];
|
|
if (Main.redBirdCageFrameCounter[index] > Main.rand.Next(45, 2700))
|
|
{
|
|
if (Main.rand.Next(3) != 0)
|
|
{
|
|
if (Main.rand.Next(6) == 0)
|
|
Main.redBirdCageFrame[index] = 7;
|
|
else if (Main.rand.Next(6) == 0)
|
|
Main.redBirdCageFrame[index] = 11;
|
|
}
|
|
Main.redBirdCageFrameCounter[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.redBirdCageFrame[index] >= 7 && Main.redBirdCageFrame[index] <= 10)
|
|
{
|
|
++Main.redBirdCageFrameCounter[index];
|
|
if (Main.redBirdCageFrameCounter[index] >= 5)
|
|
{
|
|
++Main.redBirdCageFrame[index];
|
|
if (Main.redBirdCageFrame[index] > 10)
|
|
Main.redBirdCageFrame[index] = 0;
|
|
Main.redBirdCageFrameCounter[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.redBirdCageFrame[index] >= 11 && Main.redBirdCageFrame[index] <= 13)
|
|
{
|
|
++Main.redBirdCageFrameCounter[index];
|
|
if (Main.redBirdCageFrameCounter[index] >= 5)
|
|
{
|
|
++Main.redBirdCageFrame[index];
|
|
Main.redBirdCageFrameCounter[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.redBirdCageFrame[index] == 14)
|
|
{
|
|
++Main.redBirdCageFrameCounter[index];
|
|
if (Main.redBirdCageFrameCounter[index] > Main.rand.Next(5, 600))
|
|
{
|
|
Main.redBirdCageFrame[index] = Main.rand.Next(20) != 0 ? (Main.rand.Next(20) != 0 ? 15 : 4) : 16;
|
|
Main.redBirdCageFrameCounter[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.redBirdCageFrame[index] == 15)
|
|
{
|
|
++Main.redBirdCageFrameCounter[index];
|
|
if (Main.redBirdCageFrameCounter[index] >= 10)
|
|
{
|
|
Main.redBirdCageFrameCounter[index] = 0;
|
|
Main.redBirdCageFrame[index] = 14;
|
|
}
|
|
}
|
|
else if (Main.redBirdCageFrame[index] >= 16 && Main.redBirdCageFrame[index] <= 18)
|
|
{
|
|
++Main.redBirdCageFrameCounter[index];
|
|
if (Main.redBirdCageFrameCounter[index] >= 5)
|
|
{
|
|
++Main.redBirdCageFrame[index];
|
|
if (Main.redBirdCageFrame[index] > 18)
|
|
Main.redBirdCageFrame[index] = 0;
|
|
Main.redBirdCageFrameCounter[index] = 0;
|
|
}
|
|
}
|
|
}
|
|
for (int index1 = 0; index1 < 2; ++index1)
|
|
{
|
|
for (int index2 = 0; index2 < Main.cageFrames; ++index2)
|
|
{
|
|
if (Main.scorpionCageFrame[index1, index2] == 0 || Main.scorpionCageFrame[index1, index2] == 7)
|
|
{
|
|
++Main.scorpionCageFrameCounter[index1, index2];
|
|
if (Main.scorpionCageFrameCounter[index1, index2] > Main.rand.Next(30, 3600))
|
|
{
|
|
if (Main.scorpionCageFrame[index1, index2] == 7)
|
|
Main.scorpionCageFrame[index1, index2] = 0;
|
|
else if (Main.rand.Next(3) == 0)
|
|
Main.scorpionCageFrame[index1, index2] = Main.rand.Next(7) != 0 ? (Main.rand.Next(4) != 0 ? (Main.rand.Next(3) != 0 ? 14 : 7) : 8) : 1;
|
|
Main.scorpionCageFrameCounter[index1, index2] = 0;
|
|
}
|
|
}
|
|
else if (Main.scorpionCageFrame[index1, index2] >= 1 && Main.scorpionCageFrame[index1, index2] <= 2)
|
|
{
|
|
++Main.scorpionCageFrameCounter[index1, index2];
|
|
if (Main.scorpionCageFrameCounter[index1, index2] >= 10)
|
|
{
|
|
Main.scorpionCageFrameCounter[index1, index2] = 0;
|
|
++Main.scorpionCageFrame[index1, index2];
|
|
}
|
|
}
|
|
else if (Main.scorpionCageFrame[index1, index2] >= 8 && Main.scorpionCageFrame[index1, index2] <= 10)
|
|
{
|
|
++Main.scorpionCageFrameCounter[index1, index2];
|
|
if (Main.scorpionCageFrameCounter[index1, index2] >= 10)
|
|
{
|
|
Main.scorpionCageFrameCounter[index1, index2] = 0;
|
|
++Main.scorpionCageFrame[index1, index2];
|
|
}
|
|
}
|
|
else if (Main.scorpionCageFrame[index1, index2] == 11)
|
|
{
|
|
++Main.scorpionCageFrameCounter[index1, index2];
|
|
if (Main.scorpionCageFrameCounter[index1, index2] > Main.rand.Next(45, 5400))
|
|
{
|
|
if (Main.rand.Next(6) == 0)
|
|
Main.scorpionCageFrame[index1, index2] = 12;
|
|
Main.scorpionCageFrameCounter[index1, index2] = 0;
|
|
}
|
|
}
|
|
else if (Main.scorpionCageFrame[index1, index2] >= 12 && Main.scorpionCageFrame[index1, index2] <= 13)
|
|
{
|
|
++Main.scorpionCageFrameCounter[index1, index2];
|
|
if (Main.scorpionCageFrameCounter[index1, index2] >= 10)
|
|
{
|
|
Main.scorpionCageFrameCounter[index1, index2] = 0;
|
|
++Main.scorpionCageFrame[index1, index2];
|
|
if (Main.scorpionCageFrame[index1, index2] > 13)
|
|
Main.scorpionCageFrame[index1, index2] = 0;
|
|
}
|
|
}
|
|
else if (Main.scorpionCageFrame[index1, index2] >= 14 && Main.scorpionCageFrame[index1, index2] <= 15)
|
|
{
|
|
++Main.scorpionCageFrameCounter[index1, index2];
|
|
if (Main.scorpionCageFrameCounter[index1, index2] >= 5)
|
|
{
|
|
Main.scorpionCageFrameCounter[index1, index2] = 0;
|
|
++Main.scorpionCageFrame[index1, index2];
|
|
if (Main.scorpionCageFrame[index1, index2] > 15)
|
|
Main.scorpionCageFrame[index1, index2] = 14;
|
|
if (Main.rand.Next(5) == 0)
|
|
Main.scorpionCageFrame[index1, index2] = 0;
|
|
}
|
|
}
|
|
else if (Main.scorpionCageFrame[index1, index2] == 4 || Main.scorpionCageFrame[index1, index2] == 3)
|
|
{
|
|
++Main.scorpionCageFrameCounter[index1, index2];
|
|
if (Main.scorpionCageFrameCounter[index1, index2] > Main.rand.Next(30, 3600))
|
|
{
|
|
if (Main.scorpionCageFrame[index1, index2] == 3)
|
|
Main.scorpionCageFrame[index1, index2] = 4;
|
|
else if (Main.rand.Next(3) == 0)
|
|
Main.scorpionCageFrame[index1, index2] = Main.rand.Next(5) != 0 ? (Main.rand.Next(3) != 0 ? 16 : 3) : 5;
|
|
Main.scorpionCageFrameCounter[index1, index2] = 0;
|
|
}
|
|
}
|
|
else if (Main.scorpionCageFrame[index1, index2] >= 5 && Main.scorpionCageFrame[index1, index2] <= 6)
|
|
{
|
|
++Main.scorpionCageFrameCounter[index1, index2];
|
|
if (Main.scorpionCageFrameCounter[index1, index2] >= 10)
|
|
{
|
|
Main.scorpionCageFrameCounter[index1, index2] = 0;
|
|
++Main.scorpionCageFrame[index1, index2];
|
|
if (Main.scorpionCageFrame[index1, index2] > 7)
|
|
Main.scorpionCageFrame[index1, index2] = 0;
|
|
}
|
|
}
|
|
else if (Main.scorpionCageFrame[index1, index2] >= 16 && Main.scorpionCageFrame[index1, index2] <= 17)
|
|
{
|
|
++Main.scorpionCageFrameCounter[index1, index2];
|
|
if (Main.scorpionCageFrameCounter[index1, index2] >= 5)
|
|
{
|
|
Main.scorpionCageFrameCounter[index1, index2] = 0;
|
|
++Main.scorpionCageFrame[index1, index2];
|
|
if (Main.scorpionCageFrame[index1, index2] > 17)
|
|
Main.scorpionCageFrame[index1, index2] = 16;
|
|
if (Main.rand.Next(5) == 0)
|
|
Main.scorpionCageFrame[index1, index2] = 4;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
for (int index = 0; index < Main.cageFrames; ++index)
|
|
{
|
|
if (Main.penguinCageFrame[index] == 0)
|
|
{
|
|
++Main.penguinCageFrameCounter[index];
|
|
if (Main.penguinCageFrameCounter[index] > Main.rand.Next(30, 1800))
|
|
{
|
|
if (Main.rand.Next(2) == 0)
|
|
Main.penguinCageFrame[index] = Main.rand.Next(10) != 0 ? (Main.rand.Next(7) != 0 ? (Main.rand.Next(3) != 0 ? 1 : 2) : 15) : 4;
|
|
Main.penguinCageFrameCounter[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.penguinCageFrame[index] == 1)
|
|
{
|
|
++Main.penguinCageFrameCounter[index];
|
|
if (Main.penguinCageFrameCounter[index] >= 10)
|
|
{
|
|
Main.penguinCageFrameCounter[index] = 0;
|
|
Main.penguinCageFrame[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.penguinCageFrame[index] >= 2 && Main.penguinCageFrame[index] <= 3)
|
|
{
|
|
++Main.penguinCageFrameCounter[index];
|
|
if (Main.penguinCageFrameCounter[index] >= 5)
|
|
{
|
|
Main.penguinCageFrameCounter[index] = 0;
|
|
++Main.penguinCageFrame[index];
|
|
if (Main.penguinCageFrame[index] > 3)
|
|
Main.penguinCageFrame[index] = Main.rand.Next(3) != 0 ? 2 : 0;
|
|
}
|
|
}
|
|
else if (Main.penguinCageFrame[index] >= 4 && Main.penguinCageFrame[index] <= 6)
|
|
{
|
|
++Main.penguinCageFrameCounter[index];
|
|
if (Main.penguinCageFrameCounter[index] >= 10)
|
|
{
|
|
Main.penguinCageFrameCounter[index] = 0;
|
|
++Main.penguinCageFrame[index];
|
|
}
|
|
}
|
|
else if (Main.penguinCageFrame[index] == 15)
|
|
{
|
|
++Main.penguinCageFrameCounter[index];
|
|
if (Main.penguinCageFrameCounter[index] > Main.rand.Next(10, 1800))
|
|
{
|
|
if (Main.rand.Next(2) == 0)
|
|
Main.penguinCageFrame[index] = 0;
|
|
Main.penguinCageFrameCounter[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.penguinCageFrame[index] == 8)
|
|
{
|
|
++Main.penguinCageFrameCounter[index];
|
|
if (Main.penguinCageFrameCounter[index] > Main.rand.Next(30, 3600))
|
|
{
|
|
if (Main.rand.Next(2) == 0)
|
|
Main.penguinCageFrame[index] = Main.rand.Next(10) != 0 ? (Main.rand.Next(7) != 0 ? (Main.rand.Next(3) != 0 ? 9 : 10) : 7) : 12;
|
|
Main.penguinCageFrameCounter[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.penguinCageFrame[index] == 9)
|
|
{
|
|
++Main.penguinCageFrameCounter[index];
|
|
if (Main.penguinCageFrameCounter[index] >= 10)
|
|
{
|
|
Main.penguinCageFrameCounter[index] = 0;
|
|
Main.penguinCageFrame[index] = 8;
|
|
}
|
|
}
|
|
else if (Main.penguinCageFrame[index] >= 10 && Main.penguinCageFrame[index] <= 11)
|
|
{
|
|
++Main.penguinCageFrameCounter[index];
|
|
if (Main.penguinCageFrameCounter[index] >= 5)
|
|
{
|
|
Main.penguinCageFrameCounter[index] = 0;
|
|
++Main.penguinCageFrame[index];
|
|
if (Main.penguinCageFrame[index] > 3)
|
|
Main.penguinCageFrame[index] = Main.rand.Next(3) != 0 ? 10 : 8;
|
|
}
|
|
}
|
|
else if (Main.penguinCageFrame[index] >= 12 && Main.penguinCageFrame[index] <= 14)
|
|
{
|
|
++Main.penguinCageFrameCounter[index];
|
|
if (Main.penguinCageFrameCounter[index] >= 10)
|
|
{
|
|
Main.penguinCageFrameCounter[index] = 0;
|
|
++Main.penguinCageFrame[index];
|
|
}
|
|
}
|
|
else if (Main.penguinCageFrame[index] == 7)
|
|
{
|
|
++Main.penguinCageFrameCounter[index];
|
|
if (Main.penguinCageFrameCounter[index] > Main.rand.Next(10, 3600))
|
|
{
|
|
if (Main.rand.Next(2) == 0)
|
|
Main.penguinCageFrame[index] = 8;
|
|
Main.penguinCageFrameCounter[index] = 0;
|
|
}
|
|
}
|
|
}
|
|
for (int index = 0; index < Main.cageFrames; ++index)
|
|
{
|
|
++Main.turtleCageFrameCounter[index];
|
|
int num7 = Main.turtleCageFrame[index] == 0 || Main.turtleCageFrame[index] == 15 ? 1 : (Main.turtleCageFrame[index] == 31 ? 1 : 0);
|
|
int num8 = 8;
|
|
if (num7 != 0)
|
|
num8 = Main.rand.Next(180, 250);
|
|
if (Main.turtleCageFrameCounter[index] >= num8)
|
|
{
|
|
Main.turtleCageFrameCounter[index] = 0;
|
|
if (Main.turtleCageFrame[index] == 29)
|
|
Main.turtleCageFrame[index] = 0;
|
|
else if (Main.turtleCageFrame[index] == 15 && Main.rand.Next(3) == 0)
|
|
{
|
|
Main.turtleCageFrame[index] = 30;
|
|
}
|
|
else
|
|
{
|
|
++Main.turtleCageFrame[index];
|
|
if (Main.turtleCageFrame[index] > 32)
|
|
Main.turtleCageFrame[index] = 15;
|
|
}
|
|
}
|
|
}
|
|
for (int index = 0; index < Main.cageFrames; ++index)
|
|
{
|
|
++Main.seahorseCageFrameCounter[index];
|
|
bool flag3 = Main.seahorseCageFrame[index] == 0 || Main.seahorseCageFrame[index] == 13;
|
|
int num9 = Main.seahorseCageFrame[index] == 4 || Main.seahorseCageFrame[index] == 9 || Main.seahorseCageFrame[index] == 17 ? 1 : (Main.seahorseCageFrame[index] == 22 ? 1 : 0);
|
|
bool flag4 = Main.seahorseCageFrame[index] >= 25;
|
|
int num10 = 7;
|
|
if (flag3)
|
|
num10 = Main.rand.Next(220, 340);
|
|
if (num9 != 0)
|
|
num10 = 10;
|
|
if (flag4)
|
|
num10 = 6;
|
|
if (Main.seahorseCageFrameCounter[index] >= num10)
|
|
{
|
|
Main.seahorseCageFrameCounter[index] = 0;
|
|
if (Main.seahorseCageFrame[index] == 0 && Main.rand.Next(2) == 0)
|
|
Main.seahorseCageFrame[index] = 25;
|
|
else if (Main.seahorseCageFrame[index] == 24)
|
|
{
|
|
Main.seahorseCageFrame[index] = 0;
|
|
}
|
|
else
|
|
{
|
|
++Main.seahorseCageFrame[index];
|
|
if (Main.seahorseCageFrame[index] > 33)
|
|
Main.seahorseCageFrame[index] = 0;
|
|
}
|
|
}
|
|
}
|
|
Main.UpdateOwlCageFrames();
|
|
for (int index = 0; index < Main.cageFrames; ++index)
|
|
{
|
|
if (Main.snailCageFrame[index] >= 0 && Main.snailCageFrame[index] <= 13)
|
|
{
|
|
++Main.snailCageFrameCounter[index];
|
|
if (Main.snailCageFrameCounter[index] > Main.rand.Next(45, 3600))
|
|
{
|
|
if (Main.snailCageFrame[index] == 8 && Main.rand.Next(2) == 0)
|
|
Main.snailCageFrame[index] = 14;
|
|
else if (Main.snailCageFrame[index] == 1 && Main.rand.Next(3) == 0)
|
|
Main.snailCageFrame[index] = 19;
|
|
else if (Main.snailCageFrame[index] == 1 && Main.rand.Next(3) == 0)
|
|
{
|
|
Main.snailCageFrame[index] = 20;
|
|
}
|
|
else
|
|
{
|
|
++Main.snailCageFrame[index];
|
|
if (Main.snailCageFrame[index] > 13)
|
|
Main.snailCageFrame[index] = 0;
|
|
}
|
|
Main.snailCageFrameCounter[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.snailCageFrame[index] >= 14 && Main.snailCageFrame[index] <= 18)
|
|
{
|
|
++Main.snailCageFrameCounter[index];
|
|
if (Main.snailCageFrameCounter[index] >= 5)
|
|
{
|
|
Main.snailCageFrameCounter[index] = 0;
|
|
++Main.snailCageFrame[index];
|
|
}
|
|
if (Main.snailCageFrame[index] > 18)
|
|
Main.snailCageFrame[index] = 20;
|
|
}
|
|
else if (Main.snailCageFrame[index] == 19 || Main.snailCageFrame[index] == 20)
|
|
{
|
|
++Main.snailCageFrameCounter[index];
|
|
if (Main.snailCageFrameCounter[index] > Main.rand.Next(60, 7200))
|
|
{
|
|
Main.snailCageFrameCounter[index] = 0;
|
|
if (Main.rand.Next(4) == 0)
|
|
Main.snailCageFrame[index] = Main.rand.Next(3) != 0 ? (Main.snailCageFrame[index] != 19 ? 19 : 20) : 2;
|
|
}
|
|
}
|
|
}
|
|
for (int index = 0; index < Main.cageFrames; ++index)
|
|
{
|
|
if (Main.snail2CageFrame[index] >= 0 && Main.snail2CageFrame[index] <= 13)
|
|
{
|
|
++Main.snail2CageFrameCounter[index];
|
|
if (Main.snail2CageFrameCounter[index] > Main.rand.Next(30, 2700))
|
|
{
|
|
if (Main.snail2CageFrame[index] == 8 && Main.rand.Next(2) == 0)
|
|
Main.snail2CageFrame[index] = 14;
|
|
else if (Main.snail2CageFrame[index] == 1 && Main.rand.Next(3) == 0)
|
|
Main.snail2CageFrame[index] = 19;
|
|
else if (Main.snail2CageFrame[index] == 1 && Main.rand.Next(3) == 0)
|
|
{
|
|
Main.snail2CageFrame[index] = 20;
|
|
}
|
|
else
|
|
{
|
|
++Main.snail2CageFrame[index];
|
|
if (Main.snail2CageFrame[index] > 13)
|
|
Main.snail2CageFrame[index] = 0;
|
|
}
|
|
Main.snail2CageFrameCounter[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.snail2CageFrame[index] >= 14 && Main.snail2CageFrame[index] <= 18)
|
|
{
|
|
++Main.snail2CageFrameCounter[index];
|
|
if (Main.snail2CageFrameCounter[index] >= 5)
|
|
{
|
|
Main.snail2CageFrameCounter[index] = 0;
|
|
++Main.snail2CageFrame[index];
|
|
}
|
|
if (Main.snail2CageFrame[index] > 18)
|
|
Main.snail2CageFrame[index] = 20;
|
|
}
|
|
else if (Main.snail2CageFrame[index] == 19 || Main.snail2CageFrame[index] == 20)
|
|
{
|
|
++Main.snail2CageFrameCounter[index];
|
|
if (Main.snail2CageFrameCounter[index] > Main.rand.Next(45, 5400))
|
|
{
|
|
Main.snail2CageFrameCounter[index] = 0;
|
|
if (Main.rand.Next(4) == 0)
|
|
Main.snail2CageFrame[index] = Main.rand.Next(3) != 0 ? (Main.snail2CageFrame[index] != 19 ? 19 : 20) : 2;
|
|
}
|
|
}
|
|
}
|
|
for (int index = 0; index < Main.cageFrames; ++index)
|
|
{
|
|
if (Main.frogCageFrame[index] == 0)
|
|
{
|
|
++Main.frogCageFrameCounter[index];
|
|
if (Main.frogCageFrameCounter[index] > Main.rand.Next(45, 3600))
|
|
{
|
|
Main.frogCageFrame[index] = Main.rand.Next(10) != 0 ? 12 : 1;
|
|
Main.frogCageFrameCounter[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.frogCageFrame[index] >= 1 && Main.frogCageFrame[index] <= 5)
|
|
{
|
|
++Main.frogCageFrameCounter[index];
|
|
if (Main.frogCageFrameCounter[index] >= 5)
|
|
{
|
|
++Main.frogCageFrame[index];
|
|
Main.frogCageFrameCounter[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.frogCageFrame[index] >= 12 && Main.frogCageFrame[index] <= 17)
|
|
{
|
|
++Main.frogCageFrameCounter[index];
|
|
if (Main.frogCageFrameCounter[index] >= 5)
|
|
{
|
|
Main.frogCageFrameCounter[index] = 0;
|
|
++Main.frogCageFrame[index];
|
|
}
|
|
if (Main.frogCageFrame[index] > 17)
|
|
Main.frogCageFrame[index] = Main.rand.Next(3) != 0 ? 12 : 0;
|
|
}
|
|
else if (Main.frogCageFrame[index] == 6)
|
|
{
|
|
++Main.frogCageFrameCounter[index];
|
|
if (Main.frogCageFrameCounter[index] > Main.rand.Next(45, 3600))
|
|
{
|
|
Main.frogCageFrame[index] = Main.rand.Next(10) != 0 ? 18 : 7;
|
|
Main.frogCageFrameCounter[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.frogCageFrame[index] >= 7 && Main.frogCageFrame[index] <= 11)
|
|
{
|
|
++Main.frogCageFrameCounter[index];
|
|
if (Main.frogCageFrameCounter[index] >= 5)
|
|
{
|
|
++Main.frogCageFrame[index];
|
|
Main.frogCageFrameCounter[index] = 0;
|
|
if (Main.frogCageFrame[index] > 11)
|
|
Main.frogCageFrame[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.frogCageFrame[index] >= 18 && Main.frogCageFrame[index] <= 23)
|
|
{
|
|
++Main.frogCageFrameCounter[index];
|
|
if (Main.frogCageFrameCounter[index] >= 5)
|
|
{
|
|
Main.frogCageFrameCounter[index] = 0;
|
|
++Main.frogCageFrame[index];
|
|
}
|
|
if (Main.frogCageFrame[index] > 17)
|
|
Main.frogCageFrame[index] = Main.rand.Next(3) != 0 ? 18 : 6;
|
|
}
|
|
}
|
|
for (int index = 0; index < Main.cageFrames; ++index)
|
|
{
|
|
if (Main.mouseCageFrame[index] >= 0 && Main.mouseCageFrame[index] <= 1)
|
|
{
|
|
++Main.mouseCageFrameCounter[index];
|
|
if (Main.mouseCageFrameCounter[index] >= 5)
|
|
{
|
|
++Main.mouseCageFrame[index];
|
|
if (Main.mouseCageFrame[index] > 1)
|
|
Main.mouseCageFrame[index] = 0;
|
|
Main.mouseCageFrameCounter[index] = 0;
|
|
if (Main.rand.Next(15) == 0)
|
|
Main.mouseCageFrame[index] = 4;
|
|
}
|
|
}
|
|
else if (Main.mouseCageFrame[index] >= 4 && Main.mouseCageFrame[index] <= 7)
|
|
{
|
|
++Main.mouseCageFrameCounter[index];
|
|
if (Main.mouseCageFrameCounter[index] >= 5)
|
|
{
|
|
Main.mouseCageFrameCounter[index] = 0;
|
|
++Main.mouseCageFrame[index];
|
|
}
|
|
if (Main.mouseCageFrame[index] > 7)
|
|
Main.mouseCageFrame[index] = 2;
|
|
}
|
|
else if (Main.mouseCageFrame[index] >= 2 && Main.mouseCageFrame[index] <= 3)
|
|
{
|
|
++Main.mouseCageFrameCounter[index];
|
|
if (Main.mouseCageFrameCounter[index] >= 5)
|
|
{
|
|
++Main.mouseCageFrame[index];
|
|
if (Main.mouseCageFrame[index] > 3)
|
|
Main.mouseCageFrame[index] = 2;
|
|
Main.mouseCageFrameCounter[index] = 0;
|
|
if (Main.rand.Next(15) == 0)
|
|
Main.mouseCageFrame[index] = 8;
|
|
else if (Main.rand.Next(15) == 0)
|
|
Main.mouseCageFrame[index] = 12;
|
|
}
|
|
}
|
|
else if (Main.mouseCageFrame[index] >= 8 && Main.mouseCageFrame[index] <= 11)
|
|
{
|
|
++Main.mouseCageFrameCounter[index];
|
|
if (Main.mouseCageFrameCounter[index] >= 5)
|
|
{
|
|
Main.mouseCageFrameCounter[index] = 0;
|
|
++Main.mouseCageFrame[index];
|
|
}
|
|
if (Main.mouseCageFrame[index] > 11)
|
|
Main.mouseCageFrame[index] = 0;
|
|
}
|
|
else if (Main.mouseCageFrame[index] >= 12 && Main.mouseCageFrame[index] <= 13)
|
|
{
|
|
++Main.mouseCageFrameCounter[index];
|
|
if (Main.mouseCageFrameCounter[index] >= 5)
|
|
{
|
|
Main.mouseCageFrameCounter[index] = 0;
|
|
++Main.mouseCageFrame[index];
|
|
}
|
|
}
|
|
else if (Main.mouseCageFrame[index] >= 14 && Main.mouseCageFrame[index] <= 17)
|
|
{
|
|
++Main.mouseCageFrameCounter[index];
|
|
if (Main.mouseCageFrameCounter[index] >= 5)
|
|
{
|
|
Main.mouseCageFrameCounter[index] = 0;
|
|
++Main.mouseCageFrame[index];
|
|
if (Main.mouseCageFrame[index] > 17 && Main.rand.Next(20) != 0)
|
|
Main.mouseCageFrame[index] = 14;
|
|
}
|
|
}
|
|
else if (Main.mouseCageFrame[index] >= 18 && Main.mouseCageFrame[index] <= 19)
|
|
{
|
|
++Main.mouseCageFrameCounter[index];
|
|
if (Main.mouseCageFrameCounter[index] >= 5)
|
|
{
|
|
Main.mouseCageFrameCounter[index] = 0;
|
|
++Main.mouseCageFrame[index];
|
|
if (Main.mouseCageFrame[index] > 19)
|
|
Main.mouseCageFrame[index] = 0;
|
|
}
|
|
}
|
|
}
|
|
for (int index = 0; index < Main.cageFrames; ++index)
|
|
{
|
|
++Main.wormCageFrameCounter[index];
|
|
if (Main.wormCageFrameCounter[index] >= Main.rand.Next(30, 91))
|
|
{
|
|
Main.wormCageFrameCounter[index] = 0;
|
|
if (Main.rand.Next(4) == 0)
|
|
{
|
|
++Main.wormCageFrame[index];
|
|
if (Main.wormCageFrame[index] == 9 && Main.rand.Next(2) == 0)
|
|
Main.wormCageFrame[index] = 0;
|
|
if (Main.wormCageFrame[index] > 18)
|
|
Main.wormCageFrame[index] = Main.rand.Next(2) != 0 ? 0 : 9;
|
|
}
|
|
}
|
|
}
|
|
int num11 = 0;
|
|
for (int index3 = 0; index3 < 3; ++index3)
|
|
{
|
|
switch (index3)
|
|
{
|
|
case 0:
|
|
num11 = 24;
|
|
break;
|
|
case 1:
|
|
num11 = 31;
|
|
break;
|
|
case 2:
|
|
num11 = 34;
|
|
break;
|
|
}
|
|
for (int index4 = 0; index4 < Main.cageFrames; ++index4)
|
|
{
|
|
if (++Main.slugCageFrameCounter[index3, index4] >= Main.rand.Next(5, 15))
|
|
{
|
|
Main.slugCageFrameCounter[index3, index4] = 0;
|
|
if (++Main.slugCageFrame[index3, index4] >= num11)
|
|
Main.slugCageFrame[index3, index4] = 0;
|
|
}
|
|
}
|
|
}
|
|
for (int index = 0; index < Main.cageFrames; ++index)
|
|
{
|
|
if (Main.grasshopperCageFrame[index] >= 0 && Main.grasshopperCageFrame[index] <= 1)
|
|
{
|
|
++Main.grasshopperCageFrameCounter[index];
|
|
if (Main.grasshopperCageFrameCounter[index] >= 5)
|
|
{
|
|
++Main.grasshopperCageFrame[index];
|
|
if (Main.grasshopperCageFrame[index] > 1)
|
|
Main.grasshopperCageFrame[index] = 0;
|
|
Main.grasshopperCageFrameCounter[index] = 0;
|
|
if (Main.rand.Next(15) == 0)
|
|
Main.grasshopperCageFrame[index] = 2;
|
|
}
|
|
}
|
|
else if (Main.grasshopperCageFrame[index] >= 2 && Main.grasshopperCageFrame[index] <= 5)
|
|
{
|
|
++Main.grasshopperCageFrameCounter[index];
|
|
if (Main.grasshopperCageFrameCounter[index] >= 5)
|
|
{
|
|
Main.grasshopperCageFrameCounter[index] = 0;
|
|
++Main.grasshopperCageFrame[index];
|
|
}
|
|
if (Main.grasshopperCageFrame[index] > 5)
|
|
Main.grasshopperCageFrame[index] = 6;
|
|
}
|
|
else if (Main.grasshopperCageFrame[index] >= 6 && Main.grasshopperCageFrame[index] <= 7)
|
|
{
|
|
++Main.grasshopperCageFrameCounter[index];
|
|
if (Main.grasshopperCageFrameCounter[index] >= 5)
|
|
{
|
|
++Main.grasshopperCageFrame[index];
|
|
if (Main.grasshopperCageFrame[index] > 7)
|
|
Main.grasshopperCageFrame[index] = 6;
|
|
Main.grasshopperCageFrameCounter[index] = 0;
|
|
if (Main.rand.Next(15) == 0)
|
|
Main.grasshopperCageFrame[index] = 8;
|
|
}
|
|
}
|
|
else if (Main.grasshopperCageFrame[index] >= 8 && Main.grasshopperCageFrame[index] <= 11)
|
|
{
|
|
++Main.grasshopperCageFrameCounter[index];
|
|
if (Main.grasshopperCageFrameCounter[index] >= 5)
|
|
{
|
|
Main.grasshopperCageFrameCounter[index] = 0;
|
|
++Main.grasshopperCageFrame[index];
|
|
}
|
|
if (Main.grasshopperCageFrame[index] > 11)
|
|
Main.grasshopperCageFrame[index] = 0;
|
|
}
|
|
}
|
|
for (int index = 0; index < Main.cageFrames; ++index)
|
|
{
|
|
++Main.maggotCageFrameCounter[index];
|
|
int num12 = Main.maggotCageFrame[index] == 0 || Main.maggotCageFrame[index] == 6 ? 1 : (Main.maggotCageFrame[index] == 18 ? 1 : 0);
|
|
int num13 = 8;
|
|
if (num12 != 0)
|
|
num13 = Main.rand.Next(100, 140);
|
|
if (Main.maggotCageFrameCounter[index] >= num13)
|
|
{
|
|
Main.maggotCageFrameCounter[index] = 0;
|
|
if (Main.maggotCageFrame[index] == 0)
|
|
Main.maggotCageFrame[index] = Main.rand.Next(3) != 0 ? 1 : 13;
|
|
else if (Main.maggotCageFrame[index] == 12)
|
|
{
|
|
Main.maggotCageFrame[index] = 0;
|
|
}
|
|
else
|
|
{
|
|
++Main.maggotCageFrame[index];
|
|
if (Main.maggotCageFrame[index] > 23)
|
|
Main.maggotCageFrame[index] = 6;
|
|
}
|
|
}
|
|
}
|
|
for (int index = 0; index < Main.cageFrames; ++index)
|
|
{
|
|
++Main.ladybugCageFrameCounter[index];
|
|
bool flag = Main.ladybugCageFrame[index] == 3 || Main.ladybugCageFrame[index] == 7 || Main.ladybugCageFrame[index] >= 17;
|
|
int num14 = Main.rand.Next(10, 12);
|
|
if (Main.ladybugCageFrame[index] == 18)
|
|
num14 = Main.rand.Next(160, 241);
|
|
else if (flag)
|
|
num14 = Main.rand.Next(198, 206);
|
|
else if (Main.ladybugCageFrame[index] >= 8 && Main.ladybugCageFrame[index] <= 16)
|
|
num14 = 5;
|
|
if (Main.ladybugCageFrameCounter[index] >= num14)
|
|
{
|
|
Main.ladybugCageFrameCounter[index] = 0;
|
|
if (Main.ladybugCageFrame[index] < 18)
|
|
{
|
|
if ((Main.ladybugCageFrame[index] == 2 || Main.ladybugCageFrame[index] == 5) && Main.rand.Next(3) == 0)
|
|
Main.ladybugCageFrame[index] = 17;
|
|
else if (Main.ladybugCageFrame[index] == 3 || Main.ladybugCageFrame[index] == 12)
|
|
{
|
|
switch (Main.rand.Next(3))
|
|
{
|
|
case 0:
|
|
case 1:
|
|
Main.ladybugCageFrame[index] = 4;
|
|
continue;
|
|
case 2:
|
|
Main.ladybugCageFrame[index] = 13;
|
|
continue;
|
|
default:
|
|
continue;
|
|
}
|
|
}
|
|
else if (Main.ladybugCageFrame[index] == 7 || Main.ladybugCageFrame[index] == 16)
|
|
{
|
|
switch (Main.rand.Next(3))
|
|
{
|
|
case 0:
|
|
case 1:
|
|
Main.ladybugCageFrame[index] = 0;
|
|
continue;
|
|
case 2:
|
|
Main.ladybugCageFrame[index] = 8;
|
|
continue;
|
|
default:
|
|
continue;
|
|
}
|
|
}
|
|
else
|
|
++Main.ladybugCageFrame[index];
|
|
}
|
|
else
|
|
Main.ladybugCageFrame[index] = Main.rand.Next(2) == 0 ? 13 : 4;
|
|
}
|
|
}
|
|
for (int index = 0; index < Main.cageFrames; ++index)
|
|
{
|
|
++Main.ratCageFrameCounter[index];
|
|
bool flag5 = Main.ratCageFrame[index] == 0 || Main.ratCageFrame[index] == 4;
|
|
int num15 = Main.ratCageFrame[index] == 8 || Main.ratCageFrame[index] == 9 || Main.ratCageFrame[index] == 10 ? 1 : (Main.ratCageFrame[index] == 11 ? 1 : 0);
|
|
bool flag6 = Main.ratCageFrame[index] > 11;
|
|
int num16 = 5;
|
|
if (flag5)
|
|
num16 = Main.rand.Next(40, 70);
|
|
if (num15 != 0)
|
|
num16 = Main.rand.Next(70, 110);
|
|
if (flag6)
|
|
num16 = 180;
|
|
if (Main.ratCageFrameCounter[index] >= num16)
|
|
{
|
|
Main.ratCageFrameCounter[index] = 0;
|
|
if (Main.ratCageFrame[index] == 0 && Main.rand.Next(2) == 0)
|
|
Main.ratCageFrame[index] = Main.rand.Next(3) == 0 ? 8 : 12;
|
|
else if (Main.ratCageFrame[index] == 4 && Main.rand.Next(2) == 0)
|
|
Main.ratCageFrame[index] = 10;
|
|
else if (Main.ratCageFrame[index] == 7 || Main.ratCageFrame[index] == 9 || Main.ratCageFrame[index] == 12)
|
|
Main.ratCageFrame[index] = 0;
|
|
else if (Main.ratCageFrame[index] == 11)
|
|
{
|
|
Main.ratCageFrame[index] = 4;
|
|
}
|
|
else
|
|
{
|
|
++Main.ratCageFrame[index];
|
|
if (Main.ratCageFrame[index] > 16)
|
|
Main.ratCageFrame[index] = 0;
|
|
}
|
|
}
|
|
else if (Main.ratCageFrame[index] > 11)
|
|
{
|
|
int num17 = Main.ratCageFrameCounter[index] % 90;
|
|
Main.ratCageFrame[index] = num17 <= 80 ? (num17 <= 70 ? (num17 <= 60 ? (num17 <= 50 ? (num17 <= 40 ? (num17 <= 30 ? (num17 <= 20 ? (num17 <= 10 ? 12 : 13) : 14) : 15) : 16) : 15) : 14) : 13) : 12;
|
|
}
|
|
else if (Main.ratCageFrameCounter[index] % 10 == 0)
|
|
{
|
|
if (Main.ratCageFrame[index] == 8 || Main.ratCageFrame[index] == 10)
|
|
++Main.ratCageFrame[index];
|
|
else if (Main.ratCageFrame[index] == 9 || Main.ratCageFrame[index] == 11)
|
|
--Main.ratCageFrame[index];
|
|
}
|
|
}
|
|
for (int index = 0; index < Main.cageFrames; ++index)
|
|
{
|
|
++Main.waterStriderCageFrameCounter[index];
|
|
bool flag = Main.waterStriderCageFrame[index] == 0 || Main.waterStriderCageFrame[index] == 8;
|
|
int num18 = Main.waterStriderCageFrame[index] == 17 ? 1 : (Main.waterStriderCageFrame[index] == 20 ? 1 : 0);
|
|
int num19 = 5;
|
|
if (flag)
|
|
num19 = Main.rand.Next(110, 210);
|
|
if (num18 != 0)
|
|
num19 = Main.rand.Next(150, 260);
|
|
if (Main.waterStriderCageFrameCounter[index] >= num19)
|
|
{
|
|
Main.waterStriderCageFrameCounter[index] = 0;
|
|
if (Main.waterStriderCageFrame[index] == 0 && Main.rand.Next(2) == 0)
|
|
Main.waterStriderCageFrame[index] = 16;
|
|
else if (Main.waterStriderCageFrame[index] == 8 && Main.rand.Next(2) == 0)
|
|
Main.waterStriderCageFrame[index] = 19;
|
|
else if (Main.waterStriderCageFrame[index] == 15 || Main.waterStriderCageFrame[index] == 18)
|
|
{
|
|
Main.waterStriderCageFrame[index] = 0;
|
|
}
|
|
else
|
|
{
|
|
++Main.waterStriderCageFrame[index];
|
|
if (Main.waterStriderCageFrame[index] > 21)
|
|
Main.waterStriderCageFrame[index] = 8;
|
|
}
|
|
}
|
|
}
|
|
++Main.fairyJarFrameCounter[0];
|
|
if (Main.fairyJarFrameCounter[0] > 5)
|
|
{
|
|
Main.fairyJarFrameCounter[0] = 0;
|
|
++Main.fairyJarFrame[0];
|
|
if (Main.fairyJarFrame[0] > 11)
|
|
Main.fairyJarFrame[0] = 0;
|
|
}
|
|
for (int index = 1; index < Main.cageFrames; ++index)
|
|
{
|
|
int num20 = Main.fairyJarFrame[0] + index % 12;
|
|
if (index % 2 == 0)
|
|
++num20;
|
|
if (index % 5 == 0)
|
|
++num20;
|
|
if (index % 8 == 0)
|
|
++num20;
|
|
while (num20 >= 12)
|
|
num20 -= 12;
|
|
Main.fairyJarFrame[index] = num20;
|
|
}
|
|
for (int index = 0; index < Main.cageFrames; ++index)
|
|
{
|
|
byte num21 = 5;
|
|
if (Main.fishBowlFrameMode[index] == (byte) 1)
|
|
{
|
|
if (Main.rand.Next(900) == 0)
|
|
Main.fishBowlFrameMode[index] = (byte) Main.rand.Next((int) num21);
|
|
++Main.fishBowlFrameCounter[index];
|
|
if (Main.fishBowlFrameCounter[index] >= 5)
|
|
{
|
|
Main.fishBowlFrameCounter[index] = 0;
|
|
if (Main.fishBowlFrame[index] == 10)
|
|
{
|
|
if (Main.rand.Next(20) == 0)
|
|
{
|
|
Main.fishBowlFrame[index] = 11;
|
|
Main.fishBowlFrameMode[index] = (byte) 0;
|
|
}
|
|
else
|
|
Main.fishBowlFrame[index] = 1;
|
|
}
|
|
else
|
|
++Main.fishBowlFrame[index];
|
|
}
|
|
}
|
|
else if (Main.fishBowlFrameMode[index] == (byte) 2)
|
|
{
|
|
if (Main.rand.Next(3600) == 0)
|
|
Main.fishBowlFrameMode[index] = (byte) Main.rand.Next((int) num21);
|
|
++Main.fishBowlFrameCounter[index];
|
|
if (Main.fishBowlFrameCounter[index] >= 20)
|
|
{
|
|
Main.fishBowlFrameCounter[index] = 0;
|
|
if (Main.fishBowlFrame[index] == 10)
|
|
{
|
|
if (Main.rand.Next(20) == 0)
|
|
{
|
|
Main.fishBowlFrame[index] = 11;
|
|
Main.fishBowlFrameMode[index] = (byte) 0;
|
|
}
|
|
else
|
|
Main.fishBowlFrame[index] = 1;
|
|
}
|
|
else
|
|
++Main.fishBowlFrame[index];
|
|
}
|
|
}
|
|
else if (Main.fishBowlFrameMode[index] == (byte) 3)
|
|
{
|
|
if (Main.rand.Next(3600) == 0)
|
|
Main.fishBowlFrameMode[index] = (byte) Main.rand.Next((int) num21);
|
|
++Main.fishBowlFrameCounter[index];
|
|
if (Main.fishBowlFrameCounter[index] >= Main.rand.Next(5, 3600))
|
|
{
|
|
Main.fishBowlFrameCounter[index] = 0;
|
|
if (Main.fishBowlFrame[index] == 10)
|
|
{
|
|
if (Main.rand.Next(20) == 0)
|
|
{
|
|
Main.fishBowlFrame[index] = 11;
|
|
Main.fishBowlFrameMode[index] = (byte) 0;
|
|
}
|
|
else
|
|
Main.fishBowlFrame[index] = 1;
|
|
}
|
|
else
|
|
++Main.fishBowlFrame[index];
|
|
}
|
|
}
|
|
else if (Main.fishBowlFrame[index] <= 10)
|
|
{
|
|
if (Main.rand.Next(3600) == 0)
|
|
Main.fishBowlFrameMode[index] = (byte) Main.rand.Next((int) num21);
|
|
++Main.fishBowlFrameCounter[index];
|
|
if (Main.fishBowlFrameCounter[index] >= 10)
|
|
{
|
|
Main.fishBowlFrameCounter[index] = 0;
|
|
if (Main.fishBowlFrame[index] == 10)
|
|
Main.fishBowlFrame[index] = Main.rand.Next(12) != 0 ? 1 : 11;
|
|
else
|
|
++Main.fishBowlFrame[index];
|
|
}
|
|
}
|
|
else if (Main.fishBowlFrame[index] == 12 || Main.fishBowlFrame[index] == 13)
|
|
{
|
|
++Main.fishBowlFrameCounter[index];
|
|
if (Main.fishBowlFrameCounter[index] >= 10)
|
|
{
|
|
Main.fishBowlFrameCounter[index] = 0;
|
|
++Main.fishBowlFrame[index];
|
|
if (Main.fishBowlFrame[index] > 13)
|
|
Main.fishBowlFrame[index] = Main.rand.Next(20) != 0 ? 12 : 14;
|
|
}
|
|
}
|
|
else if (Main.fishBowlFrame[index] >= 11)
|
|
{
|
|
++Main.fishBowlFrameCounter[index];
|
|
if (Main.fishBowlFrameCounter[index] >= 10)
|
|
{
|
|
Main.fishBowlFrameCounter[index] = 0;
|
|
++Main.fishBowlFrame[index];
|
|
if (Main.fishBowlFrame[index] > 16)
|
|
Main.fishBowlFrame[index] = 4;
|
|
}
|
|
}
|
|
}
|
|
for (int index = 0; index < Main.cageFrames; ++index)
|
|
{
|
|
++Main.lavaFishBowlFrameCounter[index];
|
|
if (Main.lavaFishBowlFrameCounter[index] > 4 + Main.rand.Next(3))
|
|
{
|
|
Main.lavaFishBowlFrameCounter[index] = 0;
|
|
++Main.lavaFishBowlFrame[index];
|
|
if (Main.lavaFishBowlFrame[index] > 26)
|
|
Main.lavaFishBowlFrame[index] = 0;
|
|
}
|
|
}
|
|
for (int index5 = 0; index5 < 9; ++index5)
|
|
{
|
|
for (int index6 = 0; index6 < Main.cageFrames; ++index6)
|
|
{
|
|
++Main.butterflyCageFrameCounter[index5, index6];
|
|
if (Main.rand.Next(3600) == 0)
|
|
{
|
|
Main.butterflyCageMode[index5, index6] = (byte) Main.rand.Next(5);
|
|
if (Main.rand.Next(2) == 0)
|
|
Main.butterflyCageMode[index5, index6] += (byte) 10;
|
|
}
|
|
int num22 = Main.rand.Next(3, 16);
|
|
if (Main.butterflyCageMode[index5, index6] == (byte) 1 || Main.butterflyCageMode[index5, index6] == (byte) 11)
|
|
num22 = 3;
|
|
if (Main.butterflyCageMode[index5, index6] == (byte) 2 || Main.butterflyCageMode[index5, index6] == (byte) 12)
|
|
num22 = 5;
|
|
if (Main.butterflyCageMode[index5, index6] == (byte) 3 || Main.butterflyCageMode[index5, index6] == (byte) 13)
|
|
num22 = 10;
|
|
if (Main.butterflyCageMode[index5, index6] == (byte) 4 || Main.butterflyCageMode[index5, index6] == (byte) 14)
|
|
num22 = 15;
|
|
if (Main.butterflyCageMode[index5, index6] >= (byte) 10)
|
|
{
|
|
if (Main.butterflyCageFrame[index5, index6] <= 7)
|
|
{
|
|
if (Main.butterflyCageFrameCounter[index5, index6] >= num22)
|
|
{
|
|
Main.butterflyCageFrameCounter[index5, index6] = 0;
|
|
--Main.butterflyCageFrame[index5, index6];
|
|
if (Main.butterflyCageFrame[index5, index6] < 0)
|
|
Main.butterflyCageFrame[index5, index6] = 7;
|
|
if (Main.butterflyCageFrame[index5, index6] == 1 || Main.butterflyCageFrame[index5, index6] == 4 || Main.butterflyCageFrame[index5, index6] == 6)
|
|
{
|
|
if (Main.rand.Next(20) == 0)
|
|
Main.butterflyCageFrame[index5, index6] += 8;
|
|
else if (Main.rand.Next(6) == 0)
|
|
{
|
|
if (Main.butterflyCageMode[index5, index6] >= (byte) 10)
|
|
Main.butterflyCageMode[index5, index6] -= (byte) 10;
|
|
else
|
|
Main.butterflyCageMode[index5, index6] += (byte) 10;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if (Main.butterflyCageFrameCounter[index5, index6] >= num22)
|
|
{
|
|
Main.butterflyCageFrameCounter[index5, index6] = 0;
|
|
--Main.butterflyCageFrame[index5, index6];
|
|
if (Main.butterflyCageFrame[index5, index6] < 8)
|
|
Main.butterflyCageFrame[index5, index6] = 14;
|
|
if (Main.butterflyCageFrame[index5, index6] == 9 || Main.butterflyCageFrame[index5, index6] == 12 || Main.butterflyCageFrame[index5, index6] == 14)
|
|
{
|
|
if (Main.rand.Next(20) == 0)
|
|
Main.butterflyCageFrame[index5, index6] -= 8;
|
|
else if (Main.rand.Next(6) == 0)
|
|
{
|
|
if (Main.butterflyCageMode[index5, index6] >= (byte) 10)
|
|
Main.butterflyCageMode[index5, index6] -= (byte) 10;
|
|
else
|
|
Main.butterflyCageMode[index5, index6] += (byte) 10;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if (Main.butterflyCageFrame[index5, index6] <= 7)
|
|
{
|
|
if (Main.butterflyCageFrameCounter[index5, index6] >= num22)
|
|
{
|
|
Main.butterflyCageFrameCounter[index5, index6] = 0;
|
|
++Main.butterflyCageFrame[index5, index6];
|
|
if (Main.butterflyCageFrame[index5, index6] > 7)
|
|
Main.butterflyCageFrame[index5, index6] = 0;
|
|
if ((Main.butterflyCageFrame[index5, index6] == 1 || Main.butterflyCageFrame[index5, index6] == 4 || Main.butterflyCageFrame[index5, index6] == 6) && Main.rand.Next(10) == 0)
|
|
Main.butterflyCageFrame[index5, index6] += 8;
|
|
}
|
|
}
|
|
else if (Main.butterflyCageFrameCounter[index5, index6] >= num22)
|
|
{
|
|
Main.butterflyCageFrameCounter[index5, index6] = 0;
|
|
++Main.butterflyCageFrame[index5, index6];
|
|
if (Main.butterflyCageFrame[index5, index6] > 15)
|
|
Main.butterflyCageFrame[index5, index6] = 8;
|
|
if ((Main.butterflyCageFrame[index5, index6] == 9 || Main.butterflyCageFrame[index5, index6] == 12 || Main.butterflyCageFrame[index5, index6] == 14) && Main.rand.Next(10) == 0)
|
|
Main.butterflyCageFrame[index5, index6] -= 8;
|
|
}
|
|
}
|
|
}
|
|
Main.UpdateDragonflyJarFrames();
|
|
for (int index7 = 0; index7 < 3; ++index7)
|
|
{
|
|
for (int index8 = 0; index8 < Main.cageFrames; ++index8)
|
|
{
|
|
++Main.jellyfishCageFrameCounter[index7, index8];
|
|
if (Main.jellyfishCageMode[index7, index8] == (byte) 0 && Main.rand.Next(1800) == 0)
|
|
Main.jellyfishCageMode[index7, index8] = (byte) 1;
|
|
if (Main.jellyfishCageMode[index7, index8] == (byte) 2 && Main.rand.Next(60) == 0)
|
|
Main.jellyfishCageMode[index7, index8] = (byte) 3;
|
|
int num23 = 1;
|
|
if (Main.jellyfishCageMode[index7, index8] == (byte) 0)
|
|
num23 = Main.rand.Next(10, 20);
|
|
if (Main.jellyfishCageMode[index7, index8] == (byte) 1)
|
|
num23 = Main.rand.Next(15, 25);
|
|
if (Main.jellyfishCageMode[index7, index8] == (byte) 2)
|
|
num23 = Main.rand.Next(4, 9);
|
|
if (Main.jellyfishCageMode[index7, index8] == (byte) 3)
|
|
num23 = Main.rand.Next(15, 25);
|
|
if (Main.jellyfishCageMode[index7, index8] == (byte) 0 && Main.jellyfishCageFrame[index7, index8] <= 3 && Main.jellyfishCageFrameCounter[index7, index8] >= num23)
|
|
{
|
|
Main.jellyfishCageFrameCounter[index7, index8] = 0;
|
|
++Main.jellyfishCageFrame[index7, index8];
|
|
if (Main.jellyfishCageFrame[index7, index8] >= 4)
|
|
Main.jellyfishCageFrame[index7, index8] = 0;
|
|
}
|
|
if (Main.jellyfishCageMode[index7, index8] == (byte) 1 && Main.jellyfishCageFrame[index7, index8] <= 7 && Main.jellyfishCageFrameCounter[index7, index8] >= num23)
|
|
{
|
|
Main.jellyfishCageFrameCounter[index7, index8] = 0;
|
|
++Main.jellyfishCageFrame[index7, index8];
|
|
if (Main.jellyfishCageFrame[index7, index8] >= 7)
|
|
Main.jellyfishCageMode[index7, index8] = (byte) 2;
|
|
}
|
|
if (Main.jellyfishCageMode[index7, index8] == (byte) 2 && Main.jellyfishCageFrame[index7, index8] <= 9 && Main.jellyfishCageFrameCounter[index7, index8] >= num23)
|
|
{
|
|
Main.jellyfishCageFrameCounter[index7, index8] = 0;
|
|
++Main.jellyfishCageFrame[index7, index8];
|
|
if (Main.jellyfishCageFrame[index7, index8] >= 9)
|
|
Main.jellyfishCageFrame[index7, index8] = 7;
|
|
}
|
|
if (Main.jellyfishCageMode[index7, index8] == (byte) 3 && Main.jellyfishCageFrame[index7, index8] <= 10 && Main.jellyfishCageFrameCounter[index7, index8] >= num23)
|
|
{
|
|
Main.jellyfishCageFrameCounter[index7, index8] = 0;
|
|
++Main.jellyfishCageFrame[index7, index8];
|
|
if (Main.jellyfishCageFrame[index7, index8] >= 10)
|
|
{
|
|
Main.jellyfishCageFrame[index7, index8] = 3;
|
|
Main.jellyfishCageMode[index7, index8] = (byte) 0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private static void UpdateOwlCageFrames()
|
|
{
|
|
for (int style = 0; style < Main.cageFrames; ++style)
|
|
Main.UpdateOwlCageFrame(Main.owlCageFrame, Main.owlCageFrameCounter, style);
|
|
}
|
|
|
|
private static void UpdateDragonflyJarFrames()
|
|
{
|
|
for (int style = 0; style < Main.dragonflyJarFrameCounter.GetLength(0); ++style)
|
|
{
|
|
for (int variation = 0; variation < Main.cageFrames; ++variation)
|
|
Main.UpdateDragonflyJarFrame(Main.dragonflyJarFrame, Main.dragonflyJarFrameCounter, style, variation);
|
|
}
|
|
}
|
|
|
|
private static void UpdateOwlCageFrame(int[] frames, int[] frameCounters, int style)
|
|
{
|
|
if (frameCounters[style] % 40 != 0 || Main.rand.Next(80) == 0)
|
|
++frameCounters[style];
|
|
if ((frameCounters[style] + 1) % 40 == 39)
|
|
frameCounters[style] = 40 * Main.rand.Next(4);
|
|
int num1 = frameCounters[style] % 40 / 10;
|
|
int num2 = frameCounters[style] / 40;
|
|
int num3 = 0;
|
|
switch (num2)
|
|
{
|
|
case 0:
|
|
if (num1 == 3)
|
|
num1 = 1;
|
|
num3 = num1;
|
|
break;
|
|
case 1:
|
|
if (num1 == 3)
|
|
num1 = 1;
|
|
num3 = 0;
|
|
if (num1 != 0)
|
|
{
|
|
num3 = 8 - num1;
|
|
break;
|
|
}
|
|
break;
|
|
case 2:
|
|
num3 = 0;
|
|
if (num1 != 0)
|
|
{
|
|
num3 = 7 + num1;
|
|
break;
|
|
}
|
|
break;
|
|
case 3:
|
|
num3 = 0;
|
|
if (num1 != 0)
|
|
{
|
|
num3 = 11 + num1;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
frames[style] = num3;
|
|
}
|
|
|
|
private static void UpdateDragonflyJarFrame(
|
|
int[,] frames,
|
|
int[,] frameCounters,
|
|
int style,
|
|
int variation)
|
|
{
|
|
++frameCounters[style, variation];
|
|
switch (frames[style, variation])
|
|
{
|
|
case 0:
|
|
if (frameCounters[style, variation] < 300 || Main.rand.Next(60) != 0)
|
|
break;
|
|
frameCounters[style, variation] = 0;
|
|
frames[style, variation] = Main.rand.NextFromList<int>(1, 5, 9);
|
|
break;
|
|
case 1:
|
|
case 5:
|
|
case 9:
|
|
if (frameCounters[style, variation] >= 100)
|
|
{
|
|
frameCounters[style, variation] = 0;
|
|
if (frames[style, variation] == 1)
|
|
{
|
|
frames[style, variation] = Main.rand.NextFromList<int>(0, 5, 5, 9, 9);
|
|
break;
|
|
}
|
|
frames[style, variation] = 1;
|
|
break;
|
|
}
|
|
if (frameCounters[style, variation] < 6)
|
|
break;
|
|
frameCounters[style, variation] = 0;
|
|
++frames[style, variation];
|
|
break;
|
|
case 2:
|
|
case 3:
|
|
case 4:
|
|
case 6:
|
|
case 7:
|
|
case 8:
|
|
case 10:
|
|
case 11:
|
|
case 12:
|
|
int num1 = frames[style, variation] - 1;
|
|
int num2 = num1 % 4 - 1;
|
|
int num3 = frameCounters[style, variation] / 4 % 4;
|
|
if (num3 > 2)
|
|
num3 = 4 - num3;
|
|
int num4 = num1 - num2 + 1 + num3;
|
|
frames[style, variation] = num4;
|
|
if (frameCounters[style, variation] < 40 || Main.rand.Next(30) != 0)
|
|
break;
|
|
frameCounters[style, variation] = 100;
|
|
frames[style, variation] = num1 - num2 + 1 - 1;
|
|
break;
|
|
}
|
|
}
|
|
|
|
public static void DoUpdate_AnimateItemIcons()
|
|
{
|
|
for (int index1 = 0; index1 < Main.itemAnimationsRegistered.Count; ++index1)
|
|
{
|
|
int index2 = Main.itemAnimationsRegistered[index1];
|
|
if (Main.itemAnimations[index2] != null)
|
|
Main.itemAnimations[index2].Update();
|
|
}
|
|
}
|
|
|
|
public static void QueueMainThreadAction(Action action) => Main._mainThreadActions.Enqueue(action);
|
|
|
|
private static void ConsumeAllMainThreadActions()
|
|
{
|
|
Action result;
|
|
while (Main._mainThreadActions.TryDequeue(out result))
|
|
result();
|
|
}
|
|
|
|
protected override void Update(GameTime gameTime)
|
|
{
|
|
if (!Main.IsEnginePreloaded)
|
|
{
|
|
Main.IsEnginePreloaded = true;
|
|
if (Main.OnEnginePreload != null)
|
|
Main.OnEnginePreload();
|
|
}
|
|
if (!this._isDrawingOrUpdating)
|
|
{
|
|
this._isDrawingOrUpdating = true;
|
|
this.DoUpdate(gameTime);
|
|
CinematicManager.Instance.Update(gameTime);
|
|
switch (Main.netMode)
|
|
{
|
|
case 1:
|
|
Netplay.Connection.Socket.SendQueuedPackets();
|
|
break;
|
|
case 2:
|
|
for (int index = 0; index < 256; ++index)
|
|
{
|
|
if (Netplay.Clients[index].Socket != null)
|
|
Netplay.Clients[index].Socket.SendQueuedPackets();
|
|
}
|
|
break;
|
|
}
|
|
this._isDrawingOrUpdating = false;
|
|
}
|
|
Main.ConsumeAllMainThreadActions();
|
|
if (!Main._WeGameReqExit)
|
|
return;
|
|
this.QuitGame();
|
|
}
|
|
|
|
public void UpdateViewZoomKeys()
|
|
{
|
|
if (Main.inFancyUI)
|
|
return;
|
|
float num = 0.01f;
|
|
if (PlayerInput.Triggers.Current.ViewZoomIn)
|
|
Main.GameZoomTarget = Utils.Clamp<float>(Main.GameZoomTarget + num, 1f, 2f);
|
|
if (!PlayerInput.Triggers.Current.ViewZoomOut)
|
|
return;
|
|
Main.GameZoomTarget = Utils.Clamp<float>(Main.GameZoomTarget - num, 1f, 2f);
|
|
}
|
|
|
|
public static void NotifyOfEvent(GameNotificationType type)
|
|
{
|
|
if (Main.instance.IsActive || !Main._flashNotificationType.HasFlag((Enum) type))
|
|
return;
|
|
Main.QueueMainThreadAction((Action) (() => Platform.Get<IWindowService>().StartFlashingIcon(Main.instance.Window)));
|
|
}
|
|
|
|
protected void DoUpdate(GameTime gameTime)
|
|
{
|
|
Main.gameTimeCache = gameTime;
|
|
if (Main.showSplash)
|
|
{
|
|
this.UpdateAudio();
|
|
}
|
|
else
|
|
{
|
|
PartySky.MultipleSkyWorkaroundFix = true;
|
|
Main.LocalPlayer.cursorItemIconReversed = false;
|
|
TimeSpan timeSpan;
|
|
if (!Main.GlobalTimerPaused)
|
|
{
|
|
timeSpan = gameTime.TotalGameTime;
|
|
Main.GlobalTimeWrappedHourly = (float) (timeSpan.TotalSeconds % 3600.0);
|
|
}
|
|
Main._overrideForExpertMode = new bool?();
|
|
Main._overrideForMasterMode = new bool?();
|
|
if (!Main.gameMenu && Main._currentGameModeInfo.IsJourneyMode)
|
|
{
|
|
CreativePowers.DifficultySliderPower power = CreativePowerManager.Instance.GetPower<CreativePowers.DifficultySliderPower>();
|
|
if (power.GetIsUnlocked())
|
|
{
|
|
if ((double) power.StrengthMultiplierToGiveNPCs >= 2.0)
|
|
Main._overrideForExpertMode = new bool?(true);
|
|
if ((double) power.StrengthMultiplierToGiveNPCs >= 3.0)
|
|
Main._overrideForMasterMode = new bool?(true);
|
|
}
|
|
}
|
|
Main.UpdateWorldPreparationState();
|
|
if (Player.BlockInteractionWithProjectiles > 0 && !Main.mouseRight && Main.mouseRightRelease)
|
|
--Player.BlockInteractionWithProjectiles;
|
|
PlayerInput.SetZoom_UI();
|
|
if (!Main.gameMenu || Main.menuMode != 888)
|
|
Main.MenuUI.SetState((UIState) null);
|
|
else
|
|
Main.InGameUI.SetState((UIState) null);
|
|
Main.CurrentInputTextTakerOverride = (object) null;
|
|
Main.AchievementAdvisor.Update();
|
|
PlayerInput.SetZoom_Unscaled();
|
|
Main.MouseOversTryToClear();
|
|
PlayerInput.ResetInputsOnActiveStateChange();
|
|
if (Main.OnTickForThirdPartySoftwareOnly != null)
|
|
Main.OnTickForThirdPartySoftwareOnly();
|
|
if (Main._hasPendingNetmodeChange)
|
|
{
|
|
Main.netMode = Main._targetNetMode;
|
|
Main._hasPendingNetmodeChange = false;
|
|
}
|
|
if (CaptureManager.Instance.IsCapturing)
|
|
return;
|
|
if (Main.ActivePlayerFileData != null)
|
|
Main.ActivePlayerFileData.UpdatePlayTimer();
|
|
Netplay.Update();
|
|
Main.gameInactive = !this.IsActive;
|
|
if (Main.changeTheTitle)
|
|
{
|
|
Main.changeTheTitle = false;
|
|
this.SetTitle();
|
|
}
|
|
this._worldUpdateTimeTester.Restart();
|
|
if (!WorldGen.gen)
|
|
WorldGen.destroyObject = false;
|
|
if (Main.gameMenu)
|
|
Main.mapFullscreen = false;
|
|
Main.UpdateSettingUnlocks();
|
|
if (Main.dedServ)
|
|
{
|
|
if (Main.dedServFPS)
|
|
{
|
|
++Main.updatesCountedForFPS;
|
|
if (!Main.fpsTimer.IsRunning)
|
|
Main.fpsTimer.Restart();
|
|
if (Main.fpsTimer.ElapsedMilliseconds >= 1000L)
|
|
{
|
|
Main.dedServCount1 += Main.updatesCountedForFPS;
|
|
++Main.dedServCount2;
|
|
float num = (float) Main.dedServCount1 / (float) Main.dedServCount2;
|
|
Console.WriteLine(Main.updatesCountedForFPS.ToString() + " (" + (object) num + ")");
|
|
Main.updatesCountedForFPS = 0;
|
|
Main.fpsTimer.Restart();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (Main.fpsTimer.IsRunning)
|
|
Main.fpsTimer.Stop();
|
|
Main.updatesCountedForFPS = 0;
|
|
}
|
|
}
|
|
Main.DoUpdate_AutoSave();
|
|
if (!Main.dedServ)
|
|
{
|
|
Main.Chroma.Update(Main.GlobalTimeWrappedHourly);
|
|
if (Main.superFast)
|
|
{
|
|
this.IsFixedTimeStep = false;
|
|
Main.graphics.SynchronizeWithVerticalRetrace = false;
|
|
}
|
|
else
|
|
{
|
|
if (Main.FrameSkipMode == 0 || Main.FrameSkipMode == 2)
|
|
{
|
|
if (this.IsActive)
|
|
this.IsFixedTimeStep = false;
|
|
else
|
|
this.IsFixedTimeStep = true;
|
|
}
|
|
else
|
|
{
|
|
this.IsFixedTimeStep = true;
|
|
Main.graphics.SynchronizeWithVerticalRetrace = true;
|
|
}
|
|
Main.graphics.SynchronizeWithVerticalRetrace = true;
|
|
}
|
|
if (Main.showSplash)
|
|
return;
|
|
++Main.updatesCountedForFPS;
|
|
if (Main.fpsTimer.ElapsedMilliseconds >= 1000L)
|
|
{
|
|
if ((double) Main.fpsCount >= 30.0 + 30.0 * (double) Main.gfxQuality)
|
|
{
|
|
Main.gfxQuality += Main.gfxRate;
|
|
Main.gfxRate += 0.005f;
|
|
}
|
|
else if ((double) Main.fpsCount < 29.0 + 30.0 * (double) Main.gfxQuality)
|
|
{
|
|
Main.gfxRate = 0.01f;
|
|
Main.gfxQuality -= 0.1f;
|
|
}
|
|
if ((double) Main.gfxQuality < 0.0)
|
|
Main.gfxQuality = 0.0f;
|
|
if ((double) Main.gfxQuality > 1.0)
|
|
Main.gfxQuality = 1f;
|
|
if (Main.maxQ && this.IsActive)
|
|
{
|
|
Main.gfxQuality = 1f;
|
|
Main.maxQ = false;
|
|
}
|
|
Main.updateRate = Main.uCount;
|
|
Main.frameRate = Main.fpsCount;
|
|
Main.fpsCount = 0;
|
|
Main.fpsTimer.Restart();
|
|
Main.updatesCountedForFPS = 0;
|
|
Main.drawsCountedForFPS = 0;
|
|
Main.uCount = 0;
|
|
Main.mapTimeMax = (double) Main.gfxQuality >= 0.800000011920929 ? 0 : (int) ((1.0 - (double) Main.gfxQuality) * 60.0);
|
|
}
|
|
if (Main.FrameSkipMode == 0 || Main.FrameSkipMode == 2)
|
|
{
|
|
double updateTimeAccumulator = Main.UpdateTimeAccumulator;
|
|
timeSpan = gameTime.ElapsedGameTime;
|
|
double totalSeconds = timeSpan.TotalSeconds;
|
|
Main.UpdateTimeAccumulator = updateTimeAccumulator + totalSeconds;
|
|
if (Main.UpdateTimeAccumulator < 0.0166666675359011 && !Main.superFast)
|
|
{
|
|
if (Main.FrameSkipMode != 2)
|
|
return;
|
|
Main.instance.SuppressDraw();
|
|
return;
|
|
}
|
|
gameTime = new GameTime(gameTime.TotalGameTime, new TimeSpan(166666L));
|
|
Main.UpdateTimeAccumulator -= 0.0166666675359011;
|
|
Main.UpdateTimeAccumulator = Math.Min(Main.UpdateTimeAccumulator, 0.0166666675359011);
|
|
}
|
|
++Main.uCount;
|
|
Main.drawSkip = false;
|
|
PlayerInput.SetZoom_UI();
|
|
Main.UpdateUIStates(gameTime);
|
|
PlayerInput.SetZoom_Unscaled();
|
|
Terraria.Graphics.Effects.Filters.Scene.Update(gameTime);
|
|
Overlays.Scene.Update(gameTime);
|
|
LiquidRenderer.Instance.Update(gameTime);
|
|
this.UpdateAudio();
|
|
InGameNotificationsTracker.Update();
|
|
ItemSlot.UpdateInterface();
|
|
if (Main.teamCooldown > 0)
|
|
--Main.teamCooldown;
|
|
Main.DoUpdate_AnimateBackgrounds();
|
|
Animation.UpdateAll();
|
|
switch (Main.qaStyle)
|
|
{
|
|
case 1:
|
|
Main.gfxQuality = 1f;
|
|
break;
|
|
case 2:
|
|
Main.gfxQuality = 0.5f;
|
|
break;
|
|
case 3:
|
|
Main.gfxQuality = 0.0f;
|
|
break;
|
|
}
|
|
Main.maxDustToDraw = (int) (6000.0 * ((double) Main.gfxQuality * 0.699999988079071 + 0.300000011920929));
|
|
if ((double) Main.gfxQuality < 0.9)
|
|
Main.maxDustToDraw = (int) ((double) Main.maxDustToDraw * (double) Main.gfxQuality);
|
|
if (Main.maxDustToDraw < 1000)
|
|
Main.maxDustToDraw = 1000;
|
|
Gore.goreTime = (int) (600.0 * (double) Main.gfxQuality);
|
|
if (!WorldGen.gen)
|
|
{
|
|
Terraria.Liquid.cycles = (int) (17.0 - 10.0 * (double) Main.gfxQuality);
|
|
Terraria.Liquid.curMaxLiquid = (int) ((double) Terraria.Liquid.maxLiquid * 0.25 + (double) Terraria.Liquid.maxLiquid * 0.75 * (double) Main.gfxQuality);
|
|
if (Main.Setting_UseReducedMaxLiquids)
|
|
Terraria.Liquid.curMaxLiquid = (int) (2500.0 + 2500.0 * (double) Main.gfxQuality);
|
|
}
|
|
if (Main.superFast)
|
|
{
|
|
Main.graphics.SynchronizeWithVerticalRetrace = false;
|
|
Main.drawSkip = false;
|
|
}
|
|
LegacyLighting.RenderPhases = (double) Main.gfxQuality >= 0.2 ? ((double) Main.gfxQuality >= 0.4 ? ((double) Main.gfxQuality >= 0.6 ? ((double) Main.gfxQuality >= 0.8 ? 4 : 5) : 6) : 7) : 8;
|
|
if (!WorldGen.gen && Terraria.Liquid.quickSettle)
|
|
{
|
|
Terraria.Liquid.curMaxLiquid = Terraria.Liquid.maxLiquid;
|
|
if (Main.Setting_UseReducedMaxLiquids)
|
|
Terraria.Liquid.curMaxLiquid = 5000;
|
|
Terraria.Liquid.cycles = 1;
|
|
}
|
|
if (WorldGen.drunkWorldGen)
|
|
{
|
|
if (!Main.gameMenu)
|
|
{
|
|
WorldGen.drunkWorldGen = false;
|
|
this.logoRotation = 0.0f;
|
|
this.logoRotationSpeed = 0.0f;
|
|
this.logoScale = 1f;
|
|
}
|
|
}
|
|
else if (Main.gameMenu && (double) Math.Abs(this.logoRotationSpeed) > 1000.0)
|
|
{
|
|
this.logoRotation = 0.0f;
|
|
this.logoRotationSpeed = 0.0f;
|
|
this.logoScale = 1f;
|
|
}
|
|
Main.UpdateOldNPCShop();
|
|
Main.hasFocus = this.IsActive;
|
|
Main.hasFocus |= Form.ActiveForm == Control.FromHandle(this.Window.Handle) as Form;
|
|
if (!this.IsActive && Main.netMode == 0)
|
|
{
|
|
if (!Platform.IsOSX)
|
|
this.IsMouseVisible = true;
|
|
if (Main.netMode != 2 && Main.myPlayer >= 0)
|
|
Main.player[Main.myPlayer].delayUseItem = true;
|
|
Main.mouseLeftRelease = false;
|
|
Main.mouseRightRelease = false;
|
|
if (Main.gameMenu)
|
|
Main.UpdateMenu();
|
|
Main.gamePaused = true;
|
|
return;
|
|
}
|
|
if (!Platform.IsOSX)
|
|
this.IsMouseVisible = false;
|
|
SkyManager.Instance.Update(gameTime);
|
|
if (!Main.gamePaused)
|
|
EmoteBubble.UpdateAll();
|
|
ScreenObstruction.Update();
|
|
ScreenDarkness.Update();
|
|
MoonlordDeathDrama.Update();
|
|
Main.DoUpdate_AnimateCursorColors();
|
|
Main.DoUpdate_AnimateTileGlows();
|
|
this.DoUpdate_AnimateDiscoRGB();
|
|
Main.DoUpdate_AnimateVisualPlayerAura();
|
|
this.DoUpdate_AnimateWaterfalls();
|
|
Main.DoUpdate_AnimateWalls();
|
|
Main.AnimateTiles();
|
|
Main.DoUpdate_AnimateItemIcons();
|
|
Main.DoUpdate_F10_ToggleFPS();
|
|
Main.DoUpdate_F9_ToggleLighting();
|
|
Main.DoUpdate_F8_ToggleNetDiagnostics();
|
|
Main.DoUpdate_F7_ToggleGraphicsDiagnostics();
|
|
Main.DoUpdate_F11_ToggleUI();
|
|
Main.DoUpdate_AltEnter_ToggleFullscreen();
|
|
this.DoUpdate_HandleInput();
|
|
Main.DoUpdate_HandleChat();
|
|
Main.DoUpdate_Enter_ToggleChat();
|
|
if (Main.gameMenu)
|
|
{
|
|
Main.UpdateMenu();
|
|
if (Main.netMode != 2)
|
|
return;
|
|
Main.gamePaused = false;
|
|
}
|
|
Main.CheckInvasionProgressDisplay();
|
|
}
|
|
this.UpdateWindyDayState();
|
|
if (Main.netMode == 2)
|
|
Main.cloudAlpha = Main.maxRaining;
|
|
bool isActive = this.IsActive;
|
|
if (Main.netMode == 1)
|
|
Main.TrySyncingMyPlayer();
|
|
if (Main.CanPauseGame())
|
|
{
|
|
Main.DoUpdate_WhilePaused();
|
|
Main.gamePaused = true;
|
|
}
|
|
else
|
|
{
|
|
Main.gamePaused = false;
|
|
if (Main.OnTickForInternalCodeOnly != null)
|
|
Main.OnTickForInternalCodeOnly();
|
|
if (Main.netMode != 1 && !Main.gameMenu && !Main.gamePaused && Main.AmbienceServer != null)
|
|
Main.AmbienceServer.Update();
|
|
WorldGen.BackgroundsCache.UpdateFlashValues();
|
|
if (Main.LocalGolfState != null)
|
|
Main.LocalGolfState.Update();
|
|
if ((isActive || Main.netMode == 1) && (double) Main.cloudAlpha > 0.0)
|
|
Rain.MakeRain();
|
|
if (Main.netMode != 1)
|
|
this.updateCloudLayer();
|
|
for (int index = 0; index < Main.dayRate; ++index)
|
|
this.UpdateWeather(gameTime);
|
|
if (++Main.timeForVisualEffects >= 216000.0)
|
|
Main.timeForVisualEffects = 0.0;
|
|
Main.UnpausedUpdateSeed = Utils.RandomNextSeed(Main.UnpausedUpdateSeed);
|
|
Main.Ambience();
|
|
if (Main.netMode != 2)
|
|
{
|
|
try
|
|
{
|
|
Main.snowing();
|
|
}
|
|
catch
|
|
{
|
|
if (!Main.ignoreErrors)
|
|
throw;
|
|
}
|
|
Sandstorm.EmitDust();
|
|
}
|
|
if (!Main.dedServ && (double) Main.screenPosition.Y < Main.worldSurface * 16.0 + 16.0 && Main.netMode != 2)
|
|
{
|
|
Star.UpdateStars();
|
|
Cloud.UpdateClouds();
|
|
}
|
|
PortalHelper.UpdatePortalPoints();
|
|
if (this.ShouldUpdateEntities())
|
|
this.DoUpdateInWorld(this._worldUpdateTimeTester);
|
|
if (Main.netMode != 2)
|
|
Main.ChromaPainter.Update();
|
|
base.Update(gameTime);
|
|
}
|
|
}
|
|
}
|
|
|
|
private static bool CanPauseGame()
|
|
{
|
|
bool flag = false;
|
|
if (Main.netMode == 0)
|
|
flag = ((flag | Main.ingameOptionsWindow ? 1 : 0) | (!Main.autoPause ? 0 : (Main.playerInventory || Main.LocalPlayer.sign >= 0 ? 1 : (Main.InGameUI.IsVisible ? 1 : 0)))) != 0;
|
|
return flag;
|
|
}
|
|
|
|
private static void DoUpdate_WhilePaused()
|
|
{
|
|
if (!Main.drawingPlayerChat && !Main.editSign && !Main.editChest && !Main.blockInput)
|
|
{
|
|
Main.player[Main.myPlayer].controlInv = PlayerInput.Triggers.Current.Inventory;
|
|
if (Main.player[Main.myPlayer].controlInv)
|
|
{
|
|
if (Main.player[Main.myPlayer].releaseInventory)
|
|
Main.player[Main.myPlayer].ToggleInv();
|
|
Main.player[Main.myPlayer].releaseInventory = false;
|
|
}
|
|
else
|
|
Main.player[Main.myPlayer].releaseInventory = true;
|
|
}
|
|
if (Main.playerInventory)
|
|
{
|
|
Recipe.GetThroughDelayedFindRecipes();
|
|
int num1 = PlayerInput.ScrollWheelDelta / 120;
|
|
bool flag = true;
|
|
if (Main.recBigList)
|
|
{
|
|
int num2 = 42;
|
|
int y = 340;
|
|
int x = 310;
|
|
PlayerInput.SetZoom_UI();
|
|
int num3 = (Main.screenWidth - x - 280) / num2;
|
|
int num4 = (Main.screenHeight - y - 20) / num2;
|
|
if (new Microsoft.Xna.Framework.Rectangle(x, y, num3 * num2, num4 * num2).Contains(Main.MouseScreen.ToPoint()))
|
|
{
|
|
int num5 = Math.Sign(num1);
|
|
for (; num1 != 0; num1 -= num5)
|
|
{
|
|
if (num1 < 0)
|
|
{
|
|
Main.recStart -= num3;
|
|
if (Main.recStart < 0)
|
|
Main.recStart = 0;
|
|
}
|
|
else
|
|
{
|
|
Main.recStart += num3;
|
|
SoundEngine.PlaySound(12);
|
|
if (Main.recStart > Main.numAvailableRecipes - num3)
|
|
Main.recStart = Main.numAvailableRecipes - num3;
|
|
}
|
|
}
|
|
}
|
|
PlayerInput.SetZoom_World();
|
|
}
|
|
if (flag)
|
|
{
|
|
Main.focusRecipe += num1;
|
|
if (Main.focusRecipe > Main.numAvailableRecipes - 1)
|
|
Main.focusRecipe = Main.numAvailableRecipes - 1;
|
|
if (Main.focusRecipe < 0)
|
|
Main.focusRecipe = 0;
|
|
}
|
|
Main.player[Main.myPlayer].dropItemCheck();
|
|
}
|
|
Main.player[Main.myPlayer].head = Main.player[Main.myPlayer].armor[0].headSlot;
|
|
Main.player[Main.myPlayer].body = Main.player[Main.myPlayer].armor[1].bodySlot;
|
|
Main.player[Main.myPlayer].legs = Main.player[Main.myPlayer].armor[2].legSlot;
|
|
if (!Main.player[Main.myPlayer].hostile)
|
|
{
|
|
if (Main.player[Main.myPlayer].armor[10].headSlot >= 0)
|
|
Main.player[Main.myPlayer].head = Main.player[Main.myPlayer].armor[10].headSlot;
|
|
if (Main.player[Main.myPlayer].armor[11].bodySlot >= 0)
|
|
Main.player[Main.myPlayer].body = Main.player[Main.myPlayer].armor[11].bodySlot;
|
|
if (Main.player[Main.myPlayer].armor[12].legSlot >= 0)
|
|
Main.player[Main.myPlayer].legs = Main.player[Main.myPlayer].armor[12].legSlot;
|
|
}
|
|
if (Main.editSign)
|
|
{
|
|
if (Main.player[Main.myPlayer].sign == -1)
|
|
Main.editSign = false;
|
|
else
|
|
Main.InputTextSign();
|
|
}
|
|
else if (Main.editChest && Main.player[Main.myPlayer].chest == -1)
|
|
Main.editChest = false;
|
|
Player.tileTargetX = (int) (((double) Main.mouseX + (double) Main.screenPosition.X) / 16.0);
|
|
Player.tileTargetY = (int) (((double) Main.mouseY + (double) Main.screenPosition.Y) / 16.0);
|
|
Main.player[Main.myPlayer].LookForTileInteractions();
|
|
Main.player[Main.myPlayer].lastChest = Main.player[Main.myPlayer].chest;
|
|
if (!Main.playerInventory)
|
|
return;
|
|
Main.player[Main.myPlayer].AdjTiles();
|
|
}
|
|
|
|
private static void UpdateUIStates(GameTime gameTime)
|
|
{
|
|
if (Main.MenuUI != null)
|
|
Main.MenuUI.Update(gameTime);
|
|
if (Main.InGameUI != null)
|
|
Main.InGameUI.Update(gameTime);
|
|
Main.CreativeMenu.Update(gameTime);
|
|
Main.BigBossProgressBar.Update();
|
|
}
|
|
|
|
private void DoDebugFunctions()
|
|
{
|
|
}
|
|
|
|
private void PreUpdateAllProjectiles()
|
|
{
|
|
this.SpelunkerProjectileHelper.OnPreUpdateAllProjectiles();
|
|
this.ChumBucketProjectileHelper.OnPreUpdateAllProjectiles();
|
|
}
|
|
|
|
private void PostUpdateAllProjectiles()
|
|
{
|
|
}
|
|
|
|
private static void TrySyncingMyPlayer()
|
|
{
|
|
Player clientPlayer = Main.clientPlayer;
|
|
bool flag1 = false;
|
|
for (int index = 0; index < 59; ++index)
|
|
{
|
|
if (Main.player[Main.myPlayer].inventory[index].IsNotTheSameAs(clientPlayer.inventory[index]))
|
|
{
|
|
flag1 = true;
|
|
NetMessage.SendData(5, number: Main.myPlayer, number2: ((float) index), number3: ((float) Main.player[Main.myPlayer].inventory[index].prefix));
|
|
}
|
|
}
|
|
for (int index = 0; index < Main.player[Main.myPlayer].armor.Length; ++index)
|
|
{
|
|
if (Main.player[Main.myPlayer].armor[index].IsNotTheSameAs(clientPlayer.armor[index]))
|
|
{
|
|
flag1 = true;
|
|
NetMessage.SendData(5, number: Main.myPlayer, number2: ((float) (59 + index)), number3: ((float) Main.player[Main.myPlayer].armor[index].prefix));
|
|
}
|
|
}
|
|
for (int index = 0; index < Main.player[Main.myPlayer].miscEquips.Length; ++index)
|
|
{
|
|
if (Main.player[Main.myPlayer].miscEquips[index].IsNotTheSameAs(clientPlayer.miscEquips[index]))
|
|
{
|
|
flag1 = true;
|
|
NetMessage.SendData(5, number: Main.myPlayer, number2: ((float) (58 + Main.player[Main.myPlayer].armor.Length + Main.player[Main.myPlayer].dye.Length + 1 + index)), number3: ((float) Main.player[Main.myPlayer].miscEquips[index].prefix));
|
|
}
|
|
}
|
|
for (int index = 0; index < Main.player[Main.myPlayer].miscDyes.Length; ++index)
|
|
{
|
|
if (Main.player[Main.myPlayer].miscDyes[index].IsNotTheSameAs(clientPlayer.miscDyes[index]))
|
|
{
|
|
flag1 = true;
|
|
NetMessage.SendData(5, number: Main.myPlayer, number2: ((float) (58 + Main.player[Main.myPlayer].armor.Length + Main.player[Main.myPlayer].dye.Length + Main.player[Main.myPlayer].miscEquips.Length + 1 + index)), number3: ((float) Main.player[Main.myPlayer].miscDyes[index].prefix));
|
|
}
|
|
}
|
|
for (int index = 0; index < Main.player[Main.myPlayer].bank.item.Length; ++index)
|
|
{
|
|
if (Main.player[Main.myPlayer].bank.item[index].IsNotTheSameAs(clientPlayer.bank.item[index]))
|
|
{
|
|
flag1 = true;
|
|
NetMessage.SendData(5, number: Main.myPlayer, number2: ((float) (58 + Main.player[Main.myPlayer].armor.Length + Main.player[Main.myPlayer].dye.Length + Main.player[Main.myPlayer].miscEquips.Length + Main.player[Main.myPlayer].miscDyes.Length + 1 + index)), number3: ((float) Main.player[Main.myPlayer].bank.item[index].prefix));
|
|
}
|
|
}
|
|
for (int index = 0; index < Main.player[Main.myPlayer].bank2.item.Length; ++index)
|
|
{
|
|
if (Main.player[Main.myPlayer].bank2.item[index].IsNotTheSameAs(clientPlayer.bank2.item[index]))
|
|
{
|
|
flag1 = true;
|
|
NetMessage.SendData(5, number: Main.myPlayer, number2: ((float) (58 + Main.player[Main.myPlayer].armor.Length + Main.player[Main.myPlayer].dye.Length + Main.player[Main.myPlayer].miscEquips.Length + Main.player[Main.myPlayer].miscDyes.Length + Main.player[Main.myPlayer].bank.item.Length + 1 + index)), number3: ((float) Main.player[Main.myPlayer].bank2.item[index].prefix));
|
|
}
|
|
}
|
|
if (Main.player[Main.myPlayer].trashItem.IsNotTheSameAs(clientPlayer.trashItem))
|
|
{
|
|
flag1 = true;
|
|
NetMessage.SendData(5, number: Main.myPlayer, number2: ((float) (58 + Main.player[Main.myPlayer].armor.Length + Main.player[Main.myPlayer].dye.Length + Main.player[Main.myPlayer].miscEquips.Length + Main.player[Main.myPlayer].miscDyes.Length + Main.player[Main.myPlayer].bank.item.Length + Main.player[Main.myPlayer].bank2.item.Length + 1)), number3: ((float) Main.player[Main.myPlayer].trashItem.prefix));
|
|
}
|
|
for (int index = 0; index < Main.player[Main.myPlayer].bank3.item.Length; ++index)
|
|
{
|
|
if (Main.player[Main.myPlayer].bank3.item[index].IsNotTheSameAs(clientPlayer.bank3.item[index]))
|
|
{
|
|
flag1 = true;
|
|
NetMessage.SendData(5, number: Main.myPlayer, number2: ((float) (58 + Main.player[Main.myPlayer].armor.Length + Main.player[Main.myPlayer].dye.Length + Main.player[Main.myPlayer].miscEquips.Length + Main.player[Main.myPlayer].miscDyes.Length + Main.player[Main.myPlayer].bank.item.Length + Main.player[Main.myPlayer].bank2.item.Length + 2 + index)), number3: ((float) Main.player[Main.myPlayer].bank3.item[index].prefix));
|
|
}
|
|
}
|
|
for (int index = 0; index < Main.player[Main.myPlayer].bank4.item.Length; ++index)
|
|
{
|
|
if (Main.player[Main.myPlayer].bank4.item[index].IsNotTheSameAs(clientPlayer.bank4.item[index]))
|
|
{
|
|
flag1 = true;
|
|
NetMessage.SendData(5, number: Main.myPlayer, number2: ((float) (58 + Main.player[Main.myPlayer].armor.Length + Main.player[Main.myPlayer].dye.Length + Main.player[Main.myPlayer].miscEquips.Length + Main.player[Main.myPlayer].miscDyes.Length + Main.player[Main.myPlayer].bank.item.Length + Main.player[Main.myPlayer].bank2.item.Length + Main.player[Main.myPlayer].bank3.item.Length + 2 + index)), number3: ((float) Main.player[Main.myPlayer].bank4.item[index].prefix));
|
|
}
|
|
}
|
|
for (int index = 0; index < Main.player[Main.myPlayer].dye.Length; ++index)
|
|
{
|
|
if (Main.player[Main.myPlayer].dye[index].IsNotTheSameAs(clientPlayer.dye[index]))
|
|
{
|
|
flag1 = true;
|
|
NetMessage.SendData(5, number: Main.myPlayer, number2: ((float) (58 + Main.player[Main.myPlayer].armor.Length + 1 + index)), number3: ((float) Main.player[Main.myPlayer].dye[index].prefix));
|
|
}
|
|
}
|
|
if (Main.player[Main.myPlayer].chest != clientPlayer.chest && Main.player[Main.myPlayer].chest < 0 && clientPlayer.chest >= 0)
|
|
{
|
|
if (Main.player[Main.myPlayer].editedChestName)
|
|
{
|
|
if (Main.chest[clientPlayer.chest] != null)
|
|
NetMessage.SendData(33, text: NetworkText.FromLiteral(Main.chest[clientPlayer.chest].name), number: Main.player[Main.myPlayer].chest, number2: 1f);
|
|
else
|
|
NetMessage.SendData(33, number: Main.player[Main.myPlayer].chest);
|
|
Main.player[Main.myPlayer].editedChestName = false;
|
|
}
|
|
else
|
|
NetMessage.SendData(33, number: Main.player[Main.myPlayer].chest);
|
|
}
|
|
if (Main.player[Main.myPlayer].talkNPC != clientPlayer.talkNPC)
|
|
NetMessage.SendData(40, number: Main.myPlayer);
|
|
if (Main.LocalPlayer.tileEntityAnchor.interactEntityID != clientPlayer.tileEntityAnchor.interactEntityID && Main.LocalPlayer.tileEntityAnchor.interactEntityID < 0)
|
|
NetMessage.SendData(122, number: -1, number2: ((float) Main.myPlayer));
|
|
bool flag2 = false;
|
|
if ((int) (byte) Main.player[Main.myPlayer].zone1 != (int) (byte) clientPlayer.zone1)
|
|
flag2 = true;
|
|
if ((int) (byte) Main.player[Main.myPlayer].zone2 != (int) (byte) clientPlayer.zone2)
|
|
flag2 = true;
|
|
if ((int) (byte) Main.player[Main.myPlayer].zone3 != (int) (byte) clientPlayer.zone3)
|
|
flag2 = true;
|
|
if ((int) (byte) Main.player[Main.myPlayer].zone4 != (int) (byte) clientPlayer.zone4)
|
|
flag2 = true;
|
|
if (flag2)
|
|
NetMessage.SendData(36, number: Main.myPlayer);
|
|
if (Main.player[Main.myPlayer].statLife != clientPlayer.statLife || Main.player[Main.myPlayer].statLifeMax != clientPlayer.statLifeMax)
|
|
Main.player[Main.myPlayer].netLife = true;
|
|
if (Main.player[Main.myPlayer].netLifeTime > 0)
|
|
--Main.player[Main.myPlayer].netLifeTime;
|
|
else if (Main.player[Main.myPlayer].netLife)
|
|
{
|
|
Main.player[Main.myPlayer].netLife = false;
|
|
Main.player[Main.myPlayer].netLifeTime = 60;
|
|
NetMessage.SendData(16, number: Main.myPlayer);
|
|
}
|
|
if (Main.player[Main.myPlayer].statMana != clientPlayer.statMana || Main.player[Main.myPlayer].statManaMax != clientPlayer.statManaMax)
|
|
Main.player[Main.myPlayer].netMana = true;
|
|
if (Main.player[Main.myPlayer].netManaTime > 0)
|
|
--Main.player[Main.myPlayer].netManaTime;
|
|
else if (Main.player[Main.myPlayer].netMana)
|
|
{
|
|
Main.player[Main.myPlayer].netMana = false;
|
|
Main.player[Main.myPlayer].netManaTime = 60;
|
|
NetMessage.SendData(42, number: Main.myPlayer);
|
|
}
|
|
bool flag3 = false;
|
|
for (int index = 0; index < 22; ++index)
|
|
{
|
|
if (Main.player[Main.myPlayer].buffType[index] != clientPlayer.buffType[index])
|
|
flag3 = true;
|
|
}
|
|
if (flag3)
|
|
{
|
|
NetMessage.SendData(50, number: Main.myPlayer);
|
|
NetMessage.SendData(13, number: Main.myPlayer);
|
|
}
|
|
bool flag4 = false;
|
|
if (Main.player[Main.myPlayer].MinionRestTargetPoint != clientPlayer.MinionRestTargetPoint)
|
|
flag4 = true;
|
|
if (flag4)
|
|
NetMessage.SendData(99, number: Main.myPlayer);
|
|
bool flag5 = false;
|
|
if (Main.player[Main.myPlayer].MinionAttackTargetNPC != clientPlayer.MinionAttackTargetNPC)
|
|
flag5 = true;
|
|
if (flag5)
|
|
NetMessage.SendData(115, number: Main.myPlayer);
|
|
if (clientPlayer.shieldRaised != Main.player[Main.myPlayer].shieldRaised)
|
|
NetMessage.SendData(13, number: Main.myPlayer);
|
|
if (flag1)
|
|
NetMessage.SendData(138);
|
|
Main.clientPlayer = (Player) Main.player[Main.myPlayer].clientClone();
|
|
}
|
|
|
|
public bool ShouldUpdateEntities() => Main._worldPreparationState == Main.WorldPreparationState.Ready;
|
|
|
|
private void DoUpdateInWorld(Stopwatch sw)
|
|
{
|
|
this.UpdateParticleSystems();
|
|
Main.tileSolid[379] = false;
|
|
int num1 = 0;
|
|
int num2 = 0;
|
|
Main.sittingManager.ClearPlayerAnchors();
|
|
Main.sleepingManager.ClearPlayerAnchors();
|
|
for (int i = 0; i < (int) byte.MaxValue; ++i)
|
|
{
|
|
try
|
|
{
|
|
Main.player[i].Update(i);
|
|
if (Main.player[i].active)
|
|
{
|
|
++num1;
|
|
if (Main.player[i].sleeping.FullyFallenAsleep)
|
|
++num2;
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
if (!Main.ignoreErrors)
|
|
throw;
|
|
}
|
|
}
|
|
Main.CurrentFrameFlags.ActivePlayersCount = num1;
|
|
Main.CurrentFrameFlags.SleepingPlayersCount = num2;
|
|
if (Main.netMode != 2)
|
|
{
|
|
int player = Main.myPlayer;
|
|
if (Main.player[player].creativeGodMode)
|
|
{
|
|
Main.player[player].statLife = Main.player[player].statLifeMax2;
|
|
Main.player[player].statMana = Main.player[player].statManaMax2;
|
|
Main.player[player].breath = Main.player[player].breathMax;
|
|
}
|
|
}
|
|
++Main._gameUpdateCount;
|
|
NPC.RevengeManager.Update();
|
|
if (Main.netMode != 1)
|
|
{
|
|
try
|
|
{
|
|
NPC.SpawnNPC();
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
}
|
|
if (Main.netMode != 1)
|
|
PressurePlateHelper.Update();
|
|
for (int index = 0; index < (int) byte.MaxValue; ++index)
|
|
{
|
|
Main.player[index].nearbyActiveNPCs = 0.0f;
|
|
Main.player[index].townNPCs = 0.0f;
|
|
}
|
|
Main.CheckBossIndexes();
|
|
Main.sittingManager.ClearNPCAnchors();
|
|
Main.sleepingManager.ClearNPCAnchors();
|
|
NPC.taxCollector = false;
|
|
NPC.ClearFoundActiveNPCs();
|
|
NPC.UpdateFoundActiveNPCs();
|
|
FixExploitManEaters.Update();
|
|
if (Main.netMode != 1)
|
|
Main.BestiaryTracker.Sights.ScanWorldForFinds();
|
|
bool flag = false;
|
|
if (NPC.offSetDelayTime > 0)
|
|
--NPC.offSetDelayTime;
|
|
for (int i = 0; i < 200; ++i)
|
|
{
|
|
if (Main.ignoreErrors)
|
|
{
|
|
try
|
|
{
|
|
Main.npc[i].UpdateNPC(i);
|
|
if (Main.npc[i].active)
|
|
{
|
|
if (!Main.npc[i].boss)
|
|
{
|
|
if (!NPCID.Sets.DangerThatPreventsOtherDangers[Main.npc[i].type])
|
|
continue;
|
|
}
|
|
flag = true;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Main.npc[i] = new NPC();
|
|
}
|
|
}
|
|
else
|
|
Main.npc[i].UpdateNPC(i);
|
|
}
|
|
Main.CurrentFrameFlags.AnyActiveBossNPC = flag;
|
|
for (int index = 0; index < 600; ++index)
|
|
{
|
|
if (Main.ignoreErrors)
|
|
{
|
|
try
|
|
{
|
|
Main.gore[index].Update();
|
|
}
|
|
catch
|
|
{
|
|
Main.gore[index] = new Gore();
|
|
}
|
|
}
|
|
else
|
|
Main.gore[index].Update();
|
|
}
|
|
LockOnHelper.SetUP();
|
|
Main.CurrentFrameFlags.HadAnActiveInteractibleProjectile = false;
|
|
this.PreUpdateAllProjectiles();
|
|
for (int i = 0; i < 1000; ++i)
|
|
{
|
|
Main.ProjectileUpdateLoopIndex = i;
|
|
if (Main.ignoreErrors)
|
|
{
|
|
try
|
|
{
|
|
Main.projectile[i].Update(i);
|
|
}
|
|
catch
|
|
{
|
|
Main.projectile[i] = new Projectile();
|
|
}
|
|
}
|
|
else
|
|
Main.projectile[i].Update(i);
|
|
}
|
|
Main.ProjectileUpdateLoopIndex = -1;
|
|
this.PostUpdateAllProjectiles();
|
|
LockOnHelper.SetDOWN();
|
|
Item.numberOfNewItems = 0;
|
|
for (int i = 0; i < 400; ++i)
|
|
{
|
|
if (Main.ignoreErrors)
|
|
{
|
|
try
|
|
{
|
|
Main.item[i].UpdateItem(i);
|
|
}
|
|
catch
|
|
{
|
|
Main.item[i] = new Item();
|
|
}
|
|
}
|
|
else
|
|
Main.item[i].UpdateItem(i);
|
|
}
|
|
if (Main.ignoreErrors)
|
|
{
|
|
try
|
|
{
|
|
Dust.UpdateDust();
|
|
}
|
|
catch
|
|
{
|
|
for (int index = 0; index < 6000; ++index)
|
|
{
|
|
Main.dust[index] = new Dust();
|
|
Main.dust[index].dustIndex = index;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
Dust.UpdateDust();
|
|
if (Main.netMode != 2)
|
|
{
|
|
CombatText.UpdateCombatText();
|
|
PopupText.UpdateItemText();
|
|
}
|
|
if (Main.ignoreErrors)
|
|
{
|
|
try
|
|
{
|
|
Main.UpdateTime();
|
|
}
|
|
catch
|
|
{
|
|
Main.checkForSpawns = 0;
|
|
}
|
|
}
|
|
else
|
|
Main.UpdateTime();
|
|
Main.tileSolid[379] = true;
|
|
if (Main.gameMenu && Main.netMode != 2)
|
|
return;
|
|
if (Main.netMode != 1)
|
|
{
|
|
if (Main.ignoreErrors)
|
|
{
|
|
try
|
|
{
|
|
WorldGen.UpdateWorld();
|
|
Main.UpdateInvasion();
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
}
|
|
else
|
|
{
|
|
WorldGen.UpdateWorld();
|
|
Main.UpdateInvasion();
|
|
}
|
|
}
|
|
if (Main.ignoreErrors)
|
|
{
|
|
try
|
|
{
|
|
if (Main.netMode == 2)
|
|
Main.UpdateServer();
|
|
if (Main.netMode == 1)
|
|
Main.UpdateClient();
|
|
}
|
|
catch
|
|
{
|
|
int netMode = Main.netMode;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (Main.netMode == 2)
|
|
Main.UpdateServer();
|
|
if (Main.netMode == 1)
|
|
Main.UpdateClient();
|
|
}
|
|
Main.chatMonitor.Update();
|
|
Main.upTimer = (float) sw.Elapsed.TotalMilliseconds;
|
|
if ((double) Main.upTimerMaxDelay > 0.0)
|
|
--Main.upTimerMaxDelay;
|
|
else
|
|
Main.upTimerMax = 0.0f;
|
|
if ((double) Main.upTimer > (double) Main.upTimerMax)
|
|
{
|
|
Main.upTimerMax = Main.upTimer;
|
|
Main.upTimerMaxDelay = 400f;
|
|
}
|
|
Chest.UpdateChestFrames();
|
|
this._ambientWindSys.Update();
|
|
this.TilesRenderer.Update();
|
|
if ((double) Main.cameraLerp <= 0.0)
|
|
return;
|
|
++Main.cameraLerpTimer;
|
|
if (Main.cameraLerpTimer >= Main.cameraLerpTimeToggle)
|
|
Main.cameraLerp += (float) ((Main.cameraLerpTimer - Main.cameraLerpTimeToggle) / 3 + 1) * (1f / 1000f);
|
|
if ((double) Main.cameraLerp <= 1.0)
|
|
return;
|
|
Main.cameraLerp = 1f;
|
|
}
|
|
|
|
private static void CheckBossIndexes()
|
|
{
|
|
if (!Main.IsNPCActiveAndOneOfTypes(Main.wofNPCIndex, 113))
|
|
Main.wofNPCIndex = -1;
|
|
if (!Main.IsNPCActiveAndOneOfTypes(NPC.golemBoss, 245))
|
|
NPC.golemBoss = -1;
|
|
if (!Main.IsNPCActiveAndOneOfTypes(NPC.plantBoss, 262))
|
|
NPC.plantBoss = -1;
|
|
if (Main.IsNPCActiveAndOneOfTypes(NPC.crimsonBoss, 266))
|
|
return;
|
|
NPC.crimsonBoss = -1;
|
|
}
|
|
|
|
private static bool IsNPCActiveAndOneOfTypes(int npcIndex, params int[] types)
|
|
{
|
|
if (npcIndex < 0)
|
|
return false;
|
|
NPC npc = Main.npc[npcIndex];
|
|
if (!npc.active)
|
|
return false;
|
|
for (int index = 0; index < types.Length; ++index)
|
|
{
|
|
if (npc.type == types[index])
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
private static void UpdateOldNPCShop()
|
|
{
|
|
if (Main.npcShop == Main.oldNPCShop)
|
|
return;
|
|
Main.oldNPCShop = Main.npcShop;
|
|
Main.shopSellbackHelper.Clear();
|
|
}
|
|
|
|
private static void DoUpdate_AnimateCursorColors()
|
|
{
|
|
Main.CursorColor();
|
|
Main.mouseTextColor += (byte) Main.mouseTextColorChange;
|
|
if (Main.mouseTextColor >= byte.MaxValue)
|
|
Main.mouseTextColorChange = -1;
|
|
if (Main.mouseTextColor <= (byte) 190)
|
|
Main.mouseTextColorChange = 1;
|
|
Main.masterColor += (float) Main.masterColorDir * 0.05f;
|
|
if ((double) Main.masterColor > 1.0)
|
|
{
|
|
Main.masterColor = 1f;
|
|
Main.masterColorDir = -1;
|
|
}
|
|
if ((double) Main.masterColor >= 0.0)
|
|
return;
|
|
Main.masterColor = 0.0f;
|
|
Main.masterColorDir = 1;
|
|
}
|
|
|
|
private static void DoUpdate_AnimateTileGlows()
|
|
{
|
|
Main.demonTorch += (float) Main.demonTorchDir * 0.01f;
|
|
if ((double) Main.demonTorch > 1.0)
|
|
{
|
|
Main.demonTorch = 1f;
|
|
Main.demonTorchDir = -1;
|
|
}
|
|
if ((double) Main.demonTorch < 0.0)
|
|
{
|
|
Main.demonTorch = 0.0f;
|
|
Main.demonTorchDir = 1;
|
|
}
|
|
Main.martianLight += (float) Main.martianLightDir * 0.015f;
|
|
if ((double) Main.martianLight > 1.0)
|
|
{
|
|
Main.martianLight = 1f;
|
|
Main.martianLightDir = -1;
|
|
}
|
|
if ((double) Main.martianLight >= 0.0)
|
|
return;
|
|
Main.martianLight = 0.0f;
|
|
Main.martianLightDir = 1;
|
|
}
|
|
|
|
private static void DoUpdate_Enter_ToggleChat()
|
|
{
|
|
if (((!Main.keyState.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.Enter) ? 0 : (Main.keyState.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.LeftAlt) ? 0 : (!Main.keyState.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.RightAlt) ? 1 : 0))) == 0 ? 0 : (Main.hasFocus ? 1 : 0)) != 0)
|
|
{
|
|
if (Main.chatRelease && !Main.drawingPlayerChat && !Main.editSign && !Main.editChest && !Main.gameMenu && !Main.keyState.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.Escape))
|
|
{
|
|
SoundEngine.PlaySound(10);
|
|
Main.OpenPlayerChat();
|
|
Main.chatText = "";
|
|
}
|
|
Main.chatRelease = false;
|
|
}
|
|
else
|
|
Main.chatRelease = true;
|
|
}
|
|
|
|
public static void OpenPlayerChat()
|
|
{
|
|
if (Main.CurrentInputTextTakerOverride != null)
|
|
return;
|
|
Main.drawingPlayerChat = true;
|
|
Main.clrInput();
|
|
}
|
|
|
|
public static void ClosePlayerChat()
|
|
{
|
|
Main.drawingPlayerChat = false;
|
|
PlayerInput.WritingText = true;
|
|
Main.player[Main.myPlayer].releaseHook = false;
|
|
Main.player[Main.myPlayer].releaseThrow = false;
|
|
}
|
|
|
|
private static void DoUpdate_HandleChat()
|
|
{
|
|
if (Main.CurrentInputTextTakerOverride != null)
|
|
{
|
|
Main.drawingPlayerChat = false;
|
|
}
|
|
else
|
|
{
|
|
if (Main.editSign)
|
|
Main.drawingPlayerChat = false;
|
|
if (PlayerInput.UsingGamepad)
|
|
Main.drawingPlayerChat = false;
|
|
if (!Main.drawingPlayerChat)
|
|
{
|
|
Main.chatMonitor.ResetOffset();
|
|
}
|
|
else
|
|
{
|
|
int linesOffset = 0;
|
|
if (Main.keyState.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.Up))
|
|
linesOffset = 1;
|
|
else if (Main.keyState.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.Down))
|
|
linesOffset = -1;
|
|
Main.chatMonitor.Offset(linesOffset);
|
|
if (Main.keyState.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.Escape))
|
|
Main.drawingPlayerChat = false;
|
|
string chatText = Main.chatText;
|
|
Main.chatText = Main.GetInputText(Main.chatText);
|
|
int num1 = (int) ((double) Main.screenWidth * (1.0 / (double) Main.UIScale)) - 330;
|
|
if (chatText != Main.chatText)
|
|
{
|
|
for (float x = ChatManager.GetStringSize(FontAssets.MouseText.Value, Main.chatText, Vector2.One).X; (double) x > (double) num1; x = ChatManager.GetStringSize(FontAssets.MouseText.Value, Main.chatText, Vector2.One).X)
|
|
{
|
|
int num2 = Math.Max(0, (int) ((double) x - (double) num1) / 100);
|
|
Main.chatText = Main.chatText.Substring(0, Main.chatText.Length - 1 - num2);
|
|
}
|
|
}
|
|
if (chatText != Main.chatText)
|
|
SoundEngine.PlaySound(12);
|
|
if (!Main.inputTextEnter || !Main.chatRelease)
|
|
return;
|
|
if (Main.chatText != "")
|
|
{
|
|
ChatMessage outgoingMessage = ChatManager.Commands.CreateOutgoingMessage(Main.chatText);
|
|
switch (Main.netMode)
|
|
{
|
|
case 0:
|
|
ChatManager.Commands.ProcessIncomingMessage(outgoingMessage, Main.myPlayer);
|
|
break;
|
|
case 1:
|
|
ChatHelper.SendChatMessageFromClient(outgoingMessage);
|
|
break;
|
|
}
|
|
}
|
|
Main.chatText = "";
|
|
Main.ClosePlayerChat();
|
|
Main.chatRelease = false;
|
|
SoundEngine.PlaySound(11);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void DoUpdate_HandleInput()
|
|
{
|
|
PlayerInput.UpdateInput();
|
|
this.UpdateViewZoomKeys();
|
|
PlayerInput.SetZoom_Unscaled();
|
|
UILinkPointNavigator.Update();
|
|
PlayerInput.CacheMousePositionForZoom();
|
|
PlayerInput.SetZoom_MouseInWorld();
|
|
Main.oldKeyState = Main.keyState;
|
|
Main.keyState = Keyboard.GetState();
|
|
}
|
|
|
|
private static void DoUpdate_AltEnter_ToggleFullscreen()
|
|
{
|
|
if ((Main.keyState.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.LeftAlt) || Main.keyState.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.RightAlt)) && Main.keyState.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.Enter) && Main.hasFocus)
|
|
{
|
|
if (Main.toggleFullscreen)
|
|
{
|
|
Main.ToggleFullScreen();
|
|
Main.chatRelease = false;
|
|
}
|
|
Main.toggleFullscreen = false;
|
|
}
|
|
else
|
|
Main.toggleFullscreen = true;
|
|
}
|
|
|
|
private static void DoUpdate_F11_ToggleUI()
|
|
{
|
|
if (Main.keyState.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.F11))
|
|
{
|
|
if (Main.releaseUI)
|
|
{
|
|
Main.hideUI = !Main.hideUI;
|
|
SoundEngine.PlaySound(12);
|
|
}
|
|
Main.releaseUI = false;
|
|
}
|
|
else
|
|
Main.releaseUI = true;
|
|
}
|
|
|
|
private static void DoUpdate_F7_ToggleGraphicsDiagnostics()
|
|
{
|
|
if (Main.keyState.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.F7) && !Main.drawingPlayerChat && !Main.editSign && !Main.editChest)
|
|
{
|
|
if (Main.drawRelease)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
if (Main.keyState.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.LeftAlt) || Main.keyState.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.RightAlt))
|
|
TimeLogger.Start();
|
|
else
|
|
Main.drawDiag = !Main.drawDiag;
|
|
}
|
|
Main.drawRelease = false;
|
|
}
|
|
else
|
|
Main.drawRelease = true;
|
|
}
|
|
|
|
private static void DoUpdate_F8_ToggleNetDiagnostics()
|
|
{
|
|
if (Main.keyState.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.F8) && !Main.drawingPlayerChat && !Main.editSign && !Main.editChest)
|
|
{
|
|
if (Main.netRelease)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
Main.shouldDrawNetDiagnosticsUI = !Main.shouldDrawNetDiagnosticsUI;
|
|
}
|
|
Main.netRelease = false;
|
|
}
|
|
else
|
|
Main.netRelease = true;
|
|
}
|
|
|
|
private static void DoUpdate_F9_ToggleLighting()
|
|
{
|
|
if (Main.keyState.PressingShift() && Main.keyState.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.F9) && !Main.drawingPlayerChat && !Main.editSign && !Main.editChest)
|
|
{
|
|
if (Main.RGBRelease)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
Lighting.NextLightMode();
|
|
}
|
|
Main.RGBRelease = false;
|
|
}
|
|
else
|
|
Main.RGBRelease = true;
|
|
}
|
|
|
|
private static void DoUpdate_F10_ToggleFPS()
|
|
{
|
|
if (Main.keyState.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.F10) && !Main.drawingPlayerChat && !Main.editSign && !Main.editChest)
|
|
{
|
|
if (Main.frameRelease)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
Main.showFrameRate = !Main.showFrameRate;
|
|
}
|
|
Main.frameRelease = false;
|
|
}
|
|
else
|
|
Main.frameRelease = true;
|
|
}
|
|
|
|
private static void AnimateTiles()
|
|
{
|
|
++Main.tileFrameCounter[12];
|
|
if (Main.tileFrameCounter[12] > 5)
|
|
{
|
|
Main.tileFrameCounter[12] = 0;
|
|
++Main.tileFrame[12];
|
|
if (Main.tileFrame[12] >= 10)
|
|
Main.tileFrame[12] = 0;
|
|
}
|
|
++Main.tileFrameCounter[17];
|
|
if (Main.tileFrameCounter[17] > 5)
|
|
{
|
|
Main.tileFrameCounter[17] = 0;
|
|
++Main.tileFrame[17];
|
|
if (Main.tileFrame[17] >= 12)
|
|
Main.tileFrame[17] = 0;
|
|
}
|
|
if (++Main.tileFrameCounter[133] >= 4)
|
|
{
|
|
Main.tileFrameCounter[133] = 0;
|
|
if (++Main.tileFrame[133] >= 6)
|
|
Main.tileFrame[133] = 0;
|
|
}
|
|
++Main.tileFrameCounter[31];
|
|
if (Main.tileFrameCounter[31] > 10)
|
|
{
|
|
Main.tileFrameCounter[31] = 0;
|
|
++Main.tileFrame[31];
|
|
if (Main.tileFrame[31] > 1)
|
|
Main.tileFrame[31] = 0;
|
|
}
|
|
++Main.tileFrameCounter[77];
|
|
if (Main.tileFrameCounter[77] > 5)
|
|
{
|
|
Main.tileFrameCounter[77] = 0;
|
|
++Main.tileFrame[77];
|
|
if (Main.tileFrame[77] >= 12)
|
|
Main.tileFrame[77] = 0;
|
|
}
|
|
++Main.tileFrameCounter[106];
|
|
if (Main.tileFrameCounter[106] > 4)
|
|
{
|
|
Main.tileFrameCounter[106] = 0;
|
|
++Main.tileFrame[106];
|
|
if (Main.tileFrame[106] >= 2)
|
|
Main.tileFrame[106] = 0;
|
|
}
|
|
++Main.tileFrameCounter[207];
|
|
if (Main.tileFrameCounter[207] > 4)
|
|
{
|
|
Main.tileFrameCounter[207] = 0;
|
|
++Main.tileFrame[207];
|
|
if (Main.tileFrame[207] >= 6)
|
|
Main.tileFrame[207] = 0;
|
|
}
|
|
++Main.tileFrameCounter[215];
|
|
if (Main.tileFrameCounter[215] >= 4)
|
|
{
|
|
Main.tileFrameCounter[215] = 0;
|
|
++Main.tileFrame[215];
|
|
if (Main.tileFrame[215] >= 8)
|
|
Main.tileFrame[215] = 0;
|
|
}
|
|
++Main.tileFrameCounter[592];
|
|
if (Main.tileFrameCounter[592] >= 5)
|
|
{
|
|
Main.tileFrameCounter[592] = 0;
|
|
++Main.tileFrame[592];
|
|
if (Main.tileFrame[592] >= 8)
|
|
Main.tileFrame[592] = 0;
|
|
}
|
|
++Main.tileFrameCounter[217];
|
|
if (Main.tileFrameCounter[217] > 4)
|
|
{
|
|
Main.tileFrameCounter[217] = 0;
|
|
++Main.tileFrame[217];
|
|
if (Main.tileFrame[217] >= 5)
|
|
Main.tileFrame[217] = 0;
|
|
}
|
|
++Main.tileFrameCounter[218];
|
|
if (Main.tileFrameCounter[218] > 4)
|
|
{
|
|
Main.tileFrameCounter[218] = 0;
|
|
++Main.tileFrame[218];
|
|
if (Main.tileFrame[218] >= 2)
|
|
Main.tileFrame[218] = 0;
|
|
}
|
|
++Main.tileFrameCounter[219];
|
|
if (Main.tileFrameCounter[219] > 4)
|
|
{
|
|
Main.tileFrameCounter[219] = 0;
|
|
++Main.tileFrame[219];
|
|
if (Main.tileFrame[219] >= 10)
|
|
Main.tileFrame[219] = 0;
|
|
}
|
|
++Main.tileFrameCounter[220];
|
|
if (Main.tileFrameCounter[220] > 4)
|
|
{
|
|
Main.tileFrameCounter[220] = 0;
|
|
++Main.tileFrame[220];
|
|
if (Main.tileFrame[220] >= 4)
|
|
Main.tileFrame[220] = 0;
|
|
}
|
|
++Main.tileFrameCounter[231];
|
|
if (Main.tileFrameCounter[231] > 16)
|
|
{
|
|
Main.tileFrameCounter[231] = 0;
|
|
++Main.tileFrame[231];
|
|
if (Main.tileFrame[231] >= 7)
|
|
Main.tileFrame[231] = 0;
|
|
}
|
|
++Main.tileFrameCounter[235];
|
|
if (Main.tileFrameCounter[235] > 20)
|
|
{
|
|
Main.tileFrameCounter[235] = 0;
|
|
++Main.tileFrame[235];
|
|
if (Main.tileFrame[235] >= 4)
|
|
Main.tileFrame[235] = 0;
|
|
Main.tileLighted[235] = Main.tileFrame[235] > 1;
|
|
}
|
|
++Main.tileFrameCounter[238];
|
|
if (Main.tileFrameCounter[238] > 20)
|
|
{
|
|
Main.tileFrameCounter[238] = 0;
|
|
++Main.tileFrame[238];
|
|
if (Main.tileFrame[238] >= 4)
|
|
Main.tileFrame[238] = 0;
|
|
}
|
|
++Main.tileFrameCounter[243];
|
|
if (Main.tileFrameCounter[243] > 4)
|
|
{
|
|
Main.tileFrameCounter[243] = 0;
|
|
++Main.tileFrame[243];
|
|
if (Main.tileFrame[243] >= 6)
|
|
Main.tileFrame[243] = 0;
|
|
}
|
|
++Main.tileFrameCounter[244];
|
|
if (Main.tileFrameCounter[244] > 4)
|
|
{
|
|
Main.tileFrameCounter[244] = 0;
|
|
++Main.tileFrame[244];
|
|
if (Main.tileFrame[244] >= 6)
|
|
Main.tileFrame[244] = 0;
|
|
}
|
|
++Main.tileFrameCounter[247];
|
|
if (Main.tileFrameCounter[247] > 4)
|
|
{
|
|
Main.tileFrameCounter[247] = 0;
|
|
++Main.tileFrame[247];
|
|
if (Main.tileFrame[247] > 7)
|
|
Main.tileFrame[247] = 0;
|
|
}
|
|
++Main.tileFrameCounter[96];
|
|
if (Main.tileFrameCounter[96] > 4)
|
|
{
|
|
Main.tileFrameCounter[96] = 0;
|
|
++Main.tileFrame[96];
|
|
if (Main.tileFrame[96] > 3)
|
|
Main.tileFrame[96] = 0;
|
|
}
|
|
++Main.tileFrameCounter[171];
|
|
if (Main.tileFrameCounter[171] > 16)
|
|
{
|
|
Main.tileFrameCounter[171] = 0;
|
|
++Main.tileFrame[171];
|
|
if (Main.tileFrame[171] > 3)
|
|
Main.tileFrame[171] = 0;
|
|
}
|
|
++Main.tileFrameCounter[270];
|
|
if (Main.tileFrameCounter[270] > 8)
|
|
{
|
|
Main.tileFrameCounter[270] = 0;
|
|
++Main.tileFrame[270];
|
|
if (Main.tileFrame[270] > 5)
|
|
Main.tileFrame[270] = 0;
|
|
}
|
|
Main.tileFrame[271] = Main.tileFrame[270];
|
|
Main.tileFrame[581] = Main.tileFrame[270];
|
|
++Main.tileFrameCounter[272];
|
|
if (Main.tileFrameCounter[272] >= 10)
|
|
{
|
|
Main.tileFrameCounter[272] = 0;
|
|
++Main.tileFrame[272];
|
|
if (Main.tileFrame[272] > 1)
|
|
Main.tileFrame[272] = 0;
|
|
}
|
|
++Main.tileFrameCounter[300];
|
|
if (Main.tileFrameCounter[300] >= 5)
|
|
{
|
|
Main.tileFrameCounter[300] = 0;
|
|
++Main.tileFrame[300];
|
|
if (Main.tileFrame[300] > 6)
|
|
Main.tileFrame[300] = 0;
|
|
}
|
|
++Main.tileFrameCounter[301];
|
|
if (Main.tileFrameCounter[301] >= 5)
|
|
{
|
|
Main.tileFrameCounter[301] = 0;
|
|
++Main.tileFrame[301];
|
|
if (Main.tileFrame[301] > 7)
|
|
Main.tileFrame[301] = 0;
|
|
}
|
|
++Main.tileFrameCounter[302];
|
|
if (Main.tileFrameCounter[302] >= 5)
|
|
{
|
|
Main.tileFrameCounter[302] = 0;
|
|
++Main.tileFrame[302];
|
|
if (Main.tileFrame[302] > 3)
|
|
Main.tileFrame[302] = 0;
|
|
}
|
|
++Main.tileFrameCounter[303];
|
|
if (Main.tileFrameCounter[303] >= 5)
|
|
{
|
|
Main.tileFrameCounter[303] = 0;
|
|
++Main.tileFrame[303];
|
|
if (Main.tileFrame[303] > 4)
|
|
Main.tileFrame[303] = 0;
|
|
}
|
|
++Main.tileFrameCounter[305];
|
|
if (Main.tileFrameCounter[305] >= 5)
|
|
{
|
|
Main.tileFrameCounter[305] = 0;
|
|
++Main.tileFrame[305];
|
|
if (Main.tileFrame[305] > 11)
|
|
Main.tileFrame[305] = 0;
|
|
}
|
|
++Main.tileFrameCounter[306];
|
|
if (Main.tileFrameCounter[306] >= 5)
|
|
{
|
|
Main.tileFrameCounter[306] = 0;
|
|
++Main.tileFrame[306];
|
|
if (Main.tileFrame[306] > 11)
|
|
Main.tileFrame[306] = 0;
|
|
}
|
|
++Main.tileFrameCounter[307];
|
|
if (Main.tileFrameCounter[307] >= 5)
|
|
{
|
|
Main.tileFrameCounter[307] = 0;
|
|
++Main.tileFrame[307];
|
|
if (Main.tileFrame[307] > 1)
|
|
Main.tileFrame[307] = 0;
|
|
}
|
|
++Main.tileFrameCounter[308];
|
|
if (Main.tileFrameCounter[308] >= 5)
|
|
{
|
|
Main.tileFrameCounter[308] = 0;
|
|
++Main.tileFrame[308];
|
|
if (Main.tileFrame[308] > 7)
|
|
Main.tileFrame[308] = 0;
|
|
}
|
|
++Main.tileFrameCounter[314];
|
|
if (Main.tileFrameCounter[314] >= 10)
|
|
{
|
|
Main.tileFrameCounter[314] = 0;
|
|
++Main.tileFrame[314];
|
|
if (Main.tileFrame[314] > 4)
|
|
Main.tileFrame[314] = 0;
|
|
}
|
|
++Main.tileFrameCounter[326];
|
|
if (Main.tileFrameCounter[326] >= 5)
|
|
{
|
|
Main.tileFrameCounter[326] = 0;
|
|
++Main.tileFrame[326];
|
|
if (Main.tileFrame[326] > 7)
|
|
Main.tileFrame[326] = 0;
|
|
}
|
|
++Main.tileFrameCounter[327];
|
|
if (Main.tileFrameCounter[327] >= 10)
|
|
{
|
|
Main.tileFrameCounter[327] = 0;
|
|
++Main.tileFrame[327];
|
|
if (Main.tileFrame[327] > 7)
|
|
Main.tileFrame[327] = 0;
|
|
}
|
|
++Main.tileFrameCounter[345];
|
|
if (Main.tileFrameCounter[345] >= 10)
|
|
{
|
|
Main.tileFrameCounter[345] = 0;
|
|
++Main.tileFrame[345];
|
|
if (Main.tileFrame[345] > 7)
|
|
Main.tileFrame[345] = 0;
|
|
}
|
|
++Main.tileFrameCounter[458];
|
|
if (Main.tileFrameCounter[458] >= 10)
|
|
{
|
|
Main.tileFrameCounter[458] = 0;
|
|
++Main.tileFrame[458];
|
|
if (Main.tileFrame[458] > 7)
|
|
Main.tileFrame[458] = 0;
|
|
}
|
|
++Main.tileFrameCounter[459];
|
|
if (Main.tileFrameCounter[459] >= 10)
|
|
{
|
|
Main.tileFrameCounter[459] = 0;
|
|
++Main.tileFrame[459];
|
|
if (Main.tileFrame[459] > 7)
|
|
Main.tileFrame[459] = 0;
|
|
}
|
|
++Main.tileFrameCounter[336];
|
|
if (Main.tileFrameCounter[336] >= 5)
|
|
{
|
|
Main.tileFrameCounter[336] = 0;
|
|
++Main.tileFrame[336];
|
|
if (Main.tileFrame[336] > 3)
|
|
Main.tileFrame[336] = 0;
|
|
}
|
|
++Main.tileFrameCounter[328];
|
|
if (Main.tileFrameCounter[328] >= 5)
|
|
{
|
|
Main.tileFrameCounter[328] = 0;
|
|
++Main.tileFrame[328];
|
|
if (Main.tileFrame[328] > 7)
|
|
Main.tileFrame[328] = 0;
|
|
}
|
|
++Main.tileFrameCounter[329];
|
|
if (Main.tileFrameCounter[329] >= 5)
|
|
{
|
|
Main.tileFrameCounter[329] = 0;
|
|
++Main.tileFrame[329];
|
|
if (Main.tileFrame[329] > 7)
|
|
Main.tileFrame[329] = 0;
|
|
}
|
|
int num1 = 20;
|
|
if (++Main.tileFrameCounter[507] >= num1 * 8)
|
|
Main.tileFrameCounter[507] = 0;
|
|
if (++Main.tileFrameCounter[508] >= num1 * 8)
|
|
Main.tileFrameCounter[508] = 0;
|
|
for (int index = 340; index <= 344; ++index)
|
|
{
|
|
++Main.tileFrameCounter[index];
|
|
if (Main.tileFrameCounter[index] >= 5)
|
|
{
|
|
Main.tileFrameCounter[index] = 0;
|
|
++Main.tileFrame[index];
|
|
if (Main.tileFrame[index] > 3)
|
|
Main.tileFrame[index] = 0;
|
|
}
|
|
}
|
|
++Main.tileFrameCounter[351];
|
|
if (Main.tileFrameCounter[351] >= 5)
|
|
{
|
|
Main.tileFrameCounter[351] = 0;
|
|
++Main.tileFrame[351];
|
|
if (Main.tileFrame[351] > 2)
|
|
Main.tileFrame[351] = 0;
|
|
}
|
|
++Main.tileFrameCounter[354];
|
|
if (Main.tileFrameCounter[354] >= 5)
|
|
{
|
|
Main.tileFrameCounter[354] = 0;
|
|
++Main.tileFrame[354];
|
|
if (Main.tileFrame[354] >= 8)
|
|
Main.tileFrame[354] = 0;
|
|
}
|
|
Main.tileFrame[355] = Main.tileFrame[354];
|
|
++Main.tileFrameCounter[377];
|
|
if (Main.tileFrameCounter[377] >= 5)
|
|
{
|
|
Main.tileFrameCounter[377] = 0;
|
|
++Main.tileFrame[377];
|
|
if (Main.tileFrame[377] >= 4)
|
|
Main.tileFrame[377] = 0;
|
|
}
|
|
++Main.tileFrameCounter[379];
|
|
if (Main.tileFrameCounter[379] >= 10)
|
|
{
|
|
Main.tileFrameCounter[379] = 0;
|
|
++Main.tileFrame[379];
|
|
if (Main.tileFrame[379] >= 4)
|
|
Main.tileFrame[379] = 0;
|
|
}
|
|
if (++Main.tileFrameCounter[390] >= 8)
|
|
{
|
|
Main.tileFrameCounter[390] = 0;
|
|
if (++Main.tileFrame[390] >= 7)
|
|
Main.tileFrame[390] = 0;
|
|
}
|
|
if (++Main.tileFrameCounter[228] >= 5)
|
|
{
|
|
Main.tileFrameCounter[228] = 0;
|
|
if (++Main.tileFrame[228] >= 3)
|
|
Main.tileFrame[228] = 0;
|
|
}
|
|
if (++Main.tileFrameCounter[405] >= 5)
|
|
{
|
|
Main.tileFrameCounter[405] = 0;
|
|
if (++Main.tileFrame[405] >= 8)
|
|
Main.tileFrame[405] = 0;
|
|
}
|
|
if (++Main.tileFrameCounter[406] >= 8)
|
|
{
|
|
Main.tileFrameCounter[406] = 0;
|
|
if (++Main.tileFrame[406] >= 6)
|
|
Main.tileFrame[406] = 0;
|
|
}
|
|
if (++Main.tileFrameCounter[452] >= 5)
|
|
{
|
|
Main.tileFrameCounter[452] = 0;
|
|
if (++Main.tileFrame[452] >= 15)
|
|
Main.tileFrame[452] = 0;
|
|
}
|
|
if (++Main.tileFrameCounter[455] >= 5)
|
|
{
|
|
Main.tileFrameCounter[455] = 0;
|
|
if (++Main.tileFrame[455] >= 6)
|
|
Main.tileFrame[455] = 0;
|
|
}
|
|
if (++Main.tileFrameCounter[499] >= 5)
|
|
{
|
|
Main.tileFrameCounter[499] = 0;
|
|
if (++Main.tileFrame[499] >= 8)
|
|
Main.tileFrame[499] = 0;
|
|
}
|
|
if (++Main.tileFrameCounter[129] >= 8)
|
|
{
|
|
Main.tileFrameCounter[129] = 0;
|
|
if (++Main.tileFrame[129] >= 6)
|
|
Main.tileFrame[129] = 0;
|
|
}
|
|
Main.tileFrameCounter[453] += WorldGen.gen ? 0 : Main.rand.Next(3);
|
|
if (++Main.tileFrameCounter[453] >= 60)
|
|
Main.tileFrameCounter[453] = 0;
|
|
if (++Main.tileFrame[412] >= 240)
|
|
Main.tileFrame[412] = 0;
|
|
Main.tileFrameCounter[456] += WorldGen.gen ? 0 : Main.rand.Next(3);
|
|
if (++Main.tileFrameCounter[456] >= 80)
|
|
Main.tileFrameCounter[456] = 0;
|
|
if (++Main.tileFrame[456] >= 240)
|
|
Main.tileFrame[456] = 0;
|
|
if (++Main.tileFrameCounter[410] >= 8)
|
|
{
|
|
Main.tileFrameCounter[410] = 0;
|
|
if (++Main.tileFrame[410] >= 8)
|
|
Main.tileFrame[410] = 0;
|
|
}
|
|
if (++Main.tileFrameCounter[480] >= 8)
|
|
{
|
|
Main.tileFrameCounter[480] = 0;
|
|
if (++Main.tileFrame[480] >= 8)
|
|
Main.tileFrame[480] = 0;
|
|
}
|
|
if (++Main.tileFrameCounter[509] >= 8)
|
|
{
|
|
Main.tileFrameCounter[509] = 0;
|
|
if (++Main.tileFrame[509] >= 8)
|
|
Main.tileFrame[509] = 0;
|
|
}
|
|
if (++Main.tileFrameCounter[421] >= 4)
|
|
{
|
|
Main.tileFrameCounter[421] = 0;
|
|
if (++Main.tileFrame[421] >= 4)
|
|
Main.tileFrame[421] = 0;
|
|
}
|
|
if (++Main.tileFrameCounter[422] >= 4)
|
|
{
|
|
Main.tileFrameCounter[422] = 0;
|
|
if (--Main.tileFrame[422] < 0)
|
|
Main.tileFrame[422] = 3;
|
|
}
|
|
if (++Main.tileFrameCounter[463] >= 10)
|
|
{
|
|
Main.tileFrameCounter[463] = 0;
|
|
if (++Main.tileFrame[463] >= 6)
|
|
Main.tileFrame[463] = 0;
|
|
}
|
|
if (++Main.tileFrameCounter[464] >= 5)
|
|
{
|
|
Main.tileFrameCounter[464] = 0;
|
|
if (++Main.tileFrame[464] >= 23)
|
|
Main.tileFrame[464] = 0;
|
|
}
|
|
if (++Main.tileFrameCounter[485] >= 20)
|
|
Main.tileFrameCounter[485] = 0;
|
|
if (++Main.tileFrameCounter[491] >= 40)
|
|
Main.tileFrameCounter[491] = 0;
|
|
if (++Main.tileFrameCounter[564] >= 5)
|
|
{
|
|
Main.tileFrameCounter[564] = 0;
|
|
++Main.tileFrame[564];
|
|
if (Main.tileFrame[564] >= 36)
|
|
Main.tileFrame[564] = 0;
|
|
}
|
|
if (++Main.tileFrameCounter[593] >= 5)
|
|
{
|
|
Main.tileFrameCounter[593] = 0;
|
|
++Main.tileFrame[593];
|
|
if (Main.tileFrame[593] >= 9)
|
|
Main.tileFrame[593] = 5;
|
|
}
|
|
if (++Main.tileFrameCounter[594] >= 5)
|
|
{
|
|
Main.tileFrameCounter[594] = 0;
|
|
++Main.tileFrame[594];
|
|
if (Main.tileFrame[594] >= 9)
|
|
Main.tileFrame[594] = 5;
|
|
}
|
|
if (++Main.tileFrameCounter[614] >= 5)
|
|
{
|
|
Main.tileFrameCounter[614] = 0;
|
|
++Main.tileFrame[614];
|
|
if (Main.tileFrame[614] >= 6)
|
|
Main.tileFrame[614] = 0;
|
|
}
|
|
if (++Main.tileFrameCounter[565] >= 4)
|
|
{
|
|
Main.tileFrameCounter[565] = 0;
|
|
++Main.tileFrame[565];
|
|
if (Main.tileFrame[565] >= 5)
|
|
Main.tileFrame[565] = 0;
|
|
}
|
|
if (++Main.tileFrameCounter[572] >= 8)
|
|
{
|
|
Main.tileFrameCounter[572] = 0;
|
|
if (++Main.tileFrame[572] >= 6)
|
|
Main.tileFrame[572] = 0;
|
|
}
|
|
if (++Main.tileFrameCounter[597] >= 64)
|
|
Main.tileFrameCounter[597] = 0;
|
|
int num2 = (int) MathHelper.Clamp((float) Math.Floor((double) Math.Abs(Main.WindForVisuals) * 10.0) * (float) Math.Sign(Main.WindForVisuals), -5f, 5f);
|
|
Main.tileFrameCounter[489] += num2;
|
|
Main.tileFrameCounter[489] %= 320;
|
|
if (Main.tileFrameCounter[489] < 0)
|
|
Main.tileFrameCounter[489] += 320;
|
|
Main.AnimateTiles_WeatherVane();
|
|
int num3 = (int) MathHelper.Clamp((float) Math.Floor((double) Math.Abs(Main.WindForVisuals) * 10.0) * (float) Math.Sign(Main.WindForVisuals), -5f, 5f);
|
|
Main.tileFrameCounter[493] += num3;
|
|
Main.tileFrameCounter[493] %= 120;
|
|
if (Main.tileFrameCounter[493] < 0)
|
|
Main.tileFrameCounter[493] += 120;
|
|
Main.AnimateTiles_CritterCages();
|
|
}
|
|
|
|
private static void AnimateTiles_WeatherVane()
|
|
{
|
|
int num1 = Math.Sign(Main.WindForVisuals);
|
|
int num2 = (int) MathHelper.Clamp((float) Math.Floor((double) Math.Abs(Main.WindForVisuals) * 10.0), -5f, 5f);
|
|
int num3 = 6;
|
|
Main.tileFrameCounter[490] += num2;
|
|
if (Main.tileFrameCounter[490] < num3)
|
|
return;
|
|
Main.tileFrameCounter[490] -= num3 * Main.tileFrameCounter[490];
|
|
if ((Main.tileFrame[490] != 0 || num1 != -1 ? (Main.tileFrame[490] != 6 ? 0 : (num1 == 1 ? 1 : 0)) : 1) == 0)
|
|
{
|
|
if (++Main.tileFrame[490] < 12)
|
|
return;
|
|
Main.tileFrame[490] = 0;
|
|
Main.weatherVaneBobframe = 0;
|
|
}
|
|
else
|
|
{
|
|
if ((double) Main.rand.NextFloat() >= (double) Math.Abs(Main.WindForVisuals) * 0.5 || ++Main.weatherVaneBobframe != 8)
|
|
return;
|
|
Main.weatherVaneBobframe = 0;
|
|
}
|
|
}
|
|
|
|
private static void DoUpdate_AnimateWalls()
|
|
{
|
|
++Main.wallFrameCounter[136];
|
|
if (Main.wallFrameCounter[136] >= (byte) 5)
|
|
{
|
|
Main.wallFrameCounter[136] = (byte) 0;
|
|
++Main.wallFrame[136];
|
|
if (Main.wallFrame[136] > (byte) 7)
|
|
Main.wallFrame[136] = (byte) 0;
|
|
}
|
|
++Main.wallFrameCounter[137];
|
|
if (Main.wallFrameCounter[137] >= (byte) 10)
|
|
{
|
|
Main.wallFrameCounter[137] = (byte) 0;
|
|
++Main.wallFrame[137];
|
|
if (Main.wallFrame[137] > (byte) 7)
|
|
Main.wallFrame[137] = (byte) 0;
|
|
}
|
|
int index1 = 226;
|
|
++Main.wallFrameCounter[index1];
|
|
if (Main.wallFrameCounter[index1] >= (byte) 10)
|
|
{
|
|
Main.wallFrameCounter[index1] = (byte) 0;
|
|
++Main.wallFrame[index1];
|
|
if (Main.wallFrame[index1] > (byte) 7)
|
|
Main.wallFrame[index1] = (byte) 0;
|
|
}
|
|
int index2 = 227;
|
|
++Main.wallFrameCounter[index2];
|
|
if (Main.wallFrameCounter[index2] >= (byte) 5)
|
|
{
|
|
Main.wallFrameCounter[index2] = (byte) 0;
|
|
++Main.wallFrame[index2];
|
|
if (Main.wallFrame[index2] > (byte) 7)
|
|
Main.wallFrame[index2] = (byte) 0;
|
|
}
|
|
int index3 = 225;
|
|
++Main.wallFrameCounter[index3];
|
|
if (Main.wallFrameCounter[index3] >= (byte) 5)
|
|
{
|
|
Main.wallFrameCounter[index3] = (byte) 0;
|
|
++Main.wallFrame[index3];
|
|
if (Main.wallFrame[index3] > (byte) 1)
|
|
Main.wallFrame[index3] = (byte) 0;
|
|
}
|
|
++Main.wallFrameCounter[172];
|
|
if (Main.wallFrameCounter[172] >= (byte) 10)
|
|
{
|
|
Main.wallFrameCounter[172] = (byte) 0;
|
|
++Main.wallFrame[172];
|
|
if (Main.wallFrame[172] > (byte) 7)
|
|
Main.wallFrame[172] = (byte) 0;
|
|
}
|
|
++Main.wallFrameCounter[168];
|
|
if (Main.wallFrameCounter[168] >= (byte) 5)
|
|
{
|
|
Main.wallFrameCounter[168] = (byte) 0;
|
|
++Main.wallFrame[168];
|
|
if (Main.wallFrame[168] > (byte) 7)
|
|
Main.wallFrame[168] = (byte) 0;
|
|
}
|
|
++Main.wallFrameCounter[169];
|
|
if (Main.wallFrameCounter[169] >= (byte) 5)
|
|
{
|
|
Main.wallFrameCounter[169] = (byte) 0;
|
|
++Main.wallFrame[169];
|
|
if (Main.wallFrame[169] > (byte) 7)
|
|
Main.wallFrame[169] = (byte) 0;
|
|
}
|
|
int num1 = 20;
|
|
if ((int) ++Main.wallFrameCounter[242] >= num1 * 8)
|
|
Main.wallFrameCounter[242] = (byte) 0;
|
|
if ((int) ++Main.wallFrameCounter[243] >= num1 * 8)
|
|
Main.wallFrameCounter[243] = (byte) 0;
|
|
++Main.wallFrameCounter[144];
|
|
int num2 = 5;
|
|
int num3 = 10;
|
|
if ((int) Main.wallFrameCounter[144] < num2)
|
|
Main.wallFrame[144] = (byte) 0;
|
|
else if ((int) Main.wallFrameCounter[144] < num2)
|
|
Main.wallFrame[144] = (byte) 1;
|
|
else if ((int) Main.wallFrameCounter[144] < num2 * 2)
|
|
Main.wallFrame[144] = (byte) 2;
|
|
else if ((int) Main.wallFrameCounter[144] < num2 * 3)
|
|
Main.wallFrame[144] = (byte) 3;
|
|
else if ((int) Main.wallFrameCounter[144] < num2 * 4)
|
|
Main.wallFrame[144] = (byte) 4;
|
|
else if ((int) Main.wallFrameCounter[144] < num2 * 5)
|
|
Main.wallFrame[144] = (byte) 5;
|
|
else if ((int) Main.wallFrameCounter[144] < num2 * 6)
|
|
Main.wallFrame[144] = (byte) 6;
|
|
else if ((int) Main.wallFrameCounter[144] < num2 * 7)
|
|
Main.wallFrame[144] = (byte) 7;
|
|
else if ((int) Main.wallFrameCounter[144] < num2 * (8 + num3))
|
|
Main.wallFrame[144] = (byte) 8;
|
|
else if ((int) Main.wallFrameCounter[144] < num2 * (9 + num3))
|
|
Main.wallFrame[144] = (byte) 7;
|
|
else if ((int) Main.wallFrameCounter[144] < num2 * (10 + num3))
|
|
Main.wallFrame[144] = (byte) 6;
|
|
else if ((int) Main.wallFrameCounter[144] < num2 * (11 + num3))
|
|
Main.wallFrame[144] = (byte) 5;
|
|
else if ((int) Main.wallFrameCounter[144] < num2 * (12 + num3))
|
|
Main.wallFrame[144] = (byte) 4;
|
|
else if ((int) Main.wallFrameCounter[144] < num2 * (13 + num3))
|
|
Main.wallFrame[144] = (byte) 3;
|
|
else if ((int) Main.wallFrameCounter[144] < num2 * (14 + num3))
|
|
Main.wallFrame[144] = (byte) 2;
|
|
else if ((int) Main.wallFrameCounter[144] < num2 * (15 + num3))
|
|
{
|
|
Main.wallFrame[144] = (byte) 1;
|
|
}
|
|
else
|
|
{
|
|
Main.wallFrame[144] = (byte) 0;
|
|
if ((int) Main.wallFrameCounter[144] <= num2 * (16 + num3 * 2))
|
|
return;
|
|
Main.wallFrameCounter[144] = (byte) 0;
|
|
}
|
|
}
|
|
|
|
private void DoUpdate_AnimateWaterfalls()
|
|
{
|
|
Main.wFrCounter += Main.windSpeedCurrent * 2f;
|
|
if ((double) Main.wFrCounter > 4.0)
|
|
{
|
|
Main.wFrCounter = 0.0f;
|
|
++Main.wFrame;
|
|
}
|
|
if ((double) Main.wFrCounter < 0.0)
|
|
{
|
|
Main.wFrCounter = 4f;
|
|
--Main.wFrame;
|
|
}
|
|
if ((double) Main.wFrame > 16.0)
|
|
Main.wFrame = 1f;
|
|
if ((double) Main.wFrame < 1.0)
|
|
Main.wFrame = 16f;
|
|
this.waterfallManager.UpdateFrame();
|
|
}
|
|
|
|
private static void DoUpdate_AnimateVisualPlayerAura()
|
|
{
|
|
if (Main.gFadeDir == (byte) 1)
|
|
{
|
|
Main.gFader += 0.1f;
|
|
Main.gFade = (byte) Main.gFader;
|
|
if (Main.gFade <= (byte) 150)
|
|
return;
|
|
Main.gFadeDir = (byte) 0;
|
|
}
|
|
else
|
|
{
|
|
Main.gFader -= 0.1f;
|
|
Main.gFade = (byte) Main.gFader;
|
|
if (Main.gFade >= (byte) 100)
|
|
return;
|
|
Main.gFadeDir = (byte) 1;
|
|
}
|
|
}
|
|
|
|
private void DoUpdate_AnimateDiscoRGB()
|
|
{
|
|
int num = 7;
|
|
if (this.DiscoStyle == 0)
|
|
{
|
|
Main.DiscoG += num;
|
|
if (Main.DiscoG >= (int) byte.MaxValue)
|
|
{
|
|
Main.DiscoG = (int) byte.MaxValue;
|
|
++this.DiscoStyle;
|
|
}
|
|
}
|
|
if (this.DiscoStyle == 1)
|
|
{
|
|
Main.DiscoR -= num;
|
|
if (Main.DiscoR <= 0)
|
|
{
|
|
Main.DiscoR = 0;
|
|
++this.DiscoStyle;
|
|
}
|
|
}
|
|
if (this.DiscoStyle == 2)
|
|
{
|
|
Main.DiscoB += num;
|
|
if (Main.DiscoB >= (int) byte.MaxValue)
|
|
{
|
|
Main.DiscoB = (int) byte.MaxValue;
|
|
++this.DiscoStyle;
|
|
}
|
|
}
|
|
if (this.DiscoStyle == 3)
|
|
{
|
|
Main.DiscoG -= num;
|
|
if (Main.DiscoG <= 0)
|
|
{
|
|
Main.DiscoG = 0;
|
|
++this.DiscoStyle;
|
|
}
|
|
}
|
|
if (this.DiscoStyle == 4)
|
|
{
|
|
Main.DiscoR += num;
|
|
if (Main.DiscoR >= (int) byte.MaxValue)
|
|
{
|
|
Main.DiscoR = (int) byte.MaxValue;
|
|
++this.DiscoStyle;
|
|
}
|
|
}
|
|
if (this.DiscoStyle != 5)
|
|
return;
|
|
Main.DiscoB -= num;
|
|
if (Main.DiscoB > 0)
|
|
return;
|
|
Main.DiscoB = 0;
|
|
this.DiscoStyle = 0;
|
|
}
|
|
|
|
private static void DoUpdate_AnimateBackgrounds()
|
|
{
|
|
Main.DoUpdate_AnimateBackgrounds_UpdateForest(0, Main.treeMntBGSet1);
|
|
Main.DoUpdate_AnimateBackgrounds_UpdateForest(10, Main.treeMntBGSet2);
|
|
Main.DoUpdate_AnimateBackgrounds_UpdateForest(11, Main.treeMntBGSet3);
|
|
Main.DoUpdate_AnimateBackgrounds_UpdateForest(12, Main.treeMntBGSet4);
|
|
}
|
|
|
|
private static void DoUpdate_AnimateBackgrounds_UpdateForest(int bgIndex, int[] bgSet)
|
|
{
|
|
if (bgSet[1] == 94 || bgSet[1] >= 114 && bgSet[1] <= 116)
|
|
{
|
|
++Main.bgFrameCounter[bgIndex];
|
|
if (Main.bgFrameCounter[bgIndex] >= 6)
|
|
{
|
|
Main.bgFrameCounter[bgIndex] = 0;
|
|
++Main.bgFrame[bgIndex];
|
|
if (Main.bgFrame[bgIndex] >= 4)
|
|
Main.bgFrame[bgIndex] = 0;
|
|
}
|
|
bgSet[1] = Main.bgFrame[bgIndex] != 0 ? (Main.bgFrame[bgIndex] != 1 ? (Main.bgFrame[bgIndex] != 2 ? 116 : 115) : 114) : 94;
|
|
bgSet[0] = Main.bgFrame[bgIndex] != 0 ? (Main.bgFrame[bgIndex] != 1 ? (Main.bgFrame[bgIndex] != 2 ? 170 : 169) : 168) : 93;
|
|
}
|
|
if (bgSet[1] < 180 || bgSet[1] > 183)
|
|
return;
|
|
++Main.bgFrameCounter[bgIndex];
|
|
if (Main.bgFrameCounter[bgIndex] >= 6)
|
|
{
|
|
Main.bgFrameCounter[bgIndex] = 0;
|
|
++Main.bgFrame[bgIndex];
|
|
if (Main.bgFrame[bgIndex] >= 4)
|
|
Main.bgFrame[bgIndex] = 0;
|
|
}
|
|
if (Main.bgFrame[bgIndex] == 0)
|
|
bgSet[1] = 180;
|
|
else if (Main.bgFrame[bgIndex] == 1)
|
|
bgSet[1] = 181;
|
|
else if (Main.bgFrame[bgIndex] == 2)
|
|
bgSet[1] = 182;
|
|
else
|
|
bgSet[1] = 183;
|
|
}
|
|
|
|
private static void DoUpdate_AutoSave()
|
|
{
|
|
if (!Main.gameMenu && Main.netMode == 1)
|
|
{
|
|
if (!Main.saveTime.IsRunning)
|
|
Main.saveTime.Start();
|
|
if (Main.saveTime.ElapsedMilliseconds <= 300000L)
|
|
return;
|
|
Main.saveTime.Reset();
|
|
WorldGen.saveToonWhilePlaying();
|
|
}
|
|
else if (!Main.gameMenu && (Main.autoSave || Main.netMode == 2))
|
|
{
|
|
if (!Main.saveTime.IsRunning)
|
|
Main.saveTime.Start();
|
|
if (Main.saveTime.ElapsedMilliseconds <= 600000L)
|
|
return;
|
|
Main.saveTime.Reset();
|
|
if (Main.netMode != 2)
|
|
WorldGen.saveToonWhilePlaying();
|
|
WorldGen.saveAndPlay();
|
|
}
|
|
else
|
|
{
|
|
if (!Main.saveTime.IsRunning)
|
|
return;
|
|
Main.saveTime.Stop();
|
|
}
|
|
}
|
|
|
|
private static void UpdateSettingUnlocks()
|
|
{
|
|
if (Main.netMode == 2 || Main.dedServ || !Main.hardMode || Main.SettingsUnlock_WorldEvil)
|
|
return;
|
|
Main.SettingsUnlock_WorldEvil = true;
|
|
Main.SaveSettings();
|
|
}
|
|
|
|
public static void InputTextSign()
|
|
{
|
|
if (IngameFancyUI.CanShowVirtualKeyboard(1) && UIVirtualKeyboard.KeyboardContext == 1)
|
|
return;
|
|
PlayerInput.WritingText = true;
|
|
Main.instance.HandleIME();
|
|
Main.npcChatText = Main.GetInputText(Main.npcChatText, true);
|
|
if (Main.inputTextEnter)
|
|
{
|
|
byte[] bytes = new byte[1]{ (byte) 10 };
|
|
Main.npcChatText += Encoding.ASCII.GetString(bytes);
|
|
}
|
|
else
|
|
{
|
|
if (!Main.inputTextEscape)
|
|
return;
|
|
Main.InputTextSignCancel();
|
|
}
|
|
}
|
|
|
|
public static void InputTextChest()
|
|
{
|
|
if (IngameFancyUI.CanShowVirtualKeyboard(2) && UIVirtualKeyboard.KeyboardContext == 2)
|
|
return;
|
|
Main.npcChatText = Main.GetInputText(Main.npcChatText);
|
|
if (Main.inputTextEnter)
|
|
{
|
|
ChestUI.RenameChestSubmit(Main.player[Main.myPlayer]);
|
|
}
|
|
else
|
|
{
|
|
if (!Main.inputTextEscape)
|
|
return;
|
|
ChestUI.RenameChestCancel();
|
|
}
|
|
}
|
|
|
|
public static void InputTextSignCancel()
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
Main.editSign = false;
|
|
Main.blockKey = Microsoft.Xna.Framework.Input.Keys.Escape.ToString();
|
|
UIVirtualKeyboard.CacheCancelledInput(1);
|
|
Main.npcChatText = Main.sign[Main.player[Main.myPlayer].sign].text;
|
|
}
|
|
|
|
private static void UpdateMenu()
|
|
{
|
|
if (WorldGen.drunkWorldGen)
|
|
{
|
|
Main.screenPosition.X -= 20f;
|
|
if (WorldGen.drunkWorldGenText)
|
|
{
|
|
Main.numClouds = Main.rand.Next(100, 200);
|
|
Main.statusText = string.Concat((object) Main.rand.Next(999999999));
|
|
for (int index = 0; index < 3; ++index)
|
|
{
|
|
if (Main.rand.Next(2) == 0)
|
|
Main.statusText += (string) (object) Main.rand.Next(999999999);
|
|
}
|
|
}
|
|
}
|
|
Main.gamePaused = false;
|
|
Main.thunderDelay = 0;
|
|
Main.lightning = 0.0f;
|
|
Main.lightningSpeed = 0.0f;
|
|
Main.GraveyardVisualIntensity = 0.0f;
|
|
InGameNotificationsTracker.Clear();
|
|
Main.playerInventory = false;
|
|
Main.exitScale = 0.8f;
|
|
switch (Main.netMode)
|
|
{
|
|
case 0:
|
|
if ((!Main.instance.IsActive ? 0 : (Main.hasFocus ? 1 : 0)) != 0 && !Main.dayTime && (Main.rand.Next(12) == 0 || WorldGen.drunkWorldGen))
|
|
{
|
|
int index = Main.rand.Next(Main.numStars);
|
|
if (Main.star[index] != null && !Main.star[index].hidden && !Main.star[index].falling)
|
|
Main.star[index].Fall();
|
|
}
|
|
if (Main.gameMenu)
|
|
{
|
|
if (WorldGen.gen)
|
|
Main.lockMenuBGChange = true;
|
|
else if (Main.menuMode == 0)
|
|
Main.lockMenuBGChange = false;
|
|
if (!Main.lockMenuBGChange)
|
|
{
|
|
if (Main.dayTime)
|
|
Main.menuBGChangedDay = false;
|
|
else if (!Main.menuBGChangedDay && Main.time >= 16200.0)
|
|
{
|
|
Main.menuBGChangedDay = true;
|
|
int corruptBg = WorldGen.corruptBG;
|
|
WorldGen.RandomizeBackgrounds(Main.rand);
|
|
if (Main.treeBGSet1[0] == 173)
|
|
WorldGen.RandomizeBackgrounds(Main.rand);
|
|
if (Main.treeBGSet1[0] == 173)
|
|
WorldGen.RandomizeBackgrounds(Main.rand);
|
|
WorldGen.setBG(1, corruptBg);
|
|
}
|
|
if (!Main.dayTime)
|
|
Main.menuBGChangedNight = false;
|
|
else if (!Main.menuBGChangedNight && Main.time >= 27000.0)
|
|
{
|
|
Main.moonType = Main.rand.Next(9);
|
|
Main.menuBGChangedNight = true;
|
|
int treeBg1 = WorldGen.treeBG1;
|
|
WorldGen.RandomizeBackgrounds(Main.rand);
|
|
WorldGen.setBG(0, treeBg1);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Main.menuBGChangedDay = true;
|
|
Main.menuBGChangedNight = true;
|
|
}
|
|
}
|
|
if (Main.alreadyGrabbingSunOrMoon)
|
|
break;
|
|
if (WorldGen.drunkWorldGen)
|
|
{
|
|
Main.time -= 6.0;
|
|
if (Main.dayTime)
|
|
Main.time -= 1000.0;
|
|
if (Main.time < 0.0)
|
|
{
|
|
Main.time = 32400.0;
|
|
Main.dayTime = false;
|
|
}
|
|
}
|
|
else if (Main.dayTime)
|
|
Main.time += 576.0 / 17.0;
|
|
else
|
|
Main.time += 216.0 / 7.0;
|
|
if (!Main.dayTime)
|
|
{
|
|
if (Main.time <= 32400.0)
|
|
break;
|
|
Main.bloodMoon = false;
|
|
Main.time = 0.0;
|
|
Main.dayTime = true;
|
|
++Main.moonPhase;
|
|
if (Main.moonPhase < 7)
|
|
break;
|
|
Main.moonPhase = 0;
|
|
break;
|
|
}
|
|
if (Main.time <= 54000.0)
|
|
break;
|
|
Main.time = 0.0;
|
|
Main.dayTime = false;
|
|
break;
|
|
case 1:
|
|
Main.UpdateTime();
|
|
break;
|
|
}
|
|
}
|
|
|
|
public static void clrInput() => Main.keyCount = 0;
|
|
|
|
[DllImport("user32.dll", CharSet = CharSet.Auto)]
|
|
public static extern short GetKeyState(int keyCode);
|
|
|
|
public static string GetInputText(string oldString, bool allowMultiLine = false)
|
|
{
|
|
if (!Main.hasFocus)
|
|
return oldString;
|
|
Main.inputTextEnter = false;
|
|
Main.inputTextEscape = false;
|
|
string str1 = oldString;
|
|
string newKeys = "";
|
|
if (str1 == null)
|
|
str1 = "";
|
|
bool flag1 = false;
|
|
if (Main.inputText.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.LeftControl) || Main.inputText.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.RightControl))
|
|
{
|
|
if (Main.inputText.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.Z) && !Main.oldInputText.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.Z))
|
|
str1 = "";
|
|
else if (Main.inputText.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.X) && !Main.oldInputText.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.X))
|
|
{
|
|
Platform.Get<IClipboard>().Value = oldString;
|
|
str1 = "";
|
|
}
|
|
else if (Main.inputText.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.C) && !Main.oldInputText.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.C) || Main.inputText.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.Insert) && !Main.oldInputText.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.Insert))
|
|
Platform.Get<IClipboard>().Value = oldString;
|
|
else if (Main.inputText.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.V) && !Main.oldInputText.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.V))
|
|
newKeys = Main.PasteTextIn(allowMultiLine, newKeys);
|
|
}
|
|
else
|
|
{
|
|
if (Main.inputText.PressingShift())
|
|
{
|
|
if (Main.inputText.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.Delete) && !Main.oldInputText.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.Delete))
|
|
{
|
|
Platform.Get<IClipboard>().Value = oldString;
|
|
str1 = "";
|
|
}
|
|
if (Main.inputText.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.Insert) && !Main.oldInputText.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.Insert))
|
|
newKeys = Main.PasteTextIn(allowMultiLine, newKeys);
|
|
}
|
|
for (int index = 0; index < Main.keyCount; ++index)
|
|
{
|
|
int num = Main.keyInt[index];
|
|
string str2 = Main.keyString[index];
|
|
switch (num)
|
|
{
|
|
case 13:
|
|
Main.inputTextEnter = true;
|
|
break;
|
|
case 27:
|
|
Main.inputTextEscape = true;
|
|
break;
|
|
default:
|
|
if (num >= 32 && num != (int) sbyte.MaxValue)
|
|
{
|
|
newKeys += str2;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
Main.keyCount = 0;
|
|
string text = str1 + newKeys;
|
|
Main.oldInputText = Main.inputText;
|
|
Main.inputText = Keyboard.GetState();
|
|
Microsoft.Xna.Framework.Input.Keys[] pressedKeys1 = Main.inputText.GetPressedKeys();
|
|
Microsoft.Xna.Framework.Input.Keys[] pressedKeys2 = Main.oldInputText.GetPressedKeys();
|
|
if (Main.inputText.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.Back) && Main.oldInputText.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.Back))
|
|
{
|
|
Main.backSpaceRate -= 0.05f;
|
|
if ((double) Main.backSpaceRate < 0.0)
|
|
Main.backSpaceRate = 0.0f;
|
|
if (Main.backSpaceCount <= 0)
|
|
{
|
|
Main.backSpaceCount = (int) Math.Round((double) Main.backSpaceRate);
|
|
flag1 = true;
|
|
}
|
|
--Main.backSpaceCount;
|
|
}
|
|
else
|
|
{
|
|
Main.backSpaceRate = 7f;
|
|
Main.backSpaceCount = 15;
|
|
}
|
|
for (int index1 = 0; index1 < pressedKeys1.Length; ++index1)
|
|
{
|
|
bool flag2 = true;
|
|
for (int index2 = 0; index2 < pressedKeys2.Length; ++index2)
|
|
{
|
|
if (pressedKeys1[index1] == pressedKeys2[index2])
|
|
flag2 = false;
|
|
}
|
|
if (string.Concat((object) pressedKeys1[index1]) == "Back" && flag2 | flag1 && text.Length > 0)
|
|
{
|
|
TextSnippet[] array = ChatManager.ParseMessage(text, Microsoft.Xna.Framework.Color.White).ToArray();
|
|
text = !array[array.Length - 1].DeleteWhole ? text.Substring(0, text.Length - 1) : text.Substring(0, text.Length - array[array.Length - 1].TextOriginal.Length);
|
|
}
|
|
}
|
|
return text;
|
|
}
|
|
|
|
private static string PasteTextIn(bool allowMultiLine, string newKeys)
|
|
{
|
|
newKeys = !allowMultiLine ? newKeys + Platform.Get<IClipboard>().Value : newKeys + Platform.Get<IClipboard>().MultiLineValue;
|
|
return newKeys;
|
|
}
|
|
|
|
public void MouseTextHackZoom(string text, string buffTooltip = null) => this.MouseTextHackZoom(text, 0, buffTooltip: buffTooltip);
|
|
|
|
public void MouseTextHackZoom(string text, int itemRarity, byte diff = 0, string buffTooltip = null) => this.MouseText(text, buffTooltip, itemRarity, diff);
|
|
|
|
public void MouseTextNoOverride(
|
|
string cursorText,
|
|
int rare = 0,
|
|
byte diff = 0,
|
|
int hackedMouseX = -1,
|
|
int hackedMouseY = -1,
|
|
int hackedScreenWidth = -1,
|
|
int hackedScreenHeight = -1,
|
|
int pushWidthX = 0)
|
|
{
|
|
this.MouseText(cursorText, (string) null, rare, diff, hackedMouseX, hackedMouseY, hackedScreenWidth, hackedScreenHeight, pushWidthX, true);
|
|
}
|
|
|
|
public void MouseText(
|
|
string cursorText,
|
|
int rare = 0,
|
|
byte diff = 0,
|
|
int hackedMouseX = -1,
|
|
int hackedMouseY = -1,
|
|
int hackedScreenWidth = -1,
|
|
int hackedScreenHeight = -1,
|
|
int pushWidthX = 0)
|
|
{
|
|
this.MouseText(cursorText, (string) null, rare, diff, hackedMouseX, hackedMouseY, hackedScreenWidth, hackedScreenHeight, pushWidthX);
|
|
}
|
|
|
|
public void MouseText(
|
|
string cursorText,
|
|
string buffTooltip,
|
|
int rare = 0,
|
|
byte diff = 0,
|
|
int hackedMouseX = -1,
|
|
int hackedMouseY = -1,
|
|
int hackedScreenWidth = -1,
|
|
int hackedScreenHeight = -1,
|
|
int pushWidthX = 0,
|
|
bool noOverride = false)
|
|
{
|
|
if (this._mouseTextCache.noOverride)
|
|
return;
|
|
this._mouseTextCache = new Main.MouseTextCache()
|
|
{
|
|
noOverride = noOverride,
|
|
isValid = true,
|
|
cursorText = cursorText,
|
|
rare = rare,
|
|
diff = diff,
|
|
X = hackedMouseX,
|
|
Y = hackedMouseY,
|
|
hackedScreenWidth = hackedScreenWidth,
|
|
hackedScreenHeight = hackedScreenHeight,
|
|
buffTooltip = buffTooltip
|
|
};
|
|
}
|
|
|
|
private void MouseTextInner(Main.MouseTextCache info)
|
|
{
|
|
string cursorText = info.cursorText;
|
|
int rare = info.rare;
|
|
byte diff = info.diff;
|
|
int x = info.X;
|
|
int y = info.Y;
|
|
int hackedScreenWidth = info.hackedScreenWidth;
|
|
int hackedScreenHeight = info.hackedScreenHeight;
|
|
if (this.mouseNPCType > -1 || cursorText == null)
|
|
return;
|
|
int X = Main.mouseX + 14;
|
|
int Y = Main.mouseY + 14;
|
|
if (x != -1 && y != -1)
|
|
{
|
|
X = x + 10;
|
|
Y = y + 10;
|
|
}
|
|
if (Main.ThickMouse)
|
|
{
|
|
X += 6;
|
|
Y += 6;
|
|
}
|
|
if (!Main.mouseItem.IsAir)
|
|
X += 34;
|
|
Microsoft.Xna.Framework.Color color = new Microsoft.Xna.Framework.Color((int) Main.mouseTextColor, (int) Main.mouseTextColor, (int) Main.mouseTextColor, (int) Main.mouseTextColor);
|
|
if (Main.HoverItem.type > 0)
|
|
{
|
|
this.MouseText_DrawItemTooltip(info, rare, diff, X, Y);
|
|
}
|
|
else
|
|
{
|
|
if (info.buffTooltip != null && info.buffTooltip != "")
|
|
this.MouseText_DrawBuffTooltip(info.buffTooltip, ref X, ref Y);
|
|
Vector2 vector2 = FontAssets.MouseText.Value.MeasureString(cursorText);
|
|
if (hackedScreenHeight != -1 && hackedScreenWidth != -1)
|
|
{
|
|
if ((double) X + (double) vector2.X + 4.0 > (double) hackedScreenWidth)
|
|
X = (int) ((double) hackedScreenWidth - (double) vector2.X - 4.0);
|
|
if ((double) Y + (double) vector2.Y + 4.0 > (double) hackedScreenHeight)
|
|
Y = (int) ((double) hackedScreenHeight - (double) vector2.Y - 4.0);
|
|
}
|
|
else
|
|
{
|
|
if ((double) X + (double) vector2.X + 4.0 > (double) Main.screenWidth)
|
|
X = (int) ((double) Main.screenWidth - (double) vector2.X - 4.0);
|
|
if ((double) Y + (double) vector2.Y + 4.0 > (double) Main.screenHeight)
|
|
Y = (int) ((double) Main.screenHeight - (double) vector2.Y - 4.0);
|
|
}
|
|
float num = (float) Main.mouseTextColor / (float) byte.MaxValue;
|
|
Microsoft.Xna.Framework.Color baseColor = new Microsoft.Xna.Framework.Color((int) Main.mouseTextColor, (int) Main.mouseTextColor, (int) Main.mouseTextColor, (int) Main.mouseTextColor);
|
|
if (rare == -13)
|
|
baseColor = new Microsoft.Xna.Framework.Color((int) (byte) ((double) byte.MaxValue * (double) num), (int) (byte) ((double) Main.masterColor * 200.0 * (double) num), 0, (int) Main.mouseTextColor);
|
|
if (rare == -11)
|
|
baseColor = new Microsoft.Xna.Framework.Color((int) (byte) ((double) byte.MaxValue * (double) num), (int) (byte) (175.0 * (double) num), (int) (byte) (0.0 * (double) num), (int) Main.mouseTextColor);
|
|
if (rare == -10)
|
|
baseColor = new Microsoft.Xna.Framework.Color((int) (byte) (65.0 * (double) num), (int) (byte) ((double) byte.MaxValue * (double) num), (int) (byte) (110.0 * (double) num), (int) Main.mouseTextColor);
|
|
if (rare == -1)
|
|
baseColor = new Microsoft.Xna.Framework.Color((int) (byte) (130.0 * (double) num), (int) (byte) (130.0 * (double) num), (int) (byte) (130.0 * (double) num), (int) Main.mouseTextColor);
|
|
if (rare == 1)
|
|
baseColor = new Microsoft.Xna.Framework.Color((int) (byte) (150.0 * (double) num), (int) (byte) (150.0 * (double) num), (int) (byte) ((double) byte.MaxValue * (double) num), (int) Main.mouseTextColor);
|
|
if (rare == 2)
|
|
baseColor = new Microsoft.Xna.Framework.Color((int) (byte) (150.0 * (double) num), (int) (byte) ((double) byte.MaxValue * (double) num), (int) (byte) (150.0 * (double) num), (int) Main.mouseTextColor);
|
|
if (rare == 3)
|
|
baseColor = new Microsoft.Xna.Framework.Color((int) (byte) ((double) byte.MaxValue * (double) num), (int) (byte) (200.0 * (double) num), (int) (byte) (150.0 * (double) num), (int) Main.mouseTextColor);
|
|
if (rare == 4)
|
|
baseColor = new Microsoft.Xna.Framework.Color((int) (byte) ((double) byte.MaxValue * (double) num), (int) (byte) (150.0 * (double) num), (int) (byte) (150.0 * (double) num), (int) Main.mouseTextColor);
|
|
if (rare == 5)
|
|
baseColor = new Microsoft.Xna.Framework.Color((int) (byte) ((double) byte.MaxValue * (double) num), (int) (byte) (150.0 * (double) num), (int) (byte) ((double) byte.MaxValue * (double) num), (int) Main.mouseTextColor);
|
|
if (rare == 6)
|
|
baseColor = new Microsoft.Xna.Framework.Color((int) (byte) (210.0 * (double) num), (int) (byte) (160.0 * (double) num), (int) (byte) ((double) byte.MaxValue * (double) num), (int) Main.mouseTextColor);
|
|
if (rare == 7)
|
|
baseColor = new Microsoft.Xna.Framework.Color((int) (byte) (150.0 * (double) num), (int) (byte) ((double) byte.MaxValue * (double) num), (int) (byte) (10.0 * (double) num), (int) Main.mouseTextColor);
|
|
if (rare == 8)
|
|
baseColor = new Microsoft.Xna.Framework.Color((int) (byte) ((double) byte.MaxValue * (double) num), (int) (byte) ((double) byte.MaxValue * (double) num), (int) (byte) (10.0 * (double) num), (int) Main.mouseTextColor);
|
|
if (rare == 9)
|
|
baseColor = new Microsoft.Xna.Framework.Color((int) (byte) (5.0 * (double) num), (int) (byte) (200.0 * (double) num), (int) (byte) ((double) byte.MaxValue * (double) num), (int) Main.mouseTextColor);
|
|
if (rare == 10)
|
|
baseColor = new Microsoft.Xna.Framework.Color((int) (byte) ((double) byte.MaxValue * (double) num), (int) (byte) (40.0 * (double) num), (int) (byte) (100.0 * (double) num), (int) Main.mouseTextColor);
|
|
if (rare >= 11)
|
|
baseColor = new Microsoft.Xna.Framework.Color((int) (byte) (180.0 * (double) num), (int) (byte) (40.0 * (double) num), (int) (byte) ((double) byte.MaxValue * (double) num), (int) Main.mouseTextColor);
|
|
if (Main.HoverItem.expert || rare == -12)
|
|
baseColor = new Microsoft.Xna.Framework.Color((int) (byte) ((double) Main.DiscoR * (double) num), (int) (byte) ((double) Main.DiscoG * (double) num), (int) (byte) ((double) Main.DiscoB * (double) num), (int) Main.mouseTextColor);
|
|
if (diff == (byte) 1)
|
|
baseColor = new Microsoft.Xna.Framework.Color((int) (byte) ((double) Main.mcColor.R * (double) num), (int) (byte) ((double) Main.mcColor.G * (double) num), (int) (byte) ((double) Main.mcColor.B * (double) num), (int) Main.mouseTextColor);
|
|
if (diff == (byte) 2)
|
|
baseColor = new Microsoft.Xna.Framework.Color((int) (byte) ((double) Main.hcColor.R * (double) num), (int) (byte) ((double) Main.hcColor.G * (double) num), (int) (byte) ((double) Main.hcColor.B * (double) num), (int) Main.mouseTextColor);
|
|
ChatManager.DrawColorCodedStringWithShadow(Main.spriteBatch, FontAssets.MouseText.Value, cursorText, new Vector2((float) X, (float) Y), baseColor, 0.0f, Vector2.Zero, Vector2.One);
|
|
}
|
|
}
|
|
|
|
private void MouseText_DrawItemTooltip(
|
|
Main.MouseTextCache info,
|
|
int rare,
|
|
byte diff,
|
|
int X,
|
|
int Y)
|
|
{
|
|
bool boxBehindTooltips = Main.SettingsEnabled_OpaqueBoxBehindTooltips;
|
|
Microsoft.Xna.Framework.Color color1 = new Microsoft.Xna.Framework.Color((int) Main.mouseTextColor, (int) Main.mouseTextColor, (int) Main.mouseTextColor, (int) Main.mouseTextColor);
|
|
Item hoverItem = Main.HoverItem;
|
|
int yoyoLogo = -1;
|
|
int researchLine = -1;
|
|
rare = hoverItem.rare;
|
|
float knockBack = hoverItem.knockBack;
|
|
float num1 = 1f;
|
|
if (hoverItem.melee && Main.player[Main.myPlayer].kbGlove)
|
|
++num1;
|
|
if (Main.player[Main.myPlayer].kbBuff)
|
|
num1 += 0.5f;
|
|
if ((double) num1 != 1.0)
|
|
hoverItem.knockBack *= num1;
|
|
if (hoverItem.ranged && Main.player[Main.myPlayer].shroomiteStealth)
|
|
hoverItem.knockBack *= (float) (1.0 + (1.0 - (double) Main.player[Main.myPlayer].stealth) * 0.5);
|
|
int length = 30;
|
|
int index1 = 1;
|
|
string[] strArray = new string[length];
|
|
bool[] preFixLine = new bool[length];
|
|
bool[] badPreFixLine = new bool[length];
|
|
for (int index2 = 0; index2 < length; ++index2)
|
|
{
|
|
preFixLine[index2] = false;
|
|
badPreFixLine[index2] = false;
|
|
}
|
|
Main.MouseText_DrawItemTooltip_GetLinesInfo(Main.HoverItem, ref yoyoLogo, ref researchLine, knockBack, ref index1, strArray, preFixLine, badPreFixLine);
|
|
float num2 = (float) Main.mouseTextColor / (float) byte.MaxValue;
|
|
int mouseTextColor = (int) Main.mouseTextColor;
|
|
if (Main.npcShop > 0 && hoverItem.value >= 0 && (hoverItem.type < 71 || hoverItem.type > 74))
|
|
{
|
|
int calcForSelling;
|
|
int calcForBuying;
|
|
Main.LocalPlayer.GetItemExpectedPrice(hoverItem, out calcForSelling, out calcForBuying);
|
|
int price = hoverItem.isAShopItem || hoverItem.buyOnce ? calcForBuying : calcForSelling;
|
|
if (hoverItem.shopSpecialCurrency != -1)
|
|
{
|
|
CustomCurrencyManager.GetPriceText(hoverItem.shopSpecialCurrency, strArray, ref index1, price);
|
|
color1 = new Microsoft.Xna.Framework.Color((int) (byte) ((double) byte.MaxValue * (double) num2), (int) (byte) ((double) byte.MaxValue * (double) num2), (int) (byte) ((double) byte.MaxValue * (double) num2), mouseTextColor);
|
|
}
|
|
else if (price > 0)
|
|
{
|
|
string str = "";
|
|
int num3 = 0;
|
|
int num4 = 0;
|
|
int num5 = 0;
|
|
int num6 = 0;
|
|
int num7 = price * hoverItem.stack;
|
|
if (!hoverItem.buy)
|
|
{
|
|
int num8 = price / 5;
|
|
if (num8 < 1)
|
|
num8 = 1;
|
|
int num9 = num8;
|
|
num7 = num8 * hoverItem.stack;
|
|
int amount = Main.shopSellbackHelper.GetAmount(hoverItem);
|
|
if (amount > 0)
|
|
num7 += (-num9 + calcForBuying) * Math.Min(amount, hoverItem.stack);
|
|
}
|
|
if (num7 < 1)
|
|
num7 = 1;
|
|
if (num7 >= 1000000)
|
|
{
|
|
num3 = num7 / 1000000;
|
|
num7 -= num3 * 1000000;
|
|
}
|
|
if (num7 >= 10000)
|
|
{
|
|
num4 = num7 / 10000;
|
|
num7 -= num4 * 10000;
|
|
}
|
|
if (num7 >= 100)
|
|
{
|
|
num5 = num7 / 100;
|
|
num7 -= num5 * 100;
|
|
}
|
|
if (num7 >= 1)
|
|
num6 = num7;
|
|
if (num3 > 0)
|
|
str = str + (object) num3 + " " + Lang.inter[15].Value + " ";
|
|
if (num4 > 0)
|
|
str = str + (object) num4 + " " + Lang.inter[16].Value + " ";
|
|
if (num5 > 0)
|
|
str = str + (object) num5 + " " + Lang.inter[17].Value + " ";
|
|
if (num6 > 0)
|
|
str = str + (object) num6 + " " + Lang.inter[18].Value + " ";
|
|
strArray[index1] = hoverItem.buy ? Lang.tip[50].Value + " " + str : Lang.tip[49].Value + " " + str;
|
|
++index1;
|
|
if (num3 > 0)
|
|
color1 = new Microsoft.Xna.Framework.Color((int) (byte) (220.0 * (double) num2), (int) (byte) (220.0 * (double) num2), (int) (byte) (198.0 * (double) num2), mouseTextColor);
|
|
else if (num4 > 0)
|
|
color1 = new Microsoft.Xna.Framework.Color((int) (byte) (224.0 * (double) num2), (int) (byte) (201.0 * (double) num2), (int) (byte) (92.0 * (double) num2), mouseTextColor);
|
|
else if (num5 > 0)
|
|
color1 = new Microsoft.Xna.Framework.Color((int) (byte) (181.0 * (double) num2), (int) (byte) (192.0 * (double) num2), (int) (byte) (193.0 * (double) num2), mouseTextColor);
|
|
else if (num6 > 0)
|
|
color1 = new Microsoft.Xna.Framework.Color((int) (byte) (246.0 * (double) num2), (int) (byte) (138.0 * (double) num2), (int) (byte) (96.0 * (double) num2), mouseTextColor);
|
|
}
|
|
else if (hoverItem.type != 3817)
|
|
{
|
|
strArray[index1] = Lang.tip[51].Value;
|
|
++index1;
|
|
color1 = new Microsoft.Xna.Framework.Color((int) (byte) (120.0 * (double) num2), (int) (byte) (120.0 * (double) num2), (int) (byte) (120.0 * (double) num2), mouseTextColor);
|
|
}
|
|
}
|
|
Vector2 zero = Vector2.Zero;
|
|
int num10 = 0;
|
|
for (int index3 = 0; index3 < index1; ++index3)
|
|
{
|
|
Vector2 stringSize = ChatManager.GetStringSize(FontAssets.MouseText.Value, strArray[index3], Vector2.One);
|
|
if ((double) stringSize.X > (double) zero.X)
|
|
zero.X = stringSize.X;
|
|
zero.Y += stringSize.Y + (float) num10;
|
|
}
|
|
if (yoyoLogo != -1)
|
|
zero.Y += 24f;
|
|
X += Main.toolTipDistance;
|
|
Y += Main.toolTipDistance;
|
|
int num11 = 4;
|
|
if (boxBehindTooltips)
|
|
{
|
|
X += 8;
|
|
Y += 2;
|
|
num11 = 18;
|
|
}
|
|
int screenWidth = Main.screenWidth;
|
|
int screenHeight = Main.screenHeight;
|
|
if ((double) X + (double) zero.X + (double) num11 > (double) screenWidth)
|
|
X = (int) ((double) screenWidth - (double) zero.X - (double) num11);
|
|
if ((double) Y + (double) zero.Y + (double) num11 > (double) screenHeight)
|
|
Y = (int) ((double) screenHeight - (double) zero.Y - (double) num11);
|
|
int num12 = 0;
|
|
float num13 = (float) Main.mouseTextColor / (float) byte.MaxValue;
|
|
if (boxBehindTooltips)
|
|
{
|
|
MathHelper.Lerp(num13, 1f, 1f);
|
|
int num14 = 14;
|
|
int num15 = 9;
|
|
Utils.DrawInvBG(Main.spriteBatch, new Microsoft.Xna.Framework.Rectangle(X - num14, Y - num15, (int) zero.X + num14 * 2, (int) zero.Y + num15 + num15 / 2), new Microsoft.Xna.Framework.Color(23, 25, 81, (int) byte.MaxValue) * 0.925f);
|
|
}
|
|
for (int index4 = 0; index4 < index1; ++index4)
|
|
{
|
|
if (index4 == yoyoLogo)
|
|
{
|
|
float num16 = 1f;
|
|
int num17 = (int) ((double) Main.mouseTextColor * (double) num16);
|
|
Microsoft.Xna.Framework.Color color2 = Microsoft.Xna.Framework.Color.Black;
|
|
for (int index5 = 0; index5 < 5; ++index5)
|
|
{
|
|
int num18 = X;
|
|
int num19 = Y + num12;
|
|
if (index5 == 4)
|
|
color2 = new Microsoft.Xna.Framework.Color(num17, num17, num17, num17);
|
|
if (index5 == 0)
|
|
--num18;
|
|
else if (index5 == 1)
|
|
++num18;
|
|
else if (index5 == 2)
|
|
--num19;
|
|
else if (index5 == 3)
|
|
++num19;
|
|
Main.spriteBatch.Draw(TextureAssets.OneDropLogo.Value, new Vector2((float) num18, (float) num19), new Microsoft.Xna.Framework.Rectangle?(), color2, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Microsoft.Xna.Framework.Color baseColor = Microsoft.Xna.Framework.Color.Black;
|
|
baseColor = new Microsoft.Xna.Framework.Color(num2, num2, num2, num2);
|
|
if (index4 == 0)
|
|
{
|
|
if (rare == -13)
|
|
baseColor = new Microsoft.Xna.Framework.Color((int) (byte) ((double) byte.MaxValue * (double) num2), (int) (byte) ((double) Main.masterColor * 200.0 * (double) num2), 0, mouseTextColor);
|
|
if (rare == -11)
|
|
baseColor = new Microsoft.Xna.Framework.Color((int) (byte) ((double) byte.MaxValue * (double) num2), (int) (byte) (175.0 * (double) num2), (int) (byte) (0.0 * (double) num2), mouseTextColor);
|
|
if (rare == -1)
|
|
baseColor = new Microsoft.Xna.Framework.Color((int) (byte) (130.0 * (double) num2), (int) (byte) (130.0 * (double) num2), (int) (byte) (130.0 * (double) num2), mouseTextColor);
|
|
if (rare == 1)
|
|
baseColor = new Microsoft.Xna.Framework.Color((int) (byte) (150.0 * (double) num2), (int) (byte) (150.0 * (double) num2), (int) (byte) ((double) byte.MaxValue * (double) num2), mouseTextColor);
|
|
if (rare == 2)
|
|
baseColor = new Microsoft.Xna.Framework.Color((int) (byte) (150.0 * (double) num2), (int) (byte) ((double) byte.MaxValue * (double) num2), (int) (byte) (150.0 * (double) num2), mouseTextColor);
|
|
if (rare == 3)
|
|
baseColor = new Microsoft.Xna.Framework.Color((int) (byte) ((double) byte.MaxValue * (double) num2), (int) (byte) (200.0 * (double) num2), (int) (byte) (150.0 * (double) num2), mouseTextColor);
|
|
if (rare == 4)
|
|
baseColor = new Microsoft.Xna.Framework.Color((int) (byte) ((double) byte.MaxValue * (double) num2), (int) (byte) (150.0 * (double) num2), (int) (byte) (150.0 * (double) num2), mouseTextColor);
|
|
if (rare == 5)
|
|
baseColor = new Microsoft.Xna.Framework.Color((int) (byte) ((double) byte.MaxValue * (double) num2), (int) (byte) (150.0 * (double) num2), (int) (byte) ((double) byte.MaxValue * (double) num2), mouseTextColor);
|
|
if (rare == 6)
|
|
baseColor = new Microsoft.Xna.Framework.Color((int) (byte) (210.0 * (double) num2), (int) (byte) (160.0 * (double) num2), (int) (byte) ((double) byte.MaxValue * (double) num2), mouseTextColor);
|
|
if (rare == 7)
|
|
baseColor = new Microsoft.Xna.Framework.Color((int) (byte) (150.0 * (double) num2), (int) (byte) ((double) byte.MaxValue * (double) num2), (int) (byte) (10.0 * (double) num2), mouseTextColor);
|
|
if (rare == 8)
|
|
baseColor = new Microsoft.Xna.Framework.Color((int) (byte) ((double) byte.MaxValue * (double) num2), (int) (byte) ((double) byte.MaxValue * (double) num2), (int) (byte) (10.0 * (double) num2), mouseTextColor);
|
|
if (rare == 9)
|
|
baseColor = new Microsoft.Xna.Framework.Color((int) (byte) (5.0 * (double) num2), (int) (byte) (200.0 * (double) num2), (int) (byte) ((double) byte.MaxValue * (double) num2), mouseTextColor);
|
|
if (rare == 10)
|
|
baseColor = new Microsoft.Xna.Framework.Color((int) (byte) ((double) byte.MaxValue * (double) num2), (int) (byte) (40.0 * (double) num2), (int) (byte) (100.0 * (double) num2), mouseTextColor);
|
|
if (rare >= 11)
|
|
baseColor = new Microsoft.Xna.Framework.Color((int) (byte) (180.0 * (double) num2), (int) (byte) (40.0 * (double) num2), (int) (byte) ((double) byte.MaxValue * (double) num2), mouseTextColor);
|
|
if (diff == (byte) 1)
|
|
baseColor = new Microsoft.Xna.Framework.Color((int) (byte) ((double) Main.mcColor.R * (double) num2), (int) (byte) ((double) Main.mcColor.G * (double) num2), (int) (byte) ((double) Main.mcColor.B * (double) num2), mouseTextColor);
|
|
if (diff == (byte) 2)
|
|
baseColor = new Microsoft.Xna.Framework.Color((int) (byte) ((double) Main.hcColor.R * (double) num2), (int) (byte) ((double) Main.hcColor.G * (double) num2), (int) (byte) ((double) Main.hcColor.B * (double) num2), mouseTextColor);
|
|
if (hoverItem.expert || rare == -12)
|
|
baseColor = new Microsoft.Xna.Framework.Color((int) (byte) ((double) Main.DiscoR * (double) num2), (int) (byte) ((double) Main.DiscoG * (double) num2), (int) (byte) ((double) Main.DiscoB * (double) num2), mouseTextColor);
|
|
}
|
|
else if (preFixLine[index4])
|
|
baseColor = !badPreFixLine[index4] ? new Microsoft.Xna.Framework.Color((int) (byte) (120.0 * (double) num2), (int) (byte) (190.0 * (double) num2), (int) (byte) (120.0 * (double) num2), mouseTextColor) : new Microsoft.Xna.Framework.Color((int) (byte) (190.0 * (double) num2), (int) (byte) (120.0 * (double) num2), (int) (byte) (120.0 * (double) num2), mouseTextColor);
|
|
else if (index4 == index1 - 1)
|
|
baseColor = color1;
|
|
if (index4 == researchLine)
|
|
baseColor = Colors.JourneyMode;
|
|
ChatManager.DrawColorCodedStringWithShadow(Main.spriteBatch, FontAssets.MouseText.Value, strArray[index4], new Vector2((float) X, (float) (Y + num12)), baseColor, 0.0f, Vector2.Zero, Vector2.One);
|
|
}
|
|
num12 += (int) ((double) FontAssets.MouseText.Value.MeasureString(strArray[index4]).Y + (double) num10);
|
|
}
|
|
}
|
|
|
|
public static void MouseText_DrawItemTooltip_GetLinesInfo(
|
|
Item item,
|
|
ref int yoyoLogo,
|
|
ref int researchLine,
|
|
float oldKB,
|
|
ref int numLines,
|
|
string[] toolTipLine,
|
|
bool[] preFixLine,
|
|
bool[] badPreFixLine)
|
|
{
|
|
Item obj1 = item;
|
|
toolTipLine[0] = obj1.HoverName;
|
|
if (obj1.favorited)
|
|
{
|
|
toolTipLine[numLines++] = Lang.tip[56].Value;
|
|
toolTipLine[numLines++] = Lang.tip[57].Value;
|
|
if (Main.LocalPlayer.chest != -1)
|
|
{
|
|
Item[] chestinv;
|
|
ChestUI.GetContainerUsageInfo(out bool _, out chestinv);
|
|
if (ChestUI.IsBlockedFromTransferIntoChest(obj1, chestinv))
|
|
toolTipLine[numLines++] = Language.GetTextValue("UI.ItemCannotBePlacedInsideItself");
|
|
}
|
|
}
|
|
if (obj1.social)
|
|
{
|
|
toolTipLine[numLines] = Lang.tip[0].Value;
|
|
++numLines;
|
|
toolTipLine[numLines] = Lang.tip[1].Value;
|
|
++numLines;
|
|
}
|
|
else
|
|
{
|
|
if (obj1.damage > 0 && (!obj1.notAmmo || obj1.useStyle != 0) && (obj1.type < 71 || obj1.type > 74 || Main.player[Main.myPlayer].HasItem(905)))
|
|
{
|
|
float num1 = 5E-06f;
|
|
int num2 = (int) ((double) obj1.damage * (double) ItemID.Sets.ToolTipDamageMultiplier[obj1.type]);
|
|
if (obj1.melee)
|
|
{
|
|
toolTipLine[numLines] = string.Concat((object) (int) ((double) Main.player[Main.myPlayer].meleeDamage * (double) num2 + (double) num1));
|
|
// ISSUE: explicit reference operation
|
|
^ref toolTipLine[numLines] += Lang.tip[2].Value;
|
|
}
|
|
else if (obj1.ranged)
|
|
{
|
|
float num3 = (float) num2 * Main.player[Main.myPlayer].rangedDamage;
|
|
if (obj1.useAmmo == AmmoID.Arrow || obj1.useAmmo == AmmoID.Stake)
|
|
{
|
|
num3 *= Main.player[Main.myPlayer].arrowDamage;
|
|
if (Main.player[Main.myPlayer].archery)
|
|
num3 *= 1.2f;
|
|
}
|
|
if (obj1.useAmmo == AmmoID.Bullet || obj1.useAmmo == AmmoID.CandyCorn)
|
|
num3 *= Main.player[Main.myPlayer].bulletDamage;
|
|
if (obj1.useAmmo == AmmoID.Rocket || obj1.useAmmo == AmmoID.StyngerBolt || obj1.useAmmo == AmmoID.JackOLantern || obj1.useAmmo == AmmoID.NailFriendly)
|
|
num3 *= Main.player[Main.myPlayer].rocketDamage;
|
|
toolTipLine[numLines] = string.Concat((object) (int) ((double) num3 + (double) num1));
|
|
// ISSUE: explicit reference operation
|
|
^ref toolTipLine[numLines] += Lang.tip[3].Value;
|
|
}
|
|
else if (obj1.magic)
|
|
{
|
|
toolTipLine[numLines] = string.Concat((object) (int) ((double) Main.player[Main.myPlayer].magicDamage * (double) num2 + (double) num1));
|
|
// ISSUE: explicit reference operation
|
|
^ref toolTipLine[numLines] += Lang.tip[4].Value;
|
|
}
|
|
else if (obj1.summon)
|
|
{
|
|
toolTipLine[numLines] = string.Concat((object) (int) ((double) Main.player[Main.myPlayer].minionDamage * (double) num2 + (double) num1));
|
|
// ISSUE: explicit reference operation
|
|
^ref toolTipLine[numLines] += Lang.tip[53].Value;
|
|
}
|
|
else
|
|
{
|
|
toolTipLine[numLines] = string.Concat((object) num2);
|
|
// ISSUE: explicit reference operation
|
|
^ref toolTipLine[numLines] += Lang.tip[55].Value;
|
|
}
|
|
++numLines;
|
|
if (obj1.melee)
|
|
{
|
|
int num4 = Main.player[Main.myPlayer].meleeCrit - Main.player[Main.myPlayer].inventory[Main.player[Main.myPlayer].selectedItem].crit + obj1.crit;
|
|
toolTipLine[numLines] = num4.ToString() + Lang.tip[5].Value;
|
|
++numLines;
|
|
}
|
|
else if (obj1.ranged)
|
|
{
|
|
int num5 = Main.player[Main.myPlayer].rangedCrit - Main.player[Main.myPlayer].inventory[Main.player[Main.myPlayer].selectedItem].crit + obj1.crit;
|
|
toolTipLine[numLines] = num5.ToString() + Lang.tip[5].Value;
|
|
++numLines;
|
|
}
|
|
else if (obj1.magic)
|
|
{
|
|
int num6 = Main.player[Main.myPlayer].magicCrit - Main.player[Main.myPlayer].inventory[Main.player[Main.myPlayer].selectedItem].crit + obj1.crit;
|
|
toolTipLine[numLines] = num6.ToString() + Lang.tip[5].Value;
|
|
++numLines;
|
|
}
|
|
if (obj1.useStyle != 0 && !obj1.summon)
|
|
{
|
|
toolTipLine[numLines] = obj1.useAnimation > 8 ? (obj1.useAnimation > 20 ? (obj1.useAnimation > 25 ? (obj1.useAnimation > 30 ? (obj1.useAnimation > 35 ? (obj1.useAnimation > 45 ? (obj1.useAnimation > 55 ? Lang.tip[13].Value : Lang.tip[12].Value) : Lang.tip[11].Value) : Lang.tip[10].Value) : Lang.tip[9].Value) : Lang.tip[8].Value) : Lang.tip[7].Value) : Lang.tip[6].Value;
|
|
++numLines;
|
|
}
|
|
float num7 = obj1.knockBack;
|
|
if (obj1.summon)
|
|
num7 += Main.player[Main.myPlayer].minionKB;
|
|
if (Main.player[Main.myPlayer].magicQuiver && obj1.useAmmo == AmmoID.Arrow || obj1.useAmmo == AmmoID.Stake)
|
|
num7 = (float) (int) ((double) num7 * 1.10000002384186);
|
|
if (Main.player[Main.myPlayer].inventory[Main.player[Main.myPlayer].selectedItem].type == 3106 && obj1.type == 3106)
|
|
num7 += num7 * (1f - Main.player[Main.myPlayer].stealth);
|
|
toolTipLine[numLines] = (double) num7 != 0.0 ? ((double) num7 > 1.5 ? ((double) num7 > 3.0 ? ((double) num7 > 4.0 ? ((double) num7 > 6.0 ? ((double) num7 > 7.0 ? ((double) num7 > 9.0 ? ((double) num7 > 11.0 ? Lang.tip[22].Value : Lang.tip[21].Value) : Lang.tip[20].Value) : Lang.tip[19].Value) : Lang.tip[18].Value) : Lang.tip[17].Value) : Lang.tip[16].Value) : Lang.tip[15].Value) : Lang.tip[14].Value;
|
|
++numLines;
|
|
}
|
|
if (obj1.fishingPole > 0)
|
|
{
|
|
toolTipLine[numLines] = Language.GetTextValue("GameUI.PrecentFishingPower", (object) obj1.fishingPole);
|
|
++numLines;
|
|
toolTipLine[numLines] = Language.GetTextValue("GameUI.BaitRequired");
|
|
++numLines;
|
|
}
|
|
if (obj1.bait > 0)
|
|
{
|
|
toolTipLine[numLines] = Language.GetTextValue("GameUI.BaitPower", (object) obj1.bait);
|
|
++numLines;
|
|
}
|
|
if (obj1.headSlot > 0 || obj1.bodySlot > 0 || obj1.legSlot > 0 || obj1.accessory || Main.projHook[obj1.shoot] || obj1.mountType != -1 || obj1.buffType > 0 && (Main.lightPet[obj1.buffType] || Main.vanityPet[obj1.buffType]))
|
|
{
|
|
toolTipLine[numLines] = obj1.type != 854 && obj1.type != 3035 || Main.npcShop <= 0 ? Lang.tip[23].Value : Lang.tip[60].Value;
|
|
++numLines;
|
|
}
|
|
if (obj1.tileWand > 0)
|
|
{
|
|
toolTipLine[numLines] = Lang.tip[52].Value + Lang.GetItemNameValue(obj1.tileWand);
|
|
++numLines;
|
|
}
|
|
if (obj1.questItem)
|
|
{
|
|
toolTipLine[numLines] = Lang.inter[65].Value;
|
|
++numLines;
|
|
}
|
|
if (obj1.vanity)
|
|
{
|
|
toolTipLine[numLines] = Lang.tip[24].Value;
|
|
++numLines;
|
|
}
|
|
if (!obj1.vanity && obj1.FitsAccessoryVanitySlot)
|
|
{
|
|
toolTipLine[numLines] = Language.GetText("Misc.CanBePlacedInVanity").Value;
|
|
++numLines;
|
|
}
|
|
if (obj1.defense > 0)
|
|
{
|
|
toolTipLine[numLines] = obj1.defense.ToString() + Lang.tip[25].Value;
|
|
++numLines;
|
|
}
|
|
if (obj1.pick > 0)
|
|
{
|
|
toolTipLine[numLines] = obj1.pick.ToString() + Lang.tip[26].Value;
|
|
++numLines;
|
|
}
|
|
if (obj1.axe > 0)
|
|
{
|
|
toolTipLine[numLines] = (obj1.axe * 5).ToString() + Lang.tip[27].Value;
|
|
++numLines;
|
|
}
|
|
if (obj1.hammer > 0)
|
|
{
|
|
toolTipLine[numLines] = obj1.hammer.ToString() + Lang.tip[28].Value;
|
|
++numLines;
|
|
}
|
|
if (obj1.tileBoost != 0)
|
|
{
|
|
int tileBoost = obj1.tileBoost;
|
|
toolTipLine[numLines] = tileBoost <= 0 ? tileBoost.ToString() + Lang.tip[54].Value : "+" + (object) tileBoost + Lang.tip[54].Value;
|
|
++numLines;
|
|
}
|
|
if (obj1.healLife > 0)
|
|
{
|
|
toolTipLine[numLines] = Language.GetTextValue("CommonItemTooltip.RestoresLife", (object) obj1.healLife);
|
|
++numLines;
|
|
}
|
|
if (obj1.healMana > 0)
|
|
{
|
|
toolTipLine[numLines] = Language.GetTextValue("CommonItemTooltip.RestoresMana", (object) obj1.healMana);
|
|
++numLines;
|
|
}
|
|
if (obj1.mana > 0 && (obj1.type != (int) sbyte.MaxValue || !Main.player[Main.myPlayer].spaceGun))
|
|
{
|
|
toolTipLine[numLines] = Language.GetTextValue("CommonItemTooltip.UsesMana", (object) (int) ((double) obj1.mana * (double) Main.player[Main.myPlayer].manaCost));
|
|
++numLines;
|
|
}
|
|
if (obj1.createWall > 0 || obj1.createTile > -1)
|
|
{
|
|
if (obj1.type != 213 && obj1.tileWand < 1)
|
|
{
|
|
toolTipLine[numLines] = Lang.tip[33].Value;
|
|
++numLines;
|
|
}
|
|
}
|
|
else if (obj1.ammo > 0 && !obj1.notAmmo)
|
|
{
|
|
toolTipLine[numLines] = Lang.tip[34].Value;
|
|
++numLines;
|
|
}
|
|
else if (obj1.consumable)
|
|
{
|
|
toolTipLine[numLines] = Lang.tip[35].Value;
|
|
++numLines;
|
|
}
|
|
if (obj1.material)
|
|
{
|
|
toolTipLine[numLines] = Lang.tip[36].Value;
|
|
++numLines;
|
|
}
|
|
if (obj1.ToolTip != null)
|
|
{
|
|
for (int line = 0; line < obj1.ToolTip.Lines; ++line)
|
|
{
|
|
if (line == 0 && ItemID.Sets.UsesCursedByPlanteraTooltip[obj1.type] && !NPC.downedPlantBoss)
|
|
{
|
|
toolTipLine[numLines] = Lang.tip[59].Value;
|
|
++numLines;
|
|
}
|
|
else
|
|
{
|
|
toolTipLine[numLines] = obj1.ToolTip.GetLine(line);
|
|
++numLines;
|
|
}
|
|
}
|
|
}
|
|
if ((obj1.type == 3818 || obj1.type == 3819 || obj1.type == 3820 || obj1.type == 3824 || obj1.type == 3825 || obj1.type == 3826 || obj1.type == 3829 || obj1.type == 3830 || obj1.type == 3831 || obj1.type == 3832 || obj1.type == 3833 || obj1.type == 3834) && !Main.player[Main.myPlayer].downedDD2EventAnyDifficulty)
|
|
{
|
|
toolTipLine[numLines] = Lang.misc[104].Value;
|
|
++numLines;
|
|
}
|
|
if (obj1.buffType > 0 && BuffID.Sets.IsWellFed[obj1.buffType] && Main.expertMode)
|
|
{
|
|
toolTipLine[numLines] = Lang.misc[40].Value;
|
|
++numLines;
|
|
}
|
|
if (obj1.buffTime > 0)
|
|
{
|
|
string str = obj1.buffTime / 60 < 60 ? Language.GetTextValue("CommonItemTooltip.SecondDuration", (object) Math.Round((double) obj1.buffTime / 60.0)) : Language.GetTextValue("CommonItemTooltip.MinuteDuration", (object) Math.Round((double) (obj1.buffTime / 60) / 60.0));
|
|
toolTipLine[numLines] = str;
|
|
++numLines;
|
|
}
|
|
if (obj1.type == 3262 || obj1.type == 3282 || obj1.type == 3283 || obj1.type == 3284 || obj1.type == 3285 || obj1.type == 3286 || obj1.type == 3316 || obj1.type == 3315 || obj1.type == 3317 || obj1.type == 3291 || obj1.type == 3389)
|
|
{
|
|
toolTipLine[numLines] = " ";
|
|
yoyoLogo = numLines;
|
|
++numLines;
|
|
}
|
|
if (obj1.prefix > (byte) 0)
|
|
{
|
|
Item obj2 = Main.tooltipPrefixComparisonItem;
|
|
if (obj2 == null || obj2.netID != obj1.netID)
|
|
{
|
|
obj2 = new Item();
|
|
obj2.netDefaults(obj1.netID);
|
|
}
|
|
if (obj2.damage != obj1.damage)
|
|
{
|
|
double num = Math.Round(((double) obj1.damage - (double) obj2.damage) / (double) obj2.damage * 100.0);
|
|
toolTipLine[numLines] = num <= 0.0 ? num.ToString() + Lang.tip[39].Value : "+" + (object) num + Lang.tip[39].Value;
|
|
if (num < 0.0)
|
|
badPreFixLine[numLines] = true;
|
|
preFixLine[numLines] = true;
|
|
++numLines;
|
|
}
|
|
if (obj2.useAnimation != obj1.useAnimation)
|
|
{
|
|
double num = Math.Round(((double) obj1.useAnimation - (double) obj2.useAnimation) / (double) obj2.useAnimation * 100.0) * -1.0;
|
|
toolTipLine[numLines] = num <= 0.0 ? num.ToString() + Lang.tip[40].Value : "+" + (object) num + Lang.tip[40].Value;
|
|
if (num < 0.0)
|
|
badPreFixLine[numLines] = true;
|
|
preFixLine[numLines] = true;
|
|
++numLines;
|
|
}
|
|
if (obj2.crit != obj1.crit)
|
|
{
|
|
double num = (double) obj1.crit - (double) obj2.crit;
|
|
toolTipLine[numLines] = num <= 0.0 ? num.ToString() + Lang.tip[41].Value : "+" + (object) num + Lang.tip[41].Value;
|
|
if (num < 0.0)
|
|
badPreFixLine[numLines] = true;
|
|
preFixLine[numLines] = true;
|
|
++numLines;
|
|
}
|
|
if (obj2.mana != obj1.mana)
|
|
{
|
|
double num = Math.Round(((double) obj1.mana - (double) obj2.mana) / (double) obj2.mana * 100.0);
|
|
toolTipLine[numLines] = num <= 0.0 ? num.ToString() + Lang.tip[42].Value : "+" + (object) num + Lang.tip[42].Value;
|
|
if (num > 0.0)
|
|
badPreFixLine[numLines] = true;
|
|
preFixLine[numLines] = true;
|
|
++numLines;
|
|
}
|
|
if ((double) obj2.scale != (double) obj1.scale)
|
|
{
|
|
double num = Math.Round(((double) obj1.scale - (double) obj2.scale) / (double) obj2.scale * 100.0);
|
|
toolTipLine[numLines] = num <= 0.0 ? num.ToString() + Lang.tip[43].Value : "+" + (object) num + Lang.tip[43].Value;
|
|
if (num < 0.0)
|
|
badPreFixLine[numLines] = true;
|
|
preFixLine[numLines] = true;
|
|
++numLines;
|
|
}
|
|
if ((double) obj2.shootSpeed != (double) obj1.shootSpeed)
|
|
{
|
|
double num = Math.Round(((double) obj1.shootSpeed - (double) obj2.shootSpeed) / (double) obj2.shootSpeed * 100.0);
|
|
toolTipLine[numLines] = num <= 0.0 ? num.ToString() + Lang.tip[44].Value : "+" + (object) num + Lang.tip[44].Value;
|
|
if (num < 0.0)
|
|
badPreFixLine[numLines] = true;
|
|
preFixLine[numLines] = true;
|
|
++numLines;
|
|
}
|
|
if ((double) obj2.knockBack != (double) oldKB)
|
|
{
|
|
double num = Math.Round(((double) oldKB - (double) obj2.knockBack) / (double) obj2.knockBack * 100.0);
|
|
toolTipLine[numLines] = num <= 0.0 ? num.ToString() + Lang.tip[45].Value : "+" + (object) num + Lang.tip[45].Value;
|
|
if (num < 0.0)
|
|
badPreFixLine[numLines] = true;
|
|
preFixLine[numLines] = true;
|
|
++numLines;
|
|
}
|
|
if (obj1.prefix == (byte) 62)
|
|
{
|
|
toolTipLine[numLines] = "+1" + Lang.tip[25].Value;
|
|
preFixLine[numLines] = true;
|
|
++numLines;
|
|
}
|
|
if (obj1.prefix == (byte) 63)
|
|
{
|
|
toolTipLine[numLines] = "+2" + Lang.tip[25].Value;
|
|
preFixLine[numLines] = true;
|
|
++numLines;
|
|
}
|
|
if (obj1.prefix == (byte) 64)
|
|
{
|
|
toolTipLine[numLines] = "+3" + Lang.tip[25].Value;
|
|
preFixLine[numLines] = true;
|
|
++numLines;
|
|
}
|
|
if (obj1.prefix == (byte) 65)
|
|
{
|
|
toolTipLine[numLines] = "+4" + Lang.tip[25].Value;
|
|
preFixLine[numLines] = true;
|
|
++numLines;
|
|
}
|
|
if (obj1.prefix == (byte) 66)
|
|
{
|
|
toolTipLine[numLines] = "+20 " + Lang.tip[31].Value;
|
|
preFixLine[numLines] = true;
|
|
++numLines;
|
|
}
|
|
if (obj1.prefix == (byte) 67)
|
|
{
|
|
toolTipLine[numLines] = "+2" + Lang.tip[5].Value;
|
|
preFixLine[numLines] = true;
|
|
++numLines;
|
|
}
|
|
if (obj1.prefix == (byte) 68)
|
|
{
|
|
toolTipLine[numLines] = "+4" + Lang.tip[5].Value;
|
|
preFixLine[numLines] = true;
|
|
++numLines;
|
|
}
|
|
if (obj1.prefix == (byte) 69)
|
|
{
|
|
toolTipLine[numLines] = "+1" + Lang.tip[39].Value;
|
|
preFixLine[numLines] = true;
|
|
++numLines;
|
|
}
|
|
if (obj1.prefix == (byte) 70)
|
|
{
|
|
toolTipLine[numLines] = "+2" + Lang.tip[39].Value;
|
|
preFixLine[numLines] = true;
|
|
++numLines;
|
|
}
|
|
if (obj1.prefix == (byte) 71)
|
|
{
|
|
toolTipLine[numLines] = "+3" + Lang.tip[39].Value;
|
|
preFixLine[numLines] = true;
|
|
++numLines;
|
|
}
|
|
if (obj1.prefix == (byte) 72)
|
|
{
|
|
toolTipLine[numLines] = "+4" + Lang.tip[39].Value;
|
|
preFixLine[numLines] = true;
|
|
++numLines;
|
|
}
|
|
if (obj1.prefix == (byte) 73)
|
|
{
|
|
toolTipLine[numLines] = "+1" + Lang.tip[46].Value;
|
|
preFixLine[numLines] = true;
|
|
++numLines;
|
|
}
|
|
if (obj1.prefix == (byte) 74)
|
|
{
|
|
toolTipLine[numLines] = "+2" + Lang.tip[46].Value;
|
|
preFixLine[numLines] = true;
|
|
++numLines;
|
|
}
|
|
if (obj1.prefix == (byte) 75)
|
|
{
|
|
toolTipLine[numLines] = "+3" + Lang.tip[46].Value;
|
|
preFixLine[numLines] = true;
|
|
++numLines;
|
|
}
|
|
if (obj1.prefix == (byte) 76)
|
|
{
|
|
toolTipLine[numLines] = "+4" + Lang.tip[46].Value;
|
|
preFixLine[numLines] = true;
|
|
++numLines;
|
|
}
|
|
if (obj1.prefix == (byte) 77)
|
|
{
|
|
toolTipLine[numLines] = "+1" + Lang.tip[47].Value;
|
|
preFixLine[numLines] = true;
|
|
++numLines;
|
|
}
|
|
if (obj1.prefix == (byte) 78)
|
|
{
|
|
toolTipLine[numLines] = "+2" + Lang.tip[47].Value;
|
|
preFixLine[numLines] = true;
|
|
++numLines;
|
|
}
|
|
if (obj1.prefix == (byte) 79)
|
|
{
|
|
toolTipLine[numLines] = "+3" + Lang.tip[47].Value;
|
|
preFixLine[numLines] = true;
|
|
++numLines;
|
|
}
|
|
if (obj1.prefix == (byte) 80)
|
|
{
|
|
toolTipLine[numLines] = "+4" + Lang.tip[47].Value;
|
|
preFixLine[numLines] = true;
|
|
++numLines;
|
|
}
|
|
}
|
|
if (obj1.wornArmor && Main.player[Main.myPlayer].setBonus != "")
|
|
{
|
|
toolTipLine[numLines] = Lang.tip[48].Value + " " + Main.player[Main.myPlayer].setBonus;
|
|
++numLines;
|
|
}
|
|
}
|
|
if (obj1.expert)
|
|
{
|
|
toolTipLine[numLines] = Language.GetTextValue("GameUI.Expert");
|
|
++numLines;
|
|
}
|
|
if (obj1.rare == -13)
|
|
{
|
|
toolTipLine[numLines] = Language.GetTextValue("GameUI.Master");
|
|
++numLines;
|
|
}
|
|
int amountNeeded;
|
|
if ((obj1.tooltipContext == 0 || obj1.tooltipContext == 2 || obj1.tooltipContext == 1 || obj1.tooltipContext == 3 || obj1.tooltipContext == 4 || obj1.tooltipContext == 15 ? 1 : (obj1.tooltipContext == 6 ? 1 : 0)) != 0 && Main.LocalPlayer.difficulty == (byte) 3 && CreativeItemSacrificesCatalog.Instance.TryGetSacrificeCountCapToUnlockInfiniteItems(obj1.type, out amountNeeded))
|
|
{
|
|
int sacrificeCount = Main.LocalPlayerCreativeTracker.ItemSacrifices.GetSacrificeCount(obj1.type);
|
|
if (amountNeeded - sacrificeCount > 0)
|
|
{
|
|
toolTipLine[numLines] = Language.GetTextValue("CommonItemTooltip.CreativeSacrificeNeeded", (object) (amountNeeded - sacrificeCount));
|
|
researchLine = numLines;
|
|
++numLines;
|
|
}
|
|
}
|
|
string bestiaryNotes = obj1.BestiaryNotes;
|
|
if (string.IsNullOrWhiteSpace(bestiaryNotes))
|
|
return;
|
|
string str1 = bestiaryNotes;
|
|
char[] chArray = new char[1]{ '\n' };
|
|
foreach (string str2 in str1.Split(chArray))
|
|
toolTipLine[numLines++] = str2;
|
|
}
|
|
|
|
private void MouseText_DrawBuffTooltip(string buffString, ref int X, ref int Y)
|
|
{
|
|
Microsoft.Xna.Framework.Point p = new Microsoft.Xna.Framework.Point(X, Y);
|
|
int num1 = 220;
|
|
int num2 = 72;
|
|
int num3 = -1;
|
|
float num4 = 1f;
|
|
List<Vector2> vector2List = new List<Vector2>();
|
|
Vector2 vector2_1 = FontAssets.MouseText.Value.MeasureString(buffString);
|
|
vector2List.Add(vector2_1);
|
|
int num5 = (int) ((double) (Main.screenHeight - Y - 24 - num2) * (double) num4) / 20;
|
|
if (num5 < 1)
|
|
num5 = 1;
|
|
if (Main.bannerMouseOver)
|
|
{
|
|
int num6 = 0;
|
|
for (int index1 = 0; index1 < 289; ++index1)
|
|
{
|
|
if (Item.BannerToNPC(index1) != 0 && Main.player[Main.myPlayer].HasNPCBannerBuff(index1))
|
|
{
|
|
++num6;
|
|
string npcNameValue = Lang.GetNPCNameValue(Item.BannerToNPC(index1));
|
|
Vector2 vector2_2 = FontAssets.MouseText.Value.MeasureString(npcNameValue);
|
|
int num7 = X;
|
|
int num8 = Y + (int) vector2_2.Y + num6 * 20 + 10;
|
|
int num9 = 0;
|
|
int num10 = num6 / num5;
|
|
for (int index2 = 0; index2 < num10; ++index2)
|
|
{
|
|
++num9;
|
|
num7 += num1;
|
|
num8 -= num5 * 20;
|
|
}
|
|
if ((double) (num7 - 24 - num1) > (double) Main.screenWidth * (double) num4)
|
|
{
|
|
num3 = num6;
|
|
break;
|
|
}
|
|
vector2List.Add(new Vector2((float) num7, (float) num8) + vector2_2 - p.ToVector2());
|
|
}
|
|
}
|
|
}
|
|
Vector2 zero = Vector2.Zero;
|
|
foreach (Vector2 vector2_3 in vector2List)
|
|
{
|
|
if ((double) zero.X < (double) vector2_3.X)
|
|
zero.X = vector2_3.X;
|
|
if ((double) zero.Y < (double) vector2_3.Y)
|
|
zero.Y = vector2_3.Y;
|
|
}
|
|
if ((double) X + (double) zero.X + 24.0 > (double) Main.screenWidth * (double) num4)
|
|
X = (int) ((double) Main.screenWidth * (double) num4 - (double) zero.X - 24.0);
|
|
if ((double) Y + (double) zero.Y + 4.0 > (double) Main.screenHeight * (double) num4)
|
|
Y = (int) ((double) Main.screenHeight * (double) num4 - (double) zero.Y - 4.0);
|
|
for (int index = 0; index < 5; ++index)
|
|
{
|
|
int num11 = X;
|
|
int num12 = Y + (int) FontAssets.MouseText.Value.MeasureString(buffString).Y;
|
|
Microsoft.Xna.Framework.Color color = Microsoft.Xna.Framework.Color.Black;
|
|
if (index == 0)
|
|
num11 -= 2;
|
|
else if (index == 1)
|
|
num11 += 2;
|
|
else if (index == 2)
|
|
num12 -= 2;
|
|
else if (index == 3)
|
|
num12 += 2;
|
|
else
|
|
color = new Microsoft.Xna.Framework.Color((int) Main.mouseTextColor, (int) Main.mouseTextColor, (int) Main.mouseTextColor, (int) Main.mouseTextColor);
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.MouseText.Value, buffString, new Vector2((float) num11, (float) num12), color, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
if (!Main.bannerMouseOver)
|
|
return;
|
|
int num13 = 0;
|
|
for (int index3 = 0; index3 < 289; ++index3)
|
|
{
|
|
if (Item.BannerToNPC(index3) != 0 && Main.player[Main.myPlayer].HasNPCBannerBuff(index3))
|
|
{
|
|
++num13;
|
|
bool flag = false;
|
|
for (int index4 = 0; index4 < 5; ++index4)
|
|
{
|
|
int num14 = X;
|
|
int num15 = Y + (int) vector2_1.Y + num13 * 20 + 10;
|
|
int num16 = (num13 - 1) / num5;
|
|
int num17 = num14 + num1 * num16;
|
|
int num18 = num15 - num5 * 20 * num16;
|
|
string str = Lang.GetNPCNameValue(Item.BannerToNPC(index3));
|
|
if (num3 == num13)
|
|
{
|
|
str = Language.GetTextValue("UI.Ellipsis");
|
|
flag = true;
|
|
}
|
|
Microsoft.Xna.Framework.Color color = Microsoft.Xna.Framework.Color.Black;
|
|
switch (index4)
|
|
{
|
|
case 0:
|
|
num17 -= 2;
|
|
break;
|
|
case 1:
|
|
num17 += 2;
|
|
break;
|
|
case 2:
|
|
num18 -= 2;
|
|
break;
|
|
case 3:
|
|
num18 += 2;
|
|
break;
|
|
default:
|
|
float num19 = (float) Main.mouseTextColor / (float) byte.MaxValue;
|
|
color = new Microsoft.Xna.Framework.Color((int) (byte) (80.0 * (double) num19), (int) (byte) ((double) byte.MaxValue * (double) num19), (int) (byte) (120.0 * (double) num19), (int) Main.mouseTextColor);
|
|
break;
|
|
}
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.MouseText.Value, str, new Vector2((float) num17, (float) num18), color, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
if (flag)
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
protected void DrawFPS()
|
|
{
|
|
if (!Main.showFrameRate)
|
|
return;
|
|
string str = string.Concat((object) Main.frameRate) + " (" + (object) (Terraria.Liquid.numLiquid + LiquidBuffer.numLiquidBuffer) + ")" + " (" + (object) (int) ((double) Main.gfxQuality * 100.0) + "%)" + " " + Main.debugWords;
|
|
int num = 4;
|
|
if (!Main.gameMenu)
|
|
num = Main.screenHeight - 24;
|
|
Vector2 vector2_1 = new Vector2(4f, (float) num);
|
|
Vector2 vector2_2 = new Vector2(0.0f, 0.0f);
|
|
Vector2 vector2_3 = FontAssets.MouseText.Value.MeasureString(str);
|
|
if (PlayerInput.UsingGamepad && !Main.gameMenu)
|
|
vector2_1.X = (float) (Main.screenWidth - 4) - vector2_3.X;
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.MouseText.Value, str, vector2_1, new Microsoft.Xna.Framework.Color((int) Main.mouseTextColor, (int) Main.mouseTextColor, (int) Main.mouseTextColor, (int) Main.mouseTextColor), 0.0f, vector2_2, 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
|
|
public static void DrawGamepadInstructions()
|
|
{
|
|
if (Main.drawingPlayerChat)
|
|
return;
|
|
string text = PlayerInput.ComposeInstructionsForGamepad();
|
|
if (Main.GamepadDisableInstructionsDisplay || text.Length <= 0 || Main.player[Main.myPlayer].dead && !Main.gameMenu)
|
|
return;
|
|
float num1 = 35f;
|
|
float num2 = 1f;
|
|
Vector2 baseScale = new Vector2(num2);
|
|
if (Main.gameMenu)
|
|
num1 = 55f;
|
|
Vector2 stringSize = ChatManager.GetStringSize(FontAssets.MouseText.Value, text, new Vector2(1f));
|
|
float t2 = num2;
|
|
Utils.Swap<float>(ref GlyphTagHandler.GlyphsScale, ref t2);
|
|
ChatManager.DrawColorCodedStringWithShadow(Main.spriteBatch, FontAssets.MouseText.Value, text, new Vector2(12f, (float) Main.screenHeight - num1) - stringSize * new Vector2(0.0f, 0.0f), Microsoft.Xna.Framework.Color.White, 0.0f, Vector2.Zero, baseScale, spread: (num2 * 2f));
|
|
Utils.Swap<float>(ref GlyphTagHandler.GlyphsScale, ref t2);
|
|
}
|
|
|
|
public static Microsoft.Xna.Framework.Color shine(Microsoft.Xna.Framework.Color newColor, int type)
|
|
{
|
|
int num1 = (int) newColor.R;
|
|
int g = (int) newColor.G;
|
|
int b = (int) newColor.B;
|
|
float num2 = 0.6f;
|
|
int num3;
|
|
int num4;
|
|
switch (type)
|
|
{
|
|
case 25:
|
|
num1 = (int) ((double) newColor.R * 0.949999988079071);
|
|
num3 = (int) ((double) newColor.G * 0.850000023841858);
|
|
num4 = (int) ((double) newColor.B * 1.1);
|
|
break;
|
|
case 117:
|
|
num1 = (int) ((double) newColor.R * 1.10000002384186);
|
|
num3 = (int) ((double) newColor.G * 1.0);
|
|
num4 = (int) ((double) newColor.B * 1.2);
|
|
break;
|
|
case 147:
|
|
case 161:
|
|
num1 = (int) ((double) newColor.R * 1.10000002384186);
|
|
num3 = (int) ((double) newColor.G * 1.12000000476837);
|
|
num4 = (int) ((double) newColor.B * 1.15);
|
|
break;
|
|
case 163:
|
|
num1 = (int) ((double) newColor.R * 1.04999995231628);
|
|
num3 = (int) ((double) newColor.G * 1.10000002384186);
|
|
num4 = (int) ((double) newColor.B * 1.15);
|
|
break;
|
|
case 164:
|
|
num1 = (int) ((double) newColor.R * 1.10000002384186);
|
|
num3 = (int) ((double) newColor.G * 1.10000002384186);
|
|
num4 = (int) ((double) newColor.B * 1.2);
|
|
break;
|
|
case 178:
|
|
float num5 = 0.5f;
|
|
num1 = (int) ((double) newColor.R * (1.0 + (double) num5));
|
|
num3 = (int) ((double) newColor.G * (1.0 + (double) num5));
|
|
num4 = (int) ((double) newColor.B * (1.0 + (double) num5));
|
|
break;
|
|
case 185:
|
|
case 186:
|
|
float num6 = 0.3f;
|
|
num1 = (int) ((double) newColor.R * (1.0 + (double) num6));
|
|
num3 = (int) ((double) newColor.G * (1.0 + (double) num6));
|
|
num4 = (int) ((double) newColor.B * (1.0 + (double) num6));
|
|
break;
|
|
case 204:
|
|
float num7 = (float) (0.300000011920929 + (double) Main.mouseTextColor / 300.0);
|
|
int r = (int) ((double) newColor.R * (1.29999995231628 * (double) num7));
|
|
if (r > (int) byte.MaxValue)
|
|
r = (int) byte.MaxValue;
|
|
return new Microsoft.Xna.Framework.Color(r, g, b, (int) byte.MaxValue);
|
|
case 211:
|
|
float num8 = (float) (0.300000011920929 + (double) Main.mouseTextColor / 300.0);
|
|
num3 = (int) ((double) newColor.G * (1.5 * (double) num8));
|
|
num4 = (int) ((double) newColor.B * (1.10000002384186 * (double) num8));
|
|
break;
|
|
case 262:
|
|
case 263:
|
|
case 264:
|
|
case 265:
|
|
case 266:
|
|
case 267:
|
|
case 268:
|
|
num4 = b + 100;
|
|
num1 += 100;
|
|
num3 = g + 100;
|
|
break;
|
|
default:
|
|
num1 = (int) ((double) newColor.R * (1.0 + (double) num2));
|
|
num3 = (int) ((double) newColor.G * (1.0 + (double) num2));
|
|
num4 = (int) ((double) newColor.B * (1.0 + (double) num2));
|
|
break;
|
|
}
|
|
if (num1 > (int) byte.MaxValue)
|
|
num1 = (int) byte.MaxValue;
|
|
if (num3 > (int) byte.MaxValue)
|
|
num3 = (int) byte.MaxValue;
|
|
if (num4 > (int) byte.MaxValue)
|
|
num4 = (int) byte.MaxValue;
|
|
newColor.R = (byte) num1;
|
|
newColor.G = (byte) num3;
|
|
newColor.B = (byte) num4;
|
|
return new Microsoft.Xna.Framework.Color((int) (byte) num1, (int) (byte) num3, (int) (byte) num4, (int) newColor.A);
|
|
}
|
|
|
|
public static void shine(ref Vector3 newColor, int type)
|
|
{
|
|
float num1 = 0.6f;
|
|
switch (type)
|
|
{
|
|
case 25:
|
|
newColor.X *= 0.95f;
|
|
newColor.Y *= 0.85f;
|
|
newColor.Z *= 1.1f;
|
|
break;
|
|
case 117:
|
|
newColor.X *= 1.1f;
|
|
newColor.Z *= 1.2f;
|
|
break;
|
|
case 147:
|
|
case 161:
|
|
newColor.X *= 1.1f;
|
|
newColor.Y *= 1.12f;
|
|
newColor.Z *= 1.15f;
|
|
break;
|
|
case 163:
|
|
newColor.X *= 1.05f;
|
|
newColor.Y *= 1.1f;
|
|
newColor.Z *= 1.15f;
|
|
break;
|
|
case 164:
|
|
newColor.X *= 1.1f;
|
|
newColor.Y *= 1.1f;
|
|
newColor.Z *= 1.2f;
|
|
break;
|
|
case 178:
|
|
float num2 = 0.5f;
|
|
newColor.X *= 1f + num2;
|
|
newColor.Y *= 1f + num2;
|
|
newColor.Z *= 1f + num2;
|
|
break;
|
|
case 185:
|
|
case 186:
|
|
float num3 = 0.3f;
|
|
newColor.X *= 1f + num3;
|
|
newColor.Y *= 1f + num3;
|
|
newColor.Z *= 1f + num3;
|
|
break;
|
|
case 204:
|
|
float num4 = (float) (0.300000011920929 + (double) Main.mouseTextColor / 300.0);
|
|
newColor.X *= 1.3f * num4;
|
|
break;
|
|
case 211:
|
|
float num5 = (float) (0.300000011920929 + (double) Main.mouseTextColor / 300.0);
|
|
newColor.Y *= 1.5f * num5;
|
|
newColor.Z *= 1.1f * num5;
|
|
break;
|
|
case 262:
|
|
case 263:
|
|
case 264:
|
|
case 265:
|
|
case 266:
|
|
case 267:
|
|
case 268:
|
|
newColor.X += 0.39f;
|
|
newColor.Y += 0.39f;
|
|
newColor.Z += 0.39f;
|
|
break;
|
|
default:
|
|
newColor.X *= 1f + num1;
|
|
newColor.Y *= 1f + num1;
|
|
newColor.Z *= 1f + num1;
|
|
break;
|
|
}
|
|
}
|
|
|
|
private void DrawTileEntities(bool solidLayer, bool overRenderTargets, bool intoRenderTargets) => this.TilesRenderer.PostDrawTiles(solidLayer, overRenderTargets, intoRenderTargets);
|
|
|
|
public void ClearCachedTileDraws()
|
|
{
|
|
this.TilesRenderer.ClearCachedTileDraws(false);
|
|
this.TilesRenderer.ClearCachedTileDraws(true);
|
|
}
|
|
|
|
public static bool IsTileSpelunkable(Tile t) => Main.IsTileSpelunkable(t.type, t.frameX, t.frameY);
|
|
|
|
public static bool IsTileSpelunkable(ushort typeCache, short tileFrameX, short tileFrameY) => Main.tileSpelunker[(int) typeCache] || typeCache == (ushort) 185 && tileFrameY == (short) 18 && tileFrameX >= (short) 576 && tileFrameX <= (short) 882 || typeCache == (ushort) 186 && tileFrameX >= (short) 864 && tileFrameX <= (short) 1170;
|
|
|
|
protected void DrawTiles(
|
|
bool solidLayer,
|
|
bool forRenderTargets,
|
|
bool intoRenderTargets,
|
|
int waterStyleOverride = -1)
|
|
{
|
|
this.TilesRenderer.Draw(solidLayer, forRenderTargets, intoRenderTargets, waterStyleOverride);
|
|
}
|
|
|
|
protected void DrawGoreBehind()
|
|
{
|
|
for (int index = 0; index < 600; ++index)
|
|
{
|
|
if (Main.gore[index].active && Main.gore[index].type > 0)
|
|
{
|
|
bool flag = false;
|
|
if ((Main.gore[index].type >= 706 && Main.gore[index].type <= 717 || Main.gore[index].type == 943 || Main.gore[index].type == 1147 || Main.gore[index].type >= 1160 && Main.gore[index].type <= 1162) && (Main.gore[index].frame < (byte) 7 || Main.gore[index].frame > (byte) 9))
|
|
flag = true;
|
|
if (flag)
|
|
{
|
|
this.LoadGore(Main.gore[index].type);
|
|
if (Main.gore[index].Frame.ColumnCount > (byte) 1 || Main.gore[index].Frame.RowCount > (byte) 1)
|
|
{
|
|
Microsoft.Xna.Framework.Rectangle sourceRectangle = Main.gore[index].Frame.GetSourceRectangle(TextureAssets.Gore[Main.gore[index].type].Value);
|
|
Microsoft.Xna.Framework.Color alpha = Main.gore[index].GetAlpha(Lighting.GetColor((int) ((double) Main.gore[index].position.X + (double) sourceRectangle.Width * 0.5) / 16, (int) (((double) Main.gore[index].position.Y + (double) sourceRectangle.Height * 0.5) / 16.0)));
|
|
Main.spriteBatch.Draw(TextureAssets.Gore[Main.gore[index].type].Value, new Vector2(Main.gore[index].position.X - Main.screenPosition.X + (float) (sourceRectangle.Width / 2), (float) ((double) Main.gore[index].position.Y - (double) Main.screenPosition.Y + (double) (sourceRectangle.Height / 2) - 2.0)), new Microsoft.Xna.Framework.Rectangle?(sourceRectangle), alpha, Main.gore[index].rotation, new Vector2((float) (sourceRectangle.Width / 2), (float) (sourceRectangle.Height / 2)), Main.gore[index].scale, SpriteEffects.None, 0.0f);
|
|
}
|
|
else
|
|
{
|
|
Microsoft.Xna.Framework.Color alpha = Main.gore[index].GetAlpha(Lighting.GetColor((int) ((double) Main.gore[index].position.X + (double) TextureAssets.Gore[Main.gore[index].type].Width() * 0.5) / 16, (int) (((double) Main.gore[index].position.Y + (double) TextureAssets.Gore[Main.gore[index].type].Height() * 0.5) / 16.0)));
|
|
Main.spriteBatch.Draw(TextureAssets.Gore[Main.gore[index].type].Value, new Vector2(Main.gore[index].position.X - Main.screenPosition.X + (float) (TextureAssets.Gore[Main.gore[index].type].Width() / 2), Main.gore[index].position.Y - Main.screenPosition.Y + (float) (TextureAssets.Gore[Main.gore[index].type].Height() / 2)), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Gore[Main.gore[index].type].Width(), TextureAssets.Gore[Main.gore[index].type].Height())), alpha, Main.gore[index].rotation, new Vector2((float) (TextureAssets.Gore[Main.gore[index].type].Width() / 2), (float) (TextureAssets.Gore[Main.gore[index].type].Height() / 2)), Main.gore[index].scale, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
protected void DrawGore()
|
|
{
|
|
Main.drawBackGore = false;
|
|
for (int index = 0; index < 600; ++index)
|
|
{
|
|
if (Main.gore[index].active && Main.gore[index].type > 0)
|
|
{
|
|
if ((Main.gore[index].type >= 706 && Main.gore[index].type <= 717 || Main.gore[index].type == 943 || Main.gore[index].type == 1147 || Main.gore[index].type >= 1160 && Main.gore[index].type <= 1162) && (Main.gore[index].frame < (byte) 7 || Main.gore[index].frame > (byte) 9))
|
|
{
|
|
Main.drawBackGore = true;
|
|
}
|
|
else
|
|
{
|
|
this.LoadGore(Main.gore[index].type);
|
|
if (Main.gore[index].Frame.ColumnCount > (byte) 1 || Main.gore[index].Frame.RowCount > (byte) 1)
|
|
{
|
|
Microsoft.Xna.Framework.Rectangle sourceRectangle = Main.gore[index].Frame.GetSourceRectangle(TextureAssets.Gore[Main.gore[index].type].Value);
|
|
Vector2 vector2 = new Vector2(0.0f, 0.0f);
|
|
if (Main.gore[index].type == 1217)
|
|
vector2.Y += 4f;
|
|
Microsoft.Xna.Framework.Color alpha = Main.gore[index].GetAlpha(Lighting.GetColor((int) ((double) Main.gore[index].position.X + (double) sourceRectangle.Width * 0.5) / 16, (int) (((double) Main.gore[index].position.Y + (double) sourceRectangle.Height * 0.5) / 16.0)));
|
|
Main.spriteBatch.Draw(TextureAssets.Gore[Main.gore[index].type].Value, new Vector2(Main.gore[index].position.X - Main.screenPosition.X + (float) (sourceRectangle.Width / 2), (float) ((double) Main.gore[index].position.Y - (double) Main.screenPosition.Y + (double) (sourceRectangle.Height / 2) - 2.0)) + vector2, new Microsoft.Xna.Framework.Rectangle?(sourceRectangle), alpha, Main.gore[index].rotation, new Vector2((float) (sourceRectangle.Width / 2), (float) (sourceRectangle.Height / 2)), Main.gore[index].scale, SpriteEffects.None, 0.0f);
|
|
}
|
|
else
|
|
{
|
|
Microsoft.Xna.Framework.Color alpha = Main.gore[index].GetAlpha(Lighting.GetColor((int) ((double) Main.gore[index].position.X + (double) TextureAssets.Gore[Main.gore[index].type].Width() * 0.5) / 16, (int) (((double) Main.gore[index].position.Y + (double) TextureAssets.Gore[Main.gore[index].type].Height() * 0.5) / 16.0)));
|
|
Main.spriteBatch.Draw(TextureAssets.Gore[Main.gore[index].type].Value, new Vector2(Main.gore[index].position.X - Main.screenPosition.X + (float) (TextureAssets.Gore[Main.gore[index].type].Width() / 2), Main.gore[index].position.Y - Main.screenPosition.Y + (float) (TextureAssets.Gore[Main.gore[index].type].Height() / 2)), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Gore[Main.gore[index].type].Width(), TextureAssets.Gore[Main.gore[index].type].Height())), alpha, Main.gore[index].rotation, new Vector2((float) (TextureAssets.Gore[Main.gore[index].type].Width() / 2), (float) (TextureAssets.Gore[Main.gore[index].type].Height() / 2)), Main.gore[index].scale, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
TimeLogger.DetailedDrawTime(24);
|
|
}
|
|
|
|
public void DrawHealthBar(
|
|
float X,
|
|
float Y,
|
|
int Health,
|
|
int MaxHealth,
|
|
float alpha,
|
|
float scale = 1f,
|
|
bool noFlip = false)
|
|
{
|
|
if (Health <= 0)
|
|
return;
|
|
float num1 = (float) Health / (float) MaxHealth;
|
|
if ((double) num1 > 1.0)
|
|
num1 = 1f;
|
|
int num2 = (int) (36.0 * (double) num1);
|
|
float num3 = X - 18f * scale;
|
|
float num4 = Y;
|
|
if ((double) Main.player[Main.myPlayer].gravDir == -1.0 && !noFlip)
|
|
{
|
|
float num5 = num4 - Main.screenPosition.Y;
|
|
num4 = Main.screenPosition.Y + (float) Main.screenHeight - num5;
|
|
}
|
|
float num6 = 0.0f;
|
|
float maxValue = (float) byte.MaxValue;
|
|
float num7 = num1 - 0.1f;
|
|
float num8;
|
|
float num9;
|
|
if ((double) num7 > 0.5)
|
|
{
|
|
num8 = (float) byte.MaxValue;
|
|
num9 = (float) ((double) byte.MaxValue * (1.0 - (double) num7) * 2.0);
|
|
}
|
|
else
|
|
{
|
|
num8 = (float) ((double) byte.MaxValue * (double) num7 * 2.0);
|
|
num9 = (float) byte.MaxValue;
|
|
}
|
|
float num10 = 0.95f;
|
|
float num11 = num9 * alpha * num10;
|
|
float num12 = num8 * alpha * num10;
|
|
float num13 = maxValue * alpha * num10;
|
|
if ((double) num11 < 0.0)
|
|
num11 = 0.0f;
|
|
if ((double) num11 > (double) byte.MaxValue)
|
|
num11 = (float) byte.MaxValue;
|
|
if ((double) num12 < 0.0)
|
|
num12 = 0.0f;
|
|
if ((double) num12 > (double) byte.MaxValue)
|
|
num12 = (float) byte.MaxValue;
|
|
if ((double) num13 < 0.0)
|
|
num13 = 0.0f;
|
|
if ((double) num13 > (double) byte.MaxValue)
|
|
num13 = (float) byte.MaxValue;
|
|
Microsoft.Xna.Framework.Color color = new Microsoft.Xna.Framework.Color((int) (byte) num11, (int) (byte) num12, (int) (byte) num6, (int) (byte) num13);
|
|
if (num2 < 3)
|
|
num2 = 3;
|
|
if (num2 < 34)
|
|
{
|
|
if (num2 < 36)
|
|
Main.spriteBatch.Draw(TextureAssets.Hb2.Value, new Vector2((float) ((double) num3 - (double) Main.screenPosition.X + (double) num2 * (double) scale), num4 - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(2, 0, 2, TextureAssets.Hb2.Height())), color, 0.0f, new Vector2(0.0f, 0.0f), scale, SpriteEffects.None, 0.0f);
|
|
if (num2 < 34)
|
|
Main.spriteBatch.Draw(TextureAssets.Hb2.Value, new Vector2((float) ((double) num3 - (double) Main.screenPosition.X + (double) (num2 + 2) * (double) scale), num4 - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(num2 + 2, 0, 36 - num2 - 2, TextureAssets.Hb2.Height())), color, 0.0f, new Vector2(0.0f, 0.0f), scale, SpriteEffects.None, 0.0f);
|
|
if (num2 > 2)
|
|
Main.spriteBatch.Draw(TextureAssets.Hb1.Value, new Vector2(num3 - Main.screenPosition.X, num4 - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, num2 - 2, TextureAssets.Hb1.Height())), color, 0.0f, new Vector2(0.0f, 0.0f), scale, SpriteEffects.None, 0.0f);
|
|
Main.spriteBatch.Draw(TextureAssets.Hb1.Value, new Vector2((float) ((double) num3 - (double) Main.screenPosition.X + (double) (num2 - 2) * (double) scale), num4 - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(32, 0, 2, TextureAssets.Hb1.Height())), color, 0.0f, new Vector2(0.0f, 0.0f), scale, SpriteEffects.None, 0.0f);
|
|
}
|
|
else
|
|
{
|
|
if (num2 < 36)
|
|
Main.spriteBatch.Draw(TextureAssets.Hb2.Value, new Vector2((float) ((double) num3 - (double) Main.screenPosition.X + (double) num2 * (double) scale), num4 - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(num2, 0, 36 - num2, TextureAssets.Hb2.Height())), color, 0.0f, new Vector2(0.0f, 0.0f), scale, SpriteEffects.None, 0.0f);
|
|
Main.spriteBatch.Draw(TextureAssets.Hb1.Value, new Vector2(num3 - Main.screenPosition.X, num4 - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, num2, TextureAssets.Hb1.Height())), color, 0.0f, new Vector2(0.0f, 0.0f), scale, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
|
|
public static float NPCAddHeight(NPC theNPC)
|
|
{
|
|
float num = 0.0f;
|
|
if (theNPC.type == 125)
|
|
num = 30f;
|
|
else if (theNPC.type == 54)
|
|
num = 2f;
|
|
else if (theNPC.type == 205)
|
|
num = 8f;
|
|
else if (theNPC.type == 182)
|
|
num = 24f;
|
|
else if (theNPC.type == 178)
|
|
num = 2f;
|
|
else if (theNPC.type == 126)
|
|
num = 30f;
|
|
else if (theNPC.type == 6 || theNPC.type == 173)
|
|
num = 26f;
|
|
else if (theNPC.type == 94)
|
|
num = 14f;
|
|
else if (theNPC.type == 7 || theNPC.type == 8 || theNPC.type == 9)
|
|
num = 13f;
|
|
else if (theNPC.type == 98 || theNPC.type == 99 || theNPC.type == 100)
|
|
num = 13f;
|
|
else if (theNPC.type == 95 || theNPC.type == 96 || theNPC.type == 97)
|
|
num = 13f;
|
|
else if (theNPC.type == 10 || theNPC.type == 11 || theNPC.type == 12)
|
|
num = 8f;
|
|
else if (theNPC.type == 13 || theNPC.type == 14 || theNPC.type == 15)
|
|
num = 26f;
|
|
else if (theNPC.type == 175)
|
|
num = 4f;
|
|
else if (theNPC.type == 520)
|
|
num = 2f;
|
|
else if (theNPC.type >= 412 && theNPC.type <= 414)
|
|
num = 18f;
|
|
else if (theNPC.type == 48)
|
|
num = 32f;
|
|
else if (theNPC.type == 49 || theNPC.type == 51)
|
|
num = 4f;
|
|
else if (theNPC.type == 60)
|
|
num = 10f;
|
|
else if (theNPC.type == 62 || theNPC.type == 66 || theNPC.type == 156)
|
|
num = 14f;
|
|
else if (theNPC.type == 63 || theNPC.type == 64 || theNPC.type == 103)
|
|
num = 4f;
|
|
else if (theNPC.type == 65)
|
|
num = 5f;
|
|
else if (theNPC.type == 69)
|
|
num = 4f;
|
|
else if (theNPC.type == 70)
|
|
num = -4f;
|
|
else if (theNPC.type == 72)
|
|
num = -2f;
|
|
else if (theNPC.type == 83 || theNPC.type == 84)
|
|
num = 20f;
|
|
else if (theNPC.type == 150 || theNPC.type == 151 || theNPC.type == 158)
|
|
num = 10f;
|
|
else if (theNPC.type == 152)
|
|
num = 6f;
|
|
else if (theNPC.type == 153 || theNPC.type == 154)
|
|
num = 2f;
|
|
else if (theNPC.type == 165 || theNPC.type == 237 || theNPC.type == 238 || theNPC.type == 240 || theNPC.type == 531)
|
|
num = 10f;
|
|
else if (theNPC.type == 39 || theNPC.type == 40 || theNPC.type == 41)
|
|
num = 26f;
|
|
else if (theNPC.type >= 87 && theNPC.type <= 92)
|
|
num = 56f;
|
|
else if (theNPC.type >= 134 && theNPC.type <= 136)
|
|
num = 30f;
|
|
else if (theNPC.type == 169)
|
|
num = 8f;
|
|
else if (theNPC.type == 174)
|
|
num = 6f;
|
|
else if (theNPC.type == 369)
|
|
num = 2f;
|
|
else if (theNPC.type == 376)
|
|
num = 6f;
|
|
else if (theNPC.type == 579)
|
|
num = -2f;
|
|
else if (theNPC.type == 613 || theNPC.type == 612)
|
|
num = 2f;
|
|
switch (theNPC.type)
|
|
{
|
|
case 269:
|
|
case 270:
|
|
case 271:
|
|
case 274:
|
|
case 277:
|
|
num -= 2f;
|
|
break;
|
|
}
|
|
if (theNPC.townNPC && (double) theNPC.ai[0] == 5.0)
|
|
{
|
|
num -= 4f;
|
|
if (theNPC.type == 637 || theNPC.type == 656)
|
|
num -= 10f;
|
|
}
|
|
return num * theNPC.scale;
|
|
}
|
|
|
|
protected void DrawProjectiles()
|
|
{
|
|
PlayerInput.SetZoom_MouseInWorld();
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, Main.DefaultSamplerState, DepthStencilState.None, Main.Rasterizer, (Effect) null, Main.Transform);
|
|
int num = 0;
|
|
Main.CurrentDrawnEntity = (Entity) null;
|
|
Main.CurrentDrawnEntityShader = 0;
|
|
if (Main.ignoreErrors)
|
|
{
|
|
for (int i = 0; i < 1000; ++i)
|
|
{
|
|
if (Main.projectile[i].active && Main.projectile[i].type > 0 && !Main.projectile[i].hide)
|
|
{
|
|
++num;
|
|
try
|
|
{
|
|
this.DrawProj(i);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
TimeLogger.DrawException(ex);
|
|
Main.projectile[i].active = false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
for (int i = 0; i < 1000; ++i)
|
|
{
|
|
if (Main.projectile[i].active && Main.projectile[i].type > 0 && !Main.projectile[i].hide)
|
|
this.DrawProj(i);
|
|
}
|
|
}
|
|
Main.CurrentDrawnEntity = (Entity) null;
|
|
Main.CurrentDrawnEntityShader = 0;
|
|
Main.spriteBatch.End();
|
|
TimeLogger.DetailedDrawTime(20);
|
|
}
|
|
|
|
public static int GetProjectileDesiredShader(int i)
|
|
{
|
|
int num = 0;
|
|
if (Main.projectile[i].minion && Main.projectile[i].owner != (int) byte.MaxValue)
|
|
num = Main.player[Main.projectile[i].owner].cMinion;
|
|
if (Main.projHook[Main.projectile[i].type] && Main.projectile[i].owner != (int) byte.MaxValue)
|
|
num = Main.player[Main.projectile[i].owner].cGrapple;
|
|
if (Main.projPet[Main.projectile[i].type] && !Main.projectile[i].minion && Main.projectile[i].owner != (int) byte.MaxValue && Main.projectile[i].damage == 0 && !ProjectileID.Sets.LightPet[Main.projectile[i].type])
|
|
num = Main.player[Main.projectile[i].owner].cPet;
|
|
if (!Main.projectile[i].minion && Main.projectile[i].owner != (int) byte.MaxValue && Main.projectile[i].damage == 0 && ProjectileID.Sets.LightPet[Main.projectile[i].type])
|
|
num = Main.player[Main.projectile[i].owner].cLight;
|
|
if (Main.projectile[i].type == 623 && Main.projectile[i].owner != (int) byte.MaxValue)
|
|
num = Main.player[Main.projectile[i].owner].cPet;
|
|
return num;
|
|
}
|
|
|
|
private void RefreshPlayerDrawOrder()
|
|
{
|
|
this._playersThatDrawBehindNPCs.Clear();
|
|
this._playersThatDrawAfterProjectiles.Clear();
|
|
if (Main.gameMenu)
|
|
return;
|
|
for (int index = 0; index < (int) byte.MaxValue; ++index)
|
|
{
|
|
Player player = Main.player[index];
|
|
if (index != Main.myPlayer && player.active && !player.outOfRange)
|
|
{
|
|
if (player.isLockedToATile)
|
|
this._playersThatDrawBehindNPCs.Add(player);
|
|
else
|
|
this._playersThatDrawAfterProjectiles.Add(player);
|
|
}
|
|
}
|
|
Player localPlayer = Main.LocalPlayer;
|
|
if (localPlayer.isLockedToATile)
|
|
this._playersThatDrawBehindNPCs.Add(localPlayer);
|
|
else
|
|
this._playersThatDrawAfterProjectiles.Add(localPlayer);
|
|
}
|
|
|
|
protected void DrawPlayers_BehindNPCs()
|
|
{
|
|
Main.PotionOfReturnRenderer.DrawPlayers(Main.Camera, this._playersThatDrawBehindNPCs.Where<Player>((Func<Player, bool>) (p => p.PotionOfReturnOriginalUsePosition.HasValue)));
|
|
Main.PlayerRenderer.DrawPlayers(Main.Camera, (IEnumerable<Player>) this._playersThatDrawBehindNPCs);
|
|
}
|
|
|
|
protected void DrawPlayers_AfterProjectiles()
|
|
{
|
|
Main.PotionOfReturnRenderer.DrawPlayers(Main.Camera, this._playersThatDrawAfterProjectiles.Where<Player>((Func<Player, bool>) (p => p.PotionOfReturnOriginalUsePosition.HasValue)));
|
|
Main.PlayerRenderer.DrawPlayers(Main.Camera, (IEnumerable<Player>) this._playersThatDrawAfterProjectiles);
|
|
}
|
|
|
|
protected void DrawElderEye(
|
|
SpriteBatch spriteBatch,
|
|
Vector2 worldPosition,
|
|
float opacity,
|
|
float scale,
|
|
int frameNumber,
|
|
Microsoft.Xna.Framework.Color passedColor)
|
|
{
|
|
Texture2D texture2D = TextureAssets.Extra[78].Value;
|
|
Vector2 origin = new Vector2(68f, 94f);
|
|
Microsoft.Xna.Framework.Rectangle rectangle = texture2D.Frame(verticalFrames: 8, frameY: frameNumber);
|
|
Vector2 position = worldPosition - Main.screenPosition;
|
|
passedColor *= opacity;
|
|
spriteBatch.Draw(texture2D, position, new Microsoft.Xna.Framework.Rectangle?(rectangle), passedColor, 0.0f, origin, scale, SpriteEffects.None, 0.0f);
|
|
}
|
|
|
|
protected void DrawNPCs(bool behindTiles = false)
|
|
{
|
|
bool flag1 = false;
|
|
Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.Rectangle((int) Main.screenPosition.X - 800, (int) Main.screenPosition.Y - 800, Main.screenWidth + 1600, Main.screenHeight + 1600);
|
|
for (int iNPCIndex = 199; iNPCIndex >= 0; --iNPCIndex)
|
|
{
|
|
try
|
|
{
|
|
if (Main.npc[iNPCIndex].active)
|
|
{
|
|
if (Main.npc[iNPCIndex].type > 0)
|
|
{
|
|
if (Main.npc[iNPCIndex].type < 663)
|
|
{
|
|
if (!Main.npc[iNPCIndex].hide)
|
|
{
|
|
NPC npc1 = Main.npc[iNPCIndex];
|
|
npc1.position = npc1.position + Main.npc[iNPCIndex].netOffset;
|
|
if (Main.npc[iNPCIndex].behindTiles == behindTiles)
|
|
{
|
|
if (Main.npc[iNPCIndex].type == 125 || Main.npc[iNPCIndex].type == 126)
|
|
{
|
|
if (!flag1)
|
|
{
|
|
flag1 = true;
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active && iNPCIndex != index && (Main.npc[index].type == 125 || Main.npc[index].type == 126))
|
|
{
|
|
float num1 = Main.npc[index].position.X + (float) Main.npc[index].width * 0.5f;
|
|
float num2 = Main.npc[index].position.Y + (float) Main.npc[index].height * 0.5f;
|
|
Vector2 vector2 = new Vector2(Main.npc[iNPCIndex].position.X + (float) Main.npc[iNPCIndex].width * 0.5f, Main.npc[iNPCIndex].position.Y + (float) Main.npc[iNPCIndex].height * 0.5f);
|
|
float num3 = num1 - vector2.X;
|
|
float num4 = num2 - vector2.Y;
|
|
float rotation = (float) Math.Atan2((double) num4, (double) num3) - 1.57f;
|
|
bool flag2 = true;
|
|
if (Math.Sqrt((double) num3 * (double) num3 + (double) num4 * (double) num4) > 2000.0)
|
|
flag2 = false;
|
|
while (flag2)
|
|
{
|
|
float num5 = (float) Math.Sqrt((double) num3 * (double) num3 + (double) num4 * (double) num4);
|
|
if ((double) num5 < 40.0)
|
|
{
|
|
flag2 = false;
|
|
}
|
|
else
|
|
{
|
|
float num6 = (float) TextureAssets.Chain12.Height() / num5;
|
|
float num7 = num3 * num6;
|
|
float num8 = num4 * num6;
|
|
vector2.X += num7;
|
|
vector2.Y += num8;
|
|
num3 = num1 - vector2.X;
|
|
num4 = num2 - vector2.Y;
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) vector2.X / 16, (int) ((double) vector2.Y / 16.0));
|
|
Main.spriteBatch.Draw(TextureAssets.Chain12.Value, new Vector2(vector2.X - Main.screenPosition.X, vector2.Y - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Chain12.Width(), TextureAssets.Chain12.Height())), color, rotation, new Vector2((float) TextureAssets.Chain12.Width() * 0.5f, (float) TextureAssets.Chain12.Height() * 0.5f), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if (Main.npc[iNPCIndex].type == 263 && Main.npc[iNPCIndex].aiStyle == 52 && NPC.plantBoss >= 0)
|
|
{
|
|
Vector2 vector2 = new Vector2(Main.npc[iNPCIndex].position.X + (float) (Main.npc[iNPCIndex].width / 2), Main.npc[iNPCIndex].position.Y + (float) (Main.npc[iNPCIndex].height / 2));
|
|
float num9 = Main.npc[NPC.plantBoss].Center.X - vector2.X;
|
|
float num10 = Main.npc[NPC.plantBoss].Center.Y - vector2.Y;
|
|
float rotation = (float) Math.Atan2((double) num10, (double) num9) - 1.57f;
|
|
bool flag3 = true;
|
|
while (flag3)
|
|
{
|
|
int height = 16;
|
|
int num11 = 32;
|
|
float num12 = (float) Math.Sqrt((double) num9 * (double) num9 + (double) num10 * (double) num10);
|
|
if ((double) num12 < (double) num11)
|
|
{
|
|
height = (int) num12 - num11 + height;
|
|
flag3 = false;
|
|
}
|
|
float num13 = (float) height / num12;
|
|
float num14 = num9 * num13;
|
|
float num15 = num10 * num13;
|
|
vector2.X += num14;
|
|
vector2.Y += num15;
|
|
num9 = Main.npc[NPC.plantBoss].Center.X - vector2.X + Main.npc[NPC.plantBoss].netOffset.X;
|
|
num10 = Main.npc[NPC.plantBoss].Center.Y - vector2.Y + Main.npc[NPC.plantBoss].netOffset.Y;
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) vector2.X / 16, (int) ((double) vector2.Y / 16.0));
|
|
Main.spriteBatch.Draw(TextureAssets.Chain26.Value, new Vector2(vector2.X - Main.screenPosition.X, vector2.Y - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Chain26.Width(), height)), color, rotation, new Vector2((float) TextureAssets.Chain26.Width() * 0.5f, (float) TextureAssets.Chain26.Height() * 0.5f), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
else if (Main.npc[iNPCIndex].type == 264 && Main.npc[iNPCIndex].aiStyle == 53 && NPC.plantBoss >= 0)
|
|
{
|
|
int index = NPC.plantBoss;
|
|
if ((double) Main.npc[iNPCIndex].ai[3] > 0.0)
|
|
index = (int) Main.npc[iNPCIndex].ai[3] - 1;
|
|
Vector2 vector2 = new Vector2(Main.npc[iNPCIndex].position.X + (float) (Main.npc[iNPCIndex].width / 2), Main.npc[iNPCIndex].position.Y + (float) (Main.npc[iNPCIndex].height / 2));
|
|
float num16 = Main.npc[index].Center.X - vector2.X;
|
|
float num17 = Main.npc[index].Center.Y - vector2.Y;
|
|
float rotation = (float) Math.Atan2((double) num17, (double) num16) - 1.57f;
|
|
bool flag4 = true;
|
|
while (flag4)
|
|
{
|
|
int height = 16;
|
|
int num18 = 32;
|
|
float num19 = (float) Math.Sqrt((double) num16 * (double) num16 + (double) num17 * (double) num17);
|
|
if ((double) num19 < (double) num18)
|
|
{
|
|
height = (int) num19 - num18 + height;
|
|
flag4 = false;
|
|
}
|
|
float num20 = (float) height / num19;
|
|
float num21 = num16 * num20;
|
|
float num22 = num17 * num20;
|
|
vector2.X += num21;
|
|
vector2.Y += num22;
|
|
num16 = Main.npc[index].Center.X - vector2.X + Main.npc[index].netOffset.X;
|
|
num17 = Main.npc[index].Center.Y - vector2.Y + Main.npc[index].netOffset.Y;
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) vector2.X / 16, (int) ((double) vector2.Y / 16.0));
|
|
Main.spriteBatch.Draw(TextureAssets.Chain27.Value, new Vector2(vector2.X - Main.screenPosition.X, vector2.Y - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Chain27.Width(), height)), color, rotation, new Vector2((float) TextureAssets.Chain27.Width() * 0.5f, (float) TextureAssets.Chain27.Height() * 0.5f), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
if (NPCID.Sets.MustAlwaysDraw[Main.npc[iNPCIndex].type] || rectangle.Intersects(new Microsoft.Xna.Framework.Rectangle((int) Main.npc[iNPCIndex].position.X, (int) Main.npc[iNPCIndex].position.Y, Main.npc[iNPCIndex].width, Main.npc[iNPCIndex].height)))
|
|
{
|
|
this.DrawNPCCheckAlt(Main.npc[iNPCIndex]);
|
|
this.DrawNPC(iNPCIndex, behindTiles);
|
|
}
|
|
}
|
|
NPC npc2 = Main.npc[iNPCIndex];
|
|
npc2.position = npc2.position - Main.npc[iNPCIndex].netOffset;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
Main.npc[iNPCIndex].active = false;
|
|
}
|
|
}
|
|
}
|
|
|
|
protected void DrawNPCCheckAlt(NPC n)
|
|
{
|
|
ITownNPCProfile profile;
|
|
if (!TownNPCProfiles.Instance.GetProfile(n.type, out profile))
|
|
return;
|
|
TextureAssets.Npc[n.type] = profile.GetTextureNPCShouldUse(n);
|
|
}
|
|
|
|
protected void DrawNPC(int iNPCIndex, bool behindTiles)
|
|
{
|
|
NPC rCurrentNPC = Main.npc[iNPCIndex];
|
|
Vector2 screenPosition = Main.screenPosition;
|
|
this.DrawNPCDirect(Main.spriteBatch, rCurrentNPC, behindTiles, screenPosition);
|
|
}
|
|
|
|
public void DrawNPCDirect_QueenSlimeWings(
|
|
NPC rCurrentNPC,
|
|
SpriteBatch mySpriteBatch,
|
|
Vector2 screenPos,
|
|
Vector2 drawCenter,
|
|
Microsoft.Xna.Framework.Color originColor)
|
|
{
|
|
Texture2D texture2D = TextureAssets.Extra[185].Value;
|
|
Microsoft.Xna.Framework.Rectangle r = texture2D.Frame(verticalFrames: 4, frameY: ((int) rCurrentNPC.localAI[3] / 6));
|
|
float scale = 0.8f;
|
|
for (int index = 0; index < 2; ++index)
|
|
{
|
|
float x = 1f;
|
|
float num1 = 0.0f;
|
|
SpriteEffects effects = SpriteEffects.None;
|
|
if (index == 1)
|
|
{
|
|
x = 0.0f;
|
|
num1 = (float) (-(double) num1 + 2.0);
|
|
effects = SpriteEffects.FlipHorizontally;
|
|
}
|
|
Vector2 origin = r.Size() * new Vector2(x, 0.5f);
|
|
Vector2 vector2 = new Vector2(drawCenter.X + num1, drawCenter.Y);
|
|
if ((double) rCurrentNPC.rotation != 0.0)
|
|
vector2 = vector2.RotatedBy((double) rCurrentNPC.rotation, rCurrentNPC.Bottom);
|
|
vector2 -= screenPos;
|
|
float num2 = MathHelper.Clamp(rCurrentNPC.velocity.Y, -6f, 6f) * -0.1f;
|
|
if (index == 0)
|
|
num2 *= -1f;
|
|
mySpriteBatch.Draw(texture2D, vector2, new Microsoft.Xna.Framework.Rectangle?(r), originColor, rCurrentNPC.rotation + num2, origin, scale, effects, 0.0f);
|
|
}
|
|
}
|
|
|
|
public void DrawNPCDirect(
|
|
SpriteBatch mySpriteBatch,
|
|
NPC rCurrentNPC,
|
|
bool behindTiles,
|
|
Vector2 screenPos)
|
|
{
|
|
int type = rCurrentNPC.type;
|
|
rCurrentNPC.SetFrameSize();
|
|
Vector3 vector3;
|
|
if (rCurrentNPC.realLife == -1 && rCurrentNPC.life >= rCurrentNPC.lifeMax && !rCurrentNPC.boss)
|
|
{
|
|
vector3 = Lighting.GetColor((int) ((double) rCurrentNPC.position.X + (double) rCurrentNPC.width * 0.5) / 16, (int) (((double) rCurrentNPC.position.Y + (double) rCurrentNPC.height * 0.5) / 16.0)).ToVector3();
|
|
bool flag1 = (double) vector3.Length() > 0.432500004768372;
|
|
bool flag2 = false;
|
|
if (LockOnHelper.AimedTarget == rCurrentNPC)
|
|
flag2 = true;
|
|
else if ((double) rCurrentNPC.Distance(Main.player[Main.myPlayer].Center) < 350.0 & flag1)
|
|
flag2 = true;
|
|
if (flag2 && rCurrentNPC.lifeMax < 5)
|
|
flag2 = false;
|
|
if (flag2 && rCurrentNPC.aiStyle == 25 && (double) rCurrentNPC.ai[0] == 0.0)
|
|
flag2 = false;
|
|
rCurrentNPC.nameOver = !flag2 ? MathHelper.Clamp(rCurrentNPC.nameOver - 0.025f, 0.0f, 1f) : MathHelper.Clamp(rCurrentNPC.nameOver + 0.025f, 0.0f, 1f);
|
|
}
|
|
else
|
|
rCurrentNPC.nameOver = MathHelper.Clamp(rCurrentNPC.nameOver - 0.025f, 0.0f, 1f);
|
|
if (type == 1 && (double) rCurrentNPC.ai[0] == -999.0)
|
|
return;
|
|
if (type == 101)
|
|
{
|
|
bool flag3 = true;
|
|
Vector2 vector2 = new Vector2(rCurrentNPC.position.X + (float) (rCurrentNPC.width / 2), rCurrentNPC.position.Y + (float) (rCurrentNPC.height / 2));
|
|
float num1 = (float) ((double) rCurrentNPC.ai[0] * 16.0 + 8.0) - vector2.X;
|
|
float num2 = (float) ((double) rCurrentNPC.ai[1] * 16.0 + 8.0) - vector2.Y;
|
|
float rotation = (float) Math.Atan2((double) num2, (double) num1) - 1.57f;
|
|
bool flag4 = true;
|
|
while (flag4)
|
|
{
|
|
float scale = 0.75f;
|
|
int height = 28;
|
|
float num3 = (float) Math.Sqrt((double) num1 * (double) num1 + (double) num2 * (double) num2);
|
|
if ((double) num3 < 28.0 * (double) scale)
|
|
{
|
|
height = (int) num3 - 40 + 28;
|
|
flag4 = false;
|
|
}
|
|
float num4 = 20f * scale / num3;
|
|
float num5 = num1 * num4;
|
|
float num6 = num2 * num4;
|
|
vector2.X += num5;
|
|
vector2.Y += num6;
|
|
num1 = (float) ((double) rCurrentNPC.ai[0] * 16.0 + 8.0) - vector2.X;
|
|
num2 = (float) ((double) rCurrentNPC.ai[1] * 16.0 + 8.0) - vector2.Y;
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) vector2.X / 16, (int) ((double) vector2.Y / 16.0));
|
|
if (rCurrentNPC.IsABestiaryIconDummy)
|
|
color = rCurrentNPC.GetBestiaryEntryColor();
|
|
if (!flag3)
|
|
{
|
|
flag3 = true;
|
|
mySpriteBatch.Draw(TextureAssets.Chain10.Value, new Vector2(vector2.X - screenPos.X, vector2.Y - screenPos.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Chain10.Width(), height)), color, rotation, new Vector2((float) TextureAssets.Chain10.Width() * 0.5f, (float) TextureAssets.Chain10.Height() * 0.5f), scale, SpriteEffects.None, 0.0f);
|
|
}
|
|
else
|
|
{
|
|
flag3 = false;
|
|
mySpriteBatch.Draw(TextureAssets.Chain11.Value, new Vector2(vector2.X - screenPos.X, vector2.Y - screenPos.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Chain10.Width(), height)), color, rotation, new Vector2((float) TextureAssets.Chain10.Width() * 0.5f, (float) TextureAssets.Chain10.Height() * 0.5f), scale, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
}
|
|
else if (rCurrentNPC.aiStyle == 13)
|
|
{
|
|
Vector2 vector2 = new Vector2(rCurrentNPC.position.X + (float) (rCurrentNPC.width / 2), rCurrentNPC.position.Y + (float) (rCurrentNPC.height / 2));
|
|
float num7 = (float) ((double) rCurrentNPC.ai[0] * 16.0 + 8.0) - vector2.X;
|
|
float num8 = (float) ((double) rCurrentNPC.ai[1] * 16.0 + 8.0) - vector2.Y;
|
|
float rotation = (float) Math.Atan2((double) num8, (double) num7) - 1.57f;
|
|
bool flag = true;
|
|
while (flag)
|
|
{
|
|
int height = 28;
|
|
int num9 = 40;
|
|
if (type == 259 || type == 260)
|
|
{
|
|
num9 = 20;
|
|
height = 12;
|
|
}
|
|
float num10 = (float) Math.Sqrt((double) num7 * (double) num7 + (double) num8 * (double) num8);
|
|
if ((double) num10 < (double) num9)
|
|
{
|
|
height = (int) num10 - num9 + height;
|
|
flag = false;
|
|
}
|
|
float num11 = (float) height / num10;
|
|
float num12 = num7 * num11;
|
|
float num13 = num8 * num11;
|
|
vector2.X += num12;
|
|
vector2.Y += num13;
|
|
num7 = (float) ((double) rCurrentNPC.ai[0] * 16.0 + 8.0) - vector2.X;
|
|
num8 = (float) ((double) rCurrentNPC.ai[1] * 16.0 + 8.0) - vector2.Y;
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) vector2.X / 16, (int) ((double) vector2.Y / 16.0));
|
|
if (rCurrentNPC.IsABestiaryIconDummy)
|
|
color = rCurrentNPC.GetBestiaryEntryColor();
|
|
if (type == 259 || type == 260)
|
|
{
|
|
color.B = byte.MaxValue;
|
|
if (color.R < (byte) 100)
|
|
color.R = (byte) 100;
|
|
if (color.G < (byte) 150)
|
|
color.G = (byte) 150;
|
|
}
|
|
switch (type)
|
|
{
|
|
case 56:
|
|
mySpriteBatch.Draw(TextureAssets.Chain5.Value, new Vector2(vector2.X - screenPos.X, vector2.Y - screenPos.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Chain4.Width(), height)), color, rotation, new Vector2((float) TextureAssets.Chain4.Width() * 0.5f, (float) TextureAssets.Chain4.Height() * 0.5f), 1f, SpriteEffects.None, 0.0f);
|
|
continue;
|
|
case 175:
|
|
mySpriteBatch.Draw(TextureAssets.Chain14.Value, new Vector2(vector2.X - screenPos.X, vector2.Y - screenPos.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Chain14.Width(), height)), color, rotation, new Vector2((float) TextureAssets.Chain14.Width() * 0.5f, (float) TextureAssets.Chain14.Height() * 0.5f), 1f, SpriteEffects.None, 0.0f);
|
|
continue;
|
|
case 259:
|
|
mySpriteBatch.Draw(TextureAssets.Chain24.Value, new Vector2(vector2.X - screenPos.X, vector2.Y - screenPos.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Chain24.Width(), height)), color, rotation, new Vector2((float) TextureAssets.Chain24.Width() * 0.5f, (float) TextureAssets.Chain24.Height() * 0.5f), 1f, SpriteEffects.None, 0.0f);
|
|
continue;
|
|
case 260:
|
|
mySpriteBatch.Draw(TextureAssets.Chain25.Value, new Vector2(vector2.X - screenPos.X, vector2.Y - screenPos.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Chain25.Width(), height)), color, rotation, new Vector2((float) TextureAssets.Chain25.Width() * 0.5f, (float) TextureAssets.Chain25.Height() * 0.5f), 1f, SpriteEffects.None, 0.0f);
|
|
continue;
|
|
default:
|
|
mySpriteBatch.Draw(TextureAssets.Chain4.Value, new Vector2(vector2.X - screenPos.X, vector2.Y - screenPos.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Chain4.Width(), height)), color, rotation, new Vector2((float) TextureAssets.Chain4.Width() * 0.5f, (float) TextureAssets.Chain4.Height() * 0.5f), 1f, SpriteEffects.None, 0.0f);
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
if (type == 327)
|
|
{
|
|
float rotation = 0.0f;
|
|
Vector2 vector2 = new Vector2(rCurrentNPC.Center.X, rCurrentNPC.Center.Y + 80f);
|
|
int num = (int) rCurrentNPC.localAI[1];
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) vector2.X / 16, (int) ((double) vector2.Y / 16.0));
|
|
mySpriteBatch.Draw(TextureAssets.PumpkingCloak.Value, new Vector2(vector2.X - screenPos.X, vector2.Y - screenPos.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, TextureAssets.PumpkingCloak.Height() / 5 * num, TextureAssets.PumpkingCloak.Width(), TextureAssets.PumpkingCloak.Height() / 5)), color, rotation, new Vector2((float) TextureAssets.PumpkingCloak.Width() * 0.5f, (float) ((double) TextureAssets.PumpkingCloak.Height() * 0.5 / 5.0)), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
if (type == 328)
|
|
{
|
|
Vector2 vector2 = new Vector2((float) ((double) rCurrentNPC.position.X + (double) rCurrentNPC.width * 0.5 - 5.0 * (double) rCurrentNPC.ai[0]), rCurrentNPC.position.Y + 20f);
|
|
for (int index = 0; index < 2; ++index)
|
|
{
|
|
float num14 = Main.npc[(int) rCurrentNPC.ai[1]].position.X + (float) (Main.npc[(int) rCurrentNPC.ai[1]].width / 2) - vector2.X;
|
|
float num15 = (float) ((double) Main.npc[(int) rCurrentNPC.ai[1]].position.Y + (double) (Main.npc[(int) rCurrentNPC.ai[1]].height / 2) - 30.0) - vector2.Y;
|
|
float num16;
|
|
float num17;
|
|
float num18;
|
|
if (index == 0)
|
|
{
|
|
num16 = num14 - 200f * rCurrentNPC.ai[0];
|
|
num17 = num15 + 130f;
|
|
num18 = 92f / (float) Math.Sqrt((double) num16 * (double) num16 + (double) num17 * (double) num17);
|
|
vector2.X += num16 * num18;
|
|
vector2.Y += num17 * num18;
|
|
}
|
|
else
|
|
{
|
|
num16 = num14 - 50f * rCurrentNPC.ai[0];
|
|
num17 = num15 + 80f;
|
|
num18 = 60f / (float) Math.Sqrt((double) num16 * (double) num16 + (double) num17 * (double) num17);
|
|
vector2.X += num16 * num18;
|
|
vector2.Y += num17 * num18;
|
|
}
|
|
float rotation = (float) Math.Atan2((double) num17, (double) num16) - 1.57f;
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) vector2.X / 16, (int) ((double) vector2.Y / 16.0));
|
|
mySpriteBatch.Draw(TextureAssets.PumpkingArm.Value, new Vector2(vector2.X - screenPos.X, vector2.Y - screenPos.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.PumpkingArm.Width(), TextureAssets.PumpkingArm.Height())), color, rotation, new Vector2((float) TextureAssets.PumpkingArm.Width() * 0.5f, (float) TextureAssets.PumpkingArm.Height() * 0.5f), 1f, SpriteEffects.None, 0.0f);
|
|
if (index == 0)
|
|
{
|
|
vector2.X += (float) ((double) num16 * (double) num18 / 2.0);
|
|
vector2.Y += (float) ((double) num17 * (double) num18 / 2.0);
|
|
}
|
|
}
|
|
}
|
|
if (type == 36)
|
|
{
|
|
Vector2 vector2 = new Vector2((float) ((double) rCurrentNPC.position.X + (double) rCurrentNPC.width * 0.5 - 5.0 * (double) rCurrentNPC.ai[0]), rCurrentNPC.position.Y + 20f);
|
|
for (int index1 = 0; index1 < 2; ++index1)
|
|
{
|
|
float num19 = Main.npc[(int) rCurrentNPC.ai[1]].position.X + (float) (Main.npc[(int) rCurrentNPC.ai[1]].width / 2) - vector2.X;
|
|
float num20 = Main.npc[(int) rCurrentNPC.ai[1]].position.Y + (float) (Main.npc[(int) rCurrentNPC.ai[1]].height / 2) - vector2.Y;
|
|
float num21;
|
|
float num22;
|
|
float num23;
|
|
if (index1 == 0)
|
|
{
|
|
num21 = num19 - 200f * rCurrentNPC.ai[0];
|
|
num22 = num20 + 130f;
|
|
num23 = 92f / (float) Math.Sqrt((double) num21 * (double) num21 + (double) num22 * (double) num22);
|
|
vector2.X += num21 * num23;
|
|
vector2.Y += num22 * num23;
|
|
}
|
|
else
|
|
{
|
|
num21 = num19 - 50f * rCurrentNPC.ai[0];
|
|
num22 = num20 + 80f;
|
|
num23 = 60f / (float) Math.Sqrt((double) num21 * (double) num21 + (double) num22 * (double) num22);
|
|
vector2.X += num21 * num23;
|
|
vector2.Y += num22 * num23;
|
|
}
|
|
float rotation = (float) Math.Atan2((double) num22, (double) num21) - 1.57f;
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) vector2.X / 16, (int) ((double) vector2.Y / 16.0));
|
|
mySpriteBatch.Draw(TextureAssets.BoneArm.Value, new Vector2(vector2.X - screenPos.X, vector2.Y - screenPos.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.BoneArm.Width(), TextureAssets.BoneArm.Height())), color, rotation, new Vector2((float) TextureAssets.BoneArm.Width() * 0.5f, (float) TextureAssets.BoneArm.Height() * 0.5f), 1f, SpriteEffects.None, 0.0f);
|
|
if (index1 == 0)
|
|
{
|
|
vector2.X += (float) ((double) num21 * (double) num23 / 2.0);
|
|
vector2.Y += (float) ((double) num22 * (double) num23 / 2.0);
|
|
}
|
|
else if (this.IsActive)
|
|
{
|
|
vector2.X += (float) ((double) num21 * (double) num23 - 16.0);
|
|
vector2.Y += (float) ((double) num22 * (double) num23 - 6.0);
|
|
int index2 = Dust.NewDust(new Vector2(vector2.X, vector2.Y), 30, 10, 5, num21 * 0.02f, num22 * 0.02f, Scale: 2f);
|
|
Main.dust[index2].noGravity = true;
|
|
}
|
|
}
|
|
}
|
|
if (rCurrentNPC.aiStyle == 47)
|
|
{
|
|
float scale = 1f;
|
|
Vector2 vector2 = new Vector2(rCurrentNPC.Center.X, rCurrentNPC.Center.Y);
|
|
Vector2 center = rCurrentNPC.Center;
|
|
if (NPC.golemBoss != -1)
|
|
center = Main.npc[NPC.golemBoss].Center;
|
|
float num24 = center.X - vector2.X;
|
|
float num25 = center.Y - vector2.Y - 7f;
|
|
float num26 = type != 247 ? num24 + 66f : num24 - 70f;
|
|
if (Main.getGoodWorld)
|
|
{
|
|
if (type == 247)
|
|
num26 += 40f;
|
|
else
|
|
num26 -= 40f;
|
|
scale = 0.5f;
|
|
}
|
|
float rotation = (float) Math.Atan2((double) num25, (double) num26) - 1.57f;
|
|
bool flag = true;
|
|
while (flag)
|
|
{
|
|
float num27 = (float) Math.Sqrt((double) num26 * (double) num26 + (double) num25 * (double) num25);
|
|
if ((double) num27 < 16.0)
|
|
{
|
|
flag = false;
|
|
}
|
|
else
|
|
{
|
|
float num28 = 16f * scale / num27;
|
|
float num29 = num26 * num28;
|
|
float num30 = num25 * num28;
|
|
vector2.X += num29;
|
|
vector2.Y += num30;
|
|
float num31 = center.X - vector2.X;
|
|
num25 = center.Y - vector2.Y - 7f;
|
|
num26 = type != 247 ? num31 + 66f : num31 - 70f;
|
|
if (Main.getGoodWorld)
|
|
{
|
|
num25 += 8f;
|
|
if (type == 247)
|
|
num26 += 40f;
|
|
else
|
|
num26 -= 40f;
|
|
scale = 0.5f;
|
|
}
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) vector2.X / 16, (int) ((double) vector2.Y / 16.0));
|
|
mySpriteBatch.Draw(TextureAssets.Chain21.Value, new Vector2(vector2.X - screenPos.X, vector2.Y - screenPos.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Chain21.Width(), TextureAssets.Chain21.Height())), color, rotation, new Vector2((float) TextureAssets.Chain21.Width() * 0.5f, (float) TextureAssets.Chain21.Height() * 0.5f), scale, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
}
|
|
if (rCurrentNPC.aiStyle >= 33 && rCurrentNPC.aiStyle <= 36)
|
|
{
|
|
Vector2 vector2 = new Vector2((float) ((double) rCurrentNPC.position.X + (double) rCurrentNPC.width * 0.5 - 5.0 * (double) rCurrentNPC.ai[0]), rCurrentNPC.position.Y + 20f);
|
|
for (int index3 = 0; index3 < 2; ++index3)
|
|
{
|
|
float num32 = Main.npc[(int) rCurrentNPC.ai[1]].position.X + (float) (Main.npc[(int) rCurrentNPC.ai[1]].width / 2) - vector2.X;
|
|
float num33 = Main.npc[(int) rCurrentNPC.ai[1]].position.Y + (float) (Main.npc[(int) rCurrentNPC.ai[1]].height / 2) - vector2.Y;
|
|
float num34;
|
|
float num35;
|
|
float num36;
|
|
if (index3 == 0)
|
|
{
|
|
num34 = num32 - 200f * rCurrentNPC.ai[0];
|
|
num35 = num33 + 130f;
|
|
num36 = 92f / (float) Math.Sqrt((double) num34 * (double) num34 + (double) num35 * (double) num35);
|
|
vector2.X += num34 * num36;
|
|
vector2.Y += num35 * num36;
|
|
}
|
|
else
|
|
{
|
|
num34 = num32 - 50f * rCurrentNPC.ai[0];
|
|
num35 = num33 + 80f;
|
|
num36 = 60f / (float) Math.Sqrt((double) num34 * (double) num34 + (double) num35 * (double) num35);
|
|
vector2.X += num34 * num36;
|
|
vector2.Y += num35 * num36;
|
|
}
|
|
float rotation = (float) Math.Atan2((double) num35, (double) num34) - 1.57f;
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) vector2.X / 16, (int) ((double) vector2.Y / 16.0));
|
|
mySpriteBatch.Draw(TextureAssets.BoneArm2.Value, new Vector2(vector2.X - screenPos.X, vector2.Y - screenPos.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.BoneArm.Width(), TextureAssets.BoneArm.Height())), color, rotation, new Vector2((float) TextureAssets.BoneArm.Width() * 0.5f, (float) TextureAssets.BoneArm.Height() * 0.5f), 1f, SpriteEffects.None, 0.0f);
|
|
if (index3 == 0)
|
|
{
|
|
vector2.X += (float) ((double) num34 * (double) num36 / 2.0);
|
|
vector2.Y += (float) ((double) num35 * (double) num36 / 2.0);
|
|
}
|
|
else if (this.IsActive)
|
|
{
|
|
vector2.X += (float) ((double) num34 * (double) num36 - 16.0);
|
|
vector2.Y += (float) ((double) num35 * (double) num36 - 6.0);
|
|
int index4 = Dust.NewDust(new Vector2(vector2.X, vector2.Y), 30, 10, 6, num34 * 0.02f, num35 * 0.02f, Scale: 2.5f);
|
|
Main.dust[index4].noGravity = true;
|
|
}
|
|
}
|
|
}
|
|
if (rCurrentNPC.aiStyle == 20)
|
|
{
|
|
Vector2 vector2 = new Vector2(rCurrentNPC.position.X + (float) (rCurrentNPC.width / 2), rCurrentNPC.position.Y + (float) (rCurrentNPC.height / 2));
|
|
float num37 = rCurrentNPC.ai[1] - vector2.X;
|
|
float num38 = rCurrentNPC.ai[2] - vector2.Y;
|
|
float rotation = (float) Math.Atan2((double) num38, (double) num37) - 1.57f;
|
|
rCurrentNPC.rotation = rotation;
|
|
bool flag = true;
|
|
while (flag)
|
|
{
|
|
int height = 12;
|
|
float num39 = (float) Math.Sqrt((double) num37 * (double) num37 + (double) num38 * (double) num38);
|
|
if ((double) num39 < 20.0)
|
|
{
|
|
height = (int) num39 - 20 + 12;
|
|
flag = false;
|
|
}
|
|
float num40 = 12f / num39;
|
|
float num41 = num37 * num40;
|
|
float num42 = num38 * num40;
|
|
vector2.X += num41;
|
|
vector2.Y += num42;
|
|
num37 = rCurrentNPC.ai[1] - vector2.X;
|
|
num38 = rCurrentNPC.ai[2] - vector2.Y;
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) vector2.X / 16, (int) ((double) vector2.Y / 16.0));
|
|
mySpriteBatch.Draw(TextureAssets.Chain.Value, new Vector2(vector2.X - screenPos.X, vector2.Y - screenPos.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Chain.Width(), height)), color, rotation, new Vector2((float) TextureAssets.Chain.Width() * 0.5f, (float) TextureAssets.Chain.Height() * 0.5f), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
mySpriteBatch.Draw(TextureAssets.SpikeBase.Value, new Vector2(rCurrentNPC.ai[1] - screenPos.X, rCurrentNPC.ai[2] - screenPos.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.SpikeBase.Width(), TextureAssets.SpikeBase.Height())), Lighting.GetColor((int) rCurrentNPC.ai[1] / 16, (int) ((double) rCurrentNPC.ai[2] / 16.0)), rotation - 0.75f, new Vector2((float) TextureAssets.SpikeBase.Width() * 0.5f, (float) TextureAssets.SpikeBase.Height() * 0.5f), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
Microsoft.Xna.Framework.Color npcColor1 = Lighting.GetColor((int) ((double) rCurrentNPC.position.X + (double) rCurrentNPC.width * 0.5) / 16, (int) (((double) rCurrentNPC.position.Y + (double) rCurrentNPC.height * 0.5) / 16.0));
|
|
if (rCurrentNPC.IsABestiaryIconDummy)
|
|
npcColor1 = rCurrentNPC.GetBestiaryEntryColor();
|
|
if (type >= 277 && type <= 280)
|
|
{
|
|
if (npcColor1.R < byte.MaxValue)
|
|
npcColor1.R = byte.MaxValue;
|
|
if (npcColor1.G < (byte) 175)
|
|
npcColor1.G = (byte) 175;
|
|
}
|
|
if (type == -4)
|
|
{
|
|
int r1 = (int) npcColor1.R;
|
|
int g1 = (int) npcColor1.G;
|
|
int b1 = (int) npcColor1.B;
|
|
int r2 = r1 * 2;
|
|
if (r2 > (int) byte.MaxValue)
|
|
r2 = (int) byte.MaxValue;
|
|
int g2 = g1 * 2;
|
|
if (g2 > (int) byte.MaxValue)
|
|
g2 = (int) byte.MaxValue;
|
|
int b2 = b1 * 2;
|
|
if (b2 > (int) byte.MaxValue)
|
|
b2 = (int) byte.MaxValue;
|
|
npcColor1 = new Microsoft.Xna.Framework.Color(r2, g2, b2);
|
|
}
|
|
if (behindTiles && type != 113 && type != 114)
|
|
{
|
|
int num43 = (int) (((double) rCurrentNPC.position.X - 8.0) / 16.0);
|
|
int num44 = (int) (((double) rCurrentNPC.position.X + (double) rCurrentNPC.width + 8.0) / 16.0);
|
|
int num45 = (int) (((double) rCurrentNPC.position.Y - 8.0) / 16.0);
|
|
int num46 = (int) (((double) rCurrentNPC.position.Y + (double) rCurrentNPC.height + 8.0) / 16.0);
|
|
for (int x = num43; x <= num44; ++x)
|
|
{
|
|
for (int y = num45; y <= num46; ++y)
|
|
{
|
|
if ((double) Lighting.Brightness(x, y) == 0.0)
|
|
npcColor1 = Microsoft.Xna.Framework.Color.Black;
|
|
}
|
|
}
|
|
}
|
|
Microsoft.Xna.Framework.Color npcColor2 = rCurrentNPC.GetNPCColorTintedByBuffs(npcColor1);
|
|
if (type == 50)
|
|
{
|
|
Vector2 zero = Vector2.Zero;
|
|
float num = 0.0f;
|
|
zero.Y -= rCurrentNPC.velocity.Y;
|
|
zero.X -= rCurrentNPC.velocity.X * 2f;
|
|
float rotation = num + rCurrentNPC.velocity.X * 0.05f;
|
|
if (rCurrentNPC.frame.Y == 120)
|
|
zero.Y += 2f;
|
|
if (rCurrentNPC.frame.Y == 360)
|
|
zero.Y -= 2f;
|
|
if (rCurrentNPC.frame.Y == 480)
|
|
zero.Y -= 6f;
|
|
mySpriteBatch.Draw(TextureAssets.Ninja.Value, new Vector2(rCurrentNPC.position.X - screenPos.X + (float) (rCurrentNPC.width / 2) + zero.X, rCurrentNPC.position.Y - screenPos.Y + (float) (rCurrentNPC.height / 2) + zero.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Ninja.Width(), TextureAssets.Ninja.Height())), npcColor2, rotation, new Vector2((float) (TextureAssets.Ninja.Width() / 2), (float) (TextureAssets.Ninja.Height() / 2)), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
if (type == 71)
|
|
{
|
|
Vector2 zero = Vector2.Zero;
|
|
float num = 0.0f;
|
|
zero.Y -= rCurrentNPC.velocity.Y * 0.3f;
|
|
zero.X -= rCurrentNPC.velocity.X * 0.6f;
|
|
float rotation = num + rCurrentNPC.velocity.X * 0.09f;
|
|
if (rCurrentNPC.frame.Y == 120)
|
|
zero.Y += 2f;
|
|
if (rCurrentNPC.frame.Y == 360)
|
|
zero.Y -= 2f;
|
|
if (rCurrentNPC.frame.Y == 480)
|
|
zero.Y -= 6f;
|
|
Main.instance.LoadItem(327);
|
|
mySpriteBatch.Draw(TextureAssets.Item[327].Value, new Vector2(rCurrentNPC.position.X - screenPos.X + (float) (rCurrentNPC.width / 2) + zero.X, rCurrentNPC.position.Y - screenPos.Y + (float) (rCurrentNPC.height / 2) + zero.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Item[327].Width(), TextureAssets.Item[327].Height())), npcColor2, rotation, new Vector2((float) (TextureAssets.Item[327].Width() / 2), (float) (TextureAssets.Item[327].Height() / 2)), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
if (type == 69)
|
|
mySpriteBatch.Draw(TextureAssets.AntLion.Value, new Vector2(rCurrentNPC.position.X - screenPos.X + (float) (rCurrentNPC.width / 2), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height + 14.0)), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.AntLion.Width(), TextureAssets.AntLion.Height())), npcColor2, (float) (-(double) rCurrentNPC.rotation * 0.300000011920929), new Vector2((float) (TextureAssets.AntLion.Width() / 2), (float) (TextureAssets.AntLion.Height() / 2)), 1f, SpriteEffects.None, 0.0f);
|
|
if (type == 1 && (double) rCurrentNPC.ai[1] > 0.0)
|
|
Main.DrawNPC_SlimeItem(rCurrentNPC, type, npcColor2, 0.0f);
|
|
float addY = 0.0f;
|
|
float addHeight = Main.NPCAddHeight(rCurrentNPC);
|
|
Vector2 halfSize = new Vector2((float) (TextureAssets.Npc[type].Width() / 2), (float) (TextureAssets.Npc[type].Height() / Main.npcFrameCount[type] / 2));
|
|
if (type == 108 || type == 124 || type == 625)
|
|
{
|
|
addY = 2f;
|
|
}
|
|
else
|
|
{
|
|
switch (type)
|
|
{
|
|
case 357:
|
|
addY = rCurrentNPC.localAI[0];
|
|
break;
|
|
case 467:
|
|
addY = 7f;
|
|
break;
|
|
case 477:
|
|
addHeight = 22f;
|
|
break;
|
|
case 478:
|
|
addY -= 2f;
|
|
break;
|
|
case 483:
|
|
addY = 14f;
|
|
break;
|
|
case 484:
|
|
addY = 2f;
|
|
break;
|
|
case 490:
|
|
addY = 4f;
|
|
break;
|
|
case 537:
|
|
addY = 2f;
|
|
break;
|
|
case 581:
|
|
addY = -6f;
|
|
break;
|
|
case 606:
|
|
addY -= 2f;
|
|
break;
|
|
default:
|
|
if (type == 612 || type == 613)
|
|
{
|
|
addY -= 2f;
|
|
break;
|
|
}
|
|
if (type == 469 && (double) rCurrentNPC.ai[2] == 1.0)
|
|
{
|
|
addY = 14f;
|
|
break;
|
|
}
|
|
switch (type)
|
|
{
|
|
case 4:
|
|
halfSize = new Vector2(55f, 107f);
|
|
break;
|
|
case 125:
|
|
halfSize = new Vector2(55f, 107f);
|
|
break;
|
|
case 126:
|
|
halfSize = new Vector2(55f, 107f);
|
|
break;
|
|
default:
|
|
if (type == 626 || type == 627)
|
|
{
|
|
if (rCurrentNPC.wet)
|
|
{
|
|
addY = -2f;
|
|
halfSize = rCurrentNPC.frame.Size() * new Vector2(0.5f, 0.5f) + new Vector2(0.0f, -4f);
|
|
break;
|
|
}
|
|
addY = 2f;
|
|
break;
|
|
}
|
|
if (type == 63 || type == 64 || type == 103)
|
|
{
|
|
halfSize.Y += 4f;
|
|
break;
|
|
}
|
|
switch (type)
|
|
{
|
|
case 69:
|
|
halfSize.Y += 8f;
|
|
break;
|
|
case 262:
|
|
halfSize.Y = 77f;
|
|
addHeight += 26f;
|
|
break;
|
|
case 264:
|
|
halfSize.Y = 21f;
|
|
addHeight += 2f;
|
|
break;
|
|
case 266:
|
|
addHeight += 50f;
|
|
break;
|
|
case 268:
|
|
addHeight += 16f;
|
|
break;
|
|
case 288:
|
|
addHeight += 6f;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
if (rCurrentNPC.aiStyle == 10 || type == 72)
|
|
npcColor2 = Microsoft.Xna.Framework.Color.White;
|
|
SpriteEffects spriteEffects = SpriteEffects.None;
|
|
if (rCurrentNPC.spriteDirection == 1)
|
|
spriteEffects = SpriteEffects.FlipHorizontally;
|
|
if (type == 124 && (double) rCurrentNPC.localAI[0] == 0.0)
|
|
{
|
|
int num = 0;
|
|
if (rCurrentNPC.frame.Y > 56)
|
|
num += 4;
|
|
int index = num + rCurrentNPC.frame.Y / 56;
|
|
if (index >= Main.OffsetsPlayerHeadgear.Length)
|
|
index = 0;
|
|
float y = Main.OffsetsPlayerHeadgear[index].Y;
|
|
this.LoadProjectile(582);
|
|
Texture2D texture2D = TextureAssets.Projectile[582].Value;
|
|
Vector2 position = rCurrentNPC.Center - screenPos - new Vector2((float) texture2D.Width, (float) (texture2D.Height / Main.npcFrameCount[type])) * rCurrentNPC.scale / 2f + new Vector2(0.0f, addY + addHeight + rCurrentNPC.gfxOffY + y) + new Vector2((float) (-rCurrentNPC.spriteDirection * 2), -2f);
|
|
mySpriteBatch.Draw(texture2D, position, new Microsoft.Xna.Framework.Rectangle?(), rCurrentNPC.GetAlpha(npcColor2), rCurrentNPC.rotation, texture2D.Size() * new Vector2(0.0f, 0.5f), rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
}
|
|
if (type == 427 || type == 426 || type == 428 || type == 581 || type == 521 || type == 523 || type == 541 || type >= 542 && type <= 545 || type == 546 || type == 552 || type == 553 || type == 554 || type == 561 || type == 562 || type == 563 || type == 555 || type == 556 || type == 557 || type == 558 || type == 559 || type == 560 || type == 574 || type == 575 || type == 568 || type == 569 || type == 572 || type == 573 || type == 566 || type == 567 || type == 570 || type == 578 || type == 571 || type == 583 || type == 584 || type == 585 || type == 618 || type == 620 || type == 661)
|
|
{
|
|
Texture2D texture = TextureAssets.Npc[type].Value;
|
|
Microsoft.Xna.Framework.Color secondColor = Microsoft.Xna.Framework.Color.White;
|
|
float amount1 = 0.0f;
|
|
float amount2 = 0.0f;
|
|
int num47 = 0;
|
|
int num48 = 0;
|
|
int num49 = 1;
|
|
int num50 = 15;
|
|
int num51 = 0;
|
|
float scale1 = rCurrentNPC.scale;
|
|
float num52 = rCurrentNPC.scale;
|
|
int num53 = 0;
|
|
float t1 = 0.0f;
|
|
float num54 = 0.0f;
|
|
float num55 = 0.0f;
|
|
Microsoft.Xna.Framework.Color newColor1 = npcColor2;
|
|
Vector2 origin1 = halfSize;
|
|
switch (type)
|
|
{
|
|
case 426:
|
|
num53 = 4;
|
|
num54 = 4f;
|
|
t1 = (float) (Math.Cos((double) Main.GlobalTimeWrappedHourly % 1.20000004768372 / 1.20000004768372 * 6.28318548202515) / 2.0 + 0.5);
|
|
secondColor = Microsoft.Xna.Framework.Color.Turquoise;
|
|
amount1 = 0.5f;
|
|
num47 = 6;
|
|
num48 = 2;
|
|
num50 = num47;
|
|
break;
|
|
case 427:
|
|
num47 = 8;
|
|
num48 = 2;
|
|
num50 = num47 * 3;
|
|
break;
|
|
case 521:
|
|
num47 = 10;
|
|
num48 = 2;
|
|
num50 = num47;
|
|
num51 = 1;
|
|
num52 = 0.3f;
|
|
break;
|
|
case 523:
|
|
num53 = 3;
|
|
num54 = 10f * rCurrentNPC.scale;
|
|
amount1 = 0.5f;
|
|
amount2 = 0.8f;
|
|
secondColor = Microsoft.Xna.Framework.Color.HotPink;
|
|
secondColor.A = (byte) 128;
|
|
num55 = rCurrentNPC.localAI[0];
|
|
t1 = rCurrentNPC.localAI[1];
|
|
break;
|
|
case 541:
|
|
num53 = 4;
|
|
num54 = 6f;
|
|
t1 = (float) (Math.Cos((double) Main.GlobalTimeWrappedHourly % 2.40000009536743 / 2.40000009536743 * 6.28318548202515) / 2.0 + 0.5);
|
|
secondColor = Microsoft.Xna.Framework.Color.Gold;
|
|
amount1 = 0.5f;
|
|
break;
|
|
case 542:
|
|
case 543:
|
|
case 544:
|
|
case 545:
|
|
num47 = 6;
|
|
num48 = 3;
|
|
num50 = num47 * 2;
|
|
break;
|
|
case 546:
|
|
num47 = 8;
|
|
num48 = 2;
|
|
num50 = num47 * 3;
|
|
break;
|
|
case 552:
|
|
case 553:
|
|
case 554:
|
|
case 555:
|
|
case 556:
|
|
case 557:
|
|
case 561:
|
|
case 562:
|
|
case 563:
|
|
case 568:
|
|
case 569:
|
|
case 570:
|
|
case 571:
|
|
case 572:
|
|
case 573:
|
|
num47 = 0;
|
|
if (type == 561 || type == 562 || type == 563)
|
|
addHeight = -8f;
|
|
if (type == 555 || type == 556 || type == 557)
|
|
addHeight = -5f;
|
|
if (type == 572 || type == 573)
|
|
addHeight = -4f;
|
|
if (type == 570 || type == 571)
|
|
{
|
|
spriteEffects ^= SpriteEffects.FlipHorizontally;
|
|
addHeight = -2f;
|
|
}
|
|
if (type == 568 || type == 569)
|
|
{
|
|
spriteEffects ^= SpriteEffects.FlipHorizontally;
|
|
addHeight = -3f;
|
|
num53 = 4;
|
|
num54 = 4f;
|
|
t1 = (float) (Math.Cos((double) Main.GlobalTimeWrappedHourly % 1.5 / 1.5 * 6.28318548202515) / 6.0 + 0.75);
|
|
secondColor = Microsoft.Xna.Framework.Color.HotPink;
|
|
secondColor.A = (byte) 127;
|
|
amount1 = 0.5f;
|
|
}
|
|
if ((double) rCurrentNPC.localAI[3] < 60.0)
|
|
{
|
|
float num56 = rCurrentNPC.localAI[3] / 60f;
|
|
num53 = 3;
|
|
t1 = (float) (1.0 - (double) num56 * (double) num56);
|
|
num54 = 8f;
|
|
secondColor = new Microsoft.Xna.Framework.Color((int) sbyte.MaxValue, 0, (int) byte.MaxValue, 0);
|
|
amount2 = 1f;
|
|
newColor1 = Microsoft.Xna.Framework.Color.Lerp(Microsoft.Xna.Framework.Color.Transparent, newColor1, num56 * num56);
|
|
break;
|
|
}
|
|
break;
|
|
case 558:
|
|
case 559:
|
|
case 560:
|
|
case 574:
|
|
case 575:
|
|
if ((double) rCurrentNPC.ai[0] != 2.0)
|
|
{
|
|
num47 = 0;
|
|
break;
|
|
}
|
|
num47 = 6;
|
|
num48 = 2;
|
|
num50 = num47 * 3;
|
|
num51 = 1;
|
|
break;
|
|
case 566:
|
|
case 567:
|
|
case 578:
|
|
num47 = 0;
|
|
addHeight = -2f;
|
|
break;
|
|
case 581:
|
|
num47 = 6;
|
|
num48 = 2;
|
|
num50 = num47 * 3;
|
|
break;
|
|
case 618:
|
|
float num57 = 90f;
|
|
float num58 = 180f;
|
|
if ((double) rCurrentNPC.ai[0] == 1.0 && (double) rCurrentNPC.ai[1] < (double) num57)
|
|
{
|
|
int num59 = 3;
|
|
float num60 = num57 / (float) num59;
|
|
double num61 = (double) rCurrentNPC.ai[1] % (double) num60 / (double) num60;
|
|
num53 = 6;
|
|
num54 = 15f;
|
|
t1 = (float) (num61 * 0.800000011920929 + 0.200000002980232);
|
|
}
|
|
if ((double) rCurrentNPC.ai[0] == 3.0 && (double) rCurrentNPC.ai[1] < (double) num58)
|
|
{
|
|
int num62 = 1;
|
|
float num63 = num58 / (float) num62;
|
|
float num64 = rCurrentNPC.ai[1] % num63 / num63;
|
|
num53 = 4;
|
|
num54 = 25f;
|
|
t1 = num64;
|
|
Vector2 vector2 = rCurrentNPC.scale * new Vector2(1f, (float) (0.5 + (double) num64 * 0.75));
|
|
Texture2D texture2D = TextureAssets.Extra[59].Value;
|
|
Microsoft.Xna.Framework.Rectangle r = texture2D.Frame();
|
|
Vector2 origin2 = r.Size() * new Vector2(0.5f, 0.5f);
|
|
for (int index = 0; index < num53; ++index)
|
|
{
|
|
Microsoft.Xna.Framework.Color color = Microsoft.Xna.Framework.Color.White * (float) ((double) Utils.GetLerpValue(0.0f, 0.5f, t1, false) * (double) Utils.GetLerpValue(1f, 0.5f, t1, false) * 0.25);
|
|
color.A = (byte) 0;
|
|
color.G = (byte) 0;
|
|
color.B = (byte) 0;
|
|
float num65 = (float) ((double) index / (double) num53 * 6.28318548202515) + rCurrentNPC.rotation + num55;
|
|
Vector2 position = rCurrentNPC.Center + num65.ToRotationVector2() * num54 * t1 - screenPos - new Vector2((float) texture.Width, (float) (texture.Height / Main.npcFrameCount[type])) * rCurrentNPC.scale / 2f + (halfSize * rCurrentNPC.scale + new Vector2(0.0f, addY + addHeight + rCurrentNPC.gfxOffY));
|
|
mySpriteBatch.Draw(texture2D, position, new Microsoft.Xna.Framework.Rectangle?(r), color, num65, origin2, vector2 * 1.8f, spriteEffects, 0.0f);
|
|
}
|
|
for (int index = 0; index < num53; ++index)
|
|
{
|
|
Microsoft.Xna.Framework.Color color = Microsoft.Xna.Framework.Color.White * (float) ((double) Utils.GetLerpValue(0.0f, 0.5f, t1, false) * (double) Utils.GetLerpValue(1f, 0.5f, t1, false) * 0.25);
|
|
color.A = (byte) 0;
|
|
float num66 = (float) ((double) index / (double) num53 * 6.28318548202515) + rCurrentNPC.rotation + num55;
|
|
Vector2 position = rCurrentNPC.Center + num66.ToRotationVector2() * num54 * t1 - screenPos - new Vector2((float) texture.Width, (float) (texture.Height / Main.npcFrameCount[type])) * rCurrentNPC.scale / 2f + (halfSize * rCurrentNPC.scale + new Vector2(0.0f, addY + addHeight + rCurrentNPC.gfxOffY));
|
|
mySpriteBatch.Draw(texture2D, position, new Microsoft.Xna.Framework.Rectangle?(r), color, num66, origin2, vector2 * 1.5f, spriteEffects, 0.0f);
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
case 620:
|
|
addHeight = -9f;
|
|
origin1 = rCurrentNPC.frame.Size() * new Vector2(0.5f, 0.5f) + new Vector2((float) (-4 * rCurrentNPC.spriteDirection), 0.0f);
|
|
num53 = 4;
|
|
num54 = 6f;
|
|
t1 = (float) (Math.Cos((double) Main.GlobalTimeWrappedHourly % 2.40000009536743 / 2.40000009536743 * 6.28318548202515) / 2.0 + 0.5);
|
|
secondColor = Microsoft.Xna.Framework.Color.Gold;
|
|
amount1 = 0.5f;
|
|
num47 = 6;
|
|
num48 = 2;
|
|
num50 = num47 * 3;
|
|
num51 = 1;
|
|
break;
|
|
case 661:
|
|
num53 = 6;
|
|
num54 = 6f;
|
|
t1 = MathHelper.Max((float) (Math.Cos((double) Main.GlobalTimeWrappedHourly % 2.40000009536743 / 2.40000009536743 * 6.28318548202515) / 2.0 + 0.5), Utils.GetLerpValue(0.0f, 60f, rCurrentNPC.ai[2], true));
|
|
amount1 = 0.5f;
|
|
break;
|
|
}
|
|
for (int index = num49; index < num47; index += num48)
|
|
{
|
|
ref Vector2 local = ref rCurrentNPC.oldPos[index];
|
|
Microsoft.Xna.Framework.Color newColor2 = Microsoft.Xna.Framework.Color.Lerp(newColor1, secondColor, amount1);
|
|
Microsoft.Xna.Framework.Color color = rCurrentNPC.GetAlpha(newColor2) * ((float) (num47 - index) / (float) num50);
|
|
double rotation = (double) rCurrentNPC.rotation;
|
|
if (num51 == 1)
|
|
{
|
|
double num67 = (double) rCurrentNPC.oldRot[index];
|
|
}
|
|
float scale2 = MathHelper.Lerp(scale1, num52, (float) (1.0 - (double) (num47 - index) / (double) num50));
|
|
Vector2 position = rCurrentNPC.oldPos[index] + new Vector2((float) rCurrentNPC.width, (float) rCurrentNPC.height) / 2f - screenPos - new Vector2((float) texture.Width, (float) (texture.Height / Main.npcFrameCount[type])) * rCurrentNPC.scale / 2f + (halfSize * rCurrentNPC.scale + new Vector2(0.0f, addY + addHeight + rCurrentNPC.gfxOffY));
|
|
mySpriteBatch.Draw(texture, position, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), color, rCurrentNPC.rotation, halfSize, scale2, spriteEffects, 0.0f);
|
|
}
|
|
for (int index = 0; index < num53; ++index)
|
|
{
|
|
Microsoft.Xna.Framework.Color newColor3 = Microsoft.Xna.Framework.Color.Lerp(npcColor2, secondColor, amount1);
|
|
Microsoft.Xna.Framework.Color color = Microsoft.Xna.Framework.Color.Lerp(rCurrentNPC.GetAlpha(newColor3), secondColor, amount2) * (1f - t1);
|
|
Vector2 position = rCurrentNPC.Center + ((float) ((double) index / (double) num53 * 6.28318548202515) + rCurrentNPC.rotation + num55).ToRotationVector2() * num54 * t1 - screenPos - new Vector2((float) texture.Width, (float) (texture.Height / Main.npcFrameCount[type])) * rCurrentNPC.scale / 2f + (halfSize * rCurrentNPC.scale + new Vector2(0.0f, addY + addHeight + rCurrentNPC.gfxOffY));
|
|
mySpriteBatch.Draw(texture, position, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), color, rCurrentNPC.rotation, origin1, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
}
|
|
Vector2 position1 = rCurrentNPC.Center - screenPos - new Vector2((float) texture.Width, (float) (texture.Height / Main.npcFrameCount[type])) * rCurrentNPC.scale / 2f + (halfSize * rCurrentNPC.scale + new Vector2(0.0f, addY + addHeight + rCurrentNPC.gfxOffY));
|
|
mySpriteBatch.Draw(texture, position1, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), rCurrentNPC.GetAlpha(newColor1), rCurrentNPC.rotation, origin1, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
if (type == 427)
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[152].Value, rCurrentNPC.Bottom - screenPos + new Vector2((float) ((double) -TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) -TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color((int) byte.MaxValue - rCurrentNPC.alpha, (int) byte.MaxValue - rCurrentNPC.alpha, (int) byte.MaxValue - rCurrentNPC.alpha, 0), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
else if (type == 426)
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[153].Value, rCurrentNPC.Bottom - screenPos + new Vector2((float) ((double) -TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) -TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color(128 - rCurrentNPC.alpha / 2, 128 - rCurrentNPC.alpha / 2, 128 - rCurrentNPC.alpha / 2, 0), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
if (type == 541)
|
|
{
|
|
Microsoft.Xna.Framework.Color color1 = new Microsoft.Xna.Framework.Color((int) sbyte.MaxValue - rCurrentNPC.alpha, (int) sbyte.MaxValue - rCurrentNPC.alpha, (int) sbyte.MaxValue - rCurrentNPC.alpha, 0).MultiplyRGBA(Microsoft.Xna.Framework.Color.Gold);
|
|
for (int index = 0; index < num53; ++index)
|
|
{
|
|
Microsoft.Xna.Framework.Color newColor4 = color1;
|
|
Microsoft.Xna.Framework.Color color2 = rCurrentNPC.GetAlpha(newColor4) * (1f - t1);
|
|
Vector2 position2 = rCurrentNPC.Center + ((float) ((double) index / (double) num53 * 6.28318548202515) + rCurrentNPC.rotation + num55).ToRotationVector2() * (float) (4.0 * (double) t1 + 2.0) - screenPos - new Vector2((float) texture.Width, (float) (texture.Height / Main.npcFrameCount[type])) * rCurrentNPC.scale / 2f + (halfSize * rCurrentNPC.scale + new Vector2(0.0f, addY + addHeight + rCurrentNPC.gfxOffY));
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[216].Value, position2, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), color2, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
}
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[216].Value, position1, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), color1, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
}
|
|
if (type == 661)
|
|
{
|
|
num55 = MathHelper.Lerp(0.0f, 3f, Utils.GetLerpValue(0.0f, 60f, rCurrentNPC.ai[2], true));
|
|
for (int index = 0; index < num53; ++index)
|
|
{
|
|
Microsoft.Xna.Framework.Color newColor5 = new Microsoft.Xna.Framework.Color((int) sbyte.MaxValue - rCurrentNPC.alpha, (int) sbyte.MaxValue - rCurrentNPC.alpha, (int) sbyte.MaxValue - rCurrentNPC.alpha, 0).MultiplyRGBA(Main.hslToRgb((float) (((double) Main.GlobalTimeWrappedHourly + (double) index / (double) num53) % 1.0), 1f, 0.5f));
|
|
Microsoft.Xna.Framework.Color color = rCurrentNPC.GetAlpha(newColor5) * (float) (1.0 - (double) t1 * 0.5);
|
|
color.A = (byte) 0;
|
|
float num68 = 2f + rCurrentNPC.ai[2];
|
|
Vector2 position3 = rCurrentNPC.Center + ((float) ((double) index / (double) num53 * 6.28318548202515) + rCurrentNPC.rotation + num55).ToRotationVector2() * (float) ((double) num68 * (double) t1 + 2.0) - screenPos - new Vector2((float) texture.Width, (float) (texture.Height / Main.npcFrameCount[type])) * rCurrentNPC.scale / 2f + (halfSize * rCurrentNPC.scale + new Vector2(0.0f, addY + addHeight + rCurrentNPC.gfxOffY));
|
|
mySpriteBatch.Draw(texture, position3, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), color, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
}
|
|
mySpriteBatch.Draw(texture, position1, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0) * 0.1f, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
}
|
|
if ((type == 568 || type == 569) && (double) rCurrentNPC.localAI[3] >= 60.0)
|
|
{
|
|
Microsoft.Xna.Framework.Color color3 = new Microsoft.Xna.Framework.Color((int) sbyte.MaxValue - rCurrentNPC.alpha, (int) sbyte.MaxValue - rCurrentNPC.alpha, (int) sbyte.MaxValue - rCurrentNPC.alpha, 0).MultiplyRGBA(secondColor);
|
|
for (int index = 0; index < num53; ++index)
|
|
{
|
|
Microsoft.Xna.Framework.Color newColor6 = color3;
|
|
Microsoft.Xna.Framework.Color color4 = rCurrentNPC.GetAlpha(newColor6) * (1f - t1);
|
|
Vector2 position4 = rCurrentNPC.Center + ((float) ((double) index / (double) num53 * 6.28318548202515) + rCurrentNPC.rotation + num55).ToRotationVector2() * (float) (4.0 * (double) t1 + 2.0) - screenPos - new Vector2((float) texture.Width, (float) (texture.Height / Main.npcFrameCount[type])) * rCurrentNPC.scale / 2f + (halfSize * rCurrentNPC.scale + new Vector2(0.0f, addY + addHeight + rCurrentNPC.gfxOffY));
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[224].Value, position4, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), color4, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
}
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[224].Value, position1, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), color3, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
float t2 = rCurrentNPC.localAI[0];
|
|
if ((double) t2 > 0.0)
|
|
{
|
|
Microsoft.Xna.Framework.Color color5 = new Microsoft.Xna.Framework.Color(180, 90, (int) byte.MaxValue, (int) (byte) ((Math.Cos((double) t2 * 6.28318548202515 / 60.0) * 0.5 + 0.5) * 32.0 + 0.0)) * 0.75f;
|
|
float num69 = 1f;
|
|
if ((double) t2 < 60.0)
|
|
{
|
|
float lerpValue = Utils.GetLerpValue(0.0f, 60f, t2, false);
|
|
color5 *= lerpValue;
|
|
num69 = MathHelper.Lerp(1f, 0.5f, (float) (1.0 - (double) lerpValue * (double) lerpValue));
|
|
}
|
|
Texture2D texture2D = TextureAssets.Extra[89].Value;
|
|
Vector2 origin3 = texture2D.Size() / 2f;
|
|
Vector2 scale3 = new Vector2(num69);
|
|
float num70 = t2 * ((float) Math.PI / 750f);
|
|
float num71 = 1.570796f;
|
|
scale3.Y *= 1f;
|
|
scale3.X *= 1f;
|
|
for (float num72 = 0.0f; (double) num72 < 16.0; ++num72)
|
|
{
|
|
float f = num70 + (float) (6.28318548202515 * ((double) num72 / 16.0));
|
|
Vector2 position5 = rCurrentNPC.Center - screenPos + f.ToRotationVector2() * 400f * num69;
|
|
mySpriteBatch.Draw(texture2D, position5, new Microsoft.Xna.Framework.Rectangle?(), color5, f + 1.570796f + num71, origin3, scale3, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
}
|
|
if (type == 546)
|
|
mySpriteBatch.Draw(TextureAssets.Extra[76].Value, position1, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 200), MathHelper.Clamp(rCurrentNPC.velocity.X * 0.1f, -0.3926991f, 0.3926991f), halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
if ((type == 566 || type == 567) && (double) rCurrentNPC.localAI[3] >= 115.0)
|
|
{
|
|
int frameY = (int) ((double) Main.GlobalTimeWrappedHourly % 0.5 / 0.5 * 4.0);
|
|
Texture2D texture2D = TextureAssets.Extra[80].Value;
|
|
Microsoft.Xna.Framework.Rectangle r = texture2D.Frame(verticalFrames: 4, frameY: frameY);
|
|
Vector2 vector2 = new Vector2((float) (rCurrentNPC.spriteDirection * 8), -26f) * rCurrentNPC.scale;
|
|
int num73 = rCurrentNPC.frame.Y / rCurrentNPC.frame.Height;
|
|
int num74 = 0;
|
|
switch (num73)
|
|
{
|
|
case 0:
|
|
num74 = 6;
|
|
break;
|
|
case 1:
|
|
num74 = 4;
|
|
break;
|
|
case 2:
|
|
num74 = 2;
|
|
break;
|
|
case 3:
|
|
num74 = 6;
|
|
break;
|
|
case 4:
|
|
num74 = 8;
|
|
break;
|
|
case 5:
|
|
num74 = 6;
|
|
break;
|
|
case 6:
|
|
num74 = 4;
|
|
break;
|
|
case 7:
|
|
num74 = 6;
|
|
break;
|
|
case 8:
|
|
num74 = 2;
|
|
break;
|
|
}
|
|
Microsoft.Xna.Framework.Color color = new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 130);
|
|
vector2.Y += (float) num74;
|
|
mySpriteBatch.Draw(texture2D, position1 + vector2 * rCurrentNPC.scale, new Microsoft.Xna.Framework.Rectangle?(r), color, MathHelper.Clamp(rCurrentNPC.velocity.X * 0.1f, -0.3926991f, 0.3926991f), r.Size() / 2f, rCurrentNPC.scale * 0.7f, spriteEffects ^ SpriteEffects.FlipHorizontally, 0.0f);
|
|
}
|
|
if (type != 618)
|
|
return;
|
|
mySpriteBatch.Draw(TextureAssets.Extra[129].Value, position1, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), rCurrentNPC.GetAlpha(newColor1), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
}
|
|
else
|
|
{
|
|
switch (type)
|
|
{
|
|
case 551:
|
|
Texture2D texture1 = TextureAssets.Npc[type].Value;
|
|
Vector2 position6 = rCurrentNPC.Center - screenPos;
|
|
Microsoft.Xna.Framework.Rectangle frame1 = rCurrentNPC.frame;
|
|
Vector2 vector2_1 = frame1.Size() / 2f;
|
|
SpriteEffects effects1 = spriteEffects ^ SpriteEffects.FlipHorizontally;
|
|
float rotation1 = rCurrentNPC.rotation;
|
|
Microsoft.Xna.Framework.Color color6 = npcColor2;
|
|
Microsoft.Xna.Framework.Color color7 = Microsoft.Xna.Framework.Color.Lerp(color6, Microsoft.Xna.Framework.Color.White, 0.6f);
|
|
color7.A = (byte) 66;
|
|
Vector2 vector2_2 = new Vector2(171f, 44f);
|
|
Vector2 vector2_3 = new Vector2(230f, 52f);
|
|
Vector2 origin4 = Vector2.Lerp(vector2_2, vector2_3, 0.5f) + new Vector2(-50f, 30f);
|
|
int num75 = (int) rCurrentNPC.localAI[0] / 4;
|
|
Vector2 spinningpoint1 = vector2_2 - origin4;
|
|
Vector2 spinningpoint2 = vector2_3 - origin4;
|
|
Texture2D texture2D1 = TextureAssets.Extra[82].Value;
|
|
if (effects1.HasFlag((Enum) SpriteEffects.FlipHorizontally))
|
|
spinningpoint2.X *= -1f;
|
|
Microsoft.Xna.Framework.Rectangle rectangle1 = texture2D1.Frame(2, 5, num75 / 5, num75 % 5);
|
|
Vector2 origin5 = new Vector2(16f, 176f);
|
|
if (effects1.HasFlag((Enum) SpriteEffects.FlipHorizontally))
|
|
origin5.X = (float) rectangle1.Width - origin5.X;
|
|
if (effects1.HasFlag((Enum) SpriteEffects.FlipHorizontally))
|
|
origin4.X = (float) frame1.Width - origin4.X;
|
|
Texture2D texture2D2 = TextureAssets.Extra[81].Value;
|
|
if (effects1.HasFlag((Enum) SpriteEffects.FlipHorizontally))
|
|
spinningpoint1.X *= -1f;
|
|
Microsoft.Xna.Framework.Rectangle rectangle2 = texture2D2.Frame(2, 5, num75 / 5, num75 % 5);
|
|
Vector2 origin6 = new Vector2(215f, 170f);
|
|
if (effects1.HasFlag((Enum) SpriteEffects.FlipHorizontally))
|
|
origin6.X = (float) rectangle2.Width - origin6.X;
|
|
if ((double) Utils.GetLerpValue(0.0f, 30f, rCurrentNPC.localAI[1], true) == 1.0)
|
|
Utils.GetLerpValue(60f, 30f, rCurrentNPC.localAI[1], true);
|
|
float num76 = 2f;
|
|
Vector2 vector2_4 = rCurrentNPC.Size / 2f - screenPos;
|
|
int num77 = -3;
|
|
int num78 = 0;
|
|
byte num79 = 2;
|
|
for (int index = 9; index > num78; index += num77)
|
|
{
|
|
Vector2 position7 = rCurrentNPC.oldPos[index] + vector2_4;
|
|
float rotation2 = rCurrentNPC.oldRot[index];
|
|
Microsoft.Xna.Framework.Color color8 = color6 * (float) (1.0 - (double) index / 10.0) * 0.35f;
|
|
color8.A /= num79;
|
|
mySpriteBatch.Draw(texture2D1, position7 + spinningpoint2.RotatedBy((double) rotation2), new Microsoft.Xna.Framework.Rectangle?(rectangle1), color8, rotation2, origin5, 1f, effects1, 0.0f);
|
|
mySpriteBatch.Draw(texture1, position7, new Microsoft.Xna.Framework.Rectangle?(frame1), color8, rotation2, origin4, 1f, effects1, 0.0f);
|
|
mySpriteBatch.Draw(texture2D2, position7 + spinningpoint1.RotatedBy((double) rotation2), new Microsoft.Xna.Framework.Rectangle?(rectangle2), color8, rotation2, origin6, 1f, effects1, 0.0f);
|
|
}
|
|
mySpriteBatch.Draw(texture2D1, position6 + spinningpoint2.RotatedBy((double) rotation1), new Microsoft.Xna.Framework.Rectangle?(rectangle1), color6, rotation1, origin5, 1f, effects1, 0.0f);
|
|
mySpriteBatch.Draw(texture1, position6, new Microsoft.Xna.Framework.Rectangle?(frame1), color6, rotation1, origin4, 1f, effects1, 0.0f);
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[226].Value, position6, new Microsoft.Xna.Framework.Rectangle?(frame1), color7 * (float) (0.699999988079071 + 0.300000011920929 * (double) num76), rotation1, origin4, 1f, effects1, 0.0f);
|
|
mySpriteBatch.Draw(texture2D2, position6 + spinningpoint1.RotatedBy((double) rotation1), new Microsoft.Xna.Framework.Rectangle?(rectangle2), color6, rotation1, origin6, 1f, effects1, 0.0f);
|
|
break;
|
|
case 657:
|
|
Texture2D texture2D3 = TextureAssets.Npc[type].Value;
|
|
Vector2 vector2_5 = rCurrentNPC.Bottom - screenPos;
|
|
vector2_5.Y += 2f;
|
|
int num80 = Main.npcFrameCount[rCurrentNPC.type];
|
|
int num81 = rCurrentNPC.frame.Y / rCurrentNPC.frame.Height;
|
|
Microsoft.Xna.Framework.Rectangle r3 = texture2D3.Frame(2, 16, num81 / num80, num81 % num80);
|
|
r3.Inflate(0, -2);
|
|
Vector2 origin7 = r3.Size() * new Vector2(0.5f, 1f);
|
|
Microsoft.Xna.Framework.Color color9 = Microsoft.Xna.Framework.Color.Lerp(Microsoft.Xna.Framework.Color.White, npcColor2, 0.5f);
|
|
if (rCurrentNPC.life <= rCurrentNPC.lifeMax / 2)
|
|
this.DrawNPCDirect_QueenSlimeWings(rCurrentNPC, mySpriteBatch, screenPos, rCurrentNPC.Center, color9);
|
|
Texture2D texture2D4 = TextureAssets.Extra[186].Value;
|
|
Microsoft.Xna.Framework.Rectangle r4 = texture2D4.Frame();
|
|
Vector2 origin8 = r4.Size() * new Vector2(0.5f, 0.5f);
|
|
Vector2 spinningpoint3 = new Vector2(rCurrentNPC.Center.X, rCurrentNPC.Center.Y);
|
|
float num82 = 0.0f;
|
|
switch (num81)
|
|
{
|
|
case 1:
|
|
case 6:
|
|
num82 -= 10f;
|
|
break;
|
|
case 3:
|
|
case 5:
|
|
num82 += 10f;
|
|
break;
|
|
case 4:
|
|
case 12:
|
|
case 13:
|
|
case 14:
|
|
case 15:
|
|
num82 += 18f;
|
|
break;
|
|
case 7:
|
|
case 8:
|
|
num82 -= 14f;
|
|
break;
|
|
case 9:
|
|
num82 -= 16f;
|
|
break;
|
|
case 10:
|
|
num82 -= 18f;
|
|
break;
|
|
case 11:
|
|
num82 += 20f;
|
|
break;
|
|
case 20:
|
|
num82 -= 14f;
|
|
break;
|
|
case 21:
|
|
case 23:
|
|
num82 -= 18f;
|
|
break;
|
|
case 22:
|
|
num82 -= 22f;
|
|
break;
|
|
}
|
|
spinningpoint3.Y += num82;
|
|
if ((double) rCurrentNPC.rotation != 0.0)
|
|
spinningpoint3 = spinningpoint3.RotatedBy((double) rCurrentNPC.rotation, rCurrentNPC.Bottom);
|
|
Vector2 position8 = spinningpoint3 - screenPos;
|
|
if (!rCurrentNPC.IsABestiaryIconDummy)
|
|
{
|
|
mySpriteBatch.End();
|
|
mySpriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, SamplerState.PointClamp, DepthStencilState.Default, RasterizerState.CullNone, (Effect) null, Main.Transform);
|
|
}
|
|
GameShaders.Misc["QueenSlime"].Apply(new DrawData?());
|
|
if ((double) rCurrentNPC.ai[0] == 4.0 && (double) rCurrentNPC.velocity.Y != 0.0)
|
|
{
|
|
float num83 = 1f;
|
|
if ((double) rCurrentNPC.ai[2] == 1.0)
|
|
num83 = 6f;
|
|
for (int index = 7; index >= 0; --index)
|
|
{
|
|
float num84 = (float) (1.0 - (double) index / 8.0);
|
|
Vector2 vector2_6 = rCurrentNPC.oldPos[index] + new Vector2((float) rCurrentNPC.width * 0.5f, (float) rCurrentNPC.height);
|
|
Vector2 position9 = vector2_6 - (rCurrentNPC.Bottom - Vector2.Lerp(vector2_6, rCurrentNPC.Bottom, 0.75f)) * num83 - screenPos;
|
|
Microsoft.Xna.Framework.Color color10 = color9 * num84;
|
|
mySpriteBatch.Draw(texture2D3, position9, new Microsoft.Xna.Framework.Rectangle?(r3), color10, rCurrentNPC.rotation, origin7, rCurrentNPC.scale, spriteEffects ^ SpriteEffects.FlipHorizontally, 0.0f);
|
|
}
|
|
}
|
|
if (!rCurrentNPC.IsABestiaryIconDummy)
|
|
{
|
|
mySpriteBatch.End();
|
|
mySpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, Main.DefaultSamplerState, DepthStencilState.None, Main.Rasterizer, (Effect) null, Main.Transform);
|
|
}
|
|
Main.pixelShader.CurrentTechnique.Passes[0].Apply();
|
|
mySpriteBatch.Draw(texture2D4, position8, new Microsoft.Xna.Framework.Rectangle?(r4), color9, rCurrentNPC.rotation, origin8, 1f, spriteEffects ^ SpriteEffects.FlipHorizontally, 0.0f);
|
|
GameShaders.Misc["QueenSlime"].Apply(new DrawData?());
|
|
if (!rCurrentNPC.IsABestiaryIconDummy)
|
|
{
|
|
mySpriteBatch.End();
|
|
mySpriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, SamplerState.PointClamp, DepthStencilState.Default, RasterizerState.CullNone, (Effect) null, Main.Transform);
|
|
}
|
|
DrawData drawData1 = new DrawData(texture2D3, vector2_5, new Microsoft.Xna.Framework.Rectangle?(r3), rCurrentNPC.GetAlpha(color9), rCurrentNPC.rotation, origin7, rCurrentNPC.scale, spriteEffects ^ SpriteEffects.FlipHorizontally, 0);
|
|
GameShaders.Misc["QueenSlime"].Apply(new DrawData?(drawData1));
|
|
drawData1.Draw(mySpriteBatch);
|
|
Main.pixelShader.CurrentTechnique.Passes[0].Apply();
|
|
if (!rCurrentNPC.IsABestiaryIconDummy)
|
|
{
|
|
mySpriteBatch.End();
|
|
mySpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, Main.DefaultSamplerState, DepthStencilState.None, Main.Rasterizer, (Effect) null, Main.Transform);
|
|
}
|
|
Texture2D texture2D5 = TextureAssets.Extra[177].Value;
|
|
Microsoft.Xna.Framework.Rectangle r5 = texture2D5.Frame();
|
|
Vector2 origin9 = r5.Size() * new Vector2(0.5f, 0.5f);
|
|
vector2_5 = new Vector2(rCurrentNPC.Center.X, (float) ((double) rCurrentNPC.Top.Y - (double) r5.Bottom + 44.0));
|
|
float num85 = 0.0f;
|
|
switch (num81)
|
|
{
|
|
case 1:
|
|
num85 -= 10f;
|
|
break;
|
|
case 3:
|
|
case 5:
|
|
case 6:
|
|
num85 += 10f;
|
|
break;
|
|
case 4:
|
|
case 12:
|
|
case 13:
|
|
case 14:
|
|
case 15:
|
|
num85 += 18f;
|
|
break;
|
|
case 7:
|
|
case 8:
|
|
num85 -= 14f;
|
|
break;
|
|
case 9:
|
|
num85 -= 16f;
|
|
break;
|
|
case 10:
|
|
num85 -= 18f;
|
|
break;
|
|
case 11:
|
|
num85 += 20f;
|
|
break;
|
|
case 20:
|
|
num85 -= 14f;
|
|
break;
|
|
case 21:
|
|
case 23:
|
|
num85 -= 18f;
|
|
break;
|
|
case 22:
|
|
num85 -= 22f;
|
|
break;
|
|
}
|
|
vector2_5.Y += num85;
|
|
if ((double) rCurrentNPC.rotation != 0.0)
|
|
vector2_5 = vector2_5.RotatedBy((double) rCurrentNPC.rotation, rCurrentNPC.Bottom);
|
|
Vector2 position10 = vector2_5 - screenPos;
|
|
mySpriteBatch.Draw(texture2D5, position10, new Microsoft.Xna.Framework.Rectangle?(r5), color9, rCurrentNPC.rotation, origin9, 1f, spriteEffects ^ SpriteEffects.FlipHorizontally, 0.0f);
|
|
break;
|
|
default:
|
|
if (type == 576 || type == 577)
|
|
{
|
|
Texture2D texture2D6 = TextureAssets.Npc[type].Value;
|
|
Vector2 position11 = rCurrentNPC.Bottom - screenPos;
|
|
Microsoft.Xna.Framework.Rectangle r6 = texture2D6.Frame(5, 10, rCurrentNPC.frame.Y / 10, rCurrentNPC.frame.Y % 10);
|
|
Vector2 origin10 = r6.Size() * new Vector2(0.5f, 1f);
|
|
origin10.Y -= 4f;
|
|
int num86 = 94;
|
|
origin10.X = rCurrentNPC.spriteDirection != 1 ? (float) (r6.Width - num86) : (float) num86;
|
|
Microsoft.Xna.Framework.Color color11 = Microsoft.Xna.Framework.Color.White;
|
|
float amount3 = 0.0f;
|
|
float amount4 = 0.0f;
|
|
int num87 = 0;
|
|
float num88 = 0.0f;
|
|
Microsoft.Xna.Framework.Color newColor7 = npcColor2;
|
|
if ((double) rCurrentNPC.localAI[3] < 60.0)
|
|
{
|
|
float num89 = rCurrentNPC.localAI[3] / 60f;
|
|
num87 = 3;
|
|
num88 = (float) (1.0 - (double) num89 * (double) num89);
|
|
color11 = new Microsoft.Xna.Framework.Color((int) sbyte.MaxValue, 0, (int) byte.MaxValue, 0);
|
|
amount4 = 1f;
|
|
newColor7 = Microsoft.Xna.Framework.Color.Lerp(Microsoft.Xna.Framework.Color.Transparent, newColor7, num89 * num89);
|
|
}
|
|
for (int index = 0; index < num87; ++index)
|
|
{
|
|
Microsoft.Xna.Framework.Color newColor8 = Microsoft.Xna.Framework.Color.Lerp(npcColor2, color11, amount3);
|
|
Microsoft.Xna.Framework.Color color12 = Microsoft.Xna.Framework.Color.Lerp(rCurrentNPC.GetAlpha(newColor8), color11, amount4) * (1f - num88);
|
|
Vector2 position12 = position11 - new Vector2((float) texture2D6.Width, (float) (texture2D6.Height / Main.npcFrameCount[type])) * rCurrentNPC.scale / 2f + (halfSize * rCurrentNPC.scale + new Vector2(0.0f, addY + addHeight + rCurrentNPC.gfxOffY));
|
|
mySpriteBatch.Draw(texture2D6, position12, new Microsoft.Xna.Framework.Rectangle?(r6), color12, rCurrentNPC.rotation, origin10, rCurrentNPC.scale, spriteEffects ^ SpriteEffects.FlipHorizontally, 0.0f);
|
|
}
|
|
mySpriteBatch.Draw(texture2D6, position11, new Microsoft.Xna.Framework.Rectangle?(r6), rCurrentNPC.GetAlpha(newColor7), rCurrentNPC.rotation, origin10, rCurrentNPC.scale, spriteEffects ^ SpriteEffects.FlipHorizontally, 0.0f);
|
|
break;
|
|
}
|
|
if (type == 594)
|
|
{
|
|
Texture2D texture2D7 = TextureAssets.Npc[type].Value;
|
|
Vector2 position13 = rCurrentNPC.Top - screenPos;
|
|
Microsoft.Xna.Framework.Rectangle r7 = texture2D7.Frame(8, frameX: rCurrentNPC.frame.Y);
|
|
Microsoft.Xna.Framework.Rectangle rectangle3 = texture2D7.Frame(8);
|
|
Vector2 origin11 = r7.Size() * new Vector2(0.5f, 0.0f);
|
|
Microsoft.Xna.Framework.Color color13 = npcColor2;
|
|
float scale = 1f;
|
|
NPC slaveNpc = rCurrentNPC.AI_113_WindyBalloon_GetSlaveNPC();
|
|
if (slaveNpc != null)
|
|
{
|
|
scale = slaveNpc.scale;
|
|
if ((double) slaveNpc.ai[1] > 0.0)
|
|
Main.DrawNPC_SlimeItem(slaveNpc, slaveNpc.type, color13, rCurrentNPC.rotation);
|
|
mySpriteBatch.Draw(texture2D7, position13, new Microsoft.Xna.Framework.Rectangle?(rectangle3), slaveNpc.GetAlpha(color13), rCurrentNPC.rotation, origin11, scale, spriteEffects, 0.0f);
|
|
mySpriteBatch.Draw(texture2D7, position13, new Microsoft.Xna.Framework.Rectangle?(rectangle3), slaveNpc.GetColor(color13), rCurrentNPC.rotation, origin11, scale, spriteEffects, 0.0f);
|
|
}
|
|
mySpriteBatch.Draw(texture2D7, position13, new Microsoft.Xna.Framework.Rectangle?(r7), rCurrentNPC.GetAlpha(color13), rCurrentNPC.rotation, origin11, scale, spriteEffects, 0.0f);
|
|
break;
|
|
}
|
|
if (type == 564 || type == 565)
|
|
{
|
|
Texture2D texture2D8 = TextureAssets.Npc[type].Value;
|
|
Vector2 position14 = rCurrentNPC.Bottom - screenPos;
|
|
Microsoft.Xna.Framework.Rectangle r8 = texture2D8.Frame(5, 9, rCurrentNPC.frame.Y / 9, rCurrentNPC.frame.Y % 9);
|
|
Vector2 origin12 = r8.Size() * new Vector2(0.5f, 1f);
|
|
origin12.Y -= 10f;
|
|
int num90 = 52;
|
|
origin12.X = rCurrentNPC.spriteDirection != 1 ? (float) (r8.Width - num90) : (float) num90;
|
|
Microsoft.Xna.Framework.Color color14 = Microsoft.Xna.Framework.Color.White;
|
|
float amount5 = 0.0f;
|
|
float amount6 = 0.0f;
|
|
int num91 = 0;
|
|
float num92 = 0.0f;
|
|
float num93 = 0.0f;
|
|
Microsoft.Xna.Framework.Color newColor9 = npcColor2;
|
|
if ((double) rCurrentNPC.localAI[3] < 60.0)
|
|
{
|
|
float num94 = rCurrentNPC.localAI[3] / 60f;
|
|
num91 = 3;
|
|
num92 = (float) (1.0 - (double) num94 * (double) num94);
|
|
num93 = 8f;
|
|
color14 = new Microsoft.Xna.Framework.Color((int) sbyte.MaxValue, 0, (int) byte.MaxValue, 0);
|
|
amount6 = 1f;
|
|
newColor9 = Microsoft.Xna.Framework.Color.Lerp(Microsoft.Xna.Framework.Color.Transparent, newColor9, num94 * num94);
|
|
}
|
|
for (int index = 0; index < num91; ++index)
|
|
{
|
|
Microsoft.Xna.Framework.Color newColor10 = Microsoft.Xna.Framework.Color.Lerp(npcColor2, color14, amount5);
|
|
Microsoft.Xna.Framework.Color color15 = Microsoft.Xna.Framework.Color.Lerp(rCurrentNPC.GetAlpha(newColor10), color14, amount6) * (1f - num92);
|
|
Vector2 position15 = position14 - new Vector2((float) texture2D8.Width, (float) (texture2D8.Height / Main.npcFrameCount[type])) * rCurrentNPC.scale / 2f + (halfSize * rCurrentNPC.scale + new Vector2(0.0f, addY + addHeight + rCurrentNPC.gfxOffY)) + ((float) ((double) index / (double) num91 * 6.28318548202515)).ToRotationVector2() * num93 * num92;
|
|
mySpriteBatch.Draw(texture2D8, position15, new Microsoft.Xna.Framework.Rectangle?(r8), color15, rCurrentNPC.rotation, origin12, rCurrentNPC.scale, spriteEffects ^ SpriteEffects.FlipHorizontally, 0.0f);
|
|
}
|
|
Microsoft.Xna.Framework.Color alpha = rCurrentNPC.GetAlpha(newColor9);
|
|
int num95 = 4;
|
|
float num96 = 4f;
|
|
float num97 = (float) (0.625 + Math.Sin((double) Main.GlobalTimeWrappedHourly * 6.28318548202515 * 0.75 + 3.14159274101257) * 0.125);
|
|
for (int index = 0; index < num95; ++index)
|
|
{
|
|
Microsoft.Xna.Framework.Color color16 = alpha * (1f - num97);
|
|
Vector2 position16 = position14 - new Vector2((float) texture2D8.Width, (float) (texture2D8.Height / Main.npcFrameCount[type])) * rCurrentNPC.scale / 2f + (halfSize * rCurrentNPC.scale + new Vector2(0.0f, addY + addHeight + rCurrentNPC.gfxOffY)) + ((float) ((double) index / (double) num95 * 6.28318548202515)).ToRotationVector2() * num96 * num97;
|
|
mySpriteBatch.Draw(texture2D8, position16, new Microsoft.Xna.Framework.Rectangle?(r8), color16, rCurrentNPC.rotation, origin12, rCurrentNPC.scale, spriteEffects ^ SpriteEffects.FlipHorizontally, 0.0f);
|
|
}
|
|
mySpriteBatch.Draw(texture2D8, position14, new Microsoft.Xna.Framework.Rectangle?(r8), alpha, rCurrentNPC.rotation, origin12, rCurrentNPC.scale, spriteEffects ^ SpriteEffects.FlipHorizontally, 0.0f);
|
|
if ((double) rCurrentNPC.Opacity <= 0.0)
|
|
break;
|
|
Microsoft.Xna.Framework.Color white = Microsoft.Xna.Framework.Color.White;
|
|
white.A /= (byte) 2;
|
|
white *= rCurrentNPC.Opacity;
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[225].Value, position14, new Microsoft.Xna.Framework.Rectangle?(r8), white, rCurrentNPC.rotation, origin12, rCurrentNPC.scale, spriteEffects ^ SpriteEffects.FlipHorizontally, 0.0f);
|
|
int num98 = 4;
|
|
float num99 = 4f;
|
|
float num100 = (float) (0.5 + Math.Sin((double) Main.GlobalTimeWrappedHourly * 6.28318548202515 * 0.75) * 0.5);
|
|
for (int index = 0; index < num98; ++index)
|
|
{
|
|
Microsoft.Xna.Framework.Color color17 = white * 0.35f * (1f - num100);
|
|
Vector2 position17 = position14 - new Vector2((float) texture2D8.Width, (float) (texture2D8.Height / Main.npcFrameCount[type])) * rCurrentNPC.scale / 2f + (halfSize * rCurrentNPC.scale + new Vector2(0.0f, addY + addHeight + rCurrentNPC.gfxOffY)) + ((float) ((double) index / (double) num98 * 6.28318548202515)).ToRotationVector2() * num99 * num100;
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[225].Value, position17, new Microsoft.Xna.Framework.Rectangle?(r8), color17, rCurrentNPC.rotation, origin12, rCurrentNPC.scale, spriteEffects ^ SpriteEffects.FlipHorizontally, 0.0f);
|
|
}
|
|
break;
|
|
}
|
|
if (type == 548)
|
|
{
|
|
Texture2D texture2D9 = TextureAssets.Npc[type].Value;
|
|
Vector2 position18 = rCurrentNPC.Bottom - screenPos;
|
|
Microsoft.Xna.Framework.Rectangle r9 = texture2D9.Frame();
|
|
Vector2 origin13 = r9.Size() / 2f;
|
|
origin13.Y += 30f;
|
|
origin13.Y += 8f;
|
|
--origin13.X;
|
|
Microsoft.Xna.Framework.Color white = Microsoft.Xna.Framework.Color.White;
|
|
float amount7 = 0.0f;
|
|
float amount8 = 0.0f;
|
|
int num101 = 0;
|
|
float num102 = 0.0f;
|
|
float num103 = 0.0f;
|
|
Microsoft.Xna.Framework.Color newColor11 = npcColor2;
|
|
for (int index = 0; index < num101; ++index)
|
|
{
|
|
Microsoft.Xna.Framework.Color newColor12 = Microsoft.Xna.Framework.Color.Lerp(npcColor2, white, amount7);
|
|
Microsoft.Xna.Framework.Color color18 = Microsoft.Xna.Framework.Color.Lerp(rCurrentNPC.GetAlpha(newColor12), white, amount8) * (1f - num102);
|
|
Vector2 position19 = position18 - new Vector2((float) texture2D9.Width, (float) (texture2D9.Height / Main.npcFrameCount[type])) * rCurrentNPC.scale / 2f + (halfSize * rCurrentNPC.scale + new Vector2(0.0f, addY + addHeight + rCurrentNPC.gfxOffY)) + ((float) ((double) index / (double) num101 * 6.28318548202515)).ToRotationVector2() * num103 * num102;
|
|
mySpriteBatch.Draw(texture2D9, position19, new Microsoft.Xna.Framework.Rectangle?(r9), color18, rCurrentNPC.rotation, origin13, rCurrentNPC.scale, spriteEffects ^ SpriteEffects.FlipHorizontally, 0.0f);
|
|
}
|
|
Microsoft.Xna.Framework.Color alpha = rCurrentNPC.GetAlpha(newColor11);
|
|
int num104 = 4;
|
|
float num105 = 4f;
|
|
float num106 = (float) (0.625 + Math.Sin((double) Main.GlobalTimeWrappedHourly * 6.28318548202515 * 0.75 + 3.14159274101257) * 0.125);
|
|
for (int index = 0; index < num104; ++index)
|
|
{
|
|
Microsoft.Xna.Framework.Color color19 = alpha;
|
|
color19.A = (byte) 0;
|
|
Microsoft.Xna.Framework.Color color20 = color19 * (1f - num106);
|
|
Vector2 position20 = position18 - new Vector2((float) texture2D9.Width, (float) (texture2D9.Height / Main.npcFrameCount[type])) * rCurrentNPC.scale / 2f + (halfSize * rCurrentNPC.scale + new Vector2(0.0f, addY + addHeight + rCurrentNPC.gfxOffY)) + ((float) ((double) index / (double) num104 * 6.28318548202515)).ToRotationVector2() * num105 * num106;
|
|
mySpriteBatch.Draw(texture2D9, position20, new Microsoft.Xna.Framework.Rectangle?(r9), color20, rCurrentNPC.rotation, origin13, rCurrentNPC.scale, spriteEffects ^ SpriteEffects.FlipHorizontally, 0.0f);
|
|
}
|
|
mySpriteBatch.Draw(texture2D9, position18, new Microsoft.Xna.Framework.Rectangle?(r9), alpha, rCurrentNPC.rotation, origin13, rCurrentNPC.scale, spriteEffects ^ SpriteEffects.FlipHorizontally, 0.0f);
|
|
if ((double) rCurrentNPC.ai[1] == 2.0)
|
|
{
|
|
float num107 = Math.Min(1f, rCurrentNPC.ai[0] / 120f);
|
|
mySpriteBatch.Draw(texture2D9, position18, new Microsoft.Xna.Framework.Rectangle?(r9), new Microsoft.Xna.Framework.Color(1f, 1f, 1f, 0.0f) * num107, rCurrentNPC.rotation, origin13, rCurrentNPC.scale, spriteEffects ^ SpriteEffects.FlipHorizontally, 0.0f);
|
|
float progress = MathHelper.Clamp(rCurrentNPC.ai[0] / 450f, 0.0f, 1f);
|
|
if (!Terraria.Graphics.Effects.Filters.Scene["CrystalWin"].IsActive())
|
|
Terraria.Graphics.Effects.Filters.Scene.Activate("CrystalWin", rCurrentNPC.Center);
|
|
else
|
|
Terraria.Graphics.Effects.Filters.Scene["CrystalWin"].GetShader().UseProgress(progress);
|
|
Terraria.Graphics.Effects.Filters.Scene["CrystalWin"].GetShader().UseTargetPosition(rCurrentNPC.Center);
|
|
}
|
|
int num108 = 4;
|
|
float num109 = 4f;
|
|
float num110 = (float) (0.625 + Math.Sin((double) Main.GlobalTimeWrappedHourly * 6.28318548202515 * 0.75) * 0.125);
|
|
for (int index = 0; index < num108; ++index)
|
|
{
|
|
Microsoft.Xna.Framework.Color color21 = alpha;
|
|
color21.A = (byte) 0;
|
|
Microsoft.Xna.Framework.Color color22 = color21 * 0.3f * (1f - num110);
|
|
Vector2 position21 = position18 - new Vector2((float) texture2D9.Width, (float) (texture2D9.Height / Main.npcFrameCount[type])) * rCurrentNPC.scale / 2f + (halfSize * rCurrentNPC.scale + new Vector2(0.0f, addY + addHeight + rCurrentNPC.gfxOffY)) + ((float) ((double) index / (double) num108 * 6.28318548202515)).ToRotationVector2() * num109 * num110;
|
|
mySpriteBatch.Draw(texture2D9, position21, new Microsoft.Xna.Framework.Rectangle?(r9), color22, rCurrentNPC.rotation, origin13, rCurrentNPC.scale, spriteEffects ^ SpriteEffects.FlipHorizontally, 0.0f);
|
|
}
|
|
if (rCurrentNPC.alpha >= (int) byte.MaxValue)
|
|
break;
|
|
float num111 = (float) ((double) Main.GlobalTimeWrappedHourly % 3.0 / 3.0);
|
|
float num112 = num111;
|
|
if ((double) num112 > 0.5)
|
|
num112 = 1f - num111;
|
|
if ((double) num112 < 0.0)
|
|
num112 = 0.0f;
|
|
float num113 = (float) (((double) num111 + 0.5) % 1.0);
|
|
float num114 = num113;
|
|
if ((double) num114 > 0.5)
|
|
num114 = 1f - num113;
|
|
if ((double) num114 < 0.0)
|
|
num114 = 0.0f;
|
|
Texture2D texture2D10 = TextureAssets.GlowMask[239].Value;
|
|
Microsoft.Xna.Framework.Rectangle r10 = texture2D10.Frame();
|
|
origin13 = r10.Size() / 2f;
|
|
Vector2 position22 = position18 + new Vector2(0.0f, -40f);
|
|
Microsoft.Xna.Framework.Color color23 = new Microsoft.Xna.Framework.Color(140, 50, (int) byte.MaxValue, 0) * 0.6f;
|
|
mySpriteBatch.Draw(texture2D10, position22, new Microsoft.Xna.Framework.Rectangle?(r10), color23, rCurrentNPC.rotation, origin13, rCurrentNPC.scale * 0.75f, spriteEffects ^ SpriteEffects.FlipHorizontally, 0.0f);
|
|
float num115 = (float) (1.0 + (double) num111 * 0.75);
|
|
mySpriteBatch.Draw(texture2D10, position22, new Microsoft.Xna.Framework.Rectangle?(r10), color23 * num112, rCurrentNPC.rotation, origin13, rCurrentNPC.scale * 0.75f * num115, spriteEffects ^ SpriteEffects.FlipHorizontally, 0.0f);
|
|
float num116 = (float) (1.0 + (double) num113 * 0.75);
|
|
mySpriteBatch.Draw(texture2D10, position22, new Microsoft.Xna.Framework.Rectangle?(r10), color23 * num114, rCurrentNPC.rotation, origin13, rCurrentNPC.scale * 0.75f * num116, spriteEffects ^ SpriteEffects.FlipHorizontally, 0.0f);
|
|
Texture2D texture2D11 = TextureAssets.Extra[89].Value;
|
|
Microsoft.Xna.Framework.Rectangle r11 = texture2D11.Frame();
|
|
origin13 = r11.Size() / 2f;
|
|
Vector2 scale = new Vector2(0.75f, 1f + num116) * 1.5f;
|
|
float num117 = (float) (1.0 + (double) num113 * 0.75);
|
|
if (rCurrentNPC.dontTakeDamageFromHostiles)
|
|
scale.Y *= 0.6f;
|
|
position22.Y -= 6f;
|
|
mySpriteBatch.Draw(texture2D11, position22, new Microsoft.Xna.Framework.Rectangle?(r11), color23 * num114, rCurrentNPC.rotation + 1.570796f, origin13, scale, spriteEffects ^ SpriteEffects.FlipHorizontally, 0.0f);
|
|
mySpriteBatch.Draw(texture2D11, position22, new Microsoft.Xna.Framework.Rectangle?(r11), Microsoft.Xna.Framework.Color.Lerp(color23, Microsoft.Xna.Framework.Color.White, 0.5f), rCurrentNPC.rotation + 1.570796f, origin13, 1.5f, spriteEffects ^ SpriteEffects.FlipHorizontally, 0.0f);
|
|
break;
|
|
}
|
|
if (type == 371 || type >= 454 && type <= 459 || type >= 621 && type <= 623)
|
|
{
|
|
Texture2D texture2 = TextureAssets.Npc[type].Value;
|
|
Vector2 position23 = rCurrentNPC.Center - screenPos - new Vector2((float) texture2.Width, (float) (texture2.Height / Main.npcFrameCount[type])) * rCurrentNPC.scale / 2f + (halfSize * rCurrentNPC.scale + new Vector2(0.0f, addY + addHeight + rCurrentNPC.gfxOffY));
|
|
mySpriteBatch.Draw(texture2, position23, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), rCurrentNPC.GetAlpha(npcColor2), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
}
|
|
switch (type)
|
|
{
|
|
case 549:
|
|
Texture2D texture3 = TextureAssets.Npc[type].Value;
|
|
Vector2 position24 = rCurrentNPC.Center - screenPos;
|
|
Microsoft.Xna.Framework.Rectangle frame2 = rCurrentNPC.frame;
|
|
Vector2 origin14 = new Vector2(70f, (float) sbyte.MaxValue);
|
|
origin14.Y += 8f;
|
|
Vector2 scale4 = new Vector2(rCurrentNPC.scale);
|
|
float t3 = rCurrentNPC.localAI[0];
|
|
if ((double) t3 < 120.0)
|
|
scale4 *= (float) ((double) t3 / 240.0 + 0.5);
|
|
Microsoft.Xna.Framework.Color alpha1 = rCurrentNPC.GetAlpha(npcColor2);
|
|
float lerpValue1 = Utils.GetLerpValue(0.0f, 120f, t3, true);
|
|
float num118 = MathHelper.Lerp(32f, 0.0f, lerpValue1);
|
|
Microsoft.Xna.Framework.Color color24 = alpha1;
|
|
color24.A = (byte) MathHelper.Lerp((float) color24.A, 0.0f, lerpValue1);
|
|
Microsoft.Xna.Framework.Color color25 = color24 * lerpValue1;
|
|
if ((double) t3 >= 120.0)
|
|
color25 = alpha1;
|
|
mySpriteBatch.Draw(texture3, position24, new Microsoft.Xna.Framework.Rectangle?(frame2), color25, rCurrentNPC.rotation, origin14, scale4, spriteEffects, 0.0f);
|
|
float y1 = ((float) ((((double) rCurrentNPC.ai[0] + 54.0) % 180.0 - 120.0) / 180.0 * 2.0 * 6.28318548202515)).ToRotationVector2().Y;
|
|
if ((double) t3 >= 120.0)
|
|
{
|
|
num118 = y1 * 0.0f;
|
|
color25.A = (byte) ((double) color25.A * 0.5);
|
|
color25 *= (float) ((double) y1 / 2.0 + 0.5);
|
|
float num119 = 1f;
|
|
for (float num120 = 0.0f; (double) num120 < (double) num119; ++num120)
|
|
mySpriteBatch.Draw(texture3, position24 + (6.283185f / num119 * num120).ToRotationVector2() * num118, new Microsoft.Xna.Framework.Rectangle?(frame2), color25, rCurrentNPC.rotation, origin14, scale4, spriteEffects, 0.0f);
|
|
}
|
|
float t4 = (float) ((double) rCurrentNPC.ai[0] / 180.0 - 0.759999990463257);
|
|
if ((double) t4 < 0.0)
|
|
++t4;
|
|
float amount9 = 0.0f;
|
|
float scale5 = 0.0f;
|
|
float from1 = 0.6f;
|
|
float to1 = 0.8f;
|
|
if ((double) t4 >= (double) from1 && (double) t4 <= (double) to1)
|
|
{
|
|
amount9 = Utils.GetLerpValue(from1, to1, t4, false);
|
|
scale5 = MathHelper.Lerp(0.75f, 0.85f, amount9);
|
|
}
|
|
float from2 = to1;
|
|
float to2 = from2 + 0.13f;
|
|
if ((double) t4 >= (double) from2 && (double) t4 <= (double) to2)
|
|
{
|
|
amount9 = 1f - Utils.GetLerpValue(from2, to2, t4, false);
|
|
scale5 = MathHelper.Lerp(1.3f, 0.85f, amount9);
|
|
}
|
|
Vector2 vector2_7 = new Vector2(0.0f, -150f);
|
|
int frameNumber = frame2.Y / frame2.Height;
|
|
float num121 = MathHelper.Clamp((float) (((double) t3 - 100.0) / 40.0), 0.0f, 1f);
|
|
this.DrawElderEye(mySpriteBatch, rCurrentNPC.Center + vector2_7, 0.75f * num121, 0.75f, frameNumber, Microsoft.Xna.Framework.Color.White);
|
|
this.DrawElderEye(mySpriteBatch, rCurrentNPC.Center + vector2_7, 0.75f * num121, 0.75f, frameNumber, new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, (int) sbyte.MaxValue) * (float) ((double) y1 / 2.0 + 0.5));
|
|
if ((double) amount9 > 0.0 && (double) scale5 > 0.0)
|
|
this.DrawElderEye(mySpriteBatch, rCurrentNPC.Center + vector2_7, amount9 * 0.5f, scale5, frameNumber, new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, (int) sbyte.MaxValue));
|
|
if ((double) t3 >= 120.0)
|
|
return;
|
|
float num122 = (float) (6.28318548202515 * (double) lerpValue1 * Math.Pow((double) lerpValue1, 2.0) * 2.0) + lerpValue1;
|
|
color25.A = (byte) ((double) alpha1.A * Math.Pow((double) lerpValue1, 2.0) * 0.5);
|
|
float num123 = 3f;
|
|
for (float num124 = 0.0f; (double) num124 < (double) num123; ++num124)
|
|
mySpriteBatch.Draw(texture3, position24 + (num122 + 6.283185f / num123 * num124).ToRotationVector2() * num118, new Microsoft.Xna.Framework.Rectangle?(frame2), color25, rCurrentNPC.rotation, origin14, scale4, spriteEffects, 0.0f);
|
|
return;
|
|
case 636:
|
|
Main.DrawNPCDirect_HallowBoss(mySpriteBatch, rCurrentNPC, ref screenPos, type, ref npcColor2, ref halfSize, spriteEffects);
|
|
return;
|
|
default:
|
|
if (type == 493 || type == 507 || type == 422 || type == 517)
|
|
{
|
|
Texture2D texture4 = TextureAssets.Npc[type].Value;
|
|
Vector2 vector2_8 = rCurrentNPC.Center - screenPos;
|
|
Vector2 vector2_9 = vector2_8 - new Vector2(300f, 310f);
|
|
Vector2 position25 = vector2_8 - new Vector2((float) texture4.Width, (float) (texture4.Height / Main.npcFrameCount[type])) * rCurrentNPC.scale / 2f + (halfSize * rCurrentNPC.scale + new Vector2(0.0f, addY + addHeight + rCurrentNPC.gfxOffY));
|
|
mySpriteBatch.Draw(texture4, position25, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), rCurrentNPC.GetAlpha(npcColor2), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
switch (type)
|
|
{
|
|
case 422:
|
|
Texture2D texture5 = TextureAssets.GlowMask[149].Value;
|
|
vector3 = rCurrentNPC.GetAlpha(npcColor2).ToVector3() - new Vector3(0.5f);
|
|
float num125 = (float) (4.0 + (double) vector3.Length() * 4.0);
|
|
for (int index = 0; index < 4; ++index)
|
|
mySpriteBatch.Draw(texture5, position25 + rCurrentNPC.velocity.RotatedBy((double) index * 1.57079637050629) * num125, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color(64, 64, 64, 0) * rCurrentNPC.Opacity, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
case 493:
|
|
Texture2D texture6 = TextureAssets.GlowMask[132].Value;
|
|
vector3 = rCurrentNPC.GetAlpha(npcColor2).ToVector3() - new Vector3(0.5f);
|
|
float num126 = (float) (4.0 + (double) vector3.Length() * 4.0);
|
|
for (int index = 0; index < 4; ++index)
|
|
mySpriteBatch.Draw(texture6, position25 + rCurrentNPC.velocity.RotatedBy((double) index * 1.57079637050629) * num126, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color(64, 64, 64, 0) * rCurrentNPC.Opacity, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
case 507:
|
|
Texture2D texture7 = TextureAssets.GlowMask[143].Value;
|
|
vector3 = rCurrentNPC.GetAlpha(npcColor2).ToVector3() - new Vector3(0.5f);
|
|
float num127 = (float) (4.0 + (double) vector3.Length() * 4.0);
|
|
for (int index = 0; index < 4; ++index)
|
|
mySpriteBatch.Draw(texture7, position25 + rCurrentNPC.velocity.RotatedBy((double) index * 1.57079637050629) * num127, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color(64, 64, 64, 0) * rCurrentNPC.Opacity, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
case 517:
|
|
Texture2D texture8 = TextureAssets.GlowMask[162].Value;
|
|
vector3 = rCurrentNPC.GetAlpha(npcColor2).ToVector3() - new Vector3(0.5f);
|
|
float num128 = (float) (2.0 + (double) vector3.Length() * 9.0);
|
|
for (int index = 0; index < 4; ++index)
|
|
mySpriteBatch.Draw(texture8, position25 + rCurrentNPC.velocity.RotatedBy((double) index * 1.57079637050629) * num128 + Vector2.UnitX * 2f, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color(64, 64, 64, 0) * rCurrentNPC.Opacity, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
}
|
|
int num129 = 0;
|
|
string key = "";
|
|
if (type <= 493)
|
|
{
|
|
if (type != 422)
|
|
{
|
|
if (type == 493)
|
|
{
|
|
num129 = NPC.ShieldStrengthTowerStardust;
|
|
key = "Stardust";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
num129 = NPC.ShieldStrengthTowerVortex;
|
|
key = "Vortex";
|
|
}
|
|
}
|
|
else if (type != 507)
|
|
{
|
|
if (type == 517)
|
|
{
|
|
num129 = NPC.ShieldStrengthTowerSolar;
|
|
key = "Solar";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
num129 = NPC.ShieldStrengthTowerNebula;
|
|
key = "Nebula";
|
|
}
|
|
float num130 = (float) num129 / (float) NPC.ShieldStrengthTowerMax;
|
|
if (rCurrentNPC.IsABestiaryIconDummy)
|
|
return;
|
|
if (num129 > 0)
|
|
{
|
|
mySpriteBatch.End();
|
|
mySpriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, SamplerState.PointWrap, DepthStencilState.Default, RasterizerState.CullNone, (Effect) null, Main.Transform);
|
|
float num131 = 0.0f;
|
|
if ((double) rCurrentNPC.ai[3] > 0.0 && (double) rCurrentNPC.ai[3] <= 30.0)
|
|
num131 = (float) (1.0 - (double) rCurrentNPC.ai[3] / 30.0);
|
|
Terraria.Graphics.Effects.Filters.Scene[key].GetShader().UseIntensity(1f + num131).UseProgress(0.0f);
|
|
DrawData drawData2 = new DrawData(Main.Assets.Request<Texture2D>("Images/Misc/Perlin", (AssetRequestMode) 1).Value, vector2_9 + new Vector2(300f, 300f), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, 600, 600)), Microsoft.Xna.Framework.Color.White * (float) ((double) num130 * 0.800000011920929 + 0.200000002980232), rCurrentNPC.rotation, new Vector2(300f, 300f), rCurrentNPC.scale * (float) (1.0 + (double) num131 * 0.0500000007450581), spriteEffects, 0);
|
|
GameShaders.Misc["ForceField"].UseColor(new Vector3((float) (1.0 + (double) num131 * 0.5)));
|
|
GameShaders.Misc["ForceField"].Apply(new DrawData?(drawData2));
|
|
drawData2.Draw(mySpriteBatch);
|
|
mySpriteBatch.End();
|
|
mySpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, Main.DefaultSamplerState, DepthStencilState.None, Main.Rasterizer, (Effect) null, Main.Transform);
|
|
return;
|
|
}
|
|
if ((double) rCurrentNPC.ai[3] > 0.0)
|
|
{
|
|
mySpriteBatch.End();
|
|
mySpriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, SamplerState.PointWrap, DepthStencilState.Default, RasterizerState.CullNone, (Effect) null, Main.Transform);
|
|
float progress = rCurrentNPC.ai[3] / 120f;
|
|
float num132 = Math.Min(rCurrentNPC.ai[3] / 30f, 1f);
|
|
Terraria.Graphics.Effects.Filters.Scene[key].GetShader().UseIntensity(Math.Min(5f, 15f * progress) + 1f).UseProgress(progress);
|
|
DrawData drawData3 = new DrawData(Main.Assets.Request<Texture2D>("Images/Misc/Perlin", (AssetRequestMode) 1).Value, vector2_9 + new Vector2(300f, 300f), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, 600, 600)), new Microsoft.Xna.Framework.Color(new Vector4(1f - (float) Math.Sqrt((double) num132))), rCurrentNPC.rotation, new Vector2(300f, 300f), rCurrentNPC.scale * (1f + num132), spriteEffects, 0);
|
|
GameShaders.Misc["ForceField"].UseColor(new Vector3(2f));
|
|
GameShaders.Misc["ForceField"].Apply(new DrawData?(drawData3));
|
|
drawData3.Draw(mySpriteBatch);
|
|
mySpriteBatch.End();
|
|
mySpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, Main.DefaultSamplerState, DepthStencilState.None, Main.Rasterizer, (Effect) null, Main.Transform);
|
|
return;
|
|
}
|
|
Terraria.Graphics.Effects.Filters.Scene[key].GetShader().UseIntensity(0.0f).UseProgress(0.0f);
|
|
return;
|
|
}
|
|
switch (type)
|
|
{
|
|
case 402:
|
|
this.LoadNPC(403);
|
|
this.LoadNPC(404);
|
|
NPC npc1 = rCurrentNPC;
|
|
Texture2D texture2D12 = TextureAssets.Npc[npc1.type].Value;
|
|
Vector2 position26 = npc1.Center - screenPos - new Vector2((float) texture2D12.Width, (float) (texture2D12.Height / Main.npcFrameCount[npc1.type])) * npc1.scale / 2f + (halfSize * npc1.scale + new Vector2(0.0f, addY + addHeight + npc1.gfxOffY));
|
|
int num133 = 0;
|
|
float num134 = (float) (2.0 / (double) npc1.oldPos.Length * 0.699999988079071);
|
|
for (int index = npc1.oldPos.Length - 1; (double) index >= 1.0; index -= 2)
|
|
{
|
|
Texture2D texture9 = num133 != 0 ? TextureAssets.Npc[403].Value : TextureAssets.Npc[404].Value;
|
|
mySpriteBatch.Draw(texture9, position26 + npc1.oldPos[index] - npc1.position, new Microsoft.Xna.Framework.Rectangle?(), npc1.GetAlpha(npcColor2) * (float) (0.800000011920929 - (double) num134 * (double) index / 2.0), npc1.oldRot[index], halfSize, npc1.scale, spriteEffects, 0.0f);
|
|
Texture2D texture10 = num133 != 0 ? TextureAssets.GlowMask[133].Value : TextureAssets.GlowMask[134].Value;
|
|
mySpriteBatch.Draw(texture10, position26 + npc1.oldPos[index] - npc1.position, new Microsoft.Xna.Framework.Rectangle?(), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0) * (float) (1.0 - (double) num134 * (double) index / 2.0), npc1.oldRot[index], halfSize, npc1.scale, spriteEffects, 0.0f);
|
|
++num133;
|
|
}
|
|
Texture2D texture11 = TextureAssets.Npc[npc1.type].Value;
|
|
mySpriteBatch.Draw(texture11, position26, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), rCurrentNPC.GetAlpha(npcColor2), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
Texture2D texture12 = TextureAssets.GlowMask[135].Value;
|
|
mySpriteBatch.Draw(texture12, position26, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
return;
|
|
case 488:
|
|
return;
|
|
case 519:
|
|
NPC npc2 = rCurrentNPC;
|
|
Texture2D texture2D13 = TextureAssets.Npc[npc2.type].Value;
|
|
Vector2 position27 = npc2.Center - screenPos - new Vector2((float) texture2D13.Width, (float) (texture2D13.Height / Main.npcFrameCount[npc2.type])) * npc2.scale / 2f + (halfSize * npc2.scale + new Vector2(0.0f, addY + addHeight + npc2.gfxOffY));
|
|
Texture2D texture13 = TextureAssets.Npc[npc2.type].Value;
|
|
mySpriteBatch.Draw(texture13, position27, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), rCurrentNPC.GetAlpha(npcColor2), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
int num135 = 0;
|
|
float num136 = (float) (1.0 / (double) npc2.oldPos.Length * 0.699999988079071);
|
|
for (int index = npc2.oldPos.Length - 1; (double) index >= 0.0; --index)
|
|
{
|
|
float amount10 = (float) (npc2.oldPos.Length - index) / (float) npc2.oldPos.Length;
|
|
Microsoft.Xna.Framework.Color color26 = Microsoft.Xna.Framework.Color.Pink * (float) (1.0 - (double) num136 * (double) index / 1.0);
|
|
color26.A = (byte) ((double) color26.A * (1.0 - (double) amount10));
|
|
mySpriteBatch.Draw(texture13, position27 + npc2.oldPos[index] - npc2.position, new Microsoft.Xna.Framework.Rectangle?(), color26, npc2.oldRot[index], halfSize, npc2.scale * MathHelper.Lerp(0.3f, 1.1f, amount10), spriteEffects, 0.0f);
|
|
++num135;
|
|
}
|
|
return;
|
|
case 522:
|
|
NPC npc3 = rCurrentNPC;
|
|
Texture2D texture14 = TextureAssets.Npc[npc3.type].Value;
|
|
Vector2 position28 = npc3.Center - screenPos - new Vector2((float) texture14.Width, (float) (texture14.Height / Main.npcFrameCount[npc3.type])) * npc3.scale / 2f + (halfSize * npc3.scale + new Vector2(0.0f, addY + addHeight + npc3.gfxOffY));
|
|
int num137 = 0;
|
|
float num138 = (float) (1.0 / (double) npc3.oldPos.Length * 1.10000002384186);
|
|
for (int index = npc3.oldPos.Length - 1; (double) index >= 0.0; --index)
|
|
{
|
|
float amount11 = (float) (npc3.oldPos.Length - index) / (float) npc3.oldPos.Length;
|
|
Microsoft.Xna.Framework.Color color27 = Microsoft.Xna.Framework.Color.White * (float) (1.0 - (double) num138 * (double) index / 1.0);
|
|
color27.A = (byte) ((double) color27.A * (1.0 - (double) amount11));
|
|
mySpriteBatch.Draw(texture14, position28 + npc3.oldPos[index] - npc3.position, new Microsoft.Xna.Framework.Rectangle?(), color27, npc3.oldRot[index], halfSize, npc3.scale * MathHelper.Lerp(0.8f, 0.3f, amount11), spriteEffects, 0.0f);
|
|
++num137;
|
|
}
|
|
Texture2D texture2D14 = TextureAssets.Extra[57].Value;
|
|
mySpriteBatch.Draw(texture2D14, position28, new Microsoft.Xna.Framework.Rectangle?(), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0), 0.0f, texture2D14.Size() / 2f, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
return;
|
|
default:
|
|
if (type == 370 || type == 372 || type == 373)
|
|
{
|
|
Texture2D texture15 = TextureAssets.Npc[type].Value;
|
|
Microsoft.Xna.Framework.Color color28 = Microsoft.Xna.Framework.Color.White;
|
|
float amount12 = 0.0f;
|
|
bool flag = type == 370 && (double) rCurrentNPC.ai[0] > 4.0;
|
|
int num139 = type != 370 ? 0 : ((double) rCurrentNPC.ai[0] > 9.0 ? 1 : 0);
|
|
int num140 = 120;
|
|
int num141 = 60;
|
|
Microsoft.Xna.Framework.Color color29 = npcColor2;
|
|
if (num139 != 0)
|
|
npcColor2 = Main.buffColor(npcColor2, 0.4f, 0.8f, 0.4f, 1f);
|
|
else if (flag)
|
|
npcColor2 = Main.buffColor(npcColor2, 0.5f, 0.7f, 0.5f, 1f);
|
|
else if (type == 370 && (double) rCurrentNPC.ai[0] == 4.0 && (double) rCurrentNPC.ai[2] > (double) num140)
|
|
{
|
|
float num142 = (rCurrentNPC.ai[2] - (float) num140) / (float) num141;
|
|
npcColor2 = Main.buffColor(npcColor2, (float) (1.0 - 0.5 * (double) num142), (float) (1.0 - 0.300000011920929 * (double) num142), (float) (1.0 - 0.5 * (double) num142), 1f);
|
|
}
|
|
int num143 = 10;
|
|
int num144 = 2;
|
|
if (type == 370)
|
|
{
|
|
if ((double) rCurrentNPC.ai[0] == -1.0)
|
|
num143 = 0;
|
|
if ((double) rCurrentNPC.ai[0] == 0.0 || (double) rCurrentNPC.ai[0] == 5.0 || (double) rCurrentNPC.ai[0] == 10.0)
|
|
num143 = 7;
|
|
if ((double) rCurrentNPC.ai[0] == 1.0)
|
|
{
|
|
color28 = Microsoft.Xna.Framework.Color.Blue;
|
|
amount12 = 0.5f;
|
|
}
|
|
else
|
|
color29 = npcColor2;
|
|
}
|
|
else if ((type == 372 || type == 373) && (double) rCurrentNPC.ai[0] == 1.0)
|
|
{
|
|
color28 = Microsoft.Xna.Framework.Color.Blue;
|
|
amount12 = 0.5f;
|
|
}
|
|
for (int index = 1; index < num143; index += num144)
|
|
{
|
|
ref Vector2 local = ref rCurrentNPC.oldPos[index];
|
|
Microsoft.Xna.Framework.Color newColor = Microsoft.Xna.Framework.Color.Lerp(color29, color28, amount12);
|
|
Microsoft.Xna.Framework.Color color30 = rCurrentNPC.GetAlpha(newColor) * ((float) (num143 - index) / 15f);
|
|
Vector2 position29 = rCurrentNPC.oldPos[index] + new Vector2((float) rCurrentNPC.width, (float) rCurrentNPC.height) / 2f - screenPos - new Vector2((float) texture15.Width, (float) (texture15.Height / Main.npcFrameCount[type])) * rCurrentNPC.scale / 2f + (halfSize * rCurrentNPC.scale + new Vector2(0.0f, addY + addHeight + rCurrentNPC.gfxOffY));
|
|
mySpriteBatch.Draw(texture15, position29, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), color30, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
}
|
|
int num145 = 0;
|
|
float num146 = 0.0f;
|
|
float num147 = 0.0f;
|
|
if (type == 370)
|
|
{
|
|
if ((double) rCurrentNPC.ai[0] == -1.0)
|
|
num145 = 0;
|
|
if ((double) rCurrentNPC.ai[0] == 3.0 || (double) rCurrentNPC.ai[0] == 8.0)
|
|
{
|
|
int num148 = 60;
|
|
int num149 = 30;
|
|
if ((double) rCurrentNPC.ai[2] > (double) num148)
|
|
{
|
|
num145 = 6;
|
|
num146 = (1f - (float) Math.Cos(((double) rCurrentNPC.ai[2] - (double) num148) / (double) num149 * 6.28318548202515)) / 3f;
|
|
num147 = 40f;
|
|
}
|
|
}
|
|
if ((double) rCurrentNPC.ai[0] == 4.0 && (double) rCurrentNPC.ai[2] > (double) num140)
|
|
{
|
|
num145 = 6;
|
|
num146 = (1f - (float) Math.Cos(((double) rCurrentNPC.ai[2] - (double) num140) / (double) num141 * 6.28318548202515)) / 3f;
|
|
num147 = 60f;
|
|
}
|
|
if ((double) rCurrentNPC.ai[0] == 9.0 && (double) rCurrentNPC.ai[2] > (double) num140)
|
|
{
|
|
num145 = 6;
|
|
num146 = (1f - (float) Math.Cos(((double) rCurrentNPC.ai[2] - (double) num140) / (double) num141 * 6.28318548202515)) / 3f;
|
|
num147 = 60f;
|
|
}
|
|
if ((double) rCurrentNPC.ai[0] == 12.0)
|
|
{
|
|
num145 = 6;
|
|
num146 = (1f - (float) Math.Cos((double) rCurrentNPC.ai[2] / 30.0 * 6.28318548202515)) / 3f;
|
|
num147 = 20f;
|
|
}
|
|
}
|
|
for (int index = 0; index < num145; ++index)
|
|
{
|
|
Microsoft.Xna.Framework.Color newColor = Microsoft.Xna.Framework.Color.Lerp(npcColor2, color28, amount12);
|
|
Microsoft.Xna.Framework.Color color31 = rCurrentNPC.GetAlpha(newColor) * (1f - num146);
|
|
Vector2 position30 = rCurrentNPC.Center + ((float) ((double) index / (double) num145 * 6.28318548202515) + rCurrentNPC.rotation).ToRotationVector2() * num147 * num146 - screenPos - new Vector2((float) texture15.Width, (float) (texture15.Height / Main.npcFrameCount[type])) * rCurrentNPC.scale / 2f + (halfSize * rCurrentNPC.scale + new Vector2(0.0f, addY + addHeight + rCurrentNPC.gfxOffY));
|
|
mySpriteBatch.Draw(texture15, position30, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), color31, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
}
|
|
Vector2 position31 = rCurrentNPC.Center - screenPos - new Vector2((float) texture15.Width, (float) (texture15.Height / Main.npcFrameCount[type])) * rCurrentNPC.scale / 2f + (halfSize * rCurrentNPC.scale + new Vector2(0.0f, addY + addHeight + rCurrentNPC.gfxOffY));
|
|
mySpriteBatch.Draw(texture15, position31, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), rCurrentNPC.GetAlpha(npcColor2), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
if (type != 370 || (double) rCurrentNPC.ai[0] < 4.0)
|
|
return;
|
|
Texture2D texture16 = TextureAssets.DukeFishron.Value;
|
|
Microsoft.Xna.Framework.Color color32 = Microsoft.Xna.Framework.Color.Lerp(Microsoft.Xna.Framework.Color.White, Microsoft.Xna.Framework.Color.Yellow, 0.5f);
|
|
Microsoft.Xna.Framework.Color yellow = Microsoft.Xna.Framework.Color.Yellow;
|
|
float amount13 = 1f;
|
|
float num150 = 0.5f;
|
|
float num151 = 10f;
|
|
int num152 = 1;
|
|
if ((double) rCurrentNPC.ai[0] == 4.0)
|
|
{
|
|
float num153 = (rCurrentNPC.ai[2] - (float) num140) / (float) num141;
|
|
yellow *= num153;
|
|
color32 *= num153;
|
|
}
|
|
if ((double) rCurrentNPC.ai[0] == 12.0)
|
|
{
|
|
float num154 = rCurrentNPC.ai[2] / 30f;
|
|
if ((double) num154 > 0.5)
|
|
num154 = 1f - num154;
|
|
float num155 = 1f - num154 * 2f;
|
|
yellow *= num155;
|
|
color32 *= num155;
|
|
}
|
|
for (int index = 1; index < num143; index += num152)
|
|
{
|
|
ref Vector2 local = ref rCurrentNPC.oldPos[index];
|
|
Microsoft.Xna.Framework.Color color33 = Microsoft.Xna.Framework.Color.Lerp(color32, yellow, amount13) * ((float) (num143 - index) / 15f);
|
|
Vector2 position32 = rCurrentNPC.oldPos[index] + new Vector2((float) rCurrentNPC.width, (float) rCurrentNPC.height) / 2f - screenPos - new Vector2((float) texture16.Width, (float) (texture16.Height / Main.npcFrameCount[type])) * rCurrentNPC.scale / 2f + (halfSize * rCurrentNPC.scale + new Vector2(0.0f, addY + addHeight + rCurrentNPC.gfxOffY));
|
|
mySpriteBatch.Draw(texture16, position32, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), color33, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
}
|
|
for (int index = 1; index < num145; ++index)
|
|
{
|
|
Microsoft.Xna.Framework.Color newColor = Microsoft.Xna.Framework.Color.Lerp(color32, yellow, amount13);
|
|
Microsoft.Xna.Framework.Color color34 = rCurrentNPC.GetAlpha(newColor) * (1f - num150);
|
|
Vector2 position33 = rCurrentNPC.Center + ((float) ((double) index / (double) num145 * 6.28318548202515) + rCurrentNPC.rotation).ToRotationVector2() * num151 * num150 - screenPos - new Vector2((float) texture16.Width, (float) (texture16.Height / Main.npcFrameCount[type])) * rCurrentNPC.scale / 2f + (halfSize * rCurrentNPC.scale + new Vector2(0.0f, addY + addHeight + rCurrentNPC.gfxOffY));
|
|
mySpriteBatch.Draw(texture16, position33, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), color34, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
}
|
|
mySpriteBatch.Draw(texture16, position31, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), color32, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
return;
|
|
}
|
|
if (type == 439 || type == 440)
|
|
{
|
|
int num156 = rCurrentNPC.frame.Y / (TextureAssets.Npc[type].Height() / Main.npcFrameCount[type]);
|
|
Texture2D texture17 = TextureAssets.Npc[type].Value;
|
|
Texture2D texture2D15 = TextureAssets.Extra[30].Value;
|
|
Microsoft.Xna.Framework.Rectangle r12 = texture2D15.Frame();
|
|
r12.Height /= 2;
|
|
if (num156 >= 4)
|
|
r12.Y += r12.Height;
|
|
Microsoft.Xna.Framework.Color white = Microsoft.Xna.Framework.Color.White;
|
|
float amount14 = 0.0f;
|
|
Microsoft.Xna.Framework.Color color35 = npcColor2;
|
|
int num157 = 0;
|
|
int num158 = 0;
|
|
int num159 = 0;
|
|
if ((double) rCurrentNPC.ai[0] == -1.0)
|
|
{
|
|
if ((double) rCurrentNPC.ai[1] >= 320.0 && (double) rCurrentNPC.ai[1] < 960.0)
|
|
{
|
|
white = Microsoft.Xna.Framework.Color.White;
|
|
amount14 = 0.5f;
|
|
num157 = 6;
|
|
num158 = 2;
|
|
num159 = 1;
|
|
}
|
|
}
|
|
else if ((double) rCurrentNPC.ai[0] == 1.0)
|
|
{
|
|
white = Microsoft.Xna.Framework.Color.White;
|
|
amount14 = 0.5f;
|
|
num157 = 4;
|
|
num158 = 2;
|
|
num159 = 1;
|
|
}
|
|
else
|
|
color35 = npcColor2;
|
|
for (int index = num159; index < num157; index += num158)
|
|
{
|
|
ref Vector2 local = ref rCurrentNPC.oldPos[index];
|
|
Microsoft.Xna.Framework.Color color36 = color35;
|
|
color36 = Microsoft.Xna.Framework.Color.Lerp(color36, white, amount14);
|
|
color36 = rCurrentNPC.GetAlpha(color36);
|
|
color36 *= (float) (num157 - index) / (float) num157;
|
|
color36.A = (byte) 100;
|
|
Vector2 position34 = rCurrentNPC.oldPos[index] + new Vector2((float) rCurrentNPC.width, (float) rCurrentNPC.height) / 2f - screenPos - r12.Size() * rCurrentNPC.scale / 2f + (halfSize * rCurrentNPC.scale + new Vector2(0.0f, addY + addHeight + rCurrentNPC.gfxOffY));
|
|
mySpriteBatch.Draw(texture2D15, position34, new Microsoft.Xna.Framework.Rectangle?(r12), color36, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
}
|
|
int num160 = 0;
|
|
float num161 = 0.0f;
|
|
float num162 = 0.0f;
|
|
if ((double) rCurrentNPC.ai[0] == 5.0 && (double) rCurrentNPC.ai[1] >= 0.0 && (double) rCurrentNPC.ai[1] < 30.0)
|
|
{
|
|
num160 = 4;
|
|
num161 = (1f - (float) Math.Cos(((double) rCurrentNPC.ai[1] - 0.0) / 30.0 * 3.14159274101257)) / 2f;
|
|
num162 = 70f;
|
|
}
|
|
for (int index = 0; index < num160; ++index)
|
|
{
|
|
Microsoft.Xna.Framework.Color newColor = Microsoft.Xna.Framework.Color.Lerp(npcColor2, white, amount14);
|
|
Microsoft.Xna.Framework.Color color37 = rCurrentNPC.GetAlpha(newColor) * (1f - num161);
|
|
Vector2 position35 = rCurrentNPC.Center + ((float) ((double) index / (double) num160 * 6.28318548202515) + rCurrentNPC.rotation).ToRotationVector2() * num162 * num161 - screenPos - new Vector2((float) texture17.Width, (float) (texture17.Height / Main.npcFrameCount[type])) * rCurrentNPC.scale / 2f + (halfSize * rCurrentNPC.scale + new Vector2(0.0f, addY + addHeight + rCurrentNPC.gfxOffY));
|
|
mySpriteBatch.Draw(texture2D15, position35, new Microsoft.Xna.Framework.Rectangle?(r12), color37, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
}
|
|
Vector2 position36 = rCurrentNPC.Center - screenPos - new Vector2((float) texture17.Width, (float) (texture17.Height / Main.npcFrameCount[type])) * rCurrentNPC.scale / 2f + (halfSize * rCurrentNPC.scale + new Vector2(0.0f, addY + addHeight + rCurrentNPC.gfxOffY));
|
|
mySpriteBatch.Draw(texture17, position36, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), rCurrentNPC.GetAlpha(npcColor2), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
return;
|
|
}
|
|
if (type == 392 || type == 393 || type == 394 || type == 395)
|
|
{
|
|
Texture2D texture18 = TextureAssets.Npc[type].Value;
|
|
Vector2 position37 = (rCurrentNPC.Center - screenPos + Vector2.UnitY * rCurrentNPC.gfxOffY).Floor();
|
|
float num163 = 0.0f;
|
|
if (type == 393)
|
|
num163 = -8f;
|
|
mySpriteBatch.Draw(texture18, position37, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), rCurrentNPC.GetAlpha(npcColor2), rCurrentNPC.rotation, halfSize + Vector2.UnitY * num163, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
if (type == 392)
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[48].Value, position37, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color(200, 200, 200, 0), rCurrentNPC.rotation, halfSize + Vector2.UnitY * num163, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
if (type == 395)
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[49].Value, position37, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color(200, 200, 200, 0), rCurrentNPC.rotation, halfSize + Vector2.UnitY * num163, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
if (type != 394)
|
|
return;
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[50].Value, position37, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color(200, 200, 200, 0), rCurrentNPC.rotation, halfSize + Vector2.UnitY * num163, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
return;
|
|
}
|
|
if (type == 83 || type == 84 || type == 179)
|
|
{
|
|
mySpriteBatch.Draw(TextureAssets.Npc[type].Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + addY), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), Microsoft.Xna.Framework.Color.White, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
return;
|
|
}
|
|
if (type >= 87 && type <= 92)
|
|
{
|
|
Microsoft.Xna.Framework.Color alpha2 = rCurrentNPC.GetAlpha(npcColor2);
|
|
byte num164 = (byte) (((int) Main.tileColor.R + (int) Main.tileColor.G + (int) Main.tileColor.B) / 3);
|
|
if ((int) alpha2.R < (int) num164)
|
|
alpha2.R = num164;
|
|
if ((int) alpha2.G < (int) num164)
|
|
alpha2.G = num164;
|
|
if ((int) alpha2.B < (int) num164)
|
|
alpha2.B = num164;
|
|
mySpriteBatch.Draw(TextureAssets.Npc[type].Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + addY), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), alpha2, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
return;
|
|
}
|
|
switch (type)
|
|
{
|
|
case 94:
|
|
for (int index = 1; index < 6; index += 2)
|
|
{
|
|
ref Vector2 local = ref rCurrentNPC.oldPos[index];
|
|
Microsoft.Xna.Framework.Color alpha3 = rCurrentNPC.GetAlpha(npcColor2);
|
|
alpha3.R = (byte) ((int) alpha3.R * (10 - index) / 15);
|
|
alpha3.G = (byte) ((int) alpha3.G * (10 - index) / 15);
|
|
alpha3.B = (byte) ((int) alpha3.B * (10 - index) / 15);
|
|
alpha3.A = (byte) ((int) alpha3.A * (10 - index) / 15);
|
|
mySpriteBatch.Draw(TextureAssets.Npc[type].Value, new Vector2((float) ((double) rCurrentNPC.oldPos[index].X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.oldPos[index].Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), alpha3, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
}
|
|
break;
|
|
case 384:
|
|
return;
|
|
case 396:
|
|
Texture2D texture19 = TextureAssets.Npc[type].Value;
|
|
Vector2 origin15 = new Vector2(191f, 130f);
|
|
Texture2D texture20 = TextureAssets.Extra[18].Value;
|
|
Texture2D texture21 = TextureAssets.Extra[19].Value;
|
|
Vector2 origin16 = new Vector2(19f, 34f);
|
|
Vector2 vector2_10 = new Vector2(27f, 59f);
|
|
Vector2 vector2_11 = new Vector2(0.0f, 0.0f);
|
|
Texture2D texture2D16 = TextureAssets.Extra[25].Value;
|
|
Vector2 vector2_12 = new Vector2(0.0f, 214f).RotatedBy((double) rCurrentNPC.rotation);
|
|
Microsoft.Xna.Framework.Rectangle r13 = texture2D16.Frame();
|
|
r13.Height /= 3;
|
|
r13.Y += r13.Height * (int) ((double) rCurrentNPC.localAI[2] / 7.0);
|
|
Texture2D texture2D17 = TextureAssets.Extra[29].Value;
|
|
Vector2 vector2_13 = new Vector2(0.0f, 4f).RotatedBy((double) rCurrentNPC.rotation);
|
|
Microsoft.Xna.Framework.Rectangle r14 = texture2D17.Frame();
|
|
r14.Height /= 4;
|
|
r14.Y += r14.Height * (int) ((double) rCurrentNPC.localAI[3] / 5.0);
|
|
Texture2D texture2D18 = TextureAssets.Extra[26].Value;
|
|
Microsoft.Xna.Framework.Rectangle rectangle4 = texture2D18.Frame();
|
|
rectangle4.Height /= 4;
|
|
Vector2 center1 = Main.npc[(int) rCurrentNPC.ai[3]].Center;
|
|
Microsoft.Xna.Framework.Point tileCoordinates1 = rCurrentNPC.Center.ToTileCoordinates();
|
|
Microsoft.Xna.Framework.Color alpha4 = rCurrentNPC.GetAlpha(Microsoft.Xna.Framework.Color.Lerp(Lighting.GetColor(tileCoordinates1.X, tileCoordinates1.Y), Microsoft.Xna.Framework.Color.White, 0.3f));
|
|
if ((double) rCurrentNPC.ai[0] < 0.0)
|
|
{
|
|
int num165 = (int) rCurrentNPC.ai[1] / 8;
|
|
rectangle4.Y += rectangle4.Height * num165;
|
|
mySpriteBatch.Draw(texture2D18, rCurrentNPC.Center - screenPos, new Microsoft.Xna.Framework.Rectangle?(rectangle4), alpha4, rCurrentNPC.rotation, origin16 + new Vector2(4f, 4f), 1f, spriteEffects, 0.0f);
|
|
}
|
|
else
|
|
{
|
|
mySpriteBatch.Draw(texture20, rCurrentNPC.Center - screenPos, new Microsoft.Xna.Framework.Rectangle?(), alpha4, rCurrentNPC.rotation, origin16, 1f, spriteEffects, 0.0f);
|
|
Vector2 vector2_14 = Utils.Vector2FromElipse(rCurrentNPC.localAI[0].ToRotationVector2(), vector2_10 * rCurrentNPC.localAI[1]);
|
|
mySpriteBatch.Draw(texture21, rCurrentNPC.Center - screenPos + vector2_14 + vector2_11, new Microsoft.Xna.Framework.Rectangle?(), alpha4, rCurrentNPC.rotation, new Vector2((float) texture21.Width, (float) texture21.Height) / 2f, 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
mySpriteBatch.Draw(texture19, rCurrentNPC.Center - screenPos, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), alpha4, rCurrentNPC.rotation, origin15, 1f, spriteEffects, 0.0f);
|
|
mySpriteBatch.Draw(texture2D17, (rCurrentNPC.Center - screenPos + vector2_13).Floor(), new Microsoft.Xna.Framework.Rectangle?(r14), alpha4, rCurrentNPC.rotation, r14.Size() / 2f, 1f, spriteEffects, 0.0f);
|
|
mySpriteBatch.Draw(texture2D16, (rCurrentNPC.Center - screenPos + vector2_12).Floor(), new Microsoft.Xna.Framework.Rectangle?(r13), alpha4, rCurrentNPC.rotation, r13.Size() / 2f, 1f, spriteEffects, 0.0f);
|
|
return;
|
|
case 397:
|
|
Texture2D texture22 = TextureAssets.Npc[type].Value;
|
|
float num166 = 0.5f;
|
|
Vector2 vector2_15 = new Vector2(220f, -60f);
|
|
Vector2 vector2_16 = new Vector2(0.0f, 76f);
|
|
Texture2D texture23 = TextureAssets.Extra[15].Value;
|
|
Vector2 vector2_17 = new Vector2(60f, 30f);
|
|
float num167 = 340f;
|
|
Vector2 center2 = Main.npc[(int) rCurrentNPC.ai[3]].Center;
|
|
Microsoft.Xna.Framework.Point tileCoordinates2 = rCurrentNPC.Center.ToTileCoordinates();
|
|
Microsoft.Xna.Framework.Color alpha5 = rCurrentNPC.GetAlpha(Microsoft.Xna.Framework.Color.Lerp(Lighting.GetColor(tileCoordinates2.X, tileCoordinates2.Y), Microsoft.Xna.Framework.Color.White, 0.3f));
|
|
bool flag5 = (double) rCurrentNPC.ai[2] == 0.0;
|
|
Vector2 vector2_18 = new Vector2(flag5 ? -1f : 1f, 1f);
|
|
Vector2 origin17 = new Vector2(120f, 180f);
|
|
if (!flag5)
|
|
origin17.X = (float) texture22.Width - origin17.X;
|
|
Texture2D texture24 = TextureAssets.Extra[17].Value;
|
|
Texture2D texture25 = TextureAssets.Extra[19].Value;
|
|
Vector2 origin18 = new Vector2(26f, 42f);
|
|
if (!flag5)
|
|
origin18.X = (float) texture24.Width - origin18.X;
|
|
Vector2 vector2_19 = new Vector2(30f, 66f);
|
|
Vector2 vector2_20 = new Vector2((float) (1.0 * -(double) vector2_18.X), 3f);
|
|
Texture2D texture2D19 = TextureAssets.Extra[26].Value;
|
|
Microsoft.Xna.Framework.Rectangle rectangle5 = texture2D19.Frame();
|
|
rectangle5.Height /= 4;
|
|
Vector2 vector2_21 = vector2_15 * vector2_18;
|
|
Vector2 vector2_22 = center2 + vector2_21;
|
|
Vector2 vector2_23 = rCurrentNPC.Center + vector2_16;
|
|
Vector2 vector2_24 = vector2_23;
|
|
Vector2 v1 = (vector2_22 - vector2_24) * (1f - num166);
|
|
Vector2 origin19 = vector2_17;
|
|
if (!flag5)
|
|
origin19.X = (float) texture23.Width - origin19.X;
|
|
float num168 = (float) Math.Acos((double) v1.Length() / (double) num167) * -vector2_18.X;
|
|
mySpriteBatch.Draw(texture23, vector2_23 - screenPos, new Microsoft.Xna.Framework.Rectangle?(), alpha5, (float) ((double) v1.ToRotation() + (double) num168 - 1.57079637050629), origin19, 1f, spriteEffects, 0.0f);
|
|
if ((double) rCurrentNPC.ai[0] == -2.0)
|
|
{
|
|
int num169 = (int) rCurrentNPC.ai[1] / 8;
|
|
rectangle5.Y += rectangle5.Height * num169;
|
|
mySpriteBatch.Draw(texture2D19, rCurrentNPC.Center - screenPos, new Microsoft.Xna.Framework.Rectangle?(rectangle5), alpha5, 0.0f, origin18 - new Vector2(4f, 4f), 1f, spriteEffects, 0.0f);
|
|
}
|
|
else
|
|
{
|
|
mySpriteBatch.Draw(texture24, rCurrentNPC.Center - screenPos, new Microsoft.Xna.Framework.Rectangle?(), alpha5, 0.0f, origin18, 1f, spriteEffects, 0.0f);
|
|
Vector2 vector2_25 = Utils.Vector2FromElipse(rCurrentNPC.localAI[0].ToRotationVector2(), vector2_19 * rCurrentNPC.localAI[1]);
|
|
mySpriteBatch.Draw(texture25, rCurrentNPC.Center - screenPos + vector2_25 + vector2_20, new Microsoft.Xna.Framework.Rectangle?(), alpha5, 0.0f, new Vector2((float) texture25.Width, (float) texture25.Height) / 2f, 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
mySpriteBatch.Draw(texture22, rCurrentNPC.Center - screenPos, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), alpha5, 0.0f, origin17, 1f, spriteEffects, 0.0f);
|
|
return;
|
|
case 398:
|
|
bool flag6 = false;
|
|
Texture2D texture26 = TextureAssets.Npc[type].Value;
|
|
Texture2D texture27 = TextureAssets.Extra[16].Value;
|
|
Texture2D texture28 = TextureAssets.Extra[14].Value;
|
|
float y2 = 340f;
|
|
float num170 = 0.5f;
|
|
Vector2 vector2_26 = new Vector2(220f, -60f);
|
|
Vector2 vector2_27 = new Vector2(76f, 66f);
|
|
Texture2D texture29 = TextureAssets.Extra[13].Value;
|
|
Vector2 origin20 = new Vector2((float) texture29.Width, 278f);
|
|
Vector2 origin21 = new Vector2(0.0f, 278f);
|
|
Vector2 vector2_28 = new Vector2(0.0f, 76f);
|
|
Vector2 center3 = rCurrentNPC.Center;
|
|
Microsoft.Xna.Framework.Point tileCoordinates3 = (rCurrentNPC.Center + new Vector2(0.0f, -150f)).ToTileCoordinates();
|
|
Microsoft.Xna.Framework.Color alpha6 = rCurrentNPC.GetAlpha(Microsoft.Xna.Framework.Color.Lerp(Lighting.GetColor(tileCoordinates3.X, tileCoordinates3.Y), Microsoft.Xna.Framework.Color.White, 0.3f));
|
|
for (int index5 = 0; index5 < 2; ++index5)
|
|
{
|
|
bool flag7 = index5 == 0;
|
|
Vector2 vector2_29 = new Vector2(flag7 ? -1f : 1f, 1f);
|
|
int index6 = -1;
|
|
for (int index7 = 0; index7 < 200; ++index7)
|
|
{
|
|
if (Main.npc[index7].active && Main.npc[index7].type == 397 && (double) Main.npc[index7].ai[2] == (double) index5 && (double) Main.npc[index7].ai[3] == (double) rCurrentNPC.whoAmI)
|
|
{
|
|
index6 = index7;
|
|
break;
|
|
}
|
|
}
|
|
if (index6 != -1)
|
|
{
|
|
Vector2 Position = center3 + vector2_26 * vector2_29;
|
|
Vector2 v2 = (Main.npc[index6].Center + vector2_28 - Position) * num170;
|
|
if (flag6)
|
|
Main.dust[Dust.NewDust(Position + v2, 0, 0, 6)].noGravity = true;
|
|
float num171 = (float) Math.Acos((double) v2.Length() / (double) y2) * -vector2_29.X;
|
|
SpriteEffects effects2 = flag7 ? SpriteEffects.None : SpriteEffects.FlipHorizontally;
|
|
Vector2 origin22 = vector2_27;
|
|
if (!flag7)
|
|
origin22.X = (float) texture28.Width - origin22.X;
|
|
mySpriteBatch.Draw(texture28, Position - screenPos, new Microsoft.Xna.Framework.Rectangle?(), alpha6, (float) ((double) v2.ToRotation() - (double) num171 - 1.57079637050629), origin22, 1f, effects2, 0.0f);
|
|
if (flag6)
|
|
Main.dust[Dust.NewDust(Position, 0, 0, 6)].noGravity = true;
|
|
if (flag6)
|
|
Main.dust[Dust.NewDust(center3, 0, 0, 6)].noGravity = true;
|
|
if (flag6)
|
|
Main.dust[Dust.NewDust(Position + new Vector2(0.0f, y2).RotatedBy((double) v2.ToRotation() - (double) num171 - 1.57079637050629), 0, 0, 6)].noGravity = true;
|
|
}
|
|
}
|
|
mySpriteBatch.Draw(texture29, center3 - screenPos, new Microsoft.Xna.Framework.Rectangle?(), alpha6, 0.0f, origin20, 1f, SpriteEffects.None, 0.0f);
|
|
mySpriteBatch.Draw(texture29, center3 - screenPos, new Microsoft.Xna.Framework.Rectangle?(), alpha6, 0.0f, origin21, 1f, SpriteEffects.FlipHorizontally, 0.0f);
|
|
mySpriteBatch.Draw(texture27, center3 - screenPos, new Microsoft.Xna.Framework.Rectangle?(), alpha6, 0.0f, new Vector2(112f, 101f), 1f, SpriteEffects.None, 0.0f);
|
|
mySpriteBatch.Draw(texture26, center3 - screenPos, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), alpha6, 0.0f, rCurrentNPC.frame.Size() / 2f, 1f, SpriteEffects.None, 0.0f);
|
|
return;
|
|
case 399:
|
|
Texture2D texture30 = TextureAssets.Npc[type].Value;
|
|
(rCurrentNPC.position - screenPos + Vector2.UnitY * rCurrentNPC.gfxOffY).Floor();
|
|
float num172 = 5f;
|
|
for (int index8 = 0; (double) index8 < (double) num172; ++index8)
|
|
{
|
|
float num173 = (float) (1.0 - ((double) Main.GlobalTimeWrappedHourly + (double) index8) % (double) num172 / (double) num172);
|
|
Microsoft.Xna.Framework.Color color38 = Microsoft.Xna.Framework.Color.LimeGreen;
|
|
if ((double) rCurrentNPC.ai[0] == 1.0)
|
|
color38 = Microsoft.Xna.Framework.Color.Lerp(Microsoft.Xna.Framework.Color.LimeGreen, Microsoft.Xna.Framework.Color.Red, MathHelper.Clamp(rCurrentNPC.ai[1] / 20f, 0.0f, 1f));
|
|
if ((double) rCurrentNPC.ai[0] == 2.0)
|
|
color38 = Microsoft.Xna.Framework.Color.Red;
|
|
Microsoft.Xna.Framework.Color color39 = color38 * (1f - num173);
|
|
color39.A = (byte) 0;
|
|
for (int index9 = 0; index9 < 2; ++index9)
|
|
mySpriteBatch.Draw(TextureAssets.Extra[27].Value, rCurrentNPC.Center - screenPos + Vector2.UnitY * (float) ((double) rCurrentNPC.gfxOffY - 4.0 + 6.0), new Microsoft.Xna.Framework.Rectangle?(), color39, 1.570796f, new Vector2(10f, 48f), num173 * 4f, SpriteEffects.None, 0.0f);
|
|
}
|
|
mySpriteBatch.Draw(texture30, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + addY + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), rCurrentNPC.GetAlpha(npcColor2), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
Texture2D texture31 = TextureAssets.GlowMask[100].Value;
|
|
mySpriteBatch.Draw(texture31, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + addY + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color((int) sbyte.MaxValue - rCurrentNPC.alpha / 2, (int) sbyte.MaxValue - rCurrentNPC.alpha / 2, (int) sbyte.MaxValue - rCurrentNPC.alpha / 2, 0), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
Texture2D texture2D20 = TextureAssets.Extra[20].Value;
|
|
Microsoft.Xna.Framework.Rectangle rectangle6 = texture2D20.Frame(verticalFrames: 4, frameY: ((int) rCurrentNPC.ai[0] + 1));
|
|
Vector2 position38 = new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) texture2D20.Width * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale + (double) addHeight + (double) addY + (double) rCurrentNPC.gfxOffY + 18.0 + 6.0));
|
|
mySpriteBatch.Draw(texture2D20, position38, new Microsoft.Xna.Framework.Rectangle?(rectangle6), rCurrentNPC.GetAlpha(npcColor2), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
Texture2D texture32 = TextureAssets.GlowMask[101].Value;
|
|
mySpriteBatch.Draw(texture32, position38, new Microsoft.Xna.Framework.Rectangle?(rectangle6), new Microsoft.Xna.Framework.Color((int) sbyte.MaxValue - rCurrentNPC.alpha / 2, (int) sbyte.MaxValue - rCurrentNPC.alpha / 2, (int) sbyte.MaxValue - rCurrentNPC.alpha / 2, 0), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
return;
|
|
case 400:
|
|
Texture2D texture33 = TextureAssets.Npc[type].Value;
|
|
Texture2D texture2D21 = TextureAssets.Extra[19].Value;
|
|
Vector2 origin23 = new Vector2(40f, 40f);
|
|
Vector2 vector2_30 = new Vector2(30f, 30f);
|
|
Vector2 center4 = rCurrentNPC.Center;
|
|
Microsoft.Xna.Framework.Point tileCoordinates4 = rCurrentNPC.Center.ToTileCoordinates();
|
|
Microsoft.Xna.Framework.Color alpha7 = rCurrentNPC.GetAlpha(Microsoft.Xna.Framework.Color.Lerp(Lighting.GetColor(tileCoordinates4.X, tileCoordinates4.Y), Microsoft.Xna.Framework.Color.White, 0.3f));
|
|
mySpriteBatch.Draw(texture33, rCurrentNPC.Center - screenPos, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), alpha7, rCurrentNPC.rotation, origin23, 1f, spriteEffects, 0.0f);
|
|
Vector2 vector2_31 = Utils.Vector2FromElipse(rCurrentNPC.localAI[0].ToRotationVector2(), vector2_30 * rCurrentNPC.localAI[1]);
|
|
mySpriteBatch.Draw(texture2D21, rCurrentNPC.Center - screenPos + vector2_31, new Microsoft.Xna.Framework.Rectangle?(), alpha7, rCurrentNPC.rotation, texture2D21.Size() / 2f, rCurrentNPC.localAI[2], SpriteEffects.None, 0.0f);
|
|
return;
|
|
case 416:
|
|
int index10 = -1;
|
|
int index11 = (int) rCurrentNPC.ai[0];
|
|
Vector2 position39 = rCurrentNPC.position;
|
|
Vector2 spinningpoint4 = Vector2.Zero;
|
|
if (Main.npc[index11].active && Main.npc[index11].type == 415)
|
|
index10 = index11;
|
|
if (index10 != -1)
|
|
{
|
|
Vector2 position40 = rCurrentNPC.position;
|
|
rCurrentNPC.Bottom = Main.npc[index10].Bottom;
|
|
position39 = rCurrentNPC.position;
|
|
rCurrentNPC.position = position40;
|
|
rCurrentNPC.gfxOffY = Main.npc[index10].gfxOffY;
|
|
spinningpoint4 = Main.npc[index10].velocity;
|
|
}
|
|
Microsoft.Xna.Framework.Rectangle frame3 = rCurrentNPC.frame;
|
|
mySpriteBatch.Draw(TextureAssets.Npc[type].Value, new Vector2((float) ((double) position39.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) position39.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + addY + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(frame3), rCurrentNPC.GetAlpha(npcColor2), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
if (rCurrentNPC.color != new Microsoft.Xna.Framework.Color())
|
|
mySpriteBatch.Draw(TextureAssets.Npc[type].Value, new Vector2((float) ((double) position39.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) position39.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + addY + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(frame3), rCurrentNPC.GetColor(npcColor2), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[156].Value, position39 + rCurrentNPC.Size * new Vector2(0.5f, 1f) - screenPos + new Vector2((float) ((double) -TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) -TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color((int) byte.MaxValue - rCurrentNPC.alpha, (int) byte.MaxValue - rCurrentNPC.alpha, (int) byte.MaxValue - rCurrentNPC.alpha, (int) byte.MaxValue - rCurrentNPC.alpha), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
vector3 = rCurrentNPC.GetAlpha(npcColor2).ToVector3() - new Vector3(0.5f);
|
|
float num174 = (float) (0.5 + (double) vector3.Length() * 0.5);
|
|
for (int index12 = 0; index12 < 4; ++index12)
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[156].Value, position39 + rCurrentNPC.Size * new Vector2(0.5f, 1f) - screenPos + new Vector2((float) ((double) -TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) -TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + rCurrentNPC.gfxOffY) + spinningpoint4.RotatedBy((double) index12 * 1.57079637050629) * num174, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color(64, 64, 64, 0), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
return;
|
|
case 491:
|
|
NPC npc4 = rCurrentNPC;
|
|
Texture2D texture34 = TextureAssets.Npc[npc4.type].Value;
|
|
Microsoft.Xna.Framework.Rectangle frame4 = npc4.frame;
|
|
Vector2 origin24 = frame4.OriginFlip(new Vector2(208f, 460f), spriteEffects);
|
|
Vector2 position41 = npc4.Center - screenPos;
|
|
Vector2 vector2_32 = new Vector2(spriteEffects.HasFlag((Enum) SpriteEffects.FlipHorizontally) ? -1f : 1f, 1f);
|
|
Microsoft.Xna.Framework.Color alpha8 = npc4.GetAlpha(npcColor2);
|
|
mySpriteBatch.Draw(texture34, position41, new Microsoft.Xna.Framework.Rectangle?(frame4), alpha8, npc4.rotation, origin24, npc4.scale, spriteEffects, 0.0f);
|
|
int num175 = (int) npc4.localAI[3] / 8;
|
|
Texture2D texture2D22 = TextureAssets.Extra[40].Value;
|
|
Microsoft.Xna.Framework.Rectangle r15 = texture2D22.Frame(verticalFrames: 4, frameY: (num175 % 4));
|
|
Vector2 origin25 = r15.Size() * new Vector2(0.5f, 1f);
|
|
mySpriteBatch.Draw(texture2D22, position41 + (new Vector2(102f, -384f) * vector2_32).RotatedBy((double) npc4.rotation), new Microsoft.Xna.Framework.Rectangle?(r15), alpha8, npc4.rotation, origin25, npc4.scale, spriteEffects, 0.0f);
|
|
Texture2D texture2D23 = TextureAssets.Extra[41].Value;
|
|
Microsoft.Xna.Framework.Rectangle r16 = texture2D23.Frame(verticalFrames: 8, frameY: (num175 % 8));
|
|
Vector2 origin26 = r16.Size() * new Vector2(0.5f, 0.0f) + new Vector2(0.0f, 10f);
|
|
for (int index13 = 0; index13 < 5; ++index13)
|
|
mySpriteBatch.Draw(texture2D23, position41 + (new Vector2((float) (34 * index13 - 96), 40f) * vector2_32).RotatedBy((double) npc4.rotation), new Microsoft.Xna.Framework.Rectangle?(r16), alpha8, npc4.rotation, origin26, npc4.scale, spriteEffects, 0.0f);
|
|
Texture2D texture2D24 = TextureAssets.Extra[42].Value;
|
|
Microsoft.Xna.Framework.Rectangle r17 = texture2D24.Frame(verticalFrames: 4, frameY: (num175 % 4));
|
|
Vector2 origin27 = r17.Size() * new Vector2(0.5f, 0.0f);
|
|
for (int index14 = 0; index14 < 2; ++index14)
|
|
mySpriteBatch.Draw(texture2D24, position41 + (new Vector2((float) (158 - 106 * index14), -302f) * vector2_32).RotatedBy((double) npc4.rotation), new Microsoft.Xna.Framework.Rectangle?(r17), alpha8, npc4.rotation, origin27, npc4.scale, spriteEffects, 0.0f);
|
|
Texture2D texture2D25 = TextureAssets.Extra[43].Value;
|
|
Microsoft.Xna.Framework.Rectangle r18 = texture2D25.Frame(verticalFrames: 4, frameY: (num175 % 4));
|
|
Vector2 origin28 = r18.Size() * new Vector2(0.5f, 0.0f);
|
|
for (int index15 = 0; index15 < 2; ++index15)
|
|
mySpriteBatch.Draw(texture2D25, position41 + (new Vector2((float) (42 - 178 * index15), -444f) * vector2_32).RotatedBy((double) npc4.rotation), new Microsoft.Xna.Framework.Rectangle?(r18), alpha8, npc4.rotation, origin28, npc4.scale, spriteEffects, 0.0f);
|
|
Texture2D texture2D26 = TextureAssets.Extra[44].Value;
|
|
Microsoft.Xna.Framework.Rectangle r19 = texture2D26.Frame(verticalFrames: 4, frameY: (num175 % 4));
|
|
Vector2 origin29 = r19.Size() * new Vector2(0.5f, 0.0f);
|
|
mySpriteBatch.Draw(texture2D26, position41 + (new Vector2(-134f, -302f) * vector2_32).RotatedBy((double) npc4.rotation), new Microsoft.Xna.Framework.Rectangle?(r19), alpha8, npc4.rotation, origin29, npc4.scale, spriteEffects, 0.0f);
|
|
Texture2D texture2D27 = TextureAssets.Extra[45].Value;
|
|
Microsoft.Xna.Framework.Rectangle r20 = texture2D27.Frame(verticalFrames: 4, frameY: ((2 + num175) % 4));
|
|
Vector2 origin30 = r20.Size() * new Vector2(0.5f, 0.0f);
|
|
mySpriteBatch.Draw(texture2D27, position41 + (new Vector2(-60f, -330f) * vector2_32).RotatedBy((double) npc4.rotation), new Microsoft.Xna.Framework.Rectangle?(r20), alpha8, npc4.rotation, origin30, npc4.scale, spriteEffects, 0.0f);
|
|
this.LoadNPC(492);
|
|
if (!TextureAssets.Npc[492].IsLoaded)
|
|
return;
|
|
Texture2D texture2D28 = TextureAssets.Npc[492].Value;
|
|
Microsoft.Xna.Framework.Rectangle r21 = texture2D28.Frame(verticalFrames: 9);
|
|
Vector2 origin31 = r21.Size() * new Vector2(0.5f, 0.0f) + new Vector2(0.0f, 10f);
|
|
for (int index16 = 0; index16 < 4; ++index16)
|
|
{
|
|
int index17 = (int) npc4.ai[index16];
|
|
if (index17 >= 0)
|
|
{
|
|
r21.Y = Main.npc[index17].frame.Y;
|
|
mySpriteBatch.Draw(texture2D28, position41 + (new Vector2((float) (68 * index16 - 122), -20f) * vector2_32).RotatedBy((double) npc4.rotation), new Microsoft.Xna.Framework.Rectangle?(r21), alpha8, npc4.rotation, origin31, npc4.scale, spriteEffects, 0.0f);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
if (type == 125 || type == 126 || type == (int) sbyte.MaxValue || type == 128 || type == 129 || type == 130 || type == 131 || type == 139 || type == 140)
|
|
{
|
|
for (int index18 = 9; index18 >= 0; index18 -= 2)
|
|
{
|
|
ref Vector2 local = ref rCurrentNPC.oldPos[index18];
|
|
Microsoft.Xna.Framework.Color alpha9 = rCurrentNPC.GetAlpha(npcColor2);
|
|
alpha9.R = (byte) ((int) alpha9.R * (10 - index18) / 20);
|
|
alpha9.G = (byte) ((int) alpha9.G * (10 - index18) / 20);
|
|
alpha9.B = (byte) ((int) alpha9.B * (10 - index18) / 20);
|
|
alpha9.A = (byte) ((int) alpha9.A * (10 - index18) / 20);
|
|
mySpriteBatch.Draw(TextureAssets.Npc[type].Value, new Vector2((float) ((double) rCurrentNPC.oldPos[index18].X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.oldPos[index18].Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), alpha9, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
}
|
|
}
|
|
if (type == 417 && (double) rCurrentNPC.ai[0] >= 6.0 && (double) rCurrentNPC.ai[0] <= 6.0)
|
|
{
|
|
for (int index19 = 5; index19 >= 0; --index19)
|
|
{
|
|
ref Vector2 local = ref rCurrentNPC.oldPos[index19];
|
|
Microsoft.Xna.Framework.Color alpha10 = rCurrentNPC.GetAlpha(npcColor2);
|
|
alpha10.R = (byte) ((int) alpha10.R * (10 - index19) / 20);
|
|
alpha10.G = (byte) ((int) alpha10.G * (10 - index19) / 20);
|
|
alpha10.B = (byte) ((int) alpha10.B * (10 - index19) / 20);
|
|
alpha10.A = (byte) ((int) alpha10.A * (10 - index19) / 20);
|
|
mySpriteBatch.Draw(TextureAssets.Npc[type].Value, new Vector2((float) ((double) rCurrentNPC.oldPos[index19].X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.oldPos[index19].Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), alpha10, rCurrentNPC.oldRot[index19], halfSize, MathHelper.Lerp(0.5f, 1f, (float) ((5.0 - (double) index19) / 6.0)), spriteEffects, 0.0f);
|
|
}
|
|
}
|
|
if (type == 419 && (double) rCurrentNPC.ai[2] <= -9.0)
|
|
{
|
|
int num176 = TextureAssets.GlowMask[154].Height() / Main.npcFrameCount[type];
|
|
int num177 = rCurrentNPC.frame.Y / num176;
|
|
for (int index20 = 6; index20 >= 0; --index20)
|
|
{
|
|
ref Vector2 local = ref rCurrentNPC.oldPos[index20];
|
|
Microsoft.Xna.Framework.Color white = Microsoft.Xna.Framework.Color.White;
|
|
white.R = (byte) ((int) byte.MaxValue * (10 - index20) / 20);
|
|
white.G = (byte) ((int) byte.MaxValue * (10 - index20) / 20);
|
|
white.B = (byte) ((int) byte.MaxValue * (10 - index20) / 20);
|
|
white.A = (byte) 0;
|
|
Microsoft.Xna.Framework.Rectangle frame5 = rCurrentNPC.frame;
|
|
int num178 = (num177 - 3 - index20) % 3;
|
|
if (num178 < 0)
|
|
num178 += 3;
|
|
int num179 = num178 + 5;
|
|
frame5.Y = num176 * num179;
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[154].Value, new Vector2((float) ((double) rCurrentNPC.oldPos[index20].X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.oldPos[index20].Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight), new Microsoft.Xna.Framework.Rectangle?(frame5), white, rCurrentNPC.oldRot[index20], halfSize, MathHelper.Lerp(0.75f, 1.2f, (float) ((10.0 - (double) index20) / 10.0)), spriteEffects, 0.0f);
|
|
}
|
|
}
|
|
if (type == 418 && ((double) rCurrentNPC.ai[0] == 2.0 || (double) rCurrentNPC.ai[0] == 4.0))
|
|
{
|
|
Texture2D texture2D29 = TextureAssets.Extra[55].Value;
|
|
Vector2 origin32 = new Vector2((float) (texture2D29.Width / 2), (float) (texture2D29.Height / 8 + 14));
|
|
int num180 = (int) rCurrentNPC.ai[1] / 2;
|
|
float num181 = -1.570796f * (float) rCurrentNPC.spriteDirection;
|
|
float amount15 = rCurrentNPC.ai[1] / 45f;
|
|
if ((double) amount15 > 1.0)
|
|
amount15 = 1f;
|
|
int num182 = num180 % 4;
|
|
for (int index21 = 6; index21 >= 0; --index21)
|
|
{
|
|
ref Vector2 local = ref rCurrentNPC.oldPos[index21];
|
|
Microsoft.Xna.Framework.Color color40 = Microsoft.Xna.Framework.Color.Lerp(Microsoft.Xna.Framework.Color.Gold, Microsoft.Xna.Framework.Color.OrangeRed, amount15);
|
|
color40 = Microsoft.Xna.Framework.Color.Lerp(color40, Microsoft.Xna.Framework.Color.Blue, (float) index21 / 12f);
|
|
color40.A = (byte) (64.0 * (double) amount15);
|
|
color40.R = (byte) ((int) color40.R * (10 - index21) / 20);
|
|
color40.G = (byte) ((int) color40.G * (10 - index21) / 20);
|
|
color40.B = (byte) ((int) color40.B * (10 - index21) / 20);
|
|
color40.A = (byte) ((int) color40.A * (10 - index21) / 20);
|
|
color40 *= amount15;
|
|
int frameY = (num182 - index21) % 4;
|
|
if (frameY < 0)
|
|
frameY += 4;
|
|
Microsoft.Xna.Framework.Rectangle rectangle7 = texture2D29.Frame(verticalFrames: 4, frameY: frameY);
|
|
mySpriteBatch.Draw(texture2D29, new Vector2((float) ((double) rCurrentNPC.oldPos[index21].X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.oldPos[index21].Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight), new Microsoft.Xna.Framework.Rectangle?(rectangle7), color40, rCurrentNPC.oldRot[index21] + num181, origin32, MathHelper.Lerp(0.1f, 1.2f, (float) ((10.0 - (double) index21) / 10.0)), spriteEffects, 0.0f);
|
|
}
|
|
}
|
|
if (type == 516)
|
|
{
|
|
int num183 = TextureAssets.Npc[type].Height() / Main.npcFrameCount[type];
|
|
int num184 = rCurrentNPC.frame.Y / num183;
|
|
for (int index22 = 6; index22 >= 0; --index22)
|
|
{
|
|
ref Vector2 local = ref rCurrentNPC.oldPos[index22];
|
|
Microsoft.Xna.Framework.Color white = Microsoft.Xna.Framework.Color.White;
|
|
white.R = (byte) ((int) byte.MaxValue * (10 - index22) / 20);
|
|
white.G = (byte) ((int) byte.MaxValue * (10 - index22) / 20);
|
|
white.B = (byte) ((int) byte.MaxValue * (10 - index22) / 20);
|
|
white.A = (byte) ((int) byte.MaxValue * (10 - index22) / 20);
|
|
Microsoft.Xna.Framework.Color color41 = Microsoft.Xna.Framework.Color.Lerp(white, Microsoft.Xna.Framework.Color.Transparent, (float) index22 / 6f);
|
|
Microsoft.Xna.Framework.Rectangle frame6 = rCurrentNPC.frame;
|
|
int num185 = (num184 - 4 - index22) % 4;
|
|
if (num185 < 0)
|
|
num185 += 4;
|
|
frame6.Y = num183 * num185;
|
|
mySpriteBatch.Draw(TextureAssets.Npc[type].Value, new Vector2((float) ((double) rCurrentNPC.oldPos[index22].X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.oldPos[index22].Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight), new Microsoft.Xna.Framework.Rectangle?(frame6), color41, rCurrentNPC.rotation, halfSize, MathHelper.Lerp(0.35f, 1.2f, (float) ((10.0 - (double) index22) / 10.0)), spriteEffects, 0.0f);
|
|
}
|
|
}
|
|
if (rCurrentNPC.type == 390 && rCurrentNPC.IsABestiaryIconDummy)
|
|
{
|
|
this.LoadNPC(391);
|
|
Texture2D texture2D30 = TextureAssets.Npc[391].Value;
|
|
Microsoft.Xna.Framework.Rectangle rectangle8 = texture2D30.Frame(verticalFrames: Main.npcFrameCount[391], frameY: ((int) rCurrentNPC.localAI[3]));
|
|
Vector2 vector2_33 = new Vector2((float) (-rCurrentNPC.width - 8), 10f);
|
|
mySpriteBatch.Draw(texture2D30, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + addY + rCurrentNPC.gfxOffY) + vector2_33, new Microsoft.Xna.Framework.Rectangle?(rectangle8), rCurrentNPC.GetAlpha(npcColor2), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
}
|
|
Microsoft.Xna.Framework.Rectangle frame7 = rCurrentNPC.frame;
|
|
if (type == 182 || type == 289)
|
|
frame7.Height -= 2;
|
|
if ((uint) (type - 420) > 1U && (uint) (type - 423) > 1U)
|
|
{
|
|
if (type == 662)
|
|
{
|
|
float num186 = (float) (4.0 + 2.0 * Math.Cos(6.28318548202515 * (double) Main.GlobalTimeWrappedHourly));
|
|
Vector2 spinningpoint5 = Vector2.UnitX * num186;
|
|
Microsoft.Xna.Framework.Color color42 = Microsoft.Xna.Framework.Color.Cyan * (num186 / 12f) * 0.4f;
|
|
color42.A /= (byte) 4;
|
|
for (float num187 = 0.9f; (double) num187 >= 0.0; num187 -= 0.125f)
|
|
{
|
|
Vector2 vector2_34 = rCurrentNPC.position - rCurrentNPC.velocity * 10f * num187;
|
|
mySpriteBatch.Draw(TextureAssets.Npc[type].Value, new Vector2((float) ((double) vector2_34.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) vector2_34.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + addY + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(frame7), color42 * (1f - num187), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
}
|
|
for (float num188 = 0.0f; (double) num188 < 6.28318548202515; num188 += 1.570796f)
|
|
{
|
|
Vector2 vector2_35 = rCurrentNPC.position + spinningpoint5.RotatedBy((double) num188);
|
|
mySpriteBatch.Draw(TextureAssets.Npc[type].Value, new Vector2((float) ((double) vector2_35.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) vector2_35.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + addY + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(frame7), color42, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
float num189 = (float) (9.0 + 3.0 * Math.Cos(6.28318548202515 * (double) Main.GlobalTimeWrappedHourly));
|
|
Vector2 spinningpoint6 = Vector2.UnitX * num189;
|
|
Microsoft.Xna.Framework.Color color43 = Microsoft.Xna.Framework.Color.Teal * (num189 / 12f) * 0.8f;
|
|
color43.A /= (byte) 2;
|
|
for (float num190 = 0.0f; (double) num190 < 6.28318548202515; num190 += 1.570796f)
|
|
{
|
|
Vector2 vector2_36 = rCurrentNPC.position + spinningpoint6.RotatedBy((double) num190);
|
|
mySpriteBatch.Draw(TextureAssets.Npc[type].Value, new Vector2((float) ((double) vector2_36.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) vector2_36.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + addY + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(frame7), color43, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
}
|
|
}
|
|
if (rCurrentNPC.aiStyle == 7)
|
|
this.DrawNPCExtras(rCurrentNPC, true, addHeight, addY, npcColor2, halfSize, spriteEffects, screenPos);
|
|
if (type == 346 && (double) rCurrentNPC.life < (double) rCurrentNPC.lifeMax * 0.5)
|
|
{
|
|
mySpriteBatch.Draw(TextureAssets.SantaTank.Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + addY + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(frame7), rCurrentNPC.GetAlpha(npcColor2), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
}
|
|
else
|
|
{
|
|
switch (type)
|
|
{
|
|
case 356:
|
|
--frame7.Height;
|
|
mySpriteBatch.Draw(TextureAssets.Npc[type].Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + addY + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(frame7), rCurrentNPC.GetAlpha(npcColor2), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
case 360:
|
|
float num191 = 0.0f;
|
|
if ((double) rCurrentNPC.ai[2] == 0.0)
|
|
{
|
|
if ((double) rCurrentNPC.rotation == 3.14000010490417 || (double) rCurrentNPC.rotation == -3.14000010490417)
|
|
addHeight = 2f;
|
|
if (rCurrentNPC.direction < 0 && ((double) rCurrentNPC.rotation == 1.57000005245209 || (double) rCurrentNPC.rotation == 4.71000003814697))
|
|
num191 = 1f;
|
|
if (rCurrentNPC.direction > 0 && ((double) rCurrentNPC.rotation == 1.57000005245209 || (double) rCurrentNPC.rotation == 4.71000003814697))
|
|
num191 = -1f;
|
|
}
|
|
mySpriteBatch.Draw(TextureAssets.Npc[type].Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale) + num191, (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + addY + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(frame7), rCurrentNPC.GetAlpha(npcColor2), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
case 655:
|
|
float num192 = 0.0f;
|
|
if ((double) rCurrentNPC.ai[2] == 0.0)
|
|
{
|
|
if ((double) rCurrentNPC.rotation == 3.14000010490417 || (double) rCurrentNPC.rotation == -3.14000010490417)
|
|
addHeight = 2f;
|
|
if (rCurrentNPC.direction < 0 && ((double) rCurrentNPC.rotation == 1.57000005245209 || (double) rCurrentNPC.rotation == 4.71000003814697))
|
|
num192 = 1f;
|
|
if (rCurrentNPC.direction > 0 && ((double) rCurrentNPC.rotation == 1.57000005245209 || (double) rCurrentNPC.rotation == 4.71000003814697))
|
|
num192 = -1f;
|
|
}
|
|
mySpriteBatch.Draw(TextureAssets.Npc[type].Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale) + num192, (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + addY + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(frame7), rCurrentNPC.GetAlpha(Microsoft.Xna.Framework.Color.Orange), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
default:
|
|
if (type == 266 && rCurrentNPC.life < rCurrentNPC.lifeMax && (Main.expertMode || Main.getGoodWorld))
|
|
{
|
|
Microsoft.Xna.Framework.Color alpha11 = rCurrentNPC.GetAlpha(npcColor2);
|
|
float num193 = (float) (1.0 - (double) rCurrentNPC.life / (double) rCurrentNPC.lifeMax);
|
|
float num194 = num193 * num193;
|
|
if (Main.getGoodWorld)
|
|
num194 = 1f;
|
|
alpha11.R = (byte) ((double) alpha11.R * (double) num194);
|
|
alpha11.G = (byte) ((double) alpha11.G * (double) num194);
|
|
alpha11.B = (byte) ((double) alpha11.B * (double) num194);
|
|
alpha11.A = (byte) ((double) alpha11.A * (double) num194);
|
|
for (int index23 = 0; index23 < 4; ++index23)
|
|
{
|
|
Vector2 position42 = rCurrentNPC.position;
|
|
float num195 = Math.Abs(rCurrentNPC.Center.X - Main.player[Main.myPlayer].Center.X);
|
|
float num196 = Math.Abs(rCurrentNPC.Center.Y - Main.player[Main.myPlayer].Center.Y);
|
|
position42.X = index23 == 0 || index23 == 2 ? Main.player[Main.myPlayer].Center.X + num195 : Main.player[Main.myPlayer].Center.X - num195;
|
|
position42.X -= (float) (rCurrentNPC.width / 2);
|
|
position42.Y = index23 == 0 || index23 == 1 ? Main.player[Main.myPlayer].Center.Y + num196 : Main.player[Main.myPlayer].Center.Y - num196;
|
|
position42.Y -= (float) (rCurrentNPC.height / 2);
|
|
mySpriteBatch.Draw(TextureAssets.Npc[type].Value, new Vector2((float) ((double) position42.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) position42.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + addY + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(frame7), alpha11, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
}
|
|
mySpriteBatch.Draw(TextureAssets.Npc[type].Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + addY + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(frame7), rCurrentNPC.GetAlpha(npcColor2), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
}
|
|
if (type == 421 && (double) rCurrentNPC.ai[0] == 5.0)
|
|
{
|
|
Player player = Main.player[rCurrentNPC.target];
|
|
if ((double) player.gravDir == -1.0)
|
|
spriteEffects |= SpriteEffects.FlipVertically;
|
|
mySpriteBatch.Draw(TextureAssets.Npc[type].Value, new Vector2((float) (player.direction * 4), player.gfxOffY) + ((double) player.gravDir == 1.0 ? player.Top : player.Bottom) - screenPos, new Microsoft.Xna.Framework.Rectangle?(frame7), rCurrentNPC.GetAlpha(npcColor2), rCurrentNPC.rotation, frame7.Size() / 2f, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[146].Value, new Vector2((float) (player.direction * 4), player.gfxOffY) + ((double) player.gravDir == 1.0 ? player.Top : player.Bottom) - screenPos, new Microsoft.Xna.Framework.Rectangle?(frame7), rCurrentNPC.GetAlpha(npcColor2), rCurrentNPC.rotation, frame7.Size() / 2f, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
}
|
|
if (type == 518)
|
|
{
|
|
Vector2 vector2_37 = new Vector2(-10f, 0.0f);
|
|
mySpriteBatch.Draw(TextureAssets.Npc[type].Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + addY + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(frame7), rCurrentNPC.GetAlpha(npcColor2), rCurrentNPC.rotation, halfSize + vector2_37, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
if (rCurrentNPC.color != new Microsoft.Xna.Framework.Color())
|
|
{
|
|
mySpriteBatch.Draw(TextureAssets.Npc[type].Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + addY + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(frame7), rCurrentNPC.GetColor(npcColor2), rCurrentNPC.rotation, halfSize + vector2_37, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
mySpriteBatch.Draw(TextureAssets.Npc[type].Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + addY + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(frame7), rCurrentNPC.GetAlpha(npcColor2), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
if (rCurrentNPC.color != new Microsoft.Xna.Framework.Color())
|
|
{
|
|
mySpriteBatch.Draw(TextureAssets.Npc[type].Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + addY + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(frame7), rCurrentNPC.GetColor(npcColor2), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
if (rCurrentNPC.confused)
|
|
mySpriteBatch.Draw(TextureAssets.Confuse.Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale + (double) addHeight + (double) addY - (double) TextureAssets.Confuse.Height() - 20.0)), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Confuse.Width(), TextureAssets.Confuse.Height())), new Microsoft.Xna.Framework.Color(250, 250, 250, 70), rCurrentNPC.velocity.X * -0.05f, new Vector2((float) (TextureAssets.Confuse.Width() / 2), (float) (TextureAssets.Confuse.Height() / 2)), Main.essScale + 0.2f, SpriteEffects.None, 0.0f);
|
|
if (type >= 639 && type <= 645)
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[286].Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + addY + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(frame7), rCurrentNPC.GetAlpha(Microsoft.Xna.Framework.Color.White), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
if (type >= 646 && type <= 652)
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[287].Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + addY + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(frame7), rCurrentNPC.GetAlpha(Microsoft.Xna.Framework.Color.White), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
if (type >= 134 && type <= 136 && npcColor2 != Microsoft.Xna.Framework.Color.Black)
|
|
{
|
|
mySpriteBatch.Draw(TextureAssets.Dest[type - 134].Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + addY), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0) * (float) (1.0 - (double) rCurrentNPC.alpha / (double) byte.MaxValue), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
}
|
|
else
|
|
{
|
|
switch (type)
|
|
{
|
|
case 120:
|
|
for (int index24 = 1; index24 < rCurrentNPC.oldPos.Length; ++index24)
|
|
{
|
|
ref Vector2 local = ref rCurrentNPC.oldPos[index24];
|
|
mySpriteBatch.Draw(TextureAssets.Chaos.Value, new Vector2((float) ((double) rCurrentNPC.oldPos[index24].X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.oldPos[index24].Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color()
|
|
{
|
|
R = (byte) (150 * (10 - index24) / 15),
|
|
G = (byte) (100 * (10 - index24) / 15),
|
|
B = (byte) (150 * (10 - index24) / 15),
|
|
A = (byte) (50 * (10 - index24) / 15)
|
|
}, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
}
|
|
break;
|
|
case 125:
|
|
mySpriteBatch.Draw(TextureAssets.EyeLaser.Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + addY), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
case (int) sbyte.MaxValue:
|
|
mySpriteBatch.Draw(TextureAssets.BoneEyes.Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + addY), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color(200, 200, 200, 0), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
case 131:
|
|
mySpriteBatch.Draw(TextureAssets.BoneLaser.Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + addY), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color(200, 200, 200, 0), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
case 139:
|
|
mySpriteBatch.Draw(TextureAssets.Probe.Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + addY), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
default:
|
|
if (type == 137 || type == 138)
|
|
{
|
|
for (int index25 = 1; index25 < rCurrentNPC.oldPos.Length; ++index25)
|
|
{
|
|
ref Vector2 local = ref rCurrentNPC.oldPos[index25];
|
|
mySpriteBatch.Draw(TextureAssets.Npc[type].Value, new Vector2((float) ((double) rCurrentNPC.oldPos[index25].X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.oldPos[index25].Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color()
|
|
{
|
|
R = (byte) (150 * (10 - index25) / 15),
|
|
G = (byte) (100 * (10 - index25) / 15),
|
|
B = (byte) (150 * (10 - index25) / 15),
|
|
A = (byte) (50 * (10 - index25) / 15)
|
|
}, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
}
|
|
break;
|
|
}
|
|
switch (type)
|
|
{
|
|
case 82:
|
|
mySpriteBatch.Draw(TextureAssets.WraithEye.Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), Microsoft.Xna.Framework.Color.White, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
for (int index26 = 1; index26 < 10; ++index26)
|
|
{
|
|
Microsoft.Xna.Framework.Color color44 = new Microsoft.Xna.Framework.Color(110 - index26 * 10, 110 - index26 * 10, 110 - index26 * 10, 110 - index26 * 10);
|
|
mySpriteBatch.Draw(TextureAssets.WraithEye.Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight) - rCurrentNPC.velocity * (float) index26 * 0.5f, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), color44, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
}
|
|
break;
|
|
case 253:
|
|
mySpriteBatch.Draw(TextureAssets.ReaperEye.Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 3.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), Microsoft.Xna.Framework.Color.White, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
for (int index27 = 1; index27 < 20; ++index27)
|
|
{
|
|
Microsoft.Xna.Framework.Color color45 = new Microsoft.Xna.Framework.Color(210 - index27 * 20, 210 - index27 * 20, 210 - index27 * 20, 210 - index27 * 20);
|
|
mySpriteBatch.Draw(TextureAssets.ReaperEye.Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 3.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight) - rCurrentNPC.velocity * (float) index27 * 0.5f, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), color45, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
}
|
|
break;
|
|
case 325:
|
|
mySpriteBatch.Draw(TextureAssets.TreeFace.Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), Microsoft.Xna.Framework.Color.White, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
for (int index28 = 1; index28 < 10; ++index28)
|
|
{
|
|
Microsoft.Xna.Framework.Color color46 = new Microsoft.Xna.Framework.Color(110 - index28 * 10, 110 - index28 * 10, 110 - index28 * 10, 110 - index28 * 10);
|
|
Vector2 vector2_38 = new Vector2((float) Main.rand.Next(-10, 11) * 0.2f, (float) Main.rand.Next(-10, 11) * 0.2f);
|
|
mySpriteBatch.Draw(TextureAssets.TreeFace.Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight) + vector2_38, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), color46, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
}
|
|
break;
|
|
case 327:
|
|
mySpriteBatch.Draw(TextureAssets.PumpkingFace.Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), Microsoft.Xna.Framework.Color.White, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
for (int index29 = 1; index29 < 10; ++index29)
|
|
{
|
|
Microsoft.Xna.Framework.Color color47 = new Microsoft.Xna.Framework.Color(110 - index29 * 10, 110 - index29 * 10, 110 - index29 * 10, 110 - index29 * 10);
|
|
Vector2 vector2_39 = new Vector2((float) Main.rand.Next(-10, 11) * 0.2f, (float) Main.rand.Next(-10, 11) * 0.2f);
|
|
mySpriteBatch.Draw(TextureAssets.PumpkingFace.Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight) + vector2_39, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), color47, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
}
|
|
break;
|
|
case 345:
|
|
mySpriteBatch.Draw(TextureAssets.IceQueen.Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), Microsoft.Xna.Framework.Color.White, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
for (int index30 = 1; index30 < 5; ++index30)
|
|
{
|
|
Microsoft.Xna.Framework.Color color48 = new Microsoft.Xna.Framework.Color(100 - index30 * 10, 100 - index30 * 10, 100 - index30 * 10, 100 - index30 * 10);
|
|
mySpriteBatch.Draw(TextureAssets.IceQueen.Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight) - rCurrentNPC.velocity * (float) index30 * 0.2f, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), color48, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
}
|
|
break;
|
|
case 355:
|
|
mySpriteBatch.Draw(TextureAssets.Firefly.Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
case 358:
|
|
mySpriteBatch.Draw(TextureAssets.Lightningbug.Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
case 653:
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[288].Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 3.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
case 654:
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[290].Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
default:
|
|
if (type == 245 && rCurrentNPC.alpha == 0 && !Main.getGoodWorld)
|
|
{
|
|
Microsoft.Xna.Framework.Color color49 = new Microsoft.Xna.Framework.Color((int) Main.mouseTextColor, (int) Main.mouseTextColor, (int) Main.mouseTextColor, 0);
|
|
mySpriteBatch.Draw(TextureAssets.Golem[3].Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + addY + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(frame7), color49, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
}
|
|
if (type == 246 && !Main.getGoodWorld)
|
|
{
|
|
Microsoft.Xna.Framework.Color color50 = new Microsoft.Xna.Framework.Color((int) Main.mouseTextColor, (int) Main.mouseTextColor, (int) Main.mouseTextColor, 0);
|
|
if (rCurrentNPC.frame.Y < 222)
|
|
{
|
|
mySpriteBatch.Draw(TextureAssets.Golem[1].Value, new Vector2((float) ((double) rCurrentNPC.Center.X - (double) screenPos.X - 20.0), (float) ((double) rCurrentNPC.Center.Y - (double) screenPos.Y - 27.0)), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Golem[1].Width(), TextureAssets.Golem[1].Height() / 2)), color50, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
Microsoft.Xna.Framework.Rectangle rectangle9 = frame7;
|
|
rectangle9.Y = 0;
|
|
mySpriteBatch.Draw(TextureAssets.Extra[107].Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + addY + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(rectangle9), color50, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
}
|
|
if (rCurrentNPC.frame.Y < 444)
|
|
{
|
|
mySpriteBatch.Draw(TextureAssets.Golem[2].Value, new Vector2((float) ((double) rCurrentNPC.Center.X - (double) screenPos.X + 26.0), (float) ((double) rCurrentNPC.Center.Y - (double) screenPos.Y - 28.0)), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Golem[2].Width(), TextureAssets.Golem[2].Height() / 4)), color50, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
break;
|
|
}
|
|
mySpriteBatch.Draw(TextureAssets.Golem[2].Value, new Vector2((float) ((double) rCurrentNPC.Center.X - (double) screenPos.X - 38.0), (float) ((double) rCurrentNPC.Center.Y - (double) screenPos.Y - 28.0)), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, TextureAssets.Golem[2].Height() / 2, TextureAssets.Golem[2].Width(), TextureAssets.Golem[2].Height() / 4)), color50, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
break;
|
|
}
|
|
if (type == 249 && !Main.getGoodWorld)
|
|
{
|
|
Microsoft.Xna.Framework.Color color51 = new Microsoft.Xna.Framework.Color((int) Main.mouseTextColor, (int) Main.mouseTextColor, (int) Main.mouseTextColor, 0);
|
|
mySpriteBatch.Draw(TextureAssets.Golem[1].Value, new Vector2((float) ((double) rCurrentNPC.Center.X - (double) screenPos.X - 20.0), (float) ((double) rCurrentNPC.Center.Y - (double) screenPos.Y - 47.0)), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Golem[1].Width(), TextureAssets.Golem[1].Height() / 2)), color51, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
int num197 = (int) rCurrentNPC.frameCounter / 4;
|
|
Texture2D texture2D31 = TextureAssets.Extra[106].Value;
|
|
Microsoft.Xna.Framework.Rectangle rectangle10 = texture2D31.Frame(verticalFrames: 8);
|
|
Microsoft.Xna.Framework.Color white = Microsoft.Xna.Framework.Color.White;
|
|
rectangle10.Y += rectangle10.Height * 2 * num197 + frame7.Y;
|
|
mySpriteBatch.Draw(texture2D31, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + addY + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(rectangle10), color51, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
Texture2D texture35 = TextureAssets.Extra[107].Value;
|
|
Microsoft.Xna.Framework.Rectangle rectangle11 = frame7;
|
|
mySpriteBatch.Draw(texture35, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + addY + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(rectangle11), color51, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
}
|
|
switch (type)
|
|
{
|
|
case 381:
|
|
Vector2 zero1 = Vector2.Zero;
|
|
Vector2 origin33 = Vector2.Zero;
|
|
int num198 = TextureAssets.Npc[type].Height() / Main.npcFrameCount[type];
|
|
int num199 = rCurrentNPC.frame.Y / num198;
|
|
Microsoft.Xna.Framework.Rectangle rectangle12 = new Microsoft.Xna.Framework.Rectangle(0, 0, 32, 42);
|
|
switch (num199)
|
|
{
|
|
case 0:
|
|
zero1 += new Vector2(8f, 32f);
|
|
break;
|
|
case 1:
|
|
zero1 += new Vector2(6f, 72f);
|
|
break;
|
|
case 2:
|
|
zero1 += new Vector2(8f, 126f);
|
|
break;
|
|
case 3:
|
|
zero1 += new Vector2(6f, 174f);
|
|
break;
|
|
case 4:
|
|
zero1 += new Vector2(6f, 224f);
|
|
break;
|
|
case 5:
|
|
zero1 += new Vector2(8f, 272f);
|
|
break;
|
|
case 6:
|
|
zero1 += new Vector2(10f, 318f);
|
|
break;
|
|
case 7:
|
|
zero1 += new Vector2(14f, 366f);
|
|
break;
|
|
case 8:
|
|
zero1 += new Vector2(10f, 414f);
|
|
break;
|
|
}
|
|
zero1.Y -= (float) (num198 * num199);
|
|
Vector2 vector2_40 = zero1 - halfSize;
|
|
int num200 = 2;
|
|
if ((double) rCurrentNPC.ai[2] > 0.0)
|
|
num200 = (int) rCurrentNPC.ai[2] - 1;
|
|
if ((double) rCurrentNPC.velocity.Y != 0.0)
|
|
num200 = 3;
|
|
rectangle12.Y += 44 * num200;
|
|
switch (num200)
|
|
{
|
|
case 0:
|
|
origin33 = new Vector2(10f, 18f);
|
|
break;
|
|
case 1:
|
|
origin33 = new Vector2(8f, 20f);
|
|
break;
|
|
case 2:
|
|
origin33 = new Vector2(8f, 20f);
|
|
break;
|
|
case 3:
|
|
origin33 = new Vector2(8f, 20f);
|
|
break;
|
|
case 4:
|
|
origin33 = new Vector2(6f, 18f);
|
|
break;
|
|
}
|
|
if (spriteEffects.HasFlag((Enum) SpriteEffects.FlipHorizontally))
|
|
{
|
|
vector2_40.X *= -1f;
|
|
origin33.X = (float) rectangle12.Width - origin33.X;
|
|
}
|
|
Vector2 position43 = vector2_40 + rCurrentNPC.Center - screenPos;
|
|
position43.Y += rCurrentNPC.gfxOffY;
|
|
mySpriteBatch.Draw(TextureAssets.Extra[0].Value, position43, new Microsoft.Xna.Framework.Rectangle?(rectangle12), npcColor2, rCurrentNPC.rotation, origin33, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[24].Value, position43, new Microsoft.Xna.Framework.Rectangle?(rectangle12), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0), rCurrentNPC.rotation, origin33, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
case 382:
|
|
Vector2 zero2 = Vector2.Zero;
|
|
Vector2 origin34 = Vector2.Zero;
|
|
int num201 = TextureAssets.Npc[type].Height() / Main.npcFrameCount[type];
|
|
int num202 = rCurrentNPC.frame.Y / num201;
|
|
Microsoft.Xna.Framework.Rectangle rectangle13 = new Microsoft.Xna.Framework.Rectangle(0, 0, 30, 42);
|
|
switch (num202)
|
|
{
|
|
case 0:
|
|
zero2 += new Vector2(8f, 30f);
|
|
break;
|
|
case 1:
|
|
zero2 += new Vector2(6f, 68f);
|
|
break;
|
|
case 2:
|
|
zero2 += new Vector2(8f, 120f);
|
|
break;
|
|
case 3:
|
|
zero2 += new Vector2(6f, 166f);
|
|
break;
|
|
case 4:
|
|
zero2 += new Vector2(6f, 214f);
|
|
break;
|
|
case 5:
|
|
zero2 += new Vector2(8f, 260f);
|
|
break;
|
|
case 6:
|
|
zero2 += new Vector2(14f, 304f);
|
|
break;
|
|
case 7:
|
|
zero2 += new Vector2(14f, 350f);
|
|
break;
|
|
case 8:
|
|
zero2 += new Vector2(10f, 396f);
|
|
break;
|
|
}
|
|
zero2.Y -= (float) (num201 * num202);
|
|
Vector2 vector2_41 = zero2 - halfSize;
|
|
int num203 = 2;
|
|
if ((double) rCurrentNPC.ai[2] > 0.0)
|
|
num203 = (int) rCurrentNPC.ai[2] - 1;
|
|
if ((double) rCurrentNPC.velocity.Y != 0.0)
|
|
num203 = 3;
|
|
rectangle13.Y += 44 * num203;
|
|
switch (num203)
|
|
{
|
|
case 0:
|
|
origin34 = new Vector2(10f, 18f);
|
|
break;
|
|
case 1:
|
|
origin34 = new Vector2(8f, 20f);
|
|
break;
|
|
case 2:
|
|
origin34 = new Vector2(8f, 20f);
|
|
break;
|
|
case 3:
|
|
origin34 = new Vector2(8f, 20f);
|
|
break;
|
|
case 4:
|
|
origin34 = new Vector2(6f, 18f);
|
|
break;
|
|
}
|
|
if (spriteEffects.HasFlag((Enum) SpriteEffects.FlipHorizontally))
|
|
{
|
|
vector2_41.X *= -1f;
|
|
origin34.X = (float) rectangle13.Width - origin34.X;
|
|
}
|
|
Vector2 position44 = vector2_41 + rCurrentNPC.Center - screenPos;
|
|
position44.Y += rCurrentNPC.gfxOffY;
|
|
mySpriteBatch.Draw(TextureAssets.Extra[1].Value, position44, new Microsoft.Xna.Framework.Rectangle?(rectangle13), npcColor2, rCurrentNPC.rotation, origin34, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
case 383:
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[11].Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + addY + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(frame7), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
if ((double) rCurrentNPC.ai[2] != 0.0 && Main.npc[(int) rCurrentNPC.ai[2] - 1].active && Main.npc[(int) rCurrentNPC.ai[2] - 1].type == 384)
|
|
{
|
|
double num204 = (double) rCurrentNPC.ai[2];
|
|
mySpriteBatch.Draw(TextureAssets.Npc[384].Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + addY + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(), new Microsoft.Xna.Framework.Color(100, 100, 100, 0), rCurrentNPC.rotation, new Vector2((float) TextureAssets.Npc[384].Width(), (float) TextureAssets.Npc[384].Height()) / 2f, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
}
|
|
break;
|
|
case 386:
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[31].Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + addY + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(frame7), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
case 387:
|
|
Microsoft.Xna.Framework.Color color52 = new Microsoft.Xna.Framework.Color(1f, 1f, 1f, 1f) * 0.75f;
|
|
if ((double) rCurrentNPC.ai[0] > 0.0)
|
|
{
|
|
float amount16 = (float) (((double) rCurrentNPC.ai[0] + 1.0) / 60.0);
|
|
color52 = Microsoft.Xna.Framework.Color.Lerp(color52, Microsoft.Xna.Framework.Color.White, amount16);
|
|
color52.A = (byte) MathHelper.Lerp((float) color52.A, 0.0f, amount16);
|
|
}
|
|
Microsoft.Xna.Framework.Color color53 = color52 * (float) (((double) byte.MaxValue - (double) rCurrentNPC.alpha) / (double) byte.MaxValue);
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[32].Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + addY + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(frame7), color53, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
case 388:
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[33].Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + addY + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(frame7), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
case 389:
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[34].Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + addY + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(frame7), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
case 520:
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[164].Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + addY + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(frame7), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
Vector2 zero3 = Vector2.Zero;
|
|
Vector2 origin35 = new Vector2(4f, 4f);
|
|
int num205 = TextureAssets.Npc[type].Height() / Main.npcFrameCount[type];
|
|
int num206 = rCurrentNPC.frame.Y / num205;
|
|
if (spriteEffects.HasFlag((Enum) SpriteEffects.FlipHorizontally))
|
|
{
|
|
zero3.X *= -1f;
|
|
origin35.X = (float) TextureAssets.Extra[56].Width() - origin35.X;
|
|
}
|
|
Vector2 position45 = zero3 + (rCurrentNPC.Top + new Vector2(0.0f, 20f)) - screenPos;
|
|
position45.Y += rCurrentNPC.gfxOffY;
|
|
float rotation3 = rCurrentNPC.localAI[3];
|
|
if (spriteEffects.HasFlag((Enum) SpriteEffects.FlipHorizontally))
|
|
rotation3 += 3.141593f;
|
|
mySpriteBatch.Draw(TextureAssets.Extra[56].Value, position45, new Microsoft.Xna.Framework.Rectangle?(), npcColor2, rotation3, origin35, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[165].Value, position45, new Microsoft.Xna.Framework.Rectangle?(), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0), rotation3, origin35, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
default:
|
|
if (type == 4 && (double) rCurrentNPC.ai[1] >= 4.0 && (double) rCurrentNPC.ai[0] == 3.0)
|
|
{
|
|
for (int index31 = 1; index31 < rCurrentNPC.oldPos.Length; ++index31)
|
|
{
|
|
ref Vector2 local = ref rCurrentNPC.oldPos[index31];
|
|
Microsoft.Xna.Framework.Color color54 = npcColor2;
|
|
color54.R = (byte) (0.5 * (double) color54.R * (double) (10 - index31) / 20.0);
|
|
color54.G = (byte) (0.5 * (double) color54.G * (double) (10 - index31) / 20.0);
|
|
color54.B = (byte) (0.5 * (double) color54.B * (double) (10 - index31) / 20.0);
|
|
color54.A = (byte) (0.5 * (double) color54.A * (double) (10 - index31) / 20.0);
|
|
mySpriteBatch.Draw(TextureAssets.Npc[type].Value, new Vector2((float) ((double) rCurrentNPC.oldPos[index31].X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.oldPos[index31].Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), color54, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
}
|
|
break;
|
|
}
|
|
if (type == 437)
|
|
{
|
|
Microsoft.Xna.Framework.Color white = Microsoft.Xna.Framework.Color.White;
|
|
white.A = (byte) 200;
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[109].Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + addY + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(frame7), white, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[108].Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + addY + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(), white, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
}
|
|
if (type == 471 && (double) rCurrentNPC.ai[3] < 0.0)
|
|
{
|
|
for (int index32 = 1; index32 < rCurrentNPC.oldPos.Length; ++index32)
|
|
{
|
|
ref Vector2 local = ref rCurrentNPC.oldPos[index32];
|
|
Microsoft.Xna.Framework.Color color55 = npcColor2;
|
|
color55.R = (byte) (0.5 * (double) color55.R * (double) (10 - index32) / 20.0);
|
|
color55.G = (byte) (0.5 * (double) color55.G * (double) (10 - index32) / 20.0);
|
|
color55.B = (byte) (0.5 * (double) color55.B * (double) (10 - index32) / 20.0);
|
|
color55.A = (byte) (0.5 * (double) color55.A * (double) (10 - index32) / 20.0);
|
|
mySpriteBatch.Draw(TextureAssets.Npc[type].Value, new Vector2((float) ((double) rCurrentNPC.oldPos[index32].X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.oldPos[index32].Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), color55, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
}
|
|
break;
|
|
}
|
|
if (type == 477 && (double) rCurrentNPC.velocity.Length() > 9.0)
|
|
{
|
|
for (int index33 = 1; index33 < rCurrentNPC.oldPos.Length; ++index33)
|
|
{
|
|
ref Vector2 local = ref rCurrentNPC.oldPos[index33];
|
|
Microsoft.Xna.Framework.Color color56 = npcColor2;
|
|
color56.R = (byte) (0.5 * (double) color56.R * (double) (10 - index33) / 20.0);
|
|
color56.G = (byte) (0.5 * (double) color56.G * (double) (10 - index33) / 20.0);
|
|
color56.B = (byte) (0.5 * (double) color56.B * (double) (10 - index33) / 20.0);
|
|
color56.A = (byte) (0.5 * (double) color56.A * (double) (10 - index33) / 20.0);
|
|
Microsoft.Xna.Framework.Rectangle frame8 = rCurrentNPC.frame;
|
|
int num207 = TextureAssets.Npc[type].Height() / Main.npcFrameCount[type];
|
|
frame8.Y -= num207 * index33;
|
|
while (frame8.Y < 0)
|
|
frame8.Y += num207 * Main.npcFrameCount[type];
|
|
mySpriteBatch.Draw(TextureAssets.Npc[type].Value, new Vector2((float) ((double) rCurrentNPC.oldPos[index33].X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.oldPos[index33].Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight), new Microsoft.Xna.Framework.Rectangle?(frame8), color56, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
if (type == 479 && (double) rCurrentNPC.velocity.Length() > 6.5)
|
|
{
|
|
for (int index34 = 1; index34 < rCurrentNPC.oldPos.Length; ++index34)
|
|
{
|
|
ref Vector2 local = ref rCurrentNPC.oldPos[index34];
|
|
Microsoft.Xna.Framework.Color color57 = npcColor2;
|
|
color57.R = (byte) (0.5 * (double) color57.R * (double) (10 - index34) / 20.0);
|
|
color57.G = (byte) (0.5 * (double) color57.G * (double) (10 - index34) / 20.0);
|
|
color57.B = (byte) (0.5 * (double) color57.B * (double) (10 - index34) / 20.0);
|
|
color57.A = (byte) (0.5 * (double) color57.A * (double) (10 - index34) / 20.0);
|
|
Microsoft.Xna.Framework.Rectangle frame9 = rCurrentNPC.frame;
|
|
int num208 = TextureAssets.Npc[type].Height() / Main.npcFrameCount[type];
|
|
frame9.Y -= num208 * index34;
|
|
while (frame9.Y < 0)
|
|
frame9.Y += num208 * Main.npcFrameCount[type];
|
|
mySpriteBatch.Draw(TextureAssets.Npc[type].Value, new Vector2((float) ((double) rCurrentNPC.oldPos[index34].X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.oldPos[index34].Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight), new Microsoft.Xna.Framework.Rectangle?(frame9), color57, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
}
|
|
}
|
|
else if (type == 472)
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[110].Value, new Vector2((float) ((double) rCurrentNPC.position.X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.position.Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color((int) byte.MaxValue - rCurrentNPC.alpha, (int) byte.MaxValue - rCurrentNPC.alpha, (int) byte.MaxValue - rCurrentNPC.alpha, 0), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
else if (rCurrentNPC.aiStyle == 87)
|
|
{
|
|
if ((int) rCurrentNPC.ai[0] == 4 || (double) rCurrentNPC.ai[0] == 5.0 || (double) rCurrentNPC.ai[0] == 6.0)
|
|
{
|
|
for (int index35 = 1; index35 < rCurrentNPC.oldPos.Length; ++index35)
|
|
{
|
|
ref Vector2 local = ref rCurrentNPC.oldPos[index35];
|
|
Microsoft.Xna.Framework.Color color58 = npcColor2;
|
|
color58.R = (byte) (0.5 * (double) color58.R * (double) (10 - index35) / 20.0);
|
|
color58.G = (byte) (0.5 * (double) color58.G * (double) (10 - index35) / 20.0);
|
|
color58.B = (byte) (0.5 * (double) color58.B * (double) (10 - index35) / 20.0);
|
|
color58.A = (byte) (0.5 * (double) color58.A * (double) (10 - index35) / 20.0);
|
|
mySpriteBatch.Draw(TextureAssets.Npc[type].Value, new Vector2((float) ((double) rCurrentNPC.oldPos[index35].X - (double) screenPos.X + (double) (rCurrentNPC.width / 2) - (double) TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) rCurrentNPC.oldPos[index35].Y - (double) screenPos.Y + (double) rCurrentNPC.height - (double) TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), color58, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (type)
|
|
{
|
|
case 50:
|
|
Texture2D texture2D32 = TextureAssets.Extra[39].Value;
|
|
Vector2 center5 = rCurrentNPC.Center;
|
|
float num209 = 0.0f;
|
|
switch (rCurrentNPC.frame.Y / (TextureAssets.Npc[type].Height() / Main.npcFrameCount[type]))
|
|
{
|
|
case 0:
|
|
num209 = 2f;
|
|
break;
|
|
case 1:
|
|
num209 = -6f;
|
|
break;
|
|
case 2:
|
|
num209 = 2f;
|
|
break;
|
|
case 3:
|
|
num209 = 10f;
|
|
break;
|
|
case 4:
|
|
num209 = 2f;
|
|
break;
|
|
case 5:
|
|
num209 = 0.0f;
|
|
break;
|
|
}
|
|
center5.Y += rCurrentNPC.gfxOffY - (70f - num209) * rCurrentNPC.scale;
|
|
mySpriteBatch.Draw(texture2D32, center5 - screenPos, new Microsoft.Xna.Framework.Rectangle?(), npcColor2, 0.0f, texture2D32.Size() / 2f, 1f, spriteEffects, 0.0f);
|
|
break;
|
|
case 405:
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[141].Value, rCurrentNPC.Bottom - screenPos + new Vector2((float) ((double) -TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) -TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color(128 - rCurrentNPC.alpha / 2, 128 - rCurrentNPC.alpha / 2, 128 - rCurrentNPC.alpha / 2, 0), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
case 406:
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[142].Value, rCurrentNPC.Bottom - screenPos + new Vector2((float) ((double) -TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) -TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color(128 - rCurrentNPC.alpha / 2, 128 - rCurrentNPC.alpha / 2, 128 - rCurrentNPC.alpha / 2, 0), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
case 407:
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[139].Value, rCurrentNPC.Bottom - screenPos + new Vector2((float) ((double) -TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) -TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color((int) byte.MaxValue - rCurrentNPC.alpha, (int) byte.MaxValue - rCurrentNPC.alpha, (int) byte.MaxValue - rCurrentNPC.alpha, (int) byte.MaxValue - rCurrentNPC.alpha), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
case 409:
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[138].Value, rCurrentNPC.Bottom - screenPos + new Vector2((float) ((double) -TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) -TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color((int) byte.MaxValue - rCurrentNPC.alpha, (int) byte.MaxValue - rCurrentNPC.alpha, (int) byte.MaxValue - rCurrentNPC.alpha, (int) byte.MaxValue - rCurrentNPC.alpha), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
case 410:
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[137].Value, rCurrentNPC.Bottom - screenPos + new Vector2((float) ((double) -TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) -TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color((int) byte.MaxValue - rCurrentNPC.alpha, (int) byte.MaxValue - rCurrentNPC.alpha, (int) byte.MaxValue - rCurrentNPC.alpha, (int) byte.MaxValue - rCurrentNPC.alpha), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
case 411:
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[136].Value, rCurrentNPC.Bottom - screenPos + new Vector2((float) ((double) -TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) -TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color(128 - rCurrentNPC.alpha / 2, 128 - rCurrentNPC.alpha / 2, 128 - rCurrentNPC.alpha / 2, 0), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
case 418:
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[161].Value, rCurrentNPC.Bottom - screenPos + new Vector2((float) ((double) -TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) -TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color((int) byte.MaxValue - rCurrentNPC.alpha, (int) byte.MaxValue - rCurrentNPC.alpha, (int) byte.MaxValue - rCurrentNPC.alpha, (int) byte.MaxValue - rCurrentNPC.alpha), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
vector3 = rCurrentNPC.GetAlpha(npcColor2).ToVector3() - new Vector3(0.5f);
|
|
float num210 = (float) (0.25 + (double) vector3.Length() * 0.25);
|
|
for (int index36 = 0; index36 < 4; ++index36)
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[161].Value, rCurrentNPC.Bottom - screenPos + new Vector2((float) ((double) -TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) -TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + rCurrentNPC.gfxOffY) + rCurrentNPC.velocity.RotatedBy((double) index36 * 1.57079637050629) * num210, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color(64, 64, 64, 0), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
case 420:
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[147].Value, rCurrentNPC.Bottom - screenPos + new Vector2((float) ((double) -TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) -TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color(128 - rCurrentNPC.alpha / 2, 128 - rCurrentNPC.alpha / 2, 128 - rCurrentNPC.alpha / 2, 0), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
case 421:
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[146].Value, rCurrentNPC.Bottom - screenPos + new Vector2((float) ((double) -TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) -TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color(128 - rCurrentNPC.alpha / 2, 128 - rCurrentNPC.alpha / 2, 128 - rCurrentNPC.alpha / 2, 0), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
case 423:
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[145].Value, rCurrentNPC.Bottom - screenPos + new Vector2((float) ((double) -TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) -TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color(128 - rCurrentNPC.alpha / 2, 128 - rCurrentNPC.alpha / 2, 128 - rCurrentNPC.alpha / 2, 0), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
case 424:
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[144].Value, rCurrentNPC.Bottom - screenPos + new Vector2((float) ((double) -TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) -TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color(128 - rCurrentNPC.alpha / 2, 128 - rCurrentNPC.alpha / 2, 128 - rCurrentNPC.alpha / 2, 0), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
case 425:
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[150].Value, rCurrentNPC.Bottom - screenPos + new Vector2((float) ((double) -TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) -TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color(128 - rCurrentNPC.alpha / 2, 128 - rCurrentNPC.alpha / 2, 128 - rCurrentNPC.alpha / 2, 0), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
case 429:
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[151].Value, rCurrentNPC.Bottom - screenPos + new Vector2((float) ((double) -TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) -TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color(128 - rCurrentNPC.alpha / 2, 128 - rCurrentNPC.alpha / 2, 128 - rCurrentNPC.alpha / 2, 0), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
default:
|
|
if (type >= 412 && type <= 414)
|
|
{
|
|
Microsoft.Xna.Framework.Color color59 = new Microsoft.Xna.Framework.Color((int) byte.MaxValue - rCurrentNPC.alpha, (int) byte.MaxValue - rCurrentNPC.alpha, (int) byte.MaxValue - rCurrentNPC.alpha, 0);
|
|
int index37 = 157 + type - 412;
|
|
if (type == 414 && (double) rCurrentNPC.localAI[2] != 0.0)
|
|
{
|
|
int num211 = (int) rCurrentNPC.localAI[2];
|
|
if ((double) rCurrentNPC.localAI[2] < 0.0)
|
|
num211 = 128 + (int) rCurrentNPC.localAI[2];
|
|
int num212 = (int) byte.MaxValue - num211;
|
|
color59 = new Microsoft.Xna.Framework.Color(num212, num211, num211, num212);
|
|
}
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[index37].Value, rCurrentNPC.Bottom - screenPos + new Vector2((float) ((double) -TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) -TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), color59, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
}
|
|
switch (type)
|
|
{
|
|
case 160:
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[166].Value, rCurrentNPC.Bottom - screenPos + new Vector2((float) ((double) -TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) -TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color(128 - rCurrentNPC.alpha / 2, 128 - rCurrentNPC.alpha / 2, 128 - rCurrentNPC.alpha / 2, 0), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
case 209:
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[167].Value, rCurrentNPC.Bottom - screenPos + new Vector2((float) ((double) -TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) -TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color(128 - rCurrentNPC.alpha / 2, 128 - rCurrentNPC.alpha / 2, 128 - rCurrentNPC.alpha / 2, 0), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
case 315:
|
|
float num213 = 2f;
|
|
for (int index38 = 0; index38 < 4; ++index38)
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[(int) byte.MaxValue].Value, rCurrentNPC.Bottom - screenPos + new Vector2((float) ((double) -TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) -TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + rCurrentNPC.gfxOffY) + Vector2.UnitX.RotatedBy((double) index38 * 1.57079637050629) * num213, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color(64, 64, 64, 0), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[(int) byte.MaxValue].Value, rCurrentNPC.Bottom - screenPos + new Vector2((float) ((double) -TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) -TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color(200, 200, 200, 200), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
case 344:
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[253].Value, rCurrentNPC.Bottom - screenPos + new Vector2((float) ((double) -TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) -TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color(200, 200, 200, 100) * 0.5f, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
case 346:
|
|
float num214 = 4f;
|
|
for (int index39 = 0; index39 < 4; ++index39)
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[254].Value, rCurrentNPC.Bottom - screenPos + new Vector2((float) ((double) -TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) -TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + rCurrentNPC.gfxOffY) + Vector2.UnitX.RotatedBy((double) index39 * 1.57079637050629) * num214, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color(64, 64, 64, 0), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[254].Value, rCurrentNPC.Bottom - screenPos + new Vector2((float) ((double) -TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) -TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color(200, 200, 200, 100), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
case 415:
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[155].Value, rCurrentNPC.Bottom - screenPos + new Vector2((float) ((double) -TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) -TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color((int) byte.MaxValue - rCurrentNPC.alpha, (int) byte.MaxValue - rCurrentNPC.alpha, (int) byte.MaxValue - rCurrentNPC.alpha, (int) byte.MaxValue - rCurrentNPC.alpha), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
vector3 = rCurrentNPC.GetAlpha(npcColor2).ToVector3() - new Vector3(0.5f);
|
|
float num215 = (float) (0.5 + (double) vector3.Length() * 0.5);
|
|
for (int index40 = 0; index40 < 4; ++index40)
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[155].Value, rCurrentNPC.Bottom - screenPos + new Vector2((float) ((double) -TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) -TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + rCurrentNPC.gfxOffY) + rCurrentNPC.velocity.RotatedBy((double) index40 * 1.57079637050629) * num215, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color(64, 64, 64, 0), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
case 417:
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[160].Value, rCurrentNPC.Bottom - screenPos + new Vector2((float) ((double) -TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) -TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color((int) byte.MaxValue - rCurrentNPC.alpha, (int) byte.MaxValue - rCurrentNPC.alpha, (int) byte.MaxValue - rCurrentNPC.alpha, (int) byte.MaxValue - rCurrentNPC.alpha), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
vector3 = rCurrentNPC.GetAlpha(npcColor2).ToVector3() - new Vector3(0.5f);
|
|
float num216 = (float) (0.25 + (double) vector3.Length() * 0.25);
|
|
for (int index41 = 0; index41 < 4; ++index41)
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[160].Value, rCurrentNPC.Bottom - screenPos + new Vector2((float) ((double) -TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) -TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + rCurrentNPC.gfxOffY) + rCurrentNPC.velocity.RotatedBy((double) index41 * 1.57079637050629) * num216, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color(64, 64, 64, 0), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
case 419:
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[154].Value, rCurrentNPC.Bottom - screenPos + new Vector2((float) ((double) -TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) -TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color((int) byte.MaxValue - rCurrentNPC.alpha, (int) byte.MaxValue - rCurrentNPC.alpha, (int) byte.MaxValue - rCurrentNPC.alpha, (int) byte.MaxValue - rCurrentNPC.alpha), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
if ((double) rCurrentNPC.ai[2] >= -6.0)
|
|
{
|
|
vector3 = rCurrentNPC.GetAlpha(npcColor2).ToVector3() - new Vector3(0.5f);
|
|
float num217 = (float) (0.5 + (double) vector3.Length() * 0.5);
|
|
for (int index42 = 0; index42 < 4; ++index42)
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[154].Value, rCurrentNPC.Bottom - screenPos + new Vector2((float) ((double) -TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) -TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + rCurrentNPC.gfxOffY) + rCurrentNPC.velocity.RotatedBy((double) index42 * 1.57079637050629) * num217, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color(64, 64, 64, 0), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
}
|
|
float num218 = 4f;
|
|
for (int index43 = 0; index43 < 4; ++index43)
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[154].Value, rCurrentNPC.Bottom - screenPos + new Vector2((float) ((double) -TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) -TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + rCurrentNPC.gfxOffY) + Vector2.UnitX.RotatedBy((double) index43 * 1.57079637050629) * num218, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color(64, 64, 64, 0), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
case 516:
|
|
mySpriteBatch.Draw(TextureAssets.Npc[type].Value, rCurrentNPC.Bottom - screenPos + new Vector2((float) ((double) -TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) -TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color((int) byte.MaxValue - rCurrentNPC.alpha, (int) byte.MaxValue - rCurrentNPC.alpha, (int) byte.MaxValue - rCurrentNPC.alpha, (int) byte.MaxValue - rCurrentNPC.alpha), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
vector3 = rCurrentNPC.GetAlpha(npcColor2).ToVector3() - new Vector3(0.5f);
|
|
float num219 = (float) (0.5 + (double) vector3.Length() * 0.5);
|
|
for (int index44 = 0; index44 < 4; ++index44)
|
|
mySpriteBatch.Draw(TextureAssets.Npc[type].Value, rCurrentNPC.Bottom - screenPos + new Vector2((float) ((double) -TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) -TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + rCurrentNPC.gfxOffY) + rCurrentNPC.velocity.RotatedBy((double) index44 * 1.57079637050629) * num219, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color(64, 64, 64, 0), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
case 518:
|
|
Vector2 vector2_42 = new Vector2(-10f, 0.0f);
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[163].Value, rCurrentNPC.Bottom - screenPos + new Vector2((float) ((double) -TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) -TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color((int) byte.MaxValue - rCurrentNPC.alpha, (int) byte.MaxValue - rCurrentNPC.alpha, (int) byte.MaxValue - rCurrentNPC.alpha, (int) byte.MaxValue - rCurrentNPC.alpha), rCurrentNPC.rotation, halfSize + vector2_42, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
vector3 = rCurrentNPC.GetAlpha(npcColor2).ToVector3() - new Vector3(0.5f);
|
|
float num220 = (float) (0.5 + (double) vector3.Length() * 0.5);
|
|
for (int index45 = 0; index45 < 4; ++index45)
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[163].Value, rCurrentNPC.Bottom - screenPos + new Vector2((float) ((double) -TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) -TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + rCurrentNPC.gfxOffY) + rCurrentNPC.velocity.RotatedBy((double) index45 * 1.57079637050629) * num220, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color(64, 64, 64, 0), rCurrentNPC.rotation, halfSize + vector2_42, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
case 525:
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[169].Value, rCurrentNPC.Bottom - screenPos + new Vector2((float) ((double) -TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) -TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color(200, 200, 200, 100), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
case 526:
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[170].Value, rCurrentNPC.Bottom - screenPos + new Vector2((float) ((double) -TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) -TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color(200, 200, 200, 100), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
case 527:
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[171].Value, rCurrentNPC.Bottom - screenPos + new Vector2((float) ((double) -TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) -TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color(200, 200, 200, 100), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
case 533:
|
|
mySpriteBatch.Draw(TextureAssets.GlowMask[172].Value, rCurrentNPC.Bottom - screenPos + new Vector2((float) ((double) -TextureAssets.Npc[type].Width() * (double) rCurrentNPC.scale / 2.0 + (double) halfSize.X * (double) rCurrentNPC.scale), (float) ((double) -TextureAssets.Npc[type].Height() * (double) rCurrentNPC.scale / (double) Main.npcFrameCount[type] + 4.0 + (double) halfSize.Y * (double) rCurrentNPC.scale) + addHeight + rCurrentNPC.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 100), rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, spriteEffects, 0.0f);
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
if (rCurrentNPC.aiStyle != 7)
|
|
return;
|
|
this.DrawNPCExtras(rCurrentNPC, false, addHeight, addY, npcColor2, halfSize, spriteEffects, screenPos);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private static void DrawNPCDirect_HallowBoss(
|
|
SpriteBatch mySpriteBatch,
|
|
NPC rCurrentNPC,
|
|
ref Vector2 screenPos,
|
|
int typeCache,
|
|
ref Microsoft.Xna.Framework.Color npcColor,
|
|
ref Vector2 halfSize,
|
|
SpriteEffects npcSpriteEffect)
|
|
{
|
|
Texture2D texture1 = TextureAssets.Npc[typeCache].Value;
|
|
Vector2 position1 = rCurrentNPC.Center - screenPos;
|
|
bool flag = rCurrentNPC.AI_120_HallowBoss_IsInPhase2();
|
|
int num1 = (int) rCurrentNPC.ai[0];
|
|
Texture2D texture2D1 = TextureAssets.Extra[159].Value;
|
|
Microsoft.Xna.Framework.Rectangle r1 = texture2D1.Frame(verticalFrames: 11, frameY: ((int) ((double) rCurrentNPC.localAI[0] / 4.0) % 11));
|
|
Microsoft.Xna.Framework.Color color1 = rCurrentNPC.GetAlpha(npcColor);
|
|
Texture2D texture2D2 = TextureAssets.Extra[158].Value;
|
|
Texture2D texture2D3 = TextureAssets.Extra[160].Value;
|
|
Texture2D texture2 = TextureAssets.Extra[157].Value;
|
|
int armFrame_Count;
|
|
int armFrameToUseLeft;
|
|
int armFrameToUseRight;
|
|
Main.DrawNPCDirect_GetHallowBossArmFrame(rCurrentNPC, out armFrame_Count, out armFrameToUseLeft, out armFrameToUseRight);
|
|
Microsoft.Xna.Framework.Rectangle r2 = texture2D2.Frame(verticalFrames: armFrame_Count, frameY: armFrameToUseLeft);
|
|
Microsoft.Xna.Framework.Rectangle r3 = texture2D3.Frame(verticalFrames: armFrame_Count, frameY: armFrameToUseRight);
|
|
Vector2 origin1 = r2.Size() / 2f;
|
|
Vector2 origin2 = r3.Size() / 2f;
|
|
int num2 = 0;
|
|
int num3 = 0;
|
|
if (armFrameToUseLeft == 5)
|
|
num2 = 1;
|
|
if (armFrameToUseRight == 5)
|
|
num3 = 1;
|
|
float num4 = 1f;
|
|
int num5 = 0;
|
|
int num6 = 0;
|
|
float amount1 = 0.0f;
|
|
float num7 = 0.0f;
|
|
float num8 = 0.0f;
|
|
if (num1 == 8 || num1 == 9)
|
|
{
|
|
amount1 = Utils.GetLerpValue(0.0f, 30f, rCurrentNPC.ai[1], true) * Utils.GetLerpValue(90f, 30f, rCurrentNPC.ai[1], true);
|
|
num7 = Utils.GetLerpValue(0.0f, 30f, rCurrentNPC.ai[1], true) * Utils.GetLerpValue(90f, 70f, rCurrentNPC.ai[1], true);
|
|
num8 = Utils.GetLerpValue(0.0f, 15f, rCurrentNPC.ai[1], true) * Utils.GetLerpValue(45f, 30f, rCurrentNPC.ai[1], true);
|
|
color1 = Microsoft.Xna.Framework.Color.Lerp(color1, Microsoft.Xna.Framework.Color.White, amount1);
|
|
num4 *= 1f - num8;
|
|
num5 = 4;
|
|
num6 = 3;
|
|
}
|
|
if (num1 == 10)
|
|
{
|
|
amount1 = Utils.GetLerpValue(30f, 90f, rCurrentNPC.ai[1], true) * Utils.GetLerpValue(165f, 90f, rCurrentNPC.ai[1], true);
|
|
num7 = Utils.GetLerpValue(0.0f, 60f, rCurrentNPC.ai[1], true) * Utils.GetLerpValue(180f, 120f, rCurrentNPC.ai[1], true);
|
|
num8 = Utils.GetLerpValue(0.0f, 60f, rCurrentNPC.ai[1], true) * Utils.GetLerpValue(180f, 120f, rCurrentNPC.ai[1], true);
|
|
color1 = Microsoft.Xna.Framework.Color.Lerp(color1, Microsoft.Xna.Framework.Color.White, amount1);
|
|
num4 *= 1f - num8;
|
|
num6 = 4;
|
|
}
|
|
if (num6 + num5 > 0)
|
|
{
|
|
for (int index1 = -num6; index1 <= num6 + num5; ++index1)
|
|
{
|
|
if (index1 != 0)
|
|
{
|
|
Microsoft.Xna.Framework.Color color2 = Microsoft.Xna.Framework.Color.White;
|
|
Vector2 position2 = position1;
|
|
if (num1 == 8 || num1 == 9)
|
|
{
|
|
double num9 = (double) ((float) index1 + 5f) / 10.0;
|
|
float num10 = 200f;
|
|
float num11 = (float) Main.timeForVisualEffects / 60f;
|
|
Vector3 vector3 = Vector3.Transform(Vector3.Forward, Matrix.CreateRotationX((float) (((double) num11 - 0.300000011920929 + (double) index1 * 0.100000001490116) * 0.699999988079071 * 6.28318548202515)) * Matrix.CreateRotationY((float) (((double) num11 - 0.800000011920929 + (double) index1 * 0.300000011920929) * 0.699999988079071 * 6.28318548202515)) * Matrix.CreateRotationZ((float) (((double) num11 + (double) index1 * 0.5) * 0.100000001490116 * 6.28318548202515)));
|
|
float num12 = num10 + Utils.GetLerpValue(-1f, 1f, vector3.Z, true) * 150f;
|
|
Vector2 spinningpoint = new Vector2(vector3.X, vector3.Y) * num12 * amount1;
|
|
double num13 = (double) MathHelper.Lerp(0.5f, 1f, Utils.GetLerpValue(90f, 0.0f, rCurrentNPC.ai[1], true));
|
|
color2 = Main.hslToRgb((float) num9, 1f, (float) num13) * 0.8f * num7;
|
|
color2.A /= (byte) 3;
|
|
position2 += spinningpoint.RotatedBy((double) rCurrentNPC.ai[1] / 180.0 * 6.28318548202515);
|
|
}
|
|
if (num1 == 10)
|
|
{
|
|
if ((double) rCurrentNPC.ai[1] >= 90.0)
|
|
{
|
|
float num14 = (float) Main.timeForVisualEffects / 90f;
|
|
int num15 = index1;
|
|
if (num15 < 0)
|
|
++num15;
|
|
Vector2 rotationVector2 = ((float) (((double) num15 + 0.5) * 0.785398185253143 + 6.28318548202515 * (double) num14)).ToRotationVector2();
|
|
position2 += rotationVector2 * new Vector2(600f * amount1, 150f * amount1);
|
|
}
|
|
else
|
|
position2 += 200f * new Vector2((float) index1, 0.0f) * amount1;
|
|
color2 = Microsoft.Xna.Framework.Color.White * 0.8f * num7 * num4;
|
|
color2.A /= (byte) 3;
|
|
}
|
|
if (index1 > num6)
|
|
{
|
|
float lerpValue = Utils.GetLerpValue(30f, 70f, rCurrentNPC.ai[1], true);
|
|
if ((double) lerpValue != 0.0)
|
|
{
|
|
position2 = position1 + rCurrentNPC.velocity * -3f * ((float) index1 - 4f) * lerpValue;
|
|
color2 *= 1f - num8;
|
|
}
|
|
else
|
|
continue;
|
|
}
|
|
mySpriteBatch.Draw(texture2D1, position2, new Microsoft.Xna.Framework.Rectangle?(r1), color2, rCurrentNPC.rotation, r1.Size() / 2f, rCurrentNPC.scale * 2f, npcSpriteEffect, 0.0f);
|
|
mySpriteBatch.Draw(texture2, position2, new Microsoft.Xna.Framework.Rectangle?(r1), color2, rCurrentNPC.rotation, r1.Size() / 2f, rCurrentNPC.scale * 2f, npcSpriteEffect, 0.0f);
|
|
if (flag)
|
|
{
|
|
Texture2D texture2D4 = TextureAssets.Extra[187].Value;
|
|
Microsoft.Xna.Framework.Rectangle rectangle = texture2D4.Frame(verticalFrames: 8, frameY: ((int) ((double) rCurrentNPC.localAI[0] / 4.0) % 8));
|
|
mySpriteBatch.Draw(texture2D4, position2, new Microsoft.Xna.Framework.Rectangle?(rectangle), color2, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, npcSpriteEffect, 0.0f);
|
|
}
|
|
mySpriteBatch.Draw(texture1, position2, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), color2, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, npcSpriteEffect, 0.0f);
|
|
for (int index2 = 0; index2 < 2; ++index2)
|
|
{
|
|
if (index2 == num2)
|
|
mySpriteBatch.Draw(texture2D2, position2, new Microsoft.Xna.Framework.Rectangle?(r2), color2, rCurrentNPC.rotation, origin1, rCurrentNPC.scale, npcSpriteEffect, 0.0f);
|
|
if (index2 == num3)
|
|
mySpriteBatch.Draw(texture2D3, position2, new Microsoft.Xna.Framework.Rectangle?(r3), color2, rCurrentNPC.rotation, origin2, rCurrentNPC.scale, npcSpriteEffect, 0.0f);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
Microsoft.Xna.Framework.Color color3 = color1 * num4;
|
|
mySpriteBatch.Draw(texture2D1, position1, new Microsoft.Xna.Framework.Rectangle?(r1), color3, rCurrentNPC.rotation, r1.Size() / 2f, rCurrentNPC.scale * 2f, npcSpriteEffect, 0.0f);
|
|
if (!rCurrentNPC.IsABestiaryIconDummy)
|
|
{
|
|
mySpriteBatch.End();
|
|
mySpriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, SamplerState.PointClamp, DepthStencilState.Default, RasterizerState.CullNone, (Effect) null, Main.Transform);
|
|
}
|
|
DrawData drawData = new DrawData(texture2, position1, new Microsoft.Xna.Framework.Rectangle?(r1), color3, rCurrentNPC.rotation, r1.Size() / 2f, rCurrentNPC.scale * 2f, npcSpriteEffect, 0);
|
|
GameShaders.Misc["HallowBoss"].Apply(new DrawData?(drawData));
|
|
drawData.Draw(mySpriteBatch);
|
|
Main.pixelShader.CurrentTechnique.Passes[0].Apply();
|
|
if (!rCurrentNPC.IsABestiaryIconDummy)
|
|
{
|
|
mySpriteBatch.End();
|
|
mySpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, Main.DefaultSamplerState, DepthStencilState.None, Main.Rasterizer, (Effect) null, Main.Transform);
|
|
}
|
|
float amount2 = (float) (Math.Sin((double) Main.GlobalTimeWrappedHourly * 6.28318548202515 * 0.5) * 0.5 + 0.5);
|
|
Microsoft.Xna.Framework.Color color4 = Main.hslToRgb((float) (((double) amount2 * 0.0799999982118607 + 0.600000023841858) % 1.0), 1f, 0.5f);
|
|
color4.A = (byte) 0;
|
|
color4 *= 0.6f;
|
|
if (NPC.ShouldEmpressBeEnraged())
|
|
{
|
|
color4 = Main.OurFavoriteColor;
|
|
color4.A = (byte) 0;
|
|
color4 *= 0.3f;
|
|
}
|
|
color4 *= num4 * rCurrentNPC.Opacity;
|
|
if (flag)
|
|
{
|
|
Texture2D texture2D5 = TextureAssets.Extra[187].Value;
|
|
Microsoft.Xna.Framework.Rectangle rectangle = texture2D5.Frame(verticalFrames: 8, frameY: ((int) ((double) rCurrentNPC.localAI[0] / 4.0) % 8));
|
|
mySpriteBatch.Draw(texture2D5, position1, new Microsoft.Xna.Framework.Rectangle?(rectangle), color3, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, npcSpriteEffect, 0.0f);
|
|
for (float num16 = 0.0f; (double) num16 < 1.0; num16 += 0.25f)
|
|
{
|
|
Vector2 vector2 = rCurrentNPC.rotation.ToRotationVector2().RotatedBy((double) num16 * 6.28318548202515 + 0.785398185253143) * MathHelper.Lerp(2f, 8f, amount2);
|
|
mySpriteBatch.Draw(texture2D5, position1 + vector2, new Microsoft.Xna.Framework.Rectangle?(rectangle), color4, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, npcSpriteEffect, 0.0f);
|
|
}
|
|
}
|
|
mySpriteBatch.Draw(texture1, position1, new Microsoft.Xna.Framework.Rectangle?(rCurrentNPC.frame), color3, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, npcSpriteEffect, 0.0f);
|
|
if (flag)
|
|
{
|
|
Texture2D texture3 = TextureAssets.Extra[188].Value;
|
|
for (float num17 = 0.0f; (double) num17 < 1.0; num17 += 0.25f)
|
|
{
|
|
Vector2 vector2 = rCurrentNPC.rotation.ToRotationVector2().RotatedBy((double) num17 * 6.28318548202515 + 0.785398185253143) * MathHelper.Lerp(2f, 8f, amount2);
|
|
mySpriteBatch.Draw(texture3, position1 + vector2, new Microsoft.Xna.Framework.Rectangle?(), color4, rCurrentNPC.rotation, halfSize, rCurrentNPC.scale, npcSpriteEffect, 0.0f);
|
|
}
|
|
}
|
|
for (int index = 0; index < 2; ++index)
|
|
{
|
|
if (index == num2)
|
|
mySpriteBatch.Draw(texture2D2, position1, new Microsoft.Xna.Framework.Rectangle?(r2), color3, rCurrentNPC.rotation, origin1, rCurrentNPC.scale, npcSpriteEffect, 0.0f);
|
|
if (index == num3)
|
|
mySpriteBatch.Draw(texture2D3, position1, new Microsoft.Xna.Framework.Rectangle?(r3), color3, rCurrentNPC.rotation, origin2, rCurrentNPC.scale, npcSpriteEffect, 0.0f);
|
|
}
|
|
}
|
|
|
|
private static void DrawNPCDirect_GetHallowBossArmFrame(
|
|
NPC rCurrentNPC,
|
|
out int armFrame_Count,
|
|
out int armFrameToUseLeft,
|
|
out int armFrameToUseRight)
|
|
{
|
|
int num1 = 0;
|
|
int num2 = 1;
|
|
int num3 = 2;
|
|
int num4 = 3;
|
|
int num5 = 4;
|
|
int num6 = 5;
|
|
int num7 = 6;
|
|
armFrame_Count = 7;
|
|
armFrameToUseLeft = num1;
|
|
armFrameToUseRight = num1;
|
|
float num8 = rCurrentNPC.ai[1];
|
|
switch ((int) rCurrentNPC.ai[0])
|
|
{
|
|
case 0:
|
|
int num9 = (double) num8 >= 106.0 ? ((double) num8 >= 110.0 ? num1 : num3) : num2;
|
|
armFrameToUseLeft = num9;
|
|
armFrameToUseRight = num9;
|
|
break;
|
|
case 2:
|
|
case 11:
|
|
int num10 = (double) num8 >= 5.0 ? ((double) num8 >= 65.0 ? num3 : num4) : num3;
|
|
armFrameToUseLeft = num10;
|
|
break;
|
|
case 4:
|
|
case 10:
|
|
int num11 = (double) num8 >= 6.0 ? ((double) num8 >= 54.0 ? num3 : num4) : num3;
|
|
armFrameToUseLeft = num11;
|
|
armFrameToUseRight = num11;
|
|
break;
|
|
case 5:
|
|
int num12 = (double) num8 >= 6.0 ? ((double) num8 >= 54.0 ? num3 : num4) : num3;
|
|
armFrameToUseRight = num12;
|
|
break;
|
|
case 6:
|
|
int num13 = (double) num8 >= 6.0 ? ((double) num8 >= 174.0 ? ((double) num8 >= 180.0 ? num1 : num3) : num4) : num3;
|
|
armFrameToUseLeft = num13;
|
|
armFrameToUseRight = num13;
|
|
break;
|
|
case 7:
|
|
bool isExpertMode = Main.GameModeInfo.IsExpertMode;
|
|
int num14 = isExpertMode ? 40 : 60;
|
|
int num15 = 0;
|
|
int num16 = 5;
|
|
if ((double) num8 < (double) (num15 + num16))
|
|
{
|
|
armFrameToUseLeft = num3;
|
|
break;
|
|
}
|
|
int num17 = num15 + num16;
|
|
if ((double) num8 < (double) (num17 + num14 - num16))
|
|
{
|
|
armFrameToUseLeft = num4;
|
|
break;
|
|
}
|
|
int num18 = num17 + (num14 - num16);
|
|
if ((double) num8 < (double) (num18 + num16))
|
|
{
|
|
armFrameToUseLeft = num4;
|
|
armFrameToUseRight = num3;
|
|
break;
|
|
}
|
|
int num19 = num18 + num16;
|
|
if ((double) num8 < (double) (num19 + num14 - num16))
|
|
{
|
|
armFrameToUseLeft = num4;
|
|
armFrameToUseRight = num4;
|
|
break;
|
|
}
|
|
int num20 = num19 + (num14 - num16);
|
|
if ((double) num8 < (double) (num20 + num14))
|
|
{
|
|
armFrameToUseLeft = num5;
|
|
armFrameToUseRight = num4;
|
|
break;
|
|
}
|
|
int num21 = num20 + num14;
|
|
if ((double) num8 < (double) (num21 + num14))
|
|
{
|
|
armFrameToUseLeft = num5;
|
|
armFrameToUseRight = num5;
|
|
break;
|
|
}
|
|
int num22 = num21 + num14;
|
|
if (isExpertMode)
|
|
{
|
|
if ((double) num8 < (double) (num22 + num16))
|
|
{
|
|
armFrameToUseLeft = num4;
|
|
armFrameToUseRight = num5;
|
|
break;
|
|
}
|
|
int num23 = num22 + num16;
|
|
if ((double) num8 < (double) (num23 + num14 - num16))
|
|
{
|
|
armFrameToUseLeft = num2;
|
|
armFrameToUseRight = num5;
|
|
break;
|
|
}
|
|
int num24 = num23 + (num14 - num16);
|
|
if ((double) num8 < (double) (num24 + num16))
|
|
{
|
|
armFrameToUseLeft = num2;
|
|
armFrameToUseRight = num4;
|
|
break;
|
|
}
|
|
int num25 = num24 + num16;
|
|
if ((double) num8 < (double) (num25 + num14 - num16))
|
|
{
|
|
armFrameToUseLeft = num2;
|
|
armFrameToUseRight = num2;
|
|
break;
|
|
}
|
|
num22 = num25 + (num14 - num16);
|
|
}
|
|
if ((double) num8 < (double) num22)
|
|
break;
|
|
armFrameToUseLeft = num3;
|
|
armFrameToUseRight = num3;
|
|
break;
|
|
case 8:
|
|
case 9:
|
|
int num26 = (double) num8 >= 10.0 ? ((double) num8 >= 20.0 ? ((double) num8 >= 30.0 ? num6 : num3) : num4) : num3;
|
|
int num27 = num26;
|
|
int num28 = num26;
|
|
int num29 = (int) rCurrentNPC.ai[3];
|
|
int num30 = -1;
|
|
if ((double) num8 < 30.0)
|
|
{
|
|
if (num29 == -1 * num30)
|
|
num28 = num2;
|
|
if (num29 == num30)
|
|
num27 = num2;
|
|
}
|
|
int num31 = num6;
|
|
int num32 = num7;
|
|
if (num29 == num30 && num28 == num31)
|
|
num28 = num32;
|
|
if (num29 == -1 * num30 && num27 == num31)
|
|
num27 = num32;
|
|
armFrameToUseLeft = num28;
|
|
armFrameToUseRight = num27;
|
|
break;
|
|
}
|
|
}
|
|
|
|
private static void DrawNPC_SlimeItem(
|
|
NPC rCurrentNPC,
|
|
int typeCache,
|
|
Microsoft.Xna.Framework.Color npcColor,
|
|
float addedRotation)
|
|
{
|
|
int i = (int) rCurrentNPC.ai[1];
|
|
float scale = 1f;
|
|
float num1 = 22f * rCurrentNPC.scale;
|
|
float num2 = 18f * rCurrentNPC.scale;
|
|
Main.instance.LoadItem(i);
|
|
float num3 = (float) TextureAssets.Item[i].Width();
|
|
float num4 = (float) TextureAssets.Item[i].Height();
|
|
int num5 = (int) rCurrentNPC.ai[0] == -999 ? 1 : 0;
|
|
if (num5 != 0)
|
|
{
|
|
num1 = 14f * rCurrentNPC.scale;
|
|
num2 = 14f * rCurrentNPC.scale;
|
|
}
|
|
if ((double) num3 > (double) num1)
|
|
{
|
|
scale *= num1 / num3;
|
|
num3 *= scale;
|
|
num4 *= scale;
|
|
}
|
|
if ((double) num4 > (double) num2)
|
|
{
|
|
scale *= num2 / num4;
|
|
num3 *= scale;
|
|
float num6 = num4 * scale;
|
|
}
|
|
float num7 = -1f;
|
|
float num8 = 1f;
|
|
int num9 = rCurrentNPC.frame.Y / (TextureAssets.Npc[typeCache].Height() / Main.npcFrameCount[typeCache]);
|
|
float num10 = num8 - (float) num9;
|
|
float num11 = num7 + (float) (num9 * 2);
|
|
float rotation = 0.2f - 0.3f * (float) num9;
|
|
if (num5 != 0)
|
|
{
|
|
rotation = 0.0f;
|
|
num10 -= 6f;
|
|
num11 -= num3 * addedRotation;
|
|
}
|
|
Main.spriteBatch.Draw(TextureAssets.Item[i].Value, new Vector2(rCurrentNPC.Center.X - Main.screenPosition.X + num11, rCurrentNPC.Center.Y - Main.screenPosition.Y + rCurrentNPC.gfxOffY + num10), new Microsoft.Xna.Framework.Rectangle?(), npcColor, rotation, new Vector2((float) (TextureAssets.Item[i].Width() / 2), (float) (TextureAssets.Item[i].Height() / 2)), scale, SpriteEffects.None, 0.0f);
|
|
}
|
|
|
|
protected void DrawNPCExtras(
|
|
NPC n,
|
|
bool beforeDraw,
|
|
float addHeight,
|
|
float addY,
|
|
Microsoft.Xna.Framework.Color npcColor,
|
|
Vector2 halfSize,
|
|
SpriteEffects npcSpriteEffect,
|
|
Vector2 screenPosition)
|
|
{
|
|
if (!beforeDraw && n.UsesPartyHat())
|
|
{
|
|
int index = n.frame.Y / n.frame.Height;
|
|
int[] npCsFramingGroup = NPCID.Sets.TownNPCsFramingGroups[NPCID.Sets.NPCFramingGroup[n.type]];
|
|
if (index >= npCsFramingGroup.Length)
|
|
index = 0;
|
|
Texture2D texture2D = TextureAssets.Extra[72].Value;
|
|
int num1 = 0;
|
|
switch (n.GetPartyHatColor())
|
|
{
|
|
case PartyHatColor.Pink:
|
|
num1 = 16;
|
|
break;
|
|
case PartyHatColor.Cyan:
|
|
num1 = 17;
|
|
break;
|
|
case PartyHatColor.Purple:
|
|
num1 = 18;
|
|
break;
|
|
case PartyHatColor.White:
|
|
num1 = 19;
|
|
break;
|
|
}
|
|
Microsoft.Xna.Framework.Rectangle r = texture2D.Frame(20, frameX: (num1 % 20));
|
|
r.Width -= 2;
|
|
r.Height -= 2;
|
|
int num2 = 0;
|
|
if (n.type == 637)
|
|
{
|
|
num2 = 6;
|
|
switch (index)
|
|
{
|
|
case 11:
|
|
case 12:
|
|
case 13:
|
|
case 14:
|
|
case 15:
|
|
num2 += 2;
|
|
break;
|
|
case 19:
|
|
case 22:
|
|
case 23:
|
|
case 24:
|
|
case 25:
|
|
case 26:
|
|
case 27:
|
|
num2 -= 2;
|
|
break;
|
|
}
|
|
}
|
|
if (n.type == 638)
|
|
num2 = 12;
|
|
if (n.type == 656)
|
|
{
|
|
num2 = 6;
|
|
switch (index)
|
|
{
|
|
case 1:
|
|
case 2:
|
|
case 3:
|
|
num2 -= 2;
|
|
break;
|
|
case 8:
|
|
num2 -= 2;
|
|
break;
|
|
case 18:
|
|
case 19:
|
|
case 20:
|
|
case 21:
|
|
case 22:
|
|
case 23:
|
|
case 24:
|
|
case 25:
|
|
num2 -= 4;
|
|
break;
|
|
}
|
|
}
|
|
Vector2 vector2 = n.Top + new Vector2((float) (-2 * n.spriteDirection), n.gfxOffY);
|
|
vector2.X += (float) (num2 * n.spriteDirection);
|
|
vector2.Y += (float) npCsFramingGroup[index];
|
|
vector2.Y += (float) NPCID.Sets.HatOffsetY[n.type];
|
|
int num3 = 0;
|
|
if ((double) n.ai[0] == 5.0)
|
|
{
|
|
num3 = -4;
|
|
if (n.type == 38)
|
|
num3 = -8;
|
|
if (n.type == 124)
|
|
num3 = -2;
|
|
if (n.type == 550)
|
|
num3 = -4;
|
|
if (n.type == 588)
|
|
num3 = -4;
|
|
if (n.type == 108 || n.type == 178)
|
|
num3 = -6;
|
|
if (n.type == 637)
|
|
num3 = -12;
|
|
}
|
|
vector2.Y += (float) num3;
|
|
if (n.type == 229 && (double) n.ai[0] == 12.0)
|
|
vector2.X -= (float) (n.spriteDirection * 4);
|
|
if (n.type == 550 && (double) n.ai[0] == 5.0)
|
|
vector2.X += (float) (n.spriteDirection * 7);
|
|
Vector2 origin = r.Size() - new Vector2((float) (r.Width / 2), 12f);
|
|
int num4 = 0;
|
|
switch (n.type)
|
|
{
|
|
case 17:
|
|
case 18:
|
|
case 19:
|
|
case 20:
|
|
case 22:
|
|
case 124:
|
|
case 229:
|
|
case 353:
|
|
case 633:
|
|
case 637:
|
|
case 638:
|
|
case 656:
|
|
num4 = -1;
|
|
break;
|
|
case 37:
|
|
case 38:
|
|
case 54:
|
|
case 107:
|
|
case 108:
|
|
case 160:
|
|
case 207:
|
|
case 209:
|
|
num4 = -3;
|
|
break;
|
|
case 178:
|
|
case 208:
|
|
case 369:
|
|
num4 = 1;
|
|
break;
|
|
case 227:
|
|
num4 = -4;
|
|
break;
|
|
case 228:
|
|
num4 = -2;
|
|
break;
|
|
case 550:
|
|
num4 = -4;
|
|
break;
|
|
case 588:
|
|
num4 = 0;
|
|
break;
|
|
}
|
|
vector2.X += (float) (num4 * n.spriteDirection);
|
|
vector2.X += (float) (4 * n.spriteDirection);
|
|
Main.spriteBatch.Draw(texture2D, new Vector2(vector2.X - screenPosition.X, vector2.Y - screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(r), npcColor * n.Opacity, 0.0f, origin, n.scale, npcSpriteEffect, 0.0f);
|
|
}
|
|
if (NPCID.Sets.AttackType[n.type] == 1 && (double) n.ai[0] == 12.0 && !beforeDraw)
|
|
{
|
|
if (n.type == 228 || n.type == 229 || n.type == 209)
|
|
return;
|
|
double num5 = (double) n.ai[2];
|
|
Vector2 vector2_1 = Main.OffsetsNPCOffhand[2];
|
|
if (n.spriteDirection == 1)
|
|
vector2_1.X *= -1f;
|
|
Vector2 vector2_2 = n.Bottom - vector2_1;
|
|
if (n.type == 22 && (double) n.ai[2] > -0.100000001490116)
|
|
vector2_2.Y += 4f;
|
|
if (n.type == 368 && Main.hardMode && (double) n.ai[2] > -0.100000001490116)
|
|
vector2_2.Y += 4f;
|
|
if (n.type == 368 && !Main.hardMode && (double) n.ai[2] < -0.100000001490116)
|
|
vector2_2.Y -= 8f;
|
|
float rotation = (float) (num5 * 1.57079637050629) * (float) n.spriteDirection;
|
|
float num6 = 1f;
|
|
int index = 0;
|
|
int num7 = 4;
|
|
if (n.type == 19)
|
|
{
|
|
index = Main.hardMode ? 98 : 95;
|
|
if (Main.hardMode)
|
|
{
|
|
vector2_2.X -= (float) (10 * n.direction);
|
|
vector2_2.Y += 4f;
|
|
}
|
|
}
|
|
else if (n.type == 22)
|
|
{
|
|
index = 39;
|
|
num7 = 18;
|
|
}
|
|
else if (n.type == 178)
|
|
index = 434;
|
|
else if (n.type == 227)
|
|
{
|
|
index = 3350;
|
|
num7 = 16;
|
|
num6 = 0.85f;
|
|
}
|
|
else if (n.type == 368)
|
|
{
|
|
index = Main.hardMode ? 2223 : 2269;
|
|
if (Main.hardMode)
|
|
{
|
|
num7 = 18;
|
|
}
|
|
else
|
|
{
|
|
if ((double) n.ai[2] < -0.100000001490116)
|
|
num7 = 28;
|
|
num6 = 0.75f;
|
|
}
|
|
}
|
|
Main.instance.LoadItem(index);
|
|
Texture2D texture = TextureAssets.Item[index].Value;
|
|
int num8 = (int) Main.DrawPlayerItemPos(1f, index).X - num7;
|
|
Vector2 origin = new Vector2((float) -num8, (float) (texture.Height / 2));
|
|
if (n.spriteDirection == -1)
|
|
origin = new Vector2((float) (texture.Width + num8), (float) (texture.Height / 2));
|
|
Main.spriteBatch.Draw(texture, new Vector2((float) (int) ((double) vector2_2.X - (double) screenPosition.X), (float) (int) ((double) vector2_2.Y - (double) screenPosition.Y)), new Microsoft.Xna.Framework.Rectangle?(), npcColor, rotation, origin, n.scale * num6, npcSpriteEffect ^ SpriteEffects.FlipHorizontally, 0.0f);
|
|
if (n.type == 22 && n.frame.Y / (TextureAssets.Npc[n.type].Height() / Main.npcFrameCount[n.type]) >= 21)
|
|
{
|
|
Texture2D texture2D = TextureAssets.Extra[52].Value;
|
|
Microsoft.Xna.Framework.Rectangle rectangle = texture2D.Frame(verticalFrames: 5, frameY: (n.frame.Y / (TextureAssets.Npc[n.type].Height() / Main.npcFrameCount[n.type]) - 21));
|
|
Main.spriteBatch.Draw(texture2D, new Vector2((float) ((double) n.position.X - (double) screenPosition.X + (double) (n.width / 2) - (double) TextureAssets.Npc[n.type].Width() * (double) n.scale / 2.0 + (double) halfSize.X * (double) n.scale), (float) ((double) n.position.Y - (double) screenPosition.Y + (double) n.height - (double) TextureAssets.Npc[n.type].Height() * (double) n.scale / (double) Main.npcFrameCount[n.type] + 4.0 + (double) halfSize.Y * (double) n.scale) + addHeight + addY + n.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(rectangle), n.GetAlpha(npcColor), n.rotation, halfSize, n.scale, npcSpriteEffect, 0.0f);
|
|
}
|
|
else if (n.type == 368 && n.frame.Y / (TextureAssets.Npc[n.type].Height() / Main.npcFrameCount[n.type]) >= 21)
|
|
{
|
|
Texture2D texture2D = TextureAssets.Extra[53].Value;
|
|
Microsoft.Xna.Framework.Rectangle rectangle = texture2D.Frame(verticalFrames: 5, frameY: (n.frame.Y / (TextureAssets.Npc[n.type].Height() / Main.npcFrameCount[n.type]) - 21));
|
|
Main.spriteBatch.Draw(texture2D, new Vector2((float) ((double) n.position.X - (double) screenPosition.X + (double) (n.width / 2) - (double) TextureAssets.Npc[n.type].Width() * (double) n.scale / 2.0 + (double) halfSize.X * (double) n.scale), (float) ((double) n.position.Y - (double) screenPosition.Y + (double) n.height - (double) TextureAssets.Npc[n.type].Height() * (double) n.scale / (double) Main.npcFrameCount[n.type] + 4.0 + (double) halfSize.Y * (double) n.scale) + addHeight + addY + n.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(rectangle), n.GetAlpha(npcColor), n.rotation, halfSize, n.scale, npcSpriteEffect, 0.0f);
|
|
}
|
|
}
|
|
if (NPCID.Sets.AttackType[n.type] == 2 && (double) n.ai[0] == 14.0 && !beforeDraw)
|
|
{
|
|
Texture2D texture2D = TextureAssets.Extra[51].Value;
|
|
Vector2 vector2 = n.Bottom + new Vector2(0.0f, n.gfxOffY + 4f);
|
|
Microsoft.Xna.Framework.Rectangle r = texture2D.Frame(verticalFrames: 4, frameY: ((int) n.frameCounter % 48 / 12));
|
|
Vector2 origin = r.Size() * new Vector2(0.5f, 1f);
|
|
Main.spriteBatch.Draw(texture2D, new Vector2((float) (int) ((double) vector2.X - (double) screenPosition.X), (float) (int) ((double) vector2.Y - (double) screenPosition.Y)), new Microsoft.Xna.Framework.Rectangle?(r), NPCID.Sets.MagicAuraColor[n.type], 0.0f, origin, n.scale, npcSpriteEffect ^ SpriteEffects.FlipHorizontally, 0.0f);
|
|
}
|
|
if (NPCID.Sets.AttackType[n.type] == 3 && (double) n.ai[0] == 15.0)
|
|
{
|
|
Main.instance.LoadItem(4);
|
|
Texture2D texture2D = TextureAssets.Item[4].Value;
|
|
int num9 = 32;
|
|
float num10 = 0.0f;
|
|
Vector2 zero = Vector2.Zero;
|
|
if (n.type == 207)
|
|
{
|
|
Main.instance.LoadItem(3349);
|
|
texture2D = TextureAssets.Item[3349].Value;
|
|
num10 = 0.15f;
|
|
if (beforeDraw)
|
|
return;
|
|
if ((double) n.ai[1] > (double) NPCID.Sets.AttackTime[n.type] * 0.660000026226044)
|
|
zero.Y = 12f;
|
|
}
|
|
else if (n.type == 353)
|
|
{
|
|
Main.instance.LoadItem(3352);
|
|
texture2D = TextureAssets.Item[3352].Value;
|
|
num10 = 0.15f;
|
|
if (!beforeDraw)
|
|
return;
|
|
if ((double) n.ai[1] > (double) NPCID.Sets.AttackTime[n.type] * 0.660000026226044)
|
|
zero.Y = 12f;
|
|
}
|
|
else if (n.type == 441)
|
|
{
|
|
Main.instance.LoadItem(3351);
|
|
texture2D = TextureAssets.Item[3351].Value;
|
|
num9 = 28;
|
|
num10 = 0.1f;
|
|
if (!beforeDraw)
|
|
return;
|
|
if ((double) n.ai[1] > (double) NPCID.Sets.AttackTime[n.type] * 0.660000026226044)
|
|
zero.Y = 12f;
|
|
}
|
|
Tuple<Vector2, float> swingStats = n.GetSwingStats(NPCID.Sets.AttackTime[n.type] * 2, (int) n.ai[1], n.spriteDirection, num9, num9);
|
|
Vector2 vector2 = swingStats.Item1 + (swingStats.Item1 - n.Center) * num10 + zero;
|
|
Vector2 origin = texture2D.Size() * new Vector2(n.spriteDirection == 1 ? 0.0f : 1f, 1f);
|
|
Main.spriteBatch.Draw(texture2D, new Vector2((float) (int) ((double) vector2.X - (double) screenPosition.X), (float) (int) ((double) vector2.Y - (double) screenPosition.Y)), new Microsoft.Xna.Framework.Rectangle?(), n.GetAlpha(npcColor), swingStats.Item2, origin, n.scale, npcSpriteEffect ^ SpriteEffects.FlipHorizontally, 0.0f);
|
|
}
|
|
if (n.type != 550 || (double) n.ai[0] != 18.0 || beforeDraw)
|
|
return;
|
|
Main.instance.LoadItem(353);
|
|
Texture2D texture2D1 = TextureAssets.Item[353].Value;
|
|
int num11 = 32;
|
|
float num12 = 0.15f;
|
|
Vector2 zero1 = Vector2.Zero;
|
|
Microsoft.Xna.Framework.Rectangle r1 = texture2D1.Frame(verticalFrames: 3, frameY: 1);
|
|
int index1 = (int) n.ai[2];
|
|
if (index1 >= 0 && index1 < (int) byte.MaxValue)
|
|
{
|
|
Player player = Main.player[index1];
|
|
bool flag = player.HeldItem.type == 353 && player.direction == Math.Sign(n.Center.X - player.Center.X);
|
|
double num13 = (double) player.Hitbox.Distance(n.Center);
|
|
float num14 = n.localAI[3];
|
|
if (num13 < 46.0 & flag)
|
|
{
|
|
n.localAI[3] = 1f;
|
|
if ((double) n.localAI[3] != (double) num14)
|
|
{
|
|
Vector2 vector2_3 = n.Center + new Vector2((float) (n.spriteDirection * 30), -6f);
|
|
Vector2 vector2_4 = new Vector2(10f, 10f);
|
|
for (int index2 = 0; index2 < 30; ++index2)
|
|
{
|
|
Dust dust = Dust.NewDustDirect(vector2_3 - vector2_4 / 2f, (int) vector2_4.X, (int) vector2_4.Y, 4, Alpha: 50, newColor: new Microsoft.Xna.Framework.Color(245, 200, 30, 155), Scale: 0.7f);
|
|
dust.noGravity = true;
|
|
dust.velocity *= 1f;
|
|
Dust.NewDustDirect(vector2_3 - vector2_4 / 2f, (int) vector2_4.X, (int) vector2_4.Y, 4, Alpha: 50, newColor: new Microsoft.Xna.Framework.Color(245, 200, 30, 155), Scale: 0.6f).velocity *= 2f;
|
|
}
|
|
}
|
|
}
|
|
else if ((double) n.localAI[3] == 1.0)
|
|
n.localAI[3] = 2f;
|
|
}
|
|
Tuple<Vector2, float> swingStats1 = n.GetSwingStats(40, 12, n.spriteDirection, num11, num11);
|
|
Vector2 vector2_5 = swingStats1.Item1 + (swingStats1.Item1 - n.Center) * num12 + zero1;
|
|
Vector2 origin1 = r1.Size() * new Vector2(n.spriteDirection == 1 ? 0.0f : 1f, 1f);
|
|
Main.spriteBatch.Draw(texture2D1, new Vector2((float) (int) ((double) vector2_5.X - (double) screenPosition.X), (float) (int) ((double) vector2_5.Y - (double) screenPosition.Y)), new Microsoft.Xna.Framework.Rectangle?(r1), n.GetAlpha(npcColor), swingStats1.Item2, origin1, n.scale, npcSpriteEffect ^ SpriteEffects.FlipHorizontally, 0.0f);
|
|
}
|
|
|
|
public void DrawProj(int i)
|
|
{
|
|
this.PrepareDrawnEntityDrawing((Entity) Main.projectile[i], Main.GetProjectileDesiredShader(i));
|
|
int num1 = ProjectileID.Sets.DrawScreenCheckFluff[Main.projectile[i].type];
|
|
if (!new Microsoft.Xna.Framework.Rectangle((int) Main.Camera.ScaledPosition.X - num1, (int) Main.Camera.ScaledPosition.Y - num1, (int) Main.Camera.ScaledSize.X + num1 * 2, (int) Main.Camera.ScaledSize.Y + num1 * 2).Intersects(Main.projectile[i].Hitbox))
|
|
return;
|
|
Projectile projectile1 = Main.projectile[i];
|
|
if (projectile1.type == 734)
|
|
{
|
|
VoidLensHelper voidLensHelper = new VoidLensHelper(projectile1);
|
|
this._voidLensData.Clear();
|
|
int selectionMode = Main.TryInteractingWithVoidLens(projectile1);
|
|
voidLensHelper.DrawToDrawData(this._voidLensData, selectionMode);
|
|
foreach (DrawData data in this._voidLensData)
|
|
Main.EntitySpriteDraw(data);
|
|
}
|
|
else
|
|
{
|
|
float polePosX = 0.0f;
|
|
float polePosY = 0.0f;
|
|
this.LoadProjectile(projectile1.type);
|
|
Vector2 mountedCenter = Main.player[projectile1.owner].MountedCenter;
|
|
if (projectile1.aiStyle == 99)
|
|
{
|
|
Vector2 vector2 = mountedCenter;
|
|
vector2.Y += Main.player[projectile1.owner].gfxOffY;
|
|
float num2 = projectile1.Center.X - vector2.X;
|
|
float num3 = projectile1.Center.Y - vector2.Y;
|
|
Math.Sqrt((double) num2 * (double) num2 + (double) num3 * (double) num3);
|
|
float num4 = (float) Math.Atan2((double) num3, (double) num2) - 1.57f;
|
|
if (!projectile1.counterweight)
|
|
{
|
|
int num5 = -1;
|
|
if ((double) projectile1.position.X + (double) (projectile1.width / 2) < (double) Main.player[projectile1.owner].position.X + (double) (Main.player[projectile1.owner].width / 2))
|
|
num5 = 1;
|
|
int num6 = num5 * -1;
|
|
Main.player[projectile1.owner].itemRotation = (float) Math.Atan2((double) num3 * (double) num6, (double) num2 * (double) num6);
|
|
}
|
|
bool flag = true;
|
|
if ((double) num2 == 0.0 && (double) num3 == 0.0)
|
|
{
|
|
flag = false;
|
|
}
|
|
else
|
|
{
|
|
float num7 = 12f / (float) Math.Sqrt((double) num2 * (double) num2 + (double) num3 * (double) num3);
|
|
float num8 = num2 * num7;
|
|
float num9 = num3 * num7;
|
|
vector2.X -= num8 * 0.1f;
|
|
vector2.Y -= num9 * 0.1f;
|
|
num2 = projectile1.position.X + (float) projectile1.width * 0.5f - vector2.X;
|
|
num3 = projectile1.position.Y + (float) projectile1.height * 0.5f - vector2.Y;
|
|
}
|
|
while (flag)
|
|
{
|
|
float num10 = 12f;
|
|
float f1 = (float) Math.Sqrt((double) num2 * (double) num2 + (double) num3 * (double) num3);
|
|
float f2 = f1;
|
|
if (float.IsNaN(f1) || float.IsNaN(f2))
|
|
{
|
|
flag = false;
|
|
}
|
|
else
|
|
{
|
|
if ((double) f1 < 20.0)
|
|
{
|
|
num10 = f1 - 8f;
|
|
flag = false;
|
|
}
|
|
float num11 = 12f / f1;
|
|
float num12 = num2 * num11;
|
|
float num13 = num3 * num11;
|
|
vector2.X += num12;
|
|
vector2.Y += num13;
|
|
num2 = projectile1.position.X + (float) projectile1.width * 0.5f - vector2.X;
|
|
num3 = projectile1.position.Y + (float) projectile1.height * 0.1f - vector2.Y;
|
|
if ((double) f2 > 12.0)
|
|
{
|
|
float num14 = 0.3f;
|
|
float num15 = Math.Abs(projectile1.velocity.X) + Math.Abs(projectile1.velocity.Y);
|
|
if ((double) num15 > 16.0)
|
|
num15 = 16f;
|
|
float num16 = (float) (1.0 - (double) num15 / 16.0);
|
|
float num17 = num14 * num16;
|
|
float num18 = f2 / 80f;
|
|
if ((double) num18 > 1.0)
|
|
num18 = 1f;
|
|
float num19 = num17 * num18;
|
|
if ((double) num19 < 0.0)
|
|
num19 = 0.0f;
|
|
float num20 = num19 * num18 * 0.5f;
|
|
if ((double) num3 > 0.0)
|
|
{
|
|
num3 *= 1f + num20;
|
|
num2 *= 1f - num20;
|
|
}
|
|
else
|
|
{
|
|
float num21 = Math.Abs(projectile1.velocity.X) / 3f;
|
|
if ((double) num21 > 1.0)
|
|
num21 = 1f;
|
|
float num22 = num21 - 0.5f;
|
|
float num23 = num20 * num22;
|
|
if ((double) num23 > 0.0)
|
|
num23 *= 2f;
|
|
num3 *= 1f + num23;
|
|
num2 *= 1f - num23;
|
|
}
|
|
}
|
|
float rotation = (float) Math.Atan2((double) num3, (double) num2) - 1.57f;
|
|
Microsoft.Xna.Framework.Color color = Microsoft.Xna.Framework.Color.White;
|
|
color.A = (byte) ((double) color.A * 0.400000005960464);
|
|
color = Main.TryApplyingPlayerStringColor(Main.player[projectile1.owner].stringColor, color);
|
|
float num24 = 0.5f;
|
|
color = Lighting.GetColor((int) vector2.X / 16, (int) ((double) vector2.Y / 16.0), color);
|
|
color = new Microsoft.Xna.Framework.Color((int) (byte) ((double) color.R * (double) num24), (int) (byte) ((double) color.G * (double) num24), (int) (byte) ((double) color.B * (double) num24), (int) (byte) ((double) color.A * (double) num24));
|
|
Main.EntitySpriteDraw(TextureAssets.FishingLine.Value, new Vector2((float) ((double) vector2.X - (double) Main.screenPosition.X + (double) TextureAssets.FishingLine.Width() * 0.5), (float) ((double) vector2.Y - (double) Main.screenPosition.Y + (double) TextureAssets.FishingLine.Height() * 0.5)) - new Vector2(6f, 0.0f), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.FishingLine.Width(), (int) num10)), color, rotation, new Vector2((float) TextureAssets.FishingLine.Width() * 0.5f, 0.0f), 1f, SpriteEffects.None, 0);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (projectile1.aiStyle == 160)
|
|
{
|
|
this.DrawKite(projectile1);
|
|
return;
|
|
}
|
|
if (projectile1.aiStyle == 165)
|
|
{
|
|
this.DrawWhip(projectile1);
|
|
return;
|
|
}
|
|
}
|
|
if (projectile1.type == 879 || projectile1.type == 877 || projectile1.type == 878)
|
|
projectile1.position.Y -= Main.player[projectile1.owner].gfxOffY;
|
|
if (projectile1.aiStyle == 174)
|
|
{
|
|
this.DrawMultisegmentPet(projectile1);
|
|
}
|
|
else
|
|
{
|
|
if (projectile1.type == 34)
|
|
new FlameLashDrawer().Draw(projectile1);
|
|
if (projectile1.type == 16)
|
|
new MagicMissileDrawer().Draw(projectile1);
|
|
if (projectile1.type == 933)
|
|
new FinalFractalHelper().Draw(projectile1);
|
|
if (projectile1.type == 79)
|
|
new RainbowRodDrawer().Draw(projectile1);
|
|
if (projectile1.type == 919)
|
|
this.DrawProj_FairyQueenLance(projectile1);
|
|
else if (projectile1.type == 932)
|
|
this.DrawProj_FairyQueenRangedItemShot(projectile1);
|
|
else if (projectile1.type == 946)
|
|
{
|
|
EmpressBladeDrawer empressBladeDrawer = new EmpressBladeDrawer();
|
|
float num25 = (float) ((double) Main.GlobalTimeWrappedHourly % 3.0 / 3.0);
|
|
float num26 = MathHelper.Max(1f, (float) Main.player[projectile1.owner].maxMinions);
|
|
float hueOverride = (float) projectile1.identity % num26 / num26 + num25;
|
|
Microsoft.Xna.Framework.Color queenWeaponsColor1 = projectile1.GetFairyQueenWeaponsColor(0.0f, rawHueOverride: new float?(hueOverride % 1f));
|
|
Microsoft.Xna.Framework.Color queenWeaponsColor2 = projectile1.GetFairyQueenWeaponsColor(0.0f, rawHueOverride: new float?((float) (((double) hueOverride + 0.5) % 1.0)));
|
|
empressBladeDrawer.ColorStart = queenWeaponsColor1;
|
|
empressBladeDrawer.ColorEnd = queenWeaponsColor2;
|
|
empressBladeDrawer.Draw(projectile1);
|
|
this.DrawProj_EmpressBlade(projectile1, hueOverride);
|
|
}
|
|
else if (projectile1.type == 927)
|
|
this.DrawProj_PiercingStarlight(projectile1);
|
|
else if (projectile1.type == 917)
|
|
this.DrawProj_CoolWhipMinion(projectile1);
|
|
else if (projectile1.type == 923)
|
|
{
|
|
Vector2 position = projectile1.Center - Main.screenPosition;
|
|
Texture2D texture2D = TextureAssets.Projectile[projectile1.type].Value;
|
|
Microsoft.Xna.Framework.Rectangle r = texture2D.Frame(verticalFrames: 2);
|
|
Microsoft.Xna.Framework.Rectangle rectangle = texture2D.Frame(verticalFrames: 2, frameY: 1);
|
|
Vector2 origin = r.Size() * new Vector2(0.03f, 0.5f);
|
|
float from = 180f;
|
|
double num27 = (double) projectile1.ai[0] / 6.28318548202515 + (double) projectile1.localAI[0] / (double) from;
|
|
float num28 = Utils.GetLerpValue(0.0f, 30f, projectile1.localAI[0], true) * Utils.GetLerpValue(from, from - 30f, projectile1.localAI[0], true);
|
|
Microsoft.Xna.Framework.Color color1 = Main.hslToRgb((float) (num27 % 1.0), 1f, 1f) * num28;
|
|
float lerpValue = Utils.GetLerpValue(40f, 60f, projectile1.localAI[0], true);
|
|
Vector2 scale = new Vector2(1f, MathHelper.Lerp(0.25f, 0.7f, lerpValue)) * projectile1.scale;
|
|
Microsoft.Xna.Framework.Color color2 = Main.hslToRgb((float) ((num27 + 0.300000011920929) % 1.0), 1f, MathHelper.Lerp(0.3f, 0.66f, lerpValue)) * num28;
|
|
if (NPC.ShouldEmpressBeEnraged())
|
|
color2 = Main.OurFavoriteColor * num28;
|
|
Microsoft.Xna.Framework.Color color3 = Microsoft.Xna.Framework.Color.Lerp(color2, Microsoft.Xna.Framework.Color.White, 0.1f);
|
|
color3.A /= (byte) 2;
|
|
Main.spriteBatch.Draw(texture2D, position, new Microsoft.Xna.Framework.Rectangle?(rectangle), color3, projectile1.rotation, origin, scale * 1.2f, SpriteEffects.None, 0.0f);
|
|
Microsoft.Xna.Framework.Color color4 = Main.hslToRgb((float) ((num27 + 0.150000005960464) % 1.0), 1f, MathHelper.Lerp(0.3f, 0.5f, lerpValue)) * num28;
|
|
if (NPC.ShouldEmpressBeEnraged())
|
|
color4 = Main.OurFavoriteColor * num28;
|
|
Microsoft.Xna.Framework.Color color5 = Microsoft.Xna.Framework.Color.Lerp(color4, Microsoft.Xna.Framework.Color.White, 0.1f);
|
|
color5.A /= (byte) 2;
|
|
Main.spriteBatch.Draw(texture2D, position, new Microsoft.Xna.Framework.Rectangle?(rectangle), color5, projectile1.rotation, origin, scale * 1.1f, SpriteEffects.None, 0.0f);
|
|
Main.spriteBatch.Draw(texture2D, position, new Microsoft.Xna.Framework.Rectangle?(r), color1 * 0.5f, projectile1.rotation, origin, scale, SpriteEffects.None, 0.0f);
|
|
Main.spriteBatch.Draw(texture2D, position, new Microsoft.Xna.Framework.Rectangle?(rectangle), color1 * lerpValue, projectile1.rotation, origin, scale, SpriteEffects.None, 0.0f);
|
|
}
|
|
else if (projectile1.type == 888)
|
|
this.DrawTwinsPet(projectile1);
|
|
else if (projectile1.type == 874)
|
|
this.DrawMurderAurora(projectile1);
|
|
else if (projectile1.type == 871)
|
|
{
|
|
Texture2D texture2D = TextureAssets.Projectile[projectile1.type].Value;
|
|
Microsoft.Xna.Framework.Rectangle r = texture2D.Frame(verticalFrames: 4);
|
|
Vector2 origin = r.Size() / 2f;
|
|
Microsoft.Xna.Framework.Color color6 = Microsoft.Xna.Framework.Color.White * projectile1.Opacity;
|
|
SpriteEffects effects = SpriteEffects.None;
|
|
color6.A /= (byte) 2;
|
|
Microsoft.Xna.Framework.Color color7 = projectile1.AI_171_GetColor();
|
|
color7.A /= (byte) 2;
|
|
float scale = projectile1.scale * 1.3f;
|
|
float num29 = 1f;
|
|
int pelletStormsCount = projectile1.AI_172_GetPelletStormsCount();
|
|
bool flag = false;
|
|
float num30 = float.PositiveInfinity;
|
|
for (int stormIndex = 0; stormIndex < pelletStormsCount; ++stormIndex)
|
|
{
|
|
Projectile.HallowBossPelletStormInfo pelletStormInfo = projectile1.AI_172_GetPelletStormInfo(stormIndex);
|
|
for (int bulletIndex = 0; bulletIndex < pelletStormInfo.BulletsInStorm; ++bulletIndex)
|
|
{
|
|
float bulletProgress = pelletStormInfo.GetBulletProgress(bulletIndex);
|
|
if ((double) bulletProgress < (double) num30)
|
|
num30 = bulletProgress;
|
|
if (pelletStormInfo.IsValid(bulletIndex))
|
|
{
|
|
if (stormIndex == pelletStormsCount - 1 && (double) bulletProgress > 0.0)
|
|
flag = true;
|
|
r = texture2D.Frame(verticalFrames: 4, frameY: ((int) ((double) (bulletIndex + stormIndex * 6) + Main.timeForVisualEffects / 4.0) % 4));
|
|
float num31 = Utils.GetLerpValue(0.0f, 0.1f, bulletProgress, true) * Utils.GetLerpValue(1f, 0.8f, bulletProgress, true);
|
|
Vector2 bulletPosition = pelletStormInfo.GetBulletPosition(bulletIndex, projectile1.Center);
|
|
Main.EntitySpriteDraw(texture2D, bulletPosition - Main.screenPosition + new Vector2(0.0f, projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(r), color7 * num31, projectile1.rotation, origin, scale * num29, effects, 0);
|
|
Main.EntitySpriteDraw(texture2D, bulletPosition - Main.screenPosition + new Vector2(0.0f, projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(r), color6 * num31, projectile1.rotation, origin, projectile1.scale * num29, effects, 0);
|
|
}
|
|
}
|
|
}
|
|
if (flag || (double) num30 > 1.0)
|
|
return;
|
|
Main.EntitySpriteDraw(texture2D, projectile1.Center - Main.screenPosition + new Vector2(0.0f, projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(r), color7, projectile1.rotation, origin, scale, effects, 0);
|
|
Main.EntitySpriteDraw(texture2D, projectile1.Center - Main.screenPosition + new Vector2(0.0f, projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(r), color6, projectile1.rotation, origin, projectile1.scale, effects, 0);
|
|
}
|
|
else
|
|
{
|
|
if (projectile1.bobber && Main.player[projectile1.owner].inventory[Main.player[projectile1.owner].selectedItem].holdStyle != 0)
|
|
Main.DrawProj_FishingLine(projectile1, ref polePosX, ref polePosY, mountedCenter);
|
|
else if (projectile1.type == 32)
|
|
{
|
|
Vector2 vector2 = new Vector2(projectile1.position.X + (float) projectile1.width * 0.5f, projectile1.position.Y + (float) projectile1.height * 0.5f);
|
|
float num32 = mountedCenter.X - vector2.X;
|
|
float num33 = mountedCenter.Y - vector2.Y;
|
|
float rotation = (float) Math.Atan2((double) num33, (double) num32) - 1.57f;
|
|
bool flag = true;
|
|
if ((double) num32 == 0.0 && (double) num33 == 0.0)
|
|
{
|
|
flag = false;
|
|
}
|
|
else
|
|
{
|
|
float num34 = 8f / (float) Math.Sqrt((double) num32 * (double) num32 + (double) num33 * (double) num33);
|
|
float num35 = num32 * num34;
|
|
float num36 = num33 * num34;
|
|
vector2.X -= num35;
|
|
vector2.Y -= num36;
|
|
num32 = mountedCenter.X - vector2.X;
|
|
num33 = mountedCenter.Y - vector2.Y;
|
|
}
|
|
while (flag)
|
|
{
|
|
float f = (float) Math.Sqrt((double) num32 * (double) num32 + (double) num33 * (double) num33);
|
|
if ((double) f < 28.0)
|
|
flag = false;
|
|
else if (float.IsNaN(f))
|
|
{
|
|
flag = false;
|
|
}
|
|
else
|
|
{
|
|
float num37 = 28f / f;
|
|
float num38 = num32 * num37;
|
|
float num39 = num33 * num37;
|
|
vector2.X += num38;
|
|
vector2.Y += num39;
|
|
num32 = mountedCenter.X - vector2.X;
|
|
num33 = mountedCenter.Y - vector2.Y;
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) vector2.X / 16, (int) ((double) vector2.Y / 16.0));
|
|
Main.EntitySpriteDraw(TextureAssets.Chain5.Value, new Vector2(vector2.X - Main.screenPosition.X, vector2.Y - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Chain5.Width(), TextureAssets.Chain5.Height())), color, rotation, new Vector2((float) TextureAssets.Chain5.Width() * 0.5f, (float) TextureAssets.Chain5.Height() * 0.5f), 1f, SpriteEffects.None, 0);
|
|
}
|
|
}
|
|
}
|
|
else if (projectile1.type == 73)
|
|
{
|
|
Vector2 vector2 = new Vector2(projectile1.position.X + (float) projectile1.width * 0.5f, projectile1.position.Y + (float) projectile1.height * 0.5f);
|
|
float num40 = mountedCenter.X - vector2.X;
|
|
float num41 = mountedCenter.Y - vector2.Y;
|
|
float rotation = (float) Math.Atan2((double) num41, (double) num40) - 1.57f;
|
|
bool flag = true;
|
|
while (flag)
|
|
{
|
|
float f = (float) Math.Sqrt((double) num40 * (double) num40 + (double) num41 * (double) num41);
|
|
if ((double) f < 25.0)
|
|
flag = false;
|
|
else if (float.IsNaN(f))
|
|
{
|
|
flag = false;
|
|
}
|
|
else
|
|
{
|
|
float num42 = 12f / f;
|
|
float num43 = num40 * num42;
|
|
float num44 = num41 * num42;
|
|
vector2.X += num43;
|
|
vector2.Y += num44;
|
|
num40 = mountedCenter.X - vector2.X;
|
|
num41 = mountedCenter.Y - vector2.Y;
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) vector2.X / 16, (int) ((double) vector2.Y / 16.0));
|
|
Main.EntitySpriteDraw(TextureAssets.Chain8.Value, new Vector2(vector2.X - Main.screenPosition.X, vector2.Y - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Chain8.Width(), TextureAssets.Chain8.Height())), color, rotation, new Vector2((float) TextureAssets.Chain8.Width() * 0.5f, (float) TextureAssets.Chain8.Height() * 0.5f), 1f, SpriteEffects.None, 0);
|
|
}
|
|
}
|
|
}
|
|
else if (projectile1.type == 186)
|
|
{
|
|
Vector2 vector2 = new Vector2(projectile1.localAI[0], projectile1.localAI[1]);
|
|
float num45 = Vector2.Distance(projectile1.Center, vector2) - projectile1.velocity.Length();
|
|
float num46 = (float) TextureAssets.Chain17.Height() - num45;
|
|
if ((double) num45 > 0.0 && (double) projectile1.ai[1] > 0.0)
|
|
{
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) projectile1.position.X / 16, (int) projectile1.position.Y / 16);
|
|
Main.EntitySpriteDraw(TextureAssets.Chain17.Value, vector2 - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, (int) num46, TextureAssets.Chain17.Width(), (int) num45)), color, projectile1.rotation, new Vector2((float) (TextureAssets.Chain17.Width() / 2), 0.0f), 1f, SpriteEffects.None, 0);
|
|
}
|
|
}
|
|
else if (projectile1.type == 74)
|
|
{
|
|
Vector2 vector2 = new Vector2(projectile1.position.X + (float) projectile1.width * 0.5f, projectile1.position.Y + (float) projectile1.height * 0.5f);
|
|
float num47 = mountedCenter.X - vector2.X;
|
|
float num48 = mountedCenter.Y - vector2.Y;
|
|
float rotation = (float) Math.Atan2((double) num48, (double) num47) - 1.57f;
|
|
bool flag = true;
|
|
while (flag)
|
|
{
|
|
float f = (float) Math.Sqrt((double) num47 * (double) num47 + (double) num48 * (double) num48);
|
|
if ((double) f < 25.0)
|
|
flag = false;
|
|
else if (float.IsNaN(f))
|
|
{
|
|
flag = false;
|
|
}
|
|
else
|
|
{
|
|
float num49 = 12f / f;
|
|
float num50 = num47 * num49;
|
|
float num51 = num48 * num49;
|
|
vector2.X += num50;
|
|
vector2.Y += num51;
|
|
num47 = mountedCenter.X - vector2.X;
|
|
num48 = mountedCenter.Y - vector2.Y;
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) vector2.X / 16, (int) ((double) vector2.Y / 16.0));
|
|
Main.EntitySpriteDraw(TextureAssets.Chain9.Value, new Vector2(vector2.X - Main.screenPosition.X, vector2.Y - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Chain8.Width(), TextureAssets.Chain8.Height())), color, rotation, new Vector2((float) TextureAssets.Chain8.Width() * 0.5f, (float) TextureAssets.Chain8.Height() * 0.5f), 1f, SpriteEffects.None, 0);
|
|
}
|
|
}
|
|
}
|
|
else if (projectile1.type == 171)
|
|
{
|
|
Vector2 vector2 = new Vector2(projectile1.position.X + (float) projectile1.width * 0.5f, projectile1.position.Y + (float) projectile1.height * 0.5f);
|
|
float num52 = -projectile1.velocity.X;
|
|
float num53 = -projectile1.velocity.Y;
|
|
float num54 = 1f;
|
|
if ((double) projectile1.ai[0] <= 17.0)
|
|
num54 = projectile1.ai[0] / 17f;
|
|
int length = (int) (30.0 * (double) num54);
|
|
float num55 = 1f;
|
|
if ((double) projectile1.ai[0] <= 30.0)
|
|
num55 = projectile1.ai[0] / 30f;
|
|
float num56 = 0.4f * num55;
|
|
float num57 = num56;
|
|
float num58 = num53 + num57;
|
|
Vector2[] vector2Array = new Vector2[length];
|
|
float[] numArray = new float[length];
|
|
for (int index = 0; index < length; ++index)
|
|
{
|
|
float num59 = (float) Math.Sqrt((double) num52 * (double) num52 + (double) num58 * (double) num58);
|
|
float num60 = 5.6f;
|
|
if ((double) Math.Abs(num52) + (double) Math.Abs(num58) < 1.0)
|
|
num60 *= Math.Abs(num52) + Math.Abs(num58) / 1f;
|
|
float num61 = num60 / num59;
|
|
float num62 = num52 * num61;
|
|
float num63 = num58 * num61;
|
|
float num64 = (float) Math.Atan2((double) num63, (double) num62) - 1.57f;
|
|
vector2Array[index].X = vector2.X;
|
|
vector2Array[index].Y = vector2.Y;
|
|
numArray[index] = num64;
|
|
vector2.X += num62;
|
|
vector2.Y += num63;
|
|
num52 = -projectile1.velocity.X;
|
|
float num65 = -projectile1.velocity.Y;
|
|
num57 += num56;
|
|
num58 = num65 + num57;
|
|
}
|
|
int num66;
|
|
for (int index = num66 = length - 1; index >= 0; --index)
|
|
{
|
|
vector2.X = vector2Array[index].X;
|
|
vector2.Y = vector2Array[index].Y;
|
|
float rotation = numArray[index];
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) vector2.X / 16, (int) ((double) vector2.Y / 16.0));
|
|
Main.EntitySpriteDraw(TextureAssets.Chain16.Value, new Vector2(vector2.X - Main.screenPosition.X, vector2.Y - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Chain16.Width(), TextureAssets.Chain16.Height())), color, rotation, new Vector2((float) TextureAssets.Chain16.Width() * 0.5f, (float) TextureAssets.Chain16.Height() * 0.5f), 0.8f, SpriteEffects.None, 0);
|
|
}
|
|
}
|
|
else if (projectile1.type == 475)
|
|
{
|
|
Vector2 vector2 = new Vector2(projectile1.position.X + (float) projectile1.width * 0.5f, projectile1.position.Y + (float) projectile1.height * 0.5f);
|
|
float num67 = -projectile1.velocity.X;
|
|
float num68 = -projectile1.velocity.Y;
|
|
float num69 = 1f;
|
|
if ((double) projectile1.ai[0] <= 17.0)
|
|
num69 = projectile1.ai[0] / 17f;
|
|
int length = (int) (30.0 * (double) num69);
|
|
float num70 = 1f;
|
|
if ((double) projectile1.ai[0] <= 30.0)
|
|
num70 = projectile1.ai[0] / 30f;
|
|
float num71 = 0.4f * num70;
|
|
float num72 = num71;
|
|
float num73 = num68 + num72;
|
|
Vector2[] vector2Array = new Vector2[length];
|
|
float[] numArray = new float[length];
|
|
for (int index = 0; index < length; ++index)
|
|
{
|
|
float num74 = (float) Math.Sqrt((double) num67 * (double) num67 + (double) num73 * (double) num73);
|
|
float num75 = 5.6f;
|
|
if ((double) Math.Abs(num67) + (double) Math.Abs(num73) < 1.0)
|
|
num75 *= Math.Abs(num67) + Math.Abs(num73) / 1f;
|
|
float num76 = num75 / num74;
|
|
float num77 = num67 * num76;
|
|
float num78 = num73 * num76;
|
|
float num79 = (float) Math.Atan2((double) num78, (double) num77) - 1.57f;
|
|
vector2Array[index].X = vector2.X;
|
|
vector2Array[index].Y = vector2.Y;
|
|
numArray[index] = num79;
|
|
vector2.X += num77;
|
|
vector2.Y += num78;
|
|
num67 = -projectile1.velocity.X;
|
|
float num80 = -projectile1.velocity.Y;
|
|
num72 += num71;
|
|
num73 = num80 + num72;
|
|
}
|
|
int num81 = 0;
|
|
int num82;
|
|
for (int index = num82 = length - 1; index >= 0; --index)
|
|
{
|
|
vector2.X = vector2Array[index].X;
|
|
vector2.Y = vector2Array[index].Y;
|
|
float rotation = numArray[index];
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) vector2.X / 16, (int) ((double) vector2.Y / 16.0));
|
|
if (num81 % 2 == 0)
|
|
Main.EntitySpriteDraw(TextureAssets.Chain38.Value, new Vector2(vector2.X - Main.screenPosition.X, vector2.Y - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Chain38.Width(), TextureAssets.Chain38.Height())), color, rotation, new Vector2((float) TextureAssets.Chain38.Width() * 0.5f, (float) TextureAssets.Chain38.Height() * 0.5f), 0.8f, SpriteEffects.None, 0);
|
|
else
|
|
Main.EntitySpriteDraw(TextureAssets.Chain39.Value, new Vector2(vector2.X - Main.screenPosition.X, vector2.Y - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Chain39.Width(), TextureAssets.Chain39.Height())), color, rotation, new Vector2((float) TextureAssets.Chain39.Width() * 0.5f, (float) TextureAssets.Chain39.Height() * 0.5f), 0.8f, SpriteEffects.None, 0);
|
|
++num81;
|
|
}
|
|
}
|
|
else if (projectile1.type == 505 || projectile1.type == 506)
|
|
{
|
|
Vector2 vector2 = new Vector2(projectile1.position.X + (float) projectile1.width * 0.5f, projectile1.position.Y + (float) projectile1.height * 0.5f);
|
|
float num83 = -projectile1.velocity.X;
|
|
float num84 = -projectile1.velocity.Y;
|
|
float num85 = 1f;
|
|
if ((double) projectile1.ai[0] <= 17.0)
|
|
num85 = projectile1.ai[0] / 17f;
|
|
int length = (int) (30.0 * (double) num85);
|
|
float num86 = 1f;
|
|
if ((double) projectile1.ai[0] <= 30.0)
|
|
num86 = projectile1.ai[0] / 30f;
|
|
float num87 = 0.4f * num86;
|
|
float num88 = num87;
|
|
float num89 = num84 + num88;
|
|
Vector2[] vector2Array = new Vector2[length];
|
|
float[] numArray = new float[length];
|
|
for (int index = 0; index < length; ++index)
|
|
{
|
|
float num90 = (float) Math.Sqrt((double) num83 * (double) num83 + (double) num89 * (double) num89);
|
|
float num91 = 5.6f;
|
|
if ((double) Math.Abs(num83) + (double) Math.Abs(num89) < 1.0)
|
|
num91 *= Math.Abs(num83) + Math.Abs(num89) / 1f;
|
|
float num92 = num91 / num90;
|
|
float num93 = num83 * num92;
|
|
float num94 = num89 * num92;
|
|
float num95 = (float) Math.Atan2((double) num94, (double) num93) - 1.57f;
|
|
vector2Array[index].X = vector2.X;
|
|
vector2Array[index].Y = vector2.Y;
|
|
numArray[index] = num95;
|
|
vector2.X += num93;
|
|
vector2.Y += num94;
|
|
num83 = -projectile1.velocity.X;
|
|
float num96 = -projectile1.velocity.Y;
|
|
num88 += num87;
|
|
num89 = num96 + num88;
|
|
}
|
|
int num97 = 0;
|
|
int num98;
|
|
for (int index1 = num98 = length - 1; index1 >= 0; --index1)
|
|
{
|
|
vector2.X = vector2Array[index1].X;
|
|
vector2.Y = vector2Array[index1].Y;
|
|
float rotation = numArray[index1];
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) vector2.X / 16, (int) ((double) vector2.Y / 16.0));
|
|
int num99 = 4;
|
|
if (projectile1.type == 506)
|
|
num99 = 6;
|
|
int index2 = num99 + num97 % 2;
|
|
Main.EntitySpriteDraw(TextureAssets.Chains[index2].Value, new Vector2(vector2.X - Main.screenPosition.X, vector2.Y - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Chains[index2].Width(), TextureAssets.Chains[index2].Height())), color, rotation, new Vector2((float) TextureAssets.Chains[index2].Width() * 0.5f, (float) TextureAssets.Chains[index2].Height() * 0.5f), 0.8f, SpriteEffects.None, 0);
|
|
++num97;
|
|
}
|
|
}
|
|
else if (projectile1.type == 165)
|
|
{
|
|
Vector2 vector2 = new Vector2(projectile1.position.X + (float) projectile1.width * 0.5f, projectile1.position.Y + (float) projectile1.height * 0.5f);
|
|
float num100 = mountedCenter.X - vector2.X;
|
|
float num101 = mountedCenter.Y - vector2.Y;
|
|
float rotation = (float) Math.Atan2((double) num101, (double) num100) - 1.57f;
|
|
bool flag = true;
|
|
while (flag)
|
|
{
|
|
float f = (float) Math.Sqrt((double) num100 * (double) num100 + (double) num101 * (double) num101);
|
|
if ((double) f < 25.0)
|
|
flag = false;
|
|
else if (float.IsNaN(f))
|
|
{
|
|
flag = false;
|
|
}
|
|
else
|
|
{
|
|
float num102 = 24f / f;
|
|
float num103 = num100 * num102;
|
|
float num104 = num101 * num102;
|
|
vector2.X += num103;
|
|
vector2.Y += num104;
|
|
num100 = mountedCenter.X - vector2.X;
|
|
num101 = mountedCenter.Y - vector2.Y;
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) vector2.X / 16, (int) ((double) vector2.Y / 16.0));
|
|
Main.EntitySpriteDraw(TextureAssets.Chain15.Value, new Vector2(vector2.X - Main.screenPosition.X, vector2.Y - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Chain15.Width(), TextureAssets.Chain15.Height())), color, rotation, new Vector2((float) TextureAssets.Chain15.Width() * 0.5f, (float) TextureAssets.Chain15.Height() * 0.5f), 1f, SpriteEffects.None, 0);
|
|
}
|
|
}
|
|
}
|
|
else if (projectile1.type >= 230 && projectile1.type <= 235)
|
|
{
|
|
int index = projectile1.type - 229;
|
|
Vector2 vector2 = new Vector2(projectile1.position.X + (float) projectile1.width * 0.5f, projectile1.position.Y + (float) projectile1.height * 0.5f);
|
|
float num105 = mountedCenter.X - vector2.X;
|
|
float num106 = mountedCenter.Y - vector2.Y;
|
|
float rotation = (float) Math.Atan2((double) num106, (double) num105) - 1.57f;
|
|
bool flag = true;
|
|
while (flag)
|
|
{
|
|
float f = (float) Math.Sqrt((double) num105 * (double) num105 + (double) num106 * (double) num106);
|
|
if ((double) f < 25.0)
|
|
flag = false;
|
|
else if (float.IsNaN(f))
|
|
{
|
|
flag = false;
|
|
}
|
|
else
|
|
{
|
|
float num107 = (float) TextureAssets.GemChain[index].Height() / f;
|
|
float num108 = num105 * num107;
|
|
float num109 = num106 * num107;
|
|
vector2.X += num108;
|
|
vector2.Y += num109;
|
|
num105 = mountedCenter.X - vector2.X;
|
|
num106 = mountedCenter.Y - vector2.Y;
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) vector2.X / 16, (int) ((double) vector2.Y / 16.0));
|
|
Main.EntitySpriteDraw(TextureAssets.GemChain[index].Value, new Vector2(vector2.X - Main.screenPosition.X, vector2.Y - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.GemChain[index].Width(), TextureAssets.GemChain[index].Height())), color, rotation, new Vector2((float) TextureAssets.GemChain[index].Width() * 0.5f, (float) TextureAssets.GemChain[index].Height() * 0.5f), 1f, SpriteEffects.None, 0);
|
|
}
|
|
}
|
|
}
|
|
else if (projectile1.type == 753)
|
|
{
|
|
Vector2 vector2 = new Vector2(projectile1.position.X + (float) projectile1.width * 0.5f, projectile1.position.Y + (float) projectile1.height * 0.5f);
|
|
float num110 = mountedCenter.X - vector2.X;
|
|
float num111 = mountedCenter.Y - vector2.Y;
|
|
float rotation = (float) Math.Atan2((double) num111, (double) num110) - 1.57f;
|
|
bool flag = true;
|
|
Texture2D texture2D = TextureAssets.Extra[95].Value;
|
|
while (flag)
|
|
{
|
|
float f = (float) Math.Sqrt((double) num110 * (double) num110 + (double) num111 * (double) num111);
|
|
if ((double) f < 25.0)
|
|
flag = false;
|
|
else if (float.IsNaN(f))
|
|
{
|
|
flag = false;
|
|
}
|
|
else
|
|
{
|
|
float num112 = (float) texture2D.Height / f;
|
|
float num113 = num110 * num112;
|
|
float num114 = num111 * num112;
|
|
vector2.X += num113;
|
|
vector2.Y += num114;
|
|
num110 = mountedCenter.X - vector2.X;
|
|
num111 = mountedCenter.Y - vector2.Y;
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) vector2.X / 16, (int) ((double) vector2.Y / 16.0));
|
|
Main.EntitySpriteDraw(texture2D, new Vector2(vector2.X - Main.screenPosition.X, vector2.Y - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(), color, rotation, texture2D.Size() / 2f, 1f, SpriteEffects.None, 0);
|
|
}
|
|
}
|
|
}
|
|
else if (projectile1.type == 865)
|
|
{
|
|
Vector2 vector2 = new Vector2(projectile1.position.X + (float) projectile1.width * 0.5f, projectile1.position.Y + (float) projectile1.height * 0.5f);
|
|
float num115 = mountedCenter.X - vector2.X;
|
|
float num116 = mountedCenter.Y - vector2.Y;
|
|
float rotation = (float) Math.Atan2((double) num116, (double) num115) - 1.57f;
|
|
bool flag1 = true;
|
|
bool flag2 = true;
|
|
Texture2D texture2D = TextureAssets.Extra[154].Value;
|
|
while (flag1)
|
|
{
|
|
float f = (float) Math.Sqrt((double) num115 * (double) num115 + (double) num116 * (double) num116);
|
|
if ((double) f < 25.0)
|
|
flag1 = false;
|
|
else if (float.IsNaN(f))
|
|
{
|
|
flag1 = false;
|
|
}
|
|
else
|
|
{
|
|
float num117 = (float) texture2D.Height / f;
|
|
float num118 = num115 * num117;
|
|
float num119 = num116 * num117;
|
|
vector2.X += num118;
|
|
vector2.Y += num119;
|
|
num115 = mountedCenter.X - vector2.X;
|
|
num116 = mountedCenter.Y - vector2.Y;
|
|
if (!flag2)
|
|
{
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) vector2.X / 16, (int) ((double) vector2.Y / 16.0));
|
|
Main.EntitySpriteDraw(texture2D, new Vector2(vector2.X - Main.screenPosition.X, vector2.Y - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(), color, rotation, texture2D.Size() / 2f, 1f, SpriteEffects.None, 0);
|
|
}
|
|
flag2 = false;
|
|
}
|
|
}
|
|
}
|
|
else if (projectile1.type == 935)
|
|
{
|
|
Vector2 vector2 = new Vector2(projectile1.position.X + (float) projectile1.width * 0.5f, projectile1.position.Y + (float) projectile1.height * 0.5f);
|
|
float num120 = mountedCenter.X - vector2.X;
|
|
float num121 = mountedCenter.Y - vector2.Y;
|
|
float rotation = (float) Math.Atan2((double) num121, (double) num120) - 1.57f;
|
|
bool flag3 = true;
|
|
bool flag4 = true;
|
|
Texture2D texture2D = TextureAssets.Extra[208].Value;
|
|
while (flag3)
|
|
{
|
|
float f = (float) Math.Sqrt((double) num120 * (double) num120 + (double) num121 * (double) num121);
|
|
if ((double) f < 8.0)
|
|
flag3 = false;
|
|
else if (float.IsNaN(f))
|
|
{
|
|
flag3 = false;
|
|
}
|
|
else
|
|
{
|
|
float num122 = (float) texture2D.Height / f;
|
|
float num123 = num120 * num122;
|
|
float num124 = num121 * num122;
|
|
vector2.X += num123;
|
|
vector2.Y += num124;
|
|
num120 = mountedCenter.X - vector2.X;
|
|
num121 = mountedCenter.Y - vector2.Y;
|
|
if (!flag4)
|
|
{
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) vector2.X / 16, (int) ((double) vector2.Y / 16.0));
|
|
Main.EntitySpriteDraw(texture2D, new Vector2(vector2.X - Main.screenPosition.X, vector2.Y - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(), color, rotation, texture2D.Size() / 2f, 1f, SpriteEffects.None, 0);
|
|
}
|
|
flag4 = false;
|
|
}
|
|
}
|
|
}
|
|
else if (projectile1.type == 256)
|
|
{
|
|
Vector2 vector2 = new Vector2(projectile1.position.X + (float) projectile1.width * 0.5f, projectile1.position.Y + (float) projectile1.height * 0.5f);
|
|
float num125 = mountedCenter.X - vector2.X;
|
|
float num126 = mountedCenter.Y - vector2.Y;
|
|
float num127 = (float) Math.Atan2((double) num126, (double) num125) - 1.57f;
|
|
bool flag = true;
|
|
while (flag)
|
|
{
|
|
float f = (float) Math.Sqrt((double) num125 * (double) num125 + (double) num126 * (double) num126);
|
|
if ((double) f < 26.0)
|
|
flag = false;
|
|
else if (float.IsNaN(f))
|
|
{
|
|
flag = false;
|
|
}
|
|
else
|
|
{
|
|
float num128 = 26f / f;
|
|
float num129 = num125 * num128;
|
|
float num130 = num126 * num128;
|
|
vector2.X += num129;
|
|
vector2.Y += num130;
|
|
num125 = Main.player[projectile1.owner].position.X + (float) (Main.player[projectile1.owner].width / 2) - vector2.X;
|
|
num126 = Main.player[projectile1.owner].position.Y + (float) (Main.player[projectile1.owner].height / 2) - vector2.Y;
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) vector2.X / 16, (int) ((double) vector2.Y / 16.0));
|
|
Main.EntitySpriteDraw(TextureAssets.Chain20.Value, new Vector2(vector2.X - Main.screenPosition.X, vector2.Y - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Chain20.Width(), TextureAssets.Chain20.Height())), color, num127 - 0.785f, new Vector2((float) TextureAssets.Chain20.Width() * 0.5f, (float) TextureAssets.Chain20.Height() * 0.5f), 1f, SpriteEffects.None, 0);
|
|
}
|
|
}
|
|
}
|
|
else if (projectile1.type == 322)
|
|
{
|
|
Vector2 vector2 = new Vector2(projectile1.position.X + (float) projectile1.width * 0.5f, projectile1.position.Y + (float) projectile1.height * 0.5f);
|
|
float num131 = mountedCenter.X - vector2.X;
|
|
float num132 = mountedCenter.Y - vector2.Y;
|
|
float rotation = (float) Math.Atan2((double) num132, (double) num131) - 1.57f;
|
|
bool flag = true;
|
|
while (flag)
|
|
{
|
|
float f = (float) Math.Sqrt((double) num131 * (double) num131 + (double) num132 * (double) num132);
|
|
if ((double) f < 22.0)
|
|
flag = false;
|
|
else if (float.IsNaN(f))
|
|
{
|
|
flag = false;
|
|
}
|
|
else
|
|
{
|
|
float num133 = 22f / f;
|
|
float num134 = num131 * num133;
|
|
float num135 = num132 * num133;
|
|
vector2.X += num134;
|
|
vector2.Y += num135;
|
|
num131 = mountedCenter.X - vector2.X;
|
|
num132 = mountedCenter.Y - vector2.Y;
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) vector2.X / 16, (int) ((double) vector2.Y / 16.0));
|
|
Main.EntitySpriteDraw(TextureAssets.Chain29.Value, new Vector2(vector2.X - Main.screenPosition.X, vector2.Y - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Chain29.Width(), TextureAssets.Chain29.Height())), color, rotation, new Vector2((float) TextureAssets.Chain29.Width() * 0.5f, (float) TextureAssets.Chain29.Height() * 0.5f), 1f, SpriteEffects.None, 0);
|
|
}
|
|
}
|
|
}
|
|
else if (projectile1.type == 315)
|
|
{
|
|
Vector2 vector2 = new Vector2(projectile1.position.X + (float) projectile1.width * 0.5f, projectile1.position.Y + (float) projectile1.height * 0.5f);
|
|
float num136 = mountedCenter.X - vector2.X;
|
|
float num137 = mountedCenter.Y - vector2.Y;
|
|
float rotation = (float) Math.Atan2((double) num137, (double) num136) - 1.57f;
|
|
bool flag = true;
|
|
while (flag)
|
|
{
|
|
float f = (float) Math.Sqrt((double) num136 * (double) num136 + (double) num137 * (double) num137);
|
|
if ((double) f < 50.0)
|
|
flag = false;
|
|
else if (float.IsNaN(f))
|
|
{
|
|
flag = false;
|
|
}
|
|
else
|
|
{
|
|
float num138 = 40f / f;
|
|
float num139 = num136 * num138;
|
|
float num140 = num137 * num138;
|
|
vector2.X += num139;
|
|
vector2.Y += num140;
|
|
num136 = mountedCenter.X - vector2.X;
|
|
num137 = mountedCenter.Y - vector2.Y;
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) vector2.X / 16, (int) ((double) vector2.Y / 16.0));
|
|
Main.EntitySpriteDraw(TextureAssets.Chain28.Value, new Vector2(vector2.X - Main.screenPosition.X, vector2.Y - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Chain28.Width(), TextureAssets.Chain28.Height())), color, rotation, new Vector2((float) TextureAssets.Chain28.Width() * 0.5f, (float) TextureAssets.Chain28.Height() * 0.5f), 1f, SpriteEffects.None, 0);
|
|
}
|
|
}
|
|
}
|
|
else if (projectile1.type == 331)
|
|
{
|
|
Vector2 vector2 = new Vector2(projectile1.position.X + (float) projectile1.width * 0.5f, projectile1.position.Y + (float) projectile1.height * 0.5f);
|
|
float num141 = mountedCenter.X - vector2.X;
|
|
float num142 = mountedCenter.Y - vector2.Y;
|
|
float rotation = (float) Math.Atan2((double) num142, (double) num141) - 1.57f;
|
|
bool flag = true;
|
|
while (flag)
|
|
{
|
|
float f = (float) Math.Sqrt((double) num141 * (double) num141 + (double) num142 * (double) num142);
|
|
if ((double) f < 30.0)
|
|
flag = false;
|
|
else if (float.IsNaN(f))
|
|
{
|
|
flag = false;
|
|
}
|
|
else
|
|
{
|
|
float num143 = 24f / f;
|
|
float num144 = num141 * num143;
|
|
float num145 = num142 * num143;
|
|
vector2.X += num144;
|
|
vector2.Y += num145;
|
|
num141 = mountedCenter.X - vector2.X;
|
|
num142 = mountedCenter.Y - vector2.Y;
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) vector2.X / 16, (int) ((double) vector2.Y / 16.0));
|
|
Main.EntitySpriteDraw(TextureAssets.Chain30.Value, new Vector2(vector2.X - Main.screenPosition.X, vector2.Y - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Chain30.Width(), TextureAssets.Chain30.Height())), color, rotation, new Vector2((float) TextureAssets.Chain30.Width() * 0.5f, (float) TextureAssets.Chain30.Height() * 0.5f), 1f, SpriteEffects.None, 0);
|
|
}
|
|
}
|
|
}
|
|
else if (projectile1.type == 332)
|
|
{
|
|
int num146 = 0;
|
|
Vector2 vector2 = new Vector2(projectile1.position.X + (float) projectile1.width * 0.5f, projectile1.position.Y + (float) projectile1.height * 0.5f);
|
|
float num147 = mountedCenter.X - vector2.X;
|
|
float num148 = mountedCenter.Y - vector2.Y;
|
|
float rotation = (float) Math.Atan2((double) num148, (double) num147) - 1.57f;
|
|
bool flag = true;
|
|
while (flag)
|
|
{
|
|
float f = (float) Math.Sqrt((double) num147 * (double) num147 + (double) num148 * (double) num148);
|
|
if ((double) f < 30.0)
|
|
flag = false;
|
|
else if (float.IsNaN(f))
|
|
{
|
|
flag = false;
|
|
}
|
|
else
|
|
{
|
|
int i1 = (int) vector2.X / 16;
|
|
int j = (int) vector2.Y / 16;
|
|
if (num146 == 0)
|
|
Lighting.AddLight(i1, j, 0.0f, 0.2f, 0.2f);
|
|
if (num146 == 1)
|
|
Lighting.AddLight(i1, j, 0.1f, 0.2f, 0.0f);
|
|
if (num146 == 2)
|
|
Lighting.AddLight(i1, j, 0.2f, 0.1f, 0.0f);
|
|
if (num146 == 3)
|
|
Lighting.AddLight(i1, j, 0.2f, 0.0f, 0.2f);
|
|
float num149 = 16f / f;
|
|
float num150 = num147 * num149;
|
|
float num151 = num148 * num149;
|
|
vector2.X += num150;
|
|
vector2.Y += num151;
|
|
num147 = mountedCenter.X - vector2.X;
|
|
num148 = mountedCenter.Y - vector2.Y;
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) vector2.X / 16, (int) ((double) vector2.Y / 16.0));
|
|
Main.EntitySpriteDraw(TextureAssets.Chain31.Value, new Vector2(vector2.X - Main.screenPosition.X, vector2.Y - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, TextureAssets.Chain31.Height() / 4 * num146, TextureAssets.Chain31.Width(), TextureAssets.Chain31.Height() / 4)), color, rotation, new Vector2((float) TextureAssets.Chain30.Width() * 0.5f, (float) (TextureAssets.Chain30.Height() / 8)), 1f, SpriteEffects.None, 0);
|
|
Main.EntitySpriteDraw(TextureAssets.Chain32.Value, new Vector2(vector2.X - Main.screenPosition.X, vector2.Y - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, TextureAssets.Chain31.Height() / 4 * num146, TextureAssets.Chain31.Width(), TextureAssets.Chain31.Height() / 4)), new Microsoft.Xna.Framework.Color(200, 200, 200, 0), rotation, new Vector2((float) TextureAssets.Chain30.Width() * 0.5f, (float) (TextureAssets.Chain30.Height() / 8)), 1f, SpriteEffects.None, 0);
|
|
++num146;
|
|
if (num146 > 3)
|
|
num146 = 0;
|
|
}
|
|
}
|
|
}
|
|
else if (projectile1.type == 372 || projectile1.type == 383 || projectile1.type == 396 || projectile1.type == 403 || projectile1.type == 404 || projectile1.type == 446 || projectile1.type >= 486 && projectile1.type <= 489 || projectile1.type >= 646 && projectile1.type <= 649 || projectile1.type == 652)
|
|
{
|
|
Texture2D texture1 = (Texture2D) null;
|
|
Microsoft.Xna.Framework.Color color8 = Microsoft.Xna.Framework.Color.Transparent;
|
|
Texture2D texture2 = TextureAssets.Chain33.Value;
|
|
if (projectile1.type == 383)
|
|
texture2 = TextureAssets.Chain34.Value;
|
|
if (projectile1.type == 396)
|
|
texture2 = TextureAssets.Chain35.Value;
|
|
if (projectile1.type == 403)
|
|
texture2 = TextureAssets.Chain36.Value;
|
|
if (projectile1.type == 404)
|
|
texture2 = TextureAssets.Chain37.Value;
|
|
if (projectile1.type == 446)
|
|
texture2 = TextureAssets.Extra[3].Value;
|
|
if (projectile1.type >= 486 && projectile1.type <= 489)
|
|
texture2 = TextureAssets.Chains[projectile1.type - 486].Value;
|
|
if (projectile1.type >= 646 && projectile1.type <= 649)
|
|
{
|
|
texture2 = TextureAssets.Chains[projectile1.type - 646 + 8].Value;
|
|
texture1 = TextureAssets.Chains[projectile1.type - 646 + 12].Value;
|
|
color8 = new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, (int) sbyte.MaxValue);
|
|
}
|
|
if (projectile1.type == 652)
|
|
texture2 = TextureAssets.Chains[16].Value;
|
|
Vector2 position = projectile1.Center;
|
|
Microsoft.Xna.Framework.Rectangle? sourceRectangle = new Microsoft.Xna.Framework.Rectangle?();
|
|
Vector2 origin = new Vector2((float) texture2.Width * 0.5f, (float) texture2.Height * 0.5f);
|
|
float height = (float) texture2.Height;
|
|
float num152 = 0.0f;
|
|
if (projectile1.type == 446)
|
|
{
|
|
int num153 = 7;
|
|
int num154 = (int) projectile1.localAI[0] / num153;
|
|
sourceRectangle = new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, texture2.Height / 4 * num154, texture2.Width, texture2.Height / 4));
|
|
origin.Y /= 4f;
|
|
height /= 4f;
|
|
}
|
|
switch (projectile1.type)
|
|
{
|
|
case 383:
|
|
num152 = 14f;
|
|
break;
|
|
case 446:
|
|
num152 = 20f;
|
|
break;
|
|
case 487:
|
|
num152 = 8f;
|
|
break;
|
|
case 489:
|
|
num152 = 10f;
|
|
break;
|
|
}
|
|
if ((double) num152 != 0.0)
|
|
{
|
|
float num155 = -1.57f;
|
|
Vector2 vector2_1 = new Vector2((float) Math.Cos((double) projectile1.rotation + (double) num155), (float) Math.Sin((double) projectile1.rotation + (double) num155));
|
|
Vector2 vector2_2 = position - vector2_1 * num152;
|
|
Vector2 vector2_3 = mountedCenter - vector2_2;
|
|
vector2_3.Normalize();
|
|
position = vector2_2 - vector2_3 * height / 2f;
|
|
}
|
|
Vector2 vector2_4 = mountedCenter - position;
|
|
float rotation = (float) Math.Atan2((double) vector2_4.Y, (double) vector2_4.X) - 1.57f;
|
|
bool flag = true;
|
|
if (float.IsNaN(position.X) && float.IsNaN(position.Y))
|
|
flag = false;
|
|
if (float.IsNaN(vector2_4.X) && float.IsNaN(vector2_4.Y))
|
|
flag = false;
|
|
while (flag)
|
|
{
|
|
if ((double) vector2_4.Length() < (double) height + 1.0)
|
|
{
|
|
flag = false;
|
|
}
|
|
else
|
|
{
|
|
Vector2 vector2_5 = vector2_4;
|
|
vector2_5.Normalize();
|
|
position += vector2_5 * height;
|
|
vector2_4 = mountedCenter - position;
|
|
Microsoft.Xna.Framework.Color color9 = Lighting.GetColor((int) position.X / 16, (int) ((double) position.Y / 16.0));
|
|
if (projectile1.type == 396)
|
|
color9 *= (float) ((int) byte.MaxValue - projectile1.alpha) / (float) byte.MaxValue;
|
|
if (projectile1.type == 446)
|
|
color9 = projectile1.GetAlpha(color9);
|
|
if (projectile1.type == 488)
|
|
{
|
|
Lighting.AddLight(position, 0.2f, 0.0f, 0.175f);
|
|
color9 = new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue);
|
|
}
|
|
if (projectile1.type >= 646 && projectile1.type <= 649)
|
|
color9 = projectile1.GetAlpha(color9);
|
|
Main.EntitySpriteDraw(texture2, position - Main.screenPosition, sourceRectangle, color9, rotation, origin, 1f, SpriteEffects.None, 0);
|
|
if (texture1 != null)
|
|
Main.EntitySpriteDraw(texture1, position - Main.screenPosition, sourceRectangle, color8, rotation, origin, 1f, SpriteEffects.None, 0);
|
|
}
|
|
}
|
|
}
|
|
else if (projectile1.aiStyle == 7)
|
|
{
|
|
Vector2 vector2 = new Vector2(projectile1.position.X + (float) projectile1.width * 0.5f, projectile1.position.Y + (float) projectile1.height * 0.5f);
|
|
float num156 = mountedCenter.X - vector2.X;
|
|
float num157 = mountedCenter.Y - vector2.Y;
|
|
float rotation = (float) Math.Atan2((double) num157, (double) num156) - 1.57f;
|
|
bool flag = true;
|
|
while (flag)
|
|
{
|
|
float f = (float) Math.Sqrt((double) num156 * (double) num156 + (double) num157 * (double) num157);
|
|
if ((double) f < 25.0)
|
|
flag = false;
|
|
else if (float.IsNaN(f))
|
|
{
|
|
flag = false;
|
|
}
|
|
else
|
|
{
|
|
float num158 = 12f / f;
|
|
float num159 = num156 * num158;
|
|
float num160 = num157 * num158;
|
|
vector2.X += num159;
|
|
vector2.Y += num160;
|
|
num156 = mountedCenter.X - vector2.X;
|
|
num157 = mountedCenter.Y - vector2.Y;
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) vector2.X / 16, (int) ((double) vector2.Y / 16.0));
|
|
Main.EntitySpriteDraw(TextureAssets.Chain.Value, new Vector2(vector2.X - Main.screenPosition.X, vector2.Y - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Chain.Width(), TextureAssets.Chain.Height())), color, rotation, new Vector2((float) TextureAssets.Chain.Width() * 0.5f, (float) TextureAssets.Chain.Height() * 0.5f), 1f, SpriteEffects.None, 0);
|
|
}
|
|
}
|
|
}
|
|
else if (projectile1.type == 262)
|
|
{
|
|
float x1 = projectile1.Center.X;
|
|
float y1 = projectile1.Center.Y;
|
|
float x2 = projectile1.velocity.X;
|
|
float y2 = projectile1.velocity.Y;
|
|
float num161 = 4f / (float) Math.Sqrt((double) x2 * (double) x2 + (double) y2 * (double) y2);
|
|
float x3;
|
|
float y3;
|
|
if ((double) projectile1.ai[0] == 0.0)
|
|
{
|
|
x3 = x1 - projectile1.velocity.X * num161;
|
|
y3 = y1 - projectile1.velocity.Y * num161;
|
|
}
|
|
else
|
|
{
|
|
x3 = x1 + projectile1.velocity.X * num161;
|
|
y3 = y1 + projectile1.velocity.Y * num161;
|
|
}
|
|
Vector2 vector2 = new Vector2(x3, y3);
|
|
float num162 = mountedCenter.X - vector2.X;
|
|
float num163 = mountedCenter.Y - vector2.Y;
|
|
float rotation = (float) Math.Atan2((double) num163, (double) num162) - 1.57f;
|
|
if (projectile1.alpha == 0)
|
|
{
|
|
int num164 = -1;
|
|
if ((double) projectile1.position.X + (double) (projectile1.width / 2) < (double) mountedCenter.X)
|
|
num164 = 1;
|
|
Main.player[projectile1.owner].itemRotation = Main.player[projectile1.owner].direction != 1 ? (float) Math.Atan2((double) num163 * (double) num164, (double) num162 * (double) num164) : (float) Math.Atan2((double) num163 * (double) num164, (double) num162 * (double) num164);
|
|
}
|
|
bool flag = true;
|
|
while (flag)
|
|
{
|
|
float f = (float) Math.Sqrt((double) num162 * (double) num162 + (double) num163 * (double) num163);
|
|
if ((double) f < 25.0)
|
|
flag = false;
|
|
else if (float.IsNaN(f))
|
|
{
|
|
flag = false;
|
|
}
|
|
else
|
|
{
|
|
float num165 = 12f / f;
|
|
float num166 = num162 * num165;
|
|
float num167 = num163 * num165;
|
|
vector2.X += num166;
|
|
vector2.Y += num167;
|
|
num162 = mountedCenter.X - vector2.X;
|
|
num163 = mountedCenter.Y - vector2.Y;
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) vector2.X / 16, (int) ((double) vector2.Y / 16.0));
|
|
Main.EntitySpriteDraw(TextureAssets.Chain22.Value, new Vector2(vector2.X - Main.screenPosition.X, vector2.Y - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Chain22.Width(), TextureAssets.Chain22.Height())), color, rotation, new Vector2((float) TextureAssets.Chain22.Width() * 0.5f, (float) TextureAssets.Chain22.Height() * 0.5f), 1f, SpriteEffects.None, 0);
|
|
}
|
|
}
|
|
}
|
|
else if (projectile1.type == 273)
|
|
{
|
|
float x4 = projectile1.Center.X;
|
|
float y4 = projectile1.Center.Y;
|
|
float x5 = projectile1.velocity.X;
|
|
float y5 = projectile1.velocity.Y;
|
|
float num168 = 4f / (float) Math.Sqrt((double) x5 * (double) x5 + (double) y5 * (double) y5);
|
|
float x6;
|
|
float y6;
|
|
if ((double) projectile1.ai[0] == 0.0)
|
|
{
|
|
x6 = x4 - projectile1.velocity.X * num168;
|
|
y6 = y4 - projectile1.velocity.Y * num168;
|
|
}
|
|
else
|
|
{
|
|
x6 = x4 + projectile1.velocity.X * num168;
|
|
y6 = y4 + projectile1.velocity.Y * num168;
|
|
}
|
|
Vector2 vector2 = new Vector2(x6, y6);
|
|
float num169 = mountedCenter.X - vector2.X;
|
|
float num170 = mountedCenter.Y - vector2.Y;
|
|
float rotation = (float) Math.Atan2((double) num170, (double) num169) - 1.57f;
|
|
if (projectile1.alpha == 0)
|
|
{
|
|
int num171 = -1;
|
|
if ((double) projectile1.position.X + (double) (projectile1.width / 2) < (double) mountedCenter.X)
|
|
num171 = 1;
|
|
Main.player[projectile1.owner].itemRotation = Main.player[projectile1.owner].direction != 1 ? (float) Math.Atan2((double) num170 * (double) num171, (double) num169 * (double) num171) : (float) Math.Atan2((double) num170 * (double) num171, (double) num169 * (double) num171);
|
|
}
|
|
bool flag = true;
|
|
while (flag)
|
|
{
|
|
float f = (float) Math.Sqrt((double) num169 * (double) num169 + (double) num170 * (double) num170);
|
|
if ((double) f < 25.0)
|
|
flag = false;
|
|
else if (float.IsNaN(f))
|
|
{
|
|
flag = false;
|
|
}
|
|
else
|
|
{
|
|
float num172 = 12f / f;
|
|
float num173 = num169 * num172;
|
|
float num174 = num170 * num172;
|
|
vector2.X += num173;
|
|
vector2.Y += num174;
|
|
num169 = mountedCenter.X - vector2.X;
|
|
num170 = mountedCenter.Y - vector2.Y;
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) vector2.X / 16, (int) ((double) vector2.Y / 16.0));
|
|
Main.EntitySpriteDraw(TextureAssets.Chain23.Value, new Vector2(vector2.X - Main.screenPosition.X, vector2.Y - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Chain23.Width(), TextureAssets.Chain23.Height())), color, rotation, new Vector2((float) TextureAssets.Chain23.Width() * 0.5f, (float) TextureAssets.Chain23.Height() * 0.5f), 1f, SpriteEffects.None, 0);
|
|
}
|
|
}
|
|
}
|
|
else if (projectile1.type == 481)
|
|
{
|
|
float x7 = projectile1.Center.X;
|
|
float y7 = projectile1.Center.Y;
|
|
float x8 = projectile1.velocity.X;
|
|
float y8 = projectile1.velocity.Y;
|
|
float num175 = 4f / (float) Math.Sqrt((double) x8 * (double) x8 + (double) y8 * (double) y8);
|
|
float x9;
|
|
float y9;
|
|
if ((double) projectile1.ai[0] == 0.0)
|
|
{
|
|
x9 = x7 - projectile1.velocity.X * num175;
|
|
y9 = y7 - projectile1.velocity.Y * num175;
|
|
}
|
|
else
|
|
{
|
|
x9 = x7 + projectile1.velocity.X * num175;
|
|
y9 = y7 + projectile1.velocity.Y * num175;
|
|
}
|
|
Vector2 vector2 = new Vector2(x9, y9);
|
|
float num176 = mountedCenter.X - vector2.X;
|
|
float num177 = mountedCenter.Y - vector2.Y;
|
|
float rotation = (float) Math.Atan2((double) num177, (double) num176) - 1.57f;
|
|
if (projectile1.alpha == 0)
|
|
{
|
|
int num178 = -1;
|
|
if ((double) projectile1.position.X + (double) (projectile1.width / 2) < (double) mountedCenter.X)
|
|
num178 = 1;
|
|
Main.player[projectile1.owner].itemRotation = Main.player[projectile1.owner].direction != 1 ? (float) Math.Atan2((double) num177 * (double) num178, (double) num176 * (double) num178) : (float) Math.Atan2((double) num177 * (double) num178, (double) num176 * (double) num178);
|
|
}
|
|
bool flag = true;
|
|
while (flag)
|
|
{
|
|
float scale = 0.85f;
|
|
float f3 = (float) Math.Sqrt((double) num176 * (double) num176 + (double) num177 * (double) num177);
|
|
float num179 = f3;
|
|
if ((double) f3 < (double) TextureAssets.Chain40.Height() * 1.5)
|
|
flag = false;
|
|
else if (float.IsNaN(f3))
|
|
{
|
|
flag = false;
|
|
}
|
|
else
|
|
{
|
|
float num180 = (float) TextureAssets.Chain40.Height() * scale / f3;
|
|
float num181 = num176 * num180;
|
|
float num182 = num177 * num180;
|
|
vector2.X += num181;
|
|
vector2.Y += num182;
|
|
num176 = mountedCenter.X - vector2.X;
|
|
num177 = mountedCenter.Y - vector2.Y;
|
|
if ((double) num179 > (double) (TextureAssets.Chain40.Height() * 2))
|
|
{
|
|
for (int index = 0; index < 2; ++index)
|
|
{
|
|
float num183 = 0.75f;
|
|
float num184 = index != 0 ? Math.Abs(Main.player[projectile1.owner].velocity.Y) : Math.Abs(Main.player[projectile1.owner].velocity.X);
|
|
if ((double) num184 > 10.0)
|
|
num184 = 10f;
|
|
float num185 = num184 / 10f;
|
|
float num186 = num183 * num185;
|
|
float num187 = num179 / 80f;
|
|
if ((double) num187 > 1.0)
|
|
num187 = 1f;
|
|
float f4 = num186 * num187;
|
|
if ((double) f4 < 0.0)
|
|
f4 = 0.0f;
|
|
if (!float.IsNaN(f4))
|
|
{
|
|
if (index == 0)
|
|
{
|
|
if ((double) Main.player[projectile1.owner].velocity.X < 0.0 && (double) projectile1.Center.X < (double) mountedCenter.X)
|
|
num177 *= 1f - f4;
|
|
if ((double) Main.player[projectile1.owner].velocity.X > 0.0 && (double) projectile1.Center.X > (double) mountedCenter.X)
|
|
num177 *= 1f - f4;
|
|
}
|
|
else
|
|
{
|
|
if ((double) Main.player[projectile1.owner].velocity.Y < 0.0 && (double) projectile1.Center.Y < (double) mountedCenter.Y)
|
|
num176 *= 1f - f4;
|
|
if ((double) Main.player[projectile1.owner].velocity.Y > 0.0 && (double) projectile1.Center.Y > (double) mountedCenter.Y)
|
|
num176 *= 1f - f4;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) vector2.X / 16, (int) ((double) vector2.Y / 16.0));
|
|
Main.EntitySpriteDraw(TextureAssets.Chain40.Value, new Vector2(vector2.X - Main.screenPosition.X, vector2.Y - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Chain40.Width(), TextureAssets.Chain40.Height())), color, rotation, new Vector2((float) TextureAssets.Chain40.Width() * 0.5f, (float) TextureAssets.Chain40.Height() * 0.5f), scale, SpriteEffects.None, 0);
|
|
}
|
|
}
|
|
}
|
|
else if (projectile1.type == 271)
|
|
{
|
|
float x10 = projectile1.Center.X;
|
|
float y10 = projectile1.Center.Y;
|
|
float x11 = projectile1.velocity.X;
|
|
float y11 = projectile1.velocity.Y;
|
|
float num188 = 4f / (float) Math.Sqrt((double) x11 * (double) x11 + (double) y11 * (double) y11);
|
|
float x12;
|
|
float y12;
|
|
if ((double) projectile1.ai[0] == 0.0)
|
|
{
|
|
x12 = x10 - projectile1.velocity.X * num188;
|
|
y12 = y10 - projectile1.velocity.Y * num188;
|
|
}
|
|
else
|
|
{
|
|
x12 = x10 + projectile1.velocity.X * num188;
|
|
y12 = y10 + projectile1.velocity.Y * num188;
|
|
}
|
|
Vector2 vector2 = new Vector2(x12, y12);
|
|
float num189 = mountedCenter.X - vector2.X;
|
|
float num190 = mountedCenter.Y - vector2.Y;
|
|
float rotation = (float) Math.Atan2((double) num190, (double) num189) - 1.57f;
|
|
if (projectile1.alpha == 0)
|
|
{
|
|
int num191 = -1;
|
|
if ((double) projectile1.position.X + (double) (projectile1.width / 2) < (double) mountedCenter.X)
|
|
num191 = 1;
|
|
Main.player[projectile1.owner].itemRotation = Main.player[projectile1.owner].direction != 1 ? (float) Math.Atan2((double) num190 * (double) num191, (double) num189 * (double) num191) : (float) Math.Atan2((double) num190 * (double) num191, (double) num189 * (double) num191);
|
|
}
|
|
bool flag = true;
|
|
while (flag)
|
|
{
|
|
float f = (float) Math.Sqrt((double) num189 * (double) num189 + (double) num190 * (double) num190);
|
|
if ((double) f < 25.0)
|
|
flag = false;
|
|
else if (float.IsNaN(f))
|
|
{
|
|
flag = false;
|
|
}
|
|
else
|
|
{
|
|
float num192 = 12f / f;
|
|
float num193 = num189 * num192;
|
|
float num194 = num190 * num192;
|
|
vector2.X += num193;
|
|
vector2.Y += num194;
|
|
num189 = mountedCenter.X - vector2.X;
|
|
num190 = mountedCenter.Y - vector2.Y;
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) vector2.X / 16, (int) ((double) vector2.Y / 16.0));
|
|
Main.EntitySpriteDraw(TextureAssets.Chain18.Value, new Vector2(vector2.X - Main.screenPosition.X, vector2.Y - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Chain18.Width(), TextureAssets.Chain18.Height())), color, rotation, new Vector2((float) TextureAssets.Chain18.Width() * 0.5f, (float) TextureAssets.Chain18.Height() * 0.5f), 1f, SpriteEffects.None, 0);
|
|
}
|
|
}
|
|
}
|
|
else if (projectile1.aiStyle == 13)
|
|
{
|
|
float num195 = projectile1.position.X + 8f;
|
|
float num196 = projectile1.position.Y + 2f;
|
|
float x13 = projectile1.velocity.X;
|
|
float num197 = projectile1.velocity.Y;
|
|
if ((double) x13 == 0.0 && (double) num197 == 0.0)
|
|
num197 = 0.0001f;
|
|
float num198 = 20f / (float) Math.Sqrt((double) x13 * (double) x13 + (double) num197 * (double) num197);
|
|
float x14;
|
|
float y;
|
|
if ((double) projectile1.ai[0] == 0.0)
|
|
{
|
|
x14 = num195 - projectile1.velocity.X * num198;
|
|
y = num196 - projectile1.velocity.Y * num198;
|
|
}
|
|
else
|
|
{
|
|
x14 = num195 + projectile1.velocity.X * num198;
|
|
y = num196 + projectile1.velocity.Y * num198;
|
|
}
|
|
Vector2 vector2 = new Vector2(x14, y);
|
|
float num199 = mountedCenter.X - vector2.X;
|
|
float num200 = mountedCenter.Y - vector2.Y;
|
|
float rotation = (float) Math.Atan2((double) num200, (double) num199) - 1.57f;
|
|
if (projectile1.alpha == 0)
|
|
{
|
|
int num201 = -1;
|
|
if ((double) projectile1.position.X + (double) (projectile1.width / 2) < (double) mountedCenter.X)
|
|
num201 = 1;
|
|
Main.player[projectile1.owner].itemRotation = Main.player[projectile1.owner].direction != 1 ? (float) Math.Atan2((double) num200 * (double) num201, (double) num199 * (double) num201) : (float) Math.Atan2((double) num200 * (double) num201, (double) num199 * (double) num201);
|
|
}
|
|
bool flag = true;
|
|
while (flag)
|
|
{
|
|
float f = (float) Math.Sqrt((double) num199 * (double) num199 + (double) num200 * (double) num200);
|
|
if ((double) f < 25.0)
|
|
flag = false;
|
|
else if (float.IsNaN(f))
|
|
{
|
|
flag = false;
|
|
}
|
|
else
|
|
{
|
|
float num202 = 12f / f;
|
|
float num203 = num199 * num202;
|
|
float num204 = num200 * num202;
|
|
vector2.X += num203;
|
|
vector2.Y += num204;
|
|
num199 = mountedCenter.X - vector2.X;
|
|
num200 = mountedCenter.Y - vector2.Y;
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) vector2.X / 16, (int) ((double) vector2.Y / 16.0));
|
|
Main.EntitySpriteDraw(TextureAssets.Chain.Value, new Vector2(vector2.X - Main.screenPosition.X, vector2.Y - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Chain.Width(), TextureAssets.Chain.Height())), color, rotation, new Vector2((float) TextureAssets.Chain.Width() * 0.5f, (float) TextureAssets.Chain.Height() * 0.5f), 1f, SpriteEffects.None, 0);
|
|
}
|
|
}
|
|
}
|
|
else if (projectile1.type == 190)
|
|
{
|
|
float x15 = projectile1.position.X + (float) (projectile1.width / 2);
|
|
float y13 = projectile1.position.Y + (float) (projectile1.height / 2);
|
|
float x16 = projectile1.velocity.X;
|
|
float y14 = projectile1.velocity.Y;
|
|
Math.Sqrt((double) x16 * (double) x16 + (double) y14 * (double) y14);
|
|
Vector2 vector2 = new Vector2(x15, y13);
|
|
float num205 = mountedCenter.X - vector2.X;
|
|
float num206 = mountedCenter.Y + Main.player[projectile1.owner].gfxOffY - vector2.Y;
|
|
Math.Atan2((double) num206, (double) num205);
|
|
if (projectile1.alpha == 0)
|
|
{
|
|
int num207 = -1;
|
|
if ((double) projectile1.position.X + (double) (projectile1.width / 2) < (double) mountedCenter.X)
|
|
num207 = 1;
|
|
Main.player[projectile1.owner].itemRotation = Main.player[projectile1.owner].direction != 1 ? (float) Math.Atan2((double) num206 * (double) num207, (double) num205 * (double) num207) : (float) Math.Atan2((double) num206 * (double) num207, (double) num205 * (double) num207);
|
|
}
|
|
}
|
|
else if (projectile1.aiStyle == 15)
|
|
Main.DrawProj_FlailChains(projectile1, mountedCenter);
|
|
Microsoft.Xna.Framework.Color color10 = Lighting.GetColor((int) ((double) projectile1.position.X + (double) projectile1.width * 0.5) / 16, (int) (((double) projectile1.position.Y + (double) projectile1.height * 0.5) / 16.0));
|
|
if (projectile1.hide && !ProjectileID.Sets.DontAttachHideToAlpha[projectile1.type])
|
|
color10 = Lighting.GetColor((int) mountedCenter.X / 16, (int) ((double) mountedCenter.Y / 16.0));
|
|
if (projectile1.type == 14)
|
|
color10 = Microsoft.Xna.Framework.Color.White;
|
|
int num208 = 0;
|
|
int num209 = 0;
|
|
if (projectile1.type == 175)
|
|
num208 = 10;
|
|
if (projectile1.type == 392)
|
|
num208 = -2;
|
|
if (projectile1.type == 499)
|
|
num208 = 12;
|
|
if (projectile1.type == 765)
|
|
{
|
|
num208 = 22;
|
|
num209 = -16;
|
|
}
|
|
if (projectile1.bobber)
|
|
num208 = 8;
|
|
if (projectile1.type == 519)
|
|
{
|
|
num208 = 6;
|
|
num209 -= 6;
|
|
}
|
|
if (projectile1.type == 520)
|
|
num208 = 12;
|
|
if (projectile1.type == 492)
|
|
{
|
|
num209 -= 4;
|
|
num208 += 5;
|
|
}
|
|
if (projectile1.type == 498)
|
|
num208 = 6;
|
|
if (projectile1.type == 489)
|
|
num208 = -2;
|
|
if (projectile1.type == 486)
|
|
num208 = -6;
|
|
if (projectile1.type == 525)
|
|
num208 = 5;
|
|
if (projectile1.type == 488)
|
|
num209 -= 8;
|
|
if (projectile1.type == 373)
|
|
{
|
|
num209 = -10;
|
|
num208 = 6;
|
|
}
|
|
if (projectile1.type == 375)
|
|
{
|
|
num209 = -11;
|
|
num208 = 12;
|
|
}
|
|
if (projectile1.type == 423)
|
|
num209 = -5;
|
|
if (projectile1.type == 346)
|
|
num208 = 4;
|
|
if (projectile1.type == 331)
|
|
num209 = -4;
|
|
if (projectile1.type == 254)
|
|
num208 = 3;
|
|
if (projectile1.type == 273)
|
|
num209 = 2;
|
|
if (projectile1.type == 335)
|
|
num208 = 6;
|
|
if (projectile1.type == 162)
|
|
{
|
|
num208 = 1;
|
|
num209 = 1;
|
|
}
|
|
if (projectile1.type == 377)
|
|
num208 = -6;
|
|
if (projectile1.type == 353)
|
|
{
|
|
num208 = 36;
|
|
num209 = -12;
|
|
}
|
|
if (projectile1.type == 324)
|
|
{
|
|
num208 = 22;
|
|
num209 = -6;
|
|
}
|
|
if (projectile1.type == 266)
|
|
{
|
|
num208 = 10;
|
|
num209 = -10;
|
|
}
|
|
if (projectile1.type == 319)
|
|
{
|
|
num208 = 10;
|
|
num209 = -12;
|
|
}
|
|
if (projectile1.type == 315)
|
|
{
|
|
num208 = -13;
|
|
num209 = -6;
|
|
}
|
|
if (projectile1.type == 313 && projectile1.height != 54)
|
|
{
|
|
num209 = -12;
|
|
num208 = 20;
|
|
}
|
|
if (projectile1.type == 314)
|
|
{
|
|
num209 = -8;
|
|
num208 = 0;
|
|
}
|
|
if (projectile1.type == 269)
|
|
{
|
|
num208 = 18;
|
|
num209 = -14;
|
|
}
|
|
if (projectile1.type == 268)
|
|
{
|
|
num208 = 22;
|
|
num209 = -2;
|
|
}
|
|
if (projectile1.type == 18)
|
|
{
|
|
num208 = 3;
|
|
num209 = 3;
|
|
}
|
|
if (projectile1.type == 16)
|
|
num208 = 6;
|
|
if (projectile1.type == 17 || projectile1.type == 31)
|
|
num208 = 2;
|
|
if (projectile1.type == 25 || projectile1.type == 26 || projectile1.type == 35 || projectile1.type == 63 || projectile1.type == 154)
|
|
{
|
|
num208 = 6;
|
|
num209 -= 6;
|
|
}
|
|
if (projectile1.type == 947 || projectile1.type == 948)
|
|
{
|
|
num208 = 4;
|
|
num209 -= 4;
|
|
}
|
|
if (projectile1.type == 28 || projectile1.type == 37 || projectile1.type == 75)
|
|
num208 = 8;
|
|
if (projectile1.type == 29 || projectile1.type == 470 || projectile1.type == 637)
|
|
num208 = 11;
|
|
if (projectile1.type == 43)
|
|
num208 = 4;
|
|
if (projectile1.type == 208)
|
|
{
|
|
num208 = 2;
|
|
num209 -= 12;
|
|
}
|
|
if (projectile1.type == 209)
|
|
{
|
|
num208 = 4;
|
|
num209 -= 8;
|
|
}
|
|
if (projectile1.type == 210)
|
|
{
|
|
num208 = 2;
|
|
num209 -= 22;
|
|
}
|
|
if (projectile1.type == 251)
|
|
{
|
|
num208 = 18;
|
|
num209 -= 10;
|
|
}
|
|
if (projectile1.type == 163 || projectile1.type == 310)
|
|
num208 = 10;
|
|
if (projectile1.type == 69 || projectile1.type == 70)
|
|
{
|
|
num208 = 4;
|
|
num209 = 4;
|
|
}
|
|
float x17 = (float) ((double) (TextureAssets.Projectile[projectile1.type].Width() - projectile1.width) * 0.5 + (double) projectile1.width * 0.5);
|
|
if (projectile1.type == 50 || projectile1.type == 53 || projectile1.type == 515 || projectile1.type == 870)
|
|
num209 = -8;
|
|
if (projectile1.type == 473)
|
|
{
|
|
num209 = -6;
|
|
num208 = 2;
|
|
}
|
|
if (projectile1.type == 72 || projectile1.type == 86 || projectile1.type == 87)
|
|
{
|
|
num209 = -16;
|
|
num208 = 8;
|
|
}
|
|
if (projectile1.type == 74)
|
|
num209 = -6;
|
|
if (projectile1.type == 138 || projectile1.type == 484)
|
|
num208 = 1;
|
|
if (projectile1.type == 655)
|
|
num208 = 1;
|
|
if (projectile1.type == 111)
|
|
{
|
|
num208 = 18;
|
|
num209 = -16;
|
|
}
|
|
if (projectile1.type == 875)
|
|
{
|
|
num208 = 16;
|
|
num209 = -16;
|
|
}
|
|
if (projectile1.type == 881)
|
|
{
|
|
num208 = 14;
|
|
num209 = -8;
|
|
}
|
|
if (projectile1.type == 934)
|
|
{
|
|
num208 = 14;
|
|
num209 = -20;
|
|
}
|
|
if (projectile1.type == 884)
|
|
{
|
|
num208 = 16;
|
|
num209 = -12;
|
|
}
|
|
if (projectile1.type == 890)
|
|
{
|
|
num208 = 26;
|
|
num209 = -9;
|
|
}
|
|
if (projectile1.type == 891)
|
|
{
|
|
num208 = 30;
|
|
num209 = -12;
|
|
}
|
|
if (projectile1.type == 897)
|
|
{
|
|
num208 = 38;
|
|
num209 = -13;
|
|
}
|
|
if (projectile1.type == 899)
|
|
{
|
|
num208 = 28;
|
|
num209 = -12;
|
|
}
|
|
if (projectile1.type == 900)
|
|
{
|
|
num208 = 54;
|
|
num209 = -30;
|
|
}
|
|
if (projectile1.type == 334)
|
|
{
|
|
num209 = -18;
|
|
num208 = 8;
|
|
}
|
|
if (projectile1.type == 816)
|
|
{
|
|
num209 = -19;
|
|
num208 = 6;
|
|
}
|
|
if (projectile1.type == 821)
|
|
{
|
|
num209 = -10;
|
|
num208 = 6;
|
|
}
|
|
if (projectile1.type == 825)
|
|
{
|
|
num209 = -19;
|
|
num208 = 14;
|
|
}
|
|
if (projectile1.type == 854)
|
|
{
|
|
num209 = -14;
|
|
num208 = -4;
|
|
}
|
|
if (projectile1.type == 858)
|
|
{
|
|
num209 = -8;
|
|
num208 = 16;
|
|
}
|
|
if (projectile1.type == 859)
|
|
{
|
|
num209 = -8;
|
|
num208 = 8;
|
|
}
|
|
if (projectile1.type == 860)
|
|
{
|
|
num209 = -8;
|
|
num208 = 34;
|
|
}
|
|
if (projectile1.type == 200)
|
|
{
|
|
num208 = 12;
|
|
num209 = -12;
|
|
}
|
|
if (projectile1.type == 211)
|
|
{
|
|
num208 = 14;
|
|
num209 = 0;
|
|
}
|
|
if (projectile1.type == 236)
|
|
{
|
|
num208 = 30;
|
|
num209 = -14;
|
|
}
|
|
if (projectile1.type >= 191 && projectile1.type <= 194)
|
|
{
|
|
num208 = 26;
|
|
num209 = projectile1.direction != 1 ? -22 : -10;
|
|
}
|
|
if (projectile1.type >= 390 && projectile1.type <= 392)
|
|
num209 = 4 * projectile1.direction;
|
|
if (projectile1.type == 112)
|
|
num208 = 12;
|
|
int type1 = projectile1.type;
|
|
if (projectile1.type == 517 || projectile1.type == 681)
|
|
num208 = 6;
|
|
if (projectile1.type == 516)
|
|
num208 = 6;
|
|
if (projectile1.type == (int) sbyte.MaxValue)
|
|
num208 = 8;
|
|
if (projectile1.type == 155)
|
|
{
|
|
num208 = 3;
|
|
num209 = 3;
|
|
}
|
|
if (projectile1.type == 397)
|
|
{
|
|
--x17;
|
|
num208 = -2;
|
|
num209 = -2;
|
|
}
|
|
if (projectile1.type == 398)
|
|
num208 = 8;
|
|
SpriteEffects spriteEffects = SpriteEffects.None;
|
|
if (projectile1.spriteDirection == -1)
|
|
spriteEffects = SpriteEffects.FlipHorizontally;
|
|
if (projectile1.type == 681 && (double) projectile1.velocity.X > 0.0)
|
|
spriteEffects ^= SpriteEffects.FlipHorizontally;
|
|
if (projectile1.type == 221)
|
|
{
|
|
for (int index = 1; index < 10; ++index)
|
|
{
|
|
float num210 = (float) ((double) projectile1.velocity.X * (double) index * 0.5);
|
|
float num211 = (float) ((double) projectile1.velocity.Y * (double) index * 0.5);
|
|
Microsoft.Xna.Framework.Color alpha = projectile1.GetAlpha(color10);
|
|
float num212 = 0.0f;
|
|
if (index == 1)
|
|
num212 = 0.9f;
|
|
if (index == 2)
|
|
num212 = 0.8f;
|
|
if (index == 3)
|
|
num212 = 0.7f;
|
|
if (index == 4)
|
|
num212 = 0.6f;
|
|
if (index == 5)
|
|
num212 = 0.5f;
|
|
if (index == 6)
|
|
num212 = 0.4f;
|
|
if (index == 7)
|
|
num212 = 0.3f;
|
|
if (index == 8)
|
|
num212 = 0.2f;
|
|
if (index == 9)
|
|
num212 = 0.1f;
|
|
alpha.R = (byte) ((double) alpha.R * (double) num212);
|
|
alpha.G = (byte) ((double) alpha.G * (double) num212);
|
|
alpha.B = (byte) ((double) alpha.B * (double) num212);
|
|
alpha.A = (byte) ((double) alpha.A * (double) num212);
|
|
int height = TextureAssets.Projectile[projectile1.type].Height() / Main.projFrames[projectile1.type];
|
|
int y = height * projectile1.frame;
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, new Vector2(projectile1.position.X - Main.screenPosition.X + x17 + (float) num209 - num210, projectile1.position.Y - Main.screenPosition.Y + (float) (projectile1.height / 2) + projectile1.gfxOffY - num211), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, y, TextureAssets.Projectile[projectile1.type].Width(), height)), alpha, projectile1.rotation, new Vector2(x17, (float) (projectile1.height / 2 + num208)), projectile1.scale, spriteEffects, 0);
|
|
}
|
|
}
|
|
if (projectile1.type == 408 || projectile1.type == 435 || projectile1.type == 436 || projectile1.type == 438 || projectile1.type == 452 || projectile1.type == 454 || projectile1.type == 459 || projectile1.type == 462 || projectile1.type == 503 || projectile1.type == 532 || projectile1.type == 533 || projectile1.type == 573 || projectile1.type == 582 || projectile1.type == 585 || projectile1.type == 592 || projectile1.type == 601 || projectile1.type == 636 || projectile1.type == 638 || projectile1.type == 640 || projectile1.type == 639 || projectile1.type == 424 || projectile1.type == 425 || projectile1.type == 426 || projectile1.type == 660 || projectile1.type == 661 || projectile1.type == 671 || projectile1.type == 664 || projectile1.type == 666 || projectile1.type == 668 || projectile1.type == 675 || projectile1.type == 680 || projectile1.type == 682 || projectile1.type == 684 || projectile1.type == 686 || projectile1.type == 700 || projectile1.type == 706 || projectile1.type == 709 || projectile1.type == 710 || projectile1.type == 711 || projectile1.type == 261 || ProjectileID.Sets.IsAGolfBall[projectile1.type] || projectile1.type == 729 || projectile1.type == 732 || projectile1.type == 731 || projectile1.type == 755 || projectile1.type == 811 || projectile1.type == 814 || projectile1.type == 819 || projectile1.type == 864 || projectile1.type == 873 || projectile1.type == 872 || projectile1.type == 833 || projectile1.type == 834 || projectile1.type == 835 || projectile1.type == 818 || projectile1.type == 902 || projectile1.type == 894 || projectile1.type == 901 || projectile1.type == 909 || projectile1.type == 916 || projectile1.type == 931 || projectile1.type == 933)
|
|
{
|
|
Texture2D texture2D1 = TextureAssets.Projectile[projectile1.type].Value;
|
|
int height = TextureAssets.Projectile[projectile1.type].Height() / Main.projFrames[projectile1.type];
|
|
Microsoft.Xna.Framework.Rectangle r1 = new Microsoft.Xna.Framework.Rectangle(0, height * projectile1.frame, texture2D1.Width, height);
|
|
Vector2 origin1 = r1.Size() / 2f;
|
|
Vector2 zero = Vector2.Zero;
|
|
float num213 = 0.0f;
|
|
if (projectile1.type == 503)
|
|
origin1.Y = 70f;
|
|
if (projectile1.type == 686 || projectile1.type == 711)
|
|
origin1.Y = (float) (r1.Height - 70);
|
|
if (projectile1.type == 438)
|
|
r1.Y = 0;
|
|
if (projectile1.type == 452)
|
|
r1.Y = 0;
|
|
if (projectile1.type == 408)
|
|
r1.Y = height;
|
|
if (projectile1.type == 636)
|
|
origin1.Y = 10f;
|
|
if (projectile1.type == 638)
|
|
origin1.Y = 2f;
|
|
if (projectile1.type == 640 || projectile1.type == 639 || projectile1.type == 710)
|
|
origin1.Y = 5f;
|
|
if (projectile1.type == 700)
|
|
origin1.X = projectile1.spriteDirection == 1 ? (float) (r1.Width - 20) : 20f;
|
|
if (projectile1.type == 872)
|
|
{
|
|
r1.Width /= 2;
|
|
origin1.X /= 2f;
|
|
}
|
|
if (projectile1.type == 933)
|
|
{
|
|
int index = (int) projectile1.ai[1];
|
|
if (TextureAssets.Item.IndexInRange<Asset<Texture2D>>(index))
|
|
{
|
|
Main.instance.LoadItem(index);
|
|
texture2D1 = TextureAssets.Item[index].Value;
|
|
r1 = texture2D1.Frame();
|
|
origin1 = r1.Size() / 2f;
|
|
num213 = -0.7853982f * (float) projectile1.spriteDirection;
|
|
}
|
|
}
|
|
if (projectile1.type == 833 && projectile1.frame != 8)
|
|
{
|
|
zero.Y += (float) (projectile1.height / 2);
|
|
origin1 = r1.Size() * new Vector2(0.5f, 1f);
|
|
origin1.Y -= 4f;
|
|
origin1.X -= (float) (7 * spriteEffects.HasFlag((Enum) SpriteEffects.FlipHorizontally).ToDirectionInt());
|
|
}
|
|
if ((projectile1.type == 834 || projectile1.type == 835) && projectile1.frame != 10)
|
|
{
|
|
zero.Y += (float) (projectile1.height / 2);
|
|
origin1 = r1.Size() * new Vector2(0.5f, 1f);
|
|
origin1.Y -= 4f;
|
|
origin1.X -= (float) (2 * spriteEffects.HasFlag((Enum) SpriteEffects.FlipHorizontally).ToDirectionInt());
|
|
}
|
|
int num214 = 8;
|
|
int num215 = 2;
|
|
int num216 = 1;
|
|
float num217 = 1f;
|
|
float num218 = 15f;
|
|
float num219 = 0.0f;
|
|
Microsoft.Xna.Framework.Rectangle rectangle1 = r1;
|
|
UnifiedRandom r2 = (UnifiedRandom) null;
|
|
if (projectile1.type == 503)
|
|
{
|
|
num214 = 9;
|
|
num215 = 3;
|
|
num217 = 0.5f;
|
|
}
|
|
else if (projectile1.type == 261)
|
|
{
|
|
num216 = 18;
|
|
num214 = 0;
|
|
num215 = -2;
|
|
num217 = 1.3f;
|
|
}
|
|
else if (projectile1.type == 833 || projectile1.type == 834 || projectile1.type == 835)
|
|
{
|
|
num216 = 6;
|
|
num214 = 0;
|
|
num215 = -1;
|
|
num217 = 1.5f;
|
|
}
|
|
else if (projectile1.type == 818)
|
|
{
|
|
num216 = 18;
|
|
num214 = 0;
|
|
num215 = -2;
|
|
num217 = 1f;
|
|
}
|
|
else if (projectile1.type == 729)
|
|
{
|
|
num216 = 18;
|
|
num214 = 0;
|
|
num215 = -2;
|
|
num217 = 1.3f;
|
|
}
|
|
else if (projectile1.type == 686 || projectile1.type == 711)
|
|
{
|
|
num216 = 19;
|
|
num214 = 0;
|
|
num215 = -3;
|
|
num217 = 0.5f;
|
|
}
|
|
else if (ProjectileID.Sets.IsAGolfBall[projectile1.type])
|
|
{
|
|
num216 = 0;
|
|
num214 = 0;
|
|
num215 = -1;
|
|
num217 = 2f;
|
|
}
|
|
else if (projectile1.type == 671)
|
|
{
|
|
num216 = 5;
|
|
num214 = 0;
|
|
num215 = -1;
|
|
num217 = 2.6f;
|
|
}
|
|
else if (projectile1.type == 811)
|
|
{
|
|
num216 = 5;
|
|
num214 = 0;
|
|
num215 = -1;
|
|
num217 = 2.6f;
|
|
}
|
|
else if (projectile1.type == 814)
|
|
{
|
|
num216 = 18;
|
|
num214 = 0;
|
|
num215 = -1;
|
|
num217 = 1f;
|
|
}
|
|
else if (projectile1.type == 755)
|
|
{
|
|
num216 = 5;
|
|
num214 = 0;
|
|
num215 = -1;
|
|
num217 = 2.6f;
|
|
}
|
|
else if (projectile1.type == 700)
|
|
{
|
|
num214 = 5;
|
|
num215 = 1;
|
|
num217 = 2.6f;
|
|
}
|
|
else if (projectile1.type == 731)
|
|
{
|
|
num216 = 19;
|
|
num214 = 0;
|
|
num215 = -1;
|
|
num217 = 0.5f;
|
|
}
|
|
else if (projectile1.type == 864)
|
|
{
|
|
num216 = 12;
|
|
num214 = 0;
|
|
num215 = -1;
|
|
num217 = 1.4f;
|
|
rectangle1.Y += rectangle1.Height;
|
|
}
|
|
else if (projectile1.type == 916)
|
|
{
|
|
num216 = 19;
|
|
num214 = 0;
|
|
num215 = -1;
|
|
num217 = 1.4f;
|
|
rectangle1.Y += rectangle1.Height;
|
|
r2 = new UnifiedRandom(projectile1.timeLeft);
|
|
}
|
|
else if (projectile1.type == 873)
|
|
{
|
|
num216 = 39;
|
|
num218 = 40f;
|
|
num214 = 0;
|
|
num215 = -1;
|
|
num217 = 1.4f;
|
|
}
|
|
else if (projectile1.type == 931)
|
|
{
|
|
num216 = 19;
|
|
num218 = 20f;
|
|
num214 = 0;
|
|
num215 = -1;
|
|
num217 = 0.7f;
|
|
}
|
|
else if (projectile1.type == 933)
|
|
{
|
|
num216 = 60;
|
|
num218 = 60f;
|
|
num214 = 0;
|
|
num215 = -15;
|
|
num217 = 1f;
|
|
}
|
|
else if (projectile1.type == 872)
|
|
{
|
|
num216 = 79;
|
|
num218 = 10f;
|
|
num214 = 0;
|
|
num215 = -1;
|
|
num217 = 1f;
|
|
rectangle1.X += rectangle1.Width;
|
|
}
|
|
else if (projectile1.type == 664 || projectile1.type == 666 || projectile1.type == 668)
|
|
{
|
|
num214 = 8;
|
|
num215 = 2;
|
|
num217 = 0.4f;
|
|
}
|
|
else if (projectile1.type == 582 || projectile1.type == 902)
|
|
{
|
|
num214 = 10;
|
|
num215 = 2;
|
|
num217 = 0.7f;
|
|
num219 = 0.2f;
|
|
}
|
|
else if (projectile1.type == 675)
|
|
{
|
|
num214 = 5;
|
|
num215 = 1;
|
|
num217 = 0.4f;
|
|
}
|
|
else if (projectile1.type == 638)
|
|
{
|
|
num214 = 5;
|
|
num215 = 1;
|
|
num217 = 1f;
|
|
}
|
|
else if (projectile1.type == 660)
|
|
{
|
|
num214 = 3;
|
|
num215 = 1;
|
|
num217 = 8f;
|
|
r1 = new Microsoft.Xna.Framework.Rectangle(38 * projectile1.frame, 0, 38, 38);
|
|
rectangle1 = r1;
|
|
origin1 = r1.Size() / 2f;
|
|
}
|
|
else if (projectile1.type == 684)
|
|
{
|
|
num214 = 8;
|
|
num215 = 1;
|
|
num217 = 0.75f;
|
|
}
|
|
else if (projectile1.type == 639)
|
|
{
|
|
num214 = 10;
|
|
num215 = 1;
|
|
num217 = 1f;
|
|
}
|
|
else if (projectile1.type == 710)
|
|
{
|
|
num216 = 9;
|
|
num214 = 0;
|
|
num215 = -2;
|
|
num217 = 0.5f;
|
|
}
|
|
else if (projectile1.type == 640)
|
|
{
|
|
num214 = 20;
|
|
num215 = 1;
|
|
num217 = 1f;
|
|
}
|
|
else if (projectile1.type == 436)
|
|
{
|
|
num215 = 2;
|
|
num217 = 0.5f;
|
|
}
|
|
else if (projectile1.type == 424 || projectile1.type == 425 || projectile1.type == 426)
|
|
{
|
|
num214 = 10;
|
|
num215 = 2;
|
|
num217 = 0.6f;
|
|
}
|
|
else if (projectile1.type == 438)
|
|
{
|
|
num214 = 10;
|
|
num215 = 2;
|
|
num217 = 1f;
|
|
}
|
|
else if (projectile1.type == 452)
|
|
{
|
|
num214 = 10;
|
|
num215 = 3;
|
|
num217 = 0.5f;
|
|
}
|
|
else if (projectile1.type == 454)
|
|
{
|
|
num214 = 5;
|
|
num215 = 1;
|
|
num217 = 0.2f;
|
|
}
|
|
else if (projectile1.type == 462)
|
|
{
|
|
num214 = 7;
|
|
num215 = 1;
|
|
num217 = 0.2f;
|
|
}
|
|
else if (projectile1.type == 661)
|
|
{
|
|
num214 = 0;
|
|
num215 = 1;
|
|
num217 = 0.5f;
|
|
}
|
|
else if (projectile1.type == 706)
|
|
{
|
|
num216 = 9;
|
|
num214 = 0;
|
|
num215 = -2;
|
|
num217 = 0.5f;
|
|
}
|
|
else if (projectile1.type == 585)
|
|
{
|
|
num214 = 7;
|
|
num215 = 1;
|
|
num217 = 0.2f;
|
|
}
|
|
else if (projectile1.type == 459)
|
|
{
|
|
num214 = (int) ((double) projectile1.scale * 8.0);
|
|
num215 = num214 / 4;
|
|
if (num215 < 1)
|
|
num215 = 1;
|
|
num217 = 0.3f;
|
|
}
|
|
else if (projectile1.type == 709)
|
|
{
|
|
num214 = 8;
|
|
num215 = num214 / 4;
|
|
if (num215 < 1)
|
|
num215 = 1;
|
|
num217 = 0.5f;
|
|
}
|
|
else if (projectile1.type == 532)
|
|
{
|
|
num214 = 10;
|
|
num215 = 1;
|
|
num217 = 0.7f;
|
|
num219 = 0.2f;
|
|
}
|
|
else if (projectile1.type == 592)
|
|
{
|
|
num214 = 10;
|
|
num215 = 2;
|
|
num217 = 1f;
|
|
}
|
|
else if (projectile1.type == 601)
|
|
{
|
|
num214 = 8;
|
|
num215 = 1;
|
|
num217 = 0.3f;
|
|
}
|
|
else if (projectile1.type == 636)
|
|
{
|
|
num214 = 20;
|
|
num215 = 3;
|
|
num217 = 0.5f;
|
|
}
|
|
else if (projectile1.type == 680)
|
|
{
|
|
num214 = 9;
|
|
num215 = 3;
|
|
num217 = 0.5f;
|
|
}
|
|
else if (projectile1.type == 533)
|
|
{
|
|
if ((double) projectile1.ai[0] >= 6.0 && (double) projectile1.ai[0] <= 8.0)
|
|
{
|
|
num214 = (double) projectile1.ai[0] == 6.0 ? 8 : 4;
|
|
num215 = 1;
|
|
if ((double) projectile1.ai[0] != 7.0)
|
|
num219 = 0.2f;
|
|
}
|
|
else
|
|
num214 = num215 = 0;
|
|
}
|
|
for (int index = num216; num215 > 0 && index < num214 || num215 < 0 && index > num214; index += num215)
|
|
{
|
|
if (index < projectile1.oldPos.Length)
|
|
{
|
|
Microsoft.Xna.Framework.Color color11 = color10;
|
|
if (projectile1.type == 408 || projectile1.type == 435 || projectile1.type == 682 || projectile1.type == 732 || projectile1.type == 731)
|
|
color11 = Microsoft.Xna.Framework.Color.Lerp(color11, Microsoft.Xna.Framework.Color.Blue, 0.5f);
|
|
else if (projectile1.type == 436)
|
|
color11 = Microsoft.Xna.Framework.Color.Lerp(color11, Microsoft.Xna.Framework.Color.LimeGreen, 0.5f);
|
|
else if (projectile1.type >= 424 && projectile1.type <= 426)
|
|
color11 = Microsoft.Xna.Framework.Color.Lerp(color11, Microsoft.Xna.Framework.Color.Red, 0.5f);
|
|
else if (projectile1.type == 640 || projectile1.type == 639)
|
|
color11.A = (byte) 127;
|
|
else if (projectile1.type == 671)
|
|
color11 = Microsoft.Xna.Framework.Color.Lerp(color11, Microsoft.Xna.Framework.Color.Purple, (float) index / (float) num214);
|
|
else if (projectile1.type == 811)
|
|
color11 = Microsoft.Xna.Framework.Color.Lerp(color11, Microsoft.Xna.Framework.Color.Crimson * 0.5f, (float) index / (float) num214);
|
|
else if (projectile1.type == 814)
|
|
color11 = Microsoft.Xna.Framework.Color.Lerp(color11, color11 * 0.5f, (float) index / (float) num214);
|
|
else if (projectile1.type == 261)
|
|
color11 = Microsoft.Xna.Framework.Color.Lerp(color11, new Microsoft.Xna.Framework.Color(60, 60, 60, 60), (float) index / (float) num214);
|
|
else if (ProjectileID.Sets.IsAGolfBall[projectile1.type])
|
|
color11 = Microsoft.Xna.Framework.Color.Lerp(color11, new Microsoft.Xna.Framework.Color((int) byte.MaxValue, 230, 40, 20), (float) index / (float) num214);
|
|
color11 = projectile1.GetAlpha(color11);
|
|
if (projectile1.type == 438)
|
|
{
|
|
color11.G /= (byte) index;
|
|
color11.B /= (byte) index;
|
|
}
|
|
else if (projectile1.type == 755)
|
|
color11 = projectile1.AI_156_GetColor();
|
|
else if (projectile1.type == 873)
|
|
{
|
|
color11 = projectile1.AI_171_GetColor();
|
|
color11.A /= (byte) 2;
|
|
color11 *= Utils.GetLerpValue(0.0f, 20f, (float) projectile1.timeLeft, true);
|
|
}
|
|
else if (projectile1.type == 931)
|
|
{
|
|
color11 = projectile1.GetFairyQueenWeaponsColor(0.5f);
|
|
color11 *= Utils.GetLerpValue(0.0f, 20f, (float) projectile1.timeLeft, true);
|
|
}
|
|
else if (projectile1.type == 872)
|
|
{
|
|
color11 = projectile1.AI_173_GetColor();
|
|
color11 *= 0.4f;
|
|
color11.A = (byte) ((double) color11.A * 0.600000023841858);
|
|
if (index > 80)
|
|
color11 *= 0.15f * Utils.GetLerpValue(120f, 80f, (float) index, true);
|
|
}
|
|
else if (projectile1.type == 864)
|
|
{
|
|
color11 = projectile1.GetFloatingDaggerMinionGlowColor();
|
|
color11.A /= (byte) 4;
|
|
}
|
|
else if (projectile1.type == 682)
|
|
color11.G /= (byte) index;
|
|
else if (projectile1.type == 686)
|
|
{
|
|
if (!(projectile1.oldPos[index] == Vector2.Zero))
|
|
{
|
|
float t = (float) index / (float) num216;
|
|
color11 = (double) t >= 0.5 ? Microsoft.Xna.Framework.Color.Lerp(Microsoft.Xna.Framework.Color.Purple, Microsoft.Xna.Framework.Color.Black, Utils.GetLerpValue(0.5f, 1f, t, false)) : Microsoft.Xna.Framework.Color.Lerp(color11, Microsoft.Xna.Framework.Color.Purple, Utils.GetLerpValue(0.0f, 0.5f, t, false));
|
|
}
|
|
else
|
|
continue;
|
|
}
|
|
else if (projectile1.type == 711)
|
|
{
|
|
if (!(projectile1.oldPos[index] == Vector2.Zero))
|
|
{
|
|
float t = (float) index / (float) num216;
|
|
color11 = (double) t >= 0.5 ? Microsoft.Xna.Framework.Color.Lerp(new Microsoft.Xna.Framework.Color(128, 0, (int) byte.MaxValue, 180), Microsoft.Xna.Framework.Color.Black, Utils.GetLerpValue(0.5f, 1f, t, false)) : Microsoft.Xna.Framework.Color.Lerp(color11, new Microsoft.Xna.Framework.Color(128, 0, (int) byte.MaxValue, 180), Utils.GetLerpValue(0.0f, 0.5f, t, false));
|
|
}
|
|
else
|
|
continue;
|
|
}
|
|
else if (projectile1.type == 684)
|
|
{
|
|
if (index == 1)
|
|
{
|
|
color11.B /= (byte) 2;
|
|
color11.G /= (byte) 2;
|
|
color11.A /= (byte) 2;
|
|
}
|
|
color11.B /= (byte) index;
|
|
color11.G /= (byte) index;
|
|
color11.A /= (byte) index;
|
|
}
|
|
else if (projectile1.type == 706 || projectile1.type == 710)
|
|
{
|
|
color11.B /= (byte) index;
|
|
color11.G /= (byte) index;
|
|
color11.A /= (byte) index;
|
|
}
|
|
else if (projectile1.type == 818)
|
|
{
|
|
float to = 0.3f;
|
|
float amount = Utils.GetLerpValue(0.0f, to, projectile1.ai[0], true) * Utils.GetLerpValue(1f, 1f - to, projectile1.ai[0], true);
|
|
double lerpValue1 = (double) Utils.GetLerpValue(0.0f, (float) (num215 * -3), (float) index, true);
|
|
double lerpValue2 = (double) Utils.GetLerpValue((float) num216, (float) (num216 + num215 * 3), (float) index, true);
|
|
Microsoft.Xna.Framework.Color color12 = new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0);
|
|
Microsoft.Xna.Framework.Color favoriteColor = Main.OurFavoriteColor;
|
|
favoriteColor.A = (byte) 0;
|
|
favoriteColor *= amount;
|
|
color11 = Microsoft.Xna.Framework.Color.Lerp(favoriteColor, color12, amount);
|
|
}
|
|
else if (projectile1.type == 833 || projectile1.type == 834 || projectile1.type == 835)
|
|
{
|
|
float lerpValue = Utils.GetLerpValue(0.0f, 6f, projectile1.velocity.Length(), true);
|
|
color11 = Microsoft.Xna.Framework.Color.Lerp(color11, Microsoft.Xna.Framework.Color.White, lerpValue * 0.5f);
|
|
color11.A = (byte) 0;
|
|
color11 *= lerpValue;
|
|
}
|
|
else if (projectile1.type == 592)
|
|
{
|
|
color11.R /= (byte) index;
|
|
color11.G /= (byte) index;
|
|
}
|
|
else if (projectile1.type == 640)
|
|
{
|
|
color11.R /= (byte) index;
|
|
color11.A /= (byte) index;
|
|
}
|
|
else if (projectile1.type >= 424 && projectile1.type <= 426)
|
|
{
|
|
color11.B /= (byte) index;
|
|
color11.G /= (byte) index;
|
|
color11.A /= (byte) index;
|
|
}
|
|
float t1 = (float) (num214 - index);
|
|
if (num215 < 0)
|
|
t1 = (float) (num216 - index);
|
|
color11 *= t1 / ((float) ProjectileID.Sets.TrailCacheLength[projectile1.type] * 1.5f);
|
|
Vector2 oldPo = projectile1.oldPos[index];
|
|
float rotation = projectile1.rotation;
|
|
SpriteEffects effects = spriteEffects;
|
|
if (ProjectileID.Sets.TrailingMode[projectile1.type] == 2 || ProjectileID.Sets.TrailingMode[projectile1.type] == 3 || ProjectileID.Sets.TrailingMode[projectile1.type] == 4)
|
|
{
|
|
rotation = projectile1.oldRot[index];
|
|
effects = projectile1.oldSpriteDirection[index] == -1 ? SpriteEffects.FlipHorizontally : SpriteEffects.None;
|
|
}
|
|
if (!(oldPo == Vector2.Zero))
|
|
{
|
|
if (projectile1.type == 916)
|
|
{
|
|
rectangle1.Y += rectangle1.Height;
|
|
rectangle1.Y %= rectangle1.Height * Main.projFrames[projectile1.type];
|
|
double num220 = (double) t1 / ((double) ProjectileID.Sets.TrailCacheLength[projectile1.type] * 1.5);
|
|
Microsoft.Xna.Framework.Color color13 = new Microsoft.Xna.Framework.Color(0, 0, 0, (int) byte.MaxValue);
|
|
switch (r2.Next(3))
|
|
{
|
|
case 1:
|
|
case 2:
|
|
color13 = Microsoft.Xna.Framework.Color.Lerp(new Microsoft.Xna.Framework.Color(106, 90, 205, (int) sbyte.MaxValue), Microsoft.Xna.Framework.Color.Black, (float) (0.200000002980232 + 0.800000011920929 * (double) r2.NextFloat()));
|
|
break;
|
|
}
|
|
color11 = color13;
|
|
float num221 = t1 / (float) ProjectileID.Sets.TrailCacheLength[projectile1.type];
|
|
float lerpValue = Utils.GetLerpValue(0.0f, (float) ProjectileID.Sets.TrailCacheLength[projectile1.type] * 0.75f, t1, true);
|
|
color11 *= lerpValue;
|
|
oldPo += r2.NextVector2Circular(8f, 8f);
|
|
}
|
|
if (projectile1.type == 933)
|
|
{
|
|
float t2 = projectile1.localAI[0] - (float) index;
|
|
float num222 = Utils.GetLerpValue(0.0f, 20f, t2, true) * Utils.GetLerpValue(68f, 60f, t2, true);
|
|
color11 = Microsoft.Xna.Framework.Color.White * Utils.GetLerpValue(0.0f, (float) ProjectileID.Sets.TrailCacheLength[projectile1.type], t1, true) * projectile1.Opacity * num222;
|
|
}
|
|
Vector2 position = oldPo + zero + projectile1.Size / 2f - Main.screenPosition + new Vector2(0.0f, projectile1.gfxOffY);
|
|
Main.EntitySpriteDraw(texture2D1, position, new Microsoft.Xna.Framework.Rectangle?(rectangle1), color11, (float) ((double) rotation + (double) num213 + (double) projectile1.rotation * (double) num219 * (double) (index - 1) * (double) -spriteEffects.HasFlag((Enum) SpriteEffects.FlipHorizontally).ToDirectionInt()), origin1, MathHelper.Lerp(projectile1.scale, num217, (float) index / num218), effects, 0);
|
|
}
|
|
}
|
|
}
|
|
if (projectile1.type == 661)
|
|
{
|
|
Microsoft.Xna.Framework.Color color14 = new Microsoft.Xna.Framework.Color(120, 40, 222, 120);
|
|
for (int index = 0; index < 4; ++index)
|
|
Main.EntitySpriteDraw(TextureAssets.Extra[75].Value, projectile1.Center - Main.screenPosition + new Vector2(0.0f, projectile1.gfxOffY) + projectile1.rotation.ToRotationVector2().RotatedBy(1.57079637050629 * (double) index) * 4f, new Microsoft.Xna.Framework.Rectangle?(r1), color14, projectile1.rotation, origin1, projectile1.scale, spriteEffects, 0);
|
|
}
|
|
if (projectile1.type == 864)
|
|
{
|
|
Microsoft.Xna.Framework.Color daggerMinionGlowColor = projectile1.GetFloatingDaggerMinionGlowColor();
|
|
daggerMinionGlowColor.A /= (byte) 4;
|
|
Microsoft.Xna.Framework.Rectangle rectangle2 = r1;
|
|
rectangle2.Y += rectangle2.Height;
|
|
for (int index = 0; index < 4; ++index)
|
|
Main.EntitySpriteDraw(texture2D1, projectile1.Center - Main.screenPosition + new Vector2(0.0f, projectile1.gfxOffY) + projectile1.rotation.ToRotationVector2().RotatedBy(1.57079637050629 * (double) index) * 2f, new Microsoft.Xna.Framework.Rectangle?(rectangle2), daggerMinionGlowColor, projectile1.rotation, origin1, projectile1.scale, spriteEffects, 0);
|
|
}
|
|
if (projectile1.type == 873 || projectile1.type == 931)
|
|
{
|
|
Microsoft.Xna.Framework.Color color15 = projectile1.AI_171_GetColor() * 0.5f;
|
|
color15.A = (byte) 0;
|
|
if (projectile1.type == 931)
|
|
color15 = projectile1.GetFairyQueenWeaponsColor(0.0f);
|
|
Vector2 position1 = projectile1.Center - Main.screenPosition + new Vector2(0.0f, projectile1.gfxOffY);
|
|
Main.EntitySpriteDraw(texture2D1, position1, new Microsoft.Xna.Framework.Rectangle?(r1), color15, projectile1.rotation, origin1, projectile1.scale * 0.9f, spriteEffects, 0);
|
|
Texture2D texture2D2 = TextureAssets.Extra[98].Value;
|
|
Microsoft.Xna.Framework.Color color16 = color15;
|
|
Vector2 origin2 = texture2D2.Size() / 2f;
|
|
Microsoft.Xna.Framework.Color color17 = color15 * 0.5f;
|
|
float num223 = (float) ((double) Utils.GetLerpValue(15f, 30f, (float) projectile1.timeLeft, true) * (double) Utils.GetLerpValue(240f, 200f, (float) projectile1.timeLeft, true) * (1.0 + 0.200000002980232 * Math.Cos((double) Main.GlobalTimeWrappedHourly % 30.0 / 0.5 * 6.28318548202515 * 3.0)) * 0.800000011920929);
|
|
Vector2 scale1 = new Vector2(0.5f, 5f) * num223;
|
|
Vector2 scale2 = new Vector2(0.5f, 2f) * num223;
|
|
Microsoft.Xna.Framework.Color color18 = color16 * num223;
|
|
Microsoft.Xna.Framework.Color color19 = color17 * num223;
|
|
int num224 = 0;
|
|
Vector2 position2 = position1 + projectile1.velocity.SafeNormalize(Vector2.Zero) * MathHelper.Lerp(0.5f, 1f, projectile1.localAI[0] / 60f) * (float) num224;
|
|
if (projectile1.type == 931)
|
|
{
|
|
scale1 *= 0.4f;
|
|
scale2 *= 0.4f;
|
|
}
|
|
Main.EntitySpriteDraw(texture2D2, position2, new Microsoft.Xna.Framework.Rectangle?(), color18, 1.570796f, origin2, scale1, spriteEffects, 0);
|
|
Main.EntitySpriteDraw(texture2D2, position2, new Microsoft.Xna.Framework.Rectangle?(), color18, 0.0f, origin2, scale2, spriteEffects, 0);
|
|
Main.EntitySpriteDraw(texture2D2, position2, new Microsoft.Xna.Framework.Rectangle?(), color19, 1.570796f, origin2, scale1 * 0.6f, spriteEffects, 0);
|
|
Main.EntitySpriteDraw(texture2D2, position2, new Microsoft.Xna.Framework.Rectangle?(), color19, 0.0f, origin2, scale2 * 0.6f, spriteEffects, 0);
|
|
}
|
|
if (projectile1.type == 755)
|
|
{
|
|
Microsoft.Xna.Framework.Color color20 = projectile1.AI_156_GetColor();
|
|
color20.A = (byte) 120;
|
|
for (int index = 0; index < 4; ++index)
|
|
Main.EntitySpriteDraw(texture2D1, projectile1.Center - Main.screenPosition + new Vector2(0.0f, projectile1.gfxOffY) + projectile1.rotation.ToRotationVector2().RotatedBy(1.57079637050629 * (double) index) * 2f, new Microsoft.Xna.Framework.Rectangle?(r1), color20, projectile1.rotation, origin1, projectile1.scale, spriteEffects, 0);
|
|
}
|
|
else if (projectile1.type == 684)
|
|
{
|
|
float x18 = ((float) ((double) projectile1.localAI[0] * 6.28318548202515 / 30.0)).ToRotationVector2().X;
|
|
Microsoft.Xna.Framework.Color color21 = new Microsoft.Xna.Framework.Color(220, 40, 30, 40);
|
|
color21 *= (float) (0.75 + 0.25 * (double) x18);
|
|
for (int index = 0; index < 8; ++index)
|
|
Main.EntitySpriteDraw(texture2D1, projectile1.Center - Main.screenPosition + new Vector2(0.0f, projectile1.gfxOffY) + projectile1.rotation.ToRotationVector2().RotatedBy(0.785398185253143 * (double) index) * (float) (4.0 + 1.0 * (double) x18), new Microsoft.Xna.Framework.Rectangle?(r1), color21, projectile1.rotation, origin1, projectile1.scale, spriteEffects, 0);
|
|
}
|
|
else if (ProjectileID.Sets.IsAGolfBall[projectile1.type])
|
|
{
|
|
Player player = Main.player[projectile1.owner];
|
|
bool flag5 = GolfHelper.IsPlayerHoldingClub(player);
|
|
bool flag6 = false;
|
|
if (flag5)
|
|
flag6 = (((flag6 ? 1 : 0) | (player.ownedProjectileCounts[722] <= 0 ? 0 : (player.itemAnimation >= player.itemAnimationMax ? 1 : 0))) != 0 | player.itemAnimation == 0) & (double) player.velocity.Y == 0.0;
|
|
Vector2 shotVector = Main.MouseWorld - projectile1.Center;
|
|
if (projectile1.owner == Main.myPlayer & flag5 & flag6 && GolfHelper.IsGolfBallResting(projectile1) && GolfHelper.ValidateShot((Entity) projectile1, player, ref shotVector))
|
|
{
|
|
color10 = Microsoft.Xna.Framework.Color.White;
|
|
Projectile golfHelper = (Projectile) null;
|
|
for (int index = 0; index < 1000; ++index)
|
|
{
|
|
Projectile projectile2 = Main.projectile[index];
|
|
if (projectile2.active && projectile2.owner == player.whoAmI && projectile2.type == 722)
|
|
{
|
|
golfHelper = projectile2;
|
|
break;
|
|
}
|
|
}
|
|
if (golfHelper != null)
|
|
{
|
|
GolfHelper.ShotStrength shotStrength = GolfHelper.CalculateShotStrength(golfHelper, (Entity) projectile1);
|
|
Vector2 impactVelocity = Vector2.Normalize(shotVector) * shotStrength.AbsoluteStrength;
|
|
if ((double) impactVelocity.Length() > 0.0500000007450581)
|
|
GolfHelper.DrawPredictionLine((Entity) projectile1, impactVelocity, shotStrength.RelativeStrength, shotStrength.RoughLandResistance);
|
|
}
|
|
}
|
|
if (!GolfHelper.IsGolfBallResting(projectile1))
|
|
{
|
|
Microsoft.Xna.Framework.Color golfTrailColor = Projectile.GetGolfTrailColor(projectile1);
|
|
float num225 = projectile1.velocity.Length() / 16f;
|
|
if ((double) num225 > 1.0)
|
|
num225 = 1f;
|
|
Microsoft.Xna.Framework.Color color22 = golfTrailColor * num225;
|
|
if (projectile1.oldPos[4] != Vector2.Zero)
|
|
{
|
|
color10 = Microsoft.Xna.Framework.Color.White;
|
|
for (float amount = 0.0f; (double) amount <= 1.0; amount += 0.04f)
|
|
Main.EntitySpriteDraw(texture2D1, Vector2.Lerp(projectile1.oldPos[4], projectile1.position, amount) + projectile1.Size / 2f - Main.screenPosition + new Vector2(0.0f, projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(r1), color22 * amount, projectile1.rotation, origin1, projectile1.scale * MathHelper.Lerp(0.7f, 1.5f, amount), spriteEffects, 0);
|
|
}
|
|
Main.EntitySpriteDraw(texture2D1, projectile1.position + projectile1.Size / 2f - Main.screenPosition + new Vector2(0.0f, projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(r1), color22, projectile1.rotation, origin1, projectile1.scale * 1.5f, spriteEffects, 0);
|
|
}
|
|
}
|
|
Microsoft.Xna.Framework.Color color23 = projectile1.GetAlpha(color10);
|
|
float scale = projectile1.scale;
|
|
float rotation1 = projectile1.rotation + num213;
|
|
if (projectile1.type == 640)
|
|
color23 = Microsoft.Xna.Framework.Color.Transparent;
|
|
if (projectile1.type == 684)
|
|
color23.A = (byte) 127;
|
|
if (projectile1.type == 873)
|
|
color23.A /= (byte) 2;
|
|
if (projectile1.type == 931)
|
|
color23.A /= (byte) 2;
|
|
if (projectile1.type == 872)
|
|
{
|
|
color23 = new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0) * projectile1.Opacity;
|
|
scale *= 0.9f;
|
|
}
|
|
if (projectile1.type == 818)
|
|
color23 = Microsoft.Xna.Framework.Color.Transparent;
|
|
if (projectile1.type == 916)
|
|
color23 = Microsoft.Xna.Framework.Color.Black;
|
|
if (projectile1.type == 933)
|
|
{
|
|
float t = projectile1.localAI[0];
|
|
float num226 = Utils.GetLerpValue(0.0f, 20f, t, true) * Utils.GetLerpValue(68f, 60f, t, true);
|
|
color23 *= num226;
|
|
}
|
|
Main.EntitySpriteDraw(texture2D1, projectile1.Center + zero - Main.screenPosition + new Vector2(0.0f, projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(r1), color23, rotation1, origin1, scale, spriteEffects, 0);
|
|
if (projectile1.type == 894)
|
|
{
|
|
float num227 = Utils.WrappedLerp(0.6f, 1f, (float) ((int) Main.timeForVisualEffects % 70) / 70f);
|
|
Microsoft.Xna.Framework.Color color24 = new Microsoft.Xna.Framework.Color(num227, num227, num227, 150f);
|
|
Main.EntitySpriteDraw(TextureAssets.GlowMask[282].Value, projectile1.Center + zero - Main.screenPosition + new Vector2(0.0f, projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(r1), color24, projectile1.rotation, origin1, projectile1.scale, spriteEffects, 0);
|
|
}
|
|
if (projectile1.type == 503)
|
|
Main.EntitySpriteDraw(TextureAssets.Extra[36].Value, projectile1.Center - Main.screenPosition + new Vector2(0.0f, projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(r1), Microsoft.Xna.Framework.Color.White, projectile1.localAI[0], origin1, projectile1.scale, spriteEffects, 0);
|
|
else if (projectile1.type == 533)
|
|
Main.EntitySpriteDraw(TextureAssets.GlowMask[128].Value, projectile1.Center - Main.screenPosition + new Vector2(0.0f, projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(r1), Microsoft.Xna.Framework.Color.White * 0.3f, projectile1.rotation, origin1, projectile1.scale, spriteEffects, 0);
|
|
else if (projectile1.type == 261)
|
|
{
|
|
float num228 = 0.7f;
|
|
float t = projectile1.velocity.Length();
|
|
if ((double) t < 0.300000011920929 && (double) projectile1.velocity.Y == 0.0)
|
|
num228 = Utils.GetLerpValue(0.02f, 0.3f, t, true) * 0.7f;
|
|
Main.EntitySpriteDraw(TextureAssets.GlowMask[252].Value, projectile1.Center - Main.screenPosition + new Vector2(0.0f, projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(r1), Microsoft.Xna.Framework.Color.White * num228, projectile1.rotation, origin1, projectile1.scale, spriteEffects, 0);
|
|
}
|
|
else if (projectile1.type == 601)
|
|
{
|
|
Microsoft.Xna.Framework.Color white = Microsoft.Xna.Framework.Color.White;
|
|
white.A = (byte) 0;
|
|
Main.EntitySpriteDraw(texture2D1, projectile1.Center - Main.screenPosition + new Vector2(0.0f, projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(r1), white, projectile1.rotation, origin1, projectile1.scale * 0.7f, spriteEffects, 0);
|
|
}
|
|
else if (ProjectileID.Sets.IsAGolfBall[projectile1.type] && GolfHelper.IsGolfBallResting(projectile1) && GolfHelper.IsPlayerHoldingClub(Main.LocalPlayer) && GolfHelper.IsGolfShotValid((Entity) projectile1, Main.LocalPlayer) && projectile1.owner == Main.myPlayer)
|
|
Main.EntitySpriteDraw(TextureAssets.GolfBallOutline.Value, projectile1.Center - Main.screenPosition + new Vector2(0.0f, projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(r1), Microsoft.Xna.Framework.Color.White, projectile1.rotation, origin1, projectile1.scale, spriteEffects, 0);
|
|
if (projectile1.type != 933)
|
|
return;
|
|
float t3 = projectile1.localAI[0];
|
|
float num229 = Utils.GetLerpValue(0.0f, 20f, t3, true) * Utils.GetLerpValue(68f, 60f, t3, true);
|
|
Main.EntitySpriteDraw(texture2D1, projectile1.Center + zero - Main.screenPosition + new Vector2(0.0f, projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(r1), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, (int) sbyte.MaxValue) * projectile1.Opacity * num229, rotation1, origin1, scale * 1.25f, spriteEffects, 0);
|
|
FinalFractalHelper.FinalFractalProfile finalFractalProfile = FinalFractalHelper.GetFinalFractalProfile((int) projectile1.ai[1]);
|
|
Microsoft.Xna.Framework.Color trailColor = finalFractalProfile.trailColor;
|
|
trailColor.A /= (byte) 2;
|
|
Main.DrawPrettyStarSparkle(projectile1, spriteEffects, projectile1.Center + zero - Main.screenPosition + new Vector2(0.0f, projectile1.gfxOffY) + (projectile1.rotation - 1.570796f).ToRotationVector2() * finalFractalProfile.trailWidth, Microsoft.Xna.Framework.Color.White * num229, trailColor * num229);
|
|
}
|
|
else if (projectile1.type == 672)
|
|
{
|
|
Vector2 position = projectile1.Center - Main.screenPosition;
|
|
if ((double) projectile1.localAI[1] == 0.0)
|
|
{
|
|
position.Y += 60f;
|
|
float num230 = projectile1.localAI[0] / 120f;
|
|
for (int index = 0; index < 4; ++index)
|
|
{
|
|
float num231 = MathHelper.Clamp((float) ((double) num230 * 2.0 - (double) index / 3.0), 0.0f, 1f);
|
|
float num232 = 1f - MathHelper.Clamp((float) (((double) num230 - 0.800000011920929) / 0.200000002980232), 0.0f, 1f);
|
|
Main.EntitySpriteDraw(TextureAssets.MagicPixel.Value, position, new Microsoft.Xna.Framework.Rectangle?(), new Microsoft.Xna.Framework.Color(0.4f, 0.17f, 0.4f, 0.0f) * (num231 * num232) * 1.3f, 0.0f, new Vector2((float) TextureAssets.MagicPixel.Width() / 2f, (float) TextureAssets.MagicPixel.Height()), new Vector2((float) Math.Sqrt((double) num231) * 100f, num231 * 2f), SpriteEffects.None, 0);
|
|
}
|
|
}
|
|
else if ((double) projectile1.localAI[1] == 1.0)
|
|
{
|
|
double num233 = (double) projectile1.localAI[0] / 300.0;
|
|
float num234 = Math.Min(1f, projectile1.localAI[0] / 30f);
|
|
int frameNumber = (int) ((double) Main.GlobalTimeWrappedHourly * 10.0) % 8;
|
|
this.DrawElderEye(Main.spriteBatch, projectile1.Center, 1f, 1f, frameNumber, Microsoft.Xna.Framework.Color.White * num234);
|
|
this.DrawElderEye(Main.spriteBatch, projectile1.Center, 1f, 1f, (frameNumber + 1) % 8, new Microsoft.Xna.Framework.Color(0.2f, 0.2f, 0.2f, 0.0f) * num234);
|
|
}
|
|
else
|
|
{
|
|
if ((double) projectile1.localAI[1] != 2.0)
|
|
return;
|
|
int frameNumber = (int) ((double) Main.GlobalTimeWrappedHourly * 10.0) % 8;
|
|
this.DrawElderEye(Main.spriteBatch, projectile1.Center, 1f, 1f, frameNumber, Microsoft.Xna.Framework.Color.White);
|
|
this.DrawElderEye(Main.spriteBatch, projectile1.Center, 1f, 1f, (frameNumber + 1) % 8, new Microsoft.Xna.Framework.Color(0.2f, 0.2f, 0.2f, 0.0f));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (projectile1.type == 713)
|
|
return;
|
|
if (projectile1.type == 754)
|
|
{
|
|
Texture2D texture2D = TextureAssets.Projectile[projectile1.type].Value;
|
|
Microsoft.Xna.Framework.Rectangle rectangle3 = texture2D.Frame(5, 2, projectile1.frame);
|
|
rectangle3.Width -= 2;
|
|
rectangle3.Height -= 2;
|
|
Vector2 origin = new Vector2((float) (rectangle3.Width / 2), 0.0f);
|
|
float y = projectile1.position.Y;
|
|
float num235 = (float) ((double) projectile1.ai[0] + 8.0 + 2.0 - (double) rectangle3.Height + 2.0);
|
|
projectile1.GetAlpha(color10);
|
|
Vector2 top = projectile1.Top;
|
|
if ((double) projectile1.ai[1] == 2.0)
|
|
{
|
|
Microsoft.Xna.Framework.Rectangle rectangle4 = texture2D.Frame(5, 2, 4);
|
|
rectangle4.Width -= 2;
|
|
rectangle4.Height -= 2;
|
|
origin = new Vector2((float) (rectangle4.Width / 2), 0.0f);
|
|
Microsoft.Xna.Framework.Color alpha = projectile1.GetAlpha(Lighting.GetColor((int) ((double) top.X + (double) (rectangle4.Width / 2)) / 16, (int) (((double) num235 - 2.0 + (double) (rectangle4.Height / 2)) / 16.0)));
|
|
Main.EntitySpriteDraw(texture2D, new Vector2(top.X, num235 - 2f) - Main.screenPosition + new Vector2(0.0f, projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(rectangle4), alpha, projectile1.rotation, origin, projectile1.scale, spriteEffects, 0);
|
|
}
|
|
else
|
|
{
|
|
for (float num236 = y; (double) num236 < (double) num235; num236 += (float) rectangle3.Height)
|
|
{
|
|
Vector2 vector2 = top;
|
|
vector2.Y = num236;
|
|
Microsoft.Xna.Framework.Rectangle rectangle5 = rectangle3;
|
|
float num237 = num235 - num236;
|
|
if ((double) num237 < (double) rectangle5.Height)
|
|
rectangle5.Height = (int) num237;
|
|
Microsoft.Xna.Framework.Color alpha = projectile1.GetAlpha(Lighting.GetColor((int) ((double) vector2.X + (double) (rectangle5.Width / 2)) / 16, (int) (((double) vector2.Y + (double) (rectangle5.Height / 2)) / 16.0)));
|
|
Main.EntitySpriteDraw(texture2D, vector2 - Main.screenPosition + new Vector2(0.0f, projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(rectangle5), alpha, projectile1.rotation, origin, projectile1.scale, spriteEffects, 0);
|
|
if (rectangle3.Y == 0)
|
|
rectangle3.Y += rectangle3.Height + 2;
|
|
}
|
|
Microsoft.Xna.Framework.Rectangle rectangle6 = texture2D.Frame(5, 2, 4);
|
|
rectangle6.Width -= 2;
|
|
rectangle6.Height -= 2;
|
|
origin = new Vector2((float) (rectangle6.Width / 2), 0.0f);
|
|
Microsoft.Xna.Framework.Color alpha1 = projectile1.GetAlpha(Lighting.GetColor((int) ((double) top.X + (double) (rectangle6.Width / 2)) / 16, (int) (((double) num235 - 2.0 + (double) (rectangle6.Height / 2)) / 16.0)));
|
|
Main.EntitySpriteDraw(texture2D, new Vector2(top.X, num235 - 2f) - Main.screenPosition + new Vector2(0.0f, projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(rectangle6), alpha1, projectile1.rotation, origin, projectile1.scale, spriteEffects, 0);
|
|
}
|
|
}
|
|
else if (projectile1.type == 12 || projectile1.type == 728)
|
|
{
|
|
Texture2D texture = TextureAssets.Projectile[projectile1.type].Value;
|
|
Microsoft.Xna.Framework.Rectangle r = new Microsoft.Xna.Framework.Rectangle(0, 0, texture.Width, texture.Height);
|
|
Vector2 origin3 = r.Size() / 2f;
|
|
Microsoft.Xna.Framework.Color alpha = projectile1.GetAlpha(color10);
|
|
Texture2D texture2D = TextureAssets.Extra[91].Value;
|
|
Microsoft.Xna.Framework.Rectangle rectangle = texture2D.Frame();
|
|
Vector2 origin4 = new Vector2((float) rectangle.Width / 2f, 10f);
|
|
Microsoft.Xna.Framework.Color color25 = Microsoft.Xna.Framework.Color.Cyan * 0.5f;
|
|
Vector2 vector2_6 = new Vector2(0.0f, projectile1.gfxOffY);
|
|
Vector2 spinningpoint = new Vector2(0.0f, -10f);
|
|
float num238 = (float) Main.timeForVisualEffects / 60f;
|
|
Vector2 vector2_7 = projectile1.Center + projectile1.velocity;
|
|
Microsoft.Xna.Framework.Color color26 = Microsoft.Xna.Framework.Color.Blue * 0.2f;
|
|
Microsoft.Xna.Framework.Color color27 = Microsoft.Xna.Framework.Color.White * 0.5f;
|
|
color27.A = (byte) 0;
|
|
float num239 = 0.0f;
|
|
if (projectile1.type == 728)
|
|
{
|
|
color26 = Microsoft.Xna.Framework.Color.Orange * 0.2f;
|
|
color27 = Microsoft.Xna.Framework.Color.Gold * 0.5f;
|
|
color27.A = (byte) 50;
|
|
num239 = -0.2f;
|
|
}
|
|
Microsoft.Xna.Framework.Color color28 = color26;
|
|
color28.A = (byte) 0;
|
|
Microsoft.Xna.Framework.Color color29 = color26;
|
|
color29.A = (byte) 0;
|
|
Microsoft.Xna.Framework.Color color30 = color26;
|
|
color30.A = (byte) 0;
|
|
Main.EntitySpriteDraw(texture2D, vector2_7 - Main.screenPosition + vector2_6 + spinningpoint.RotatedBy(6.28318548202515 * (double) num238), new Microsoft.Xna.Framework.Rectangle?(rectangle), color28, projectile1.velocity.ToRotation() + 1.570796f, origin4, 1.5f + num239, SpriteEffects.None, 0);
|
|
Main.EntitySpriteDraw(texture2D, vector2_7 - Main.screenPosition + vector2_6 + spinningpoint.RotatedBy(6.28318548202515 * (double) num238 + 2.09439516067505), new Microsoft.Xna.Framework.Rectangle?(rectangle), color29, projectile1.velocity.ToRotation() + 1.570796f, origin4, 1.1f + num239, SpriteEffects.None, 0);
|
|
Main.EntitySpriteDraw(texture2D, vector2_7 - Main.screenPosition + vector2_6 + spinningpoint.RotatedBy(6.28318548202515 * (double) num238 + 4.1887903213501), new Microsoft.Xna.Framework.Rectangle?(rectangle), color30, projectile1.velocity.ToRotation() + 1.570796f, origin4, 1.3f + num239, SpriteEffects.None, 0);
|
|
Vector2 vector2_8 = projectile1.Center - projectile1.velocity * 0.5f;
|
|
for (float num240 = 0.0f; (double) num240 < 1.0; num240 += 0.5f)
|
|
{
|
|
float num241 = (float) (((double) num238 % 0.5 / 0.5 + (double) num240) % 1.0);
|
|
float num242 = num241 * 2f;
|
|
if ((double) num242 > 1.0)
|
|
num242 = 2f - num242;
|
|
Main.EntitySpriteDraw(texture2D, vector2_8 - Main.screenPosition + vector2_6, new Microsoft.Xna.Framework.Rectangle?(rectangle), color27 * num242, projectile1.velocity.ToRotation() + 1.570796f, origin4, (float) (0.300000011920929 + (double) num241 * 0.5), SpriteEffects.None, 0);
|
|
}
|
|
Main.EntitySpriteDraw(texture, projectile1.Center - Main.screenPosition + new Vector2(0.0f, projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(r), alpha, projectile1.rotation, origin3, projectile1.scale + 0.1f, spriteEffects, 0);
|
|
}
|
|
else if (projectile1.type == 756)
|
|
{
|
|
Texture2D texture2D = TextureAssets.Projectile[projectile1.type].Value;
|
|
Microsoft.Xna.Framework.Rectangle rectangle = texture2D.Frame(verticalFrames: 6, frameY: projectile1.frame);
|
|
Vector2 origin = new Vector2(16f, (float) (rectangle.Height / 2));
|
|
Microsoft.Xna.Framework.Color alpha = projectile1.GetAlpha(color10);
|
|
Vector2 scale = new Vector2(projectile1.scale);
|
|
float lerpValue = Utils.GetLerpValue(30f, 25f, projectile1.ai[0], true);
|
|
scale.Y *= lerpValue;
|
|
Vector4 vector4_1 = color10.ToVector4();
|
|
Vector4 vector4_2 = new Microsoft.Xna.Framework.Color(67, 17, 17).ToVector4() * vector4_1;
|
|
Main.EntitySpriteDraw(TextureAssets.Extra[98].Value, projectile1.Center - Main.screenPosition + new Vector2(0.0f, projectile1.gfxOffY) - projectile1.velocity * projectile1.scale * 0.5f, new Microsoft.Xna.Framework.Rectangle?(), projectile1.GetAlpha(new Microsoft.Xna.Framework.Color(vector4_2.X, vector4_2.Y, vector4_2.Z, vector4_2.W)) * 1f, projectile1.rotation + 1.570796f, TextureAssets.Extra[98].Value.Size() / 2f, projectile1.scale * 0.9f, spriteEffects, 0);
|
|
Main.EntitySpriteDraw(texture2D, projectile1.Center - Main.screenPosition + new Vector2(0.0f, projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(rectangle), alpha, projectile1.rotation, origin, scale, spriteEffects, 0);
|
|
}
|
|
else if (projectile1.type == 723 || projectile1.type == 726 || projectile1.type == 725 || projectile1.type == 724)
|
|
{
|
|
Texture2D texture = TextureAssets.Projectile[projectile1.type].Value;
|
|
Microsoft.Xna.Framework.Rectangle r = new Microsoft.Xna.Framework.Rectangle(0, 0, texture.Width, texture.Height);
|
|
Vector2 origin5 = r.Size() / 2f;
|
|
Microsoft.Xna.Framework.Color alpha = projectile1.GetAlpha(color10);
|
|
Texture2D texture2D = TextureAssets.Extra[91].Value;
|
|
Microsoft.Xna.Framework.Rectangle rectangle = texture2D.Frame();
|
|
Vector2 origin6 = new Vector2((float) rectangle.Width / 2f, 10f);
|
|
Microsoft.Xna.Framework.Color color31 = Microsoft.Xna.Framework.Color.White * 0.2f;
|
|
Vector2 vector2_9 = new Vector2(0.0f, projectile1.gfxOffY);
|
|
Vector2 spinningpoint = new Vector2(0.0f, -5f);
|
|
float num243 = (float) Main.timeForVisualEffects / 60f;
|
|
Vector2 vector2_10 = projectile1.Center + projectile1.velocity;
|
|
float scale3 = 1.5f;
|
|
float scale4 = 1.1f;
|
|
float scale5 = 1.3f;
|
|
Microsoft.Xna.Framework.Color color32 = Microsoft.Xna.Framework.Color.Blue * 0.1f;
|
|
Microsoft.Xna.Framework.Color color33 = Microsoft.Xna.Framework.Color.White * 0.3f;
|
|
color33.A = (byte) 0;
|
|
byte num244 = 0;
|
|
if (projectile1.type == 726)
|
|
{
|
|
Microsoft.Xna.Framework.Color color34 = new Microsoft.Xna.Framework.Color(180, 20, (int) byte.MaxValue);
|
|
color32 = color34 * 0.3f;
|
|
color33 = color34 * 0.3f;
|
|
num244 = (byte) 60;
|
|
float num245 = 0.6f;
|
|
scale3 -= num245;
|
|
scale4 -= num245;
|
|
scale5 -= num245;
|
|
}
|
|
if (projectile1.type == 725)
|
|
{
|
|
Microsoft.Xna.Framework.Color color35 = new Microsoft.Xna.Framework.Color((int) byte.MaxValue, 80, (int) byte.MaxValue);
|
|
Microsoft.Xna.Framework.Color color36 = new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, 0);
|
|
color32 = Microsoft.Xna.Framework.Color.Lerp(color35, color36, 0.2f) * 0.3f;
|
|
color33 = Microsoft.Xna.Framework.Color.Lerp(color35, color36, 0.8f) * 0.4f;
|
|
num244 = (byte) 50;
|
|
float num246 = 0.5f;
|
|
scale3 -= num246;
|
|
scale4 -= num246;
|
|
scale5 -= num246;
|
|
}
|
|
if (projectile1.type == 724)
|
|
{
|
|
Microsoft.Xna.Framework.Color.Lerp(Microsoft.Xna.Framework.Color.Black, Microsoft.Xna.Framework.Color.Orange, 0.75f);
|
|
Microsoft.Xna.Framework.Color.Lerp(Microsoft.Xna.Framework.Color.Black, Microsoft.Xna.Framework.Color.Yellow, 0.5f);
|
|
Microsoft.Xna.Framework.Color color37 = Microsoft.Xna.Framework.Color.Orange * 0.75f;
|
|
Microsoft.Xna.Framework.Color color38 = Microsoft.Xna.Framework.Color.Yellow * 0.5f;
|
|
color32 = Microsoft.Xna.Framework.Color.Lerp(color37, color38, 0.2f) * 0.3f;
|
|
color33 = Microsoft.Xna.Framework.Color.Lerp(color37, color38, 0.8f) * 0.4f;
|
|
num244 = (byte) 0;
|
|
float num247 = 0.5f;
|
|
scale3 -= num247;
|
|
scale4 -= num247;
|
|
scale5 -= num247;
|
|
}
|
|
Microsoft.Xna.Framework.Color color39 = color32;
|
|
color39.A = num244;
|
|
Microsoft.Xna.Framework.Color color40 = color32;
|
|
color40.A = num244;
|
|
Microsoft.Xna.Framework.Color color41 = color32;
|
|
color41.A = num244;
|
|
Main.EntitySpriteDraw(texture2D, vector2_10 - Main.screenPosition + vector2_9 + spinningpoint.RotatedBy(6.28318548202515 * (double) num243), new Microsoft.Xna.Framework.Rectangle?(rectangle), color39, projectile1.velocity.ToRotation() + 1.570796f, origin6, scale3, SpriteEffects.None, 0);
|
|
Main.EntitySpriteDraw(texture2D, vector2_10 - Main.screenPosition + vector2_9 + spinningpoint.RotatedBy(6.28318548202515 * (double) num243 + 2.09439516067505), new Microsoft.Xna.Framework.Rectangle?(rectangle), color40, projectile1.velocity.ToRotation() + 1.570796f, origin6, scale4, SpriteEffects.None, 0);
|
|
Main.EntitySpriteDraw(texture2D, vector2_10 - Main.screenPosition + vector2_9 + spinningpoint.RotatedBy(6.28318548202515 * (double) num243 + 4.1887903213501), new Microsoft.Xna.Framework.Rectangle?(rectangle), color41, projectile1.velocity.ToRotation() + 1.570796f, origin6, scale5, SpriteEffects.None, 0);
|
|
Vector2 vector2_11 = projectile1.Center - projectile1.velocity * 0.5f;
|
|
for (float num248 = 0.0f; (double) num248 < 1.0; num248 += 0.5f)
|
|
{
|
|
float num249 = (float) (((double) num243 % 0.5 / 0.5 + (double) num248) % 1.0);
|
|
float num250 = num249 * 2f;
|
|
if ((double) num250 > 1.0)
|
|
num250 = 2f - num250;
|
|
Main.EntitySpriteDraw(texture2D, vector2_11 - Main.screenPosition + vector2_9, new Microsoft.Xna.Framework.Rectangle?(rectangle), color33 * num250, projectile1.velocity.ToRotation() + 1.570796f, origin6, (float) (0.5 + (double) num249 * 0.5), SpriteEffects.None, 0);
|
|
}
|
|
Main.EntitySpriteDraw(texture, projectile1.Center - Main.screenPosition + new Vector2(0.0f, projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(r), alpha, projectile1.rotation, origin5, projectile1.scale + 0.1f, spriteEffects, 0);
|
|
}
|
|
else if (projectile1.type == 674)
|
|
{
|
|
Texture2D texture = TextureAssets.Extra[60].Value;
|
|
Vector2 origin = new Vector2(66f, 86f);
|
|
Vector2 position = projectile1.Center - Main.screenPosition;
|
|
Vector2 one = Vector2.One;
|
|
Vector2 vector2_12 = new Vector2(4f, 1f) * 1.4f;
|
|
Microsoft.Xna.Framework.Color color42 = new Microsoft.Xna.Framework.Color(115, 0, 155, 0);
|
|
Microsoft.Xna.Framework.Color color43 = new Microsoft.Xna.Framework.Color((int) byte.MaxValue, 180, (int) byte.MaxValue, 0);
|
|
float t = 0.0f;
|
|
if ((double) projectile1.ai[0] < 30.0)
|
|
t = Utils.GetLerpValue(0.0f, 30f, projectile1.ai[0], true);
|
|
else if ((double) projectile1.ai[0] < 40.0)
|
|
t = 1f + Utils.GetLerpValue(30f, 40f, projectile1.ai[0], true);
|
|
Vector2 vector2_13 = new Vector2(1f, 1f);
|
|
Vector2 vector2_14 = new Vector2(0.8f, 2f);
|
|
if ((double) t < 1.0)
|
|
vector2_13.X *= t;
|
|
Vector2 vector2_15 = vector2_12 * t;
|
|
if ((double) t < 1.0)
|
|
{
|
|
color42 *= t;
|
|
color43 *= t;
|
|
}
|
|
if ((double) t > 1.5)
|
|
{
|
|
float lerpValue = Utils.GetLerpValue(2f, 1.5f, t, true);
|
|
color42 *= lerpValue;
|
|
color43 *= lerpValue;
|
|
}
|
|
float num251 = 0.42f;
|
|
Microsoft.Xna.Framework.Color color44 = color42 * num251;
|
|
Microsoft.Xna.Framework.Color color45 = color43 * num251;
|
|
Main.EntitySpriteDraw(texture, position, new Microsoft.Xna.Framework.Rectangle?(), color44, 0.0f, origin, vector2_15 * vector2_13, SpriteEffects.None, 0);
|
|
Main.EntitySpriteDraw(texture, position, new Microsoft.Xna.Framework.Rectangle?(), color45, 0.0f, origin, vector2_15 * vector2_14, SpriteEffects.None, 0);
|
|
Main.EntitySpriteDraw(TextureAssets.Extra[59].Value, position, new Microsoft.Xna.Framework.Rectangle?(), color44, 0.0f, origin, vector2_15 * vector2_13 * new Vector2(1f, 0.3f), SpriteEffects.None, 0);
|
|
}
|
|
else if (projectile1.type == 440 || projectile1.type == 449 || projectile1.type == 606)
|
|
{
|
|
Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.Rectangle((int) Main.screenPosition.X - 500, (int) Main.screenPosition.Y - 500, Main.screenWidth + 1000, Main.screenHeight + 1000);
|
|
if (!projectile1.getRect().Intersects(rectangle))
|
|
return;
|
|
Vector2 vector2_16 = new Vector2(projectile1.position.X - Main.screenPosition.X + x17 + (float) num209, projectile1.position.Y - Main.screenPosition.Y + (float) (projectile1.height / 2) + projectile1.gfxOffY);
|
|
float num252 = 100f;
|
|
float num253 = 3f;
|
|
if (projectile1.type == 606)
|
|
{
|
|
num252 = 150f;
|
|
num253 = 3f;
|
|
}
|
|
if ((double) projectile1.ai[1] == 1.0)
|
|
num252 = (float) (int) projectile1.localAI[0];
|
|
for (int index = 1; index <= (int) projectile1.localAI[0]; ++index)
|
|
{
|
|
Vector2 vector2_17 = Vector2.Normalize(projectile1.velocity) * (float) index * num253;
|
|
Microsoft.Xna.Framework.Color color46 = projectile1.GetAlpha(color10) * ((num252 - (float) index) / num252);
|
|
color46.A = (byte) 0;
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, vector2_16 - vector2_17, new Microsoft.Xna.Framework.Rectangle?(), color46, projectile1.rotation, new Vector2(x17, (float) (projectile1.height / 2 + num208)), projectile1.scale, spriteEffects, 0);
|
|
}
|
|
}
|
|
else if (projectile1.type == 687)
|
|
{
|
|
Vector2 vector2_18 = projectile1.Center - Main.screenPosition;
|
|
float num254 = 40f;
|
|
float num255 = num254 * 2f;
|
|
float num256 = (float) projectile1.frameCounter / num254;
|
|
Texture2D texture2D = TextureAssets.Projectile[projectile1.type].Value;
|
|
Microsoft.Xna.Framework.Color transparent = Microsoft.Xna.Framework.Color.Transparent;
|
|
Microsoft.Xna.Framework.Color color47 = new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0);
|
|
Microsoft.Xna.Framework.Color color48 = new Microsoft.Xna.Framework.Color(180, 30, 30, 200);
|
|
Microsoft.Xna.Framework.Color color49 = new Microsoft.Xna.Framework.Color(0, 0, 0, 30);
|
|
ulong seed = 1;
|
|
for (float num257 = 0.0f; (double) num257 < 15.0; ++num257)
|
|
{
|
|
float num258 = (float) ((double) Utils.RandomFloat(ref seed) * 0.25 - 0.125);
|
|
Vector2 rotationVector2 = (projectile1.rotation + num258).ToRotationVector2();
|
|
Vector2 vector2_19 = vector2_18 + rotationVector2 * 400f;
|
|
float num259 = num256 + num257 * 0.06666667f;
|
|
int num260 = (int) ((double) num259 / 0.0666666701436043);
|
|
float num261 = num259 % 1f;
|
|
if (((double) num261 <= (double) num256 % 1.0 || (double) projectile1.frameCounter >= (double) num254) && ((double) num261 >= (double) num256 % 1.0 || (double) projectile1.frameCounter < (double) num255 - (double) num254))
|
|
{
|
|
Microsoft.Xna.Framework.Color color50 = (double) num261 >= 0.100000001490116 ? ((double) num261 >= 0.349999994039536 ? ((double) num261 >= 0.699999988079071 ? ((double) num261 >= 0.899999976158142 ? ((double) num261 >= 1.0 ? Microsoft.Xna.Framework.Color.Transparent : Microsoft.Xna.Framework.Color.Lerp(color49, Microsoft.Xna.Framework.Color.Transparent, Utils.GetLerpValue(0.9f, 1f, num261, true))) : Microsoft.Xna.Framework.Color.Lerp(color48, color49, Utils.GetLerpValue(0.7f, 0.9f, num261, true))) : Microsoft.Xna.Framework.Color.Lerp(color47, color48, Utils.GetLerpValue(0.35f, 0.7f, num261, true))) : color47) : Microsoft.Xna.Framework.Color.Lerp(Microsoft.Xna.Framework.Color.Transparent, color47, Utils.GetLerpValue(0.0f, 0.1f, num261, true));
|
|
float num262 = (float) (0.899999976158142 + (double) num261 * 0.800000011920929);
|
|
float scale = num262 * num262 * 0.8f;
|
|
Vector2 position = Vector2.SmoothStep(vector2_18, vector2_19, num261);
|
|
Microsoft.Xna.Framework.Rectangle r = texture2D.Frame(verticalFrames: 7, frameY: ((int) ((double) num261 * 7.0)));
|
|
Main.EntitySpriteDraw(texture2D, position, new Microsoft.Xna.Framework.Rectangle?(r), color50, (float) ((double) projectile1.rotation + 6.28318548202515 * ((double) num261 + (double) Main.GlobalTimeWrappedHourly * 1.20000004768372) * 0.200000002980232 + (double) num260 * 1.25663709640503), r.Size() / 2f, scale, SpriteEffects.None, 0);
|
|
}
|
|
}
|
|
}
|
|
else if (projectile1.type == 651)
|
|
{
|
|
if (projectile1.owner != Main.myPlayer)
|
|
return;
|
|
Player player = Main.player[projectile1.owner];
|
|
Microsoft.Xna.Framework.Point point = new Vector2(projectile1.ai[0], projectile1.ai[1]).ToPoint();
|
|
Microsoft.Xna.Framework.Point tileCoordinates = projectile1.Center.ToTileCoordinates();
|
|
Microsoft.Xna.Framework.Color color51 = new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0);
|
|
Microsoft.Xna.Framework.Color color52 = new Microsoft.Xna.Framework.Color((int) sbyte.MaxValue, (int) sbyte.MaxValue, (int) sbyte.MaxValue, 0);
|
|
int num263 = 1;
|
|
float num264 = 0.0f;
|
|
WiresUI.Settings.MultiToolMode toolMode = WiresUI.Settings.ToolMode;
|
|
bool flag7 = toolMode.HasFlag((Enum) WiresUI.Settings.MultiToolMode.Actuator);
|
|
if (toolMode.HasFlag((Enum) WiresUI.Settings.MultiToolMode.Red))
|
|
{
|
|
++num264;
|
|
color52 = Microsoft.Xna.Framework.Color.Lerp(color52, Microsoft.Xna.Framework.Color.Red, 1f / num264);
|
|
}
|
|
if (toolMode.HasFlag((Enum) WiresUI.Settings.MultiToolMode.Blue))
|
|
{
|
|
++num264;
|
|
color52 = Microsoft.Xna.Framework.Color.Lerp(color52, Microsoft.Xna.Framework.Color.Blue, 1f / num264);
|
|
}
|
|
if (toolMode.HasFlag((Enum) WiresUI.Settings.MultiToolMode.Green))
|
|
{
|
|
++num264;
|
|
color52 = Microsoft.Xna.Framework.Color.Lerp(color52, new Microsoft.Xna.Framework.Color(0, (int) byte.MaxValue, 0), 1f / num264);
|
|
}
|
|
if (toolMode.HasFlag((Enum) WiresUI.Settings.MultiToolMode.Yellow))
|
|
{
|
|
float num265 = num264 + 1f;
|
|
color52 = Microsoft.Xna.Framework.Color.Lerp(color52, new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, 0), 1f / num265);
|
|
}
|
|
if (toolMode.HasFlag((Enum) WiresUI.Settings.MultiToolMode.Cutter))
|
|
color51 = new Microsoft.Xna.Framework.Color(50, 50, 50, (int) byte.MaxValue);
|
|
color52.A = (byte) 0;
|
|
if (point == tileCoordinates)
|
|
{
|
|
Vector2 position = tileCoordinates.ToVector2() * 16f - Main.screenPosition;
|
|
Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.Rectangle(0, 0, 16, 16);
|
|
if (flag7)
|
|
Main.EntitySpriteDraw(TextureAssets.WireUi[11].Value, position, new Microsoft.Xna.Framework.Rectangle?(), color51, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0);
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, position, new Microsoft.Xna.Framework.Rectangle?(rectangle), color52, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0);
|
|
rectangle.Y = 18;
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, position, new Microsoft.Xna.Framework.Rectangle?(rectangle), color51, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0);
|
|
}
|
|
else if (point.X == tileCoordinates.X)
|
|
{
|
|
int num266 = tileCoordinates.Y - point.Y;
|
|
int num267 = Math.Sign(num266);
|
|
Vector2 position3 = point.ToVector2() * 16f - Main.screenPosition;
|
|
Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.Rectangle(num266 * num263 > 0 ? 72 : 18, 0, 16, 16);
|
|
if (flag7)
|
|
Main.EntitySpriteDraw(TextureAssets.WireUi[11].Value, position3, new Microsoft.Xna.Framework.Rectangle?(), color51, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0);
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, position3, new Microsoft.Xna.Framework.Rectangle?(rectangle), color52, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0);
|
|
rectangle.Y = 18;
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, position3, new Microsoft.Xna.Framework.Rectangle?(rectangle), color51, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0);
|
|
for (int index = point.Y + num267; index != tileCoordinates.Y; index += num267)
|
|
{
|
|
Vector2 position4 = new Vector2((float) (point.X * 16), (float) (index * 16)) - Main.screenPosition;
|
|
rectangle.Y = 0;
|
|
rectangle.X = 90;
|
|
if (flag7)
|
|
Main.EntitySpriteDraw(TextureAssets.WireUi[11].Value, position4, new Microsoft.Xna.Framework.Rectangle?(), color51, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0);
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, position4, new Microsoft.Xna.Framework.Rectangle?(rectangle), color52, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0);
|
|
rectangle.Y = 18;
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, position4, new Microsoft.Xna.Framework.Rectangle?(rectangle), color51, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0);
|
|
}
|
|
Vector2 position5 = tileCoordinates.ToVector2() * 16f - Main.screenPosition;
|
|
rectangle = new Microsoft.Xna.Framework.Rectangle(num266 * num263 > 0 ? 18 : 72, 0, 16, 16);
|
|
if (flag7)
|
|
Main.EntitySpriteDraw(TextureAssets.WireUi[11].Value, position5, new Microsoft.Xna.Framework.Rectangle?(), color51, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0);
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, position5, new Microsoft.Xna.Framework.Rectangle?(rectangle), color52, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0);
|
|
rectangle.Y = 18;
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, position5, new Microsoft.Xna.Framework.Rectangle?(rectangle), color51, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0);
|
|
}
|
|
else if (point.Y == tileCoordinates.Y)
|
|
{
|
|
int num268 = tileCoordinates.X - point.X;
|
|
int num269 = Math.Sign(num268);
|
|
Vector2 position6 = point.ToVector2() * 16f - Main.screenPosition;
|
|
Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.Rectangle(num268 > 0 ? 36 : 144, 0, 16, 16);
|
|
if (flag7)
|
|
Main.EntitySpriteDraw(TextureAssets.WireUi[11].Value, position6, new Microsoft.Xna.Framework.Rectangle?(), color51, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0);
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, position6, new Microsoft.Xna.Framework.Rectangle?(rectangle), color52, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0);
|
|
rectangle.Y = 18;
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, position6, new Microsoft.Xna.Framework.Rectangle?(rectangle), color51, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0);
|
|
for (int index = point.X + num269; index != tileCoordinates.X; index += num269)
|
|
{
|
|
Vector2 position7 = new Vector2((float) (index * 16), (float) (point.Y * 16)) - Main.screenPosition;
|
|
rectangle.Y = 0;
|
|
rectangle.X = 180;
|
|
if (flag7)
|
|
Main.EntitySpriteDraw(TextureAssets.WireUi[11].Value, position7, new Microsoft.Xna.Framework.Rectangle?(), color51, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0);
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, position7, new Microsoft.Xna.Framework.Rectangle?(rectangle), color52, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0);
|
|
rectangle.Y = 18;
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, position7, new Microsoft.Xna.Framework.Rectangle?(rectangle), color51, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0);
|
|
}
|
|
Vector2 position8 = tileCoordinates.ToVector2() * 16f - Main.screenPosition;
|
|
rectangle = new Microsoft.Xna.Framework.Rectangle(num268 > 0 ? 144 : 36, 0, 16, 16);
|
|
if (flag7)
|
|
Main.EntitySpriteDraw(TextureAssets.WireUi[11].Value, position8, new Microsoft.Xna.Framework.Rectangle?(), color51, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0);
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, position8, new Microsoft.Xna.Framework.Rectangle?(rectangle), color52, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0);
|
|
rectangle.Y = 18;
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, position8, new Microsoft.Xna.Framework.Rectangle?(rectangle), color51, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0);
|
|
}
|
|
else
|
|
{
|
|
Math.Abs(point.X - tileCoordinates.X);
|
|
Math.Abs(point.Y - tileCoordinates.Y);
|
|
int num270 = Math.Sign(tileCoordinates.X - point.X);
|
|
int num271 = Math.Sign(tileCoordinates.Y - point.Y);
|
|
Microsoft.Xna.Framework.Point p = new Microsoft.Xna.Framework.Point();
|
|
bool flag8 = false;
|
|
bool flag9 = player.direction == 1;
|
|
int num272;
|
|
int num273;
|
|
int num274;
|
|
if (flag9)
|
|
{
|
|
p.X = point.X;
|
|
num272 = point.Y;
|
|
num273 = tileCoordinates.Y;
|
|
num274 = num271;
|
|
}
|
|
else
|
|
{
|
|
p.Y = point.Y;
|
|
num272 = point.X;
|
|
num273 = tileCoordinates.X;
|
|
num274 = num270;
|
|
}
|
|
Vector2 position9 = point.ToVector2() * 16f - Main.screenPosition;
|
|
Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.Rectangle(0, 0, 16, 16);
|
|
rectangle.X = flag9 ? (num274 > 0 ? 72 : 18) : (num274 > 0 ? 36 : 144);
|
|
if (flag7)
|
|
Main.EntitySpriteDraw(TextureAssets.WireUi[11].Value, position9, new Microsoft.Xna.Framework.Rectangle?(), color51, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0);
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, position9, new Microsoft.Xna.Framework.Rectangle?(rectangle), color52, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0);
|
|
rectangle.Y = 18;
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, position9, new Microsoft.Xna.Framework.Rectangle?(rectangle), color51, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0);
|
|
for (int index = num272 + num274; index != num273 && !flag8; index += num274)
|
|
{
|
|
if (flag9)
|
|
p.Y = index;
|
|
else
|
|
p.X = index;
|
|
if (WorldGen.InWorld(p.X, p.Y, 1) && Main.tile[p.X, p.Y] != null)
|
|
{
|
|
Vector2 position10 = p.ToVector2() * 16f - Main.screenPosition;
|
|
rectangle.Y = 0;
|
|
rectangle.X = flag9 ? 90 : 180;
|
|
if (flag7)
|
|
Main.EntitySpriteDraw(TextureAssets.WireUi[11].Value, position10, new Microsoft.Xna.Framework.Rectangle?(), color51, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0);
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, position10, new Microsoft.Xna.Framework.Rectangle?(rectangle), color52, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0);
|
|
rectangle.Y = 18;
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, position10, new Microsoft.Xna.Framework.Rectangle?(rectangle), color51, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0);
|
|
}
|
|
}
|
|
int num275;
|
|
int num276;
|
|
int num277;
|
|
if (flag9)
|
|
{
|
|
p.Y = tileCoordinates.Y;
|
|
num275 = point.X;
|
|
num276 = tileCoordinates.X;
|
|
num277 = num270;
|
|
}
|
|
else
|
|
{
|
|
p.X = tileCoordinates.X;
|
|
num275 = point.Y;
|
|
num276 = tileCoordinates.Y;
|
|
num277 = num271;
|
|
}
|
|
Vector2 position11 = p.ToVector2() * 16f - Main.screenPosition;
|
|
rectangle = new Microsoft.Xna.Framework.Rectangle(0, 0, 16, 16);
|
|
if (!flag9)
|
|
{
|
|
rectangle.X += num270 > 0 ? 144 : 36;
|
|
rectangle.X += num271 * num263 > 0 ? 72 : 18;
|
|
}
|
|
else
|
|
{
|
|
rectangle.X += num270 > 0 ? 36 : 144;
|
|
rectangle.X += num271 * num263 > 0 ? 18 : 72;
|
|
}
|
|
if (flag7)
|
|
Main.EntitySpriteDraw(TextureAssets.WireUi[11].Value, position11, new Microsoft.Xna.Framework.Rectangle?(), color51, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0);
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, position11, new Microsoft.Xna.Framework.Rectangle?(rectangle), color52, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0);
|
|
rectangle.Y = 18;
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, position11, new Microsoft.Xna.Framework.Rectangle?(rectangle), color51, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0);
|
|
for (int index = num275 + num277; index != num276 && !flag8; index += num277)
|
|
{
|
|
if (!flag9)
|
|
p.Y = index;
|
|
else
|
|
p.X = index;
|
|
if (WorldGen.InWorld(p.X, p.Y, 1) && Main.tile[p.X, p.Y] != null)
|
|
{
|
|
Vector2 position12 = p.ToVector2() * 16f - Main.screenPosition;
|
|
rectangle.Y = 0;
|
|
rectangle.X = flag9 ? 180 : 90;
|
|
if (flag7)
|
|
Main.EntitySpriteDraw(TextureAssets.WireUi[11].Value, position12, new Microsoft.Xna.Framework.Rectangle?(), color51, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0);
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, position12, new Microsoft.Xna.Framework.Rectangle?(rectangle), color52, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0);
|
|
rectangle.Y = 18;
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, position12, new Microsoft.Xna.Framework.Rectangle?(rectangle), color51, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0);
|
|
}
|
|
}
|
|
Vector2 position13 = tileCoordinates.ToVector2() * 16f - Main.screenPosition;
|
|
rectangle = new Microsoft.Xna.Framework.Rectangle(0, 0, 16, 16);
|
|
if (!flag9)
|
|
rectangle.X += num271 * num263 > 0 ? 18 : 72;
|
|
else
|
|
rectangle.X += num270 > 0 ? 144 : 36;
|
|
if (flag7)
|
|
Main.EntitySpriteDraw(TextureAssets.WireUi[11].Value, position13, new Microsoft.Xna.Framework.Rectangle?(), color51, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0);
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, position13, new Microsoft.Xna.Framework.Rectangle?(rectangle), color52, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0);
|
|
rectangle.Y = 18;
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, position13, new Microsoft.Xna.Framework.Rectangle?(rectangle), color51, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0);
|
|
}
|
|
}
|
|
else if (projectile1.type == 586)
|
|
{
|
|
float num278 = 300f;
|
|
if ((double) projectile1.ai[0] >= 100.0)
|
|
num278 = MathHelper.Lerp(300f, 600f, (float) (((double) projectile1.ai[0] - 100.0) / 200.0));
|
|
if ((double) num278 > 600.0)
|
|
num278 = 600f;
|
|
if ((double) projectile1.ai[0] >= 500.0)
|
|
num278 = MathHelper.Lerp(600f, 1200f, (float) (((double) projectile1.ai[0] - 500.0) / 100.0));
|
|
float rotation2 = projectile1.rotation;
|
|
Texture2D texture2D = TextureAssets.Projectile[projectile1.type].Value;
|
|
int num279 = (int) ((double) projectile1.ai[0] / 6.0);
|
|
Vector2 spinningpoint = new Vector2(0.0f, -num278);
|
|
for (int index = 0; (double) index < 10.0; ++index)
|
|
{
|
|
Microsoft.Xna.Framework.Rectangle r = texture2D.Frame(verticalFrames: 5, frameY: ((num279 + index) % 5));
|
|
float rotation3 = rotation2 + 0.6283185f * (float) index;
|
|
Vector2 vec = spinningpoint.RotatedBy((double) rotation3) / 3f + projectile1.Center;
|
|
Microsoft.Xna.Framework.Color alpha = projectile1.GetAlpha(Lighting.GetColor(vec.ToTileCoordinates()));
|
|
alpha.A /= (byte) 2;
|
|
Main.EntitySpriteDraw(texture2D, vec - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(r), alpha, rotation3, r.Size() / 2f, projectile1.scale, SpriteEffects.None, 0);
|
|
}
|
|
for (int index = 0; (double) index < 20.0; ++index)
|
|
{
|
|
Microsoft.Xna.Framework.Rectangle r = texture2D.Frame(verticalFrames: 5, frameY: ((num279 + index) % 5));
|
|
float rotation4 = (float) (-(double) rotation2 + 0.314159274101257 * (double) index) * 2f;
|
|
Vector2 vec = spinningpoint.RotatedBy((double) rotation4) + projectile1.Center;
|
|
Microsoft.Xna.Framework.Color alpha = projectile1.GetAlpha(Lighting.GetColor(vec.ToTileCoordinates()));
|
|
alpha.A /= (byte) 2;
|
|
Main.EntitySpriteDraw(texture2D, vec - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(r), alpha, rotation4, r.Size() / 2f, projectile1.scale, SpriteEffects.None, 0);
|
|
}
|
|
}
|
|
else if (projectile1.type == 536 || projectile1.type == 591 || projectile1.type == 607)
|
|
{
|
|
Texture2D texture2D = TextureAssets.Projectile[projectile1.type].Value;
|
|
Vector2 position = projectile1.position + new Vector2((float) projectile1.width, (float) projectile1.height) / 2f + Vector2.UnitY * projectile1.gfxOffY - Main.screenPosition;
|
|
Vector2 scale = new Vector2(1f, projectile1.velocity.Length() / (float) texture2D.Height);
|
|
Main.EntitySpriteDraw(texture2D, position, new Microsoft.Xna.Framework.Rectangle?(), projectile1.GetAlpha(color10), projectile1.rotation, texture2D.Frame().Bottom(), scale, spriteEffects, 0);
|
|
}
|
|
else if (projectile1.type == 688 || projectile1.type == 689 || projectile1.type == 690)
|
|
{
|
|
Texture2D texture2D3 = TextureAssets.Projectile[projectile1.type].Value;
|
|
Vector2 position14 = projectile1.Top + Vector2.UnitY * projectile1.gfxOffY - Main.screenPosition;
|
|
Microsoft.Xna.Framework.Rectangle r3 = texture2D3.Frame(verticalFrames: Main.projFrames[projectile1.type], frameY: projectile1.frame);
|
|
Vector2 origin7 = r3.Size() * new Vector2(0.5f, 0.0f);
|
|
Microsoft.Xna.Framework.Color color53 = Microsoft.Xna.Framework.Color.Lerp(projectile1.GetAlpha(color10), Microsoft.Xna.Framework.Color.White, 0.5f);
|
|
Microsoft.Xna.Framework.Color color54 = color53;
|
|
color54.A = (byte) 127;
|
|
Texture2D texture = (Texture2D) null;
|
|
Texture2D texture2D4 = (Texture2D) null;
|
|
switch (projectile1.type)
|
|
{
|
|
case 688:
|
|
texture = TextureAssets.GlowMask[228].Value;
|
|
texture2D4 = TextureAssets.Extra[86].Value;
|
|
break;
|
|
case 689:
|
|
texture = TextureAssets.GlowMask[229].Value;
|
|
texture2D4 = TextureAssets.Extra[87].Value;
|
|
break;
|
|
case 690:
|
|
texture = TextureAssets.GlowMask[230].Value;
|
|
texture2D4 = TextureAssets.Extra[88].Value;
|
|
break;
|
|
}
|
|
Main.EntitySpriteDraw(texture2D3, position14, new Microsoft.Xna.Framework.Rectangle?(r3), color53, projectile1.rotation, origin7, projectile1.scale, spriteEffects, 0);
|
|
if (texture != null)
|
|
Main.EntitySpriteDraw(texture, position14, new Microsoft.Xna.Framework.Rectangle?(r3), color54, projectile1.rotation, origin7, projectile1.scale, spriteEffects, 0);
|
|
if (texture2D4 == null)
|
|
return;
|
|
Vector2 position15 = projectile1.Center + Vector2.UnitY * projectile1.gfxOffY - Main.screenPosition;
|
|
Microsoft.Xna.Framework.Rectangle r4 = texture2D4.Frame();
|
|
Vector2 origin8 = r4.Size() * new Vector2(0.5f, 1f);
|
|
origin8.Y -= 2f;
|
|
Main.EntitySpriteDraw(texture2D4, position15, new Microsoft.Xna.Framework.Rectangle?(r4), color53, projectile1.rotation, origin8, projectile1.scale, spriteEffects, 0);
|
|
}
|
|
else if (projectile1.type == 694 || projectile1.type == 695 || projectile1.type == 696)
|
|
{
|
|
Texture2D texture2D = TextureAssets.Projectile[projectile1.type].Value;
|
|
Vector2 position = projectile1.Bottom + Vector2.UnitY * projectile1.gfxOffY - Main.screenPosition;
|
|
Microsoft.Xna.Framework.Rectangle r = texture2D.Frame(verticalFrames: Main.projFrames[projectile1.type], frameY: projectile1.frame);
|
|
Vector2 origin = r.Size() * new Vector2(0.5f, 1f);
|
|
origin.Y -= 8f;
|
|
switch (projectile1.type)
|
|
{
|
|
case 694:
|
|
case 695:
|
|
origin.X += 3f;
|
|
break;
|
|
}
|
|
Microsoft.Xna.Framework.Color color55 = Microsoft.Xna.Framework.Color.Lerp(projectile1.GetAlpha(color10), Microsoft.Xna.Framework.Color.White, 0.0f);
|
|
Main.EntitySpriteDraw(texture2D, position, new Microsoft.Xna.Framework.Rectangle?(r), color55, projectile1.rotation, origin, projectile1.scale, spriteEffects, 0);
|
|
Main.EntitySpriteDraw(texture2D, position, new Microsoft.Xna.Framework.Rectangle?(r), color55 * 0.3f, projectile1.rotation, origin, projectile1.scale * 1.1f, spriteEffects, 0);
|
|
}
|
|
else if (projectile1.type == 409)
|
|
{
|
|
Texture2D texture = TextureAssets.Projectile[projectile1.type].Value;
|
|
int height = TextureAssets.Projectile[projectile1.type].Height() / Main.projFrames[projectile1.type];
|
|
int y = height * projectile1.frame;
|
|
int num280 = 10;
|
|
int num281 = 2;
|
|
float num282 = 0.5f;
|
|
for (int index = 1; index < num280; index += num281)
|
|
{
|
|
ref Vector2 local = ref projectile1.oldPos[index];
|
|
Microsoft.Xna.Framework.Color newColor = color10;
|
|
Microsoft.Xna.Framework.Color color56 = projectile1.GetAlpha(newColor) * ((float) (num280 - index) / 15f);
|
|
Vector2 vector2 = projectile1.oldPos[index] - Main.screenPosition + new Vector2(x17 + (float) num209, (float) (projectile1.height / 2) + projectile1.gfxOffY);
|
|
Main.EntitySpriteDraw(texture, projectile1.oldPos[index] + new Vector2((float) projectile1.width, (float) projectile1.height) / 2f - Main.screenPosition + new Vector2(0.0f, projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, y, texture.Width, height)), color56, projectile1.rotation, new Vector2((float) texture.Width / 2f, (float) height / 2f), MathHelper.Lerp(projectile1.scale, num282, (float) index / 15f), spriteEffects, 0);
|
|
}
|
|
Main.EntitySpriteDraw(texture, projectile1.Center - Main.screenPosition + new Vector2(0.0f, projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, y, texture.Width, height)), projectile1.GetAlpha(color10), projectile1.rotation, new Vector2((float) texture.Width / 2f, (float) height / 2f), projectile1.scale, spriteEffects, 0);
|
|
}
|
|
else if (projectile1.type == 437)
|
|
{
|
|
Texture2D texture = TextureAssets.Projectile[projectile1.type].Value;
|
|
int height = TextureAssets.Projectile[projectile1.type].Height() / Main.projFrames[projectile1.type];
|
|
int y = height * projectile1.frame;
|
|
int num283 = 10;
|
|
int num284 = 2;
|
|
float num285 = 0.2f;
|
|
for (int index = 1; index < num283; index += num284)
|
|
{
|
|
ref Vector2 local = ref projectile1.oldPos[index];
|
|
Microsoft.Xna.Framework.Color newColor = color10;
|
|
Microsoft.Xna.Framework.Color color57 = projectile1.GetAlpha(newColor) * ((float) (num283 - index) / 15f);
|
|
Vector2 vector2 = projectile1.oldPos[index] - Main.screenPosition + new Vector2(x17 + (float) num209, (float) (projectile1.height / 2) + projectile1.gfxOffY);
|
|
Main.EntitySpriteDraw(texture, projectile1.oldPos[index] + new Vector2((float) projectile1.width, (float) projectile1.height) / 2f - Main.screenPosition + new Vector2(0.0f, projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, y, texture.Width, height)), color57, projectile1.rotation, new Vector2((float) texture.Width / 2f, (float) height / 2f), MathHelper.Lerp(projectile1.scale, num285, (float) index / 15f), spriteEffects, 0);
|
|
}
|
|
Main.EntitySpriteDraw(texture, projectile1.Center - Main.screenPosition + new Vector2(0.0f, projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, y, texture.Width, height)), Microsoft.Xna.Framework.Color.White, projectile1.rotation, new Vector2((float) texture.Width / 2f, (float) height / 2f), projectile1.scale + 0.2f, spriteEffects, 0);
|
|
Main.EntitySpriteDraw(texture, projectile1.Center - Main.screenPosition + new Vector2(0.0f, projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, y, texture.Width, height)), projectile1.GetAlpha(Microsoft.Xna.Framework.Color.White), projectile1.rotation, new Vector2((float) texture.Width / 2f, (float) height / 2f), projectile1.scale + 0.2f, spriteEffects, 0);
|
|
}
|
|
else if (projectile1.type == 384 || projectile1.type == 386)
|
|
{
|
|
Texture2D texture = TextureAssets.Projectile[projectile1.type].Value;
|
|
int height = TextureAssets.Projectile[projectile1.type].Height() / Main.projFrames[projectile1.type];
|
|
int y = height * projectile1.frame;
|
|
Main.EntitySpriteDraw(texture, projectile1.Center - Main.screenPosition + new Vector2(0.0f, projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, y, texture.Width, height)), projectile1.GetAlpha(color10), projectile1.rotation, new Vector2((float) texture.Width / 2f, (float) height / 2f), projectile1.scale, spriteEffects, 0);
|
|
}
|
|
else if (projectile1.type == 439 || projectile1.type == 460 || projectile1.type == 600 || projectile1.type == 615 || projectile1.type == 630 || projectile1.type == 633 || projectile1.type == 705 || projectile1.type == 714)
|
|
{
|
|
Texture2D texture = TextureAssets.Projectile[projectile1.type].Value;
|
|
if ((double) Main.player[projectile1.owner].gravDir == -1.0)
|
|
{
|
|
if (projectile1.type == 705)
|
|
spriteEffects |= SpriteEffects.FlipVertically;
|
|
if (projectile1.type == 615 || projectile1.type == 714)
|
|
{
|
|
if (Main.player[projectile1.owner].direction == 1)
|
|
spriteEffects = SpriteEffects.FlipVertically;
|
|
else if (Main.player[projectile1.owner].direction == -1)
|
|
spriteEffects = SpriteEffects.FlipHorizontally | SpriteEffects.FlipVertically;
|
|
}
|
|
else if (projectile1.type == 600 || projectile1.type == 439)
|
|
{
|
|
if (Main.player[projectile1.owner].direction == 1)
|
|
spriteEffects = SpriteEffects.FlipHorizontally;
|
|
else if (Main.player[projectile1.owner].direction == -1)
|
|
spriteEffects = SpriteEffects.None;
|
|
}
|
|
}
|
|
int height = TextureAssets.Projectile[projectile1.type].Height() / Main.projFrames[projectile1.type];
|
|
int y15 = height * projectile1.frame;
|
|
Vector2 position = (projectile1.position + new Vector2((float) projectile1.width, (float) projectile1.height) / 2f + Vector2.UnitY * projectile1.gfxOffY - Main.screenPosition).Floor();
|
|
float num286 = 1f;
|
|
if (Main.player[projectile1.owner].shroomiteStealth && Main.player[projectile1.owner].inventory[Main.player[projectile1.owner].selectedItem].ranged)
|
|
{
|
|
float num287 = Main.player[projectile1.owner].stealth;
|
|
if ((double) num287 < 0.03)
|
|
num287 = 0.03f;
|
|
double num288 = (1.0 + (double) num287 * 10.0) / 11.0;
|
|
color10 *= num287;
|
|
num286 = num287;
|
|
}
|
|
if (Main.player[projectile1.owner].setVortex && Main.player[projectile1.owner].inventory[Main.player[projectile1.owner].selectedItem].ranged)
|
|
{
|
|
float num289 = Main.player[projectile1.owner].stealth;
|
|
if ((double) num289 < 0.03)
|
|
num289 = 0.03f;
|
|
double num290 = (1.0 + (double) num289 * 10.0) / 11.0;
|
|
color10 = color10.MultiplyRGBA(new Microsoft.Xna.Framework.Color(Vector4.Lerp(Vector4.One, new Vector4(0.0f, 0.12f, 0.16f, 0.0f), 1f - num289)));
|
|
num286 = num289;
|
|
}
|
|
if (projectile1.type == 714)
|
|
{
|
|
y15 = 0;
|
|
Main.instance.LoadItem(3930);
|
|
texture = TextureAssets.Item[3930].Value;
|
|
}
|
|
Main.EntitySpriteDraw(texture, position, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, y15, texture.Width, height)), projectile1.GetAlpha(color10), projectile1.rotation, new Vector2((float) texture.Width / 2f, (float) height / 2f), projectile1.scale, spriteEffects, 0);
|
|
if (projectile1.type == 439)
|
|
Main.EntitySpriteDraw(TextureAssets.GlowMask[35].Value, position, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, y15, texture.Width, height)), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0) * num286, projectile1.rotation, new Vector2((float) texture.Width / 2f, (float) height / 2f), projectile1.scale, spriteEffects, 0);
|
|
else if (projectile1.type == 714)
|
|
{
|
|
int y16 = height * projectile1.frame;
|
|
Microsoft.Xna.Framework.Color rgb = Main.hslToRgb((float) ((double) projectile1.ai[0] / 90.0 % 1.0), 1f, 0.5f);
|
|
rgb.A = (byte) 120;
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, position, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, y16, texture.Width, height)), rgb * num286, projectile1.rotation, new Vector2((float) texture.Width / 2f, (float) height / 2f), projectile1.scale, spriteEffects, 0);
|
|
}
|
|
else if (projectile1.type == 615)
|
|
Main.EntitySpriteDraw(TextureAssets.GlowMask[192].Value, position, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, y15, texture.Width, height)), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, (int) sbyte.MaxValue) * num286, projectile1.rotation, new Vector2((float) texture.Width / 2f, (float) height / 2f), projectile1.scale, spriteEffects, 0);
|
|
else if (projectile1.type == 630)
|
|
{
|
|
Main.EntitySpriteDraw(TextureAssets.GlowMask[200].Value, position, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, y15, texture.Width, height)), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, (int) sbyte.MaxValue) * num286, projectile1.rotation, new Vector2((float) texture.Width / 2f, (float) height / 2f), projectile1.scale, spriteEffects, 0);
|
|
if ((double) projectile1.localAI[0] <= 0.0)
|
|
return;
|
|
int frameY = 6 - (int) ((double) projectile1.localAI[0] / 1.0);
|
|
Texture2D texture2D = TextureAssets.Extra[65].Value;
|
|
Main.EntitySpriteDraw(texture2D, position + Vector2.Normalize(projectile1.velocity) * 2f, new Microsoft.Xna.Framework.Rectangle?(texture2D.Frame(verticalFrames: 6, frameY: frameY)), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, (int) sbyte.MaxValue) * num286, projectile1.rotation, new Vector2(spriteEffects.HasFlag((Enum) SpriteEffects.FlipHorizontally) ? (float) texture2D.Width : 0.0f, (float) ((double) height / 2.0 - 2.0)), projectile1.scale, spriteEffects, 0);
|
|
}
|
|
else if (projectile1.type == 600)
|
|
{
|
|
Microsoft.Xna.Framework.Color portalColor = PortalHelper.GetPortalColor(projectile1.owner, (int) projectile1.ai[1]);
|
|
portalColor.A = (byte) 70;
|
|
Main.EntitySpriteDraw(TextureAssets.GlowMask[173].Value, position, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, y15, texture.Width, height)), portalColor, projectile1.rotation, new Vector2((float) texture.Width / 2f, (float) height / 2f), projectile1.scale, spriteEffects, 0);
|
|
}
|
|
else if (projectile1.type == 460)
|
|
{
|
|
if ((double) Math.Abs(projectile1.rotation - 1.570796f) > 1.57079637050629)
|
|
spriteEffects |= SpriteEffects.FlipVertically;
|
|
Main.EntitySpriteDraw(TextureAssets.GlowMask[102].Value, position, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, y15, texture.Width, height)), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0), projectile1.rotation - 1.570796f, new Vector2((float) texture.Width / 2f, (float) height / 2f), projectile1.scale, spriteEffects, 0);
|
|
if ((double) projectile1.ai[0] <= 180.0 || Main.projectile[(int) projectile1.ai[1]].type != 461)
|
|
return;
|
|
this.DrawProj((int) projectile1.ai[1]);
|
|
}
|
|
else
|
|
{
|
|
if (projectile1.type != 633)
|
|
return;
|
|
float num291 = (float) (Math.Cos(6.28318548202515 * ((double) projectile1.ai[0] / 30.0)) * 2.0 + 2.0);
|
|
if ((double) projectile1.ai[0] > 120.0)
|
|
num291 = 4f;
|
|
for (float num292 = 0.0f; (double) num292 < 4.0; ++num292)
|
|
Main.EntitySpriteDraw(texture, position + Vector2.UnitY.RotatedBy((double) num292 * 6.28318548202515 / 4.0) * num291, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, y15, texture.Width, height)), projectile1.GetAlpha(color10).MultiplyRGBA(new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0)) * 0.03f, projectile1.rotation, new Vector2((float) texture.Width / 2f, (float) height / 2f), projectile1.scale, spriteEffects, 0);
|
|
}
|
|
}
|
|
else if (projectile1.type == 442)
|
|
{
|
|
Texture2D texture = TextureAssets.Projectile[projectile1.type].Value;
|
|
int height = TextureAssets.Projectile[projectile1.type].Height() / Main.projFrames[projectile1.type];
|
|
int y = height * projectile1.frame;
|
|
Vector2 position = projectile1.position + new Vector2((float) projectile1.width, (float) projectile1.height) / 2f + Vector2.UnitY * projectile1.gfxOffY - Main.screenPosition;
|
|
Main.EntitySpriteDraw(texture, position, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, y, texture.Width, height)), projectile1.GetAlpha(color10), projectile1.rotation, new Vector2((float) texture.Width / 2f, (float) height / 2f), projectile1.scale, spriteEffects, 0);
|
|
Main.EntitySpriteDraw(TextureAssets.GlowMask[37].Value, position, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, y, texture.Width, height)), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0) * (float) (1.0 - (double) projectile1.alpha / (double) byte.MaxValue), projectile1.rotation, new Vector2((float) texture.Width / 2f, (float) height / 2f), projectile1.scale, spriteEffects, 0);
|
|
}
|
|
else if (projectile1.type == 447)
|
|
{
|
|
Texture2D texture = TextureAssets.Projectile[projectile1.type].Value;
|
|
Texture2D texture2D = TextureAssets.Extra[4].Value;
|
|
int num293 = texture.Height / Main.projFrames[projectile1.type];
|
|
int num294 = num293 * projectile1.frame;
|
|
int height = texture2D.Height / Main.projFrames[projectile1.type];
|
|
int y = height * projectile1.frame;
|
|
Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.Rectangle(0, y, texture2D.Width, height);
|
|
Vector2 position = projectile1.position + new Vector2((float) projectile1.width, 0.0f) / 2f + Vector2.UnitY * projectile1.gfxOffY - Main.screenPosition;
|
|
Main.EntitySpriteDraw(TextureAssets.Extra[4].Value, position, new Microsoft.Xna.Framework.Rectangle?(rectangle), projectile1.GetAlpha(color10), projectile1.rotation, new Vector2((float) (texture2D.Width / 2), 0.0f), projectile1.scale, spriteEffects, 0);
|
|
int num295 = projectile1.height - num293 - 14;
|
|
if (num295 < 0)
|
|
num295 = 0;
|
|
if (num295 > 0)
|
|
{
|
|
if (y == height * 3)
|
|
y = height * 2;
|
|
Main.EntitySpriteDraw(TextureAssets.Extra[4].Value, position + Vector2.UnitY * (float) (height - 1), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, y + height - 1, texture2D.Width, 1)), projectile1.GetAlpha(color10), projectile1.rotation, new Vector2((float) (texture2D.Width / 2), 0.0f), new Vector2(1f, (float) num295), spriteEffects, 0);
|
|
}
|
|
rectangle.Width = texture.Width;
|
|
rectangle.Y = num294;
|
|
Main.EntitySpriteDraw(texture, position + Vector2.UnitY * (float) (height - 1 + num295), new Microsoft.Xna.Framework.Rectangle?(rectangle), projectile1.GetAlpha(color10), projectile1.rotation, new Vector2((float) texture.Width / 2f, 0.0f), projectile1.scale, spriteEffects, 0);
|
|
}
|
|
else if (projectile1.type == 455)
|
|
{
|
|
if (projectile1.velocity == Vector2.Zero)
|
|
return;
|
|
Texture2D texture2D5 = TextureAssets.Projectile[projectile1.type].Value;
|
|
Texture2D texture = TextureAssets.Extra[21].Value;
|
|
Texture2D texture2D6 = TextureAssets.Extra[22].Value;
|
|
float num296 = projectile1.localAI[1];
|
|
Microsoft.Xna.Framework.Color color58 = new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0) * 0.9f;
|
|
Main.EntitySpriteDraw(texture2D5, projectile1.Center - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(), color58, projectile1.rotation, texture2D5.Size() / 2f, projectile1.scale, SpriteEffects.None, 0);
|
|
float num297 = num296 - (float) (texture2D5.Height / 2 + texture2D6.Height) * projectile1.scale;
|
|
Vector2 vector2 = projectile1.Center + projectile1.velocity * projectile1.scale * (float) texture2D5.Height / 2f;
|
|
if ((double) num297 > 0.0)
|
|
{
|
|
float num298 = 0.0f;
|
|
Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.Rectangle(0, 16 * (projectile1.timeLeft / 3 % 5), texture.Width, 16);
|
|
while ((double) num298 + 1.0 < (double) num297)
|
|
{
|
|
if ((double) num297 - (double) num298 < (double) rectangle.Height)
|
|
rectangle.Height = (int) ((double) num297 - (double) num298);
|
|
Main.EntitySpriteDraw(texture, vector2 - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(rectangle), color58, projectile1.rotation, new Vector2((float) (rectangle.Width / 2), 0.0f), projectile1.scale, SpriteEffects.None, 0);
|
|
num298 += (float) rectangle.Height * projectile1.scale;
|
|
vector2 += projectile1.velocity * (float) rectangle.Height * projectile1.scale;
|
|
rectangle.Y += 16;
|
|
if (rectangle.Y + rectangle.Height > texture.Height)
|
|
rectangle.Y = 0;
|
|
}
|
|
}
|
|
Main.EntitySpriteDraw(texture2D6, vector2 - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(), color58, projectile1.rotation, texture2D6.Frame().Top(), projectile1.scale, SpriteEffects.None, 0);
|
|
}
|
|
else if (projectile1.type == 461)
|
|
{
|
|
if (projectile1.velocity == Vector2.Zero)
|
|
return;
|
|
Texture2D texture2D = TextureAssets.Projectile[projectile1.type].Value;
|
|
float num299 = projectile1.localAI[1];
|
|
Microsoft.Xna.Framework.Color color59 = new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0) * 0.9f;
|
|
Microsoft.Xna.Framework.Rectangle r = new Microsoft.Xna.Framework.Rectangle(0, 0, texture2D.Width, 22);
|
|
Vector2 vector2_20 = new Vector2(0.0f, Main.player[projectile1.owner].gfxOffY);
|
|
Main.EntitySpriteDraw(texture2D, projectile1.Center.Floor() - Main.screenPosition + vector2_20, new Microsoft.Xna.Framework.Rectangle?(r), color59, projectile1.rotation, r.Size() / 2f, projectile1.scale, SpriteEffects.None, 0);
|
|
float num300 = num299 - 33f * projectile1.scale;
|
|
Vector2 vector2_21 = projectile1.Center.Floor() + projectile1.velocity * projectile1.scale * 10.5f;
|
|
r = new Microsoft.Xna.Framework.Rectangle(0, 25, texture2D.Width, 28);
|
|
if ((double) num300 > 0.0)
|
|
{
|
|
float num301 = 0.0f;
|
|
while ((double) num301 + 1.0 < (double) num300)
|
|
{
|
|
if ((double) num300 - (double) num301 < (double) r.Height)
|
|
r.Height = (int) ((double) num300 - (double) num301);
|
|
Main.EntitySpriteDraw(texture2D, vector2_21 - Main.screenPosition + vector2_20, new Microsoft.Xna.Framework.Rectangle?(r), color59, projectile1.rotation, new Vector2((float) (r.Width / 2), 0.0f), projectile1.scale, SpriteEffects.None, 0);
|
|
num301 += (float) r.Height * projectile1.scale;
|
|
vector2_21 += projectile1.velocity * (float) r.Height * projectile1.scale;
|
|
}
|
|
}
|
|
r = new Microsoft.Xna.Framework.Rectangle(0, 56, texture2D.Width, 22);
|
|
Main.EntitySpriteDraw(texture2D, vector2_21 - Main.screenPosition + vector2_20, new Microsoft.Xna.Framework.Rectangle?(r), color59, projectile1.rotation, texture2D.Frame().Top(), projectile1.scale, SpriteEffects.None, 0);
|
|
}
|
|
else if (projectile1.type == 632)
|
|
{
|
|
if (projectile1.velocity == Vector2.Zero)
|
|
return;
|
|
Texture2D tex = TextureAssets.Projectile[projectile1.type].Value;
|
|
float num302 = projectile1.localAI[1];
|
|
float laserLuminance = 0.5f;
|
|
float laserAlphaMultiplier = 0.0f;
|
|
Microsoft.Xna.Framework.Color rgb = Main.hslToRgb(projectile1.GetLastPrismHue(projectile1.ai[0], ref laserLuminance, ref laserAlphaMultiplier), 1f, laserLuminance);
|
|
rgb.A = (byte) ((double) rgb.A * (double) laserAlphaMultiplier);
|
|
Vector2 vector2_22 = projectile1.Center.Floor() + projectile1.velocity * projectile1.scale * 10.5f;
|
|
float num303 = num302 - projectile1.scale * 14.5f * projectile1.scale;
|
|
Vector2 scale = new Vector2(projectile1.scale);
|
|
DelegateMethods.f_1 = 1f;
|
|
DelegateMethods.c_1 = rgb * 0.75f * projectile1.Opacity;
|
|
Vector2 vector2_23 = projectile1.oldPos[0] + new Vector2((float) projectile1.width, (float) projectile1.height) / 2f + Vector2.UnitY * projectile1.gfxOffY - Main.screenPosition;
|
|
Utils.DrawLaser(Main.spriteBatch, tex, vector2_22 - Main.screenPosition, vector2_22 + projectile1.velocity * num303 - Main.screenPosition, scale, new Utils.LaserLineFraming(DelegateMethods.RainbowLaserDraw));
|
|
DelegateMethods.c_1 = new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, (int) sbyte.MaxValue) * 0.75f * projectile1.Opacity;
|
|
Utils.DrawLaser(Main.spriteBatch, tex, vector2_22 - Main.screenPosition, vector2_22 + projectile1.velocity * num303 - Main.screenPosition, scale / 2f, new Utils.LaserLineFraming(DelegateMethods.RainbowLaserDraw));
|
|
}
|
|
else if (projectile1.type == 642)
|
|
{
|
|
if (projectile1.velocity == Vector2.Zero)
|
|
return;
|
|
Texture2D tex = TextureAssets.Projectile[projectile1.type].Value;
|
|
float num304 = projectile1.localAI[1];
|
|
Microsoft.Xna.Framework.Color color60 = new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, (int) sbyte.MaxValue);
|
|
Vector2 vector2_24 = projectile1.Center.Floor();
|
|
float num305 = num304 - projectile1.scale * 10.5f;
|
|
Vector2 scale = new Vector2(projectile1.scale);
|
|
DelegateMethods.f_1 = 1f;
|
|
DelegateMethods.c_1 = color60;
|
|
DelegateMethods.i_1 = 54000 - (int) Main.time / 2;
|
|
Vector2 vector2_25 = projectile1.oldPos[0] + new Vector2((float) projectile1.width, (float) projectile1.height) / 2f + Vector2.UnitY * projectile1.gfxOffY - Main.screenPosition;
|
|
Utils.DrawLaser(Main.spriteBatch, tex, vector2_24 - Main.screenPosition, vector2_24 + projectile1.velocity * num305 - Main.screenPosition, scale, new Utils.LaserLineFraming(DelegateMethods.TurretLaserDraw));
|
|
DelegateMethods.c_1 = new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, (int) sbyte.MaxValue) * 0.75f * projectile1.Opacity;
|
|
Utils.DrawLaser(Main.spriteBatch, tex, vector2_24 - Main.screenPosition, vector2_24 + projectile1.velocity * num305 - Main.screenPosition, scale / 2f, new Utils.LaserLineFraming(DelegateMethods.TurretLaserDraw));
|
|
}
|
|
else if (projectile1.type == 611)
|
|
{
|
|
Vector2 vector2_26 = projectile1.position + new Vector2((float) projectile1.width, (float) projectile1.height) / 2f + Vector2.UnitY * projectile1.gfxOffY - Main.screenPosition;
|
|
Texture2D texture2D = TextureAssets.Projectile[projectile1.type].Value;
|
|
Microsoft.Xna.Framework.Color alpha = projectile1.GetAlpha(color10);
|
|
if (projectile1.velocity == Vector2.Zero)
|
|
return;
|
|
float num306 = projectile1.velocity.Length() + 16f;
|
|
bool flag = (double) num306 < 100.0;
|
|
Vector2 vector2_27 = Vector2.Normalize(projectile1.velocity);
|
|
Microsoft.Xna.Framework.Rectangle r = new Microsoft.Xna.Framework.Rectangle(0, 2, texture2D.Width, 40);
|
|
Vector2 vector2_28 = new Vector2(0.0f, Main.player[projectile1.owner].gfxOffY);
|
|
float rotation = projectile1.rotation + 3.141593f;
|
|
Main.EntitySpriteDraw(texture2D, projectile1.Center.Floor() - Main.screenPosition + vector2_28, new Microsoft.Xna.Framework.Rectangle?(r), alpha, rotation, r.Size() / 2f - Vector2.UnitY * 4f, projectile1.scale, SpriteEffects.None, 0);
|
|
float num307 = num306 - 40f * projectile1.scale;
|
|
Vector2 vector2_29 = projectile1.Center.Floor() + vector2_27 * projectile1.scale * 24f;
|
|
r = new Microsoft.Xna.Framework.Rectangle(0, 68, texture2D.Width, 18);
|
|
if ((double) num307 > 0.0)
|
|
{
|
|
float num308 = 0.0f;
|
|
while ((double) num308 + 1.0 < (double) num307)
|
|
{
|
|
if ((double) num307 - (double) num308 < (double) r.Height)
|
|
r.Height = (int) ((double) num307 - (double) num308);
|
|
Main.EntitySpriteDraw(texture2D, vector2_29 - Main.screenPosition + vector2_28, new Microsoft.Xna.Framework.Rectangle?(r), alpha, rotation, new Vector2((float) (r.Width / 2), 0.0f), projectile1.scale, SpriteEffects.None, 0);
|
|
num308 += (float) r.Height * projectile1.scale;
|
|
vector2_29 += vector2_27 * (float) r.Height * projectile1.scale;
|
|
}
|
|
}
|
|
Vector2 vector2_30 = vector2_29;
|
|
Vector2 vector2_31 = projectile1.Center.Floor() + vector2_27 * projectile1.scale * 24f;
|
|
r = new Microsoft.Xna.Framework.Rectangle(0, 46, texture2D.Width, 18);
|
|
int num309 = 18;
|
|
if (flag)
|
|
num309 = 9;
|
|
float num310 = num307;
|
|
if ((double) num307 > 0.0)
|
|
{
|
|
float num311 = 0.0f;
|
|
float num312 = num310 / (float) num309;
|
|
float num313 = num311 + num312 * 0.25f;
|
|
Vector2 vector2_32 = vector2_31 + vector2_27 * num312 * 0.25f;
|
|
for (int index = 0; index < num309; ++index)
|
|
{
|
|
float num314 = num312;
|
|
if (index == 0)
|
|
num314 *= 0.75f;
|
|
Main.EntitySpriteDraw(texture2D, vector2_32 - Main.screenPosition + vector2_28, new Microsoft.Xna.Framework.Rectangle?(r), alpha, rotation, new Vector2((float) (r.Width / 2), 0.0f), projectile1.scale, SpriteEffects.None, 0);
|
|
num313 += num314;
|
|
vector2_32 += vector2_27 * num314;
|
|
}
|
|
}
|
|
r = new Microsoft.Xna.Framework.Rectangle(0, 90, texture2D.Width, 48);
|
|
Main.EntitySpriteDraw(texture2D, vector2_30 - Main.screenPosition + vector2_28, new Microsoft.Xna.Framework.Rectangle?(r), alpha, rotation, texture2D.Frame().Top(), projectile1.scale, SpriteEffects.None, 0);
|
|
}
|
|
else if (projectile1.type == 537)
|
|
{
|
|
if (projectile1.velocity == Vector2.Zero)
|
|
return;
|
|
Texture2D texture2D = TextureAssets.Projectile[projectile1.type].Value;
|
|
float num315 = projectile1.localAI[1];
|
|
Microsoft.Xna.Framework.Color color61 = new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0) * 0.9f;
|
|
Microsoft.Xna.Framework.Rectangle r = new Microsoft.Xna.Framework.Rectangle(0, 0, texture2D.Width, 22);
|
|
Vector2 vector2_33 = new Vector2(0.0f, Main.npc[(int) projectile1.ai[1]].gfxOffY);
|
|
Main.EntitySpriteDraw(texture2D, projectile1.Center.Floor() - Main.screenPosition + vector2_33, new Microsoft.Xna.Framework.Rectangle?(r), color61, projectile1.rotation, r.Size() / 2f, projectile1.scale, SpriteEffects.None, 0);
|
|
float num316 = num315 - 33f * projectile1.scale;
|
|
Vector2 vector2_34 = projectile1.Center.Floor() + projectile1.velocity * projectile1.scale * 10.5f;
|
|
r = new Microsoft.Xna.Framework.Rectangle(0, 25, texture2D.Width, 28);
|
|
if ((double) num316 > 0.0)
|
|
{
|
|
float num317 = 0.0f;
|
|
while ((double) num317 + 1.0 < (double) num316)
|
|
{
|
|
if ((double) num316 - (double) num317 < (double) r.Height)
|
|
r.Height = (int) ((double) num316 - (double) num317);
|
|
Main.EntitySpriteDraw(texture2D, vector2_34 - Main.screenPosition + vector2_33, new Microsoft.Xna.Framework.Rectangle?(r), color61, projectile1.rotation, new Vector2((float) (r.Width / 2), 0.0f), projectile1.scale, SpriteEffects.None, 0);
|
|
num317 += (float) r.Height * projectile1.scale;
|
|
vector2_34 += projectile1.velocity * (float) r.Height * projectile1.scale;
|
|
}
|
|
}
|
|
r = new Microsoft.Xna.Framework.Rectangle(0, 56, texture2D.Width, 22);
|
|
Main.EntitySpriteDraw(texture2D, vector2_34 - Main.screenPosition + vector2_33, new Microsoft.Xna.Framework.Rectangle?(r), color61, projectile1.rotation, texture2D.Frame().Top(), projectile1.scale, SpriteEffects.None, 0);
|
|
}
|
|
else if (projectile1.type == 456)
|
|
{
|
|
Texture2D texture2D7 = TextureAssets.Projectile[projectile1.type].Value;
|
|
Texture2D texture = TextureAssets.Extra[23].Value;
|
|
Texture2D texture2D8 = TextureAssets.Extra[24].Value;
|
|
Vector2 vector2_35 = new Vector2(0.0f, 216f);
|
|
Vector2 vector2_36 = Main.npc[(int) Math.Abs(projectile1.ai[0]) - 1].Center - projectile1.Center + vector2_35;
|
|
float num318 = vector2_36.Length();
|
|
Vector2 vector2_37 = Vector2.Normalize(vector2_36);
|
|
Microsoft.Xna.Framework.Rectangle r5 = texture2D7.Frame();
|
|
r5.Height /= 4;
|
|
r5.Y += projectile1.frame * r5.Height;
|
|
Microsoft.Xna.Framework.Color newColor1 = Microsoft.Xna.Framework.Color.Lerp(color10, Microsoft.Xna.Framework.Color.White, 0.3f);
|
|
Main.EntitySpriteDraw(texture2D7, projectile1.Center - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(r5), projectile1.GetAlpha(newColor1), projectile1.rotation, r5.Size() / 2f, projectile1.scale, SpriteEffects.None, 0);
|
|
float num319 = num318 - (float) (r5.Height / 2 + texture2D8.Height) * projectile1.scale;
|
|
Vector2 vec = projectile1.Center + vector2_37 * projectile1.scale * (float) r5.Height / 2f;
|
|
if ((double) num319 > 0.0)
|
|
{
|
|
float num320 = 0.0f;
|
|
Microsoft.Xna.Framework.Rectangle r6 = new Microsoft.Xna.Framework.Rectangle(0, 0, texture.Width, texture.Height);
|
|
while ((double) num320 + 1.0 < (double) num319)
|
|
{
|
|
if ((double) num319 - (double) num320 < (double) r6.Height)
|
|
r6.Height = (int) ((double) num319 - (double) num320);
|
|
Microsoft.Xna.Framework.Point tileCoordinates = vec.ToTileCoordinates();
|
|
Microsoft.Xna.Framework.Color newColor2 = Microsoft.Xna.Framework.Color.Lerp(Lighting.GetColor(tileCoordinates.X, tileCoordinates.Y), Microsoft.Xna.Framework.Color.White, 0.3f);
|
|
Main.EntitySpriteDraw(texture, vec - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(r6), projectile1.GetAlpha(newColor2), projectile1.rotation, r6.Bottom(), projectile1.scale, SpriteEffects.None, 0);
|
|
num320 += (float) r6.Height * projectile1.scale;
|
|
vec += vector2_37 * (float) r6.Height * projectile1.scale;
|
|
}
|
|
}
|
|
Microsoft.Xna.Framework.Point tileCoordinates1 = vec.ToTileCoordinates();
|
|
Microsoft.Xna.Framework.Color color62 = Microsoft.Xna.Framework.Color.Lerp(Lighting.GetColor(tileCoordinates1.X, tileCoordinates1.Y), Microsoft.Xna.Framework.Color.White, 0.3f);
|
|
Microsoft.Xna.Framework.Rectangle rectangle = texture2D8.Frame();
|
|
if ((double) num319 < 0.0)
|
|
rectangle.Height += (int) num319;
|
|
Main.EntitySpriteDraw(texture2D8, vec - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(rectangle), color62, projectile1.rotation, new Vector2((float) rectangle.Width / 2f, (float) rectangle.Height), projectile1.scale, SpriteEffects.None, 0);
|
|
}
|
|
else if (projectile1.type == 443)
|
|
{
|
|
Texture2D texture = TextureAssets.Projectile[projectile1.type].Value;
|
|
float num321 = 30f;
|
|
float num322 = num321 * 4f;
|
|
float num323 = 6.283185f * projectile1.ai[0] / num321;
|
|
float num324 = 6.283185f * projectile1.ai[0] / num322;
|
|
Vector2 vector2 = -Vector2.UnitY.RotatedBy((double) num323);
|
|
float scale6 = (float) (0.75 + (double) vector2.Y * 0.25);
|
|
float scale7 = (float) (0.800000011920929 - (double) vector2.Y * 0.200000002980232);
|
|
int height = TextureAssets.Projectile[projectile1.type].Height() / Main.projFrames[projectile1.type];
|
|
int y = height * projectile1.frame;
|
|
Vector2 position = projectile1.position + new Vector2((float) projectile1.width, (float) projectile1.height) / 2f + Vector2.UnitY * projectile1.gfxOffY - Main.screenPosition;
|
|
Main.EntitySpriteDraw(texture, position, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, y, texture.Width, height)), projectile1.GetAlpha(color10), projectile1.rotation + num324, new Vector2((float) texture.Width / 2f, (float) height / 2f), scale6, spriteEffects, 0);
|
|
Main.EntitySpriteDraw(texture, position, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, y, texture.Width, height)), projectile1.GetAlpha(color10), projectile1.rotation + (6.283185f - num324), new Vector2((float) texture.Width / 2f, (float) height / 2f), scale7, spriteEffects, 0);
|
|
}
|
|
else if (projectile1.type == 656 || projectile1.type == 657)
|
|
{
|
|
float num325 = 900f;
|
|
if (projectile1.type == 657)
|
|
num325 = 300f;
|
|
float num326 = 15f;
|
|
float num327 = 15f;
|
|
float num328 = projectile1.ai[0];
|
|
float num329 = MathHelper.Clamp(num328 / 30f, 0.0f, 1f);
|
|
if ((double) num328 > (double) num325 - 60.0)
|
|
num329 = MathHelper.Lerp(1f, 0.0f, (float) (((double) num328 - ((double) num325 - 60.0)) / 60.0));
|
|
Microsoft.Xna.Framework.Point tileCoordinates = projectile1.Center.ToTileCoordinates();
|
|
int topY;
|
|
int bottomY;
|
|
Collision.ExpandVertically(tileCoordinates.X, tileCoordinates.Y, out topY, out bottomY, (int) num326, (int) num327);
|
|
++topY;
|
|
--bottomY;
|
|
float num330 = 0.2f;
|
|
Vector2 vector2_38 = new Vector2((float) tileCoordinates.X, (float) topY) * 16f + new Vector2(8f);
|
|
Vector2 vector2_39 = new Vector2((float) tileCoordinates.X, (float) bottomY) * 16f + new Vector2(8f);
|
|
Vector2.Lerp(vector2_38, vector2_39, 0.5f);
|
|
Vector2 vector2_40 = new Vector2(0.0f, vector2_39.Y - vector2_38.Y);
|
|
vector2_40.X = vector2_40.Y * num330;
|
|
Vector2 vector2_41 = new Vector2(vector2_38.X - vector2_40.X / 2f, vector2_38.Y);
|
|
Texture2D texture2D = TextureAssets.Projectile[projectile1.type].Value;
|
|
Microsoft.Xna.Framework.Rectangle r = texture2D.Frame();
|
|
Vector2 origin = r.Size() / 2f;
|
|
float num331 = -0.06283186f * num328;
|
|
Vector2 spinningpoint = Vector2.UnitY.RotatedBy((double) num328 * 0.100000001490116);
|
|
float num332 = 0.0f;
|
|
float num333 = 5.1f;
|
|
Microsoft.Xna.Framework.Color color63 = new Microsoft.Xna.Framework.Color(212, 192, 100);
|
|
for (float y = (float) (int) vector2_39.Y; (double) y > (double) (int) vector2_38.Y; y -= num333)
|
|
{
|
|
num332 += num333;
|
|
float num334 = num332 / vector2_40.Y;
|
|
float num335 = (float) ((double) num332 * 6.28318548202515 / -20.0);
|
|
float num336 = num334 - 0.15f;
|
|
Vector2 vector2_42 = spinningpoint.RotatedBy((double) num335);
|
|
Vector2 vector2_43 = new Vector2(0.0f, num334 + 1f);
|
|
vector2_43.X = vector2_43.Y * num330;
|
|
Microsoft.Xna.Framework.Color color64 = Microsoft.Xna.Framework.Color.Lerp(Microsoft.Xna.Framework.Color.Transparent, color63, num334 * 2f);
|
|
if ((double) num334 > 0.5)
|
|
color64 = Microsoft.Xna.Framework.Color.Lerp(Microsoft.Xna.Framework.Color.Transparent, color63, (float) (2.0 - (double) num334 * 2.0));
|
|
color64.A = (byte) ((double) color64.A * 0.5);
|
|
Microsoft.Xna.Framework.Color color65 = color64 * num329;
|
|
Vector2 vector2_44 = vector2_42 * (vector2_43 * 100f);
|
|
vector2_44.Y = 0.0f;
|
|
vector2_44.X = 0.0f;
|
|
Vector2 position = vector2_44 + (new Vector2(vector2_39.X, y) - Main.screenPosition);
|
|
Main.EntitySpriteDraw(texture2D, position, new Microsoft.Xna.Framework.Rectangle?(r), color65, num331 + num335, origin, 1f + num336, SpriteEffects.None, 0);
|
|
}
|
|
}
|
|
else if (projectile1.type == 704)
|
|
{
|
|
float num337 = 300f;
|
|
float num338 = projectile1.ai[0];
|
|
float num339 = MathHelper.Clamp(num338 / 30f, 0.0f, 1f);
|
|
if ((double) num338 > (double) num337 - 60.0)
|
|
num339 = MathHelper.Lerp(1f, 0.0f, (float) (((double) num338 - ((double) num337 - 60.0)) / 60.0));
|
|
float num340 = 0.2f;
|
|
Vector2 top = projectile1.Top;
|
|
Vector2 bottom = projectile1.Bottom;
|
|
Vector2.Lerp(top, bottom, 0.5f);
|
|
Vector2 vector2_45 = new Vector2(0.0f, bottom.Y - top.Y);
|
|
vector2_45.X = vector2_45.Y * num340;
|
|
Vector2 vector2_46 = new Vector2(top.X - vector2_45.X / 2f, top.Y);
|
|
Texture2D texture2D = TextureAssets.Projectile[projectile1.type].Value;
|
|
Microsoft.Xna.Framework.Rectangle r = texture2D.Frame();
|
|
Vector2 origin = r.Size() / 2f;
|
|
float num341 = (float) (-0.157079637050629 * (double) num338 * ((double) projectile1.velocity.X > 0.0 ? -1.0 : 1.0));
|
|
SpriteEffects effects = (double) projectile1.velocity.X > 0.0 ? SpriteEffects.FlipVertically : SpriteEffects.None;
|
|
bool flag10 = (double) projectile1.velocity.X > 0.0;
|
|
Vector2 spinningpoint = Vector2.UnitY.RotatedBy((double) num338 * 0.140000000596046);
|
|
float num342 = 0.0f;
|
|
float num343 = (float) (5.01000022888184 + (double) num338 / 150.0 * -0.899999976158142);
|
|
if ((double) num343 < 4.1100001335144)
|
|
num343 = 4.11f;
|
|
Microsoft.Xna.Framework.Color color66 = new Microsoft.Xna.Framework.Color(160, 140, 100, (int) sbyte.MaxValue);
|
|
Microsoft.Xna.Framework.Color color67 = new Microsoft.Xna.Framework.Color(140, 160, (int) byte.MaxValue, (int) sbyte.MaxValue);
|
|
float t = num338 % 60f;
|
|
Microsoft.Xna.Framework.Color color68 = (double) t >= 30.0 ? color67 * Utils.GetLerpValue(38f, 30f, t, true) : color67 * Utils.GetLerpValue(22f, 30f, t, true);
|
|
bool flag11 = color68 != Microsoft.Xna.Framework.Color.Transparent;
|
|
for (float y = (float) (int) bottom.Y; (double) y > (double) (int) top.Y; y -= num343)
|
|
{
|
|
num342 += num343;
|
|
float num344 = num342 / vector2_45.Y;
|
|
float num345 = (float) ((double) num342 * 6.28318548202515 / -20.0);
|
|
if (flag10)
|
|
num345 *= -1f;
|
|
float num346 = num344 - 0.35f;
|
|
Vector2 vector2_47 = spinningpoint.RotatedBy((double) num345);
|
|
Vector2 vector2_48 = new Vector2(0.0f, num344 + 1f);
|
|
vector2_48.X = vector2_48.Y * num340;
|
|
Microsoft.Xna.Framework.Color color69 = Microsoft.Xna.Framework.Color.Lerp(Microsoft.Xna.Framework.Color.Transparent, color66, num344 * 2f);
|
|
if ((double) num344 > 0.5)
|
|
color69 = Microsoft.Xna.Framework.Color.Lerp(Microsoft.Xna.Framework.Color.Transparent, color66, (float) (2.0 - (double) num344 * 2.0));
|
|
color69.A = (byte) ((double) color69.A * 0.5);
|
|
Microsoft.Xna.Framework.Color color70 = color69 * num339;
|
|
Vector2 vector2_49 = vector2_47 * (vector2_48 * 100f);
|
|
vector2_49.Y = 0.0f;
|
|
vector2_49.X = 0.0f;
|
|
Vector2 position = vector2_49 + (new Vector2(bottom.X, y) - Main.screenPosition);
|
|
if (flag11)
|
|
{
|
|
Microsoft.Xna.Framework.Color color71 = Microsoft.Xna.Framework.Color.Lerp(Microsoft.Xna.Framework.Color.Transparent, color68, num344 * 2f);
|
|
if ((double) num344 > 0.5)
|
|
color71 = Microsoft.Xna.Framework.Color.Lerp(Microsoft.Xna.Framework.Color.Transparent, color68, (float) (2.0 - (double) num344 * 2.0));
|
|
color71.A = (byte) ((double) color71.A * 0.5);
|
|
Microsoft.Xna.Framework.Color color72 = color71 * num339;
|
|
Main.EntitySpriteDraw(texture2D, position, new Microsoft.Xna.Framework.Rectangle?(r), color72, num341 + num345, origin, (float) ((1.0 + (double) num346) * 0.800000011920929), effects, 0);
|
|
}
|
|
Main.EntitySpriteDraw(texture2D, position, new Microsoft.Xna.Framework.Rectangle?(r), color70, num341 + num345, origin, 1f + num346, effects, 0);
|
|
}
|
|
}
|
|
else if (projectile1.type == 444 || projectile1.type == 446 || projectile1.type == 490 || projectile1.type == 464 || projectile1.type == 502 || projectile1.type == 538 || projectile1.type == 540 || projectile1.type == 579 || projectile1.type == 578 || projectile1.type == 813 || projectile1.type == 583 || projectile1.type == 584 || projectile1.type == 616 || projectile1.type == 617 || projectile1.type == 618 || projectile1.type == 641 || projectile1.type >= 646 && projectile1.type <= 649 || projectile1.type == 653 || projectile1.type == 186 || projectile1.type == 662 || projectile1.type == 685 || projectile1.type == 673 || projectile1.type == 676 || projectile1.type == 697 || projectile1.type == 699 || projectile1.type == 707 || projectile1.type == 708 || projectile1.type == 719 || projectile1.type == 761 || projectile1.type == 762 || projectile1.type == 763 || projectile1.type == 772 || projectile1.type == 802 || projectile1.type == 842 || projectile1.type == 865 || projectile1.type == 921 || projectile1.type == 926 || projectile1.type == 757 || projectile1.type == 25 || projectile1.type == 35 || projectile1.type == 63 || projectile1.type == 154 || projectile1.type == 247 || projectile1.type == 26 || projectile1.type == 928 || projectile1.type == 16 || projectile1.type == 34 || projectile1.type == 79 || projectile1.type == 936 || projectile1.type == 937 || projectile1.type == 938 || projectile1.type == 939 || projectile1.type == 940 || projectile1.type == 941 || projectile1.type == 942 || projectile1.type == 943 || projectile1.type == 944 || projectile1.type == 945 || (projectile1.type >= 776 && projectile1.type <= 801 || projectile1.type >= 803 && projectile1.type <= 810) && projectile1.type != 779 && projectile1.type != 783 && projectile1.type != 862 && projectile1.type != 863)
|
|
{
|
|
Vector2 position16 = projectile1.position + new Vector2((float) projectile1.width, (float) projectile1.height) / 2f + Vector2.UnitY * projectile1.gfxOffY - Main.screenPosition;
|
|
Texture2D texture2D9 = TextureAssets.Projectile[projectile1.type].Value;
|
|
Microsoft.Xna.Framework.Color color73 = projectile1.GetAlpha(color10);
|
|
Vector2 origin9 = new Vector2((float) texture2D9.Width, (float) texture2D9.Height) / 2f;
|
|
float rotation5 = projectile1.rotation;
|
|
Vector2 scale8 = Vector2.One * projectile1.scale;
|
|
Microsoft.Xna.Framework.Rectangle? sourceRectangle = new Microsoft.Xna.Framework.Rectangle?();
|
|
if (projectile1.type == 446)
|
|
origin9.Y = 4f;
|
|
if (projectile1.type == 865)
|
|
{
|
|
position16 += new Vector2(1f, -1f);
|
|
spriteEffects = (double) projectile1.DirectionFrom(Main.player[projectile1.owner].Center).SafeNormalize(Vector2.Zero).X > 0.0 ? SpriteEffects.FlipHorizontally : SpriteEffects.None;
|
|
}
|
|
if (projectile1.type == 16)
|
|
{
|
|
float lerpValue = Utils.GetLerpValue(0.0f, 8f, projectile1.velocity.Length(), true);
|
|
rotation5 *= lerpValue;
|
|
scale8 *= 0.6f;
|
|
scale8.Y *= MathHelper.Lerp(1f, 0.8f, lerpValue);
|
|
scale8.X *= MathHelper.Lerp(1f, 1.5f, lerpValue);
|
|
}
|
|
if (projectile1.type == 34)
|
|
{
|
|
float lerpValue = Utils.GetLerpValue(0.0f, 8f, projectile1.velocity.Length(), true);
|
|
float num347 = rotation5 * lerpValue;
|
|
scale8.X *= MathHelper.Lerp(1f, 0.8f, lerpValue);
|
|
rotation5 = num347 + -1.570796f * lerpValue;
|
|
sourceRectangle = new Microsoft.Xna.Framework.Rectangle?(texture2D9.Frame(verticalFrames: Main.projFrames[projectile1.type], frameY: projectile1.frame));
|
|
origin9 = sourceRectangle.Value.Size() / 2f;
|
|
Vector2 vector2 = position16 - projectile1.velocity * 1f;
|
|
position16 = projectile1.oldPos[0] + projectile1.Size / 2f - Main.screenPosition - projectile1.velocity / 2f;
|
|
}
|
|
if (projectile1.type == 79)
|
|
{
|
|
rotation5 = 0.0f;
|
|
scale8 *= Utils.GetLerpValue(32f, 0.0f, projectile1.position.Distance(projectile1.oldPos[12]), true);
|
|
color73 = new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0);
|
|
}
|
|
if (projectile1.type == 761 || projectile1.type == 762)
|
|
spriteEffects = projectile1.spriteDirection > 0 ? SpriteEffects.None : SpriteEffects.FlipVertically;
|
|
if (projectile1.type == 662 || projectile1.type == 685)
|
|
origin9 = new Vector2(6f, 6f);
|
|
if (projectile1.type == 699 || projectile1.type == 708)
|
|
{
|
|
Player player = Main.player[projectile1.owner];
|
|
origin9 = new Vector2(projectile1.spriteDirection == 1 ? (float) texture2D9.Width - -8f : -8f, (double) player.gravDir == 1.0 ? -8f : (float) texture2D9.Height - -8f);
|
|
if ((double) player.gravDir == -1.0)
|
|
{
|
|
spriteEffects |= SpriteEffects.FlipVertically;
|
|
rotation5 += 1.570796f * (float) -projectile1.spriteDirection;
|
|
}
|
|
}
|
|
if (projectile1.type == 938 || projectile1.type == 939 || projectile1.type == 940 || projectile1.type == 941 || projectile1.type == 942 || projectile1.type == 943 || projectile1.type == 944 || projectile1.type == 945)
|
|
rotation5 -= 0.7853982f * (float) projectile1.spriteDirection;
|
|
if (projectile1.type == 502)
|
|
{
|
|
this.LoadProjectile(250);
|
|
Texture2D texture = TextureAssets.Projectile[250].Value;
|
|
Vector2 origin10 = new Vector2((float) (texture.Width / 2), 0.0f);
|
|
Vector2 vector2_50 = new Vector2((float) projectile1.width, (float) projectile1.height) / 2f;
|
|
Microsoft.Xna.Framework.Color white = Microsoft.Xna.Framework.Color.White;
|
|
white.A = (byte) 127;
|
|
for (int index = projectile1.oldPos.Length - 1; index > 0; --index)
|
|
{
|
|
Vector2 vector2_51 = projectile1.oldPos[index] + vector2_50;
|
|
if (!(vector2_51 == vector2_50))
|
|
{
|
|
Vector2 vector2_52 = projectile1.oldPos[index - 1] + vector2_50;
|
|
float rotation6 = (vector2_52 - vector2_51).ToRotation() - 1.570796f;
|
|
Vector2 scale9 = new Vector2(1f, Vector2.Distance(vector2_51, vector2_52) / (float) texture.Height);
|
|
Microsoft.Xna.Framework.Color color74 = white * (float) (1.0 - (double) index / (double) projectile1.oldPos.Length);
|
|
Main.EntitySpriteDraw(texture, vector2_51 - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(), color74, rotation6, origin10, scale9, spriteEffects, 0);
|
|
}
|
|
}
|
|
}
|
|
else if (projectile1.type == 540 && projectile1.velocity != Vector2.Zero)
|
|
{
|
|
float num348 = 0.0f;
|
|
if ((double) projectile1.ai[0] >= 10.0)
|
|
num348 = (float) (((double) projectile1.ai[0] - 10.0) / 10.0);
|
|
if ((double) projectile1.ai[0] >= 20.0)
|
|
num348 = (float) ((20.0 - (double) projectile1.ai[0]) / 10.0);
|
|
if ((double) num348 > 1.0)
|
|
num348 = 1f;
|
|
if ((double) num348 < 0.0)
|
|
num348 = 0.0f;
|
|
if ((double) num348 != 0.0)
|
|
{
|
|
Texture2D texture = TextureAssets.Extra[47].Value;
|
|
Vector2 origin11 = new Vector2((float) (texture.Width / 2), 0.0f);
|
|
Microsoft.Xna.Framework.Color color75 = color73 * num348 * 0.7f;
|
|
Vector2 vector2_53 = projectile1.Center - Main.screenPosition;
|
|
Vector2 vector2_54 = projectile1.velocity.ToRotation().ToRotationVector2() * (float) texture2D9.Width / 3f;
|
|
Vector2 zero = Vector2.Zero;
|
|
Vector2 position17 = vector2_53 + zero;
|
|
float rotation7 = projectile1.velocity.ToRotation() - 1.570796f;
|
|
Vector2 scale10 = new Vector2(1f, (projectile1.velocity.Length() - zero.Length() * 2f) / (float) texture.Height);
|
|
Main.EntitySpriteDraw(texture, position17, new Microsoft.Xna.Framework.Rectangle?(), color75, rotation7, origin11, scale10, SpriteEffects.None, 0);
|
|
}
|
|
}
|
|
if (projectile1.type == 578 || projectile1.type == 579 || projectile1.type == 641 || projectile1.type == 813)
|
|
{
|
|
Microsoft.Xna.Framework.Color color76 = color73 * 0.8f;
|
|
color76.A /= (byte) 2;
|
|
Microsoft.Xna.Framework.Color color77 = Microsoft.Xna.Framework.Color.Lerp(color73, Microsoft.Xna.Framework.Color.Black, 0.5f);
|
|
color77.A = color73.A;
|
|
float num349 = (float) (0.949999988079071 + (double) (projectile1.rotation * 0.75f).ToRotationVector2().Y * 0.100000001490116);
|
|
Microsoft.Xna.Framework.Color color78 = color77 * num349;
|
|
float scale11 = (float) (0.600000023841858 + (double) projectile1.scale * 0.600000023841858 * (double) num349);
|
|
Texture2D texture2D10 = TextureAssets.Extra[50].Value;
|
|
bool flag = true;
|
|
if (projectile1.type == 813)
|
|
{
|
|
flag = false;
|
|
texture2D10 = TextureAssets.Extra[131].Value;
|
|
}
|
|
Vector2 origin12 = texture2D10.Size() / 2f;
|
|
Main.EntitySpriteDraw(texture2D10, position16, new Microsoft.Xna.Framework.Rectangle?(), color78, (float) (-(double) rotation5 + 0.349999994039536), origin12, scale11, spriteEffects ^ SpriteEffects.FlipHorizontally, 0);
|
|
Main.EntitySpriteDraw(texture2D10, position16, new Microsoft.Xna.Framework.Rectangle?(), color73, -rotation5, origin12, projectile1.scale, spriteEffects ^ SpriteEffects.FlipHorizontally, 0);
|
|
if (flag)
|
|
Main.EntitySpriteDraw(texture2D9, position16, new Microsoft.Xna.Framework.Rectangle?(), color76, (float) (-(double) rotation5 * 0.699999988079071), origin9, projectile1.scale, spriteEffects ^ SpriteEffects.FlipHorizontally, 0);
|
|
Main.EntitySpriteDraw(texture2D10, position16, new Microsoft.Xna.Framework.Rectangle?(), color73 * 0.8f, rotation5 * 0.5f, origin12, projectile1.scale * 0.9f, spriteEffects, 0);
|
|
color73.A = (byte) 0;
|
|
if (projectile1.type == 813)
|
|
rotation5 = 0.0f;
|
|
}
|
|
if (projectile1.type == 617)
|
|
{
|
|
Microsoft.Xna.Framework.Color color79 = color73 * 0.8f;
|
|
color79.A /= (byte) 2;
|
|
Microsoft.Xna.Framework.Color color80 = Microsoft.Xna.Framework.Color.Lerp(color73, Microsoft.Xna.Framework.Color.Black, 0.5f);
|
|
color80.A = color73.A;
|
|
float num350 = (float) (0.949999988079071 + (double) (projectile1.rotation * 0.75f).ToRotationVector2().Y * 0.100000001490116);
|
|
Microsoft.Xna.Framework.Color color81 = color80 * num350;
|
|
float scale12 = (float) (0.600000023841858 + (double) projectile1.scale * 0.600000023841858 * (double) num350);
|
|
Main.EntitySpriteDraw(TextureAssets.Extra[50].Value, position16, new Microsoft.Xna.Framework.Rectangle?(), color81, (float) (-(double) projectile1.rotation + 0.349999994039536), origin9, scale12, spriteEffects ^ SpriteEffects.FlipHorizontally, 0);
|
|
Main.EntitySpriteDraw(TextureAssets.Extra[50].Value, position16, new Microsoft.Xna.Framework.Rectangle?(), color73, -projectile1.rotation, origin9, projectile1.scale, spriteEffects ^ SpriteEffects.FlipHorizontally, 0);
|
|
Main.EntitySpriteDraw(texture2D9, position16, new Microsoft.Xna.Framework.Rectangle?(), color79, (float) (-(double) projectile1.rotation * 0.699999988079071), origin9, projectile1.scale, spriteEffects ^ SpriteEffects.FlipHorizontally, 0);
|
|
Main.EntitySpriteDraw(TextureAssets.Extra[50].Value, position16, new Microsoft.Xna.Framework.Rectangle?(), color73 * 0.8f, projectile1.rotation * 0.5f, origin9, projectile1.scale * 0.9f, spriteEffects, 0);
|
|
color73.A = (byte) 0;
|
|
}
|
|
if (projectile1.type == 757 || projectile1.type == 25 || projectile1.type == 35 || projectile1.type == 63 || projectile1.type == 154 || projectile1.type == 247 || projectile1.type == 26)
|
|
{
|
|
if ((double) projectile1.ai[0] == 1.0)
|
|
{
|
|
Microsoft.Xna.Framework.Color color82 = color73;
|
|
color82.A = (byte) 127;
|
|
color82 *= 0.5f;
|
|
int num351 = (int) projectile1.ai[1];
|
|
if (num351 > 5)
|
|
num351 = 5;
|
|
for (float num352 = 1f; (double) num352 >= 0.0; num352 -= 0.125f)
|
|
{
|
|
float amount = 1f - num352;
|
|
Vector2 vector2 = projectile1.velocity * (float) -num351 * num352;
|
|
Main.EntitySpriteDraw(texture2D9, position16 + vector2, new Microsoft.Xna.Framework.Rectangle?(), color82 * amount, rotation5, origin9, projectile1.scale * 1.15f * MathHelper.Lerp(0.5f, 1f, amount), spriteEffects, 0);
|
|
}
|
|
}
|
|
}
|
|
else if (projectile1.type == 79)
|
|
{
|
|
Vector2 scale13 = scale8 * 1.4f;
|
|
Vector2 spinningpoint = new Vector2((float) (2.0 * (double) scale13.X + Math.Cos((double) Main.GlobalTimeWrappedHourly * 6.28318548202515) * 0.400000005960464), 0.0f).RotatedBy((double) rotation5 + (double) Main.GlobalTimeWrappedHourly * 6.28318548202515);
|
|
for (float Hue = 0.0f; (double) Hue < 1.0; Hue += 0.1666667f)
|
|
{
|
|
Microsoft.Xna.Framework.Color color83 = Main.hslToRgb(Hue, 1f, 0.5f) * 0.3f;
|
|
color83.A = (byte) 0;
|
|
Main.EntitySpriteDraw(texture2D9, position16 + spinningpoint.RotatedBy((double) Hue * 6.28318548202515), new Microsoft.Xna.Framework.Rectangle?(), color83, rotation5, origin9, scale13, spriteEffects, 0);
|
|
}
|
|
Main.EntitySpriteDraw(texture2D9, position16, new Microsoft.Xna.Framework.Rectangle?(), color73, rotation5, origin9, scale8, spriteEffects, 0);
|
|
}
|
|
if ((0 | (projectile1.type != 464 ? 0 : ((double) projectile1.ai[1] != 1.0 ? 1 : 0))) == 0)
|
|
Main.EntitySpriteDraw(texture2D9, position16, sourceRectangle, color73, rotation5, origin9, scale8, spriteEffects, 0);
|
|
if (projectile1.type == 464 && (double) projectile1.ai[1] != 1.0)
|
|
{
|
|
Texture2D texture2D11 = TextureAssets.Extra[35].Value;
|
|
Microsoft.Xna.Framework.Rectangle r = texture2D11.Frame(verticalFrames: 3);
|
|
origin9 = r.Size() / 2f;
|
|
Vector2 spinningpoint = new Vector2(0.0f, -720f).RotatedBy((double) projectile1.velocity.ToRotation()) * (float) ((double) projectile1.ai[0] % 45.0 / 45.0);
|
|
for (int index = 0; index < 6; ++index)
|
|
{
|
|
float num353 = (float) ((double) index * 6.28318548202515 / 6.0);
|
|
Vector2 vector2 = projectile1.Center + spinningpoint.RotatedBy((double) num353);
|
|
Main.EntitySpriteDraw(texture2D11, vector2 - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(r), color73, (float) ((double) num353 + (double) projectile1.velocity.ToRotation() + 3.14159274101257), origin9, projectile1.scale, spriteEffects, 0);
|
|
r.Y += r.Height;
|
|
if (r.Y >= texture2D11.Height)
|
|
r.Y = 0;
|
|
}
|
|
}
|
|
else if (projectile1.type == 490)
|
|
{
|
|
Main.EntitySpriteDraw(TextureAssets.Extra[34].Value, position16, new Microsoft.Xna.Framework.Rectangle?(), color73, -projectile1.rotation, TextureAssets.Extra[34].Value.Size() / 2f, projectile1.scale, spriteEffects, 0);
|
|
Main.EntitySpriteDraw(texture2D9, position16, new Microsoft.Xna.Framework.Rectangle?(), color73, projectile1.rotation, origin9, projectile1.scale * 0.42f, spriteEffects, 0);
|
|
Main.EntitySpriteDraw(TextureAssets.Extra[34].Value, position16, new Microsoft.Xna.Framework.Rectangle?(), color73, -projectile1.rotation, TextureAssets.Extra[34].Value.Size() / 2f, projectile1.scale * 0.42f, spriteEffects, 0);
|
|
}
|
|
else if (projectile1.type == 616)
|
|
Main.EntitySpriteDraw(TextureAssets.GlowMask[193].Value, position16, new Microsoft.Xna.Framework.Rectangle?(), new Microsoft.Xna.Framework.Color((int) sbyte.MaxValue, (int) sbyte.MaxValue, (int) sbyte.MaxValue, 0), projectile1.rotation, origin9, projectile1.scale, spriteEffects, 0);
|
|
else if (projectile1.type >= 646 && projectile1.type <= 649)
|
|
Main.EntitySpriteDraw(TextureAssets.GlowMask[203 + projectile1.type - 646].Value, position16, new Microsoft.Xna.Framework.Rectangle?(), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, (int) sbyte.MaxValue), projectile1.rotation, origin9, projectile1.scale, spriteEffects, 0);
|
|
else if (projectile1.type == 699)
|
|
Main.EntitySpriteDraw(TextureAssets.GlowMask[231].Value, position16, new Microsoft.Xna.Framework.Rectangle?(), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, (int) sbyte.MaxValue), rotation5, origin9, projectile1.scale, spriteEffects, 0);
|
|
else if (projectile1.type == 707 || projectile1.type == 708)
|
|
{
|
|
float num354 = 0.5f;
|
|
Texture2D texture2D12 = TextureAssets.GlowMask[232].Value;
|
|
Microsoft.Xna.Framework.Rectangle rectangle = texture2D12.Frame(verticalFrames: 3, frameY: ((int) ((double) projectile1.ai[0] % 9.0) / 3));
|
|
if (projectile1.type == 708)
|
|
{
|
|
rectangle = texture2D12.Frame(verticalFrames: 3, frameY: (Main.player[projectile1.owner].itemAnimation % 9 / 3));
|
|
num354 = 0.75f;
|
|
}
|
|
Microsoft.Xna.Framework.Color color84 = new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, (int) sbyte.MaxValue) * num354;
|
|
Vector2 spinningpoint = new Vector2(2f, 0.0f).RotatedBy((double) projectile1.rotation);
|
|
for (float num355 = 0.0f; (double) num355 < 4.0; ++num355)
|
|
Main.EntitySpriteDraw(texture2D12, position16 + spinningpoint.RotatedBy((double) num355 * 1.57079637050629), new Microsoft.Xna.Framework.Rectangle?(rectangle), color84 * 0.5f, projectile1.rotation, origin9, projectile1.scale, spriteEffects, 0);
|
|
Main.EntitySpriteDraw(texture2D12, position16, new Microsoft.Xna.Framework.Rectangle?(rectangle), color84, projectile1.rotation, origin9, projectile1.scale, spriteEffects, 0);
|
|
}
|
|
else if (projectile1.type == 719)
|
|
{
|
|
Microsoft.Xna.Framework.Color color85 = new Microsoft.Xna.Framework.Color(80, 80, 80, (int) byte.MaxValue) * 0.3f;
|
|
float scale14 = projectile1.scale * 1.5f;
|
|
Vector2 spinningpoint = new Vector2(2f * scale14, 0.0f).RotatedBy((double) projectile1.rotation);
|
|
for (float num356 = 0.0f; (double) num356 < 4.0; ++num356)
|
|
Main.EntitySpriteDraw(texture2D9, position16 + -projectile1.velocity * num356 * 1.25f, new Microsoft.Xna.Framework.Rectangle?(), color85 * 0.7f, projectile1.rotation, origin9, scale14, spriteEffects, 0);
|
|
for (float num357 = 0.0f; (double) num357 < 3.0; ++num357)
|
|
Main.EntitySpriteDraw(texture2D9, position16 + spinningpoint.RotatedBy((double) num357 * 1.57079637050629), new Microsoft.Xna.Framework.Rectangle?(), color85 * 0.9f, projectile1.rotation, origin9, scale14, spriteEffects, 0);
|
|
Main.EntitySpriteDraw(texture2D9, position16, new Microsoft.Xna.Framework.Rectangle?(), color73, projectile1.rotation, origin9, projectile1.scale, spriteEffects, 0);
|
|
}
|
|
else if (projectile1.type == 16)
|
|
{
|
|
Microsoft.Xna.Framework.Color color86 = new Microsoft.Xna.Framework.Color(80, 80, 80, 0);
|
|
Vector2 scale15 = scale8 + scale8 * (float) Math.Cos((double) Main.GlobalTimeWrappedHourly * 6.28318548202515) * 0.4f;
|
|
Vector2 spinningpoint = new Vector2(2f * scale15.X, 0.0f).RotatedBy((double) rotation5);
|
|
for (float num358 = 0.0f; (double) num358 < 1.0; num358 += 0.25f)
|
|
Main.EntitySpriteDraw(texture2D9, position16 + spinningpoint.RotatedBy((double) num358 * 6.28318548202515), new Microsoft.Xna.Framework.Rectangle?(), color86, rotation5, origin9, scale15, spriteEffects, 0);
|
|
Main.EntitySpriteDraw(texture2D9, position16, new Microsoft.Xna.Framework.Rectangle?(), color73, rotation5, origin9, scale8, spriteEffects, 0);
|
|
}
|
|
else
|
|
{
|
|
if (projectile1.type != 34)
|
|
return;
|
|
float lerpValue = Utils.GetLerpValue(0.0f, 6f, projectile1.localAI[0], true);
|
|
Microsoft.Xna.Framework.Color color87 = new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, (int) sbyte.MaxValue) * 0.75f;
|
|
Vector2 scale16 = new Vector2(lerpValue);
|
|
Vector2 spinningpoint = new Vector2(4f * scale16.X, 0.0f).RotatedBy((double) rotation5);
|
|
for (float num359 = 0.0f; (double) num359 < 1.0; num359 += 0.25f)
|
|
Main.EntitySpriteDraw(texture2D9, position16 + spinningpoint.RotatedBy((double) num359 * 6.28318548202515), sourceRectangle, color87, rotation5, origin9, scale16, spriteEffects, 0);
|
|
}
|
|
}
|
|
else if (projectile1.type == 465 || projectile1.type == 467 || projectile1.type == 468 || projectile1.type == 500 || projectile1.type == 518 || projectile1.type == 535 || projectile1.type == 539 || projectile1.type == 575 || projectile1.type == 574 || projectile1.type == 589 || projectile1.type == 590 || projectile1.type == 593 || projectile1.type == 602 || projectile1.type == 596 || projectile1.type == 612 || projectile1.type == 613 || projectile1.type == 614 || projectile1.type == 623 || projectile1.type == 625 || projectile1.type == 626 || projectile1.type == 627 || projectile1.type == 628 || projectile1.type == 634 || projectile1.type == 635 || projectile1.type == 643 || projectile1.type == 644 || projectile1.type == 645 || projectile1.type == 650 || projectile1.type == 652 || projectile1.type == 658 || projectile1.type == 659 || projectile1.type == 663 || projectile1.type == 665 || projectile1.type == 667 || projectile1.type == 677 || projectile1.type == 678 || projectile1.type == 679 || projectile1.type == 691 || projectile1.type == 692 || projectile1.type == 693 || projectile1.type == 702 || projectile1.type == 703 || projectile1.type == 701 || projectile1.type == 712 || projectile1.type == 715 || projectile1.type == 716 || projectile1.type == 717 || projectile1.type == 718 || projectile1.type == 758 || projectile1.type == 759 || projectile1.type == 764 || projectile1.type == 779 || projectile1.type == 783 || projectile1.type == 773 || projectile1.type == 820 || projectile1.type == 831 || projectile1.type == 836 || projectile1.type == 851 || projectile1.type == 855 || projectile1.type == 856 || projectile1.type == 857 || projectile1.type == 861 || projectile1.type == 862 || projectile1.type == 863 || projectile1.type == 866 || projectile1.type == 870 || projectile1.type == 882 || projectile1.type == 885 || projectile1.type == 889 || projectile1.type == 895 || projectile1.type == 896 || projectile1.type == 898 || projectile1.type == 903 || projectile1.type == 904 || projectile1.type == 905 || projectile1.type == 906 || projectile1.type == 908 || projectile1.type == 910 || projectile1.type == 911)
|
|
{
|
|
Vector2 vector2_55 = projectile1.position + new Vector2((float) projectile1.width, (float) projectile1.height) / 2f + Vector2.UnitY * projectile1.gfxOffY - Main.screenPosition;
|
|
Texture2D target = TextureAssets.Projectile[projectile1.type].Value;
|
|
Microsoft.Xna.Framework.Rectangle r = target.Frame(verticalFrames: Main.projFrames[projectile1.type], frameY: projectile1.frame);
|
|
Microsoft.Xna.Framework.Color color88 = projectile1.GetAlpha(color10);
|
|
Vector2 origin13 = r.Size() / 2f;
|
|
if (projectile1.type == 703)
|
|
r.Height -= 2;
|
|
if (projectile1.type == 895 || projectile1.type == 896 || projectile1.type == 898)
|
|
vector2_55.Y += (float) (Math.Cos((double) Main.mouseTextColor / (double) byte.MaxValue * 6.28318548202515 * 2.0) * 4.0) - 2f;
|
|
if (projectile1.type == 855)
|
|
{
|
|
float y17 = ((float) ((double) Main.GlobalTimeWrappedHourly % 6.0 / 6.0 * 6.28318548202515)).ToRotationVector2().Y;
|
|
float num360 = (float) ((double) y17 * 0.300000011920929 + 0.699999988079071);
|
|
Microsoft.Xna.Framework.Color color89 = color88 * num360 * 0.3f;
|
|
for (int index = 0; index < 4; ++index)
|
|
{
|
|
float x19 = 0.0f;
|
|
float y18 = 0.0f;
|
|
switch (index)
|
|
{
|
|
case 0:
|
|
x19 = 4f;
|
|
break;
|
|
case 1:
|
|
x19 = -4f;
|
|
break;
|
|
case 2:
|
|
y18 = 4f;
|
|
break;
|
|
case 3:
|
|
y18 = -4f;
|
|
break;
|
|
}
|
|
Vector2 vector2_56 = new Vector2(x19, y18).RotatedBy(6.28318548202515 * (double) i + (double) projectile1.rotation) * y17;
|
|
Main.spriteBatch.Draw(target, vector2_55 + vector2_56, new Microsoft.Xna.Framework.Rectangle?(r), color89, projectile1.rotation, r.Size() / 2f, 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
else if (projectile1.type == 908)
|
|
{
|
|
PlayerTitaniumStormBuffTextureContent titaniumStormBuff = TextureAssets.RenderTargets.PlayerTitaniumStormBuff;
|
|
vector2_55 += (Main.GlobalTimeWrappedHourly * 8f + (float) projectile1.whoAmI).ToRotationVector2() * 4f;
|
|
titaniumStormBuff.Request();
|
|
if (titaniumStormBuff.IsReady)
|
|
target = (Texture2D) titaniumStormBuff.GetTarget();
|
|
r = target.Frame(Main.projFrames[projectile1.type], frameX: projectile1.frame);
|
|
origin13 = r.Size() / 2f;
|
|
}
|
|
else if (projectile1.type == 764)
|
|
this.DrawProjWithStarryTrail(projectile1, color10, spriteEffects);
|
|
else if (projectile1.type == 856)
|
|
this.DrawProjWithStarryTrail(projectile1, color10, spriteEffects);
|
|
else if (projectile1.type == 857)
|
|
{
|
|
this.DrawProjWithStarryTrail(projectile1, color10, spriteEffects);
|
|
color88 = Microsoft.Xna.Framework.Color.White * projectile1.Opacity * 0.9f;
|
|
color88.A /= (byte) 2;
|
|
r = target.Frame(15, frameX: projectile1.frame);
|
|
origin13 = r.Size() / 2f;
|
|
Main.DrawPrettyStarSparkle(projectile1, spriteEffects, vector2_55, color88, projectile1.GetFirstFractalColor());
|
|
}
|
|
else if (projectile1.type == 539)
|
|
{
|
|
if ((double) projectile1.ai[0] >= 210.0)
|
|
{
|
|
float num361 = (projectile1.ai[0] - 210f) / 20f;
|
|
if ((double) num361 > 1.0)
|
|
num361 = 1f;
|
|
Main.EntitySpriteDraw(TextureAssets.Extra[46].Value, vector2_55, new Microsoft.Xna.Framework.Rectangle?(), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 128) * num361, projectile1.rotation, new Vector2(17f, 22f), projectile1.scale, spriteEffects, 0);
|
|
}
|
|
}
|
|
else if (projectile1.type == 773)
|
|
origin13.Y = (float) (r.Height - 12);
|
|
else if (projectile1.type == 866)
|
|
origin13.X += 14f;
|
|
else if (projectile1.type == 759)
|
|
{
|
|
origin13.Y = (float) (r.Height - 2);
|
|
origin13.X += spriteEffects.HasFlag((Enum) SpriteEffects.FlipHorizontally) ? 1f : -1f;
|
|
}
|
|
else if (projectile1.type == 758)
|
|
{
|
|
vector2_55.Y += (float) (projectile1.height / 2);
|
|
origin13 = r.Size() * new Vector2(0.5f, 1f);
|
|
origin13.Y -= 4f;
|
|
}
|
|
else if (projectile1.type == 833)
|
|
{
|
|
if (projectile1.frame != 8)
|
|
{
|
|
vector2_55.Y += (float) (projectile1.height / 2);
|
|
origin13 = r.Size() * new Vector2(0.5f, 1f);
|
|
origin13.Y -= 4f;
|
|
origin13.X -= (float) (7 * spriteEffects.HasFlag((Enum) SpriteEffects.FlipHorizontally).ToDirectionInt());
|
|
}
|
|
}
|
|
else if (projectile1.type == 834 || projectile1.type == 835)
|
|
{
|
|
if (projectile1.frame != 10)
|
|
{
|
|
vector2_55.Y += (float) (projectile1.height / 2);
|
|
origin13 = r.Size() * new Vector2(0.5f, 1f);
|
|
origin13.Y -= 4f;
|
|
origin13.X -= (float) (2 * spriteEffects.HasFlag((Enum) SpriteEffects.FlipHorizontally).ToDirectionInt());
|
|
}
|
|
}
|
|
else if (projectile1.type == 715 || projectile1.type == 716 || projectile1.type == 717 || projectile1.type == 718)
|
|
{
|
|
r = target.Frame(3);
|
|
origin13 = r.Size() / 2f;
|
|
int num362 = (int) projectile1.ai[0];
|
|
Vector2 origin14 = new Vector2((float) (r.Width / 2), 0.0f);
|
|
Vector2 vector2_57 = projectile1.Size / 2f;
|
|
Microsoft.Xna.Framework.Color celeb2Color = projectile1.GetCeleb2Color();
|
|
celeb2Color.A = (byte) 127;
|
|
Microsoft.Xna.Framework.Color color90 = celeb2Color * 0.8f;
|
|
Microsoft.Xna.Framework.Rectangle rectangle = r;
|
|
rectangle.X += rectangle.Width * 2;
|
|
for (int index = projectile1.oldPos.Length - 1; index > 0; --index)
|
|
{
|
|
Vector2 vector2_58 = projectile1.oldPos[index] + vector2_57;
|
|
if (!(vector2_58 == vector2_57))
|
|
{
|
|
Vector2 vector2_59 = projectile1.oldPos[index - 1] + vector2_57;
|
|
float num363 = projectile1.oldRot[index];
|
|
Vector2 scale = new Vector2(Vector2.Distance(vector2_58, vector2_59) / (float) r.Width, 1f);
|
|
Microsoft.Xna.Framework.Color color91 = color90 * (float) (1.0 - (double) index / (double) projectile1.oldPos.Length);
|
|
switch (num362)
|
|
{
|
|
case 2:
|
|
Vector2 rotationVector2 = num363.ToRotationVector2();
|
|
int num364 = index + projectile1.timeLeft;
|
|
if (num364 < 0)
|
|
num364 += 20 * (num364 / -20) + 20;
|
|
int num365 = num364 % 20;
|
|
float num366 = 0.0f;
|
|
scale *= 0.6f;
|
|
switch (num365)
|
|
{
|
|
case 1:
|
|
num366 = 1f;
|
|
break;
|
|
case 2:
|
|
num366 = 2f;
|
|
break;
|
|
case 3:
|
|
num366 = 3f;
|
|
break;
|
|
case 4:
|
|
num366 = 2f;
|
|
break;
|
|
case 5:
|
|
num366 = 1f;
|
|
break;
|
|
case 7:
|
|
num366 = -1f;
|
|
break;
|
|
case 8:
|
|
num366 = -2f;
|
|
break;
|
|
case 9:
|
|
num366 = -3f;
|
|
break;
|
|
case 10:
|
|
num366 = -2f;
|
|
break;
|
|
case 11:
|
|
num366 = -1f;
|
|
break;
|
|
}
|
|
vector2_58 += rotationVector2 * num366 * 4f;
|
|
break;
|
|
case 5:
|
|
scale *= 0.5f;
|
|
break;
|
|
}
|
|
Main.EntitySpriteDraw(target, vector2_58 - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(rectangle), color91, num363, origin14, scale, spriteEffects, 0);
|
|
}
|
|
}
|
|
}
|
|
else if (projectile1.type == 663 || projectile1.type == 665 || projectile1.type == 667)
|
|
{
|
|
vector2_55 = projectile1.Bottom + Vector2.UnitY * projectile1.gfxOffY - Main.screenPosition;
|
|
origin13 = r.Size() * new Vector2(0.5f, 1f);
|
|
origin13.Y -= 2f;
|
|
origin13.Y -= 2f;
|
|
}
|
|
else if (projectile1.type == 691 || projectile1.type == 692 || projectile1.type == 693)
|
|
{
|
|
vector2_55 = projectile1.Bottom + Vector2.UnitY * projectile1.gfxOffY - Main.screenPosition;
|
|
origin13 = r.Size() * new Vector2(0.5f, 1f);
|
|
origin13.Y -= 2f;
|
|
origin13.Y -= 2f;
|
|
}
|
|
else if (projectile1.type == 677 || projectile1.type == 678 || projectile1.type == 679)
|
|
{
|
|
if (projectile1.spriteDirection == -1)
|
|
spriteEffects ^= SpriteEffects.FlipHorizontally | SpriteEffects.FlipVertically;
|
|
Texture2D texture2D = TextureAssets.Extra[83].Value;
|
|
if (projectile1.type == 678)
|
|
texture2D = TextureAssets.Extra[84].Value;
|
|
if (projectile1.type == 679)
|
|
texture2D = TextureAssets.Extra[85].Value;
|
|
Vector2 position = projectile1.Bottom + Vector2.UnitY * projectile1.gfxOffY - Main.screenPosition;
|
|
Vector2 origin15 = texture2D.Size() * new Vector2(0.5f, 1f);
|
|
origin15.Y -= 2f;
|
|
Main.EntitySpriteDraw(texture2D, position, new Microsoft.Xna.Framework.Rectangle?(), color88, 0.0f, origin15, 1f, spriteEffects & SpriteEffects.FlipHorizontally, 0);
|
|
origin13.X += (float) spriteEffects.HasFlag((Enum) SpriteEffects.FlipHorizontally).ToDirectionInt();
|
|
++vector2_55.Y;
|
|
vector2_55.Y += 2f;
|
|
if (projectile1.type == 678)
|
|
vector2_55.Y += -4f;
|
|
if (projectile1.type == 679)
|
|
{
|
|
vector2_55.Y -= 2f;
|
|
if (!spriteEffects.HasFlag((Enum) SpriteEffects.FlipVertically))
|
|
origin13.Y += 4f;
|
|
else
|
|
origin13.Y -= 4f;
|
|
origin13.X += (float) (spriteEffects.HasFlag((Enum) SpriteEffects.FlipHorizontally).ToDirectionInt() * 4);
|
|
}
|
|
}
|
|
else if (projectile1.type == 602)
|
|
{
|
|
origin13.X = (float) (r.Width - 6);
|
|
--origin13.Y;
|
|
r.Height -= 2;
|
|
}
|
|
else if (projectile1.type == 589)
|
|
{
|
|
r = target.Frame(5, frameX: ((int) projectile1.ai[1]));
|
|
origin13 = r.Size() / 2f;
|
|
}
|
|
else if (projectile1.type == 590)
|
|
{
|
|
r = target.Frame(3, frameX: projectile1.frame);
|
|
origin13 = r.Size() / 2f;
|
|
}
|
|
else if (projectile1.type == 836)
|
|
{
|
|
r = target.Frame(4, frameX: projectile1.frame);
|
|
origin13 = r.Size() / 2f;
|
|
}
|
|
else if (projectile1.type == 650 || projectile1.type == 882 || projectile1.type == 888 || projectile1.type == 894 || projectile1.type == 895 || projectile1.type == 896 || projectile1.type == 898 || projectile1.type == 901)
|
|
origin13.Y -= 4f;
|
|
else if (projectile1.type == 623)
|
|
{
|
|
if ((double) projectile1.ai[0] == 2.0)
|
|
vector2_55 += Main.rand.NextVector2Circular(2f, 2f);
|
|
if (Main.CurrentDrawnEntityShader == 0)
|
|
color88.A /= (byte) 2;
|
|
}
|
|
else if (projectile1.type >= 625 && projectile1.type <= 628)
|
|
color88.A /= (byte) 2;
|
|
else if (projectile1.type == 644)
|
|
{
|
|
Microsoft.Xna.Framework.Color color92 = Main.hslToRgb(projectile1.ai[0], 1f, 0.5f).MultiplyRGBA(new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0));
|
|
Main.EntitySpriteDraw(target, vector2_55, new Microsoft.Xna.Framework.Rectangle?(r), color92, projectile1.rotation, origin13, projectile1.scale * 2f, spriteEffects, 0);
|
|
Main.EntitySpriteDraw(target, vector2_55, new Microsoft.Xna.Framework.Rectangle?(r), color92, 0.0f, origin13, projectile1.scale * 2f, spriteEffects, 0);
|
|
if ((double) projectile1.ai[1] != -1.0 && (double) projectile1.Opacity > 0.300000011920929)
|
|
{
|
|
Vector2 v = Main.projectile[(int) projectile1.ai[1]].Center - projectile1.Center;
|
|
Vector2 scale = new Vector2(1f, v.Length() / (float) target.Height);
|
|
float rotation = v.ToRotation() + 1.570796f;
|
|
float num367 = MathHelper.Clamp(MathHelper.Distance(30f, projectile1.localAI[1]) / 20f, 0.0f, 1f);
|
|
if ((double) num367 > 0.0)
|
|
{
|
|
Main.EntitySpriteDraw(target, vector2_55 + v / 2f, new Microsoft.Xna.Framework.Rectangle?(r), color92 * num367, rotation, origin13, scale, spriteEffects, 0);
|
|
Main.EntitySpriteDraw(target, vector2_55 + v / 2f, new Microsoft.Xna.Framework.Rectangle?(r), color88 * num367, rotation, origin13, scale / 2f, spriteEffects, 0);
|
|
}
|
|
}
|
|
}
|
|
else if (projectile1.type == 658)
|
|
{
|
|
Microsoft.Xna.Framework.Color color93 = Main.hslToRgb(0.136f, 1f, 0.5f).MultiplyRGBA(new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0));
|
|
Main.EntitySpriteDraw(target, vector2_55, new Microsoft.Xna.Framework.Rectangle?(r), color93, 0.0f, origin13, new Vector2(1f, 5f) * projectile1.scale * 2f, spriteEffects, 0);
|
|
}
|
|
Main.EntitySpriteDraw(target, vector2_55, new Microsoft.Xna.Framework.Rectangle?(r), color88, projectile1.rotation, origin13, projectile1.scale, spriteEffects, 0);
|
|
if (projectile1.type == 896)
|
|
{
|
|
Texture2D texture = TextureAssets.GlowMask[278].Value;
|
|
Microsoft.Xna.Framework.Color color94 = new Microsoft.Xna.Framework.Color(150, 150, 150, 100);
|
|
for (int index = 0; index < 2; ++index)
|
|
{
|
|
Vector2 position = vector2_55 + new Vector2((float) Main.rand.Next(-10, 11) * 0.1f, (float) Main.rand.Next(-10, 11) * 0.1f);
|
|
Main.EntitySpriteDraw(texture, position, new Microsoft.Xna.Framework.Rectangle?(r), color94, projectile1.rotation, origin13, projectile1.scale, spriteEffects, 0);
|
|
}
|
|
Main.EntitySpriteDraw(texture, vector2_55, new Microsoft.Xna.Framework.Rectangle?(r), Microsoft.Xna.Framework.Color.White, projectile1.rotation, origin13, projectile1.scale, spriteEffects, 0);
|
|
}
|
|
if (projectile1.type == 889)
|
|
{
|
|
Texture2D texture = TextureAssets.GlowMask[276].Value;
|
|
Microsoft.Xna.Framework.Color color95 = Microsoft.Xna.Framework.Color.White * (float) Main.mouseTextColor;
|
|
Main.EntitySpriteDraw(texture, vector2_55, new Microsoft.Xna.Framework.Rectangle?(r), color95, projectile1.rotation, origin13, projectile1.scale, spriteEffects, 0);
|
|
for (int index = 0; index < 4; ++index)
|
|
{
|
|
int num368 = 28;
|
|
int frameY = 7 + index;
|
|
float num369 = 100f;
|
|
bool flag = frameY == 8;
|
|
Microsoft.Xna.Framework.Rectangle rectangle = target.Frame(verticalFrames: Main.projFrames[projectile1.type], frameY: frameY);
|
|
Vector2 vector2_60 = vector2_55;
|
|
Vector2 vector2_61 = vector2_55;
|
|
SpriteEffects effects = SpriteEffects.None;
|
|
float num370 = Main.GlobalTimeWrappedHourly * 2f;
|
|
switch (index - 1)
|
|
{
|
|
case 0:
|
|
num370 += 1.570796f;
|
|
break;
|
|
case 1:
|
|
num370 += 3.141593f;
|
|
break;
|
|
case 2:
|
|
num370 += 4.712389f;
|
|
break;
|
|
}
|
|
float f = num370 * 3f;
|
|
float rotation8 = f;
|
|
Vector2 position18 = vector2_61 + f.ToRotationVector2() * (float) num368;
|
|
if ((double) projectile1.localAI[0] == (double) num369)
|
|
{
|
|
Main.EntitySpriteDraw(target, position18, new Microsoft.Xna.Framework.Rectangle?(rectangle), color88, rotation8, origin13, projectile1.scale, effects, 0);
|
|
if (flag)
|
|
Main.EntitySpriteDraw(texture, position18, new Microsoft.Xna.Framework.Rectangle?(rectangle), color95, rotation8, origin13, projectile1.scale, effects, 0);
|
|
}
|
|
else
|
|
{
|
|
Vector2 vector2_62 = new Vector2((float) num368, -16f) + projectile1.velocity * 1.5f;
|
|
float num371 = 4f;
|
|
float num372 = -0.35f;
|
|
switch (index)
|
|
{
|
|
case 1:
|
|
vector2_62.X *= -1f;
|
|
effects = SpriteEffects.FlipHorizontally;
|
|
num372 = 0.35f;
|
|
num371 = -3f;
|
|
break;
|
|
case 2:
|
|
vector2_62.Y = 16f;
|
|
num372 = 0.35f;
|
|
num371 = 2f;
|
|
break;
|
|
case 3:
|
|
vector2_62.X *= -1f;
|
|
vector2_62.Y = 16f;
|
|
effects = SpriteEffects.FlipHorizontally;
|
|
num372 = -0.35f;
|
|
num371 = -1f;
|
|
break;
|
|
}
|
|
Vector2 vector2_63 = vector2_62 + (Main.GlobalTimeWrappedHourly * num371).ToRotationVector2() * 4f;
|
|
Vector2 vector2_64 = vector2_60 + vector2_63;
|
|
float amount = projectile1.localAI[0] / num369;
|
|
Vector2 position19 = Vector2.Lerp(vector2_64, position18, amount);
|
|
float rotation9 = (double) amount > 0.5 ? f : num372;
|
|
Main.EntitySpriteDraw(target, position19, new Microsoft.Xna.Framework.Rectangle?(rectangle), color88, rotation9, origin13, projectile1.scale, effects, 0);
|
|
if (flag)
|
|
Main.EntitySpriteDraw(texture, position19, new Microsoft.Xna.Framework.Rectangle?(rectangle), color95, rotation9, origin13, projectile1.scale, effects, 0);
|
|
}
|
|
}
|
|
}
|
|
if (projectile1.type == 885)
|
|
{
|
|
for (int index = 0; index < 2; ++index)
|
|
{
|
|
SpriteEffects effects = SpriteEffects.None;
|
|
int num373 = -30;
|
|
if (index == 1)
|
|
{
|
|
num373 = 30;
|
|
effects = SpriteEffects.FlipHorizontally;
|
|
}
|
|
int num374 = (int) projectile1.localAI[0];
|
|
if (projectile1.frame == 6)
|
|
num374 = 0;
|
|
else if (index == 1)
|
|
num374 = 2 - num374;
|
|
int frameY = num374 + 7;
|
|
Microsoft.Xna.Framework.Rectangle rectangle = target.Frame(verticalFrames: Main.projFrames[projectile1.type], frameY: frameY);
|
|
Vector2 vector2_65 = vector2_55 + new Vector2((float) num373, 0.0f);
|
|
Vector2 vector2_66 = (Main.GlobalTimeWrappedHourly * 2f).ToRotationVector2() * 4f + projectile1.velocity * -1.5f;
|
|
Vector2 vector2_67 = (Main.GlobalTimeWrappedHourly * 1f).ToRotationVector2() * 3f;
|
|
Vector2 position = index != 1 ? vector2_65 - vector2_66 : vector2_65 + (vector2_66 + vector2_67);
|
|
Main.EntitySpriteDraw(target, position, new Microsoft.Xna.Framework.Rectangle?(rectangle), color88, 0.0f, origin13, projectile1.scale, effects, 0);
|
|
}
|
|
}
|
|
if (projectile1.type == 535)
|
|
{
|
|
for (int i2 = 0; i2 < 1000; ++i2)
|
|
{
|
|
if (Main.projectile[i2].active && Main.projectile[i2].owner == projectile1.owner && Main.projectile[i2].type == 536)
|
|
this.DrawProj(i2);
|
|
}
|
|
}
|
|
else if (projectile1.type == 715 || projectile1.type == 716 || projectile1.type == 717 || projectile1.type == 718)
|
|
{
|
|
r.X += r.Width;
|
|
Microsoft.Xna.Framework.Color celeb2Color = projectile1.GetCeleb2Color();
|
|
celeb2Color.A = (byte) 80;
|
|
Main.EntitySpriteDraw(target, vector2_55, new Microsoft.Xna.Framework.Rectangle?(r), celeb2Color, projectile1.rotation, origin13, projectile1.scale, spriteEffects, 0);
|
|
}
|
|
else if (projectile1.type == 702)
|
|
{
|
|
Texture2D texture2D = TextureAssets.Flames[5].Value;
|
|
Vector2 origin16 = texture2D.Size() / 2f;
|
|
Vector2 vector2_68 = new Vector2((float) (5 * projectile1.spriteDirection), -10f).RotatedBy((double) projectile1.rotation);
|
|
ulong seed = (ulong) ((double) projectile1.localAI[0] / 4.0);
|
|
for (int index = 0; index < 5; ++index)
|
|
{
|
|
Microsoft.Xna.Framework.Color color96 = new Microsoft.Xna.Framework.Color(100, 100, 100, 0);
|
|
float x20 = (float) Utils.RandomInt(ref seed, -10, 11) * 0.15f;
|
|
float y = (float) Utils.RandomInt(ref seed, -10, 1) * 0.35f;
|
|
Main.EntitySpriteDraw(texture2D, vector2_55 + vector2_68 + new Vector2(x20, y), new Microsoft.Xna.Framework.Rectangle?(), color96, projectile1.rotation, origin16, 1f, spriteEffects, 0);
|
|
}
|
|
}
|
|
else if (projectile1.type == 663 || projectile1.type == 665 || projectile1.type == 667)
|
|
{
|
|
Texture2D texture = TextureAssets.GlowMask[221].Value;
|
|
switch (projectile1.type)
|
|
{
|
|
case 665:
|
|
texture = TextureAssets.GlowMask[222].Value;
|
|
break;
|
|
case 667:
|
|
texture = TextureAssets.GlowMask[223].Value;
|
|
break;
|
|
}
|
|
float num375 = (float) ((double) ((float) ((double) projectile1.localAI[0] / 100.0 * 6.28318548202515)).ToRotationVector2().X * 1.0 + 1.0);
|
|
Microsoft.Xna.Framework.Color color97 = new Microsoft.Xna.Framework.Color(140, 100, 40, 0) * (float) ((double) num375 / 4.0 + 0.5) * 1f;
|
|
for (float num376 = 0.0f; (double) num376 < 4.0; ++num376)
|
|
Main.EntitySpriteDraw(texture, vector2_55 + (num376 * 1.570796f).ToRotationVector2() * num375, new Microsoft.Xna.Framework.Rectangle?(r), color97, projectile1.rotation, origin13, projectile1.scale, spriteEffects, 0);
|
|
}
|
|
else if (projectile1.type == 644)
|
|
Main.EntitySpriteDraw(target, vector2_55, new Microsoft.Xna.Framework.Rectangle?(r), color88, 0.0f, origin13, projectile1.scale, spriteEffects, 0);
|
|
else if (projectile1.type == 773 && (double) projectile1.velocity.Length() == 0.0)
|
|
{
|
|
Texture2D texture = TextureAssets.GlowMask[266].Value;
|
|
Microsoft.Xna.Framework.Color color98 = Microsoft.Xna.Framework.Color.White * (float) Main.mouseTextColor;
|
|
Vector2 position = vector2_55;
|
|
Microsoft.Xna.Framework.Rectangle? sourceRectangle = new Microsoft.Xna.Framework.Rectangle?(r);
|
|
Microsoft.Xna.Framework.Color color99 = color98;
|
|
double rotation = (double) projectile1.rotation;
|
|
Vector2 origin17 = origin13;
|
|
double scale = (double) projectile1.scale;
|
|
int num377 = (int) spriteEffects;
|
|
Main.EntitySpriteDraw(texture, position, sourceRectangle, color99, (float) rotation, origin17, (float) scale, (SpriteEffects) num377, 0);
|
|
}
|
|
else if (projectile1.type == 658)
|
|
Main.EntitySpriteDraw(target, vector2_55, new Microsoft.Xna.Framework.Rectangle?(r), color88, 0.0f, origin13, new Vector2(1f, 8f) * projectile1.scale, spriteEffects, 0);
|
|
else if (projectile1.type == 602)
|
|
{
|
|
Texture2D texture2D13 = TextureAssets.Extra[60].Value;
|
|
Microsoft.Xna.Framework.Color color100 = color88;
|
|
color100.A = (byte) 0;
|
|
color100 *= 0.3f;
|
|
origin13 = texture2D13.Size() / 2f;
|
|
Main.EntitySpriteDraw(texture2D13, vector2_55, new Microsoft.Xna.Framework.Rectangle?(), color100, projectile1.rotation - 1.570796f, origin13, projectile1.scale, spriteEffects, 0);
|
|
Texture2D texture2D14 = TextureAssets.Extra[59].Value;
|
|
color100 = color88;
|
|
color100.A = (byte) 0;
|
|
color100 *= 0.13f;
|
|
origin13 = texture2D14.Size() / 2f;
|
|
Main.EntitySpriteDraw(texture2D14, vector2_55, new Microsoft.Xna.Framework.Rectangle?(), color100, projectile1.rotation - 1.570796f, origin13, projectile1.scale * 0.9f, spriteEffects, 0);
|
|
}
|
|
else if (projectile1.type == 539)
|
|
Main.EntitySpriteDraw(TextureAssets.GlowMask[140].Value, vector2_55, new Microsoft.Xna.Framework.Rectangle?(r), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0), projectile1.rotation, origin13, projectile1.scale, spriteEffects, 0);
|
|
else if (projectile1.type == 613)
|
|
Main.EntitySpriteDraw(TextureAssets.GlowMask[189].Value, vector2_55, new Microsoft.Xna.Framework.Rectangle?(r), new Microsoft.Xna.Framework.Color(128 - projectile1.alpha / 2, 128 - projectile1.alpha / 2, 128 - projectile1.alpha / 2, 0), projectile1.rotation, origin13, projectile1.scale, spriteEffects, 0);
|
|
else if (projectile1.type == 614)
|
|
Main.EntitySpriteDraw(TextureAssets.GlowMask[190].Value, vector2_55, new Microsoft.Xna.Framework.Rectangle?(r), new Microsoft.Xna.Framework.Color(128 - projectile1.alpha / 2, 128 - projectile1.alpha / 2, 128 - projectile1.alpha / 2, 0), projectile1.rotation, origin13, projectile1.scale, spriteEffects, 0);
|
|
else if (projectile1.type == 574)
|
|
Main.EntitySpriteDraw(TextureAssets.GlowMask[148].Value, vector2_55, new Microsoft.Xna.Framework.Rectangle?(r), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0), projectile1.rotation, origin13, projectile1.scale, spriteEffects, 0);
|
|
else if (projectile1.type == 691 || projectile1.type == 692 || projectile1.type == 693)
|
|
{
|
|
Texture2D texture = TextureAssets.GlowMask[235].Value;
|
|
switch (projectile1.type)
|
|
{
|
|
case 692:
|
|
texture = TextureAssets.GlowMask[236].Value;
|
|
break;
|
|
case 693:
|
|
texture = TextureAssets.GlowMask[237].Value;
|
|
break;
|
|
}
|
|
Main.EntitySpriteDraw(texture, vector2_55, new Microsoft.Xna.Framework.Rectangle?(r), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, (int) sbyte.MaxValue), projectile1.rotation, origin13, projectile1.scale, spriteEffects, 0);
|
|
}
|
|
else if (projectile1.type == 590)
|
|
Main.EntitySpriteDraw(TextureAssets.GlowMask[168].Value, vector2_55, new Microsoft.Xna.Framework.Rectangle?(r), new Microsoft.Xna.Framework.Color((int) sbyte.MaxValue - projectile1.alpha / 2, (int) sbyte.MaxValue - projectile1.alpha / 2, (int) sbyte.MaxValue - projectile1.alpha / 2, 0), projectile1.rotation, origin13, projectile1.scale, spriteEffects, 0);
|
|
else if (projectile1.type == 623 || projectile1.type >= 625 && projectile1.type <= 628)
|
|
{
|
|
if ((double) Main.player[projectile1.owner].ghostFade != 0.0)
|
|
{
|
|
float num378 = Main.player[projectile1.owner].ghostFade * 5f;
|
|
for (float num379 = 0.0f; (double) num379 < 4.0; ++num379)
|
|
Main.EntitySpriteDraw(target, vector2_55 + Vector2.UnitY.RotatedBy((double) num379 * 6.28318548202515 / 4.0) * num378, new Microsoft.Xna.Framework.Rectangle?(r), color88 * 0.1f, projectile1.rotation, origin13, projectile1.scale, spriteEffects, 0);
|
|
}
|
|
if (projectile1.type != 623 || (double) projectile1.ai[0] != 2.0 || projectile1.frame < 14)
|
|
return;
|
|
this.DrawProj_StardustGuardianPunching(projectile1);
|
|
}
|
|
else if (projectile1.type == 643)
|
|
{
|
|
float num380 = (float) (Math.Cos(6.28318548202515 * ((double) projectile1.localAI[0] / 60.0)) + 3.0 + 3.0);
|
|
for (float num381 = 0.0f; (double) num381 < 4.0; ++num381)
|
|
Main.EntitySpriteDraw(target, vector2_55 + Vector2.UnitY.RotatedBy((double) num381 * 1.57079637050629) * num380, new Microsoft.Xna.Framework.Rectangle?(r), color88 * 0.2f, projectile1.rotation, origin13, projectile1.scale, spriteEffects, 0);
|
|
}
|
|
else
|
|
{
|
|
if (projectile1.type != 650)
|
|
return;
|
|
int num382 = (int) ((double) projectile1.localAI[0] / 6.28318548202515);
|
|
float f = (float) ((double) projectile1.localAI[0] % 6.28318548202515 - 3.14159274101257);
|
|
float num383 = (float) Math.IEEERemainder((double) projectile1.localAI[1], 1.0);
|
|
if ((double) num383 < 0.0)
|
|
++num383;
|
|
int num384 = (int) Math.Floor((double) projectile1.localAI[1]);
|
|
float num385 = 5f;
|
|
float scale = (float) (1.0 + (double) num384 * 0.0199999995529652);
|
|
if ((double) num382 == 1.0)
|
|
num385 = 7f;
|
|
Vector2 vector2_69 = f.ToRotationVector2() * num383 * num385 * projectile1.scale;
|
|
Texture2D texture2D = TextureAssets.Extra[66].Value;
|
|
Main.EntitySpriteDraw(texture2D, vector2_55 + vector2_69, new Microsoft.Xna.Framework.Rectangle?(), color88, projectile1.rotation, texture2D.Size() / 2f, scale, SpriteEffects.None, 0);
|
|
}
|
|
}
|
|
else if (projectile1.type == 466)
|
|
{
|
|
Vector2 end1 = projectile1.position + new Vector2((float) projectile1.width, (float) projectile1.height) / 2f + Vector2.UnitY * projectile1.gfxOffY - Main.screenPosition;
|
|
Texture2D tex = TextureAssets.Extra[33].Value;
|
|
projectile1.GetAlpha(color10);
|
|
Vector2 vector2 = new Vector2(projectile1.scale) / 2f;
|
|
for (int index3 = 0; index3 < 3; ++index3)
|
|
{
|
|
Vector2 scale;
|
|
if (index3 == 0)
|
|
{
|
|
scale = new Vector2(projectile1.scale) * 0.6f;
|
|
DelegateMethods.c_1 = new Microsoft.Xna.Framework.Color(115, 204, 219, 0) * 0.5f;
|
|
}
|
|
else if (index3 == 1)
|
|
{
|
|
scale = new Vector2(projectile1.scale) * 0.4f;
|
|
DelegateMethods.c_1 = new Microsoft.Xna.Framework.Color(113, 251, (int) byte.MaxValue, 0) * 0.5f;
|
|
}
|
|
else
|
|
{
|
|
scale = new Vector2(projectile1.scale) * 0.2f;
|
|
DelegateMethods.c_1 = new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0) * 0.5f;
|
|
}
|
|
DelegateMethods.f_1 = 1f;
|
|
for (int index4 = projectile1.oldPos.Length - 1; index4 > 0; --index4)
|
|
{
|
|
if (!(projectile1.oldPos[index4] == Vector2.Zero))
|
|
{
|
|
Vector2 start = projectile1.oldPos[index4] + new Vector2((float) projectile1.width, (float) projectile1.height) / 2f + Vector2.UnitY * projectile1.gfxOffY - Main.screenPosition;
|
|
Vector2 end2 = projectile1.oldPos[index4 - 1] + new Vector2((float) projectile1.width, (float) projectile1.height) / 2f + Vector2.UnitY * projectile1.gfxOffY - Main.screenPosition;
|
|
Utils.DrawLaser(Main.spriteBatch, tex, start, end2, scale, new Utils.LaserLineFraming(DelegateMethods.LightningLaserDraw));
|
|
}
|
|
}
|
|
if (projectile1.oldPos[0] != Vector2.Zero)
|
|
{
|
|
DelegateMethods.f_1 = 1f;
|
|
Vector2 start = projectile1.oldPos[0] + new Vector2((float) projectile1.width, (float) projectile1.height) / 2f + Vector2.UnitY * projectile1.gfxOffY - Main.screenPosition;
|
|
Utils.DrawLaser(Main.spriteBatch, tex, start, end1, scale, new Utils.LaserLineFraming(DelegateMethods.LightningLaserDraw));
|
|
}
|
|
}
|
|
}
|
|
else if (projectile1.type == 580)
|
|
{
|
|
Vector2 end3 = projectile1.position + new Vector2((float) projectile1.width, (float) projectile1.height) / 2f + Vector2.UnitY * projectile1.gfxOffY - Main.screenPosition;
|
|
Texture2D tex = TextureAssets.Extra[33].Value;
|
|
projectile1.GetAlpha(color10);
|
|
Vector2 vector2 = new Vector2(projectile1.scale) / 2f;
|
|
for (int index5 = 0; index5 < 2; ++index5)
|
|
{
|
|
float num386 = (double) projectile1.localAI[1] == -1.0 || (double) projectile1.localAI[1] == 1.0 ? -0.2f : 0.0f;
|
|
Vector2 scale;
|
|
if (index5 == 0)
|
|
{
|
|
scale = new Vector2(projectile1.scale) * (0.5f + num386);
|
|
DelegateMethods.c_1 = new Microsoft.Xna.Framework.Color(115, 244, 219, 0) * 0.5f;
|
|
}
|
|
else
|
|
{
|
|
scale = new Vector2(projectile1.scale) * (0.3f + num386);
|
|
DelegateMethods.c_1 = new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0) * 0.5f;
|
|
}
|
|
DelegateMethods.f_1 = 1f;
|
|
for (int index6 = projectile1.oldPos.Length - 1; index6 > 0; --index6)
|
|
{
|
|
if (!(projectile1.oldPos[index6] == Vector2.Zero))
|
|
{
|
|
Vector2 start = projectile1.oldPos[index6] + new Vector2((float) projectile1.width, (float) projectile1.height) / 2f + Vector2.UnitY * projectile1.gfxOffY - Main.screenPosition;
|
|
Vector2 end4 = projectile1.oldPos[index6 - 1] + new Vector2((float) projectile1.width, (float) projectile1.height) / 2f + Vector2.UnitY * projectile1.gfxOffY - Main.screenPosition;
|
|
Utils.DrawLaser(Main.spriteBatch, tex, start, end4, scale, new Utils.LaserLineFraming(DelegateMethods.LightningLaserDraw));
|
|
}
|
|
}
|
|
if (projectile1.oldPos[0] != Vector2.Zero)
|
|
{
|
|
DelegateMethods.f_1 = 1f;
|
|
Vector2 start = projectile1.oldPos[0] + new Vector2((float) projectile1.width, (float) projectile1.height) / 2f + Vector2.UnitY * projectile1.gfxOffY - Main.screenPosition;
|
|
Utils.DrawLaser(Main.spriteBatch, tex, start, end3, scale, new Utils.LaserLineFraming(DelegateMethods.LightningLaserDraw));
|
|
}
|
|
}
|
|
}
|
|
else if (projectile1.type == 445)
|
|
{
|
|
if ((double) Main.player[Main.projectile[i].owner].gravDir == -1.0)
|
|
spriteEffects |= SpriteEffects.FlipVertically;
|
|
Vector2 position = projectile1.position + new Vector2((float) projectile1.width, (float) projectile1.height) / 2f + Vector2.UnitY * projectile1.gfxOffY - Main.screenPosition;
|
|
Texture2D texture3 = TextureAssets.Projectile[projectile1.type].Value;
|
|
Microsoft.Xna.Framework.Color alpha = projectile1.GetAlpha(color10);
|
|
Vector2 vector2_70 = Main.player[projectile1.owner].RotatedRelativePoint(mountedCenter) + Vector2.UnitY * Main.player[projectile1.owner].gfxOffY;
|
|
Vector2 v = position + Main.screenPosition - vector2_70;
|
|
Vector2 vector2_71 = Vector2.Normalize(v);
|
|
float num387 = v.Length();
|
|
float rotation = v.ToRotation() + 1.570796f;
|
|
float num388 = -5f;
|
|
float num389 = num388 + 30f;
|
|
Vector2 vector2_72 = new Vector2(2f, num387 - num389);
|
|
Vector2 vector2_73 = Vector2.Lerp(position + Main.screenPosition, vector2_70 + vector2_71 * num389, 0.5f);
|
|
Vector2 spinningpoint = -Vector2.UnitY.RotatedBy((double) projectile1.localAI[0] / 60.0 * 3.14159274101257);
|
|
Vector2[] vector2Array = new Vector2[4]
|
|
{
|
|
spinningpoint,
|
|
spinningpoint.RotatedBy(1.57079637050629),
|
|
spinningpoint.RotatedBy(3.14159274101257),
|
|
spinningpoint.RotatedBy(4.71238899230957)
|
|
};
|
|
if ((double) num387 > (double) num389)
|
|
{
|
|
for (int index = 0; index < 2; ++index)
|
|
{
|
|
Microsoft.Xna.Framework.Color white = Microsoft.Xna.Framework.Color.White;
|
|
Microsoft.Xna.Framework.Color color101;
|
|
if (index % 2 == 0)
|
|
{
|
|
Microsoft.Xna.Framework.Color limeGreen = Microsoft.Xna.Framework.Color.LimeGreen;
|
|
limeGreen.A = (byte) 128;
|
|
color101 = limeGreen * 0.5f;
|
|
}
|
|
else
|
|
{
|
|
Microsoft.Xna.Framework.Color cornflowerBlue = Microsoft.Xna.Framework.Color.CornflowerBlue;
|
|
cornflowerBlue.A = (byte) 128;
|
|
color101 = cornflowerBlue * 0.5f;
|
|
}
|
|
Vector2 vector2_74 = new Vector2(vector2Array[index].X, 0.0f).RotatedBy((double) rotation) * 4f;
|
|
Main.EntitySpriteDraw(TextureAssets.MagicPixel.Value, vector2_73 - Main.screenPosition + vector2_74, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, 1, 1)), color101, rotation, Vector2.One / 2f, new Vector2(2f, num387 - num389), spriteEffects, 0);
|
|
}
|
|
}
|
|
int type2 = Main.player[projectile1.owner].inventory[Main.player[projectile1.owner].selectedItem].type;
|
|
Main.instance.LoadItem(type2);
|
|
Texture2D texture4 = TextureAssets.Item[type2].Value;
|
|
Microsoft.Xna.Framework.Color color102 = Lighting.GetColor((int) vector2_70.X / 16, (int) vector2_70.Y / 16);
|
|
Main.EntitySpriteDraw(texture4, vector2_70 - Main.screenPosition + vector2_71 * num388, new Microsoft.Xna.Framework.Rectangle?(), color102, (float) ((double) projectile1.rotation + 1.57079637050629 + (spriteEffects == SpriteEffects.None || spriteEffects == SpriteEffects.FlipVertically ? 3.14159274101257 : 0.0)), new Vector2(spriteEffects == SpriteEffects.None || spriteEffects == SpriteEffects.FlipVertically ? 0.0f : (float) texture4.Width, (float) texture4.Height / 2f) + Vector2.UnitY * 1f, Main.player[projectile1.owner].inventory[Main.player[projectile1.owner].selectedItem].scale, spriteEffects, 0);
|
|
Main.EntitySpriteDraw(TextureAssets.GlowMask[39].Value, vector2_70 - Main.screenPosition + vector2_71 * num388, new Microsoft.Xna.Framework.Rectangle?(), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0), (float) ((double) projectile1.rotation + 1.57079637050629 + (spriteEffects == SpriteEffects.None || spriteEffects == SpriteEffects.FlipVertically ? 3.14159274101257 : 0.0)), new Vector2(spriteEffects == SpriteEffects.None || spriteEffects == SpriteEffects.FlipVertically ? 0.0f : (float) texture4.Width, (float) texture4.Height / 2f) + Vector2.UnitY * 1f, Main.player[projectile1.owner].inventory[Main.player[projectile1.owner].selectedItem].scale, spriteEffects, 0);
|
|
if ((double) num387 > (double) num389)
|
|
{
|
|
for (int index = 2; index < 4; ++index)
|
|
{
|
|
Microsoft.Xna.Framework.Color white = Microsoft.Xna.Framework.Color.White;
|
|
Microsoft.Xna.Framework.Color color103;
|
|
if (index % 2 == 0)
|
|
{
|
|
Microsoft.Xna.Framework.Color limeGreen = Microsoft.Xna.Framework.Color.LimeGreen;
|
|
limeGreen.A = (byte) 128;
|
|
color103 = limeGreen * 0.5f;
|
|
}
|
|
else
|
|
{
|
|
Microsoft.Xna.Framework.Color cornflowerBlue = Microsoft.Xna.Framework.Color.CornflowerBlue;
|
|
cornflowerBlue.A = (byte) 128;
|
|
color103 = cornflowerBlue * 0.5f;
|
|
}
|
|
Vector2 vector2_75 = new Vector2(vector2Array[index].X, 0.0f).RotatedBy((double) rotation) * 4f;
|
|
Main.EntitySpriteDraw(TextureAssets.MagicPixel.Value, vector2_73 - Main.screenPosition + vector2_75, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, 1, 1)), color103, rotation, Vector2.One / 2f, new Vector2(2f, num387 - num389), spriteEffects, 0);
|
|
}
|
|
}
|
|
float num390 = projectile1.localAI[0] / 60f;
|
|
if ((double) num390 > 0.5)
|
|
num390 = 1f - num390;
|
|
Main.EntitySpriteDraw(texture3, position, new Microsoft.Xna.Framework.Rectangle?(), alpha * num390 * 2f, projectile1.rotation, new Vector2((float) texture3.Width, (float) texture3.Height) / 2f, projectile1.scale, spriteEffects, 0);
|
|
Main.EntitySpriteDraw(TextureAssets.GlowMask[40].Value, position, new Microsoft.Xna.Framework.Rectangle?(), alpha * (0.5f - num390) * 2f, projectile1.rotation, new Vector2((float) texture3.Width, (float) texture3.Height) / 2f, projectile1.scale, spriteEffects, 0);
|
|
}
|
|
else if (projectile1.type >= 393 && projectile1.type <= 395 || projectile1.type == 398 || projectile1.type == 423 || projectile1.type == 450)
|
|
{
|
|
Texture2D texture5 = TextureAssets.Projectile[projectile1.type].Value;
|
|
int height = TextureAssets.Projectile[projectile1.type].Height() / Main.projFrames[projectile1.type];
|
|
int y = height * projectile1.frame;
|
|
Main.EntitySpriteDraw(texture5, projectile1.Center - Main.screenPosition + new Vector2(0.0f, projectile1.gfxOffY - 2f), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, y, texture5.Width, height)), projectile1.GetAlpha(color10), projectile1.rotation, new Vector2((float) texture5.Width / 2f, (float) height / 2f), projectile1.scale, spriteEffects, 0);
|
|
if (projectile1.type == 398)
|
|
{
|
|
Texture2D texture6 = TextureAssets.MiniMinotaur.Value;
|
|
Main.EntitySpriteDraw(texture6, projectile1.Center - Main.screenPosition + new Vector2(0.0f, projectile1.gfxOffY - 2f), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, y, texture6.Width, height)), new Microsoft.Xna.Framework.Color(250, 250, 250, projectile1.alpha), projectile1.rotation, new Vector2((float) texture6.Width / 2f, (float) height / 2f), projectile1.scale, spriteEffects, 0);
|
|
}
|
|
if (projectile1.type != 423)
|
|
return;
|
|
Texture2D texture7 = TextureAssets.GlowMask[0].Value;
|
|
Main.EntitySpriteDraw(texture7, projectile1.Center - Main.screenPosition + new Vector2(0.0f, projectile1.gfxOffY - 2f), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, y, texture7.Width, height)), new Microsoft.Xna.Framework.Color(250, 250, 250, projectile1.alpha), projectile1.rotation, new Vector2((float) texture7.Width / 2f, (float) height / 2f), projectile1.scale, spriteEffects, 0);
|
|
}
|
|
else if (projectile1.type == 385)
|
|
{
|
|
Texture2D texture = TextureAssets.Projectile[projectile1.type].Value;
|
|
int height = texture.Height / Main.projFrames[projectile1.type];
|
|
int y = height * projectile1.frame;
|
|
int num391 = 8;
|
|
int num392 = 2;
|
|
float num393 = 0.4f;
|
|
for (int index = 1; index < num391; index += num392)
|
|
{
|
|
ref Vector2 local = ref projectile1.oldPos[index];
|
|
Microsoft.Xna.Framework.Color newColor = color10;
|
|
Microsoft.Xna.Framework.Color color104 = projectile1.GetAlpha(newColor) * ((float) (num391 - index) / 15f);
|
|
Microsoft.Xna.Framework.Color alpha = projectile1.GetAlpha(color10);
|
|
Vector2 vector2 = projectile1.oldPos[index] - Main.screenPosition + new Vector2(x17 + (float) num209, (float) (projectile1.height / 2) + projectile1.gfxOffY);
|
|
Main.EntitySpriteDraw(texture, projectile1.oldPos[index] + new Vector2((float) projectile1.width, (float) projectile1.height) / 2f - Main.screenPosition + new Vector2(0.0f, projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, y, texture.Width, height)), Microsoft.Xna.Framework.Color.Lerp(alpha, color104, 0.3f), projectile1.rotation, new Vector2((float) texture.Width / 2f, (float) height / 2f), MathHelper.Lerp(projectile1.scale, num393, (float) index / 15f), spriteEffects, 0);
|
|
}
|
|
Main.EntitySpriteDraw(texture, projectile1.Center - Main.screenPosition + new Vector2(0.0f, projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, y, texture.Width, height)), projectile1.GetAlpha(color10), projectile1.rotation, new Vector2((float) texture.Width / 2f, (float) height / 2f), projectile1.scale, spriteEffects, 0);
|
|
}
|
|
else if (projectile1.type == 388)
|
|
{
|
|
Texture2D texture = TextureAssets.Projectile[projectile1.type].Value;
|
|
int height = texture.Height / Main.projFrames[projectile1.type];
|
|
int y = height * projectile1.frame;
|
|
int num394;
|
|
int num395;
|
|
if ((double) projectile1.ai[0] == 2.0)
|
|
{
|
|
num394 = 10;
|
|
num395 = 1;
|
|
}
|
|
else
|
|
{
|
|
num395 = 2;
|
|
num394 = 5;
|
|
}
|
|
for (int index = 1; index < num394; index += num395)
|
|
{
|
|
ref Vector2 local = ref projectile1.oldPos[index];
|
|
Microsoft.Xna.Framework.Color newColor = color10;
|
|
Microsoft.Xna.Framework.Color color105 = projectile1.GetAlpha(newColor) * ((float) (num394 - index) / 15f);
|
|
Vector2 position = projectile1.oldPos[index] - Main.screenPosition + new Vector2(x17 + (float) num209, (float) (projectile1.height / 2) + projectile1.gfxOffY);
|
|
Main.EntitySpriteDraw(texture, position, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, y, texture.Width, height)), color105, projectile1.rotation, new Vector2(x17, (float) (projectile1.height / 2 + num208)), projectile1.scale, spriteEffects, 0);
|
|
}
|
|
Main.EntitySpriteDraw(texture, projectile1.position - Main.screenPosition + new Vector2(x17 + (float) num209, (float) (projectile1.height / 2) + projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, y, texture.Width, height)), projectile1.GetAlpha(color10), projectile1.rotation, new Vector2(x17, (float) (projectile1.height / 2 + num208)), projectile1.scale, spriteEffects, 0);
|
|
}
|
|
else if (Main.projFrames[projectile1.type] > 1)
|
|
{
|
|
int height = TextureAssets.Projectile[projectile1.type].Height() / Main.projFrames[projectile1.type];
|
|
int y = height * projectile1.frame;
|
|
if (projectile1.type == 111)
|
|
{
|
|
Microsoft.Xna.Framework.Color oldColor = new Microsoft.Xna.Framework.Color((int) Main.player[projectile1.owner].shirtColor.R, (int) Main.player[projectile1.owner].shirtColor.G, (int) Main.player[projectile1.owner].shirtColor.B);
|
|
Microsoft.Xna.Framework.Color color106 = Lighting.GetColor((int) ((double) projectile1.position.X + (double) projectile1.width * 0.5) / 16, (int) (((double) projectile1.position.Y + (double) projectile1.height * 0.5) / 16.0), oldColor);
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, new Vector2(projectile1.position.X - Main.screenPosition.X + x17 + (float) num209, projectile1.position.Y - Main.screenPosition.Y + (float) (projectile1.height / 2) + projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, y, TextureAssets.Projectile[projectile1.type].Width(), height)), projectile1.GetAlpha(color106), projectile1.rotation, new Vector2(x17, (float) (projectile1.height / 2 + num208)), projectile1.scale, spriteEffects, 0);
|
|
}
|
|
else
|
|
{
|
|
Microsoft.Xna.Framework.Color alpha = projectile1.GetAlpha(color10);
|
|
if (projectile1.type == 211 && Main.CurrentDrawnEntityShader != 0)
|
|
alpha.A = (byte) 127;
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, new Vector2(projectile1.position.X - Main.screenPosition.X + x17 + (float) num209, projectile1.position.Y - Main.screenPosition.Y + (float) (projectile1.height / 2) + projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, y, TextureAssets.Projectile[projectile1.type].Width(), height - 1)), alpha, projectile1.rotation, new Vector2(x17, (float) (projectile1.height / 2 + num208)), projectile1.scale, spriteEffects, 0);
|
|
if (projectile1.type == 335)
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, new Vector2(projectile1.position.X - Main.screenPosition.X + x17 + (float) num209, projectile1.position.Y - Main.screenPosition.Y + (float) (projectile1.height / 2) + projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, y, TextureAssets.Projectile[projectile1.type].Width(), height - 1)), new Microsoft.Xna.Framework.Color(100, 100, 100, 0), projectile1.rotation, new Vector2(x17, (float) (projectile1.height / 2 + num208)), projectile1.scale, spriteEffects, 0);
|
|
if (projectile1.type == 897 || projectile1.type == 899)
|
|
{
|
|
int index = 279;
|
|
if (projectile1.type == 899)
|
|
index = 281;
|
|
Main.EntitySpriteDraw(TextureAssets.GlowMask[index].Value, new Vector2(projectile1.position.X - Main.screenPosition.X + x17 + (float) num209, projectile1.position.Y - Main.screenPosition.Y + (float) (projectile1.height / 2) + projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, y, TextureAssets.Projectile[projectile1.type].Width(), height - 1)), Microsoft.Xna.Framework.Color.White, projectile1.rotation, new Vector2(x17, (float) (projectile1.height / 2 + num208)), projectile1.scale, spriteEffects, 0);
|
|
}
|
|
if (projectile1.type == 891)
|
|
{
|
|
float num396 = Utils.WrappedLerp(0.6f, 1f, (float) ((int) Main.timeForVisualEffects % 100) / 100f);
|
|
Microsoft.Xna.Framework.Color color107 = new Microsoft.Xna.Framework.Color(num396, num396, num396, 150f);
|
|
Main.EntitySpriteDraw(TextureAssets.GlowMask[277].Value, new Vector2(projectile1.position.X - Main.screenPosition.X + x17 + (float) num209, projectile1.position.Y - Main.screenPosition.Y + (float) (projectile1.height / 2) + projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, y, TextureAssets.Projectile[projectile1.type].Width(), height - 1)), color107, projectile1.rotation, new Vector2(x17, (float) (projectile1.height / 2 + num208)), projectile1.scale, spriteEffects, 0);
|
|
}
|
|
if (projectile1.type == 595)
|
|
{
|
|
Player player = Main.player[projectile1.owner];
|
|
if (player.active && player.body == 208)
|
|
{
|
|
for (float amount = 0.0f; (double) amount <= 1.0; amount += 0.2f)
|
|
{
|
|
Microsoft.Xna.Framework.Color underShirtColor = player.underShirtColor;
|
|
underShirtColor.A = (byte) (120.0 * (1.0 - (double) amount * 0.5));
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, new Vector2(projectile1.position.X - Main.screenPosition.X + x17 + (float) num209, projectile1.position.Y - Main.screenPosition.Y + (float) (projectile1.height / 2) + projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, y, TextureAssets.Projectile[projectile1.type].Width(), height - 1)), underShirtColor, projectile1.rotation, new Vector2(x17, (float) (projectile1.height / 2 + num208)), projectile1.scale * MathHelper.Lerp(0.8f, 1.3f, amount), spriteEffects, 0);
|
|
}
|
|
}
|
|
}
|
|
if (projectile1.type == 387)
|
|
Main.EntitySpriteDraw(TextureAssets.EyeLaserSmall.Value, new Vector2(projectile1.position.X - Main.screenPosition.X + x17 + (float) num209, projectile1.position.Y - Main.screenPosition.Y + (float) (projectile1.height / 2) + projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, y, TextureAssets.Projectile[projectile1.type].Width(), height)), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0), projectile1.rotation, new Vector2(x17, (float) (projectile1.height / 2 + num208)), projectile1.scale, spriteEffects, 0);
|
|
if (projectile1.type != 525)
|
|
return;
|
|
int num397 = Main.TryInteractingWithMoneyTrough(projectile1);
|
|
if (num397 == 0)
|
|
return;
|
|
int averageTileLighting = ((int) color10.R + (int) color10.G + (int) color10.B) / 3;
|
|
if (averageTileLighting <= 10)
|
|
return;
|
|
Microsoft.Xna.Framework.Color selectionGlowColor = Colors.GetSelectionGlowColor(num397 == 2, averageTileLighting);
|
|
Main.EntitySpriteDraw(TextureAssets.Extra[94].Value, new Vector2(projectile1.position.X - Main.screenPosition.X + x17 + (float) num209, projectile1.position.Y - Main.screenPosition.Y + (float) (projectile1.height / 2) + projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, y, TextureAssets.Projectile[projectile1.type].Width(), height - 1)), selectionGlowColor, 0.0f, new Vector2(x17, (float) (projectile1.height / 2 + num208)), 1f, spriteEffects, 0);
|
|
}
|
|
}
|
|
else if (projectile1.type == 383 || projectile1.type == 399)
|
|
{
|
|
Texture2D texture = TextureAssets.Projectile[projectile1.type].Value;
|
|
Main.EntitySpriteDraw(texture, projectile1.Center - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(), projectile1.GetAlpha(color10), projectile1.rotation, new Vector2((float) texture.Width, (float) texture.Height) / 2f, projectile1.scale, spriteEffects, 0);
|
|
}
|
|
else if (projectile1.type == 157 || projectile1.type == 378)
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, new Vector2(projectile1.position.X - Main.screenPosition.X + (float) (projectile1.width / 2), projectile1.position.Y - Main.screenPosition.Y + (float) (projectile1.height / 2)), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Projectile[projectile1.type].Width(), TextureAssets.Projectile[projectile1.type].Height())), projectile1.GetAlpha(color10), projectile1.rotation, new Vector2((float) (TextureAssets.Projectile[projectile1.type].Width() / 2), (float) (TextureAssets.Projectile[projectile1.type].Height() / 2)), projectile1.scale, spriteEffects, 0);
|
|
else if (projectile1.type == 306)
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, new Vector2(projectile1.position.X - Main.screenPosition.X + (float) (projectile1.width / 2), projectile1.position.Y - Main.screenPosition.Y + (float) (projectile1.height / 2)), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Projectile[projectile1.type].Width(), TextureAssets.Projectile[projectile1.type].Height())), projectile1.GetAlpha(color10), projectile1.rotation, new Vector2((float) (TextureAssets.Projectile[projectile1.type].Width() / 2), (float) (TextureAssets.Projectile[projectile1.type].Height() / 2)), projectile1.scale, spriteEffects, 0);
|
|
else if (projectile1.type == 256)
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, new Vector2(projectile1.position.X - Main.screenPosition.X + (float) (projectile1.width / 2), projectile1.position.Y - Main.screenPosition.Y + (float) (projectile1.height / 2)), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Projectile[projectile1.type].Width(), TextureAssets.Projectile[projectile1.type].Height())), projectile1.GetAlpha(color10), projectile1.rotation, new Vector2((float) (TextureAssets.Projectile[projectile1.type].Width() / 2), (float) (TextureAssets.Projectile[projectile1.type].Height() / 2)), projectile1.scale, spriteEffects, 0);
|
|
else if (projectile1.aiStyle == 27)
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, new Vector2(projectile1.position.X - Main.screenPosition.X + (float) (projectile1.width / 2), projectile1.position.Y - Main.screenPosition.Y + (float) (projectile1.height / 2)), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Projectile[projectile1.type].Width(), TextureAssets.Projectile[projectile1.type].Height())), projectile1.GetAlpha(color10), projectile1.rotation, new Vector2((float) TextureAssets.Projectile[projectile1.type].Width(), 0.0f), projectile1.scale, spriteEffects, 0);
|
|
else if (projectile1.aiStyle == 19)
|
|
{
|
|
SpriteEffects effects = SpriteEffects.None;
|
|
float rotation = (float) Math.Atan2((double) projectile1.velocity.Y, (double) projectile1.velocity.X) + 2.355f;
|
|
Vector2 origin = Vector2.Zero;
|
|
if (Main.player[projectile1.owner].direction > 0)
|
|
{
|
|
effects = SpriteEffects.FlipHorizontally;
|
|
origin.X = (float) TextureAssets.Projectile[projectile1.type].Width();
|
|
rotation -= 1.570796f;
|
|
}
|
|
if ((double) Main.player[projectile1.owner].gravDir == -1.0)
|
|
{
|
|
if (projectile1.direction == 1)
|
|
{
|
|
effects = SpriteEffects.FlipHorizontally | SpriteEffects.FlipVertically;
|
|
origin = new Vector2((float) TextureAssets.Projectile[projectile1.type].Width(), (float) TextureAssets.Projectile[projectile1.type].Height());
|
|
rotation -= 1.570796f;
|
|
}
|
|
else if (projectile1.direction == -1)
|
|
{
|
|
effects = SpriteEffects.FlipVertically;
|
|
origin = new Vector2(0.0f, (float) TextureAssets.Projectile[projectile1.type].Height());
|
|
rotation += 1.570796f;
|
|
}
|
|
}
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, new Vector2(projectile1.position.X - Main.screenPosition.X + (float) (projectile1.width / 2), projectile1.position.Y - Main.screenPosition.Y + (float) (projectile1.height / 2) + projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Projectile[projectile1.type].Width(), TextureAssets.Projectile[projectile1.type].Height())), projectile1.GetAlpha(color10), rotation, origin, projectile1.scale, effects, 0);
|
|
}
|
|
else if (projectile1.type == 451)
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, projectile1.Center - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(), projectile1.GetAlpha(color10), projectile1.rotation, new Vector2((float) TextureAssets.Projectile[projectile1.type].Width(), 0.0f), projectile1.scale, spriteEffects, 0);
|
|
else if (projectile1.type == 434)
|
|
{
|
|
Vector2 vector2_76 = new Vector2(projectile1.ai[0], projectile1.ai[1]);
|
|
Vector2 v = projectile1.position - vector2_76;
|
|
float y = (float) Math.Sqrt((double) v.X * (double) v.X + (double) v.Y * (double) v.Y);
|
|
Vector2 vector2_77 = new Vector2(4f, y);
|
|
float rotation = v.ToRotation() + 1.570796f;
|
|
Vector2 vector2_78 = Vector2.Lerp(projectile1.position, vector2_76, 0.5f);
|
|
Microsoft.Xna.Framework.Color red = Microsoft.Xna.Framework.Color.Red;
|
|
red.A = (byte) 0;
|
|
Microsoft.Xna.Framework.Color white = Microsoft.Xna.Framework.Color.White;
|
|
Microsoft.Xna.Framework.Color color108 = red * projectile1.localAI[0];
|
|
Microsoft.Xna.Framework.Color color109 = white * projectile1.localAI[0];
|
|
float num398 = (float) Math.Sqrt((double) (projectile1.damage / 50));
|
|
Main.EntitySpriteDraw(TextureAssets.MagicPixel.Value, vector2_78 - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, 1, 1)), color108, rotation, Vector2.One / 2f, new Vector2(2f * num398, y + 8f), spriteEffects, 0);
|
|
Main.EntitySpriteDraw(TextureAssets.MagicPixel.Value, vector2_78 - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, 1, 1)), color108, rotation, Vector2.One / 2f, new Vector2(4f * num398, y), spriteEffects, 0);
|
|
Main.EntitySpriteDraw(TextureAssets.MagicPixel.Value, vector2_78 - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, 1, 1)), color109, rotation, Vector2.One / 2f, new Vector2(2f * num398, y), spriteEffects, 0);
|
|
}
|
|
else
|
|
{
|
|
if (projectile1.type == 94 && (double) projectile1.ai[1] > 6.0)
|
|
{
|
|
for (int index = 0; index < 10; ++index)
|
|
{
|
|
Microsoft.Xna.Framework.Color alpha = projectile1.GetAlpha(color10);
|
|
float num399 = (float) (9 - index) / 9f;
|
|
alpha.R = (byte) ((double) alpha.R * (double) num399);
|
|
alpha.G = (byte) ((double) alpha.G * (double) num399);
|
|
alpha.B = (byte) ((double) alpha.B * (double) num399);
|
|
alpha.A = (byte) ((double) alpha.A * (double) num399);
|
|
float num400 = (float) (9 - index) / 9f;
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, new Vector2(projectile1.oldPos[index].X - Main.screenPosition.X + x17 + (float) num209, projectile1.oldPos[index].Y - Main.screenPosition.Y + (float) (projectile1.height / 2) + projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Projectile[projectile1.type].Width(), TextureAssets.Projectile[projectile1.type].Height())), alpha, projectile1.rotation, new Vector2(x17, (float) (projectile1.height / 2 + num208)), num400 * projectile1.scale, spriteEffects, 0);
|
|
}
|
|
}
|
|
if (projectile1.type == 301)
|
|
{
|
|
for (int index = 0; index < 10; ++index)
|
|
{
|
|
Microsoft.Xna.Framework.Color alpha = projectile1.GetAlpha(color10);
|
|
float num401 = (float) (9 - index) / 9f;
|
|
alpha.R = (byte) ((double) alpha.R * (double) num401);
|
|
alpha.G = (byte) ((double) alpha.G * (double) num401);
|
|
alpha.B = (byte) ((double) alpha.B * (double) num401);
|
|
alpha.A = (byte) ((double) alpha.A * (double) num401);
|
|
float num402 = (float) (9 - index) / 9f;
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, new Vector2(projectile1.oldPos[index].X - Main.screenPosition.X + x17 + (float) num209, projectile1.oldPos[index].Y - Main.screenPosition.Y + (float) (projectile1.height / 2) + projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Projectile[projectile1.type].Width(), TextureAssets.Projectile[projectile1.type].Height())), alpha, projectile1.rotation, new Vector2(x17, (float) (projectile1.height / 2 + num208)), num402 * projectile1.scale, spriteEffects, 0);
|
|
}
|
|
}
|
|
if (projectile1.type == 323 && projectile1.alpha == 0)
|
|
{
|
|
for (int index = 1; index < 8; ++index)
|
|
{
|
|
float num403 = projectile1.velocity.X * (float) index;
|
|
float num404 = projectile1.velocity.Y * (float) index;
|
|
Microsoft.Xna.Framework.Color alpha = projectile1.GetAlpha(color10);
|
|
float num405 = 0.0f;
|
|
if (index == 1)
|
|
num405 = 0.7f;
|
|
if (index == 2)
|
|
num405 = 0.6f;
|
|
if (index == 3)
|
|
num405 = 0.5f;
|
|
if (index == 4)
|
|
num405 = 0.4f;
|
|
if (index == 5)
|
|
num405 = 0.3f;
|
|
if (index == 6)
|
|
num405 = 0.2f;
|
|
if (index == 7)
|
|
num405 = 0.1f;
|
|
alpha.R = (byte) ((double) alpha.R * (double) num405);
|
|
alpha.G = (byte) ((double) alpha.G * (double) num405);
|
|
alpha.B = (byte) ((double) alpha.B * (double) num405);
|
|
alpha.A = (byte) ((double) alpha.A * (double) num405);
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, new Vector2(projectile1.position.X - Main.screenPosition.X + x17 + (float) num209 - num403, projectile1.position.Y - Main.screenPosition.Y + (float) (projectile1.height / 2) + projectile1.gfxOffY - num404), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Projectile[projectile1.type].Width(), TextureAssets.Projectile[projectile1.type].Height())), alpha, projectile1.rotation, new Vector2(x17, (float) (projectile1.height / 2 + num208)), num405 + 0.2f, spriteEffects, 0);
|
|
}
|
|
}
|
|
if (projectile1.type == 117 && (double) projectile1.ai[0] > 3.0)
|
|
{
|
|
for (int index = 1; index < 5; ++index)
|
|
{
|
|
float num406 = projectile1.velocity.X * (float) index;
|
|
float num407 = projectile1.velocity.Y * (float) index;
|
|
Microsoft.Xna.Framework.Color alpha = projectile1.GetAlpha(color10);
|
|
float num408 = 0.0f;
|
|
if (index == 1)
|
|
num408 = 0.4f;
|
|
if (index == 2)
|
|
num408 = 0.3f;
|
|
if (index == 3)
|
|
num408 = 0.2f;
|
|
if (index == 4)
|
|
num408 = 0.1f;
|
|
alpha.R = (byte) ((double) alpha.R * (double) num408);
|
|
alpha.G = (byte) ((double) alpha.G * (double) num408);
|
|
alpha.B = (byte) ((double) alpha.B * (double) num408);
|
|
alpha.A = (byte) ((double) alpha.A * (double) num408);
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, new Vector2(projectile1.position.X - Main.screenPosition.X + x17 + (float) num209 - num406, projectile1.position.Y - Main.screenPosition.Y + (float) (projectile1.height / 2) + projectile1.gfxOffY - num407), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Projectile[projectile1.type].Width(), TextureAssets.Projectile[projectile1.type].Height())), alpha, projectile1.rotation, new Vector2(x17, (float) (projectile1.height / 2 + num208)), projectile1.scale, spriteEffects, 0);
|
|
}
|
|
}
|
|
if (projectile1.bobber)
|
|
{
|
|
if ((double) projectile1.ai[1] > 0.0 && (double) projectile1.ai[1] < 5045.0 && (double) projectile1.ai[0] == 1.0)
|
|
{
|
|
int i3 = (int) projectile1.ai[1];
|
|
Vector2 center = projectile1.Center;
|
|
float num409 = projectile1.rotation;
|
|
Vector2 vector2 = center;
|
|
float num410 = polePosX - vector2.X;
|
|
float num411 = polePosY - vector2.Y;
|
|
num409 = (float) Math.Atan2((double) num411, (double) num410);
|
|
float rotation;
|
|
if ((double) projectile1.velocity.X > 0.0)
|
|
{
|
|
spriteEffects = SpriteEffects.None;
|
|
rotation = (float) Math.Atan2((double) num411, (double) num410) + 0.785f;
|
|
if ((double) projectile1.ai[1] == 2342.0)
|
|
rotation -= 0.785f;
|
|
}
|
|
else
|
|
{
|
|
spriteEffects = SpriteEffects.FlipHorizontally;
|
|
rotation = (float) Math.Atan2(-(double) num411, -(double) num410) - 0.785f;
|
|
if ((double) projectile1.ai[1] == 2342.0)
|
|
rotation += 0.785f;
|
|
}
|
|
Main.instance.LoadItem(i3);
|
|
Main.EntitySpriteDraw(TextureAssets.Item[i3].Value, new Vector2(center.X - Main.screenPosition.X, center.Y - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Item[i3].Width(), TextureAssets.Item[i3].Height())), color10, rotation, new Vector2((float) (TextureAssets.Item[i3].Width() / 2), (float) (TextureAssets.Item[i3].Height() / 2)), projectile1.scale, spriteEffects, 0);
|
|
}
|
|
else if ((double) projectile1.ai[0] <= 1.0)
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, new Vector2(projectile1.position.X - Main.screenPosition.X + x17 + (float) num209, projectile1.position.Y - Main.screenPosition.Y + (float) (projectile1.height / 2) + projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Projectile[projectile1.type].Width(), TextureAssets.Projectile[projectile1.type].Height())), projectile1.GetAlpha(color10), projectile1.rotation, new Vector2(x17, (float) (projectile1.height / 2 + num208)), projectile1.scale, spriteEffects, 0);
|
|
}
|
|
else
|
|
{
|
|
if (projectile1.ownerHitCheck && (double) Main.player[projectile1.owner].gravDir == -1.0)
|
|
{
|
|
if (Main.player[projectile1.owner].direction == 1)
|
|
spriteEffects = SpriteEffects.FlipHorizontally;
|
|
else if (Main.player[projectile1.owner].direction == -1)
|
|
spriteEffects = SpriteEffects.None;
|
|
}
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, new Vector2(projectile1.position.X - Main.screenPosition.X + x17 + (float) num209, projectile1.position.Y - Main.screenPosition.Y + (float) (projectile1.height / 2) + projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Projectile[projectile1.type].Width(), TextureAssets.Projectile[projectile1.type].Height())), projectile1.GetAlpha(color10), projectile1.rotation, new Vector2(x17, (float) (projectile1.height / 2 + num208)), projectile1.scale, spriteEffects, 0);
|
|
if (projectile1.glowMask != (short) -1)
|
|
Main.EntitySpriteDraw(TextureAssets.GlowMask[(int) projectile1.glowMask].Value, new Vector2(projectile1.position.X - Main.screenPosition.X + x17 + (float) num209, projectile1.position.Y - Main.screenPosition.Y + (float) (projectile1.height / 2) + projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Projectile[projectile1.type].Width(), TextureAssets.Projectile[projectile1.type].Height())), new Microsoft.Xna.Framework.Color(250, 250, 250, projectile1.alpha), projectile1.rotation, new Vector2(x17, (float) (projectile1.height / 2 + num208)), projectile1.scale, spriteEffects, 0);
|
|
if (projectile1.type == 473)
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, new Vector2(projectile1.position.X - Main.screenPosition.X + x17 + (float) num209, projectile1.position.Y - Main.screenPosition.Y + (float) (projectile1.height / 2) + projectile1.gfxOffY), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Projectile[projectile1.type].Width(), TextureAssets.Projectile[projectile1.type].Height())), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, 0, 0), projectile1.rotation, new Vector2(x17, (float) (projectile1.height / 2 + num208)), projectile1.scale, spriteEffects, 0);
|
|
if (projectile1.type == 312)
|
|
{
|
|
ulong tileFrameSeed = Main.TileFrameSeed;
|
|
for (int index = 0; index < 4; ++index)
|
|
{
|
|
Vector2 vector2 = new Vector2((float) Utils.RandomInt(ref tileFrameSeed, -2, 3), (float) Utils.RandomInt(ref tileFrameSeed, -2, 3));
|
|
Main.EntitySpriteDraw(TextureAssets.GlowMask[(int) projectile1.glowMask].Value, new Vector2(projectile1.position.X - Main.screenPosition.X + x17 + (float) num209, projectile1.position.Y - Main.screenPosition.Y + (float) (projectile1.height / 2) + projectile1.gfxOffY) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Projectile[projectile1.type].Width(), TextureAssets.Projectile[projectile1.type].Height())), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue) * 0.2f, projectile1.rotation, new Vector2(x17, (float) (projectile1.height / 2 + num208)), projectile1.scale, spriteEffects, 0);
|
|
}
|
|
}
|
|
}
|
|
if (projectile1.type == 106)
|
|
Main.EntitySpriteDraw(TextureAssets.LightDisc.Value, new Vector2(projectile1.position.X - Main.screenPosition.X + x17 + (float) num209, projectile1.position.Y - Main.screenPosition.Y + (float) (projectile1.height / 2)), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Projectile[projectile1.type].Width(), TextureAssets.Projectile[projectile1.type].Height())), new Microsoft.Xna.Framework.Color(200, 200, 200, 0), projectile1.rotation, new Vector2(x17, (float) (projectile1.height / 2 + num208)), projectile1.scale, spriteEffects, 0);
|
|
if (projectile1.type >= 326 && projectile1.type <= 328)
|
|
{
|
|
ulong tileFrameSeed = Main.TileFrameSeed;
|
|
for (int index = 0; index < 4; ++index)
|
|
{
|
|
Vector2 vector2 = new Vector2((float) Utils.RandomInt(ref tileFrameSeed, -2, 3), (float) Utils.RandomInt(ref tileFrameSeed, -2, 3));
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, new Vector2(projectile1.position.X - Main.screenPosition.X + x17 + (float) num209, projectile1.position.Y - Main.screenPosition.Y + (float) (projectile1.height / 2)) + vector2 - projectile1.velocity * 0.25f * (float) index, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Projectile[projectile1.type].Width(), TextureAssets.Projectile[projectile1.type].Height())), new Microsoft.Xna.Framework.Color(120, 120, 120, 60) * 1f, projectile1.rotation, new Vector2(x17, (float) (projectile1.height / 2 + num208)), projectile1.scale - (float) index * 0.2f, spriteEffects, 0);
|
|
}
|
|
}
|
|
if (projectile1.type == 554 || projectile1.type == 603)
|
|
{
|
|
for (int index = 1; index < 5; ++index)
|
|
{
|
|
float num412 = (float) ((double) projectile1.velocity.X * (double) index * 0.5);
|
|
float num413 = (float) ((double) projectile1.velocity.Y * (double) index * 0.5);
|
|
Microsoft.Xna.Framework.Color alpha = projectile1.GetAlpha(color10);
|
|
float num414 = 0.0f;
|
|
if (index == 1)
|
|
num414 = 0.4f;
|
|
if (index == 2)
|
|
num414 = 0.3f;
|
|
if (index == 3)
|
|
num414 = 0.2f;
|
|
if (index == 4)
|
|
num414 = 0.1f;
|
|
alpha.R = (byte) ((double) alpha.R * (double) num414);
|
|
alpha.G = (byte) ((double) alpha.G * (double) num414);
|
|
alpha.B = (byte) ((double) alpha.B * (double) num414);
|
|
alpha.A = (byte) ((double) alpha.A * (double) num414);
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, new Vector2(projectile1.position.X - Main.screenPosition.X + x17 + (float) num209 - num412, projectile1.position.Y - Main.screenPosition.Y + (float) (projectile1.height / 2) + projectile1.gfxOffY - num413), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Projectile[projectile1.type].Width(), TextureAssets.Projectile[projectile1.type].Height())), alpha, projectile1.rotation, new Vector2(x17, (float) (projectile1.height / 2 + num208)), projectile1.scale, spriteEffects, 0);
|
|
}
|
|
}
|
|
else if (projectile1.type == 604)
|
|
{
|
|
int num415 = (int) projectile1.ai[1] + 1;
|
|
if (num415 > 7)
|
|
num415 = 7;
|
|
for (int index = 1; index < num415; ++index)
|
|
{
|
|
float num416 = (float) ((double) projectile1.velocity.X * (double) index * 1.5);
|
|
float num417 = (float) ((double) projectile1.velocity.Y * (double) index * 1.5);
|
|
Microsoft.Xna.Framework.Color alpha = projectile1.GetAlpha(color10);
|
|
float num418 = 0.0f;
|
|
if (index == 1)
|
|
num418 = 0.4f;
|
|
if (index == 2)
|
|
num418 = 0.3f;
|
|
if (index == 3)
|
|
num418 = 0.2f;
|
|
if (index == 4)
|
|
num418 = 0.1f;
|
|
float num419 = (float) (0.400000005960464 - (double) index * 0.0599999986588955) * (float) (1.0 - (double) projectile1.alpha / (double) byte.MaxValue);
|
|
alpha.R = (byte) ((double) alpha.R * (double) num419);
|
|
alpha.G = (byte) ((double) alpha.G * (double) num419);
|
|
alpha.B = (byte) ((double) alpha.B * (double) num419);
|
|
alpha.A = (byte) ((double) alpha.A * (double) num419 / 2.0);
|
|
float scale = projectile1.scale - (float) index * 0.1f;
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, new Vector2(projectile1.position.X - Main.screenPosition.X + x17 + (float) num209 - num416, projectile1.position.Y - Main.screenPosition.Y + (float) (projectile1.height / 2) + projectile1.gfxOffY - num417), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Projectile[projectile1.type].Width(), TextureAssets.Projectile[projectile1.type].Height())), alpha, projectile1.rotation, new Vector2(x17, (float) (projectile1.height / 2 + num208)), scale, spriteEffects, 0);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (projectile1.type != 553)
|
|
return;
|
|
for (int index = 1; index < 5; ++index)
|
|
{
|
|
float num420 = (float) ((double) projectile1.velocity.X * (double) index * 0.400000005960464);
|
|
float num421 = (float) ((double) projectile1.velocity.Y * (double) index * 0.400000005960464);
|
|
Microsoft.Xna.Framework.Color alpha = projectile1.GetAlpha(color10);
|
|
float num422 = 0.0f;
|
|
if (index == 1)
|
|
num422 = 0.4f;
|
|
if (index == 2)
|
|
num422 = 0.3f;
|
|
if (index == 3)
|
|
num422 = 0.2f;
|
|
if (index == 4)
|
|
num422 = 0.1f;
|
|
alpha.R = (byte) ((double) alpha.R * (double) num422);
|
|
alpha.G = (byte) ((double) alpha.G * (double) num422);
|
|
alpha.B = (byte) ((double) alpha.B * (double) num422);
|
|
alpha.A = (byte) ((double) alpha.A * (double) num422);
|
|
Main.EntitySpriteDraw(TextureAssets.Projectile[projectile1.type].Value, new Vector2(projectile1.position.X - Main.screenPosition.X + x17 + (float) num209 - num420, projectile1.position.Y - Main.screenPosition.Y + (float) (projectile1.height / 2) + projectile1.gfxOffY - num421), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Projectile[projectile1.type].Width(), TextureAssets.Projectile[projectile1.type].Height())), alpha, projectile1.rotation, new Vector2(x17, (float) (projectile1.height / 2 + num208)), projectile1.scale, spriteEffects, 0);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private static void DrawPrettyStarSparkle(
|
|
Projectile proj,
|
|
SpriteEffects dir,
|
|
Vector2 drawpos,
|
|
Microsoft.Xna.Framework.Color drawColor,
|
|
Microsoft.Xna.Framework.Color shineColor)
|
|
{
|
|
Texture2D texture2D = TextureAssets.Extra[98].Value;
|
|
Microsoft.Xna.Framework.Color color1 = shineColor * proj.Opacity * 0.5f;
|
|
color1.A = (byte) 0;
|
|
Vector2 origin = texture2D.Size() / 2f;
|
|
Microsoft.Xna.Framework.Color color2 = drawColor * 0.5f;
|
|
float num = Utils.GetLerpValue(15f, 30f, proj.localAI[0], true) * Utils.GetLerpValue(45f, 30f, proj.localAI[0], true);
|
|
Vector2 scale1 = new Vector2(0.5f, 5f) * num;
|
|
Vector2 scale2 = new Vector2(0.5f, 2f) * num;
|
|
Microsoft.Xna.Framework.Color color3 = color1 * num;
|
|
Microsoft.Xna.Framework.Color color4 = color2 * num;
|
|
Vector2 position = drawpos;
|
|
Main.EntitySpriteDraw(texture2D, position, new Microsoft.Xna.Framework.Rectangle?(), color3, 1.570796f, origin, scale1, dir, 0);
|
|
Main.EntitySpriteDraw(texture2D, position, new Microsoft.Xna.Framework.Rectangle?(), color3, 0.0f, origin, scale2, dir, 0);
|
|
Main.EntitySpriteDraw(texture2D, position, new Microsoft.Xna.Framework.Rectangle?(), color4, 1.570796f, origin, scale1 * 0.6f, dir, 0);
|
|
Main.EntitySpriteDraw(texture2D, position, new Microsoft.Xna.Framework.Rectangle?(), color4, 0.0f, origin, scale2 * 0.6f, dir, 0);
|
|
}
|
|
|
|
private static void DrawProj_FlailChains(Projectile proj, Vector2 mountedCenter)
|
|
{
|
|
Player player = Main.player[proj.owner];
|
|
Vector2 playerArmPosition = Main.GetPlayerArmPosition(proj);
|
|
Asset<Texture2D> asset1 = (Asset<Texture2D>) null;
|
|
Microsoft.Xna.Framework.Rectangle? sourceRectangle = new Microsoft.Xna.Framework.Rectangle?();
|
|
float num1 = 0.0f;
|
|
Asset<Texture2D> asset2;
|
|
switch (proj.type)
|
|
{
|
|
case 25:
|
|
asset2 = TextureAssets.Chain2;
|
|
break;
|
|
case 35:
|
|
asset2 = TextureAssets.Chain6;
|
|
break;
|
|
case 63:
|
|
asset2 = TextureAssets.Chain7;
|
|
break;
|
|
case 154:
|
|
asset2 = TextureAssets.Chain13;
|
|
break;
|
|
case 247:
|
|
asset2 = TextureAssets.Chain19;
|
|
break;
|
|
case 757:
|
|
asset2 = TextureAssets.Extra[99];
|
|
sourceRectangle = new Microsoft.Xna.Framework.Rectangle?(asset2.Frame(verticalFrames: 6));
|
|
num1 = -2f;
|
|
break;
|
|
case 947:
|
|
asset2 = TextureAssets.Chain41;
|
|
break;
|
|
case 948:
|
|
asset2 = TextureAssets.Chain43;
|
|
break;
|
|
default:
|
|
asset2 = TextureAssets.Chain3;
|
|
break;
|
|
}
|
|
Vector2 origin = sourceRectangle.HasValue ? sourceRectangle.Value.Size() / 2f : asset2.Size() / 2f;
|
|
Vector2 center = proj.Center;
|
|
Vector2 v1 = playerArmPosition.MoveTowards(center, 4f) - center;
|
|
Vector2 v2 = v1.SafeNormalize(Vector2.Zero);
|
|
float num2 = (sourceRectangle.HasValue ? (float) sourceRectangle.Value.Height : (float) asset2.Height()) + num1;
|
|
float rotation = v2.ToRotation() + 1.570796f;
|
|
int num3 = 0;
|
|
float num4 = v1.Length() + num2 / 2f;
|
|
int num5 = 0;
|
|
for (; (double) num4 > 0.0; num4 -= num2)
|
|
{
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) center.X / 16, (int) ((double) center.Y / 16.0));
|
|
switch (proj.type)
|
|
{
|
|
case 757:
|
|
sourceRectangle = new Microsoft.Xna.Framework.Rectangle?(asset2.Frame(verticalFrames: 6, frameY: (num3 % 6)));
|
|
break;
|
|
case 948:
|
|
if (num5 >= 6)
|
|
asset2 = asset1 = TextureAssets.Chain41;
|
|
else if (num5 >= 4)
|
|
{
|
|
asset2 = asset1 = TextureAssets.Chain42;
|
|
byte num6 = 140;
|
|
if ((int) color.R < (int) num6)
|
|
color.R = num6;
|
|
if ((int) color.G < (int) num6)
|
|
color.G = num6;
|
|
if ((int) color.B < (int) num6)
|
|
color.B = num6;
|
|
}
|
|
else
|
|
color = Microsoft.Xna.Framework.Color.White;
|
|
++num5;
|
|
break;
|
|
}
|
|
Main.spriteBatch.Draw(asset2.Value, center - Main.screenPosition, sourceRectangle, color, rotation, origin, 1f, SpriteEffects.None, 0.0f);
|
|
center += v2 * num2;
|
|
++num3;
|
|
}
|
|
}
|
|
|
|
private static void DrawProj_FlailChains_Old(Projectile proj, Vector2 mountedCenter)
|
|
{
|
|
Vector2 vector2 = new Vector2(proj.position.X + (float) proj.width * 0.5f, proj.position.Y + (float) proj.height * 0.5f);
|
|
float num1 = mountedCenter.X - vector2.X;
|
|
float num2 = mountedCenter.Y - vector2.Y;
|
|
float rotation = (float) Math.Atan2((double) num2, (double) num1) - 1.57f;
|
|
if (proj.alpha == 0)
|
|
{
|
|
int num3 = -1;
|
|
if ((double) proj.position.X + (double) (proj.width / 2) < (double) mountedCenter.X)
|
|
num3 = 1;
|
|
Main.player[proj.owner].itemRotation = Main.player[proj.owner].direction != 1 ? (float) Math.Atan2((double) num2 * (double) num3, (double) num1 * (double) num3) : (float) Math.Atan2((double) num2 * (double) num3, (double) num1 * (double) num3);
|
|
}
|
|
bool flag = true;
|
|
int num4 = 0;
|
|
int num5 = 25;
|
|
if (proj.type == 757)
|
|
num5 = 12;
|
|
while (flag)
|
|
{
|
|
float f = (float) Math.Sqrt((double) num1 * (double) num1 + (double) num2 * (double) num2);
|
|
if ((double) f < (double) num5)
|
|
flag = false;
|
|
else if (float.IsNaN(f))
|
|
{
|
|
flag = false;
|
|
}
|
|
else
|
|
{
|
|
float num6 = proj.type == 154 || proj.type == 247 ? 18f / f : (proj.type != 757 ? 12f / f : 16f / f);
|
|
float num7 = num1 * num6;
|
|
float num8 = num2 * num6;
|
|
vector2.X += num7;
|
|
vector2.Y += num8;
|
|
num1 = mountedCenter.X - vector2.X;
|
|
num2 = mountedCenter.Y - vector2.Y;
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) vector2.X / 16, (int) ((double) vector2.Y / 16.0));
|
|
if (proj.type == 25)
|
|
Main.EntitySpriteDraw(TextureAssets.Chain2.Value, new Vector2(vector2.X - Main.screenPosition.X, vector2.Y - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Chain2.Width(), TextureAssets.Chain2.Height())), color, rotation, new Vector2((float) TextureAssets.Chain2.Width() * 0.5f, (float) TextureAssets.Chain2.Height() * 0.5f), 1f, SpriteEffects.None, 0);
|
|
else if (proj.type == 35)
|
|
Main.EntitySpriteDraw(TextureAssets.Chain6.Value, new Vector2(vector2.X - Main.screenPosition.X, vector2.Y - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Chain6.Width(), TextureAssets.Chain6.Height())), color, rotation, new Vector2((float) TextureAssets.Chain6.Width() * 0.5f, (float) TextureAssets.Chain6.Height() * 0.5f), 1f, SpriteEffects.None, 0);
|
|
else if (proj.type == 757)
|
|
{
|
|
Texture2D texture2D = TextureAssets.Extra[99].Value;
|
|
Microsoft.Xna.Framework.Rectangle r = texture2D.Frame(verticalFrames: 6, frameY: (num4 % 6));
|
|
Main.EntitySpriteDraw(texture2D, new Vector2(vector2.X - Main.screenPosition.X, vector2.Y - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(texture2D.Frame(verticalFrames: 6, frameY: (num4 % 6))), color, rotation, r.Size() / 2f, 1f, SpriteEffects.None, 0);
|
|
}
|
|
else if (proj.type == 247)
|
|
Main.EntitySpriteDraw(TextureAssets.Chain19.Value, new Vector2(vector2.X - Main.screenPosition.X, vector2.Y - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Chain19.Width(), TextureAssets.Chain19.Height())), color, rotation, new Vector2((float) TextureAssets.Chain19.Width() * 0.5f, (float) TextureAssets.Chain19.Height() * 0.5f), 1f, SpriteEffects.None, 0);
|
|
else if (proj.type == 63)
|
|
Main.EntitySpriteDraw(TextureAssets.Chain7.Value, new Vector2(vector2.X - Main.screenPosition.X, vector2.Y - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Chain7.Width(), TextureAssets.Chain7.Height())), color, rotation, new Vector2((float) TextureAssets.Chain7.Width() * 0.5f, (float) TextureAssets.Chain7.Height() * 0.5f), 1f, SpriteEffects.None, 0);
|
|
else if (proj.type == 154)
|
|
Main.EntitySpriteDraw(TextureAssets.Chain13.Value, new Vector2(vector2.X - Main.screenPosition.X, vector2.Y - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Chain13.Width(), TextureAssets.Chain13.Height())), color, rotation, new Vector2((float) TextureAssets.Chain13.Width() * 0.5f, (float) TextureAssets.Chain13.Height() * 0.5f), 1f, SpriteEffects.None, 0);
|
|
else
|
|
Main.EntitySpriteDraw(TextureAssets.Chain3.Value, new Vector2(vector2.X - Main.screenPosition.X, vector2.Y - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Chain3.Width(), TextureAssets.Chain3.Height())), color, rotation, new Vector2((float) TextureAssets.Chain3.Width() * 0.5f, (float) TextureAssets.Chain3.Height() * 0.5f), 1f, SpriteEffects.None, 0);
|
|
}
|
|
++num4;
|
|
}
|
|
}
|
|
|
|
private static Microsoft.Xna.Framework.Color TryApplyingPlayerStringColor(
|
|
int playerStringColor,
|
|
Microsoft.Xna.Framework.Color stringColor)
|
|
{
|
|
if (playerStringColor > 0)
|
|
{
|
|
stringColor = WorldGen.paintColor(playerStringColor);
|
|
if (stringColor.R < (byte) 75)
|
|
stringColor.R = (byte) 75;
|
|
if (stringColor.G < (byte) 75)
|
|
stringColor.G = (byte) 75;
|
|
if (stringColor.B < (byte) 75)
|
|
stringColor.B = (byte) 75;
|
|
switch (playerStringColor)
|
|
{
|
|
case 0:
|
|
case 14:
|
|
stringColor = new Microsoft.Xna.Framework.Color(200, 200, 200);
|
|
break;
|
|
case 13:
|
|
stringColor = new Microsoft.Xna.Framework.Color(20, 20, 20);
|
|
break;
|
|
case 27:
|
|
stringColor = new Microsoft.Xna.Framework.Color(Main.DiscoR, Main.DiscoG, Main.DiscoB);
|
|
break;
|
|
case 28:
|
|
stringColor = new Microsoft.Xna.Framework.Color(163, 116, 91);
|
|
break;
|
|
}
|
|
stringColor.A = (byte) ((double) stringColor.A * 0.400000005960464);
|
|
}
|
|
return stringColor;
|
|
}
|
|
|
|
private static void DrawProj_FishingLine(
|
|
Projectile proj,
|
|
ref float polePosX,
|
|
ref float polePosY,
|
|
Vector2 mountedCenter)
|
|
{
|
|
polePosX = mountedCenter.X;
|
|
polePosY = mountedCenter.Y;
|
|
polePosY += Main.player[proj.owner].gfxOffY;
|
|
int type = Main.player[proj.owner].inventory[Main.player[proj.owner].selectedItem].type;
|
|
Microsoft.Xna.Framework.Color stringColor = new Microsoft.Xna.Framework.Color(200, 200, 200, 100);
|
|
if (type == 2294)
|
|
stringColor = new Microsoft.Xna.Framework.Color(100, 180, 230, 100);
|
|
if (type == 2295)
|
|
stringColor = new Microsoft.Xna.Framework.Color(250, 90, 70, 100);
|
|
if (type == 2293)
|
|
stringColor = new Microsoft.Xna.Framework.Color(203, 190, 210, 100);
|
|
if (type == 2421)
|
|
stringColor = new Microsoft.Xna.Framework.Color(183, 77, 112, 100);
|
|
if (type == 2422)
|
|
stringColor = new Microsoft.Xna.Framework.Color((int) byte.MaxValue, 226, 116, 100);
|
|
if (type == 4325)
|
|
stringColor = new Microsoft.Xna.Framework.Color(200, 100, 100, 100);
|
|
if (type == 4442)
|
|
stringColor = new Microsoft.Xna.Framework.Color(100, 100, 200, 100);
|
|
Microsoft.Xna.Framework.Color oldColor = Main.TryApplyingPlayerStringColor(Main.player[proj.owner].stringColor, stringColor);
|
|
float gravDir = Main.player[proj.owner].gravDir;
|
|
if (type == 2289)
|
|
{
|
|
polePosX += (float) (43 * Main.player[proj.owner].direction);
|
|
if (Main.player[proj.owner].direction < 0)
|
|
polePosX -= 13f;
|
|
polePosY -= 36f * gravDir;
|
|
}
|
|
else if (type == 2291)
|
|
{
|
|
polePosX += (float) (43 * Main.player[proj.owner].direction);
|
|
if (Main.player[proj.owner].direction < 0)
|
|
polePosX -= 13f;
|
|
polePosY -= 34f * gravDir;
|
|
}
|
|
else if (type == 2292)
|
|
{
|
|
polePosX += (float) (46 * Main.player[proj.owner].direction);
|
|
if (Main.player[proj.owner].direction < 0)
|
|
polePosX -= 13f;
|
|
polePosY -= 34f * gravDir;
|
|
}
|
|
else if (type == 2293)
|
|
{
|
|
polePosX += (float) (43 * Main.player[proj.owner].direction);
|
|
if (Main.player[proj.owner].direction < 0)
|
|
polePosX -= 13f;
|
|
polePosY -= 34f * gravDir;
|
|
}
|
|
else if (type == 2294)
|
|
{
|
|
polePosX += (float) (43 * Main.player[proj.owner].direction);
|
|
if (Main.player[proj.owner].direction < 0)
|
|
polePosX -= 13f;
|
|
polePosY -= 30f * gravDir;
|
|
}
|
|
else if (type == 2295)
|
|
{
|
|
polePosX += (float) (43 * Main.player[proj.owner].direction);
|
|
if (Main.player[proj.owner].direction < 0)
|
|
polePosX -= 13f;
|
|
polePosY -= 30f * gravDir;
|
|
}
|
|
else if (type == 2296)
|
|
{
|
|
polePosX += (float) (43 * Main.player[proj.owner].direction);
|
|
if (Main.player[proj.owner].direction < 0)
|
|
polePosX -= 13f;
|
|
polePosY -= 30f * gravDir;
|
|
}
|
|
else if (type == 2421)
|
|
{
|
|
polePosX += (float) (47 * Main.player[proj.owner].direction);
|
|
if (Main.player[proj.owner].direction < 0)
|
|
polePosX -= 13f;
|
|
polePosY -= 36f * gravDir;
|
|
}
|
|
else if (type == 2422)
|
|
{
|
|
polePosX += (float) (47 * Main.player[proj.owner].direction);
|
|
if (Main.player[proj.owner].direction < 0)
|
|
polePosX -= 13f;
|
|
polePosY -= 32f * gravDir;
|
|
}
|
|
else if (type == 4325)
|
|
{
|
|
polePosX += (float) (44 * Main.player[proj.owner].direction);
|
|
if (Main.player[proj.owner].direction < 0)
|
|
polePosX -= 13f;
|
|
polePosY -= 32f * gravDir;
|
|
}
|
|
else if (type == 4442)
|
|
{
|
|
polePosX += (float) (44 * Main.player[proj.owner].direction);
|
|
if (Main.player[proj.owner].direction < 0)
|
|
polePosX -= 13f;
|
|
polePosY -= 32f * gravDir;
|
|
}
|
|
if ((double) gravDir == -1.0)
|
|
polePosY -= 12f;
|
|
Vector2 vector2_1 = new Vector2(polePosX, polePosY);
|
|
Vector2 vector2_2 = Main.player[proj.owner].RotatedRelativePoint(vector2_1 + new Vector2(8f)) - new Vector2(8f);
|
|
float num1 = proj.position.X + (float) proj.width * 0.5f - vector2_2.X;
|
|
float num2 = proj.position.Y + (float) proj.height * 0.5f - vector2_2.Y;
|
|
Math.Sqrt((double) num1 * (double) num1 + (double) num2 * (double) num2);
|
|
float num3 = (float) Math.Atan2((double) num2, (double) num1) - 1.57f;
|
|
bool flag = true;
|
|
if ((double) num1 == 0.0 && (double) num2 == 0.0)
|
|
{
|
|
flag = false;
|
|
}
|
|
else
|
|
{
|
|
float num4 = 12f / (float) Math.Sqrt((double) num1 * (double) num1 + (double) num2 * (double) num2);
|
|
float num5 = num1 * num4;
|
|
float num6 = num2 * num4;
|
|
vector2_2.X -= num5;
|
|
vector2_2.Y -= num6;
|
|
num1 = proj.position.X + (float) proj.width * 0.5f - vector2_2.X;
|
|
num2 = proj.position.Y + (float) proj.height * 0.5f - vector2_2.Y;
|
|
}
|
|
while (flag)
|
|
{
|
|
float num7 = 12f;
|
|
float f1 = (float) Math.Sqrt((double) num1 * (double) num1 + (double) num2 * (double) num2);
|
|
float f2 = f1;
|
|
if (float.IsNaN(f1) || float.IsNaN(f2))
|
|
{
|
|
flag = false;
|
|
}
|
|
else
|
|
{
|
|
if ((double) f1 < 20.0)
|
|
{
|
|
num7 = f1 - 8f;
|
|
flag = false;
|
|
}
|
|
float num8 = 12f / f1;
|
|
float num9 = num1 * num8;
|
|
float num10 = num2 * num8;
|
|
vector2_2.X += num9;
|
|
vector2_2.Y += num10;
|
|
num1 = proj.position.X + (float) proj.width * 0.5f - vector2_2.X;
|
|
num2 = proj.position.Y + (float) proj.height * 0.1f - vector2_2.Y;
|
|
if ((double) f2 > 12.0)
|
|
{
|
|
float num11 = 0.3f;
|
|
float num12 = Math.Abs(proj.velocity.X) + Math.Abs(proj.velocity.Y);
|
|
if ((double) num12 > 16.0)
|
|
num12 = 16f;
|
|
float num13 = (float) (1.0 - (double) num12 / 16.0);
|
|
float num14 = num11 * num13;
|
|
float num15 = f2 / 80f;
|
|
if ((double) num15 > 1.0)
|
|
num15 = 1f;
|
|
float num16 = num14 * num15;
|
|
if ((double) num16 < 0.0)
|
|
num16 = 0.0f;
|
|
float num17 = (float) (1.0 - (double) proj.localAI[0] / 100.0);
|
|
float num18 = num16 * num17;
|
|
if ((double) num2 > 0.0)
|
|
{
|
|
num2 *= 1f + num18;
|
|
num1 *= 1f - num18;
|
|
}
|
|
else
|
|
{
|
|
float num19 = Math.Abs(proj.velocity.X) / 3f;
|
|
if ((double) num19 > 1.0)
|
|
num19 = 1f;
|
|
float num20 = num19 - 0.5f;
|
|
float num21 = num18 * num20;
|
|
if ((double) num21 > 0.0)
|
|
num21 *= 2f;
|
|
num2 *= 1f + num21;
|
|
num1 *= 1f - num21;
|
|
}
|
|
}
|
|
float rotation = (float) Math.Atan2((double) num2, (double) num1) - 1.57f;
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) vector2_2.X / 16, (int) ((double) vector2_2.Y / 16.0), oldColor);
|
|
Main.EntitySpriteDraw(TextureAssets.FishingLine.Value, new Vector2((float) ((double) vector2_2.X - (double) Main.screenPosition.X + (double) TextureAssets.FishingLine.Width() * 0.5), (float) ((double) vector2_2.Y - (double) Main.screenPosition.Y + (double) TextureAssets.FishingLine.Height() * 0.5)), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.FishingLine.Width(), (int) num7)), color, rotation, new Vector2((float) TextureAssets.FishingLine.Width() * 0.5f, 0.0f), 1f, SpriteEffects.None, 0);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void DrawProj_StardustGuardianPunching(Projectile proj)
|
|
{
|
|
int num1 = 6;
|
|
Texture2D texture2D = TextureAssets.Extra[46].Value;
|
|
int num2 = 20;
|
|
Vector2 vector2 = proj.Center - proj.rotation.ToRotationVector2() * (float) num2 * (float) proj.spriteDirection;
|
|
for (int index = 0; index < num1; ++index)
|
|
{
|
|
float num3 = Main.rand.NextFloat();
|
|
float num4 = Utils.GetLerpValue(0.0f, 0.3f, num3, true) * Utils.GetLerpValue(1f, 0.5f, num3, true);
|
|
float num5 = MathHelper.Lerp(0.6f, 1f, Utils.GetLerpValue(0.0f, 0.3f, num3, true) * Utils.GetLerpValue(1f, 0.5f, num3, true));
|
|
Microsoft.Xna.Framework.Color color1 = new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, (int) sbyte.MaxValue) * (num4 * 0.5f);
|
|
Vector2 origin = texture2D.Size() / 2f;
|
|
Microsoft.Xna.Framework.Color color2 = Microsoft.Xna.Framework.Color.White * num4;
|
|
color2.A /= (byte) 2;
|
|
Microsoft.Xna.Framework.Color color3 = color2 * 0.5f;
|
|
float num6 = 1f;
|
|
float num7 = (float) (1.0 + (double) Main.rand.NextFloat() * 0.5);
|
|
float num8 = Main.rand.NextFloatDirection();
|
|
Vector2 scale = new Vector2(0.8f) * num7 * num6 * num5;
|
|
float num9 = (float) (20.0 + (double) MathHelper.Lerp(0.0f, 20f, num3) + (double) num7 * 16.0);
|
|
float f = (float) ((double) proj.rotation + (proj.direction == 1 ? 0.0 : 3.14159274101257) + (double) num8 * 6.28318548202515 * 0.0399999991059303);
|
|
float rotation = f + 1.570796f;
|
|
Vector2 position = vector2 + f.ToRotationVector2() * num9 + Main.rand.NextVector2Circular(20f, 20f) - Main.screenPosition;
|
|
Microsoft.Xna.Framework.Color color4 = color1 * num6;
|
|
Microsoft.Xna.Framework.Color color5 = color3 * num6;
|
|
SpriteEffects effects = SpriteEffects.None;
|
|
Main.spriteBatch.Draw(texture2D, position, new Microsoft.Xna.Framework.Rectangle?(), color4, rotation, origin, scale, effects, 0.0f);
|
|
Main.spriteBatch.Draw(texture2D, position, new Microsoft.Xna.Framework.Rectangle?(), color5, rotation, origin, scale * 0.8f, effects, 0.0f);
|
|
}
|
|
}
|
|
|
|
private void DrawProj_PiercingStarlight(Projectile proj)
|
|
{
|
|
int num1 = 3;
|
|
this.LoadProjectile(proj.type);
|
|
this.LoadItem(4923);
|
|
int num2 = 2;
|
|
Vector2 vector2_1 = proj.Center - proj.rotation.ToRotationVector2() * (float) num2;
|
|
for (int index = 0; index < 1; ++index)
|
|
{
|
|
float num3 = Main.rand.NextFloat();
|
|
float num4 = Utils.GetLerpValue(0.0f, 0.3f, num3, true) * Utils.GetLerpValue(1f, 0.5f, num3, true);
|
|
Microsoft.Xna.Framework.Color color = proj.GetAlpha(Lighting.GetColor(proj.Center.ToTileCoordinates())) * num4;
|
|
Texture2D texture2D = TextureAssets.Item[4923].Value;
|
|
Vector2 origin = texture2D.Size() / 2f;
|
|
float num5 = Main.rand.NextFloatDirection();
|
|
float num6 = (float) (8.0 + (double) MathHelper.Lerp(0.0f, 20f, num3) + (double) Main.rand.NextFloat() * 6.0);
|
|
float f = proj.rotation + (float) ((double) num5 * 6.28318548202515 * 0.0399999991059303);
|
|
float rotation = f + 0.7853982f;
|
|
Vector2 position = vector2_1 + f.ToRotationVector2() * num6 + Main.rand.NextVector2Circular(8f, 8f) - Main.screenPosition;
|
|
SpriteEffects effects = SpriteEffects.None;
|
|
if ((double) proj.rotation < -1.57079637050629 || (double) proj.rotation > 1.57079637050629)
|
|
{
|
|
rotation += 1.570796f;
|
|
effects |= SpriteEffects.FlipHorizontally;
|
|
}
|
|
Main.spriteBatch.Draw(texture2D, position, new Microsoft.Xna.Framework.Rectangle?(), color, rotation, origin, 1f, effects, 0.0f);
|
|
}
|
|
for (int index = 0; index < num1; ++index)
|
|
{
|
|
float num7 = Main.rand.NextFloat();
|
|
float num8 = Utils.GetLerpValue(0.0f, 0.3f, num7, true) * Utils.GetLerpValue(1f, 0.5f, num7, true);
|
|
float num9 = MathHelper.Lerp(0.6f, 1f, Utils.GetLerpValue(0.0f, 0.3f, num7, true) * Utils.GetLerpValue(1f, 0.5f, num7, true));
|
|
Microsoft.Xna.Framework.Color queenWeaponsColor = proj.GetFairyQueenWeaponsColor(0.25f, rawHueOverride: new float?((float) (((double) Main.rand.NextFloat() * 0.330000013113022 + (double) Main.GlobalTimeWrappedHourly) % 1.0)));
|
|
Texture2D texture2D = TextureAssets.Projectile[proj.type].Value;
|
|
Microsoft.Xna.Framework.Color color1 = queenWeaponsColor * (num8 * 0.5f);
|
|
Vector2 origin = texture2D.Size() / 2f;
|
|
Microsoft.Xna.Framework.Color color2 = Microsoft.Xna.Framework.Color.White * num8;
|
|
color2.A /= (byte) 2;
|
|
Microsoft.Xna.Framework.Color color3 = color2 * 0.5f;
|
|
float num10 = 1f;
|
|
float num11 = Main.rand.NextFloat() * 2f;
|
|
float num12 = Main.rand.NextFloatDirection();
|
|
Vector2 scale = new Vector2(2.8f + num11, 1f) * num10 * num9;
|
|
Vector2 vector2_2 = new Vector2((float) (1.5 + (double) num11 * 0.5), 1f) * num10 * num9;
|
|
int num13 = 50;
|
|
Vector2 vector2_3 = proj.rotation.ToRotationVector2() * (index >= 1 ? 56f : 0.0f);
|
|
float num14 = (float) (0.0299999993294477 - (double) index * 0.0120000001043081);
|
|
float num15 = (float) (30.0 + (double) MathHelper.Lerp(0.0f, (float) num13, num7) + (double) num11 * 16.0);
|
|
float f = proj.rotation + num12 * 6.283185f * num14;
|
|
float rotation = f;
|
|
Vector2 position = vector2_1 + f.ToRotationVector2() * num15 + Main.rand.NextVector2Circular(20f, 20f) + vector2_3 - Main.screenPosition;
|
|
Microsoft.Xna.Framework.Color color4 = color1 * num10;
|
|
Microsoft.Xna.Framework.Color color5 = color3 * num10;
|
|
SpriteEffects effects = SpriteEffects.None;
|
|
Main.spriteBatch.Draw(texture2D, position, new Microsoft.Xna.Framework.Rectangle?(), color4, rotation, origin, scale, effects, 0.0f);
|
|
Main.spriteBatch.Draw(texture2D, position, new Microsoft.Xna.Framework.Rectangle?(), color5, rotation, origin, scale * 0.6f, effects, 0.0f);
|
|
}
|
|
}
|
|
|
|
private void DrawProj_FairyQueenLance(Projectile proj)
|
|
{
|
|
Vector2 position = proj.Center - Main.screenPosition;
|
|
int num1 = 180 * 40 / 2;
|
|
Microsoft.Xna.Framework.Color color1 = proj.AI_171_GetColor();
|
|
Microsoft.Xna.Framework.Color color2 = color1;
|
|
color1.A = (byte) 0;
|
|
color2.A /= (byte) 2;
|
|
Texture2D texture2D1 = TextureAssets.Extra[178].Value;
|
|
Vector2 origin1 = texture2D1.Frame().Size() * new Vector2(0.0f, 0.5f);
|
|
Vector2 scale1 = new Vector2((float) (num1 / texture2D1.Width), 2f);
|
|
Vector2 scale2 = new Vector2((float) (num1 / texture2D1.Width) * 0.5f, 2f);
|
|
Microsoft.Xna.Framework.Color color3 = color1 * Utils.GetLerpValue(60f, 55f, proj.localAI[0], true) * Utils.GetLerpValue(0.0f, 10f, proj.localAI[0], true);
|
|
Main.spriteBatch.Draw(texture2D1, position, new Microsoft.Xna.Framework.Rectangle?(), color3, proj.rotation, origin1, scale2, SpriteEffects.None, 0.0f);
|
|
Main.spriteBatch.Draw(texture2D1, position, new Microsoft.Xna.Framework.Rectangle?(), color3 * 0.3f, proj.rotation, origin1, scale1, SpriteEffects.None, 0.0f);
|
|
Texture2D texture2D2 = TextureAssets.Projectile[proj.type].Value;
|
|
Vector2 origin2 = texture2D2.Frame().Size() / 2f;
|
|
Microsoft.Xna.Framework.Color color4 = Microsoft.Xna.Framework.Color.White * Utils.GetLerpValue(0.0f, 20f, proj.localAI[0], true);
|
|
color4.A /= (byte) 2;
|
|
float scale3 = MathHelper.Lerp(0.7f, 1f, Utils.GetLerpValue(55f, 60f, proj.localAI[0], true));
|
|
float lerpValue1 = Utils.GetLerpValue(10f, 60f, proj.localAI[0], false);
|
|
if ((double) lerpValue1 > 0.0)
|
|
{
|
|
float lerpValue2 = Utils.GetLerpValue(0.0f, 1f, proj.velocity.Length(), true);
|
|
for (float num2 = 1f; (double) num2 > 0.0; num2 -= 0.1666667f)
|
|
{
|
|
Vector2 vector2 = proj.rotation.ToRotationVector2() * -120f * num2 * lerpValue2;
|
|
Main.spriteBatch.Draw(texture2D2, position + vector2, new Microsoft.Xna.Framework.Rectangle?(), color1 * lerpValue1 * (1f - num2), proj.rotation, origin2, scale3, SpriteEffects.None, 0.0f);
|
|
Main.spriteBatch.Draw(texture2D2, position + vector2, new Microsoft.Xna.Framework.Rectangle?(), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0) * 0.15f * lerpValue1 * (1f - num2), proj.rotation, origin2, scale3 * 0.85f, SpriteEffects.None, 0.0f);
|
|
}
|
|
for (float num3 = 0.0f; (double) num3 < 1.0; num3 += 0.25f)
|
|
{
|
|
Vector2 vector2 = (num3 * 6.283185f + proj.rotation).ToRotationVector2() * 2f * scale3;
|
|
Main.spriteBatch.Draw(texture2D2, position + vector2, new Microsoft.Xna.Framework.Rectangle?(), color2 * lerpValue1, proj.rotation, origin2, scale3, SpriteEffects.None, 0.0f);
|
|
}
|
|
Main.spriteBatch.Draw(texture2D2, position, new Microsoft.Xna.Framework.Rectangle?(), color2 * lerpValue1, proj.rotation, origin2, scale3 * 1.1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
Main.spriteBatch.Draw(texture2D2, position, new Microsoft.Xna.Framework.Rectangle?(), color4, proj.rotation, origin2, scale3, SpriteEffects.None, 0.0f);
|
|
}
|
|
|
|
private void DrawProj_FairyQueenRangedItemShot(Projectile proj)
|
|
{
|
|
Vector2 position = proj.Center - Main.screenPosition;
|
|
Microsoft.Xna.Framework.Color queenWeaponsColor1 = proj.GetFairyQueenWeaponsColor(0.0f);
|
|
Microsoft.Xna.Framework.Color queenWeaponsColor2 = proj.GetFairyQueenWeaponsColor(0.5f);
|
|
Texture2D texture2D = TextureAssets.Projectile[proj.type].Value;
|
|
Vector2 origin = texture2D.Frame().Size() / 2f;
|
|
Microsoft.Xna.Framework.Color color = Microsoft.Xna.Framework.Color.White * proj.Opacity;
|
|
color.A /= (byte) 2;
|
|
float scale = MathHelper.Lerp(0.7f, 1f, Utils.GetLerpValue(0.0f, 5f, proj.ai[0], true));
|
|
float opacity = proj.Opacity;
|
|
if ((double) opacity > 0.0)
|
|
{
|
|
float lerpValue = Utils.GetLerpValue(0.0f, 1f, proj.velocity.Length(), true);
|
|
for (float num = 0.0f; (double) num < 1.0; num += 0.1666667f)
|
|
{
|
|
Vector2 vector2 = proj.rotation.ToRotationVector2() * -120f * num * lerpValue;
|
|
Main.spriteBatch.Draw(texture2D, position + vector2, new Microsoft.Xna.Framework.Rectangle?(), queenWeaponsColor1 * opacity * (1f - num), proj.rotation, origin, scale, SpriteEffects.None, 0.0f);
|
|
}
|
|
for (float num = 0.0f; (double) num < 1.0; num += 0.25f)
|
|
{
|
|
Vector2 vector2 = (num * 6.283185f + proj.rotation).ToRotationVector2() * 4f * scale;
|
|
Main.spriteBatch.Draw(texture2D, position + vector2, new Microsoft.Xna.Framework.Rectangle?(), queenWeaponsColor2 * opacity, proj.rotation, origin, scale, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
Main.spriteBatch.Draw(texture2D, position, new Microsoft.Xna.Framework.Rectangle?(), color, proj.rotation, origin, scale, SpriteEffects.None, 0.0f);
|
|
}
|
|
|
|
private void DrawProj_EmpressBlade(Projectile proj, float hueOverride)
|
|
{
|
|
Main.CurrentDrawnEntityShader = -1;
|
|
this.PrepareDrawnEntityDrawing((Entity) proj, Main.GetProjectileDesiredShader(proj.whoAmI));
|
|
Vector2 position = proj.Center - Main.screenPosition;
|
|
proj.GetFairyQueenWeaponsColor(0.0f, rawHueOverride: new float?(hueOverride));
|
|
Microsoft.Xna.Framework.Color queenWeaponsColor = proj.GetFairyQueenWeaponsColor(0.5f, rawHueOverride: new float?(hueOverride));
|
|
Texture2D texture2D = TextureAssets.Projectile[proj.type].Value;
|
|
Vector2 origin = texture2D.Frame().Size() / 2f;
|
|
Microsoft.Xna.Framework.Color color = Microsoft.Xna.Framework.Color.White * proj.Opacity;
|
|
color.A = (byte) ((double) color.A * 0.699999988079071);
|
|
queenWeaponsColor.A /= (byte) 2;
|
|
float scale = proj.scale;
|
|
float num1 = proj.rotation - 1.570796f;
|
|
float num2 = proj.Opacity * 0.3f;
|
|
if ((double) num2 > 0.0)
|
|
{
|
|
float lerpValue = Utils.GetLerpValue(60f, 50f, proj.ai[0], true);
|
|
float num3 = Utils.GetLerpValue(70f, 50f, proj.ai[0], true) * Utils.GetLerpValue(40f, 45f, proj.ai[0], true);
|
|
for (float num4 = 0.0f; (double) num4 < 1.0; num4 += 0.1666667f)
|
|
{
|
|
Vector2 vector2 = num1.ToRotationVector2() * -120f * num4 * lerpValue;
|
|
Main.EntitySpriteDraw(texture2D, position + vector2, new Microsoft.Xna.Framework.Rectangle?(), queenWeaponsColor * num2 * (1f - num4) * num3, num1, origin, scale * 1.5f, SpriteEffects.None, 0);
|
|
}
|
|
for (float num5 = 0.0f; (double) num5 < 1.0; num5 += 0.25f)
|
|
{
|
|
Vector2 vector2 = (num5 * 6.283185f + num1).ToRotationVector2() * 4f * scale;
|
|
Main.EntitySpriteDraw(texture2D, position + vector2, new Microsoft.Xna.Framework.Rectangle?(), queenWeaponsColor * num2, num1, origin, scale, SpriteEffects.None, 0);
|
|
}
|
|
}
|
|
Main.EntitySpriteDraw(texture2D, position, new Microsoft.Xna.Framework.Rectangle?(), color, num1, origin, scale, SpriteEffects.None, 0);
|
|
Main.EntitySpriteDraw(texture2D, position, new Microsoft.Xna.Framework.Rectangle?(), queenWeaponsColor * num2 * 0.5f, num1, origin, scale, SpriteEffects.None, 0);
|
|
}
|
|
|
|
private void DrawProj_CoolWhipMinion(Projectile proj)
|
|
{
|
|
Vector2 position = proj.Center - Main.screenPosition;
|
|
Microsoft.Xna.Framework.Color color1 = Microsoft.Xna.Framework.Color.White * 0.5f;
|
|
color1.A = (byte) 0;
|
|
Microsoft.Xna.Framework.Color color2 = color1;
|
|
color2.A = (byte) 127;
|
|
Texture2D texture2D = TextureAssets.Projectile[proj.type].Value;
|
|
Vector2 origin = texture2D.Frame().Size() / 2f;
|
|
Microsoft.Xna.Framework.Color color3 = Microsoft.Xna.Framework.Color.White * proj.Opacity;
|
|
color3.A /= (byte) 2;
|
|
int num1 = 1;
|
|
float opacity = proj.Opacity;
|
|
if ((double) opacity > 0.0)
|
|
{
|
|
for (float num2 = 0.0f; (double) num2 < 4.0; ++num2)
|
|
{
|
|
Vector2 vector2 = proj.velocity * -num2;
|
|
Main.spriteBatch.Draw(texture2D, position + vector2, new Microsoft.Xna.Framework.Rectangle?(), color1 * opacity * (float) ((4.0 - (double) num2) / 4.0), proj.rotation, origin, (float) num1, SpriteEffects.None, 0.0f);
|
|
}
|
|
for (float num3 = 0.0f; (double) num3 < 1.0; num3 += 0.25f)
|
|
{
|
|
Vector2 vector2 = (num3 * 6.283185f + proj.rotation).ToRotationVector2() * 4f * (float) num1;
|
|
Main.spriteBatch.Draw(texture2D, position + vector2, new Microsoft.Xna.Framework.Rectangle?(), color2 * opacity, proj.rotation, origin, (float) num1, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
Main.spriteBatch.Draw(texture2D, position, new Microsoft.Xna.Framework.Rectangle?(), color3, proj.rotation, origin, (float) num1, SpriteEffects.None, 0.0f);
|
|
}
|
|
|
|
private void DrawMurderAurora(Projectile proj)
|
|
{
|
|
Texture2D texture2D = TextureAssets.Projectile[proj.type].Value;
|
|
Vector2 origin = texture2D.Size() / 2f;
|
|
float num1 = (float) ((double) Main.GlobalTimeWrappedHourly % 10.0 / 10.0);
|
|
Vector2 vector2_1 = proj.Center - Main.screenPosition;
|
|
float[] numArray1 = new float[15];
|
|
float[] numArray2 = new float[15];
|
|
float[] numArray3 = new float[15];
|
|
float[] numArray4 = new float[15];
|
|
float[] numArray5 = new float[15];
|
|
int num2 = 210;
|
|
float num3 = Utils.GetLerpValue(0.0f, 60f, (float) proj.timeLeft, true) * Utils.GetLerpValue((float) num2, (float) (num2 - 60), (float) proj.timeLeft, true);
|
|
float num4 = MathHelper.Lerp(0.2f, 0.5f, Utils.GetLerpValue(0.0f, 60f, (float) proj.timeLeft, true) * Utils.GetLerpValue((float) num2, 90f, (float) proj.timeLeft, true));
|
|
double num5 = 800.0 / (double) texture2D.Width;
|
|
float num6 = (float) (num5 * 0.800000011920929);
|
|
float num7 = (float) ((num5 - (double) num6) / 15.0);
|
|
float num8 = 30f;
|
|
float num9 = 300f;
|
|
Vector2 vector2_2 = new Vector2(3f, 6f);
|
|
for (int index = 0; index < 15; ++index)
|
|
{
|
|
double num10 = (double) (index + 1) / 50.0;
|
|
float num11 = (float) Math.Sin((double) num1 * 6.28318548202515 + 1.57079637050629 + (double) index / 2.0);
|
|
numArray1[index] = num11 * (num9 - (float) index * 3f);
|
|
numArray2[index] = (float) Math.Sin((double) num1 * 6.28318548202515 * 2.0 + 1.04719758033752 + (double) index) * num8;
|
|
numArray2[index] -= (float) index * 3f;
|
|
numArray3[index] = (float) ((double) index / 15.0 * 2.0) + num1;
|
|
numArray3[index] = (float) (((double) num11 * 0.5 + 0.5) * 0.600000023841858) + num1;
|
|
numArray4[index] = (float) (1.0 - Math.Pow(1.0 * (double) index / 15.0, 2.0));
|
|
numArray5[index] = num6 + (float) (index + 1) * num7;
|
|
numArray5[index] *= 0.3f;
|
|
Microsoft.Xna.Framework.Color color = Main.hslToRgb(numArray3[index] % 1f, 1f, 0.5f) * num3 * num4;
|
|
color.A /= (byte) 4;
|
|
float rotation = (float) (1.57079637050629 + (double) num11 * 0.785398185253143 * -0.300000011920929 + 3.14159274101257 * (double) index);
|
|
Main.EntitySpriteDraw(texture2D, vector2_1 + new Vector2(numArray1[index], numArray2[index]), new Microsoft.Xna.Framework.Rectangle?(), color, rotation, origin, new Vector2(numArray5[index], numArray5[index]) * vector2_2, SpriteEffects.None, 0);
|
|
}
|
|
}
|
|
|
|
private void DrawWhip(Projectile proj)
|
|
{
|
|
List<Vector2> controlPoints = new List<Vector2>();
|
|
Projectile.FillWhipControlPoints(proj, controlPoints);
|
|
Texture2D texture2D = TextureAssets.FishingLine.Value;
|
|
Microsoft.Xna.Framework.Rectangle rectangle = texture2D.Frame();
|
|
Vector2 origin = new Vector2((float) (rectangle.Width / 2), 2f);
|
|
Microsoft.Xna.Framework.Color originalColor = Microsoft.Xna.Framework.Color.White;
|
|
switch (proj.type)
|
|
{
|
|
case 847:
|
|
originalColor = Microsoft.Xna.Framework.Color.OrangeRed;
|
|
break;
|
|
case 848:
|
|
originalColor = Microsoft.Xna.Framework.Color.DarkBlue;
|
|
break;
|
|
case 849:
|
|
Microsoft.Xna.Framework.Color slateBlue = Microsoft.Xna.Framework.Color.SlateBlue;
|
|
originalColor = Microsoft.Xna.Framework.Color.Black;
|
|
break;
|
|
case 912:
|
|
originalColor = Microsoft.Xna.Framework.Color.LightBlue;
|
|
break;
|
|
case 913:
|
|
originalColor = Microsoft.Xna.Framework.Color.Firebrick;
|
|
break;
|
|
case 914:
|
|
originalColor = Microsoft.Xna.Framework.Color.ForestGreen;
|
|
break;
|
|
case 915:
|
|
originalColor = Microsoft.Xna.Framework.Color.White;
|
|
break;
|
|
}
|
|
Vector2 vector2_1 = controlPoints[0];
|
|
for (int index = 0; index < controlPoints.Count - 1; ++index)
|
|
{
|
|
Vector2 vec = controlPoints[index];
|
|
Vector2 v = controlPoints[index + 1] - vec;
|
|
float rotation = v.ToRotation() - 1.570796f;
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor(vec.ToTileCoordinates(), originalColor);
|
|
Vector2 scale = new Vector2(1f, (v.Length() + 2f) / (float) rectangle.Height);
|
|
Main.spriteBatch.Draw(texture2D, vector2_1 - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(rectangle), color, rotation, origin, scale, SpriteEffects.None, 0.0f);
|
|
vector2_1 += v;
|
|
}
|
|
Vector2 vector2_2;
|
|
switch (proj.type)
|
|
{
|
|
case 841:
|
|
vector2_2 = Main.DrawWhip_WhipBland(proj, controlPoints);
|
|
break;
|
|
case 847:
|
|
vector2_2 = Main.DrawWhip_WhipSword(proj, controlPoints);
|
|
break;
|
|
case 848:
|
|
vector2_2 = Main.DrawWhip_WhipMace(proj, controlPoints);
|
|
break;
|
|
case 849:
|
|
vector2_2 = Main.DrawWhip_WhipScythe(proj, controlPoints);
|
|
break;
|
|
case 912:
|
|
vector2_2 = Main.DrawWhip_CoolWhip(proj, controlPoints);
|
|
break;
|
|
case 913:
|
|
vector2_2 = Main.DrawWhip_FireWhip(proj, controlPoints);
|
|
break;
|
|
case 914:
|
|
vector2_2 = Main.DrawWhip_ThornWhip(proj, controlPoints);
|
|
break;
|
|
case 915:
|
|
vector2_2 = Main.DrawWhip_RainbowWhip(proj, controlPoints);
|
|
break;
|
|
}
|
|
}
|
|
|
|
private static Vector2 DrawWhip_CoolWhip(Projectile proj, List<Vector2> controlPoints)
|
|
{
|
|
Texture2D texture2D = TextureAssets.Projectile[proj.type].Value;
|
|
Microsoft.Xna.Framework.Rectangle r = texture2D.Frame(verticalFrames: 5);
|
|
int height = r.Height;
|
|
r.Height -= 2;
|
|
Vector2 vector2 = r.Size() / 2f;
|
|
Vector2 controlPoint1 = controlPoints[0];
|
|
for (int index = 0; index < controlPoints.Count - 1; ++index)
|
|
{
|
|
bool flag = true;
|
|
Vector2 origin = vector2;
|
|
switch (index)
|
|
{
|
|
case 0:
|
|
origin.Y -= 4f;
|
|
break;
|
|
case 3:
|
|
case 5:
|
|
case 7:
|
|
r.Y = height;
|
|
break;
|
|
case 9:
|
|
case 11:
|
|
case 13:
|
|
r.Y = height * 2;
|
|
break;
|
|
case 15:
|
|
case 17:
|
|
r.Y = height * 3;
|
|
break;
|
|
case 19:
|
|
r.Y = height * 4;
|
|
break;
|
|
default:
|
|
flag = false;
|
|
break;
|
|
}
|
|
Vector2 controlPoint2 = controlPoints[index];
|
|
Vector2 v = controlPoints[index + 1] - controlPoint2;
|
|
if (flag)
|
|
{
|
|
float rotation = v.ToRotation() - 1.570796f;
|
|
Microsoft.Xna.Framework.Color alpha = proj.GetAlpha(Lighting.GetColor(controlPoint2.ToTileCoordinates()));
|
|
Main.spriteBatch.Draw(texture2D, controlPoint1 - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(r), alpha, rotation, origin, 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
controlPoint1 += v;
|
|
}
|
|
return controlPoint1;
|
|
}
|
|
|
|
private static Vector2 DrawWhip_FireWhip(Projectile proj, List<Vector2> controlPoints)
|
|
{
|
|
Texture2D texture2D = TextureAssets.Projectile[proj.type].Value;
|
|
Microsoft.Xna.Framework.Rectangle r = texture2D.Frame(verticalFrames: 5);
|
|
int height = r.Height;
|
|
r.Height -= 2;
|
|
Vector2 vector2 = r.Size() / 2f;
|
|
Vector2 controlPoint1 = controlPoints[0];
|
|
for (int index = 0; index < controlPoints.Count - 1; ++index)
|
|
{
|
|
bool flag = true;
|
|
Vector2 origin = vector2;
|
|
switch (index)
|
|
{
|
|
case 0:
|
|
origin.Y -= 4f;
|
|
break;
|
|
case 3:
|
|
case 5:
|
|
case 7:
|
|
r.Y = height;
|
|
break;
|
|
case 9:
|
|
case 11:
|
|
case 13:
|
|
r.Y = height * 2;
|
|
break;
|
|
case 15:
|
|
case 17:
|
|
r.Y = height * 3;
|
|
break;
|
|
case 19:
|
|
r.Y = height * 4;
|
|
break;
|
|
default:
|
|
flag = false;
|
|
break;
|
|
}
|
|
Vector2 controlPoint2 = controlPoints[index];
|
|
Vector2 v = controlPoints[index + 1] - controlPoint2;
|
|
if (flag)
|
|
{
|
|
float rotation = v.ToRotation() - 1.570796f;
|
|
Microsoft.Xna.Framework.Color alpha = proj.GetAlpha(Lighting.GetColor(controlPoint2.ToTileCoordinates()));
|
|
Main.spriteBatch.Draw(texture2D, controlPoint1 - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(r), alpha, rotation, origin, 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
controlPoint1 += v;
|
|
}
|
|
return controlPoint1;
|
|
}
|
|
|
|
private static Vector2 DrawWhip_RainbowWhip(Projectile proj, List<Vector2> controlPoints)
|
|
{
|
|
Texture2D texture2D = TextureAssets.Projectile[proj.type].Value;
|
|
Microsoft.Xna.Framework.Rectangle r = texture2D.Frame(verticalFrames: 5);
|
|
int height = r.Height;
|
|
r.Height -= 2;
|
|
Vector2 vector2 = r.Size() / 2f;
|
|
Vector2 controlPoint1 = controlPoints[0];
|
|
float counterNormalized = Main.player[proj.owner].miscCounterNormalized;
|
|
for (int index = 0; index < controlPoints.Count - 1; ++index)
|
|
{
|
|
bool flag = true;
|
|
Vector2 origin = vector2;
|
|
switch (index)
|
|
{
|
|
case 0:
|
|
origin.Y -= 4f;
|
|
break;
|
|
case 39:
|
|
r.Y = height * 4;
|
|
break;
|
|
default:
|
|
flag = index % 2 == 0;
|
|
r.Y = height * (1 + index % 3);
|
|
break;
|
|
}
|
|
Vector2 controlPoint2 = controlPoints[index];
|
|
Vector2 v = controlPoints[index + 1] - controlPoint2;
|
|
if (flag)
|
|
{
|
|
Microsoft.Xna.Framework.Color rgb = Main.hslToRgb((float) (((double) counterNormalized * 5.0 + (double) index * 0.0500000007450581) % 1.0), 1f, 0.5f);
|
|
Microsoft.Xna.Framework.Color color1 = rgb;
|
|
float lerpValue = Utils.GetLerpValue((float) (controlPoints.Count - 10), (float) (controlPoints.Count - 2), (float) index, true);
|
|
float scale = MathHelper.Lerp(1f, 1f, lerpValue);
|
|
color1.A /= (byte) 2;
|
|
color1.A = (byte) ((double) color1.A * (double) lerpValue);
|
|
float rotation = v.ToRotation() - 1.570796f;
|
|
Microsoft.Xna.Framework.Color color2 = Lighting.GetColor(controlPoint2.ToTileCoordinates());
|
|
Main.spriteBatch.Draw(texture2D, controlPoint1 - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(r), Microsoft.Xna.Framework.Color.Lerp(color2, color1, 0.5f), rotation, origin, scale, SpriteEffects.None, 0.0f);
|
|
color1.A = (byte) 0;
|
|
Main.spriteBatch.Draw(texture2D, controlPoint1 - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(r), color1 * 0.1f, rotation, origin, scale * 1.2f, SpriteEffects.None, 0.0f);
|
|
if (index == 39)
|
|
{
|
|
color1 = rgb;
|
|
color1.A = (byte) 127;
|
|
Main.spriteBatch.Draw(texture2D, controlPoint1 - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(r), color1 * 0.3f, rotation, origin, scale * 1.4f, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
controlPoint1 += v;
|
|
}
|
|
return controlPoint1;
|
|
}
|
|
|
|
private static Vector2 DrawWhip_ThornWhip(Projectile proj, List<Vector2> controlPoints)
|
|
{
|
|
Texture2D texture2D = TextureAssets.Projectile[proj.type].Value;
|
|
Microsoft.Xna.Framework.Rectangle r = texture2D.Frame(verticalFrames: 5);
|
|
int height = r.Height;
|
|
r.Height -= 2;
|
|
Vector2 vector2 = r.Size() / 2f;
|
|
Vector2 controlPoint1 = controlPoints[0];
|
|
for (int index = 0; index < controlPoints.Count - 1; ++index)
|
|
{
|
|
bool flag = true;
|
|
Vector2 origin = vector2;
|
|
float scale = 1f;
|
|
switch (index)
|
|
{
|
|
case 0:
|
|
origin.Y -= 4f;
|
|
break;
|
|
case 19:
|
|
r.Y = height * 4;
|
|
scale = 1.1f;
|
|
break;
|
|
default:
|
|
r.Y = height * (1 + index % 3);
|
|
scale = 0.8f;
|
|
break;
|
|
}
|
|
Vector2 controlPoint2 = controlPoints[index];
|
|
Vector2 v = controlPoints[index + 1] - controlPoint2;
|
|
if (flag)
|
|
{
|
|
float rotation = v.ToRotation() - 1.570796f;
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor(controlPoint2.ToTileCoordinates());
|
|
Main.spriteBatch.Draw(texture2D, controlPoint1 - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(r), color, rotation, origin, scale, SpriteEffects.None, 0.0f);
|
|
}
|
|
controlPoint1 += v;
|
|
}
|
|
return controlPoint1;
|
|
}
|
|
|
|
private static Vector2 DrawWhip_WhipSword(Projectile proj, List<Vector2> controlPoints)
|
|
{
|
|
Texture2D texture2D = TextureAssets.Projectile[proj.type].Value;
|
|
Microsoft.Xna.Framework.Rectangle r = texture2D.Frame(verticalFrames: 5);
|
|
int height = r.Height;
|
|
r.Height -= 2;
|
|
Vector2 vector2 = r.Size() / 2f;
|
|
Vector2 controlPoint1 = controlPoints[0];
|
|
for (int index = 0; index < controlPoints.Count - 1; ++index)
|
|
{
|
|
bool flag = true;
|
|
Vector2 origin = vector2;
|
|
switch (index)
|
|
{
|
|
case 0:
|
|
origin.Y -= 4f;
|
|
break;
|
|
case 3:
|
|
case 5:
|
|
case 7:
|
|
r.Y = height;
|
|
break;
|
|
case 9:
|
|
case 11:
|
|
case 13:
|
|
r.Y = height * 2;
|
|
break;
|
|
case 15:
|
|
case 17:
|
|
r.Y = height * 3;
|
|
break;
|
|
case 19:
|
|
r.Y = height * 4;
|
|
break;
|
|
default:
|
|
flag = false;
|
|
break;
|
|
}
|
|
Vector2 controlPoint2 = controlPoints[index];
|
|
Vector2 v = controlPoints[index + 1] - controlPoint2;
|
|
if (flag)
|
|
{
|
|
float rotation = v.ToRotation() - 1.570796f;
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor(controlPoint2.ToTileCoordinates());
|
|
Main.spriteBatch.Draw(texture2D, controlPoint1 - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(r), color, rotation, origin, 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
controlPoint1 += v;
|
|
}
|
|
return controlPoint1;
|
|
}
|
|
|
|
private static Vector2 DrawWhip_WhipMace(Projectile proj, List<Vector2> controlPoints)
|
|
{
|
|
SpriteEffects effects = SpriteEffects.None;
|
|
if (proj.spriteDirection == 1)
|
|
effects ^= SpriteEffects.FlipHorizontally;
|
|
Texture2D texture2D = TextureAssets.Projectile[proj.type].Value;
|
|
Microsoft.Xna.Framework.Rectangle r = texture2D.Frame(verticalFrames: 5);
|
|
int height = r.Height;
|
|
r.Height -= 2;
|
|
Vector2 vector2 = r.Size() / 2f;
|
|
Vector2 controlPoint1 = controlPoints[0];
|
|
for (int index = 0; index < controlPoints.Count - 1; ++index)
|
|
{
|
|
bool flag = false;
|
|
Vector2 origin = vector2;
|
|
float scale = 1f;
|
|
if (index == 0)
|
|
{
|
|
origin.Y -= 4f;
|
|
flag = true;
|
|
}
|
|
else if (index % 2 == 0)
|
|
{
|
|
flag = true;
|
|
int num = 1;
|
|
if (index > 10)
|
|
num = 2;
|
|
if (index > 20)
|
|
num = 3;
|
|
r.Y = height * num;
|
|
}
|
|
if (index == controlPoints.Count - 2)
|
|
{
|
|
flag = true;
|
|
r.Y = height * 4;
|
|
float timeToFlyOut;
|
|
Projectile.GetWhipSettings(proj, out timeToFlyOut, out int _, out float _);
|
|
float t = proj.ai[0] / timeToFlyOut;
|
|
scale = MathHelper.Lerp(0.5f, 2f, Utils.GetLerpValue(0.1f, 0.7f, t, true) * Utils.GetLerpValue(0.9f, 0.7f, t, true));
|
|
}
|
|
Vector2 controlPoint2 = controlPoints[index];
|
|
Vector2 v = controlPoints[index + 1] - controlPoint2;
|
|
if (flag)
|
|
{
|
|
float rotation = v.ToRotation() - 1.570796f;
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor(controlPoint2.ToTileCoordinates());
|
|
Main.spriteBatch.Draw(texture2D, controlPoint1 - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(r), color, rotation, origin, scale, effects, 0.0f);
|
|
}
|
|
controlPoint1 += v;
|
|
}
|
|
return controlPoint1;
|
|
}
|
|
|
|
private static Vector2 DrawWhip_WhipScythe(Projectile proj, List<Vector2> controlPoints)
|
|
{
|
|
SpriteEffects effects = SpriteEffects.None;
|
|
if (proj.spriteDirection == 1)
|
|
effects ^= SpriteEffects.FlipHorizontally;
|
|
Texture2D texture2D = TextureAssets.Projectile[proj.type].Value;
|
|
Microsoft.Xna.Framework.Rectangle r = texture2D.Frame(verticalFrames: 5);
|
|
int height = r.Height;
|
|
r.Height -= 2;
|
|
Vector2 vector2 = r.Size() / 2f;
|
|
Vector2 controlPoint1 = controlPoints[0];
|
|
for (int index = 0; index < controlPoints.Count - 1; ++index)
|
|
{
|
|
bool flag = false;
|
|
Vector2 origin = vector2;
|
|
float scale = 1f;
|
|
if (index == 0)
|
|
{
|
|
origin.Y -= 4f;
|
|
flag = true;
|
|
}
|
|
else if (index % 2 == 0)
|
|
{
|
|
flag = true;
|
|
int num = 1;
|
|
if (index > 10)
|
|
num = 2;
|
|
if (index > 20)
|
|
num = 3;
|
|
r.Y = height * num;
|
|
}
|
|
if (index == controlPoints.Count - 2)
|
|
{
|
|
flag = true;
|
|
r.Y = height * 4;
|
|
float timeToFlyOut;
|
|
Projectile.GetWhipSettings(proj, out timeToFlyOut, out int _, out float _);
|
|
float t = proj.ai[0] / timeToFlyOut;
|
|
scale = MathHelper.Lerp(0.5f, 1.5f, Utils.GetLerpValue(0.1f, 0.7f, t, true) * Utils.GetLerpValue(0.9f, 0.7f, t, true));
|
|
}
|
|
Vector2 controlPoint2 = controlPoints[index];
|
|
Vector2 v = controlPoints[index + 1] - controlPoint2;
|
|
if (flag)
|
|
{
|
|
float rotation = v.ToRotation() - 1.570796f;
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor(controlPoint2.ToTileCoordinates());
|
|
Main.spriteBatch.Draw(texture2D, controlPoint1 - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(r), color, rotation, origin, scale, effects, 0.0f);
|
|
}
|
|
controlPoint1 += v;
|
|
}
|
|
return controlPoint1;
|
|
}
|
|
|
|
private static Vector2 DrawWhip_WhipBland(Projectile proj, List<Vector2> controlPoints)
|
|
{
|
|
SpriteEffects effects = SpriteEffects.None;
|
|
if (proj.spriteDirection == 1)
|
|
effects ^= SpriteEffects.FlipHorizontally;
|
|
Texture2D texture2D = TextureAssets.Projectile[proj.type].Value;
|
|
Microsoft.Xna.Framework.Rectangle r = texture2D.Frame(verticalFrames: 5);
|
|
int height = r.Height;
|
|
r.Height -= 2;
|
|
Vector2 vector2 = r.Size() / 2f;
|
|
Vector2 controlPoint1 = controlPoints[0];
|
|
for (int index = 0; index < controlPoints.Count - 1; ++index)
|
|
{
|
|
Vector2 origin = vector2;
|
|
float scale = 1f;
|
|
bool flag;
|
|
if (index == 0)
|
|
{
|
|
origin.Y -= 4f;
|
|
flag = true;
|
|
}
|
|
else
|
|
{
|
|
flag = true;
|
|
int num = 1;
|
|
if (index > 10)
|
|
num = 2;
|
|
if (index > 20)
|
|
num = 3;
|
|
r.Y = height * num;
|
|
}
|
|
if (index == controlPoints.Count - 2)
|
|
{
|
|
flag = true;
|
|
r.Y = height * 4;
|
|
float timeToFlyOut;
|
|
Projectile.GetWhipSettings(proj, out timeToFlyOut, out int _, out float _);
|
|
float t = proj.ai[0] / timeToFlyOut;
|
|
scale = MathHelper.Lerp(0.5f, 1.5f, Utils.GetLerpValue(0.1f, 0.7f, t, true) * Utils.GetLerpValue(0.9f, 0.7f, t, true));
|
|
}
|
|
Vector2 controlPoint2 = controlPoints[index];
|
|
Vector2 v = controlPoints[index + 1] - controlPoint2;
|
|
if (flag)
|
|
{
|
|
float rotation = v.ToRotation() - 1.570796f;
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor(controlPoint2.ToTileCoordinates());
|
|
Main.spriteBatch.Draw(texture2D, controlPoint1 - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(r), color, rotation, origin, scale, effects, 0.0f);
|
|
}
|
|
controlPoint1 += v;
|
|
}
|
|
return controlPoint1;
|
|
}
|
|
|
|
private void DrawWhipOld(Projectile proj)
|
|
{
|
|
List<Vector2> vector2List = new List<Vector2>();
|
|
float num1 = 100f;
|
|
float num2 = proj.ai[0] / num1;
|
|
if ((double) num2 <= 1.0)
|
|
{
|
|
float num3 = (float) (12.5663709640503 * (1.0 - (double) num2) * (double) -proj.spriteDirection / 20.0);
|
|
float num4 = (float) ((double) proj.velocity.Length() * ((double) proj.ai[0] - 1.0) / 20.0);
|
|
float num5 = num2;
|
|
Vector2 vector2_1 = Main.player[proj.owner].Center;
|
|
Vector2 vector2_2 = vector2_1;
|
|
float f1 = proj.rotation - 1.570796f;
|
|
float f2 = (float) ((double) proj.rotation - 1.57079637050629 + 1.57079637050629 * (double) proj.spriteDirection);
|
|
for (int index = 0; index < 20; ++index)
|
|
{
|
|
float num6 = (float) index / 20f;
|
|
Vector2 vector2_3 = vector2_1 + f1.ToRotationVector2() * num4;
|
|
Vector2 vector2_4 = vector2_2 + f2.ToRotationVector2() * (num4 * 2f);
|
|
float num7 = num3 * num6 * num5;
|
|
f1 += num7;
|
|
f2 += num7;
|
|
vector2List.Add(Vector2.Lerp(vector2_4, vector2_3, (float) ((double) num2 * 0.5 + 0.5)));
|
|
vector2_1 = vector2_3;
|
|
vector2_2 = vector2_4;
|
|
}
|
|
}
|
|
Texture2D texture2D = TextureAssets.FishingLine.Value;
|
|
Microsoft.Xna.Framework.Rectangle rectangle = texture2D.Frame();
|
|
Vector2 origin = new Vector2((float) (rectangle.Width / 2), 2f);
|
|
for (int index = 0; index < vector2List.Count - 1; ++index)
|
|
{
|
|
Vector2 vector2 = vector2List[index];
|
|
Vector2 Target = vector2List[index + 1];
|
|
float rotation = vector2.DirectionTo(Target).ToRotation() - 1.570796f;
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor(vector2.ToTileCoordinates());
|
|
Vector2 scale = new Vector2(1f, ((Target - vector2).Length() + 2f) / (float) rectangle.Height);
|
|
Main.spriteBatch.Draw(texture2D, vector2 - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(rectangle), color, rotation, origin, scale, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
|
|
private void DrawTwinsPet(Projectile proj)
|
|
{
|
|
Texture2D texture2D = TextureAssets.Projectile[proj.type].Value;
|
|
SpriteEffects effects = proj.spriteDirection == 1 ? SpriteEffects.None : SpriteEffects.FlipHorizontally;
|
|
Microsoft.Xna.Framework.Rectangle r = texture2D.Frame(verticalFrames: Main.projFrames[proj.type], frameY: proj.frame);
|
|
Vector2 origin = r.Size() / 2f;
|
|
Vector2 vector2 = proj.Center - Main.screenPosition;
|
|
Microsoft.Xna.Framework.Color alpha = proj.GetAlpha(Lighting.GetColor(proj.Center.ToTileCoordinates()));
|
|
Vector2 position1 = vector2 + (Main.GlobalTimeWrappedHourly * 2f).ToRotationVector2() * 18f;
|
|
Main.EntitySpriteDraw(texture2D, position1, new Microsoft.Xna.Framework.Rectangle?(r), alpha, proj.rotation, origin, proj.scale, effects, 0);
|
|
Vector2 position2 = vector2 - (Main.GlobalTimeWrappedHourly * 2f).ToRotationVector2() * 18f;
|
|
Microsoft.Xna.Framework.Rectangle rectangle = texture2D.Frame(verticalFrames: Main.projFrames[proj.type], frameY: (proj.frame + 18));
|
|
Main.EntitySpriteDraw(texture2D, position2, new Microsoft.Xna.Framework.Rectangle?(rectangle), alpha, proj.rotation, origin, proj.scale, effects, 0);
|
|
}
|
|
|
|
private void DrawMultisegmentPet(Projectile proj)
|
|
{
|
|
Texture2D texture2D = TextureAssets.Projectile[proj.type].Value;
|
|
Texture2D texture = (Texture2D) null;
|
|
if (proj.type == 887)
|
|
texture = TextureAssets.GlowMask[275].Value;
|
|
int num1 = 5;
|
|
int num2 = 16;
|
|
switch (proj.type)
|
|
{
|
|
case 883:
|
|
num1 = 5;
|
|
num2 = 16;
|
|
break;
|
|
case 887:
|
|
num1 = 6;
|
|
num2 = 16;
|
|
break;
|
|
case 893:
|
|
num1 = 8;
|
|
num2 = 20;
|
|
break;
|
|
}
|
|
SpriteEffects effects1 = proj.spriteDirection == 1 ? SpriteEffects.None : SpriteEffects.FlipHorizontally;
|
|
Microsoft.Xna.Framework.Rectangle r = texture2D.Frame(verticalFrames: Main.projFrames[proj.type]);
|
|
Vector2 origin = r.Size() / 2f;
|
|
Vector2 position1 = proj.Center - Main.screenPosition;
|
|
Microsoft.Xna.Framework.Color alpha = proj.GetAlpha(Lighting.GetColor(proj.Center.ToTileCoordinates()));
|
|
Microsoft.Xna.Framework.Color color = Microsoft.Xna.Framework.Color.White * ((float) Main.mouseTextColor / (float) byte.MaxValue);
|
|
Vector2 vector2_1 = proj.Center;
|
|
int num3 = 1;
|
|
int num4 = Main.projFrames[proj.type] - 1;
|
|
for (int index = 1; index < num1; ++index)
|
|
{
|
|
int frameY = num3;
|
|
if (index == num1 - 1)
|
|
frameY = num4;
|
|
else if (proj.type == 893 && index != 2 && index != 5)
|
|
frameY = 2;
|
|
Microsoft.Xna.Framework.Rectangle rectangle = texture2D.Frame(verticalFrames: Main.projFrames[proj.type], frameY: frameY);
|
|
Vector2 vector2_2 = proj.oldPos[index * 10] + proj.Size / 2f;
|
|
float rotation1 = (vector2_1 - vector2_2).ToRotation();
|
|
Vector2 vec = vector2_1 - new Vector2((float) num2, 0.0f).RotatedBy((double) rotation1, Vector2.Zero);
|
|
float rotation2 = (vector2_1 - vec).ToRotation() + 1.570796f;
|
|
Vector2 position2 = vec - Main.screenPosition;
|
|
SpriteEffects effects2 = (double) vec.X < (double) vector2_1.X ? SpriteEffects.None : SpriteEffects.FlipHorizontally;
|
|
vector2_1 = vec;
|
|
Main.EntitySpriteDraw(texture2D, position2, new Microsoft.Xna.Framework.Rectangle?(rectangle), proj.GetAlpha(Lighting.GetColor(vec.ToTileCoordinates())), rotation2, origin, proj.scale, effects2, 0);
|
|
if (texture != null)
|
|
Main.EntitySpriteDraw(texture, position2, new Microsoft.Xna.Framework.Rectangle?(rectangle), proj.GetAlpha(color), rotation2, origin, proj.scale, effects2, 0);
|
|
}
|
|
Main.EntitySpriteDraw(texture2D, position1, new Microsoft.Xna.Framework.Rectangle?(r), alpha, proj.rotation, origin, proj.scale, effects1, 0);
|
|
if (texture == null)
|
|
return;
|
|
Main.EntitySpriteDraw(texture, position1, new Microsoft.Xna.Framework.Rectangle?(r), color, proj.rotation, origin, proj.scale, effects1, 0);
|
|
}
|
|
|
|
private void DrawKite(Projectile proj)
|
|
{
|
|
Texture2D texture2D1 = TextureAssets.Projectile[proj.type].Value;
|
|
Texture2D texture2D2 = TextureAssets.Extra[103].Value;
|
|
int horizontalFrames = 15;
|
|
float num1 = 0.0f;
|
|
int num2 = 10;
|
|
int num3 = 5;
|
|
float num4 = 10f;
|
|
float num5 = 0.0f;
|
|
int num6 = -14;
|
|
int num7 = -2;
|
|
int num8 = -1;
|
|
int num9 = -1;
|
|
int num10 = 8;
|
|
int num11 = 0;
|
|
int num12 = 1;
|
|
int num13 = 0;
|
|
int num14 = 0;
|
|
bool flag1 = true;
|
|
bool flag2 = false;
|
|
switch (proj.type)
|
|
{
|
|
case 766:
|
|
case 767:
|
|
case 768:
|
|
case 769:
|
|
case 770:
|
|
num11 = (proj.type - 766) * 3 + 3;
|
|
break;
|
|
case 771:
|
|
texture2D2 = TextureAssets.Extra[104].Value;
|
|
horizontalFrames = 12;
|
|
num11 = 12;
|
|
num1 = proj.spriteDirection == 1 ? 1.570796f : -1.570796f;
|
|
num2 = 12;
|
|
num4 = 22f;
|
|
num5 += 0.3926991f * (float) proj.spriteDirection;
|
|
num6 = -8;
|
|
num7 = -6;
|
|
num8 = 10;
|
|
num9 = 8;
|
|
num10 = 12;
|
|
break;
|
|
case 822:
|
|
texture2D2 = TextureAssets.Extra[132].Value;
|
|
horizontalFrames = 7;
|
|
num11 = 7;
|
|
num1 = proj.spriteDirection == 1 ? 1.570796f : -1.570796f;
|
|
num2 = 7;
|
|
num4 = 22f;
|
|
num5 += 0.2617994f * (float) proj.spriteDirection;
|
|
num6 = -20;
|
|
num7 = -6;
|
|
num10 = 12;
|
|
break;
|
|
case 823:
|
|
case 846:
|
|
texture2D2 = TextureAssets.Extra[133].Value;
|
|
if (proj.type == 846)
|
|
texture2D2 = TextureAssets.Extra[146].Value;
|
|
horizontalFrames = 6;
|
|
num11 = 6;
|
|
num1 = proj.spriteDirection == 1 ? 1.570796f : -1.570796f;
|
|
num2 = 6;
|
|
num4 = 40f;
|
|
num5 += 0.2617994f * (float) proj.spriteDirection;
|
|
num6 = -16;
|
|
num7 = -10;
|
|
num10 = 30;
|
|
break;
|
|
case 824:
|
|
case 826:
|
|
case 839:
|
|
case 840:
|
|
case 853:
|
|
num12 = 0;
|
|
break;
|
|
case 827:
|
|
case 844:
|
|
texture2D2 = TextureAssets.Extra[135].Value;
|
|
if (proj.type == 844)
|
|
texture2D2 = TextureAssets.Extra[144].Value;
|
|
horizontalFrames = 4;
|
|
num11 = 3;
|
|
num1 = proj.spriteDirection == 1 ? 1.570796f : -1.570796f;
|
|
num2 = 16;
|
|
num4 = 10f;
|
|
num5 += 0.2617994f * (float) proj.spriteDirection;
|
|
num7 = -4;
|
|
num3 = 4;
|
|
flag2 = true;
|
|
break;
|
|
case 828:
|
|
case 829:
|
|
texture2D2 = TextureAssets.Extra[136].Value;
|
|
if (proj.type == 829)
|
|
texture2D2 = TextureAssets.Extra[137].Value;
|
|
horizontalFrames = 2;
|
|
num11 = 1;
|
|
num1 = proj.spriteDirection == 1 ? 1.570796f : -1.570796f;
|
|
num2 = 6;
|
|
num4 = 10f;
|
|
num5 += 0.2617994f * (float) proj.spriteDirection;
|
|
num10 = 10;
|
|
num7 = -4;
|
|
num12 = 3;
|
|
flag1 = false;
|
|
flag2 = true;
|
|
break;
|
|
case 830:
|
|
case 838:
|
|
texture2D2 = TextureAssets.Extra[138].Value;
|
|
if (proj.type == 838)
|
|
texture2D2 = TextureAssets.Extra[139].Value;
|
|
horizontalFrames = 3;
|
|
num11 = 3;
|
|
num1 = proj.spriteDirection == 1 ? 1.570796f : -1.570796f;
|
|
num2 = 3;
|
|
num4 = 60f;
|
|
num9 = 40;
|
|
num8 = 3;
|
|
num5 += 0.2617994f * (float) proj.spriteDirection;
|
|
num10 = 50;
|
|
num7 = -20;
|
|
num13 = -10;
|
|
break;
|
|
case 843:
|
|
texture2D2 = TextureAssets.Extra[140].Value;
|
|
horizontalFrames = 2;
|
|
num11 = 2;
|
|
num1 = proj.spriteDirection == 1 ? 1.570796f : -1.570796f;
|
|
num2 = 2;
|
|
num4 = 30f;
|
|
num5 += 0.2617994f * (float) proj.spriteDirection;
|
|
num10 = 20;
|
|
num7 = -16;
|
|
num13 = -10;
|
|
break;
|
|
case 845:
|
|
texture2D2 = TextureAssets.Extra[145].Value;
|
|
horizontalFrames = 3;
|
|
num11 = 3;
|
|
num1 = proj.spriteDirection == 1 ? 1.570796f : -1.570796f;
|
|
num2 = 3;
|
|
num4 = 42f;
|
|
num9 = 50;
|
|
num8 = 2;
|
|
num5 += 0.2617994f * (float) proj.spriteDirection;
|
|
num10 = 30;
|
|
num7 = -8;
|
|
num13 = -10;
|
|
break;
|
|
case 850:
|
|
texture2D2 = TextureAssets.Extra[147].Value;
|
|
horizontalFrames = 8;
|
|
num11 = 8;
|
|
num1 = proj.spriteDirection == 1 ? 1.570796f : -1.570796f;
|
|
num2 = 8;
|
|
num4 = 22f;
|
|
num5 += 0.2617994f * (float) proj.spriteDirection;
|
|
num6 = -20;
|
|
num7 = -38;
|
|
num10 = 12;
|
|
num13 = 6;
|
|
num14 = 2;
|
|
flag1 = false;
|
|
break;
|
|
case 852:
|
|
texture2D2 = TextureAssets.Extra[148].Value;
|
|
horizontalFrames = 2;
|
|
num11 = 1;
|
|
num1 = proj.spriteDirection == 1 ? 1.570796f : -1.570796f;
|
|
num2 = 6;
|
|
num4 = 10f;
|
|
num5 += 0.2617994f * (float) proj.spriteDirection;
|
|
num10 = 10;
|
|
num7 = -4;
|
|
num12 = 4;
|
|
flag1 = false;
|
|
flag2 = true;
|
|
break;
|
|
}
|
|
SpriteEffects effects = proj.spriteDirection == 1 ? SpriteEffects.None : SpriteEffects.FlipHorizontally;
|
|
Microsoft.Xna.Framework.Rectangle r1 = texture2D1.Frame(Main.projFrames[proj.type], frameX: proj.frame);
|
|
Vector2 origin1 = r1.Size() / 2f;
|
|
Vector2 position = proj.Center - Main.screenPosition;
|
|
Microsoft.Xna.Framework.Color color1 = Lighting.GetColor(proj.Center.ToTileCoordinates());
|
|
Microsoft.Xna.Framework.Color alpha = proj.GetAlpha(color1);
|
|
Texture2D texture2D3 = TextureAssets.FishingLine.Value;
|
|
Microsoft.Xna.Framework.Rectangle rectangle1 = texture2D3.Frame();
|
|
Vector2 origin2 = new Vector2((float) (rectangle1.Width / 2), 2f);
|
|
Microsoft.Xna.Framework.Rectangle r2 = texture2D2.Frame(horizontalFrames);
|
|
int width = r2.Width;
|
|
r2.Width -= 2;
|
|
Vector2 origin3 = r2.Size() / 2f;
|
|
r2.X = width * (horizontalFrames - 1);
|
|
Vector2 playerArmPosition = Main.GetPlayerArmPosition(proj);
|
|
Vector2 center = proj.Center;
|
|
double num15 = (double) Vector2.Distance(center, playerArmPosition);
|
|
float num16 = 12f;
|
|
Vector2 vector2_1 = (playerArmPosition - center).SafeNormalize(Vector2.Zero) * num16;
|
|
Vector2 vector2_2 = playerArmPosition;
|
|
Vector2 v1 = center - vector2_2;
|
|
Vector2 velocity = proj.velocity;
|
|
if ((double) Math.Abs(velocity.X) > (double) Math.Abs(velocity.Y))
|
|
Utils.Swap<float>(ref velocity.X, ref velocity.Y);
|
|
float num17 = v1.Length();
|
|
float num18 = 16f;
|
|
float num19 = 80f;
|
|
bool flag3 = true;
|
|
if ((double) num17 == 0.0)
|
|
{
|
|
flag3 = false;
|
|
}
|
|
else
|
|
{
|
|
Vector2 vector2_3 = v1 * (12f / num17);
|
|
vector2_2 -= vector2_3;
|
|
v1 = center - vector2_2;
|
|
}
|
|
while (flag3)
|
|
{
|
|
float num20 = 12f;
|
|
float f = v1.Length();
|
|
float num21 = f;
|
|
if (float.IsNaN(f) || (double) f == 0.0)
|
|
{
|
|
flag3 = false;
|
|
}
|
|
else
|
|
{
|
|
if ((double) f < 20.0)
|
|
{
|
|
num20 = f - 8f;
|
|
flag3 = false;
|
|
}
|
|
float num22 = 12f / f;
|
|
Vector2 vector2_4 = v1 * num22;
|
|
vector2_2 += vector2_4;
|
|
v1 = center - vector2_2;
|
|
if ((double) num21 > 12.0)
|
|
{
|
|
float num23 = 0.3f;
|
|
float num24 = Math.Abs(velocity.X) + Math.Abs(velocity.Y);
|
|
if ((double) num24 > (double) num18)
|
|
num24 = num18;
|
|
float num25 = (float) (1.0 - (double) num24 / (double) num18);
|
|
float num26 = num23 * num25;
|
|
float num27 = num21 / num19;
|
|
if ((double) num27 > 1.0)
|
|
num27 = 1f;
|
|
float num28 = num26 * num27;
|
|
if ((double) num28 < 0.0)
|
|
num28 = 0.0f;
|
|
float num29 = 1f;
|
|
float num30 = num28 * num29;
|
|
if ((double) v1.Y > 0.0)
|
|
{
|
|
v1.Y *= 1f + num30;
|
|
v1.X *= 1f - num30;
|
|
}
|
|
else
|
|
{
|
|
float num31 = Math.Abs(velocity.X) / 3f;
|
|
if ((double) num31 > 1.0)
|
|
num31 = 1f;
|
|
float num32 = num31 - 0.5f;
|
|
float num33 = num30 * num32;
|
|
if ((double) num33 > 0.0)
|
|
num33 *= 2f;
|
|
v1.Y *= 1f + num33;
|
|
v1.X *= 1f - num33;
|
|
}
|
|
}
|
|
float rotation = v1.ToRotation() - 1.570796f;
|
|
if (!flag3)
|
|
rectangle1.Height = (int) num20;
|
|
Microsoft.Xna.Framework.Color color2 = Lighting.GetColor(center.ToTileCoordinates());
|
|
Main.EntitySpriteDraw(texture2D3, vector2_2 - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(rectangle1), color2, rotation, origin2, 1f, SpriteEffects.None, 0);
|
|
}
|
|
}
|
|
Vector2 vector2_5 = proj.Size / 2f;
|
|
float num34 = Math.Abs(Main.WindForVisuals);
|
|
float num35 = MathHelper.Lerp(0.5f, 1f, num34);
|
|
float num36 = num34;
|
|
if ((double) v1.Y >= -0.0199999995529652 && (double) v1.Y < 1.0)
|
|
num36 = Utils.GetLerpValue(0.2f, 0.5f, num34, true);
|
|
int num37 = num3;
|
|
int num38 = num2 + 1;
|
|
for (int index1 = 0; index1 < num12; ++index1)
|
|
{
|
|
r2.X = width * (horizontalFrames - 1);
|
|
List<Vector2> vector2List = new List<Vector2>();
|
|
Vector2 vector2_6 = new Vector2(num35 * (float) num10 * (float) proj.spriteDirection, (float) Math.Sin(Main.timeForVisualEffects / 300.0 * 6.28318548202515) * num36) * 2f;
|
|
float num39 = (float) (num6 + num13);
|
|
float y = (float) (num7 + num14);
|
|
switch (index1)
|
|
{
|
|
case 1:
|
|
vector2_6 = new Vector2(num35 * (float) num10 * (float) proj.spriteDirection, (float) (Math.Sin(Main.timeForVisualEffects / 300.0 * 6.28318548202515) * (double) num36 + 0.5)) * 2f;
|
|
num39 -= 8f;
|
|
y -= 8f;
|
|
break;
|
|
case 2:
|
|
vector2_6 = new Vector2(num35 * (float) num10 * (float) proj.spriteDirection, (float) (Math.Sin(Main.timeForVisualEffects / 300.0 * 6.28318548202515) * (double) num36 + 1.0)) * 2f;
|
|
num39 -= 4f;
|
|
y -= 4f;
|
|
break;
|
|
case 3:
|
|
vector2_6 = new Vector2(num35 * (float) num10 * (float) proj.spriteDirection, (float) (Math.Sin(Main.timeForVisualEffects / 300.0 * 6.28318548202515) * (double) num36 + 1.5)) * 2f;
|
|
num39 -= 12f;
|
|
y -= 12f;
|
|
break;
|
|
}
|
|
Vector2 vector2_7 = proj.Center + new Vector2(((float) r1.Width * 0.5f + num39) * (float) proj.spriteDirection, y).RotatedBy((double) proj.rotation + (double) num5);
|
|
vector2List.Add(vector2_7);
|
|
int index2 = num37;
|
|
int num40 = 1;
|
|
while (index2 < num38 * num37)
|
|
{
|
|
if (num8 != -1 && num8 == num40)
|
|
num4 = (float) num9;
|
|
Vector2 oldPo = proj.oldPos[index2];
|
|
if ((double) oldPo.X == 0.0 && (double) oldPo.Y == 0.0)
|
|
{
|
|
vector2List.Add(vector2_7);
|
|
}
|
|
else
|
|
{
|
|
Vector2 vector2_8 = oldPo + (vector2_5 + new Vector2(((float) r1.Width * 0.5f + num39) * (float) proj.oldSpriteDirection[index2], y).RotatedBy((double) proj.oldRot[index2] + (double) num5)) + vector2_6 * (float) (num40 + 1);
|
|
Vector2 vector2_9 = vector2_7 - vector2_8;
|
|
float num41 = vector2_9.Length();
|
|
if ((double) num41 > (double) num4)
|
|
vector2_9 *= num4 / num41;
|
|
Vector2 vector2_10 = vector2_7 - vector2_9;
|
|
vector2List.Add(vector2_10);
|
|
vector2_7 = vector2_10;
|
|
}
|
|
index2 += num37;
|
|
++num40;
|
|
}
|
|
if (flag1)
|
|
{
|
|
Microsoft.Xna.Framework.Rectangle rectangle2 = texture2D3.Frame();
|
|
for (int index3 = vector2List.Count - 2; index3 >= 0; --index3)
|
|
{
|
|
Vector2 vector2_11 = vector2List[index3];
|
|
Vector2 v2 = vector2List[index3 + 1] - vector2_11;
|
|
float num42 = v2.Length();
|
|
if ((double) num42 >= 2.0)
|
|
{
|
|
float rotation = v2.ToRotation() - 1.570796f;
|
|
Main.EntitySpriteDraw(texture2D3, vector2_11 - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(rectangle2), alpha, rotation, origin2, new Vector2(1f, num42 / (float) rectangle2.Height), SpriteEffects.None, 0);
|
|
}
|
|
}
|
|
}
|
|
for (int index4 = vector2List.Count - 2; index4 >= 0; --index4)
|
|
{
|
|
Vector2 vector2_12 = vector2List[index4];
|
|
Vector2 vector2_13 = vector2List[index4 + 1];
|
|
Vector2 v3 = vector2_13 - vector2_12;
|
|
double num43 = (double) v3.Length();
|
|
float rotation = v3.ToRotation() - 1.570796f + num1;
|
|
Main.EntitySpriteDraw(texture2D2, vector2_13 - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(r2), alpha, rotation, origin3, proj.scale, effects, 0);
|
|
r2.X -= width;
|
|
if (r2.X < 0)
|
|
{
|
|
int num44 = num11;
|
|
if (flag2)
|
|
--num44;
|
|
r2.X = num44 * width;
|
|
}
|
|
}
|
|
}
|
|
Main.EntitySpriteDraw(texture2D1, position, new Microsoft.Xna.Framework.Rectangle?(r1), alpha, proj.rotation + num5, origin1, proj.scale, effects, 0);
|
|
}
|
|
|
|
public static Vector2 GetPlayerArmPosition(Projectile proj)
|
|
{
|
|
Player player = Main.player[proj.owner];
|
|
Vector2 vector2_1 = Main.OffsetsPlayerOnhand[player.bodyFrame.Y / 56] * 2f;
|
|
if (player.direction != 1)
|
|
vector2_1.X = (float) player.bodyFrame.Width - vector2_1.X;
|
|
if ((double) player.gravDir != 1.0)
|
|
vector2_1.Y = (float) player.bodyFrame.Height - vector2_1.Y;
|
|
Vector2 vector2_2 = vector2_1 - new Vector2((float) (player.bodyFrame.Width - player.width), (float) (player.bodyFrame.Height - 42)) / 2f;
|
|
return player.RotatedRelativePoint(player.MountedCenter - new Vector2(20f, 42f) / 2f + vector2_2 + Vector2.UnitY * player.gfxOffY);
|
|
}
|
|
|
|
private void DrawProjWithStarryTrail(Projectile proj, Microsoft.Xna.Framework.Color projectileColor, SpriteEffects dir)
|
|
{
|
|
Microsoft.Xna.Framework.Color color1 = new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, (int) projectileColor.A - proj.alpha);
|
|
Vector2 v = proj.velocity;
|
|
Microsoft.Xna.Framework.Color color2 = Microsoft.Xna.Framework.Color.Blue * 0.1f;
|
|
Vector2 spinningpoint = new Vector2(0.0f, -4f);
|
|
float num1 = 0.0f;
|
|
float num2 = Utils.GetLerpValue(3f, 5f, v.Length(), true);
|
|
bool flag = true;
|
|
if (proj.type == 856 || proj.type == 857)
|
|
{
|
|
Vector2 vector2 = proj.position - proj.oldPos[1];
|
|
float num3 = vector2.Length();
|
|
v = (double) num3 != 0.0 ? vector2 * (5f / num3) : Vector2.UnitY;
|
|
Vector2 Origin = new Vector2(proj.ai[0], proj.ai[1]);
|
|
Vector2 center = Main.player[proj.owner].Center;
|
|
float lerpValue1 = Utils.GetLerpValue(0.0f, 120f, Origin.Distance(center), true);
|
|
float from = 90f;
|
|
if (proj.type == 857)
|
|
{
|
|
from = 60f;
|
|
flag = false;
|
|
}
|
|
float lerpValue2 = Utils.GetLerpValue(from, from * 0.8333333f, proj.localAI[0], true);
|
|
float lerpValue3 = Utils.GetLerpValue(0.0f, 120f, proj.Center.Distance(center), true);
|
|
float num4 = lerpValue1 * lerpValue3;
|
|
float num5 = lerpValue2 * Utils.GetLerpValue(0.0f, 15f, proj.localAI[0], true);
|
|
color2 = Microsoft.Xna.Framework.Color.HotPink * 0.15f * (num5 * num4);
|
|
if (proj.type == 857)
|
|
color2 = proj.GetFirstFractalColor() * 0.15f * (num5 * num4);
|
|
spinningpoint = new Vector2(0.0f, -2f);
|
|
num1 = ((float) (-0.300000011920929 * (1.0 - (double) (Utils.GetLerpValue(from, from * 0.6666667f, proj.localAI[0], true) * Utils.GetLerpValue(0.0f, 20f, proj.localAI[0], true)))) + -1f * Utils.GetLerpValue(15f, 0.0f, proj.localAI[0], true)) * num4;
|
|
num2 = num5 * num4;
|
|
}
|
|
Vector2 vector2_1 = proj.Center + v;
|
|
Texture2D texture2D1 = TextureAssets.Projectile[proj.type].Value;
|
|
Vector2 vector2_2 = new Microsoft.Xna.Framework.Rectangle(0, 0, texture2D1.Width, texture2D1.Height).Size() / 2f;
|
|
Texture2D texture2D2 = TextureAssets.Extra[91].Value;
|
|
Microsoft.Xna.Framework.Rectangle rectangle = texture2D2.Frame();
|
|
Vector2 origin1 = new Vector2((float) rectangle.Width / 2f, 10f);
|
|
Microsoft.Xna.Framework.Color color3 = Microsoft.Xna.Framework.Color.Cyan * 0.5f * num2;
|
|
Vector2 vector2_3 = new Vector2(0.0f, proj.gfxOffY);
|
|
float num6 = (float) Main.timeForVisualEffects / 60f;
|
|
Vector2 vector2_4 = vector2_1 + v * 0.5f;
|
|
Microsoft.Xna.Framework.Color color4 = Microsoft.Xna.Framework.Color.White * 0.5f * num2;
|
|
color4.A = (byte) 0;
|
|
Microsoft.Xna.Framework.Color color5 = color2 * num2;
|
|
color5.A = (byte) 0;
|
|
Microsoft.Xna.Framework.Color color6 = color2 * num2;
|
|
color6.A = (byte) 0;
|
|
Microsoft.Xna.Framework.Color color7 = color2 * num2;
|
|
color7.A = (byte) 0;
|
|
float rotation1 = v.ToRotation();
|
|
Main.EntitySpriteDraw(texture2D2, vector2_4 - Main.screenPosition + vector2_3 + spinningpoint.RotatedBy(6.28318548202515 * (double) num6), new Microsoft.Xna.Framework.Rectangle?(rectangle), color5, rotation1 + 1.570796f, origin1, 1.5f + num1, SpriteEffects.None, 0);
|
|
Main.EntitySpriteDraw(texture2D2, vector2_4 - Main.screenPosition + vector2_3 + spinningpoint.RotatedBy(6.28318548202515 * (double) num6 + 2.09439516067505), new Microsoft.Xna.Framework.Rectangle?(rectangle), color6, rotation1 + 1.570796f, origin1, 1.1f + num1, SpriteEffects.None, 0);
|
|
Main.EntitySpriteDraw(texture2D2, vector2_4 - Main.screenPosition + vector2_3 + spinningpoint.RotatedBy(6.28318548202515 * (double) num6 + 4.1887903213501), new Microsoft.Xna.Framework.Rectangle?(rectangle), color7, rotation1 + 1.570796f, origin1, 1.3f + num1, SpriteEffects.None, 0);
|
|
Vector2 vector2_5 = vector2_1 - v * 0.5f;
|
|
for (float num7 = 0.0f; (double) num7 < 1.0; num7 += 0.5f)
|
|
{
|
|
float num8 = (float) (((double) num6 % 0.5 / 0.5 + (double) num7) % 1.0);
|
|
float num9 = num8 * 2f;
|
|
if ((double) num9 > 1.0)
|
|
num9 = 2f - num9;
|
|
Main.EntitySpriteDraw(texture2D2, vector2_5 - Main.screenPosition + vector2_3, new Microsoft.Xna.Framework.Rectangle?(rectangle), color4 * num9, rotation1 + 1.570796f, origin1, (float) (0.300000011920929 + (double) num8 * 0.5), SpriteEffects.None, 0);
|
|
}
|
|
if (!flag)
|
|
return;
|
|
float rotation2 = proj.rotation + proj.localAI[1];
|
|
double num10 = Main.timeForVisualEffects / 240.0;
|
|
double timeWrappedHourly = (double) Main.GlobalTimeWrappedHourly;
|
|
float num11 = Main.GlobalTimeWrappedHourly % 5f / 2.5f;
|
|
if ((double) num11 >= 1.0)
|
|
num11 = 2f - num11;
|
|
float num12 = (float) ((double) num11 * 0.5 + 0.5);
|
|
Vector2 position = proj.Center - Main.screenPosition;
|
|
Main.instance.LoadItem(75);
|
|
Texture2D texture2D3 = TextureAssets.Item[75].Value;
|
|
Microsoft.Xna.Framework.Rectangle r = texture2D3.Frame(verticalFrames: 8);
|
|
Vector2 origin2 = r.Size() / 2f;
|
|
Main.EntitySpriteDraw(texture2D3, position, new Microsoft.Xna.Framework.Rectangle?(r), color1, rotation2, origin2, proj.scale, SpriteEffects.None, 0);
|
|
}
|
|
|
|
private static int TryInteractingWithVoidLens(Projectile proj)
|
|
{
|
|
if (Main.gamePaused || Main.gameMenu)
|
|
return 0;
|
|
bool flag1 = !Main.SmartCursorEnabled && !PlayerInput.UsingGamepad;
|
|
Player localPlayer = Main.LocalPlayer;
|
|
Microsoft.Xna.Framework.Point tileCoordinates = proj.Center.ToTileCoordinates();
|
|
Vector2 center = localPlayer.Center;
|
|
if (!localPlayer.IsProjectileInteractibleAndInInteractionRange(proj, ref center))
|
|
return 0;
|
|
Matrix matrix1 = Matrix.Invert(Main.GameViewMatrix.ZoomMatrix);
|
|
Vector2 position = Main.ReverseGravitySupport(Main.MouseScreen);
|
|
Vector2.Transform(Main.screenPosition, matrix1);
|
|
Matrix matrix2 = matrix1;
|
|
Vector2 v = Vector2.Transform(position, matrix2) + Main.screenPosition;
|
|
bool flag2 = proj.Hitbox.Contains(v.ToPoint());
|
|
if (((flag2 ? 1 : (Main.SmartInteractProj == proj.whoAmI ? 1 : 0)) & (!localPlayer.lastMouseInterface ? 1 : 0)) == 0)
|
|
return !flag1 ? 1 : 0;
|
|
Main.HasInteractibleObjectThatIsNotATile = true;
|
|
if (flag2)
|
|
{
|
|
localPlayer.noThrow = 2;
|
|
localPlayer.cursorItemIconEnabled = true;
|
|
localPlayer.cursorItemIconID = 4131;
|
|
}
|
|
if (PlayerInput.UsingGamepad)
|
|
localPlayer.GamepadEnableGrappleCooldown();
|
|
if (Main.mouseRight && Main.mouseRightRelease && Player.BlockInteractionWithProjectiles == 0)
|
|
{
|
|
Main.mouseRightRelease = false;
|
|
localPlayer.tileInteractAttempted = true;
|
|
localPlayer.tileInteractionHappened = true;
|
|
localPlayer.releaseUseTile = false;
|
|
if (localPlayer.chest == -5)
|
|
{
|
|
localPlayer.chest = -1;
|
|
SoundEngine.PlaySound(SoundID.Item130);
|
|
Recipe.FindRecipes();
|
|
}
|
|
else
|
|
{
|
|
localPlayer.chest = -5;
|
|
for (int index = 0; index < 40; ++index)
|
|
ItemSlot.SetGlow(index, -1f, true);
|
|
localPlayer.voidLensChest = proj.whoAmI;
|
|
localPlayer.chestX = tileCoordinates.X;
|
|
localPlayer.chestY = tileCoordinates.Y;
|
|
localPlayer.SetTalkNPC(-1);
|
|
Main.SetNPCShopIndex(0);
|
|
Main.playerInventory = true;
|
|
SoundEngine.PlaySound(SoundID.Item130);
|
|
Recipe.FindRecipes();
|
|
}
|
|
}
|
|
return !Main.SmartCursorEnabled && !PlayerInput.UsingGamepad || flag1 ? 0 : 2;
|
|
}
|
|
|
|
private static int TryInteractingWithMoneyTrough(Projectile proj)
|
|
{
|
|
if (Main.gamePaused || Main.gameMenu)
|
|
return 0;
|
|
bool flag1 = !Main.SmartCursorEnabled && !PlayerInput.UsingGamepad;
|
|
Player localPlayer = Main.LocalPlayer;
|
|
Microsoft.Xna.Framework.Point tileCoordinates = proj.Center.ToTileCoordinates();
|
|
Vector2 center = localPlayer.Center;
|
|
if (!localPlayer.IsProjectileInteractibleAndInInteractionRange(proj, ref center))
|
|
return 0;
|
|
Matrix matrix1 = Matrix.Invert(Main.GameViewMatrix.ZoomMatrix);
|
|
Vector2 position = Main.ReverseGravitySupport(Main.MouseScreen);
|
|
Vector2.Transform(Main.screenPosition, matrix1);
|
|
Matrix matrix2 = matrix1;
|
|
Vector2 v = Vector2.Transform(position, matrix2) + Main.screenPosition;
|
|
bool flag2 = proj.Hitbox.Contains(v.ToPoint());
|
|
if (((flag2 ? 1 : (Main.SmartInteractProj == proj.whoAmI ? 1 : 0)) & (!localPlayer.lastMouseInterface ? 1 : 0)) == 0)
|
|
return !flag1 ? 1 : 0;
|
|
Main.HasInteractibleObjectThatIsNotATile = true;
|
|
if (flag2)
|
|
{
|
|
localPlayer.noThrow = 2;
|
|
localPlayer.cursorItemIconEnabled = true;
|
|
localPlayer.cursorItemIconID = 3213;
|
|
}
|
|
if (PlayerInput.UsingGamepad)
|
|
localPlayer.GamepadEnableGrappleCooldown();
|
|
if (Main.mouseRight && Main.mouseRightRelease && Player.BlockInteractionWithProjectiles == 0)
|
|
{
|
|
Main.mouseRightRelease = false;
|
|
localPlayer.tileInteractAttempted = true;
|
|
localPlayer.tileInteractionHappened = true;
|
|
localPlayer.releaseUseTile = false;
|
|
if (localPlayer.chest == -2)
|
|
{
|
|
localPlayer.chest = -1;
|
|
SoundEngine.PlaySound(SoundID.Item59);
|
|
Recipe.FindRecipes();
|
|
}
|
|
else
|
|
{
|
|
localPlayer.chest = -2;
|
|
for (int index = 0; index < 40; ++index)
|
|
ItemSlot.SetGlow(index, -1f, true);
|
|
localPlayer.flyingPigChest = proj.whoAmI;
|
|
localPlayer.chestX = tileCoordinates.X;
|
|
localPlayer.chestY = tileCoordinates.Y;
|
|
localPlayer.SetTalkNPC(-1);
|
|
Main.SetNPCShopIndex(0);
|
|
Main.playerInventory = true;
|
|
SoundEngine.PlaySound(SoundID.Item59);
|
|
Recipe.FindRecipes();
|
|
}
|
|
}
|
|
return !Main.SmartCursorEnabled && !PlayerInput.UsingGamepad || flag1 ? 0 : 2;
|
|
}
|
|
|
|
public static void PrintTimedMessage(string message, params object[] arguments) => Console.WriteLine(string.Format("{0} {1}", (object) (int) Main.time, (object) string.Format(message, arguments)));
|
|
|
|
private static void TryInteractingWithMoneyTrough2(Projectile proj)
|
|
{
|
|
if (Main.gamePaused && !Main.gameMenu)
|
|
return;
|
|
Vector2 vector2 = proj.position - Main.screenPosition;
|
|
if ((double) Main.mouseX <= (double) vector2.X || (double) Main.mouseX >= (double) vector2.X + (double) proj.width || (double) Main.mouseY <= (double) vector2.Y || (double) Main.mouseY >= (double) vector2.Y + (double) proj.height)
|
|
return;
|
|
int num1 = (int) ((double) Main.player[Main.myPlayer].Center.X / 16.0);
|
|
int num2 = (int) ((double) Main.player[Main.myPlayer].Center.Y / 16.0);
|
|
int num3 = (int) proj.Center.X / 16;
|
|
int num4 = (int) proj.Center.Y / 16;
|
|
int lastTileRangeX = Main.player[Main.myPlayer].lastTileRangeX;
|
|
int lastTileRangeY = Main.player[Main.myPlayer].lastTileRangeY;
|
|
if (num1 < num3 - lastTileRangeX || num1 > num3 + lastTileRangeX + 1 || num2 < num4 - lastTileRangeY || num2 > num4 + lastTileRangeY + 1)
|
|
return;
|
|
Player localPlayer = Main.LocalPlayer;
|
|
Main.player[Main.myPlayer].noThrow = 2;
|
|
Main.player[Main.myPlayer].cursorItemIconEnabled = true;
|
|
Main.player[Main.myPlayer].cursorItemIconID = 3213;
|
|
if (PlayerInput.UsingGamepad)
|
|
Main.player[Main.myPlayer].GamepadEnableGrappleCooldown();
|
|
if (!Main.mouseRight || !Main.mouseRightRelease || Player.BlockInteractionWithProjectiles != 0)
|
|
return;
|
|
Main.mouseRightRelease = false;
|
|
localPlayer.tileInteractAttempted = true;
|
|
localPlayer.tileInteractionHappened = true;
|
|
localPlayer.releaseUseTile = false;
|
|
if (Main.player[Main.myPlayer].chest == -2)
|
|
{
|
|
SoundEngine.PlaySound(SoundID.Item59);
|
|
Main.player[Main.myPlayer].chest = -1;
|
|
Recipe.FindRecipes();
|
|
}
|
|
else
|
|
{
|
|
Main.player[Main.myPlayer].flyingPigChest = proj.whoAmI;
|
|
Main.player[Main.myPlayer].chest = -2;
|
|
Main.player[Main.myPlayer].chestX = (int) ((double) proj.Center.X / 16.0);
|
|
Main.player[Main.myPlayer].chestY = (int) ((double) proj.Center.Y / 16.0);
|
|
Main.player[Main.myPlayer].SetTalkNPC(-1);
|
|
Main.SetNPCShopIndex(0);
|
|
Main.playerInventory = true;
|
|
SoundEngine.PlaySound(SoundID.Item59);
|
|
Recipe.FindRecipes();
|
|
}
|
|
}
|
|
|
|
public void PrepareDrawnEntityDrawing(Entity entity, int intendedShader)
|
|
{
|
|
Main.CurrentDrawnEntity = entity;
|
|
if (intendedShader != 0)
|
|
{
|
|
if (Main.CurrentDrawnEntityShader == 0 || Main.CurrentDrawnEntityShader == -1)
|
|
{
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, Main.DefaultSamplerState, DepthStencilState.None, Main.Rasterizer, (Effect) null, Main.Transform);
|
|
}
|
|
}
|
|
else if (Main.CurrentDrawnEntityShader != 0 && Main.CurrentDrawnEntityShader != -1)
|
|
{
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, Main.DefaultSamplerState, DepthStencilState.None, Main.Rasterizer, (Effect) null, Main.Transform);
|
|
}
|
|
Main.CurrentDrawnEntityShader = intendedShader;
|
|
}
|
|
|
|
public static void EntitySpriteDraw(
|
|
Texture2D texture,
|
|
Vector2 position,
|
|
Microsoft.Xna.Framework.Rectangle? sourceRectangle,
|
|
Microsoft.Xna.Framework.Color color,
|
|
float rotation,
|
|
Vector2 origin,
|
|
float scale,
|
|
SpriteEffects effects,
|
|
int worthless)
|
|
{
|
|
Main.EntitySpriteDraw(texture, position, sourceRectangle, color, rotation, origin, new Vector2(scale), effects, worthless);
|
|
}
|
|
|
|
public static void EntitySpriteDraw(
|
|
Texture2D texture,
|
|
Vector2 position,
|
|
Microsoft.Xna.Framework.Rectangle? sourceRectangle,
|
|
Microsoft.Xna.Framework.Color color,
|
|
float rotation,
|
|
Vector2 origin,
|
|
Vector2 scale,
|
|
SpriteEffects effects,
|
|
int worthless)
|
|
{
|
|
if (Main.CurrentDrawnEntityShader > 0)
|
|
{
|
|
DrawData drawData = new DrawData(texture, position, sourceRectangle, color, rotation, origin, scale, effects, worthless);
|
|
GameShaders.Armor.Apply(Main.CurrentDrawnEntityShader, Main.CurrentDrawnEntity, new DrawData?(drawData));
|
|
drawData.Draw(Main.spriteBatch);
|
|
}
|
|
else
|
|
Main.spriteBatch.Draw(texture, position, sourceRectangle, color, rotation, origin, scale, effects, (float) worthless);
|
|
}
|
|
|
|
public static void EntitySpriteDraw(DrawData data)
|
|
{
|
|
if (Main.CurrentDrawnEntityShader > 0)
|
|
{
|
|
GameShaders.Armor.Apply(Main.CurrentDrawnEntityShader, Main.CurrentDrawnEntity, new DrawData?(data));
|
|
data.Draw(Main.spriteBatch);
|
|
}
|
|
else
|
|
data.Draw(Main.spriteBatch);
|
|
}
|
|
|
|
public static Microsoft.Xna.Framework.Color buffColor(
|
|
Microsoft.Xna.Framework.Color newColor,
|
|
float R,
|
|
float G,
|
|
float B,
|
|
float A)
|
|
{
|
|
newColor.R = (byte) ((double) newColor.R * (double) R);
|
|
newColor.G = (byte) ((double) newColor.G * (double) G);
|
|
newColor.B = (byte) ((double) newColor.B * (double) B);
|
|
newColor.A = (byte) ((double) newColor.A * (double) A);
|
|
return newColor;
|
|
}
|
|
|
|
protected void CacheNPCDraws()
|
|
{
|
|
this.DrawCacheNPCsMoonMoon.Clear();
|
|
this.DrawCacheNPCsOverPlayers.Clear();
|
|
this.DrawCacheNPCProjectiles.Clear();
|
|
this.DrawCacheNPCsBehindNonSolidTiles.Clear();
|
|
for (int index1 = 0; index1 < 200; ++index1)
|
|
{
|
|
if (Main.npc[index1].active)
|
|
{
|
|
if (Main.npc[index1].type == 398 && (double) Main.npc[index1].ai[0] >= 0.0)
|
|
{
|
|
int num1 = index1;
|
|
int num2 = -1;
|
|
int num3 = -1;
|
|
int num4 = -1;
|
|
for (int index2 = 0; index2 < 200; ++index2)
|
|
{
|
|
if (Main.npc[index2].active && (double) Main.npc[index2].ai[3] == (double) num1)
|
|
{
|
|
if (num2 == -1 && Main.npc[index2].type == 397 && (double) Main.npc[index2].ai[2] == 0.0)
|
|
num2 = index2;
|
|
if (num3 == -1 && Main.npc[index2].type == 397 && (double) Main.npc[index2].ai[2] == 1.0)
|
|
num3 = index2;
|
|
if (num4 == -1 && Main.npc[index2].type == 396)
|
|
num4 = index2;
|
|
if (num2 != -1 && num3 != -1 && num4 != -1)
|
|
break;
|
|
}
|
|
}
|
|
if (num2 != -1 && num3 != -1 && num4 != -1)
|
|
{
|
|
this.DrawCacheNPCsMoonMoon.Add(num1);
|
|
if (num2 != -1)
|
|
this.DrawCacheNPCsMoonMoon.Add(num2);
|
|
if (num3 != -1)
|
|
this.DrawCacheNPCsMoonMoon.Add(num3);
|
|
if (num4 != -1)
|
|
this.DrawCacheNPCsMoonMoon.Add(num4);
|
|
}
|
|
}
|
|
else if (Main.npc[index1].type == 421 && (double) Main.npc[index1].ai[0] == 5.0)
|
|
this.DrawCacheNPCsOverPlayers.Add(index1);
|
|
else if (Main.npc[index1].type == 516 || Main.npc[index1].type == 519)
|
|
this.DrawCacheNPCProjectiles.Add(index1);
|
|
else if (Main.npc[index1].type == 548)
|
|
this.DrawCacheNPCsBehindNonSolidTiles.Add(index1);
|
|
}
|
|
}
|
|
}
|
|
|
|
protected void CacheProjDraws()
|
|
{
|
|
this.DrawCacheProjsBehindNPCsAndTiles.Clear();
|
|
this.DrawCacheProjsBehindNPCs.Clear();
|
|
this.DrawCacheProjsBehindProjectiles.Clear();
|
|
this.DrawCacheProjsOverWiresUI.Clear();
|
|
this.DrawCacheProjsOverPlayers.Clear();
|
|
this.DrawCacheFirstFractals.Clear();
|
|
for (int index1 = 0; index1 < 1000; ++index1)
|
|
{
|
|
if (Main.projectile[index1].active)
|
|
{
|
|
if (Main.projectile[index1].type == 857)
|
|
this.DrawCacheFirstFractals.Add(index1);
|
|
if (Main.projectile[index1].type == 578 || Main.projectile[index1].type == 579 || Main.projectile[index1].type == 641 || Main.projectile[index1].type == 617 || Main.projectile[index1].type == 813)
|
|
this.DrawCacheProjsBehindNPCsAndTiles.Add(index1);
|
|
if (Main.projectile[index1].type == 625 || Main.projectile[index1].type == 626 || Main.projectile[index1].type == 627 || Main.projectile[index1].type == 628 || Main.projectile[index1].type == 525 || Main.projectile[index1].type == 734 || Main.projectile[index1].type == 946 || Main.projectile[index1].type == 908 && (double) Main.projectile[index1].localAI[0] <= 0.0)
|
|
this.DrawCacheProjsBehindProjectiles.Add(index1);
|
|
if (Main.projectile[index1].type == 759 || Main.projectile[index1].type == 908 && (double) Main.projectile[index1].localAI[0] > 0.0)
|
|
this.DrawCacheProjsOverPlayers.Add(index1);
|
|
if (Main.projectile[index1].type == 651)
|
|
this.DrawCacheProjsOverWiresUI.Add(index1);
|
|
if (Main.projectile[index1].type == 673 || Main.projectile[index1].type == 674 || Main.projectile[index1].type == 691 || Main.projectile[index1].type == 692 || Main.projectile[index1].type == 693 || Main.projectile[index1].type == 923)
|
|
this.DrawCacheProjsBehindNPCs.Add(index1);
|
|
if (Main.projectile[index1].type == 636 || Main.projectile[index1].type == 598)
|
|
{
|
|
bool flag = true;
|
|
if ((double) Main.projectile[index1].ai[0] == 1.0)
|
|
{
|
|
int index2 = (int) Main.projectile[index1].ai[1];
|
|
if (index2 >= 0 && index2 < 200 && Main.npc[index2].active && Main.npc[index2].type != 492)
|
|
{
|
|
if (Main.npc[index2].behindTiles)
|
|
this.DrawCacheProjsBehindNPCsAndTiles.Add(index1);
|
|
else
|
|
this.DrawCacheProjsBehindNPCs.Add(index1);
|
|
flag = false;
|
|
}
|
|
}
|
|
if (flag)
|
|
this.DrawCacheProjsBehindProjectiles.Add(index1);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
protected void DrawCachedNPCs(List<int> npcCache, bool behindTiles)
|
|
{
|
|
for (int index = 0; index < npcCache.Count; ++index)
|
|
{
|
|
try
|
|
{
|
|
this.DrawNPC(npcCache[index], behindTiles);
|
|
}
|
|
catch
|
|
{
|
|
Main.npc[npcCache[index]].active = false;
|
|
}
|
|
}
|
|
}
|
|
|
|
protected void DrawCachedProjs(List<int> projCache, bool startSpriteBatch = true)
|
|
{
|
|
if (startSpriteBatch)
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, Main.DefaultSamplerState, DepthStencilState.None, Main.Rasterizer, (Effect) null, Main.Transform);
|
|
for (int index = 0; index < projCache.Count; ++index)
|
|
{
|
|
try
|
|
{
|
|
this.DrawProj(projCache[index]);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
TimeLogger.DrawException(ex);
|
|
Main.projectile[projCache[index]].active = false;
|
|
}
|
|
}
|
|
if (!startSpriteBatch)
|
|
return;
|
|
Main.spriteBatch.End();
|
|
}
|
|
|
|
protected void DrawSuperSpecialProjectiles(List<int> projCache, bool startSpriteBatch = true)
|
|
{
|
|
if (startSpriteBatch)
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, Main.DefaultSamplerState, DepthStencilState.None, Main.Rasterizer, (Effect) null, Main.Transform);
|
|
for (int index1 = 0; index1 < projCache.Count; ++index1)
|
|
{
|
|
try
|
|
{
|
|
int index2 = projCache[index1];
|
|
Projectile projectile = Main.projectile[index2];
|
|
int owner = projectile.owner;
|
|
Player other = Main.player[owner];
|
|
if (Main.playerVisualClone[owner] == null)
|
|
Main.playerVisualClone[owner] = new Player();
|
|
Player drawPlayer = Main.playerVisualClone[owner];
|
|
drawPlayer.CopyVisuals(other);
|
|
drawPlayer.isFirstFractalAfterImage = true;
|
|
drawPlayer.firstFractalAfterImageOpacity = projectile.Opacity * 1f;
|
|
drawPlayer.ResetEffects();
|
|
drawPlayer.ResetVisibleAccessories();
|
|
drawPlayer.UpdateDyes();
|
|
drawPlayer.DisplayDollUpdate();
|
|
drawPlayer.UpdateSocialShadow();
|
|
drawPlayer.itemAnimationMax = 60;
|
|
drawPlayer.itemAnimation = (int) projectile.localAI[0];
|
|
drawPlayer.itemRotation = projectile.velocity.ToRotation();
|
|
drawPlayer.heldProj = index2;
|
|
drawPlayer.Center = projectile.Center - projectile.velocity.SafeNormalize(Vector2.Zero) * 42f;
|
|
drawPlayer.direction = (double) projectile.velocity.X > 0.0 ? 1 : -1;
|
|
drawPlayer.itemRotation = (float) Math.Atan2((double) projectile.velocity.Y * (double) drawPlayer.direction, (double) projectile.velocity.X * (double) drawPlayer.direction);
|
|
drawPlayer.velocity.Y = 0.01f;
|
|
drawPlayer.wingFrame = 2;
|
|
drawPlayer.PlayerFrame();
|
|
drawPlayer.socialIgnoreLight = true;
|
|
Main.PlayerRenderer.DrawPlayer(Main.Camera, drawPlayer, drawPlayer.position, 0.0f, drawPlayer.fullRotationOrigin);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
TimeLogger.DrawException(ex);
|
|
Main.projectile[projCache[index1]].active = false;
|
|
}
|
|
}
|
|
if (!startSpriteBatch)
|
|
return;
|
|
Main.spriteBatch.End();
|
|
}
|
|
|
|
protected void SortDrawCacheWorms()
|
|
{
|
|
this.SortBabyBirdProjectiles(this.DrawCacheProjsOverPlayers);
|
|
this.SortStardustDragonProjectiles(this.DrawCacheProjsBehindProjectiles);
|
|
}
|
|
|
|
private void SortBabyBirdProjectiles(List<int> list)
|
|
{
|
|
List<int> intList = new List<int>();
|
|
for (int index1 = list.Count - 1; index1 >= 0; --index1)
|
|
{
|
|
int index2 = list[index1];
|
|
if (Main.projectile[index2].type == 759)
|
|
{
|
|
intList.Add(index2);
|
|
list.RemoveAt(index1);
|
|
Projectile projectile = Main.projectile[index2];
|
|
Player master = Main.player[projectile.owner];
|
|
int stackedIndex = (int) projectile.localAI[0];
|
|
if (projectile.frame == Main.projFrames[projectile.type] - 1)
|
|
{
|
|
projectile.Center = Projectile.AI_158_GetHomeLocation(master, stackedIndex);
|
|
projectile.velocity = Vector2.Zero;
|
|
}
|
|
}
|
|
}
|
|
list.AddRange((IEnumerable<int>) intList);
|
|
intList.Clear();
|
|
}
|
|
|
|
private void SortStardustDragonProjectiles(List<int> list)
|
|
{
|
|
List<List<int>> intListList = new List<List<int>>();
|
|
for (int index1 = 0; index1 < list.Count; ++index1)
|
|
{
|
|
int index2 = list[index1];
|
|
if (Main.projectile[index2].type == 628)
|
|
{
|
|
list.Remove(index2);
|
|
List<int> intList1 = new List<int>();
|
|
intList1.Insert(0, index2);
|
|
for (int byUuid = Projectile.GetByUUID(Main.projectile[index2].owner, Main.projectile[index2].ai[0]); byUuid >= 0 && !intList1.Contains(byUuid) && Main.projectile[byUuid].active && Main.projectile[byUuid].type >= 625 && Main.projectile[byUuid].type <= 627; byUuid = Projectile.GetByUUID(Main.projectile[byUuid].owner, Main.projectile[byUuid].ai[0]))
|
|
{
|
|
intList1.Add(byUuid);
|
|
list.Remove(byUuid);
|
|
}
|
|
List<int> intList2 = new List<int>();
|
|
for (int index3 = intList1.Count - 2; index3 >= 0; --index3)
|
|
intList2.Add(intList1[index3]);
|
|
intList2.Add(intList1[intList1.Count - 1]);
|
|
intListList.Add(intList2);
|
|
index1 = -1;
|
|
}
|
|
}
|
|
List<int> intList = new List<int>((IEnumerable<int>) list);
|
|
intListList.Add(intList);
|
|
list.Clear();
|
|
for (int index4 = 0; index4 < intListList.Count; ++index4)
|
|
{
|
|
for (int index5 = 0; index5 < intListList[index4].Count; ++index5)
|
|
list.Add(intListList[index4][index5]);
|
|
}
|
|
for (int index = 0; index < list.Count; ++index)
|
|
{
|
|
Projectile projectile1 = Main.projectile[list[index]];
|
|
int byUuid = Projectile.GetByUUID(projectile1.owner, projectile1.ai[0]);
|
|
if (projectile1.type >= 626 && projectile1.type <= 628 && byUuid >= 0 && ProjectileID.Sets.StardustDragon[Main.projectile[byUuid].type])
|
|
{
|
|
Vector2 vector2 = Main.projectile[byUuid].Center - projectile1.Center;
|
|
if (vector2 != Vector2.Zero)
|
|
{
|
|
float num = Main.projectile[byUuid].scale * 16f - vector2.Length();
|
|
if ((double) num != 0.0)
|
|
{
|
|
Projectile projectile2 = projectile1;
|
|
projectile2.Center = projectile2.Center + Vector2.Normalize(vector2) * -num;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
protected void DrawWoF()
|
|
{
|
|
if ((Main.wofNPCIndex < 0 || !Main.npc[Main.wofNPCIndex].active ? 0 : (Main.npc[Main.wofNPCIndex].life > 0 ? 1 : 0)) == 0)
|
|
return;
|
|
for (int i = 0; i < (int) byte.MaxValue; ++i)
|
|
{
|
|
if (Main.player[i].active && Main.player[i].tongued && !Main.player[i].dead)
|
|
Main.DrawWOFTongueToPlayer(i);
|
|
}
|
|
for (int i = 0; i < 200; ++i)
|
|
{
|
|
if (Main.npc[i].active && Main.npc[i].aiStyle == 29)
|
|
Main.DrawWOFRopeToTheHungry(i);
|
|
}
|
|
Main.DrawWOFBody();
|
|
}
|
|
|
|
private static void DrawWOFBody()
|
|
{
|
|
int num1 = TextureAssets.Wof.Height() / 3;
|
|
float wofDrawAreaTop = (float) Main.wofDrawAreaTop;
|
|
float wofDrawAreaBottom = (float) Main.wofDrawAreaBottom;
|
|
float num2 = Main.screenPosition.Y + (float) Main.screenHeight;
|
|
float num3 = (float) ((int) (((double) wofDrawAreaTop - (double) Main.screenPosition.Y) / (double) num1) + 1);
|
|
if ((double) num3 > 12.0)
|
|
return;
|
|
float num4 = num3 * (float) num1;
|
|
if ((double) num4 > 0.0)
|
|
wofDrawAreaTop -= num4;
|
|
float x1 = Main.npc[Main.wofNPCIndex].position.X;
|
|
if (Main.npc[Main.wofNPCIndex].direction > 0)
|
|
x1 -= 80f;
|
|
SpriteEffects effects = SpriteEffects.None;
|
|
if (Main.npc[Main.wofNPCIndex].spriteDirection == 1)
|
|
effects = SpriteEffects.FlipHorizontally;
|
|
int num5 = Main.wofDrawFrameIndex / 6 * num1;
|
|
if (!Main.gamePaused && ++Main.wofDrawFrameIndex >= 18)
|
|
Main.wofDrawFrameIndex = 0;
|
|
float num6 = num2 - wofDrawAreaTop;
|
|
for (int index1 = (int) wofDrawAreaTop; (double) index1 < (double) num2; index1 += num1)
|
|
{
|
|
float num7 = num2 - (float) index1;
|
|
if ((double) num7 > (double) num1)
|
|
num7 = (float) num1;
|
|
for (int index2 = 0; (double) index2 < (double) num7; index2 += 16)
|
|
{
|
|
int x2 = (int) ((double) x1 + (double) (TextureAssets.Wof.Width() / 2)) / 16;
|
|
int y = (index1 + index2) / 16;
|
|
Main.spriteBatch.Draw(TextureAssets.Wof.Value, new Vector2(x1 - Main.screenPosition.X, (float) (index1 + index2) - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, num5 + index2, TextureAssets.Wof.Width(), 16)), Lighting.GetColor(x2, y), 0.0f, new Vector2(), 1f, effects, 0.0f);
|
|
}
|
|
}
|
|
}
|
|
|
|
private static void DrawWOFRopeToTheHungry(int i)
|
|
{
|
|
float num1 = Main.npc[Main.wofNPCIndex].position.X + (float) (Main.npc[Main.wofNPCIndex].width / 2);
|
|
float y = Main.npc[Main.wofNPCIndex].position.Y;
|
|
float num2 = (float) (Main.wofDrawAreaBottom - Main.wofDrawAreaTop);
|
|
bool flag1 = false;
|
|
if (Main.npc[i].frameCounter > 7.0)
|
|
flag1 = true;
|
|
float num3 = (float) Main.wofDrawAreaTop + num2 * Main.npc[i].ai[0];
|
|
Vector2 vector2 = new Vector2(Main.npc[i].position.X + (float) (Main.npc[i].width / 2), Main.npc[i].position.Y + (float) (Main.npc[i].height / 2));
|
|
float num4 = num1 - vector2.X;
|
|
float num5 = num3 - vector2.Y;
|
|
float rotation = (float) Math.Atan2((double) num5, (double) num4) - 1.57f;
|
|
bool flag2 = true;
|
|
while (flag2)
|
|
{
|
|
SpriteEffects effects = SpriteEffects.None;
|
|
if (flag1)
|
|
{
|
|
effects = SpriteEffects.FlipHorizontally;
|
|
flag1 = false;
|
|
}
|
|
else
|
|
flag1 = true;
|
|
int height = 28;
|
|
float num6 = (float) Math.Sqrt((double) num4 * (double) num4 + (double) num5 * (double) num5);
|
|
if ((double) num6 < 40.0)
|
|
{
|
|
height = (int) num6 - 40 + 28;
|
|
flag2 = false;
|
|
}
|
|
float num7 = 28f / num6;
|
|
float num8 = num4 * num7;
|
|
float num9 = num5 * num7;
|
|
vector2.X += num8;
|
|
vector2.Y += num9;
|
|
num4 = num1 - vector2.X;
|
|
num5 = num3 - vector2.Y;
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) vector2.X / 16, (int) ((double) vector2.Y / 16.0));
|
|
Main.spriteBatch.Draw(TextureAssets.Chain12.Value, new Vector2(vector2.X - Main.screenPosition.X, vector2.Y - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Chain4.Width(), height)), color, rotation, new Vector2((float) TextureAssets.Chain4.Width() * 0.5f, (float) TextureAssets.Chain4.Height() * 0.5f), 1f, effects, 0.0f);
|
|
}
|
|
}
|
|
|
|
private static void DrawWOFTongueToPlayer(int i)
|
|
{
|
|
float num1 = Main.npc[Main.wofNPCIndex].position.X + (float) (Main.npc[Main.wofNPCIndex].width / 2);
|
|
float num2 = Main.npc[Main.wofNPCIndex].position.Y + (float) (Main.npc[Main.wofNPCIndex].height / 2);
|
|
Vector2 vector2 = new Vector2(Main.player[i].position.X + (float) Main.player[i].width * 0.5f, Main.player[i].position.Y + (float) Main.player[i].height * 0.5f);
|
|
float num3 = num1 - vector2.X;
|
|
float num4 = num2 - vector2.Y;
|
|
float rotation = (float) Math.Atan2((double) num4, (double) num3) - 1.57f;
|
|
bool flag = true;
|
|
while (flag)
|
|
{
|
|
float num5 = (float) Math.Sqrt((double) num3 * (double) num3 + (double) num4 * (double) num4);
|
|
if ((double) num5 < 40.0)
|
|
{
|
|
flag = false;
|
|
}
|
|
else
|
|
{
|
|
float num6 = (float) TextureAssets.Chain12.Height() / num5;
|
|
float num7 = num3 * num6;
|
|
float num8 = num4 * num6;
|
|
vector2.X += num7;
|
|
vector2.Y += num8;
|
|
num3 = num1 - vector2.X;
|
|
num4 = num2 - vector2.Y;
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) vector2.X / 16, (int) ((double) vector2.Y / 16.0));
|
|
Main.spriteBatch.Draw(TextureAssets.Chain12.Value, new Vector2(vector2.X - Main.screenPosition.X, vector2.Y - Main.screenPosition.Y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Chain12.Width(), TextureAssets.Chain12.Height())), color, rotation, new Vector2((float) TextureAssets.Chain12.Width() * 0.5f, (float) TextureAssets.Chain12.Height() * 0.5f), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static Microsoft.Xna.Framework.Color quickAlpha(Microsoft.Xna.Framework.Color oldColor, float Alpha)
|
|
{
|
|
Microsoft.Xna.Framework.Color color = oldColor;
|
|
color.R = (byte) ((double) color.R * (double) Alpha);
|
|
color.G = (byte) ((double) color.G * (double) Alpha);
|
|
color.B = (byte) ((double) color.B * (double) Alpha);
|
|
color.A = (byte) ((double) color.A * (double) Alpha);
|
|
return color;
|
|
}
|
|
|
|
private void DrawItem_GetBasics(
|
|
Item item,
|
|
int slot,
|
|
out Texture2D texture,
|
|
out Microsoft.Xna.Framework.Rectangle frame)
|
|
{
|
|
this.LoadItem(item.type);
|
|
if (ItemID.Sets.AnimatesAsSoul[item.type] || ItemID.Sets.NebulaPickup[item.type])
|
|
{
|
|
this.DrawItem_AnimateSlot(slot, Main.itemAnimations[item.type].TicksPerFrame, Main.itemAnimations[item.type].FrameCount);
|
|
texture = TextureAssets.Item[item.type].Value;
|
|
}
|
|
else if (ItemID.Sets.IsFood[item.type])
|
|
{
|
|
texture = TextureAssets.Item[item.type].Value;
|
|
}
|
|
else
|
|
{
|
|
switch (item.type)
|
|
{
|
|
case 71:
|
|
case 72:
|
|
case 73:
|
|
case 74:
|
|
int index = item.type - 71;
|
|
texture = TextureAssets.Coin[index].Value;
|
|
this.DrawItem_AnimateSlot(slot, 6, 8);
|
|
frame = Main._coinOnWorldAnimation.GetFrame(texture, Main.itemFrameCounter[slot]);
|
|
return;
|
|
case 75:
|
|
texture = TextureAssets.Item[item.type].Value;
|
|
this.DrawItem_AnimateSlot(slot, Main.itemAnimations[item.type].TicksPerFrame, Main.itemAnimations[item.type].FrameCount * 2 - 1);
|
|
break;
|
|
case 3858:
|
|
texture = TextureAssets.Item[item.type].Value;
|
|
this.DrawItem_AnimateSlot(slot, 5, 3);
|
|
break;
|
|
default:
|
|
texture = TextureAssets.Item[item.type].Value;
|
|
break;
|
|
}
|
|
}
|
|
if (Main.itemAnimations[item.type] != null)
|
|
frame = Main.itemAnimations[item.type].GetFrame(texture, Main.itemFrameCounter[slot]);
|
|
else
|
|
frame = texture.Frame();
|
|
}
|
|
|
|
private void DrawItem_AnimateSlot(
|
|
int slot,
|
|
int gameFramesPerSpriteFrame,
|
|
int spriteFramesAmount)
|
|
{
|
|
if (++Main.itemFrameCounter[slot] < gameFramesPerSpriteFrame * spriteFramesAmount)
|
|
return;
|
|
Main.itemFrameCounter[slot] = 0;
|
|
}
|
|
|
|
protected void DrawItem(Item item, int whoami)
|
|
{
|
|
if (!item.active || item.IsAir)
|
|
return;
|
|
Main.instance.LoadItem(item.type);
|
|
Texture2D texture;
|
|
Microsoft.Xna.Framework.Rectangle frame;
|
|
this.DrawItem_GetBasics(item, whoami, out texture, out frame);
|
|
Vector2 origin = frame.Size() / 2f;
|
|
Vector2 vector2 = new Vector2((float) (item.width / 2) - origin.X, (float) (item.height - frame.Height));
|
|
Vector2 position = item.position - Main.screenPosition + origin + vector2;
|
|
float rotation = item.velocity.X * 0.2f;
|
|
float scale = 1f;
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor(item.Center.ToTileCoordinates());
|
|
Microsoft.Xna.Framework.Color currentColor = item.GetAlpha(color);
|
|
ItemSlot.GetItemLight(ref currentColor, ref scale, item);
|
|
int index1 = (int) item.glowMask;
|
|
if (!Main.gamePaused && this.IsActive && (item.type >= 71 && item.type <= 74 || item.type == 58 || item.type == 109) && color.R > (byte) 60 && (double) Main.rand.Next(500) - ((double) Math.Abs(item.velocity.X) + (double) Math.Abs(item.velocity.Y)) * 10.0 < (double) ((int) color.R / 50))
|
|
{
|
|
int index2 = Dust.NewDust(item.position, item.width, item.height, 43, Alpha: 254, newColor: Microsoft.Xna.Framework.Color.White, Scale: 0.5f);
|
|
Main.dust[index2].velocity *= 0.0f;
|
|
}
|
|
if (item.type >= 3318 && item.type <= 3332 || item.type == 3860 || item.type == 3862 || item.type == 3861 || item.type == 4782 || item.type == 4957)
|
|
{
|
|
float num1 = (float) ((double) item.timeSinceItemSpawned / 240.0 + (double) Main.GlobalTimeWrappedHourly * 0.0399999991059303);
|
|
float num2 = Main.GlobalTimeWrappedHourly % 4f / 2f;
|
|
if ((double) num2 >= 1.0)
|
|
num2 = 2f - num2;
|
|
float num3 = (float) ((double) num2 * 0.5 + 0.5);
|
|
for (float num4 = 0.0f; (double) num4 < 1.0; num4 += 0.25f)
|
|
Main.spriteBatch.Draw(texture, position + new Vector2(0.0f, 8f).RotatedBy(((double) num4 + (double) num1) * 6.28318548202515) * num3, new Microsoft.Xna.Framework.Rectangle?(frame), new Microsoft.Xna.Framework.Color(90, 70, (int) byte.MaxValue, 50), rotation, origin, scale, SpriteEffects.None, 0.0f);
|
|
for (float num5 = 0.0f; (double) num5 < 1.0; num5 += 0.34f)
|
|
Main.spriteBatch.Draw(texture, position + new Vector2(0.0f, 4f).RotatedBy(((double) num5 + (double) num1) * 6.28318548202515) * num3, new Microsoft.Xna.Framework.Rectangle?(frame), new Microsoft.Xna.Framework.Color(140, 120, (int) byte.MaxValue, 77), rotation, origin, scale, SpriteEffects.None, 0.0f);
|
|
}
|
|
else if (item.type == 75)
|
|
{
|
|
float num6 = (float) ((double) item.timeSinceItemSpawned / 240.0 + (double) Main.GlobalTimeWrappedHourly * 0.0399999991059303);
|
|
float num7 = Main.GlobalTimeWrappedHourly % 5f / 2.5f;
|
|
if ((double) num7 >= 1.0)
|
|
num7 = 2f - num7;
|
|
float num8 = (float) ((double) num7 * 0.5 + 0.5);
|
|
for (float num9 = 0.0f; (double) num9 < 1.0; num9 += 0.25f)
|
|
Main.spriteBatch.Draw(TextureAssets.Item[item.type].Value, position + new Vector2(0.0f, 8f).RotatedBy(((double) num9 + (double) num6) * 6.28318548202515) * num8, new Microsoft.Xna.Framework.Rectangle?(frame), new Microsoft.Xna.Framework.Color(50, 50, (int) byte.MaxValue, 50), rotation, origin, scale, SpriteEffects.None, 0.0f);
|
|
for (float num10 = 0.0f; (double) num10 < 1.0; num10 += 0.34f)
|
|
Main.spriteBatch.Draw(TextureAssets.Item[item.type].Value, position + new Vector2(0.0f, 4f).RotatedBy(((double) num10 + (double) num6) * 6.28318548202515) * num8, new Microsoft.Xna.Framework.Rectangle?(frame), new Microsoft.Xna.Framework.Color(120, 120, (int) byte.MaxValue, (int) sbyte.MaxValue), rotation, origin, scale, SpriteEffects.None, 0.0f);
|
|
}
|
|
else if (item.type == 4143)
|
|
{
|
|
float num11 = (float) ((double) item.timeSinceItemSpawned / 240.0 + (double) Main.GlobalTimeWrappedHourly * 0.0399999991059303);
|
|
float num12 = Main.GlobalTimeWrappedHourly % 5f / 2.5f;
|
|
if ((double) num12 >= 1.0)
|
|
num12 = 2f - num12;
|
|
float num13 = (float) ((double) num12 * 0.5 + 0.5);
|
|
for (float num14 = 0.0f; (double) num14 < 1.0; num14 += 0.34f)
|
|
Main.spriteBatch.Draw(TextureAssets.Item[item.type].Value, position + new Vector2(0.0f, 8f).RotatedBy(((double) num14 + (double) num11) * 6.28318548202515) * num13, new Microsoft.Xna.Framework.Rectangle?(frame), new Microsoft.Xna.Framework.Color(30, 30, 155, 60), rotation, origin, scale, SpriteEffects.None, 0.0f);
|
|
for (float num15 = 0.0f; (double) num15 < 1.0; num15 += 0.34f)
|
|
Main.spriteBatch.Draw(TextureAssets.Item[item.type].Value, position + new Vector2(0.0f, 4f).RotatedBy(((double) num15 + (double) num11) * 6.28318548202515) * num13, new Microsoft.Xna.Framework.Rectangle?(frame), new Microsoft.Xna.Framework.Color(60, 60, (int) sbyte.MaxValue, 57), rotation, origin, scale, SpriteEffects.None, 0.0f);
|
|
Main.spriteBatch.Draw(texture, position, new Microsoft.Xna.Framework.Rectangle?(frame), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 128), rotation, origin, scale, SpriteEffects.None, 0.0f);
|
|
}
|
|
if (item.type >= 1522 && item.type <= 1527 || item.type == 3643)
|
|
{
|
|
currentColor = new Microsoft.Xna.Framework.Color(250, 250, 250, (int) Main.mouseTextColor / 2);
|
|
scale = (float) ((double) Main.mouseTextColor / 1000.0 + 0.800000011920929);
|
|
}
|
|
if (item.type == 3779)
|
|
index1 = -1;
|
|
Main.spriteBatch.Draw(texture, position, new Microsoft.Xna.Framework.Rectangle?(frame), currentColor, rotation, origin, scale, SpriteEffects.None, 0.0f);
|
|
if (item.color != Microsoft.Xna.Framework.Color.Transparent)
|
|
Main.spriteBatch.Draw(texture, position, new Microsoft.Xna.Framework.Rectangle?(frame), item.GetColor(color), rotation, origin, scale, SpriteEffects.None, 0.0f);
|
|
if (index1 != -1)
|
|
Main.spriteBatch.Draw(TextureAssets.GlowMask[index1].Value, position, new Microsoft.Xna.Framework.Rectangle?(frame), new Microsoft.Xna.Framework.Color(250, 250, 250, item.alpha), rotation, origin, scale, SpriteEffects.None, 0.0f);
|
|
if (ItemID.Sets.TrapSigned[item.type])
|
|
Main.spriteBatch.Draw(TextureAssets.Wire.Value, position + frame.Size().RotatedBy((double) rotation) * 0.45f * item.scale, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(4, 58, 8, 8)), currentColor, 0.0f, new Vector2(4f), 1f, SpriteEffects.None, 0.0f);
|
|
if (item.type != 3858)
|
|
return;
|
|
Main.spriteBatch.Draw(TextureAssets.GlowMask[233].Value, position, new Microsoft.Xna.Framework.Rectangle?(frame), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 63) * 0.75f, rotation, frame.Size() / 2f, scale, SpriteEffects.None, 0.0f);
|
|
}
|
|
|
|
public void DrawItems()
|
|
{
|
|
for (int whoami = 0; whoami < 400; ++whoami)
|
|
this.DrawItem(Main.item[whoami], whoami);
|
|
}
|
|
|
|
protected void DrawRain()
|
|
{
|
|
bool flag = this.IsActive || Main.netMode == 1;
|
|
Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.Rectangle(0, 0, 2, 40);
|
|
Texture2D texture = TextureAssets.Rain.Value;
|
|
Vector2 zero = Vector2.Zero;
|
|
for (int index = 0; index < Main.maxRain; ++index)
|
|
{
|
|
Rain rain = Main.rain[index];
|
|
if (rain.active)
|
|
{
|
|
rectangle.X = (int) rain.type * 4;
|
|
Main.spriteBatch.Draw(texture, rain.position - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(rectangle), Lighting.GetColor((int) ((double) rain.position.X + 4.0) >> 4, (int) ((double) rain.position.Y + 4.0) >> 4) * 0.85f, rain.rotation, zero, rain.scale, SpriteEffects.None, 0.0f);
|
|
if (flag)
|
|
rain.Update();
|
|
}
|
|
}
|
|
TimeLogger.DetailedDrawTime(23);
|
|
}
|
|
|
|
protected void DrawDust()
|
|
{
|
|
Microsoft.Xna.Framework.Rectangle rectangle1 = new Microsoft.Xna.Framework.Rectangle((int) Main.screenPosition.X - 500, (int) Main.screenPosition.Y - 50, Main.screenWidth + 1000, Main.screenHeight + 100);
|
|
rectangle1 = new Microsoft.Xna.Framework.Rectangle((int) Main.screenPosition.X - 1000, (int) Main.screenPosition.Y - 1050, Main.screenWidth + 2000, Main.screenHeight + 2100);
|
|
Microsoft.Xna.Framework.Rectangle rectangle2 = rectangle1;
|
|
ArmorShaderData armorShaderData = (ArmorShaderData) null;
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, DepthStencilState.None, RasterizerState.CullNone, (Effect) null, Main.Transform);
|
|
for (int index1 = 0; index1 < Main.maxDustToDraw; ++index1)
|
|
{
|
|
Dust dust = Main.dust[index1];
|
|
if (dust.active)
|
|
{
|
|
if (dust.type >= 130 && dust.type <= 134 || dust.type >= 219 && dust.type <= 223 || dust.type == 226 || dust.type == 278)
|
|
rectangle1 = rectangle2;
|
|
if (new Microsoft.Xna.Framework.Rectangle((int) dust.position.X, (int) dust.position.Y, 4, 4).Intersects(rectangle1))
|
|
{
|
|
float scale1 = dust.scale;
|
|
if (dust.shader != armorShaderData)
|
|
{
|
|
Main.spriteBatch.End();
|
|
armorShaderData = dust.shader;
|
|
if (armorShaderData == null)
|
|
{
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, DepthStencilState.None, RasterizerState.CullNone, (Effect) null, Main.Transform);
|
|
}
|
|
else
|
|
{
|
|
Main.spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, SamplerState.PointClamp, DepthStencilState.None, RasterizerState.CullNone, (Effect) null, Main.Transform);
|
|
dust.shader.Apply((Entity) null);
|
|
}
|
|
}
|
|
if (dust.type >= 130 && dust.type <= 134)
|
|
{
|
|
float num = (Math.Abs(dust.velocity.X) + Math.Abs(dust.velocity.Y)) * 0.3f * 10f;
|
|
if ((double) num > 10.0)
|
|
num = 10f;
|
|
for (int index2 = 0; (double) index2 < (double) num; ++index2)
|
|
{
|
|
Vector2 velocity = dust.velocity;
|
|
Vector2 vector2 = dust.position - velocity * (float) index2;
|
|
float scale2 = dust.scale * (float) (1.0 - (double) index2 / 10.0);
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) ((double) dust.position.X + 4.0) / 16, (int) ((double) dust.position.Y + 4.0) / 16);
|
|
Microsoft.Xna.Framework.Color alpha = dust.GetAlpha(color);
|
|
Main.spriteBatch.Draw(TextureAssets.Dust.Value, vector2 - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(dust.frame), alpha, dust.rotation, new Vector2(4f, 4f), scale2, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
else if (dust.type == 278)
|
|
{
|
|
float num = (Math.Abs(dust.velocity.X) + Math.Abs(dust.velocity.Y)) * 0.3f * 10f;
|
|
if ((double) num > 10.0)
|
|
num = 10f;
|
|
Vector2 origin = new Vector2(4f, 4f);
|
|
for (int index3 = 0; (double) index3 < (double) num; ++index3)
|
|
{
|
|
Vector2 velocity = dust.velocity;
|
|
Vector2 vector2 = dust.position - velocity * (float) index3;
|
|
float scale3 = dust.scale * (float) (1.0 - (double) index3 / 10.0);
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) ((double) dust.position.X + 4.0) / 16, (int) ((double) dust.position.Y + 4.0) / 16);
|
|
Microsoft.Xna.Framework.Color alpha = dust.GetAlpha(color);
|
|
Main.spriteBatch.Draw(TextureAssets.Dust.Value, vector2 - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(dust.frame), alpha, dust.rotation, origin, scale3, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
else if (dust.type >= 219 && dust.type <= 223 && (double) dust.fadeIn == 0.0)
|
|
{
|
|
float num = (Math.Abs(dust.velocity.X) + Math.Abs(dust.velocity.Y)) * 0.3f * 10f;
|
|
if ((double) num > 10.0)
|
|
num = 10f;
|
|
for (int index4 = 0; (double) index4 < (double) num; ++index4)
|
|
{
|
|
Vector2 velocity = dust.velocity;
|
|
Vector2 vector2 = dust.position - velocity * (float) index4;
|
|
float scale4 = dust.scale * (float) (1.0 - (double) index4 / 10.0);
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) ((double) dust.position.X + 4.0) / 16, (int) ((double) dust.position.Y + 4.0) / 16);
|
|
Microsoft.Xna.Framework.Color alpha = dust.GetAlpha(color);
|
|
Main.spriteBatch.Draw(TextureAssets.Dust.Value, vector2 - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(dust.frame), alpha, dust.rotation, new Vector2(4f, 4f), scale4, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
else if (dust.type == 264 && (double) dust.fadeIn == 0.0)
|
|
{
|
|
float num = (Math.Abs(dust.velocity.X) + Math.Abs(dust.velocity.Y)) * 10f;
|
|
if ((double) num > 10.0)
|
|
num = 10f;
|
|
for (int index5 = 0; (double) index5 < (double) num; ++index5)
|
|
{
|
|
Vector2 velocity = dust.velocity;
|
|
Vector2 vector2 = dust.position - velocity * (float) index5;
|
|
float scale5 = dust.scale * (float) (1.0 - (double) index5 / 10.0);
|
|
Microsoft.Xna.Framework.Color color1 = Lighting.GetColor((int) ((double) dust.position.X + 4.0) / 16, (int) ((double) dust.position.Y + 4.0) / 16);
|
|
Microsoft.Xna.Framework.Color color2 = dust.GetAlpha(color1) * 0.3f;
|
|
Main.spriteBatch.Draw(TextureAssets.Dust.Value, vector2 - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(dust.frame), color2, dust.rotation, new Vector2(5f), scale5, SpriteEffects.None, 0.0f);
|
|
Microsoft.Xna.Framework.Color color3 = dust.GetColor(color2);
|
|
Main.spriteBatch.Draw(TextureAssets.Dust.Value, vector2 - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(dust.frame), color3, dust.rotation, new Vector2(5f), scale5, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
else if ((dust.type == 226 || dust.type == 272) && (double) dust.fadeIn == 0.0)
|
|
{
|
|
float num = (Math.Abs(dust.velocity.X) + Math.Abs(dust.velocity.Y)) * 0.3f * 10f;
|
|
if ((double) num > 10.0)
|
|
num = 10f;
|
|
for (int index6 = 0; (double) index6 < (double) num; ++index6)
|
|
{
|
|
Vector2 velocity = dust.velocity;
|
|
Vector2 vector2 = dust.position - velocity * (float) index6;
|
|
float scale6 = dust.scale * (float) (1.0 - (double) index6 / 10.0);
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) ((double) dust.position.X + 4.0) / 16, (int) ((double) dust.position.Y + 4.0) / 16);
|
|
Microsoft.Xna.Framework.Color alpha = dust.GetAlpha(color);
|
|
Main.spriteBatch.Draw(TextureAssets.Dust.Value, vector2 - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(dust.frame), alpha, dust.rotation, new Vector2(4f, 4f), scale6, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
Microsoft.Xna.Framework.Color newColor = Lighting.GetColor((int) ((double) dust.position.X + 4.0) / 16, (int) ((double) dust.position.Y + 4.0) / 16);
|
|
if (dust.type == 6 || dust.type == 15 || dust.type >= 59 && dust.type <= 64)
|
|
newColor = Microsoft.Xna.Framework.Color.White;
|
|
Microsoft.Xna.Framework.Color alpha1 = dust.GetAlpha(newColor);
|
|
if (dust.type == 213)
|
|
scale1 = 1f;
|
|
Main.spriteBatch.Draw(TextureAssets.Dust.Value, dust.position - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(dust.frame), alpha1, dust.rotation, new Vector2(4f, 4f), scale1, SpriteEffects.None, 0.0f);
|
|
if (dust.color.PackedValue != 0U)
|
|
{
|
|
Microsoft.Xna.Framework.Color color = dust.GetColor(alpha1);
|
|
if (color.PackedValue != 0U)
|
|
Main.spriteBatch.Draw(TextureAssets.Dust.Value, dust.position - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(dust.frame), color, dust.rotation, new Vector2(4f, 4f), scale1, SpriteEffects.None, 0.0f);
|
|
}
|
|
if (alpha1 == Microsoft.Xna.Framework.Color.Black)
|
|
dust.active = false;
|
|
}
|
|
else
|
|
dust.active = false;
|
|
}
|
|
}
|
|
Main.spriteBatch.End();
|
|
Main.pixelShader.CurrentTechnique.Passes[0].Apply();
|
|
TimeLogger.DetailedDrawTime(25);
|
|
}
|
|
|
|
private static void HelpText()
|
|
{
|
|
bool flag1 = false;
|
|
if (Main.player[Main.myPlayer].statLifeMax > 100)
|
|
flag1 = true;
|
|
bool flag2 = false;
|
|
if (Main.player[Main.myPlayer].statManaMax > 20)
|
|
flag2 = true;
|
|
bool flag3 = true;
|
|
bool flag4 = false;
|
|
bool flag5 = false;
|
|
bool flag6 = false;
|
|
bool flag7 = false;
|
|
bool flag8 = false;
|
|
bool flag9 = false;
|
|
bool flag10 = false;
|
|
bool flag11 = false;
|
|
bool flag12 = false;
|
|
bool flag13 = false;
|
|
for (int index = 0; index < 58; ++index)
|
|
{
|
|
if (Main.player[Main.myPlayer].inventory[index].pick > 0 && Main.player[Main.myPlayer].inventory[index].Name != "Copper Pickaxe")
|
|
flag3 = false;
|
|
if (Main.player[Main.myPlayer].inventory[index].axe > 0 && Main.player[Main.myPlayer].inventory[index].Name != "Copper Axe")
|
|
flag3 = false;
|
|
if (Main.player[Main.myPlayer].inventory[index].hammer > 0)
|
|
flag3 = false;
|
|
if (Main.player[Main.myPlayer].inventory[index].type == 11 || Main.player[Main.myPlayer].inventory[index].type == 12 || Main.player[Main.myPlayer].inventory[index].type == 13 || Main.player[Main.myPlayer].inventory[index].type == 14 || Main.player[Main.myPlayer].inventory[index].type == 699 || Main.player[Main.myPlayer].inventory[index].type == 700 || Main.player[Main.myPlayer].inventory[index].type == 701 || Main.player[Main.myPlayer].inventory[index].type == 702)
|
|
flag4 = true;
|
|
if (Main.player[Main.myPlayer].inventory[index].type == 19 || Main.player[Main.myPlayer].inventory[index].type == 20 || Main.player[Main.myPlayer].inventory[index].type == 21 || Main.player[Main.myPlayer].inventory[index].type == 22 || Main.player[Main.myPlayer].inventory[index].type == 703 || Main.player[Main.myPlayer].inventory[index].type == 704 || Main.player[Main.myPlayer].inventory[index].type == 705 || Main.player[Main.myPlayer].inventory[index].type == 706)
|
|
flag5 = true;
|
|
if (Main.player[Main.myPlayer].inventory[index].type == 75)
|
|
flag6 = true;
|
|
if (Main.player[Main.myPlayer].inventory[index].type == 38)
|
|
flag7 = true;
|
|
if (Main.player[Main.myPlayer].inventory[index].type == 68 || Main.player[Main.myPlayer].inventory[index].type == 70 || Main.player[Main.myPlayer].inventory[index].type == 1330 || Main.player[Main.myPlayer].inventory[index].type == 1331 || Main.player[Main.myPlayer].inventory[index].type == 67 || Main.player[Main.myPlayer].inventory[index].type == 2886)
|
|
flag8 = true;
|
|
if (Main.player[Main.myPlayer].inventory[index].type == 84 || Main.player[Main.myPlayer].inventory[index].type == 1236 || Main.player[Main.myPlayer].inventory[index].type == 1237 || Main.player[Main.myPlayer].inventory[index].type == 1238 || Main.player[Main.myPlayer].inventory[index].type == 1239 || Main.player[Main.myPlayer].inventory[index].type == 1240 || Main.player[Main.myPlayer].inventory[index].type == 1241 || Main.player[Main.myPlayer].inventory[index].type == 939 || Main.player[Main.myPlayer].inventory[index].type == 1273 || Main.player[Main.myPlayer].inventory[index].type == 2585 || Main.player[Main.myPlayer].inventory[index].type == 2360 || Main.player[Main.myPlayer].inventory[index].type == 185 || Main.player[Main.myPlayer].inventory[index].type == 1800 || Main.player[Main.myPlayer].inventory[index].type == 1915)
|
|
flag9 = true;
|
|
if (Main.player[Main.myPlayer].inventory[index].type == 3347)
|
|
flag10 = true;
|
|
if (Main.player[Main.myPlayer].inventory[index].type == 174)
|
|
flag11 = true;
|
|
if (Main.player[Main.myPlayer].inventory[index].type == 1141)
|
|
flag12 = true;
|
|
if (Main.player[Main.myPlayer].inventory[index].type == 1533 || Main.player[Main.myPlayer].inventory[index].type == 1534 || Main.player[Main.myPlayer].inventory[index].type == 1535 || Main.player[Main.myPlayer].inventory[index].type == 1536 || Main.player[Main.myPlayer].inventory[index].type == 1537 || Main.player[Main.myPlayer].inventory[index].type == 4714)
|
|
flag13 = true;
|
|
}
|
|
bool flag14 = false;
|
|
bool flag15 = false;
|
|
bool flag16 = false;
|
|
bool flag17 = false;
|
|
bool flag18 = false;
|
|
bool flag19 = false;
|
|
bool flag20 = false;
|
|
bool flag21 = false;
|
|
bool flag22 = false;
|
|
bool flag23 = false;
|
|
bool flag24 = false;
|
|
bool flag25 = false;
|
|
bool flag26 = false;
|
|
bool flag27 = false;
|
|
bool flag28 = false;
|
|
bool flag29 = false;
|
|
bool flag30 = false;
|
|
bool flag31 = false;
|
|
bool flag32 = false;
|
|
bool flag33 = false;
|
|
bool flag34 = false;
|
|
bool flag35 = false;
|
|
bool flag36 = false;
|
|
bool flag37 = false;
|
|
bool flag38 = false;
|
|
int num = 0;
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active)
|
|
{
|
|
if (Main.npc[index].townNPC && Main.npc[index].type != 37)
|
|
++num;
|
|
if (Main.npc[index].type == 17)
|
|
flag14 = true;
|
|
if (Main.npc[index].type == 18)
|
|
flag15 = true;
|
|
if (Main.npc[index].type == 19)
|
|
flag17 = true;
|
|
if (Main.npc[index].type == 20)
|
|
flag16 = true;
|
|
if (Main.npc[index].type == 54)
|
|
flag22 = true;
|
|
if (Main.npc[index].type == 124)
|
|
flag19 = true;
|
|
if (Main.npc[index].type == 38)
|
|
flag18 = true;
|
|
if (Main.npc[index].type == 108)
|
|
flag20 = true;
|
|
if (Main.npc[index].type == 107)
|
|
flag21 = true;
|
|
if (Main.npc[index].type == 228)
|
|
flag23 = true;
|
|
if (Main.npc[index].type == 178)
|
|
flag24 = true;
|
|
if (Main.npc[index].type == 209)
|
|
flag25 = true;
|
|
if (Main.npc[index].type == 353)
|
|
flag26 = true;
|
|
if (Main.npc[index].type == 633)
|
|
flag38 = true;
|
|
if (Main.npc[index].type == 369)
|
|
flag27 = true;
|
|
if (Main.npc[index].type == 441)
|
|
flag28 = true;
|
|
if (Main.npc[index].type == 229)
|
|
flag29 = true;
|
|
if (Main.npc[index].type == 207)
|
|
flag30 = true;
|
|
if (Main.npc[index].type == 160)
|
|
flag31 = true;
|
|
if (Main.npc[index].type == 588)
|
|
flag32 = true;
|
|
if (Main.npc[index].type == 227)
|
|
flag33 = true;
|
|
if (Main.npc[index].type == 208)
|
|
flag34 = true;
|
|
if (Main.npc[index].type == 550)
|
|
flag35 = true;
|
|
if (Main.npc[index].type == 368)
|
|
flag36 = true;
|
|
if (Main.npc[index].type == 453)
|
|
flag37 = true;
|
|
}
|
|
}
|
|
object substitutionObject = Lang.CreateDialogSubstitutionObject();
|
|
while (true)
|
|
{
|
|
do
|
|
{
|
|
++Main.helpText;
|
|
if (Language.Exists("GuideHelpText.Help_" + (object) Main.helpText))
|
|
{
|
|
LocalizedText text = Language.GetText("GuideHelpText.Help_" + (object) Main.helpText);
|
|
if (text.CanFormatWith(substitutionObject))
|
|
{
|
|
Main.npcChatText = text.FormatWith(substitutionObject);
|
|
return;
|
|
}
|
|
}
|
|
if (flag3)
|
|
{
|
|
switch (Main.helpText)
|
|
{
|
|
case 1:
|
|
Main.npcChatText = Lang.dialog(177);
|
|
return;
|
|
case 2:
|
|
Main.npcChatText = Lang.dialog(178);
|
|
return;
|
|
case 3:
|
|
Main.npcChatText = Lang.dialog(179);
|
|
return;
|
|
case 4:
|
|
Main.npcChatText = Lang.dialog(180);
|
|
return;
|
|
case 5:
|
|
Main.npcChatText = Lang.dialog(181);
|
|
return;
|
|
case 6:
|
|
Main.npcChatText = Lang.dialog(182);
|
|
return;
|
|
}
|
|
}
|
|
if (flag3 && !flag4 && !flag5 && Main.helpText == 11)
|
|
{
|
|
Main.npcChatText = Lang.dialog(183);
|
|
return;
|
|
}
|
|
if (flag3 & flag4 && !flag5)
|
|
{
|
|
if (Main.helpText == 21)
|
|
{
|
|
Main.npcChatText = Lang.dialog(184);
|
|
return;
|
|
}
|
|
if (Main.helpText == 22)
|
|
{
|
|
Main.npcChatText = Lang.dialog(185);
|
|
return;
|
|
}
|
|
}
|
|
if (flag3 & flag5)
|
|
{
|
|
if (Main.helpText == 31)
|
|
{
|
|
Main.npcChatText = Lang.dialog(186);
|
|
return;
|
|
}
|
|
if (Main.helpText == 32)
|
|
{
|
|
Main.npcChatText = Lang.dialog(187);
|
|
return;
|
|
}
|
|
}
|
|
if (!flag1 && Main.helpText == 41)
|
|
{
|
|
Main.npcChatText = Lang.dialog(188);
|
|
return;
|
|
}
|
|
if (!flag2 && Main.helpText == 42)
|
|
{
|
|
Main.npcChatText = Lang.dialog(189);
|
|
return;
|
|
}
|
|
if (!flag2 && !flag6 && Main.helpText == 43)
|
|
{
|
|
Main.npcChatText = Lang.dialog(190);
|
|
return;
|
|
}
|
|
if (!flag14 && !flag15)
|
|
{
|
|
switch (Main.helpText)
|
|
{
|
|
case 51:
|
|
Main.npcChatText = Lang.dialog(191);
|
|
return;
|
|
case 52:
|
|
Main.npcChatText = Lang.dialog(192);
|
|
return;
|
|
case 53:
|
|
Main.npcChatText = Lang.dialog(193);
|
|
return;
|
|
case 54:
|
|
Main.npcChatText = Lang.dialog(194);
|
|
return;
|
|
}
|
|
}
|
|
if (!flag14 && Main.helpText == 61)
|
|
{
|
|
Main.npcChatText = Lang.dialog(195);
|
|
return;
|
|
}
|
|
if (!flag15 && Main.helpText == 62)
|
|
{
|
|
Main.npcChatText = Lang.dialog(196);
|
|
return;
|
|
}
|
|
if (!flag17 && Main.helpText == 63)
|
|
{
|
|
Main.npcChatText = Lang.dialog(197);
|
|
return;
|
|
}
|
|
if (!flag16 && Main.helpText == 64)
|
|
{
|
|
Main.npcChatText = Lang.dialog(198);
|
|
return;
|
|
}
|
|
if (!flag19 && Main.helpText == 65 && NPC.downedBoss3)
|
|
{
|
|
Main.npcChatText = Lang.dialog(199);
|
|
return;
|
|
}
|
|
if (!flag22 && Main.helpText == 66 && NPC.downedBoss3)
|
|
{
|
|
Main.npcChatText = Lang.dialog(200);
|
|
return;
|
|
}
|
|
if (!flag18 && Main.helpText == 67)
|
|
{
|
|
Main.npcChatText = Lang.dialog(201);
|
|
return;
|
|
}
|
|
if (!flag21 && NPC.downedBoss2 && Main.helpText == 68)
|
|
{
|
|
Main.npcChatText = Lang.dialog(202);
|
|
return;
|
|
}
|
|
if (!flag20 && Main.hardMode && Main.helpText == 69)
|
|
{
|
|
Main.npcChatText = Lang.dialog(203);
|
|
return;
|
|
}
|
|
if (!flag23 && Main.helpText == 70 && NPC.downedBoss2)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1100");
|
|
return;
|
|
}
|
|
if (!flag24 && Main.helpText == 71 && Main.hardMode)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1101");
|
|
return;
|
|
}
|
|
if (!flag25 && Main.helpText == 72 && NPC.downedMechBoss1 && NPC.downedMechBoss2 && NPC.downedMechBoss3)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1102");
|
|
return;
|
|
}
|
|
if (!flag26 && Main.helpText == 73)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1103");
|
|
return;
|
|
}
|
|
if (!flag27 && Main.helpText == 74)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1104");
|
|
return;
|
|
}
|
|
if (!flag28 && Main.helpText == 75 && Main.hardMode)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1105");
|
|
return;
|
|
}
|
|
if (!flag29 && Main.helpText == 76 && Main.hardMode)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1106");
|
|
return;
|
|
}
|
|
if (!flag30 && Main.helpText == 77)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1107");
|
|
return;
|
|
}
|
|
if (!flag31 && Main.helpText == 78 && Main.hardMode)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1108");
|
|
return;
|
|
}
|
|
if (!flag32 && Main.helpText == 79)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1109");
|
|
return;
|
|
}
|
|
if (!flag33 && Main.helpText == 80 && num >= 5)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1110");
|
|
return;
|
|
}
|
|
if (!flag34 && Main.helpText == 81 && num >= 11)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1111");
|
|
return;
|
|
}
|
|
if (!flag35 && NPC.downedBoss2 && Main.helpText == 82)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1112");
|
|
return;
|
|
}
|
|
if (((flag36 ? 0 : (Main.helpText == 83 ? 1 : 0)) & (flag14 ? 1 : 0)) != 0)
|
|
{
|
|
Main.npcChatText = Language.GetTextValueWith("GuideHelpTextSpecific.Help_1113", substitutionObject);
|
|
return;
|
|
}
|
|
if (!flag37 && Main.helpText == 84 && !Main.hardMode)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1114");
|
|
return;
|
|
}
|
|
if (!flag38 && Main.helpText == 85 && !Main.hardMode)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1115");
|
|
return;
|
|
}
|
|
if (flag7 && !WorldGen.crimson && Main.helpText == 100)
|
|
{
|
|
Main.npcChatText = Lang.dialog(204);
|
|
return;
|
|
}
|
|
if (flag8 && Main.helpText == 101)
|
|
{
|
|
Main.npcChatText = Lang.dialog(WorldGen.crimson ? 403 : 205);
|
|
return;
|
|
}
|
|
if (flag7 | flag8 && Main.helpText == 102)
|
|
{
|
|
Main.npcChatText = Lang.dialog(WorldGen.crimson ? 402 : 206);
|
|
return;
|
|
}
|
|
if (flag7 && WorldGen.crimson && Main.helpText == 103)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1159");
|
|
return;
|
|
}
|
|
if (!flag9 && Main.LocalPlayer.miscEquips[4].IsAir && Main.helpText == 201 && !Main.hardMode && !NPC.downedBoss3 && !NPC.downedBoss2)
|
|
{
|
|
Main.npcChatText = Lang.dialog(207);
|
|
return;
|
|
}
|
|
if (Main.helpText == 202 && !Main.hardMode && Main.player[Main.myPlayer].statLifeMax >= 140)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1120");
|
|
return;
|
|
}
|
|
if (Main.helpText == 203 && Main.hardMode && NPC.downedMechBossAny)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1121");
|
|
return;
|
|
}
|
|
if (Main.helpText == 204 && !NPC.downedGoblins && Main.player[Main.myPlayer].statLifeMax >= 200 && WorldGen.shadowOrbSmashed)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1122");
|
|
return;
|
|
}
|
|
if (Main.helpText == 205 && Main.hardMode && !NPC.downedPirates && Main.player[Main.myPlayer].statLifeMax >= 200)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1123");
|
|
return;
|
|
}
|
|
if (Main.helpText == 206 && Main.hardMode && NPC.downedGolemBoss && !NPC.downedMartians)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1124");
|
|
return;
|
|
}
|
|
if (Main.helpText == 207 && (NPC.downedBoss1 || NPC.downedBoss2 || NPC.downedBoss3))
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1125");
|
|
return;
|
|
}
|
|
if (Main.helpText == 208 && !Main.hardMode)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1130");
|
|
return;
|
|
}
|
|
if (Main.helpText == 209 && !Main.hardMode)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1131");
|
|
return;
|
|
}
|
|
if (Main.helpText == 210 && !Main.hardMode)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1132");
|
|
return;
|
|
}
|
|
if (Main.helpText == 211 && !Main.hardMode)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1133");
|
|
return;
|
|
}
|
|
if (Main.helpText == 212 && !Main.hardMode)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1134");
|
|
return;
|
|
}
|
|
if (Main.helpText == 213 && !Main.hardMode)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1135");
|
|
return;
|
|
}
|
|
if (Main.helpText == 214 && !Main.hardMode && flag4 | flag5)
|
|
{
|
|
Main.npcChatText = Language.GetTextValueWith("GuideHelpTextSpecific.Help_1136", substitutionObject);
|
|
return;
|
|
}
|
|
if (Main.helpText == 215 && Main.LocalPlayer.anglerQuestsFinished < 1)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1137");
|
|
return;
|
|
}
|
|
if (Main.helpText == 216 && !Main.hardMode)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1138");
|
|
return;
|
|
}
|
|
if (Main.helpText == 1000 && !NPC.downedBoss1 && !NPC.downedBoss2)
|
|
{
|
|
Main.npcChatText = Lang.dialog(208);
|
|
return;
|
|
}
|
|
if (Main.helpText == 1001 && !NPC.downedBoss1 && !NPC.downedBoss2)
|
|
{
|
|
Main.npcChatText = Lang.dialog(209);
|
|
return;
|
|
}
|
|
if (Main.helpText == 1002 && !NPC.downedBoss2)
|
|
{
|
|
if (WorldGen.crimson)
|
|
{
|
|
Main.npcChatText = Lang.dialog(331);
|
|
return;
|
|
}
|
|
Main.npcChatText = Lang.dialog(210);
|
|
return;
|
|
}
|
|
if (Main.helpText == 1050 && !NPC.downedBoss1 && Main.player[Main.myPlayer].statLifeMax < 200)
|
|
{
|
|
Main.npcChatText = Lang.dialog(211);
|
|
return;
|
|
}
|
|
if (Main.helpText == 1051 && !NPC.downedBoss1 && Main.player[Main.myPlayer].statDefense <= 10)
|
|
{
|
|
Main.npcChatText = Lang.dialog(212);
|
|
return;
|
|
}
|
|
if (Main.helpText == 1052 && !NPC.downedBoss1 && Main.player[Main.myPlayer].statLifeMax >= 200 && Main.player[Main.myPlayer].statDefense > 10)
|
|
{
|
|
Main.npcChatText = Lang.dialog(WorldGen.crimson ? 404 : 213);
|
|
return;
|
|
}
|
|
if (Main.helpText == 1053 && NPC.downedBoss1 && !NPC.downedBoss2 && Main.player[Main.myPlayer].statLifeMax < 300)
|
|
{
|
|
Main.npcChatText = Lang.dialog(214);
|
|
return;
|
|
}
|
|
if (Main.helpText == 1054 && NPC.downedBoss1 && !NPC.downedBoss2 && !WorldGen.crimson && Main.player[Main.myPlayer].statLifeMax >= 300)
|
|
{
|
|
Main.npcChatText = Lang.dialog(215);
|
|
return;
|
|
}
|
|
if (Main.helpText == 1055 && NPC.downedBoss1 && !NPC.downedBoss2 && !WorldGen.crimson && Main.player[Main.myPlayer].statLifeMax >= 300)
|
|
{
|
|
Main.npcChatText = Lang.dialog(216);
|
|
return;
|
|
}
|
|
if (Main.helpText == 1056 && NPC.downedBoss1 && NPC.downedBoss2 && !NPC.downedBoss3)
|
|
{
|
|
Main.npcChatText = Lang.dialog(217);
|
|
return;
|
|
}
|
|
if (Main.helpText == 1057 && NPC.downedBoss1 && NPC.downedBoss2 && NPC.downedBoss3 && !Main.hardMode && Main.player[Main.myPlayer].statLifeMax < 400)
|
|
{
|
|
Main.npcChatText = Lang.dialog(218);
|
|
return;
|
|
}
|
|
if (Main.helpText == 1058 && NPC.downedBoss1 && NPC.downedBoss2 && NPC.downedBoss3 && !Main.hardMode && Main.player[Main.myPlayer].statLifeMax >= 400)
|
|
{
|
|
Main.npcChatText = Lang.dialog(219);
|
|
return;
|
|
}
|
|
if (Main.helpText == 1059 && NPC.downedBoss1 && NPC.downedBoss2 && NPC.downedBoss3 && !Main.hardMode && Main.player[Main.myPlayer].statLifeMax >= 400)
|
|
{
|
|
Main.npcChatText = Lang.dialog(220);
|
|
return;
|
|
}
|
|
if (Main.helpText == 1060 && NPC.downedBoss1 && NPC.downedBoss2 && NPC.downedBoss3 && !Main.hardMode && Main.player[Main.myPlayer].statLifeMax >= 400)
|
|
{
|
|
Main.npcChatText = Lang.dialog(221);
|
|
return;
|
|
}
|
|
if (Main.helpText == 1061 && Main.hardMode && !NPC.downedPlantBoss)
|
|
{
|
|
Main.npcChatText = Lang.dialog(WorldGen.crimson ? 401 : 222);
|
|
return;
|
|
}
|
|
if (Main.helpText == 1062 && Main.hardMode && !NPC.downedPlantBoss)
|
|
{
|
|
Main.npcChatText = Lang.dialog(223);
|
|
return;
|
|
}
|
|
if (Main.helpText == 1140 && NPC.downedBoss1 && !NPC.downedBoss2 && WorldGen.crimson && Main.player[Main.myPlayer].statLifeMax >= 300)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1140");
|
|
return;
|
|
}
|
|
if (Main.helpText == 1141 && NPC.downedBoss1 && !NPC.downedBoss2 && WorldGen.crimson && Main.player[Main.myPlayer].statLifeMax >= 300)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1141");
|
|
return;
|
|
}
|
|
if (Main.helpText == 1142 && NPC.downedBoss2 && !Main.hardMode)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1142");
|
|
return;
|
|
}
|
|
if (Main.helpText == 1143 && NPC.downedBoss2 && !NPC.downedQueenBee && Main.player[Main.myPlayer].statLifeMax >= 300)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1143");
|
|
return;
|
|
}
|
|
if (Main.helpText == 1144 & flag10)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1144");
|
|
return;
|
|
}
|
|
if (Main.helpText == 1145 & flag11 && !Main.hardMode)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1145");
|
|
return;
|
|
}
|
|
if (Main.helpText == 1146 && Main.hardMode && Main.player[Main.myPlayer].wingsLogic == 0 && !Main.LocalPlayer.mount.Active && !NPC.downedPlantBoss)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1146");
|
|
return;
|
|
}
|
|
if (Main.helpText == 1147 && Main.hardMode && WorldGen.SavedOreTiers.Adamantite == 111 && !NPC.downedMechBossAny)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1147");
|
|
return;
|
|
}
|
|
if (Main.helpText == 1148 && Main.hardMode && WorldGen.SavedOreTiers.Adamantite == 223 && !NPC.downedMechBossAny)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1148");
|
|
return;
|
|
}
|
|
if (Main.helpText == 1149 && Main.hardMode && NPC.downedMechBossAny && Main.player[Main.myPlayer].statLifeMax < 500)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1149");
|
|
return;
|
|
}
|
|
if (Main.helpText == 1150 && Main.hardMode && NPC.downedMechBoss1 && NPC.downedMechBoss2 && NPC.downedMechBoss3 && !NPC.downedPlantBoss)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1150");
|
|
return;
|
|
}
|
|
if (((Main.helpText != 1151 || !Main.hardMode || !NPC.downedPlantBoss ? 0 : (!NPC.downedGolemBoss ? 1 : 0)) & (flag12 ? 1 : 0)) != 0)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1151");
|
|
return;
|
|
}
|
|
if (Main.helpText == 1152 && Main.hardMode && NPC.downedPlantBoss && !NPC.downedGolemBoss && !flag12)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1152");
|
|
return;
|
|
}
|
|
if (((Main.helpText != 1153 ? 0 : (Main.hardMode ? 1 : 0)) & (flag13 ? 1 : 0)) != 0)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1153");
|
|
return;
|
|
}
|
|
if (Main.helpText == 1154 && Main.hardMode && !NPC.downedFishron)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1154");
|
|
return;
|
|
}
|
|
if (Main.helpText == 1155 && Main.hardMode && NPC.downedGolemBoss && !NPC.downedHalloweenTree && !NPC.downedHalloweenKing)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1155");
|
|
return;
|
|
}
|
|
if (Main.helpText == 1156 && Main.hardMode && NPC.downedGolemBoss && !NPC.downedChristmasIceQueen && !NPC.downedChristmasTree && !NPC.downedChristmasSantank)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1156");
|
|
return;
|
|
}
|
|
if (Main.helpText == 1157 && Main.hardMode && NPC.downedGolemBoss && NPC.AnyNPCs(437) && !NPC.downedMoonlord)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1157");
|
|
return;
|
|
}
|
|
if (Main.helpText == 1158 && Main.hardMode && NPC.LunarApocalypseIsUp && !NPC.downedMoonlord)
|
|
{
|
|
Main.npcChatText = Language.GetTextValue("GuideHelpTextSpecific.Help_1158");
|
|
return;
|
|
}
|
|
}
|
|
while (Main.helpText <= 1200);
|
|
Main.helpText = 0;
|
|
}
|
|
}
|
|
|
|
protected void GUIChatDrawInner()
|
|
{
|
|
if (Main.player[Main.myPlayer].talkNPC < 0 && Main.player[Main.myPlayer].sign == -1)
|
|
{
|
|
Main.npcChatText = "";
|
|
}
|
|
else
|
|
{
|
|
Microsoft.Xna.Framework.Color color1 = new Microsoft.Xna.Framework.Color(200, 200, 200, 200);
|
|
int num1 = ((int) Main.mouseTextColor * 2 + (int) byte.MaxValue) / 3;
|
|
Microsoft.Xna.Framework.Color color2 = new Microsoft.Xna.Framework.Color(num1, num1, num1, num1);
|
|
bool flag1 = Main.InGameUI.CurrentState is UIVirtualKeyboard && PlayerInput.UsingGamepad;
|
|
this._textDisplayCache.PrepareCache(Main.npcChatText);
|
|
string[] textLines = this._textDisplayCache.TextLines;
|
|
int amountOfLines = this._textDisplayCache.AmountOfLines;
|
|
bool flag2 = false;
|
|
if (Main.editSign)
|
|
{
|
|
++this.textBlinkerCount;
|
|
if (this.textBlinkerCount >= 20)
|
|
{
|
|
this.textBlinkerState = this.textBlinkerState != 0 ? 0 : 1;
|
|
this.textBlinkerCount = 0;
|
|
}
|
|
if (this.textBlinkerState == 1)
|
|
flag2 = true;
|
|
Main.instance.DrawWindowsIMEPanel(new Vector2((float) (Main.screenWidth / 2), 90f), 0.5f);
|
|
}
|
|
int numLines = amountOfLines + 1;
|
|
Main.spriteBatch.Draw(TextureAssets.ChatBack.Value, new Vector2((float) (Main.screenWidth / 2 - TextureAssets.ChatBack.Width() / 2), 100f), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.ChatBack.Width(), (numLines + 1) * 30)), color1, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
Main.spriteBatch.Draw(TextureAssets.ChatBack.Value, new Vector2((float) (Main.screenWidth / 2 - TextureAssets.ChatBack.Width() / 2), (float) (100 + (numLines + 1) * 30)), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, TextureAssets.ChatBack.Height() - 30, TextureAssets.ChatBack.Width(), 30)), color1, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
for (int index = 0; index < numLines; ++index)
|
|
{
|
|
string text = textLines[index];
|
|
if (text != null)
|
|
{
|
|
if (index == numLines - 1 & flag2)
|
|
text += "|";
|
|
Utils.DrawBorderStringFourWay(Main.spriteBatch, FontAssets.MouseText.Value, text, (float) (170 + (Main.screenWidth - 800) / 2), (float) (120 + index * 30), color2, Microsoft.Xna.Framework.Color.Black, Vector2.Zero);
|
|
}
|
|
}
|
|
Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.Rectangle(Main.screenWidth / 2 - TextureAssets.ChatBack.Width() / 2, 100, TextureAssets.ChatBack.Width(), (numLines + 2) * 30);
|
|
int num2 = 120 + numLines * 30 + 30 - 235;
|
|
UIVirtualKeyboard.ShouldHideText = !PlayerInput.UsingGamepad;
|
|
if (!PlayerInput.UsingGamepad)
|
|
num2 = 9999;
|
|
UIVirtualKeyboard.OffsetDown = num2;
|
|
if (Main.npcChatCornerItem != 0)
|
|
{
|
|
Vector2 position = new Vector2((float) (Main.screenWidth / 2 + TextureAssets.ChatBack.Width() / 2), (float) (100 + (numLines + 1) * 30 + 30)) - Vector2.One * 8f;
|
|
Item obj = new Item();
|
|
obj.netDefaults(Main.npcChatCornerItem);
|
|
float scale = 1f;
|
|
this.LoadItem(obj.type);
|
|
Texture2D texture = TextureAssets.Item[obj.type].Value;
|
|
if (texture.Width > 32 || texture.Height > 32)
|
|
scale = texture.Width <= texture.Height ? 32f / (float) texture.Height : 32f / (float) texture.Width;
|
|
Main.spriteBatch.Draw(texture, position, new Microsoft.Xna.Framework.Rectangle?(), obj.GetAlpha(Microsoft.Xna.Framework.Color.White), 0.0f, new Vector2((float) texture.Width, (float) texture.Height), scale, SpriteEffects.None, 0.0f);
|
|
if (obj.color != new Microsoft.Xna.Framework.Color())
|
|
Main.spriteBatch.Draw(texture, position, new Microsoft.Xna.Framework.Rectangle?(), obj.GetColor(obj.color), 0.0f, new Vector2((float) texture.Width, (float) texture.Height), scale, SpriteEffects.None, 0.0f);
|
|
if (new Microsoft.Xna.Framework.Rectangle((int) position.X - (int) ((double) texture.Width * (double) scale), (int) position.Y - (int) ((double) texture.Height * (double) scale), (int) ((double) texture.Width * (double) scale), (int) ((double) texture.Height * (double) scale)).Contains(new Microsoft.Xna.Framework.Point(Main.mouseX, Main.mouseY)))
|
|
this.MouseText(obj.Name, -11);
|
|
}
|
|
int mouseTextColor = (int) Main.mouseTextColor;
|
|
color2 = new Microsoft.Xna.Framework.Color(mouseTextColor, (int) ((double) mouseTextColor / 1.1), mouseTextColor / 2, mouseTextColor);
|
|
string focusText = "";
|
|
string focusText3 = "";
|
|
int num3 = Main.player[Main.myPlayer].statLifeMax2 - Main.player[Main.myPlayer].statLife;
|
|
for (int index1 = 0; index1 < 22; ++index1)
|
|
{
|
|
int index2 = Main.player[Main.myPlayer].buffType[index1];
|
|
if (Main.debuff[index2] && Main.player[Main.myPlayer].buffTime[index1] > 60 && index2 != 28 && index2 != 34 && index2 != 87 && index2 != 89 && index2 != 21 && index2 != 86 && index2 != 199)
|
|
num3 += 100;
|
|
}
|
|
if (NPC.downedGolemBoss)
|
|
num3 *= 200;
|
|
else if (NPC.downedPlantBoss)
|
|
num3 *= 150;
|
|
else if (NPC.downedMechBossAny)
|
|
num3 *= 100;
|
|
else if (Main.hardMode)
|
|
num3 *= 60;
|
|
else if (NPC.downedBoss3 || NPC.downedQueenBee)
|
|
num3 *= 25;
|
|
else if (NPC.downedBoss2)
|
|
num3 *= 10;
|
|
else if (NPC.downedBoss1)
|
|
num3 *= 3;
|
|
if (Main.expertMode)
|
|
num3 *= 2;
|
|
int num4 = (int) ((double) num3 * Main.player[Main.myPlayer].currentShoppingSettings.PriceAdjustment);
|
|
string str1 = (string) null;
|
|
string text1 = (string) null;
|
|
if (Main.player[Main.myPlayer].sign > -1)
|
|
focusText = !Main.editSign ? Lang.inter[48].Value : Lang.inter[47].Value;
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 20)
|
|
{
|
|
focusText = Lang.inter[28].Value;
|
|
focusText3 = Lang.inter[49].Value;
|
|
}
|
|
else if (NPCID.Sets.IsTownPet[Main.npc[Main.player[Main.myPlayer].talkNPC].type])
|
|
focusText = Language.GetTextValue("UI.PetTheAnimal");
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 207)
|
|
{
|
|
focusText = Lang.inter[28].Value;
|
|
if (Main.hardMode)
|
|
focusText3 = Lang.inter[107].Value;
|
|
}
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 453)
|
|
focusText = Lang.inter[28].Value;
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 550)
|
|
{
|
|
focusText = Lang.inter[28].Value;
|
|
focusText3 = Language.GetTextValue("UI.BartenderHelp");
|
|
}
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 588)
|
|
focusText = Lang.inter[28].Value;
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 633)
|
|
focusText = Lang.inter[28].Value;
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 353)
|
|
{
|
|
focusText = Lang.inter[28].Value;
|
|
focusText3 = Language.GetTextValue("GameUI.HairStyle");
|
|
}
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 368)
|
|
focusText = Lang.inter[28].Value;
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 369)
|
|
focusText = Lang.inter[64].Value;
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 208)
|
|
{
|
|
focusText = Lang.inter[28].Value;
|
|
if (Main.TOWMusicUnlocked)
|
|
focusText3 = Language.GetTextValue("GameUI.Music");
|
|
}
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 17 || Main.npc[Main.player[Main.myPlayer].talkNPC].type == 19 || Main.npc[Main.player[Main.myPlayer].talkNPC].type == 38 || Main.npc[Main.player[Main.myPlayer].talkNPC].type == 54 || Main.npc[Main.player[Main.myPlayer].talkNPC].type == 107 || Main.npc[Main.player[Main.myPlayer].talkNPC].type == 108 || Main.npc[Main.player[Main.myPlayer].talkNPC].type == 124 || Main.npc[Main.player[Main.myPlayer].talkNPC].type == 142 || Main.npc[Main.player[Main.myPlayer].talkNPC].type == 160 || Main.npc[Main.player[Main.myPlayer].talkNPC].type == 178 || Main.npc[Main.player[Main.myPlayer].talkNPC].type == 207 || Main.npc[Main.player[Main.myPlayer].talkNPC].type == 209 || Main.npc[Main.player[Main.myPlayer].talkNPC].type == 227 || Main.npc[Main.player[Main.myPlayer].talkNPC].type == 228 || Main.npc[Main.player[Main.myPlayer].talkNPC].type == 229)
|
|
{
|
|
focusText = Lang.inter[28].Value;
|
|
if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 107)
|
|
focusText3 = Lang.inter[19].Value;
|
|
}
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 37)
|
|
{
|
|
if (!Main.dayTime)
|
|
focusText = Lang.inter[50].Value;
|
|
}
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 22)
|
|
{
|
|
focusText = Lang.inter[51].Value;
|
|
focusText3 = Lang.inter[25].Value;
|
|
}
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 441)
|
|
{
|
|
if (Main.player[Main.myPlayer].taxMoney <= 0)
|
|
{
|
|
focusText = Lang.inter[89].Value;
|
|
}
|
|
else
|
|
{
|
|
string str2 = "";
|
|
int num5 = 0;
|
|
int num6 = 0;
|
|
int num7 = 0;
|
|
int num8 = 0;
|
|
int num9 = (int) ((double) Main.player[Main.myPlayer].taxMoney / Main.player[Main.myPlayer].currentShoppingSettings.PriceAdjustment);
|
|
if (num9 < 0)
|
|
num9 = 0;
|
|
num4 = num9;
|
|
if (num9 >= 1000000)
|
|
{
|
|
num5 = num9 / 1000000;
|
|
num9 -= num5 * 1000000;
|
|
}
|
|
if (num9 >= 10000)
|
|
{
|
|
num6 = num9 / 10000;
|
|
num9 -= num6 * 10000;
|
|
}
|
|
if (num9 >= 100)
|
|
{
|
|
num7 = num9 / 100;
|
|
num9 -= num7 * 100;
|
|
}
|
|
if (num9 >= 1)
|
|
num8 = num9;
|
|
if (num5 > 0)
|
|
str2 = str2 + (object) num5 + " " + Lang.inter[15].Value + " ";
|
|
if (num6 > 0)
|
|
str2 = str2 + (object) num6 + " " + Lang.inter[16].Value + " ";
|
|
if (num7 > 0)
|
|
str2 = str2 + (object) num7 + " " + Lang.inter[17].Value + " ";
|
|
if (num8 > 0)
|
|
str2 = str2 + (object) num8 + " " + Lang.inter[18].Value + " ";
|
|
float num10 = (float) Main.mouseTextColor / (float) byte.MaxValue;
|
|
if (num5 > 0)
|
|
color2 = new Microsoft.Xna.Framework.Color((int) (byte) (220.0 * (double) num10), (int) (byte) (220.0 * (double) num10), (int) (byte) (198.0 * (double) num10), (int) Main.mouseTextColor);
|
|
else if (num6 > 0)
|
|
color2 = new Microsoft.Xna.Framework.Color((int) (byte) (224.0 * (double) num10), (int) (byte) (201.0 * (double) num10), (int) (byte) (92.0 * (double) num10), (int) Main.mouseTextColor);
|
|
else if (num7 > 0)
|
|
color2 = new Microsoft.Xna.Framework.Color((int) (byte) (181.0 * (double) num10), (int) (byte) (192.0 * (double) num10), (int) (byte) (193.0 * (double) num10), (int) Main.mouseTextColor);
|
|
else if (num8 > 0)
|
|
color2 = new Microsoft.Xna.Framework.Color((int) (byte) (246.0 * (double) num10), (int) (byte) (138.0 * (double) num10), (int) (byte) (96.0 * (double) num10), (int) Main.mouseTextColor);
|
|
string str3;
|
|
if (str2 == "")
|
|
{
|
|
str3 = Lang.inter[89].Value;
|
|
}
|
|
else
|
|
{
|
|
string str4 = str2.Substring(0, str2.Length - 1);
|
|
str3 = Lang.inter[89].Value + " (" + str4 + ")";
|
|
}
|
|
string str5 = Lang.inter[89].Value;
|
|
text1 = str5;
|
|
str1 = "";
|
|
for (int index = 0; index < str5.Length; ++index)
|
|
str1 += " ";
|
|
focusText = str5 + str1 + " ";
|
|
}
|
|
}
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 18)
|
|
{
|
|
string str6 = "";
|
|
int num11 = 0;
|
|
int num12 = 0;
|
|
int num13 = 0;
|
|
int num14 = 0;
|
|
int num15 = num4;
|
|
if (num15 > 0 && num15 < 1)
|
|
num15 = 1;
|
|
if (num15 < 0)
|
|
num15 = 0;
|
|
num4 = num15;
|
|
if (num15 >= 1000000)
|
|
{
|
|
num11 = num15 / 1000000;
|
|
num15 -= num11 * 1000000;
|
|
}
|
|
if (num15 >= 10000)
|
|
{
|
|
num12 = num15 / 10000;
|
|
num15 -= num12 * 10000;
|
|
}
|
|
if (num15 >= 100)
|
|
{
|
|
num13 = num15 / 100;
|
|
num15 -= num13 * 100;
|
|
}
|
|
if (num15 >= 1)
|
|
num14 = num15;
|
|
if (num11 > 0)
|
|
str6 = str6 + (object) num11 + " " + Lang.inter[15].Value + " ";
|
|
if (num12 > 0)
|
|
str6 = str6 + (object) num12 + " " + Lang.inter[16].Value + " ";
|
|
if (num13 > 0)
|
|
str6 = str6 + (object) num13 + " " + Lang.inter[17].Value + " ";
|
|
if (num14 > 0)
|
|
str6 = str6 + (object) num14 + " " + Lang.inter[18].Value + " ";
|
|
float num16 = (float) Main.mouseTextColor / (float) byte.MaxValue;
|
|
if (num11 > 0)
|
|
color2 = new Microsoft.Xna.Framework.Color((int) (byte) (220.0 * (double) num16), (int) (byte) (220.0 * (double) num16), (int) (byte) (198.0 * (double) num16), (int) Main.mouseTextColor);
|
|
else if (num12 > 0)
|
|
color2 = new Microsoft.Xna.Framework.Color((int) (byte) (224.0 * (double) num16), (int) (byte) (201.0 * (double) num16), (int) (byte) (92.0 * (double) num16), (int) Main.mouseTextColor);
|
|
else if (num13 > 0)
|
|
color2 = new Microsoft.Xna.Framework.Color((int) (byte) (181.0 * (double) num16), (int) (byte) (192.0 * (double) num16), (int) (byte) (193.0 * (double) num16), (int) Main.mouseTextColor);
|
|
else if (num14 > 0)
|
|
color2 = new Microsoft.Xna.Framework.Color((int) (byte) (246.0 * (double) num16), (int) (byte) (138.0 * (double) num16), (int) (byte) (96.0 * (double) num16), (int) Main.mouseTextColor);
|
|
if (str6 == "")
|
|
{
|
|
focusText = Lang.inter[54].Value;
|
|
}
|
|
else
|
|
{
|
|
string str7 = str6.Substring(0, str6.Length - 1);
|
|
focusText = Lang.inter[54].Value + " (" + str7 + ")";
|
|
}
|
|
}
|
|
if (!flag1)
|
|
{
|
|
Main.DrawNPCChatButtons(mouseTextColor, color2, numLines, focusText, focusText3);
|
|
if (str1 != null)
|
|
{
|
|
float num17 = (float) (130 + numLines * 30);
|
|
float shopx = (float) (180 + (Main.screenWidth - 800) / 2) + (ChatManager.GetStringSize(FontAssets.MouseText.Value, text1, new Vector2(0.9f)).X - 20f);
|
|
int num18 = (int) ((double) Main.player[Main.myPlayer].taxMoney / Main.player[Main.myPlayer].currentShoppingSettings.PriceAdjustment);
|
|
ItemSlot.DrawMoney(Main.spriteBatch, "", shopx, num17 - 40f, Utils.CoinsSplit((long) num18), true);
|
|
}
|
|
}
|
|
if (PlayerInput.IgnoreMouseInterface)
|
|
return;
|
|
if (rectangle.Contains(new Microsoft.Xna.Framework.Point(Main.mouseX, Main.mouseY)))
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
if (!Main.mouseLeft || !Main.mouseLeftRelease || !rectangle.Contains(new Microsoft.Xna.Framework.Point(Main.mouseX, Main.mouseY)))
|
|
return;
|
|
Main.mouseLeftRelease = false;
|
|
Main.player[Main.myPlayer].releaseUseItem = false;
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
if (Main.npcChatFocus1)
|
|
Main.CloseNPCChatOrSign();
|
|
else if (Main.npcChatFocus2)
|
|
{
|
|
if (Main.player[Main.myPlayer].sign != -1)
|
|
{
|
|
if (Main.editSign)
|
|
Main.SubmitSignText();
|
|
else
|
|
IngameFancyUI.OpenVirtualKeyboard(1);
|
|
}
|
|
else if (NPCID.Sets.IsTownPet[Main.npc[Main.player[Main.myPlayer].talkNPC].type])
|
|
Main.player[Main.myPlayer].PetAnimal(Main.player[Main.myPlayer].talkNPC);
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 369)
|
|
{
|
|
Main.npcChatCornerItem = 0;
|
|
SoundEngine.PlaySound(12);
|
|
bool turnIn = false;
|
|
if (!Main.anglerQuestFinished && !Main.anglerWhoFinishedToday.Contains(Main.player[Main.myPlayer].name))
|
|
{
|
|
int index = Main.player[Main.myPlayer].FindItem(Main.anglerQuestItemNetIDs[Main.anglerQuest]);
|
|
if (index != -1)
|
|
{
|
|
--Main.player[Main.myPlayer].inventory[index].stack;
|
|
if (Main.player[Main.myPlayer].inventory[index].stack <= 0)
|
|
Main.player[Main.myPlayer].inventory[index] = new Item();
|
|
turnIn = true;
|
|
SoundEngine.PlaySound(24);
|
|
++Main.player[Main.myPlayer].anglerQuestsFinished;
|
|
Main.player[Main.myPlayer].GetAnglerReward();
|
|
}
|
|
}
|
|
Main.npcChatText = Lang.AnglerQuestChat(turnIn);
|
|
if (!turnIn)
|
|
return;
|
|
Main.anglerQuestFinished = true;
|
|
if (Main.netMode == 1)
|
|
NetMessage.SendData(75);
|
|
else
|
|
Main.anglerWhoFinishedToday.Add(Main.player[Main.myPlayer].name);
|
|
AchievementsHelper.HandleAnglerService();
|
|
}
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 17)
|
|
this.OpenShop(1);
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 19)
|
|
this.OpenShop(2);
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 124)
|
|
this.OpenShop(8);
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 142)
|
|
this.OpenShop(9);
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 37)
|
|
{
|
|
if (Main.netMode == 0)
|
|
NPC.SpawnSkeletron();
|
|
else
|
|
NetMessage.SendData(51, number: Main.myPlayer, number2: 1f);
|
|
Main.npcChatText = "";
|
|
}
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 20)
|
|
this.OpenShop(3);
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 38)
|
|
this.OpenShop(4);
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 54)
|
|
this.OpenShop(5);
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 107)
|
|
this.OpenShop(6);
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 108)
|
|
this.OpenShop(7);
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 160)
|
|
this.OpenShop(10);
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 178)
|
|
this.OpenShop(11);
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 207)
|
|
this.OpenShop(12);
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 208)
|
|
this.OpenShop(13);
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 209)
|
|
this.OpenShop(14);
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 227)
|
|
this.OpenShop(15);
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 228)
|
|
this.OpenShop(16);
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 229)
|
|
this.OpenShop(17);
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 353)
|
|
this.OpenShop(18);
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 368)
|
|
this.OpenShop(19);
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 453)
|
|
this.OpenShop(20);
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 550)
|
|
this.OpenShop(21);
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 588)
|
|
this.OpenShop(22);
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 633)
|
|
this.OpenShop(23);
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 22)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
Main.HelpText();
|
|
}
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 441)
|
|
{
|
|
if (Main.player[Main.myPlayer].taxMoney > 0)
|
|
{
|
|
int num19 = (int) ((double) Main.player[Main.myPlayer].taxMoney / Main.player[Main.myPlayer].currentShoppingSettings.PriceAdjustment);
|
|
while (num19 > 0)
|
|
{
|
|
if (num19 > 1000000)
|
|
{
|
|
int Stack = num19 / 1000000;
|
|
num19 -= 1000000 * Stack;
|
|
int number = Item.NewItem((int) Main.player[Main.myPlayer].position.X, (int) Main.player[Main.myPlayer].position.Y, Main.player[Main.myPlayer].width, Main.player[Main.myPlayer].height, 74, Stack);
|
|
if (Main.netMode == 1)
|
|
NetMessage.SendData(21, number: number, number2: 1f);
|
|
}
|
|
else if (num19 > 10000)
|
|
{
|
|
int Stack = num19 / 10000;
|
|
num19 -= 10000 * Stack;
|
|
int number = Item.NewItem((int) Main.player[Main.myPlayer].position.X, (int) Main.player[Main.myPlayer].position.Y, Main.player[Main.myPlayer].width, Main.player[Main.myPlayer].height, 73, Stack);
|
|
if (Main.netMode == 1)
|
|
NetMessage.SendData(21, number: number, number2: 1f);
|
|
}
|
|
else if (num19 > 100)
|
|
{
|
|
int Stack = num19 / 100;
|
|
num19 -= 100 * Stack;
|
|
int number = Item.NewItem((int) Main.player[Main.myPlayer].position.X, (int) Main.player[Main.myPlayer].position.Y, Main.player[Main.myPlayer].width, Main.player[Main.myPlayer].height, 72, Stack);
|
|
if (Main.netMode == 1)
|
|
NetMessage.SendData(21, number: number, number2: 1f);
|
|
}
|
|
else
|
|
{
|
|
int Stack = num19;
|
|
if (Stack < 1)
|
|
Stack = 1;
|
|
num19 -= Stack;
|
|
int number = Item.NewItem((int) Main.player[Main.myPlayer].position.X, (int) Main.player[Main.myPlayer].position.Y, Main.player[Main.myPlayer].width, Main.player[Main.myPlayer].height, 71, Stack);
|
|
if (Main.netMode == 1)
|
|
NetMessage.SendData(21, number: number, number2: 1f);
|
|
}
|
|
}
|
|
Main.npcChatText = Lang.dialog(Main.rand.Next(380, 382));
|
|
Main.player[Main.myPlayer].taxMoney = 0;
|
|
}
|
|
else
|
|
Main.npcChatText = Lang.dialog(Main.rand.Next(390, 401));
|
|
}
|
|
else
|
|
{
|
|
if (Main.npc[Main.player[Main.myPlayer].talkNPC].type != 18)
|
|
return;
|
|
SoundEngine.PlaySound(12);
|
|
if (num4 > 0)
|
|
{
|
|
if (Main.player[Main.myPlayer].BuyItem(num4))
|
|
{
|
|
AchievementsHelper.HandleNurseService(num4);
|
|
SoundEngine.PlaySound(SoundID.Item4);
|
|
Main.player[Main.myPlayer].HealEffect(Main.player[Main.myPlayer].statLifeMax2 - Main.player[Main.myPlayer].statLife);
|
|
Main.npcChatText = (double) Main.player[Main.myPlayer].statLife >= (double) Main.player[Main.myPlayer].statLifeMax2 * 0.25 ? ((double) Main.player[Main.myPlayer].statLife >= (double) Main.player[Main.myPlayer].statLifeMax2 * 0.5 ? ((double) Main.player[Main.myPlayer].statLife >= (double) Main.player[Main.myPlayer].statLifeMax2 * 0.75 ? Lang.dialog(230) : Lang.dialog(229)) : Lang.dialog(228)) : Lang.dialog(227);
|
|
Main.player[Main.myPlayer].statLife = Main.player[Main.myPlayer].statLifeMax2;
|
|
for (int b = 0; b < 22; ++b)
|
|
{
|
|
int index = Main.player[Main.myPlayer].buffType[b];
|
|
if (Main.debuff[index] && Main.player[Main.myPlayer].buffTime[b] > 0 && index != 28 && index != 34 && index != 87 && index != 89 && index != 21 && index != 86 && index != 199)
|
|
{
|
|
Main.player[Main.myPlayer].DelBuff(b);
|
|
b = -1;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
int num20 = Main.rand.Next(3);
|
|
if (num20 == 0)
|
|
Main.npcChatText = Lang.dialog(52);
|
|
if (num20 == 1)
|
|
Main.npcChatText = Lang.dialog(53);
|
|
if (num20 != 2)
|
|
return;
|
|
Main.npcChatText = Lang.dialog(54);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
int num21 = Main.rand.Next(3);
|
|
if (!ChildSafety.Disabled)
|
|
num21 = Main.rand.Next(1, 3);
|
|
switch (num21)
|
|
{
|
|
case 0:
|
|
Main.npcChatText = Lang.dialog(55);
|
|
break;
|
|
case 1:
|
|
Main.npcChatText = Lang.dialog(56);
|
|
break;
|
|
case 2:
|
|
Main.npcChatText = Lang.dialog(57);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if (Main.npcChatFocus4)
|
|
{
|
|
Main.npcChatCornerItem = 0;
|
|
SoundEngine.PlaySound(12);
|
|
Main.npcChatText = Main.player[Main.myPlayer].currentShoppingSettings.HappinessReport;
|
|
}
|
|
else
|
|
{
|
|
if (!Main.npcChatFocus3 || Main.player[Main.myPlayer].talkNPC < 0)
|
|
return;
|
|
if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 20)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
Main.npcChatText = Lang.GetDryadWorldStatusDialog();
|
|
}
|
|
if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 208)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
Main.npcChatText = Language.GetTextValue("PartyGirlSpecialText.Music" + (object) Main.rand.Next(1, 4));
|
|
Main.swapMusic = !Main.swapMusic;
|
|
}
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 22)
|
|
{
|
|
Main.playerInventory = true;
|
|
Main.npcChatText = "";
|
|
SoundEngine.PlaySound(12);
|
|
Main.InGuideCraftMenu = true;
|
|
UILinkPointNavigator.GoToDefaultPage();
|
|
}
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 107)
|
|
{
|
|
Main.playerInventory = true;
|
|
Main.npcChatText = "";
|
|
SoundEngine.PlaySound(12);
|
|
Main.InReforgeMenu = true;
|
|
UILinkPointNavigator.GoToDefaultPage();
|
|
}
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 353)
|
|
Main.OpenHairWindow();
|
|
else if (Main.npc[Main.player[Main.myPlayer].talkNPC].type == 207)
|
|
{
|
|
Main.npcChatCornerItem = 0;
|
|
SoundEngine.PlaySound(12);
|
|
bool gotDye = false;
|
|
int index = Main.player[Main.myPlayer].FindItem(ItemID.Sets.ExoticPlantsForDyeTrade);
|
|
if (index != -1)
|
|
{
|
|
--Main.player[Main.myPlayer].inventory[index].stack;
|
|
if (Main.player[Main.myPlayer].inventory[index].stack <= 0)
|
|
Main.player[Main.myPlayer].inventory[index] = new Item();
|
|
gotDye = true;
|
|
SoundEngine.PlaySound(24);
|
|
Main.player[Main.myPlayer].GetDyeTraderReward();
|
|
}
|
|
Main.npcChatText = Lang.DyeTraderQuestChat(gotDye);
|
|
}
|
|
else
|
|
{
|
|
if (Main.npc[Main.player[Main.myPlayer].talkNPC].type != 550)
|
|
return;
|
|
SoundEngine.PlaySound(12);
|
|
Main.HelpText();
|
|
Main.npcChatText = Lang.BartenderHelpText(Main.npc[Main.player[Main.myPlayer].talkNPC]);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private void OpenShop(int shopIndex)
|
|
{
|
|
Main.playerInventory = true;
|
|
Main.stackSplit = 9999;
|
|
Main.npcChatText = "";
|
|
Main.SetNPCShopIndex(shopIndex);
|
|
this.shop[Main.npcShop].SetupShop(Main.npcShop);
|
|
SoundEngine.PlaySound(12);
|
|
}
|
|
|
|
public static void SetNPCShopIndex(int index) => Main.npcShop = index;
|
|
|
|
private static void DrawNPCChatButtons(
|
|
int superColor,
|
|
Microsoft.Xna.Framework.Color chatColor,
|
|
int numLines,
|
|
string focusText,
|
|
string focusText3)
|
|
{
|
|
float y = (float) (130 + numLines * 30);
|
|
int num1 = 180 + (Main.screenWidth - 800) / 2;
|
|
Vector2 vec = new Vector2((float) Main.mouseX, (float) Main.mouseY);
|
|
Player player = Main.player[Main.myPlayer];
|
|
Vector2 vector2_1 = new Vector2((float) num1, y);
|
|
string text1 = focusText;
|
|
DynamicSpriteFont font1 = FontAssets.MouseText.Value;
|
|
Vector2 minimum1 = vector2_1;
|
|
Vector2 baseScale = new Vector2(0.9f);
|
|
Vector2 stringSize1 = ChatManager.GetStringSize(font1, text1, baseScale);
|
|
Microsoft.Xna.Framework.Color baseColor1 = chatColor;
|
|
Microsoft.Xna.Framework.Color black = Microsoft.Xna.Framework.Color.Black;
|
|
Vector2 vector2_2 = new Vector2(1f);
|
|
Microsoft.Xna.Framework.Color brown = Microsoft.Xna.Framework.Color.Brown;
|
|
float num2 = 1.2f;
|
|
if ((double) stringSize1.X > 260.0)
|
|
vector2_2.X *= 260f / stringSize1.X;
|
|
if (vec.Between(minimum1, minimum1 + stringSize1 * baseScale * vector2_2.X) && !PlayerInput.IgnoreMouseInterface)
|
|
{
|
|
player.mouseInterface = true;
|
|
player.releaseUseItem = false;
|
|
baseScale *= num2;
|
|
if (!Main.npcChatFocus2)
|
|
SoundEngine.PlaySound(12);
|
|
Main.npcChatFocus2 = true;
|
|
}
|
|
else
|
|
{
|
|
if (Main.npcChatFocus2)
|
|
SoundEngine.PlaySound(12);
|
|
Main.npcChatFocus2 = false;
|
|
}
|
|
Microsoft.Xna.Framework.Color baseColor2 = !Main.npcChatFocus2 ? Microsoft.Xna.Framework.Color.Black : brown;
|
|
ChatManager.DrawColorCodedStringShadow(Main.spriteBatch, font1, text1, minimum1 + stringSize1 * vector2_2 * 0.5f, baseColor2, 0.0f, stringSize1 * 0.5f, baseScale * vector2_2);
|
|
ChatManager.DrawColorCodedString(Main.spriteBatch, font1, text1, minimum1 + stringSize1 * vector2_2 * 0.5f, baseColor1, 0.0f, stringSize1 * 0.5f, baseScale * vector2_2);
|
|
if (text1.Length > 0)
|
|
{
|
|
UILinkPointNavigator.SetPosition(2500, minimum1 + stringSize1 * 0.5f);
|
|
UILinkPointNavigator.Shortcuts.NPCCHAT_ButtonsLeft = true;
|
|
}
|
|
Vector2 vector2_3 = new Vector2((float) ((double) num1 + (double) stringSize1.X * (double) vector2_2.X + 30.0), y);
|
|
string text2 = Lang.inter[52].Value;
|
|
DynamicSpriteFont font2 = FontAssets.MouseText.Value;
|
|
Vector2 minimum2 = vector2_3;
|
|
baseScale = new Vector2(0.9f);
|
|
Vector2 stringSize2 = ChatManager.GetStringSize(font2, text2, baseScale);
|
|
baseColor1 = new Microsoft.Xna.Framework.Color(superColor, (int) ((double) superColor / 1.1), superColor / 2, superColor);
|
|
vector2_2 = new Vector2(1f);
|
|
if (vec.Between(minimum2, minimum2 + stringSize2 * baseScale * vector2_2.X) && !PlayerInput.IgnoreMouseInterface)
|
|
{
|
|
player.mouseInterface = true;
|
|
player.releaseUseItem = false;
|
|
baseScale *= num2;
|
|
if (!Main.npcChatFocus1)
|
|
SoundEngine.PlaySound(12);
|
|
Main.npcChatFocus1 = true;
|
|
}
|
|
else
|
|
{
|
|
if (Main.npcChatFocus1)
|
|
SoundEngine.PlaySound(12);
|
|
Main.npcChatFocus1 = false;
|
|
}
|
|
Microsoft.Xna.Framework.Color baseColor3 = !Main.npcChatFocus1 ? Microsoft.Xna.Framework.Color.Black : brown;
|
|
ChatManager.DrawColorCodedStringShadow(Main.spriteBatch, font2, text2, minimum2 + stringSize2 * vector2_2 * 0.5f, baseColor3, 0.0f, stringSize2 * 0.5f, baseScale * vector2_2);
|
|
ChatManager.DrawColorCodedString(Main.spriteBatch, font2, text2, minimum2 + stringSize2 * vector2_2 * 0.5f, baseColor1, 0.0f, stringSize2 * 0.5f, baseScale * vector2_2);
|
|
if (text2.Length > 0)
|
|
{
|
|
UILinkPointNavigator.SetPosition(2501, minimum2 + stringSize2 * 0.5f);
|
|
UILinkPointNavigator.Shortcuts.NPCCHAT_ButtonsMiddle = true;
|
|
}
|
|
if (string.IsNullOrWhiteSpace(focusText3))
|
|
{
|
|
Main.npcChatFocus3 = false;
|
|
UILinkPointNavigator.Shortcuts.NPCCHAT_ButtonsRight = false;
|
|
}
|
|
else
|
|
{
|
|
Vector2 vector2_4 = new Vector2((float) ((double) vector2_3.X + (double) stringSize2.X * (double) vector2_2.X + 30.0), y);
|
|
string text3 = focusText3;
|
|
DynamicSpriteFont font3 = FontAssets.MouseText.Value;
|
|
Vector2 minimum3 = vector2_4;
|
|
baseScale = new Vector2(0.9f);
|
|
stringSize2 = ChatManager.GetStringSize(font3, text3, baseScale);
|
|
baseColor1 = chatColor;
|
|
vector2_2 = new Vector2(1f);
|
|
vector2_3.X = vector2_4.X;
|
|
if (vec.Between(minimum3, minimum3 + stringSize2 * baseScale * vector2_2.X) && !PlayerInput.IgnoreMouseInterface)
|
|
{
|
|
player.mouseInterface = true;
|
|
player.releaseUseItem = false;
|
|
baseScale *= num2;
|
|
if (!Main.npcChatFocus3)
|
|
SoundEngine.PlaySound(12);
|
|
Main.npcChatFocus3 = true;
|
|
}
|
|
else
|
|
{
|
|
if (Main.npcChatFocus3)
|
|
SoundEngine.PlaySound(12);
|
|
Main.npcChatFocus3 = false;
|
|
}
|
|
Microsoft.Xna.Framework.Color baseColor4 = !Main.npcChatFocus3 ? Microsoft.Xna.Framework.Color.Black : brown;
|
|
ChatManager.DrawColorCodedStringShadow(Main.spriteBatch, font3, text3, minimum3 + stringSize2 * vector2_2 * 0.5f, baseColor4, 0.0f, stringSize2 * 0.5f, baseScale * vector2_2);
|
|
ChatManager.DrawColorCodedString(Main.spriteBatch, font3, text3, minimum3 + stringSize2 * vector2_2 * 0.5f, baseColor1, 0.0f, stringSize2 * 0.5f, baseScale * vector2_2);
|
|
UILinkPointNavigator.SetPosition(2502, minimum3 + stringSize2 * 0.5f);
|
|
UILinkPointNavigator.Shortcuts.NPCCHAT_ButtonsRight = true;
|
|
}
|
|
if (Main.player[Main.myPlayer].currentShoppingSettings.HappinessReport == "")
|
|
{
|
|
Main.npcChatFocus4 = false;
|
|
UILinkPointNavigator.Shortcuts.NPCCHAT_ButtonsRight2 = false;
|
|
}
|
|
else
|
|
{
|
|
string textValue = Language.GetTextValue("UI.NPCCheckHappiness");
|
|
Vector2 vector2_5 = new Vector2((float) ((double) vector2_3.X + (double) stringSize2.X * (double) vector2_2.X + 30.0), y);
|
|
string text4 = textValue;
|
|
DynamicSpriteFont font4 = FontAssets.MouseText.Value;
|
|
Vector2 minimum4 = vector2_5;
|
|
baseScale = new Vector2(0.9f);
|
|
Vector2 stringSize3 = ChatManager.GetStringSize(font4, text4, baseScale);
|
|
baseColor1 = new Microsoft.Xna.Framework.Color(superColor, (int) ((double) superColor / 1.1), superColor / 2, superColor);
|
|
vector2_2 = new Vector2(1f);
|
|
if (vec.Between(minimum4, minimum4 + stringSize3 * baseScale * vector2_2.X) && !PlayerInput.IgnoreMouseInterface)
|
|
{
|
|
player.mouseInterface = true;
|
|
player.releaseUseItem = false;
|
|
baseScale *= num2;
|
|
if (!Main.npcChatFocus4)
|
|
SoundEngine.PlaySound(12);
|
|
Main.npcChatFocus4 = true;
|
|
}
|
|
else
|
|
{
|
|
if (Main.npcChatFocus4)
|
|
SoundEngine.PlaySound(12);
|
|
Main.npcChatFocus4 = false;
|
|
}
|
|
Microsoft.Xna.Framework.Color baseColor5 = !Main.npcChatFocus4 ? Microsoft.Xna.Framework.Color.Black : brown;
|
|
ChatManager.DrawColorCodedStringShadow(Main.spriteBatch, font4, text4, minimum4 + stringSize3 * vector2_2 * 0.5f, baseColor5, 0.0f, stringSize3 * 0.5f, baseScale * vector2_2);
|
|
ChatManager.DrawColorCodedString(Main.spriteBatch, font4, text4, minimum4 + stringSize3 * vector2_2 * 0.5f, baseColor1, 0.0f, stringSize3 * 0.5f, baseScale * vector2_2);
|
|
UILinkPointNavigator.SetPosition(2503, minimum4 + stringSize3 * 0.5f);
|
|
UILinkPointNavigator.Shortcuts.NPCCHAT_ButtonsRight2 = true;
|
|
}
|
|
}
|
|
|
|
public static void CloseNPCChatOrSign()
|
|
{
|
|
Main.player[Main.myPlayer].sign = -1;
|
|
Main.editSign = false;
|
|
Main.player[Main.myPlayer].SetTalkNPC(-1);
|
|
Main.npcChatCornerItem = 0;
|
|
Main.npcChatText = "";
|
|
SoundEngine.PlaySound(11);
|
|
Main.player[Main.myPlayer].releaseMount = false;
|
|
}
|
|
|
|
public static void SubmitSignText()
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
int sign = Main.player[Main.myPlayer].sign;
|
|
Sign.TextSign(sign, Main.npcChatText);
|
|
Main.editSign = false;
|
|
if (Main.netMode != 1)
|
|
return;
|
|
NetMessage.SendData(47, number: sign);
|
|
}
|
|
|
|
private int NPCBannerSorter(int npcIndex1, int npcIndex2) => -Main.npc[npcIndex1].housingCategory.CompareTo(Main.npc[npcIndex2].housingCategory);
|
|
|
|
protected void DrawNPCHousesInWorld()
|
|
{
|
|
this._npcsWithBannersToDraw.Clear();
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active && Main.npc[index].townNPC && !Main.npc[index].homeless && Main.npc[index].homeTileX > 0 && Main.npc[index].homeTileY > 0 && Main.npc[index].type != 37)
|
|
this._npcsWithBannersToDraw.Add(index);
|
|
}
|
|
this._npcsWithBannersToDraw.Sort(new Comparison<int>(this.NPCBannerSorter));
|
|
for (int index1 = 0; index1 < this._npcsWithBannersToDraw.Count; ++index1)
|
|
{
|
|
int n = this._npcsWithBannersToDraw[index1];
|
|
NPC npc = Main.npc[n];
|
|
if (npc.active && npc.townNPC && !npc.homeless && npc.homeTileX > 0 && npc.homeTileY > 0 && npc.type != 37)
|
|
{
|
|
int bannerStyle = 0;
|
|
int housingCategory = npc.housingCategory;
|
|
int homeTileX = npc.homeTileX;
|
|
int index2 = npc.homeTileY - 1;
|
|
WorldGen.TownManager.AddOccupantsToList(homeTileX, index2 + 1, this._occupantsListToDrawNPCHouses);
|
|
if (this._occupantsListToDrawNPCHouses.Contains(npc.type))
|
|
bannerStyle = 1;
|
|
int num1 = 0;
|
|
for (int index3 = this._npcsWithBannersToDraw.Count - 1; index3 > index1; --index3)
|
|
{
|
|
int index4 = this._npcsWithBannersToDraw[index3];
|
|
if (Main.npc[index4].homeTileX == homeTileX && Main.npc[index4].homeTileY == index2 + 1)
|
|
++num1;
|
|
}
|
|
int num2 = num1 * 26;
|
|
if (Main.tile[homeTileX, index2] != null)
|
|
{
|
|
bool flag = false;
|
|
while (!Main.tile[homeTileX, index2].active() || !Main.tileSolid[(int) Main.tile[homeTileX, index2].type])
|
|
{
|
|
--index2;
|
|
if (index2 >= 10)
|
|
{
|
|
if (Main.tile[homeTileX, index2] == null)
|
|
{
|
|
flag = true;
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
break;
|
|
}
|
|
if (!flag)
|
|
{
|
|
int num3 = 8;
|
|
int num4 = 18;
|
|
if (Main.tile[homeTileX, index2].type == (ushort) 19)
|
|
num4 -= 8;
|
|
int y = index2 + 1;
|
|
int num5 = 0;
|
|
float num6 = (float) (y * 16) + (float) num2;
|
|
SpriteEffects effects = SpriteEffects.None;
|
|
Texture2D texture2D = TextureAssets.HouseBanner.Value;
|
|
Microsoft.Xna.Framework.Rectangle rectangle = texture2D.Frame(2, 2);
|
|
if (bannerStyle > 0)
|
|
rectangle.X += rectangle.Width * bannerStyle;
|
|
if (housingCategory > 0)
|
|
rectangle.Y += rectangle.Height * housingCategory;
|
|
if ((double) Main.player[Main.myPlayer].gravDir == -1.0)
|
|
{
|
|
float num7 = num6 - Main.screenPosition.Y;
|
|
num6 = Main.screenPosition.Y + (float) Main.screenHeight - num7 - (float) rectangle.Height;
|
|
effects = SpriteEffects.FlipVertically;
|
|
num5 = 4;
|
|
}
|
|
Main.spriteBatch.Draw(texture2D, new Vector2((float) (homeTileX * 16 - (int) Main.screenPosition.X + num3), num6 - (float) (int) Main.screenPosition.Y + (float) num4 + (float) num5), new Microsoft.Xna.Framework.Rectangle?(rectangle), Lighting.GetColor(homeTileX, y), 0.0f, new Vector2((float) (rectangle.Width / 2), (float) (rectangle.Height / 2)), 1f, effects, 0.0f);
|
|
ITownNPCProfile profile;
|
|
int index5 = !TownNPCProfiles.Instance.GetProfile(npc.type, out profile) ? NPC.TypeToDefaultHeadIndex(npc.type) : profile.GetHeadTextureIndex(npc);
|
|
float scale = 1f;
|
|
float num8 = TextureAssets.NpcHead[index5].Width() <= TextureAssets.NpcHead[index5].Height() ? (float) TextureAssets.NpcHead[index5].Height() : (float) TextureAssets.NpcHead[index5].Width();
|
|
if ((double) num8 > 24.0)
|
|
scale = 24f / num8;
|
|
Main.spriteBatch.Draw(TextureAssets.NpcHead[index5].Value, new Vector2((float) (homeTileX * 16 - (int) Main.screenPosition.X + num3), (float) ((double) num6 - (double) (int) Main.screenPosition.Y + (double) num4 + 2.0)), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.NpcHead[index5].Width(), TextureAssets.NpcHead[index5].Height())), Lighting.GetColor(homeTileX, y), 0.0f, new Vector2((float) (TextureAssets.NpcHead[index5].Width() / 2), (float) (TextureAssets.NpcHead[index5].Height() / 2)), scale, effects, 0.0f);
|
|
int num9 = homeTileX * 16 - (int) Main.screenPosition.X + num3 - rectangle.Width / 2;
|
|
int num10 = (int) num6 - (int) Main.screenPosition.Y + 4;
|
|
int num11 = -8;
|
|
if (Main.mouseX >= num9 && Main.mouseX <= num9 + rectangle.Width && Main.mouseY >= num10 && Main.mouseY <= num10 + rectangle.Height + num11)
|
|
{
|
|
this.MouseText(Lang.GetNPCHouseBannerText(npc, bannerStyle));
|
|
if (Main.mouseRightRelease && Main.mouseRight)
|
|
{
|
|
Main.mouseRightRelease = false;
|
|
WorldGen.kickOut(n);
|
|
SoundEngine.PlaySound(12);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public void DrawWindowsIMEPanel(Vector2 position, float xAnchor = 0.0f)
|
|
{
|
|
if (!Platform.Get<IImeService>().IsCandidateListVisible)
|
|
return;
|
|
List<string> stringList = new List<string>();
|
|
for (uint index = 0; index < Platform.Get<IImeService>().CandidateCount; ++index)
|
|
{
|
|
string candidate = Platform.Get<IImeService>().GetCandidate(index);
|
|
stringList.Add(candidate);
|
|
}
|
|
if (stringList.Count == 0)
|
|
return;
|
|
uint selectedCandidate = Platform.Get<IImeService>().SelectedCandidate;
|
|
DynamicSpriteFont dynamicSpriteFont = FontAssets.MouseText.Value;
|
|
float scale = 0.85f;
|
|
float num1 = 14f;
|
|
float num2 = 0.0f;
|
|
int num3 = 32;
|
|
float width = num2 + num1;
|
|
string str1 = "{0,2}: {1}";
|
|
string str2 = " ";
|
|
for (int index = 0; index < stringList.Count; ++index)
|
|
{
|
|
int num4 = index + 1;
|
|
string format = str1;
|
|
if (index < stringList.Count - 1)
|
|
format += str2;
|
|
width = width + dynamicSpriteFont.MeasureString(string.Format(format, (object) num4, (object) stringList[index])).X * scale + num1;
|
|
}
|
|
Vector2 vector2_1 = new Vector2(width * -xAnchor, 0.0f);
|
|
Utils.DrawSettings2Panel(Main.spriteBatch, position + vector2_1 + new Vector2(0.0f, (float) -num3), width, new Microsoft.Xna.Framework.Color(63, 65, 151, (int) byte.MaxValue) * 0.785f);
|
|
Vector2 pos = position + new Vector2(10f, (float) (-num3 / 2)) + vector2_1;
|
|
for (uint index = 0; (long) index < (long) stringList.Count; ++index)
|
|
{
|
|
Microsoft.Xna.Framework.Color color = Microsoft.Xna.Framework.Color.Gray;
|
|
if ((int) index == (int) selectedCandidate)
|
|
color = Microsoft.Xna.Framework.Color.White;
|
|
uint num5 = index + 1U;
|
|
string format = str1;
|
|
if ((long) index < (long) (stringList.Count - 1))
|
|
format += str2;
|
|
string text = string.Format(format, (object) num5, (object) stringList[(int) index]);
|
|
Vector2 vector2_2 = dynamicSpriteFont.MeasureString(text) * scale;
|
|
Utils.DrawBorderString(Main.spriteBatch, text, pos, color, scale, anchory: 0.4f);
|
|
pos.X += vector2_2.X + num1;
|
|
}
|
|
}
|
|
|
|
public void HandleIME()
|
|
{
|
|
if (this._imeToggle == PlayerInput.WritingText)
|
|
return;
|
|
this._imeToggle = PlayerInput.WritingText;
|
|
if (this._imeToggle)
|
|
Platform.Get<IImeService>().Enable();
|
|
else
|
|
Platform.Get<IImeService>().Disable();
|
|
}
|
|
|
|
protected void DrawPlayerChat()
|
|
{
|
|
TextSnippet[] snippets = (TextSnippet[]) null;
|
|
if (Main.drawingPlayerChat)
|
|
PlayerInput.WritingText = true;
|
|
this.HandleIME();
|
|
if (Main.drawingPlayerChat)
|
|
{
|
|
++this.textBlinkerCount;
|
|
if (this.textBlinkerCount >= 20)
|
|
{
|
|
this.textBlinkerState = this.textBlinkerState != 0 ? 0 : 1;
|
|
this.textBlinkerCount = 0;
|
|
}
|
|
string chatText = Main.chatText;
|
|
if (Main.screenWidth > 800)
|
|
{
|
|
int num1 = Main.screenWidth - 300;
|
|
int num2 = 78;
|
|
Main.spriteBatch.Draw(TextureAssets.TextBack.Value, new Vector2((float) num2, (float) (Main.screenHeight - 36)), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.TextBack.Width() - 100, TextureAssets.TextBack.Height())), new Microsoft.Xna.Framework.Color(100, 100, 100, 100), 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
int num3 = num1 - 400;
|
|
int num4 = num2 + 400;
|
|
while (num3 > 0)
|
|
{
|
|
if (num3 > 300)
|
|
{
|
|
Main.spriteBatch.Draw(TextureAssets.TextBack.Value, new Vector2((float) num4, (float) (Main.screenHeight - 36)), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(100, 0, TextureAssets.TextBack.Width() - 200, TextureAssets.TextBack.Height())), new Microsoft.Xna.Framework.Color(100, 100, 100, 100), 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
num3 -= 300;
|
|
num4 += 300;
|
|
}
|
|
else
|
|
{
|
|
Main.spriteBatch.Draw(TextureAssets.TextBack.Value, new Vector2((float) num4, (float) (Main.screenHeight - 36)), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(TextureAssets.TextBack.Width() - num3, 0, TextureAssets.TextBack.Width() - (TextureAssets.TextBack.Width() - num3), TextureAssets.TextBack.Height())), new Microsoft.Xna.Framework.Color(100, 100, 100, 100), 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
num3 = 0;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
Main.spriteBatch.Draw(TextureAssets.TextBack.Value, new Vector2(78f, (float) (Main.screenHeight - 36)), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.TextBack.Width(), TextureAssets.TextBack.Height())), new Microsoft.Xna.Framework.Color(100, 100, 100, 100), 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
int hoveredSnippet = -1;
|
|
List<TextSnippet> message = ChatManager.ParseMessage(chatText, Microsoft.Xna.Framework.Color.White);
|
|
string compositionString = Platform.Get<IImeService>().CompositionString;
|
|
if (compositionString != null && compositionString.Length > 0)
|
|
message.Add(new TextSnippet(compositionString, new Microsoft.Xna.Framework.Color((int) byte.MaxValue, 240, 20)));
|
|
if (this.textBlinkerState == 1)
|
|
message.Add(new TextSnippet("|", Microsoft.Xna.Framework.Color.White));
|
|
snippets = message.ToArray();
|
|
ChatManager.DrawColorCodedStringWithShadow(Main.spriteBatch, FontAssets.MouseText.Value, snippets, new Vector2(88f, (float) (Main.screenHeight - 30)), 0.0f, Vector2.Zero, Vector2.One, out hoveredSnippet);
|
|
if (hoveredSnippet > -1)
|
|
{
|
|
snippets[hoveredSnippet].OnHover();
|
|
if (Main.mouseLeft && Main.mouseLeftRelease)
|
|
snippets[hoveredSnippet].OnClick();
|
|
}
|
|
}
|
|
Main.chatMonitor.DrawChat(Main.drawingPlayerChat);
|
|
if (Main.drawingPlayerChat && snippets != null)
|
|
{
|
|
Vector2 stringSize = ChatManager.GetStringSize(FontAssets.MouseText.Value, snippets, Vector2.Zero);
|
|
this.DrawWindowsIMEPanel(new Vector2(88f, (float) (Main.screenHeight - 30)) + new Vector2(stringSize.X + 10f, -6f));
|
|
}
|
|
TimeLogger.DetailedDrawTime(10);
|
|
}
|
|
|
|
public static bool ShouldPVPDraw => Main.netMode == 1;
|
|
|
|
protected void DrawInventory()
|
|
{
|
|
Recipe.GetThroughDelayedFindRecipes();
|
|
if (Main.ShouldPVPDraw)
|
|
Main.DrawPVPIcons();
|
|
int pivotTopLeftX = 0;
|
|
int pivotTopLeftY = 0;
|
|
int screenWidth1 = Main.screenWidth;
|
|
int num1 = 0;
|
|
int screenWidth2 = Main.screenWidth;
|
|
int num2 = 0;
|
|
Vector2 vector2_1 = new Vector2((float) pivotTopLeftX, (float) pivotTopLeftY);
|
|
Vector2 vector2_2 = new Vector2((float) screenWidth1, (float) num1);
|
|
Vector2 vector2_3 = new Vector2((float) screenWidth2, (float) num2);
|
|
Main.DrawBestiaryIcon(pivotTopLeftX, pivotTopLeftY);
|
|
Main.DrawEmoteBubblesButton(pivotTopLeftX, pivotTopLeftY);
|
|
Main.DrawTrashItemSlot(pivotTopLeftX, pivotTopLeftY);
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.MouseText.Value, Lang.inter[4].Value, new Vector2(40f, 0.0f) + vector2_1, new Microsoft.Xna.Framework.Color((int) Main.mouseTextColor, (int) Main.mouseTextColor, (int) Main.mouseTextColor, (int) Main.mouseTextColor), 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
Main.inventoryScale = 0.85f;
|
|
if (Main.mouseX > 20 && Main.mouseX < (int) (20.0 + 560.0 * (double) Main.inventoryScale) && Main.mouseY > 20 && Main.mouseY < (int) (20.0 + 280.0 * (double) Main.inventoryScale) && !PlayerInput.IgnoreMouseInterface)
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
for (int index1 = 0; index1 < 10; ++index1)
|
|
{
|
|
for (int index2 = 0; index2 < 5; ++index2)
|
|
{
|
|
int num3 = (int) (20.0 + (double) (index1 * 56) * (double) Main.inventoryScale) + pivotTopLeftX;
|
|
int num4 = (int) (20.0 + (double) (index2 * 56) * (double) Main.inventoryScale) + pivotTopLeftY;
|
|
int slot = index1 + index2 * 10;
|
|
Microsoft.Xna.Framework.Color color = new Microsoft.Xna.Framework.Color(100, 100, 100, 100);
|
|
if (Main.mouseX >= num3 && (double) Main.mouseX <= (double) num3 + (double) TextureAssets.InventoryBack.Width() * (double) Main.inventoryScale && Main.mouseY >= num4 && (double) Main.mouseY <= (double) num4 + (double) TextureAssets.InventoryBack.Height() * (double) Main.inventoryScale && !PlayerInput.IgnoreMouseInterface)
|
|
{
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
ItemSlot.OverrideHover(Main.player[Main.myPlayer].inventory, slot: slot);
|
|
if (Main.player[Main.myPlayer].inventoryChestStack[slot] && (Main.player[Main.myPlayer].inventory[slot].type == 0 || Main.player[Main.myPlayer].inventory[slot].stack == 0))
|
|
Main.player[Main.myPlayer].inventoryChestStack[slot] = false;
|
|
if (!Main.player[Main.myPlayer].inventoryChestStack[slot])
|
|
{
|
|
ItemSlot.LeftClick(Main.player[Main.myPlayer].inventory, slot: slot);
|
|
ItemSlot.RightClick(Main.player[Main.myPlayer].inventory, slot: slot);
|
|
if (Main.mouseLeftRelease && Main.mouseLeft)
|
|
Recipe.FindRecipes();
|
|
}
|
|
ItemSlot.MouseHover(Main.player[Main.myPlayer].inventory, slot: slot);
|
|
}
|
|
ItemSlot.Draw(Main.spriteBatch, Main.player[Main.myPlayer].inventory, 0, slot, new Vector2((float) num3, (float) num4));
|
|
}
|
|
}
|
|
int totalDrawnIcons;
|
|
Main.GetBuilderAccsCountToShow(Main.LocalPlayer, out int _, out int _, out totalDrawnIcons);
|
|
bool pushSideToolsUp = totalDrawnIcons >= 10;
|
|
if (!PlayerInput.UsingGamepad)
|
|
this.DrawHotbarLockIcon(pivotTopLeftX, pivotTopLeftY, pushSideToolsUp);
|
|
ItemSlot.DrawRadialDpad(Main.spriteBatch, new Vector2(20f) + new Vector2((float) (56.0 * (double) Main.inventoryScale * 10.0), (float) (56.0 * (double) Main.inventoryScale * 5.0)) + new Vector2(26f, 70f) + vector2_1);
|
|
if (this._achievementAdvisor.CanDrawAboveCoins)
|
|
{
|
|
int num5 = (int) (20.0 + 560.0 * (double) Main.inventoryScale) + pivotTopLeftX;
|
|
int num6 = (int) (20.0 + 0.0 * (double) Main.inventoryScale) + pivotTopLeftY;
|
|
this._achievementAdvisor.DrawOneAchievement(Main.spriteBatch, new Vector2((float) num5, (float) num6) + new Vector2(5f), true);
|
|
}
|
|
if (Main.mapEnabled)
|
|
{
|
|
bool flag = false;
|
|
int num7 = screenWidth1 - 440;
|
|
int num8 = 40 + num1;
|
|
if (Main.screenWidth < 940)
|
|
flag = true;
|
|
if (flag)
|
|
{
|
|
num7 = screenWidth2 - 40;
|
|
num8 = num2 - 200;
|
|
}
|
|
int num9 = 0;
|
|
for (int index3 = 0; index3 < 4; ++index3)
|
|
{
|
|
int num10 = num7 + index3 * 32 - num9;
|
|
int num11 = num8;
|
|
if (flag)
|
|
{
|
|
num10 = num7;
|
|
num11 = num8 + index3 * 32 - num9;
|
|
}
|
|
int index4 = index3;
|
|
int num12 = 120;
|
|
if (index3 > 0 && Main.mapStyle == index3 - 1)
|
|
num12 = 200;
|
|
if (Main.mouseX >= num10 && Main.mouseX <= num10 + 32 && Main.mouseY >= num11 && Main.mouseY <= num11 + 30 && !PlayerInput.IgnoreMouseInterface)
|
|
{
|
|
num12 = (int) byte.MaxValue;
|
|
index4 += 4;
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
if (Main.mouseLeft && Main.mouseLeftRelease)
|
|
{
|
|
if (index3 == 0)
|
|
{
|
|
Main.playerInventory = false;
|
|
Main.player[Main.myPlayer].SetTalkNPC(-1);
|
|
Main.npcChatCornerItem = 0;
|
|
SoundEngine.PlaySound(10);
|
|
Main.mapFullscreenScale = 2.5f;
|
|
Main.mapFullscreen = true;
|
|
Main.resetMapFull = true;
|
|
}
|
|
if (index3 == 1)
|
|
{
|
|
Main.mapStyle = 0;
|
|
SoundEngine.PlaySound(12);
|
|
}
|
|
if (index3 == 2)
|
|
{
|
|
Main.mapStyle = 1;
|
|
SoundEngine.PlaySound(12);
|
|
}
|
|
if (index3 == 3)
|
|
{
|
|
Main.mapStyle = 2;
|
|
SoundEngine.PlaySound(12);
|
|
}
|
|
}
|
|
}
|
|
Main.spriteBatch.Draw(TextureAssets.MapIcon[index4].Value, new Vector2((float) num10, (float) num11), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.MapIcon[index4].Width(), TextureAssets.MapIcon[index4].Height())), new Microsoft.Xna.Framework.Color(num12, num12, num12, num12), 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
if (Main.armorHide)
|
|
{
|
|
Main.armorAlpha -= 0.1f;
|
|
if ((double) Main.armorAlpha < 0.0)
|
|
Main.armorAlpha = 0.0f;
|
|
}
|
|
else
|
|
{
|
|
Main.armorAlpha += 0.025f;
|
|
if ((double) Main.armorAlpha > 1.0)
|
|
Main.armorAlpha = 1f;
|
|
}
|
|
Microsoft.Xna.Framework.Color color1 = new Microsoft.Xna.Framework.Color((int) (byte) ((double) Main.mouseTextColor * (double) Main.armorAlpha), (int) (byte) ((double) Main.mouseTextColor * (double) Main.armorAlpha), (int) (byte) ((double) Main.mouseTextColor * (double) Main.armorAlpha), (int) (byte) ((double) Main.mouseTextColor * (double) Main.armorAlpha));
|
|
Main.armorHide = false;
|
|
int num13 = 8 + Main.player[Main.myPlayer].GetAmountOfExtraAccessorySlotsToShow();
|
|
int num14 = 174 + Main.mH;
|
|
int num15 = 950;
|
|
Main._cannotDrawAccessoriesHorizontally = false;
|
|
if (Main.screenHeight < num15 && num13 >= 10)
|
|
{
|
|
num14 -= (int) (56.0 * (double) Main.inventoryScale * (double) (num13 - 9));
|
|
Main._cannotDrawAccessoriesHorizontally = true;
|
|
}
|
|
int num16 = Main.DrawPageIcons(num14 - 32);
|
|
if (num16 > -1)
|
|
{
|
|
Main.HoverItem = new Item();
|
|
switch (num16)
|
|
{
|
|
case 1:
|
|
Main.hoverItemName = Lang.inter[80].Value;
|
|
break;
|
|
case 2:
|
|
Main.hoverItemName = Lang.inter[79].Value;
|
|
break;
|
|
case 3:
|
|
Main.hoverItemName = Main.CaptureModeDisabled ? Lang.inter[115].Value : Lang.inter[81].Value;
|
|
break;
|
|
}
|
|
}
|
|
switch (Main.EquipPage)
|
|
{
|
|
case 1:
|
|
this.DrawNPCHousesInUI();
|
|
break;
|
|
case 2:
|
|
Microsoft.Xna.Framework.Point point1 = new Microsoft.Xna.Framework.Point(Main.mouseX, Main.mouseY);
|
|
Microsoft.Xna.Framework.Rectangle r1 = new Microsoft.Xna.Framework.Rectangle(0, 0, (int) ((double) TextureAssets.InventoryBack.Width() * (double) Main.inventoryScale), (int) ((double) TextureAssets.InventoryBack.Height() * (double) Main.inventoryScale));
|
|
Item[] inv = Main.player[Main.myPlayer].miscEquips;
|
|
int num17 = Main.screenWidth - 92;
|
|
int num18 = Main.mH + 174;
|
|
for (int index = 0; index < 2; ++index)
|
|
{
|
|
if (index == 0)
|
|
inv = Main.player[Main.myPlayer].miscEquips;
|
|
else if (index == 1)
|
|
inv = Main.player[Main.myPlayer].miscDyes;
|
|
r1.X = num17 + index * -47;
|
|
for (int slot = 0; slot < 5; ++slot)
|
|
{
|
|
int context = 0;
|
|
int key = -1;
|
|
switch (slot)
|
|
{
|
|
case 0:
|
|
context = 19;
|
|
key = 0;
|
|
break;
|
|
case 1:
|
|
context = 20;
|
|
key = 1;
|
|
break;
|
|
case 2:
|
|
context = 18;
|
|
break;
|
|
case 3:
|
|
context = 17;
|
|
break;
|
|
case 4:
|
|
context = 16;
|
|
break;
|
|
}
|
|
if (index == 1)
|
|
{
|
|
context = 12;
|
|
key = -1;
|
|
}
|
|
r1.Y = num18 + slot * 47;
|
|
Texture2D texture = TextureAssets.InventoryTickOn.Value;
|
|
if (Main.player[Main.myPlayer].hideMisc[key])
|
|
texture = TextureAssets.InventoryTickOff.Value;
|
|
Microsoft.Xna.Framework.Rectangle r2 = new Microsoft.Xna.Framework.Rectangle(r1.Left + 34, r1.Top - 2, texture.Width, texture.Height);
|
|
int num19 = 0;
|
|
bool flag = false;
|
|
if (r2.Contains(point1) && !PlayerInput.IgnoreMouseInterface)
|
|
{
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
flag = true;
|
|
if (Main.mouseLeft && Main.mouseLeftRelease)
|
|
{
|
|
if (key == 0)
|
|
Main.player[Main.myPlayer].TogglePet();
|
|
if (key == 1)
|
|
Main.player[Main.myPlayer].ToggleLight();
|
|
Main.mouseLeftRelease = false;
|
|
SoundEngine.PlaySound(12);
|
|
if (Main.netMode == 1)
|
|
NetMessage.SendData(4, number: Main.myPlayer);
|
|
}
|
|
num19 = !Main.player[Main.myPlayer].hideMisc[key] ? 1 : 2;
|
|
}
|
|
if (r1.Contains(point1) && !flag && !PlayerInput.IgnoreMouseInterface)
|
|
{
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
Main.armorHide = true;
|
|
ItemSlot.Handle(inv, context, slot);
|
|
}
|
|
ItemSlot.Draw(Main.spriteBatch, inv, context, slot, r1.TopLeft());
|
|
if (key != -1)
|
|
{
|
|
Main.spriteBatch.Draw(texture, r2.TopLeft(), Microsoft.Xna.Framework.Color.White * 0.7f);
|
|
if (num19 > 0)
|
|
{
|
|
Main.HoverItem = new Item();
|
|
Main.hoverItemName = Lang.inter[58 + num19].Value;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
int num20 = num18 + 247;
|
|
int num21 = num17 + 8;
|
|
int drawBuffText = -1;
|
|
int num22 = 0;
|
|
int num23 = 3;
|
|
int num24 = 260;
|
|
if (Main.screenHeight > 630 + num24 * (Main.mapStyle == 1).ToInt())
|
|
++num23;
|
|
if (Main.screenHeight > 680 + num24 * (Main.mapStyle == 1).ToInt())
|
|
++num23;
|
|
if (Main.screenHeight > 730 + num24 * (Main.mapStyle == 1).ToInt())
|
|
++num23;
|
|
int num25 = 46;
|
|
for (int buffSlotOnPlayer = 0; buffSlotOnPlayer < 22; ++buffSlotOnPlayer)
|
|
{
|
|
if (Main.player[Main.myPlayer].buffType[buffSlotOnPlayer] != 0)
|
|
{
|
|
int num26 = num22 / num23;
|
|
int num27 = num22 % num23;
|
|
Microsoft.Xna.Framework.Point point2 = new Microsoft.Xna.Framework.Point(num21 + num26 * -num25, num20 + num27 * num25);
|
|
drawBuffText = Main.DrawBuffIcon(drawBuffText, buffSlotOnPlayer, point2.X, point2.Y);
|
|
UILinkPointNavigator.SetPosition(9000 + num22, new Vector2((float) (point2.X + 30), (float) (point2.Y + 30)));
|
|
++num22;
|
|
if ((double) Main.buffAlpha[buffSlotOnPlayer] < 0.649999976158142)
|
|
Main.buffAlpha[buffSlotOnPlayer] = 0.65f;
|
|
}
|
|
}
|
|
UILinkPointNavigator.Shortcuts.BUFFS_DRAWN = num22;
|
|
UILinkPointNavigator.Shortcuts.BUFFS_PER_COLUMN = num23;
|
|
if (drawBuffText >= 0)
|
|
{
|
|
int index = Main.player[Main.myPlayer].buffType[drawBuffText];
|
|
if (index > 0)
|
|
{
|
|
string buffName = Lang.GetBuffName(index);
|
|
string buffTooltip = Main.GetBuffTooltip(Main.player[Main.myPlayer], index);
|
|
if (index == 147)
|
|
Main.bannerMouseOver = true;
|
|
if (Main.meleeBuff[index])
|
|
{
|
|
this.MouseTextHackZoom(buffName, -10, buffTooltip: buffTooltip);
|
|
break;
|
|
}
|
|
this.MouseTextHackZoom(buffName, buffTooltip);
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
int num28 = 4;
|
|
if (Main.mouseX > Main.screenWidth - 64 - 28 && Main.mouseX < (int) ((double) (Main.screenWidth - 64 - 28) + 56.0 * (double) Main.inventoryScale) && Main.mouseY > num14 && Main.mouseY < (int) ((double) num14 + 448.0 * (double) Main.inventoryScale) && !PlayerInput.IgnoreMouseInterface)
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
float inventoryScale = Main.inventoryScale;
|
|
bool flag1 = false;
|
|
int num29 = num13 - 1;
|
|
bool flag2 = Main.LocalPlayer.CanDemonHeartAccessoryBeShown();
|
|
bool flag3 = Main.LocalPlayer.CanMasterModeAccessoryBeShown();
|
|
if (Main._settingsButtonIsPushedToSide)
|
|
--num29;
|
|
int num30 = num29 - 1;
|
|
Microsoft.Xna.Framework.Color inventoryBack1 = Main.inventoryBack;
|
|
Microsoft.Xna.Framework.Color color2 = new Microsoft.Xna.Framework.Color(80, 80, 80, 80);
|
|
int num31 = -1;
|
|
for (int slot = 0; slot < 10; ++slot)
|
|
{
|
|
if ((slot != 8 || flag2) && (slot != 9 || flag3))
|
|
{
|
|
++num31;
|
|
bool flag4 = Main.LocalPlayer.IsAValidEquipmentSlotForIteration(slot);
|
|
if (!flag4)
|
|
flag1 = true;
|
|
int inventoryX = Main.screenWidth - 64 - 28;
|
|
int inventoryY = (int) ((double) num14 + (double) (num31 * 56) * (double) Main.inventoryScale);
|
|
Microsoft.Xna.Framework.Color color3 = new Microsoft.Xna.Framework.Color(100, 100, 100, 100);
|
|
int x = Main.screenWidth - 58;
|
|
int y = (int) ((double) (num14 - 2) + (double) (num31 * 56) * (double) Main.inventoryScale);
|
|
int context = 8;
|
|
if (slot > 2)
|
|
{
|
|
inventoryY += num28;
|
|
y += num28;
|
|
context = 10;
|
|
}
|
|
if (num31 == num30 && !this._achievementAdvisor.CanDrawAboveCoins)
|
|
{
|
|
this._achievementAdvisor.DrawOneAchievement(Main.spriteBatch, new Vector2((float) (inventoryX - 10 - 47 - 47 - 14 - 14), (float) (inventoryY + 8)), false);
|
|
UILinkPointNavigator.SetPosition(1570, new Vector2((float) (inventoryX - 10 - 47 - 47 - 14 - 14), (float) (inventoryY + 8)) + new Vector2(20f) * Main.inventoryScale);
|
|
}
|
|
if (num31 == num29)
|
|
Main.DrawDefenseCounter(inventoryX, inventoryY);
|
|
Texture2D texture = TextureAssets.InventoryTickOn.Value;
|
|
if (Main.player[Main.myPlayer].hideVisibleAccessory[slot])
|
|
texture = TextureAssets.InventoryTickOff.Value;
|
|
Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.Rectangle(x, y, texture.Width, texture.Height);
|
|
int num32 = 0;
|
|
if (slot > 2 && rectangle.Contains(new Microsoft.Xna.Framework.Point(Main.mouseX, Main.mouseY)) && !PlayerInput.IgnoreMouseInterface)
|
|
{
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
if (Main.mouseLeft && Main.mouseLeftRelease)
|
|
{
|
|
Main.player[Main.myPlayer].hideVisibleAccessory[slot] = !Main.player[Main.myPlayer].hideVisibleAccessory[slot];
|
|
SoundEngine.PlaySound(12);
|
|
if (Main.netMode == 1)
|
|
NetMessage.SendData(4, number: Main.myPlayer);
|
|
}
|
|
num32 = !Main.player[Main.myPlayer].hideVisibleAccessory[slot] ? 1 : 2;
|
|
}
|
|
else if (Main.mouseX >= inventoryX && (double) Main.mouseX <= (double) inventoryX + (double) TextureAssets.InventoryBack.Width() * (double) Main.inventoryScale && Main.mouseY >= inventoryY && (double) Main.mouseY <= (double) inventoryY + (double) TextureAssets.InventoryBack.Height() * (double) Main.inventoryScale && !PlayerInput.IgnoreMouseInterface)
|
|
{
|
|
Main.armorHide = true;
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
ItemSlot.OverrideHover(Main.player[Main.myPlayer].armor, context, slot);
|
|
if ((flag4 ? 0 : (!Main.mouseItem.IsAir ? 1 : 0)) == 0)
|
|
ItemSlot.LeftClick(Main.player[Main.myPlayer].armor, context, slot);
|
|
ItemSlot.MouseHover(Main.player[Main.myPlayer].armor, context, slot);
|
|
}
|
|
if (flag1)
|
|
Main.inventoryBack = color2;
|
|
ItemSlot.Draw(Main.spriteBatch, Main.player[Main.myPlayer].armor, context, slot, new Vector2((float) inventoryX, (float) inventoryY));
|
|
if (slot > 2)
|
|
{
|
|
Main.spriteBatch.Draw(texture, new Vector2((float) x, (float) y), Microsoft.Xna.Framework.Color.White * 0.7f);
|
|
if (num32 > 0)
|
|
{
|
|
Main.HoverItem = new Item();
|
|
Main.hoverItemName = Lang.inter[58 + num32].Value;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
Main.inventoryBack = inventoryBack1;
|
|
if (Main.mouseX > Main.screenWidth - 64 - 28 - 47 && Main.mouseX < (int) ((double) (Main.screenWidth - 64 - 20 - 47) + 56.0 * (double) Main.inventoryScale) && Main.mouseY > num14 && Main.mouseY < (int) ((double) num14 + 168.0 * (double) Main.inventoryScale) && !PlayerInput.IgnoreMouseInterface)
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
int num33 = -1;
|
|
for (int slot = 10; slot < 20; ++slot)
|
|
{
|
|
if ((slot != 18 || flag2) && (slot != 19 || flag3))
|
|
{
|
|
++num33;
|
|
int num34 = Main.LocalPlayer.IsAValidEquipmentSlotForIteration(slot) ? 1 : 0;
|
|
bool flag5 = num34 == 0;
|
|
bool flag6 = num34 == 0 && !Main.mouseItem.IsAir;
|
|
int num35 = Main.screenWidth - 64 - 28 - 47;
|
|
int num36 = (int) ((double) num14 + (double) (num33 * 56) * (double) Main.inventoryScale);
|
|
Microsoft.Xna.Framework.Color color4 = new Microsoft.Xna.Framework.Color(100, 100, 100, 100);
|
|
if (slot > 12)
|
|
num36 += num28;
|
|
int context = 9;
|
|
if (slot > 12)
|
|
context = 11;
|
|
if (Main.mouseX >= num35 && (double) Main.mouseX <= (double) num35 + (double) TextureAssets.InventoryBack.Width() * (double) Main.inventoryScale && Main.mouseY >= num36 && (double) Main.mouseY <= (double) num36 + (double) TextureAssets.InventoryBack.Height() * (double) Main.inventoryScale && !PlayerInput.IgnoreMouseInterface)
|
|
{
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
Main.armorHide = true;
|
|
ItemSlot.OverrideHover(Main.player[Main.myPlayer].armor, context, slot);
|
|
if (!flag6)
|
|
{
|
|
ItemSlot.LeftClick(Main.player[Main.myPlayer].armor, context, slot);
|
|
ItemSlot.RightClick(Main.player[Main.myPlayer].armor, context, slot);
|
|
}
|
|
ItemSlot.MouseHover(Main.player[Main.myPlayer].armor, context, slot);
|
|
}
|
|
if (flag5)
|
|
Main.inventoryBack = color2;
|
|
ItemSlot.Draw(Main.spriteBatch, Main.player[Main.myPlayer].armor, context, slot, new Vector2((float) num35, (float) num36));
|
|
}
|
|
}
|
|
Main.inventoryBack = inventoryBack1;
|
|
if (Main.mouseX > Main.screenWidth - 64 - 28 - 47 && Main.mouseX < (int) ((double) (Main.screenWidth - 64 - 20 - 47) + 56.0 * (double) Main.inventoryScale) && Main.mouseY > num14 && Main.mouseY < (int) ((double) num14 + 168.0 * (double) Main.inventoryScale) && !PlayerInput.IgnoreMouseInterface)
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
int num37 = -1;
|
|
for (int slot = 0; slot < 10; ++slot)
|
|
{
|
|
if ((slot != 8 || flag2) && (slot != 9 || flag3))
|
|
{
|
|
++num37;
|
|
int num38 = Main.LocalPlayer.IsAValidEquipmentSlotForIteration(slot) ? 1 : 0;
|
|
bool flag7 = num38 == 0;
|
|
bool flag8 = num38 == 0 && !Main.mouseItem.IsAir;
|
|
int num39 = Main.screenWidth - 64 - 28 - 47 - 47;
|
|
int num40 = (int) ((double) num14 + (double) (num37 * 56) * (double) Main.inventoryScale);
|
|
Microsoft.Xna.Framework.Color color5 = new Microsoft.Xna.Framework.Color(100, 100, 100, 100);
|
|
if (slot > 2)
|
|
num40 += num28;
|
|
if (Main.mouseX >= num39 && (double) Main.mouseX <= (double) num39 + (double) TextureAssets.InventoryBack.Width() * (double) Main.inventoryScale && Main.mouseY >= num40 && (double) Main.mouseY <= (double) num40 + (double) TextureAssets.InventoryBack.Height() * (double) Main.inventoryScale && !PlayerInput.IgnoreMouseInterface)
|
|
{
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
Main.armorHide = true;
|
|
ItemSlot.OverrideHover(Main.player[Main.myPlayer].dye, 12, slot);
|
|
if (!flag8)
|
|
{
|
|
if (Main.mouseRightRelease && Main.mouseRight)
|
|
ItemSlot.RightClick(Main.player[Main.myPlayer].dye, 12, slot);
|
|
ItemSlot.LeftClick(Main.player[Main.myPlayer].dye, 12, slot);
|
|
}
|
|
ItemSlot.MouseHover(Main.player[Main.myPlayer].dye, 12, slot);
|
|
}
|
|
if (flag7)
|
|
Main.inventoryBack = color2;
|
|
ItemSlot.Draw(Main.spriteBatch, Main.player[Main.myPlayer].dye, 12, slot, new Vector2((float) num39, (float) num40));
|
|
}
|
|
}
|
|
Main.inventoryBack = inventoryBack1;
|
|
Main.inventoryScale = inventoryScale;
|
|
break;
|
|
}
|
|
int adjY = (Main.screenHeight - 600) / 2;
|
|
int num41 = (int) ((double) Main.screenHeight / 600.0 * 250.0);
|
|
if (Main.screenHeight < 700)
|
|
{
|
|
adjY = (Main.screenHeight - 508) / 2;
|
|
num41 = (int) ((double) Main.screenHeight / 600.0 * 200.0);
|
|
}
|
|
else if (Main.screenHeight < 850)
|
|
num41 = (int) ((double) Main.screenHeight / 600.0 * 225.0);
|
|
if (Main.craftingHide)
|
|
{
|
|
Main.craftingAlpha -= 0.1f;
|
|
if ((double) Main.craftingAlpha < 0.0)
|
|
Main.craftingAlpha = 0.0f;
|
|
}
|
|
else
|
|
{
|
|
Main.craftingAlpha += 0.025f;
|
|
if ((double) Main.craftingAlpha > 1.0)
|
|
Main.craftingAlpha = 1f;
|
|
}
|
|
Microsoft.Xna.Framework.Color craftingTipColor = new Microsoft.Xna.Framework.Color((int) (byte) ((double) Main.mouseTextColor * (double) Main.craftingAlpha), (int) (byte) ((double) Main.mouseTextColor * (double) Main.craftingAlpha), (int) (byte) ((double) Main.mouseTextColor * (double) Main.craftingAlpha), (int) (byte) ((double) Main.mouseTextColor * (double) Main.craftingAlpha));
|
|
Main.craftingHide = false;
|
|
if (Main.InReforgeMenu)
|
|
{
|
|
if (Main.mouseReforge)
|
|
{
|
|
if ((double) Main.reforgeScale < 1.0)
|
|
Main.reforgeScale += 0.02f;
|
|
}
|
|
else if ((double) Main.reforgeScale > 1.0)
|
|
Main.reforgeScale -= 0.02f;
|
|
if (Main.player[Main.myPlayer].chest != -1 || Main.npcShop != 0 || Main.player[Main.myPlayer].talkNPC == -1 || Main.InGuideCraftMenu)
|
|
{
|
|
Main.InReforgeMenu = false;
|
|
Main.player[Main.myPlayer].dropItemCheck();
|
|
Recipe.FindRecipes();
|
|
}
|
|
else
|
|
{
|
|
int num42 = 50;
|
|
int num43 = 270;
|
|
string text1 = Lang.inter[46].Value + ": ";
|
|
if (Main.reforgeItem.type > 0)
|
|
{
|
|
int num44 = Main.reforgeItem.value;
|
|
if (Main.player[Main.myPlayer].discount)
|
|
num44 = (int) ((double) num44 * 0.8);
|
|
int price = (int) ((double) num44 * Main.player[Main.myPlayer].currentShoppingSettings.PriceAdjustment) / 3;
|
|
string text2 = "";
|
|
int num45 = 0;
|
|
int num46 = 0;
|
|
int num47 = 0;
|
|
int num48 = 0;
|
|
int num49 = price;
|
|
if (num49 < 1)
|
|
num49 = 1;
|
|
if (num49 >= 1000000)
|
|
{
|
|
num45 = num49 / 1000000;
|
|
num49 -= num45 * 1000000;
|
|
}
|
|
if (num49 >= 10000)
|
|
{
|
|
num46 = num49 / 10000;
|
|
num49 -= num46 * 10000;
|
|
}
|
|
if (num49 >= 100)
|
|
{
|
|
num47 = num49 / 100;
|
|
num49 -= num47 * 100;
|
|
}
|
|
if (num49 >= 1)
|
|
num48 = num49;
|
|
if (num45 > 0)
|
|
text2 = text2 + "[c/" + Colors.AlphaDarken(Colors.CoinPlatinum).Hex3() + ":" + (object) num45 + " " + Lang.inter[15].Value + "] ";
|
|
if (num46 > 0)
|
|
text2 = text2 + "[c/" + Colors.AlphaDarken(Colors.CoinGold).Hex3() + ":" + (object) num46 + " " + Lang.inter[16].Value + "] ";
|
|
if (num47 > 0)
|
|
text2 = text2 + "[c/" + Colors.AlphaDarken(Colors.CoinSilver).Hex3() + ":" + (object) num47 + " " + Lang.inter[17].Value + "] ";
|
|
if (num48 > 0)
|
|
text2 = text2 + "[c/" + Colors.AlphaDarken(Colors.CoinCopper).Hex3() + ":" + (object) num48 + " " + Lang.inter[18].Value + "] ";
|
|
ItemSlot.DrawSavings(Main.spriteBatch, (float) (num42 + 130), (float) this.invBottom, true);
|
|
ChatManager.DrawColorCodedStringWithShadow(Main.spriteBatch, FontAssets.MouseText.Value, text2, new Vector2((float) (num42 + 50) + FontAssets.MouseText.Value.MeasureString(text1).X, (float) num43), Microsoft.Xna.Framework.Color.White, 0.0f, Vector2.Zero, Vector2.One);
|
|
int num50 = num42 + 70;
|
|
int num51 = num43 + 40;
|
|
int num52 = Main.mouseX <= num50 - 15 || Main.mouseX >= num50 + 15 || Main.mouseY <= num51 - 15 || Main.mouseY >= num51 + 15 ? 0 : (!PlayerInput.IgnoreMouseInterface ? 1 : 0);
|
|
Texture2D texture2D = TextureAssets.Reforge[0].Value;
|
|
if (num52 != 0)
|
|
texture2D = TextureAssets.Reforge[1].Value;
|
|
Main.spriteBatch.Draw(texture2D, new Vector2((float) num50, (float) num51), new Microsoft.Xna.Framework.Rectangle?(), Microsoft.Xna.Framework.Color.White, 0.0f, texture2D.Size() / 2f, Main.reforgeScale, SpriteEffects.None, 0.0f);
|
|
UILinkPointNavigator.SetPosition(304, new Vector2((float) num50, (float) num51) + texture2D.Size() / 4f);
|
|
if (num52 != 0)
|
|
{
|
|
Main.hoverItemName = Lang.inter[19].Value;
|
|
if (!Main.mouseReforge)
|
|
SoundEngine.PlaySound(12);
|
|
Main.mouseReforge = true;
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
if (Main.mouseLeftRelease && Main.mouseLeft && Main.player[Main.myPlayer].BuyItem(price))
|
|
{
|
|
bool favorited = Main.reforgeItem.favorited;
|
|
Main.reforgeItem.netDefaults(Main.reforgeItem.netID);
|
|
Main.reforgeItem.Prefix(-2);
|
|
Main.reforgeItem.position.X = Main.player[Main.myPlayer].position.X + (float) (Main.player[Main.myPlayer].width / 2) - (float) (Main.reforgeItem.width / 2);
|
|
Main.reforgeItem.position.Y = Main.player[Main.myPlayer].position.Y + (float) (Main.player[Main.myPlayer].height / 2) - (float) (Main.reforgeItem.height / 2);
|
|
Main.reforgeItem.favorited = favorited;
|
|
PopupText.NewText(PopupTextContext.ItemReforge, Main.reforgeItem, Main.reforgeItem.stack, true);
|
|
SoundEngine.PlaySound(SoundID.Item37);
|
|
}
|
|
}
|
|
else
|
|
Main.mouseReforge = false;
|
|
}
|
|
else
|
|
text1 = Lang.inter[20].Value;
|
|
ChatManager.DrawColorCodedStringWithShadow(Main.spriteBatch, FontAssets.MouseText.Value, text1, new Vector2((float) (num42 + 50), (float) num43), new Microsoft.Xna.Framework.Color((int) Main.mouseTextColor, (int) Main.mouseTextColor, (int) Main.mouseTextColor, (int) Main.mouseTextColor), 0.0f, Vector2.Zero, Vector2.One);
|
|
if (Main.mouseX >= num42 && (double) Main.mouseX <= (double) num42 + (double) TextureAssets.InventoryBack.Width() * (double) Main.inventoryScale && Main.mouseY >= num43 && (double) Main.mouseY <= (double) num43 + (double) TextureAssets.InventoryBack.Height() * (double) Main.inventoryScale && !PlayerInput.IgnoreMouseInterface)
|
|
{
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
Main.craftingHide = true;
|
|
ItemSlot.LeftClick(ref Main.reforgeItem, 5);
|
|
if (Main.mouseLeftRelease && Main.mouseLeft)
|
|
Recipe.FindRecipes();
|
|
ItemSlot.RightClick(ref Main.reforgeItem, 5);
|
|
ItemSlot.MouseHover(ref Main.reforgeItem, 5);
|
|
}
|
|
ItemSlot.Draw(Main.spriteBatch, ref Main.reforgeItem, 5, new Vector2((float) num42, (float) num43));
|
|
}
|
|
}
|
|
else if (Main.InGuideCraftMenu)
|
|
{
|
|
if (Main.player[Main.myPlayer].chest != -1 || Main.npcShop != 0 || Main.player[Main.myPlayer].talkNPC == -1 || Main.InReforgeMenu)
|
|
{
|
|
Main.InGuideCraftMenu = false;
|
|
Main.player[Main.myPlayer].dropItemCheck();
|
|
Recipe.FindRecipes();
|
|
}
|
|
else
|
|
{
|
|
int inventoryX;
|
|
int inventoryY;
|
|
Main.DrawGuideCraftText(adjY, craftingTipColor, out inventoryX, out inventoryY);
|
|
Microsoft.Xna.Framework.Color color6 = new Microsoft.Xna.Framework.Color(100, 100, 100, 100);
|
|
if (Main.mouseX >= inventoryX && (double) Main.mouseX <= (double) inventoryX + (double) TextureAssets.InventoryBack.Width() * (double) Main.inventoryScale && Main.mouseY >= inventoryY && (double) Main.mouseY <= (double) inventoryY + (double) TextureAssets.InventoryBack.Height() * (double) Main.inventoryScale && !PlayerInput.IgnoreMouseInterface)
|
|
{
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
Main.craftingHide = true;
|
|
ItemSlot.OverrideHover(ref Main.guideItem, 7);
|
|
ItemSlot.LeftClick(ref Main.guideItem, 7);
|
|
if (Main.mouseLeftRelease && Main.mouseLeft)
|
|
Recipe.FindRecipes();
|
|
ItemSlot.RightClick(ref Main.guideItem, 7);
|
|
ItemSlot.MouseHover(ref Main.guideItem, 7);
|
|
}
|
|
ItemSlot.Draw(Main.spriteBatch, ref Main.guideItem, 7, new Vector2((float) inventoryX, (float) inventoryY));
|
|
}
|
|
}
|
|
Main.CreativeMenu.Draw(Main.spriteBatch);
|
|
bool flag9 = Main.CreativeMenu.Enabled && !Main.CreativeMenu.Blocked;
|
|
if (!Main.InReforgeMenu && !Main.LocalPlayer.tileEntityAnchor.InUse && !flag9)
|
|
{
|
|
UILinkPointNavigator.Shortcuts.CRAFT_CurrentRecipeBig = -1;
|
|
UILinkPointNavigator.Shortcuts.CRAFT_CurrentRecipeSmall = -1;
|
|
if (Main.numAvailableRecipes > 0)
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.MouseText.Value, Lang.inter[25].Value, new Vector2(76f, (float) (414 + adjY)), craftingTipColor, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
for (int recipeIndex = 0; recipeIndex < Recipe.maxRecipes; ++recipeIndex)
|
|
{
|
|
Main.inventoryScale = (float) (100.0 / ((double) Math.Abs(Main.availableRecipeY[recipeIndex]) + 100.0));
|
|
if ((double) Main.inventoryScale < 0.75)
|
|
Main.inventoryScale = 0.75f;
|
|
if (Main.recFastScroll)
|
|
Main.inventoryScale = 0.75f;
|
|
if ((double) Main.availableRecipeY[recipeIndex] < (double) ((recipeIndex - Main.focusRecipe) * 65))
|
|
{
|
|
if ((double) Main.availableRecipeY[recipeIndex] == 0.0 && !Main.recFastScroll)
|
|
SoundEngine.PlaySound(12);
|
|
Main.availableRecipeY[recipeIndex] += 6.5f;
|
|
if (Main.recFastScroll)
|
|
Main.availableRecipeY[recipeIndex] += 130000f;
|
|
if ((double) Main.availableRecipeY[recipeIndex] > (double) ((recipeIndex - Main.focusRecipe) * 65))
|
|
Main.availableRecipeY[recipeIndex] = (float) ((recipeIndex - Main.focusRecipe) * 65);
|
|
}
|
|
else if ((double) Main.availableRecipeY[recipeIndex] > (double) ((recipeIndex - Main.focusRecipe) * 65))
|
|
{
|
|
if ((double) Main.availableRecipeY[recipeIndex] == 0.0 && !Main.recFastScroll)
|
|
SoundEngine.PlaySound(12);
|
|
Main.availableRecipeY[recipeIndex] -= 6.5f;
|
|
if (Main.recFastScroll)
|
|
Main.availableRecipeY[recipeIndex] -= 130000f;
|
|
if ((double) Main.availableRecipeY[recipeIndex] < (double) ((recipeIndex - Main.focusRecipe) * 65))
|
|
Main.availableRecipeY[recipeIndex] = (float) ((recipeIndex - Main.focusRecipe) * 65);
|
|
}
|
|
else
|
|
Main.recFastScroll = false;
|
|
if (recipeIndex < Main.numAvailableRecipes && (double) Math.Abs(Main.availableRecipeY[recipeIndex]) <= (double) num41)
|
|
{
|
|
int num53 = (int) (46.0 - 26.0 * (double) Main.inventoryScale);
|
|
int num54 = (int) (410.0 + (double) Main.availableRecipeY[recipeIndex] * (double) Main.inventoryScale - 30.0 * (double) Main.inventoryScale + (double) adjY);
|
|
double num55 = (double) ((int) Main.inventoryBack.A + 50);
|
|
double num56 = (double) byte.MaxValue;
|
|
if ((double) Math.Abs(Main.availableRecipeY[recipeIndex]) > (double) num41 - 100.0)
|
|
{
|
|
num55 = 150.0 * (100.0 - ((double) Math.Abs(Main.availableRecipeY[recipeIndex]) - ((double) num41 - 100.0))) * 0.01;
|
|
num56 = (double) byte.MaxValue * (100.0 - ((double) Math.Abs(Main.availableRecipeY[recipeIndex]) - ((double) num41 - 100.0))) * 0.01;
|
|
}
|
|
Microsoft.Xna.Framework.Color color7 = new Microsoft.Xna.Framework.Color((int) (byte) num55, (int) (byte) num55, (int) (byte) num55, (int) (byte) num55);
|
|
Microsoft.Xna.Framework.Color lightColor = new Microsoft.Xna.Framework.Color((int) (byte) num56, (int) (byte) num56, (int) (byte) num56, (int) (byte) num56);
|
|
if (!Main.LocalPlayer.creativeInterface && Main.mouseX >= num53 && (double) Main.mouseX <= (double) num53 + (double) TextureAssets.InventoryBack.Width() * (double) Main.inventoryScale && Main.mouseY >= num54 && (double) Main.mouseY <= (double) num54 + (double) TextureAssets.InventoryBack.Height() * (double) Main.inventoryScale && !PlayerInput.IgnoreMouseInterface)
|
|
Main.HoverOverCraftingItemButton(recipeIndex);
|
|
if (Main.numAvailableRecipes > 0)
|
|
{
|
|
double num57 = num55 - 50.0;
|
|
if (num57 < 0.0)
|
|
num57 = 0.0;
|
|
if (recipeIndex == Main.focusRecipe)
|
|
{
|
|
UILinkPointNavigator.Shortcuts.CRAFT_CurrentRecipeSmall = 0;
|
|
if (!PlayerInput.UsingGamepad)
|
|
ItemSlot.DrawGoldBGForCraftingMaterial = true;
|
|
}
|
|
else
|
|
UILinkPointNavigator.Shortcuts.CRAFT_CurrentRecipeSmall = -1;
|
|
Microsoft.Xna.Framework.Color inventoryBack2 = Main.inventoryBack;
|
|
Main.inventoryBack = new Microsoft.Xna.Framework.Color((int) (byte) num57, (int) (byte) num57, (int) (byte) num57, (int) (byte) num57);
|
|
ItemSlot.Draw(Main.spriteBatch, ref Main.recipe[Main.availableRecipe[recipeIndex]].createItem, 22, new Vector2((float) num53, (float) num54), lightColor);
|
|
Main.inventoryBack = inventoryBack2;
|
|
}
|
|
}
|
|
}
|
|
if (Main.numAvailableRecipes > 0)
|
|
{
|
|
UILinkPointNavigator.Shortcuts.CRAFT_CurrentRecipeBig = -1;
|
|
UILinkPointNavigator.Shortcuts.CRAFT_CurrentRecipeSmall = -1;
|
|
for (int i = 0; i < Recipe.maxRequirements; ++i)
|
|
{
|
|
if (Main.recipe[Main.availableRecipe[Main.focusRecipe]].requiredItem[i].type == 0)
|
|
{
|
|
UILinkPointNavigator.Shortcuts.CRAFT_CurrentIngridientsCount = i + 1;
|
|
break;
|
|
}
|
|
int num58 = 80 + i * 40;
|
|
int num59 = 380 + adjY;
|
|
double num60 = (double) ((int) Main.inventoryBack.A + 50);
|
|
Microsoft.Xna.Framework.Color white1 = Microsoft.Xna.Framework.Color.White;
|
|
Microsoft.Xna.Framework.Color white2 = Microsoft.Xna.Framework.Color.White;
|
|
double num61 = (double) ((int) Main.inventoryBack.A + 50) - (double) Math.Abs(Main.availableRecipeY[Main.focusRecipe]) * 2.0;
|
|
double num62 = (double) byte.MaxValue - (double) Math.Abs(Main.availableRecipeY[Main.focusRecipe]) * 2.0;
|
|
if (num61 < 0.0)
|
|
num61 = 0.0;
|
|
if (num62 < 0.0)
|
|
num62 = 0.0;
|
|
white1.R = (byte) num61;
|
|
white1.G = (byte) num61;
|
|
white1.B = (byte) num61;
|
|
white1.A = (byte) num61;
|
|
white2.R = (byte) num62;
|
|
white2.G = (byte) num62;
|
|
white2.B = (byte) num62;
|
|
white2.A = (byte) num62;
|
|
Main.inventoryScale = 0.6f;
|
|
if (num61 != 0.0)
|
|
{
|
|
if (Main.mouseX >= num58 && (double) Main.mouseX <= (double) num58 + (double) TextureAssets.InventoryBack.Width() * (double) Main.inventoryScale && Main.mouseY >= num59 && (double) Main.mouseY <= (double) num59 + (double) TextureAssets.InventoryBack.Height() * (double) Main.inventoryScale && !PlayerInput.IgnoreMouseInterface)
|
|
{
|
|
Main.craftingHide = true;
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
Main.SetRecipeMaterialDisplayName(i);
|
|
}
|
|
double num63 = num61 - 50.0;
|
|
if (num63 < 0.0)
|
|
num63 = 0.0;
|
|
UILinkPointNavigator.Shortcuts.CRAFT_CurrentRecipeSmall = 1 + i;
|
|
Microsoft.Xna.Framework.Color inventoryBack3 = Main.inventoryBack;
|
|
Main.inventoryBack = new Microsoft.Xna.Framework.Color((int) (byte) num63, (int) (byte) num63, (int) (byte) num63, (int) (byte) num63);
|
|
ItemSlot.Draw(Main.spriteBatch, ref Main.recipe[Main.availableRecipe[Main.focusRecipe]].requiredItem[i], 22, new Vector2((float) num58, (float) num59));
|
|
Main.inventoryBack = inventoryBack3;
|
|
}
|
|
else
|
|
break;
|
|
}
|
|
}
|
|
if (Main.numAvailableRecipes == 0)
|
|
{
|
|
Main.recBigList = false;
|
|
}
|
|
else
|
|
{
|
|
int num64 = 94;
|
|
int num65 = 450 + adjY;
|
|
if (Main.InGuideCraftMenu)
|
|
num65 -= 150;
|
|
bool flag10 = Main.mouseX > num64 - 15 && Main.mouseX < num64 + 15 && Main.mouseY > num65 - 15 && Main.mouseY < num65 + 15 && !PlayerInput.IgnoreMouseInterface;
|
|
int index = Main.recBigList.ToInt() * 2 + flag10.ToInt();
|
|
Main.spriteBatch.Draw(TextureAssets.CraftToggle[index].Value, new Vector2((float) num64, (float) num65), new Microsoft.Xna.Framework.Rectangle?(), Microsoft.Xna.Framework.Color.White, 0.0f, TextureAssets.CraftToggle[index].Value.Size() / 2f, 1f, SpriteEffects.None, 0.0f);
|
|
if (flag10)
|
|
{
|
|
this.MouseText(Language.GetTextValue("GameUI.CraftingWindow"));
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
if (Main.mouseLeft && Main.mouseLeftRelease)
|
|
{
|
|
if (!Main.recBigList)
|
|
{
|
|
Main.recBigList = true;
|
|
SoundEngine.PlaySound(12);
|
|
}
|
|
else
|
|
{
|
|
Main.recBigList = false;
|
|
SoundEngine.PlaySound(12);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (Main.recBigList && !flag9)
|
|
{
|
|
UILinkPointNavigator.Shortcuts.CRAFT_CurrentRecipeBig = -1;
|
|
UILinkPointNavigator.Shortcuts.CRAFT_CurrentRecipeSmall = -1;
|
|
int num66 = 42;
|
|
if ((double) Main.inventoryScale < 0.75)
|
|
Main.inventoryScale = 0.75f;
|
|
int num67 = 340;
|
|
int num68 = 310;
|
|
int num69 = (Main.screenWidth - num68 - 280) / num66;
|
|
int num70 = (Main.screenHeight - num67 - 20) / num66;
|
|
UILinkPointNavigator.Shortcuts.CRAFT_IconsPerRow = num69;
|
|
UILinkPointNavigator.Shortcuts.CRAFT_IconsPerColumn = num70;
|
|
int num71 = 0;
|
|
int num72 = 0;
|
|
int num73 = num68;
|
|
int num74 = num67;
|
|
int num75 = num68 - 20;
|
|
int num76 = num67 + 2;
|
|
if (Main.recStart > Main.numAvailableRecipes - num69 * num70)
|
|
{
|
|
Main.recStart = Main.numAvailableRecipes - num69 * num70;
|
|
if (Main.recStart < 0)
|
|
Main.recStart = 0;
|
|
}
|
|
if (Main.recStart > 0)
|
|
{
|
|
if (Main.mouseX >= num75 && Main.mouseX <= num75 + TextureAssets.CraftUpButton.Width() && Main.mouseY >= num76 && Main.mouseY <= num76 + TextureAssets.CraftUpButton.Height() && !PlayerInput.IgnoreMouseInterface)
|
|
{
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
if (Main.mouseLeftRelease && Main.mouseLeft)
|
|
{
|
|
Main.recStart -= num69;
|
|
if (Main.recStart < 0)
|
|
Main.recStart = 0;
|
|
SoundEngine.PlaySound(12);
|
|
Main.mouseLeftRelease = false;
|
|
}
|
|
}
|
|
Main.spriteBatch.Draw(TextureAssets.CraftUpButton.Value, new Vector2((float) num75, (float) num76), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.CraftUpButton.Width(), TextureAssets.CraftUpButton.Height())), new Microsoft.Xna.Framework.Color(200, 200, 200, 200), 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
if (Main.recStart < Main.numAvailableRecipes - num69 * num70)
|
|
{
|
|
int num77 = num76 + 20;
|
|
if (Main.mouseX >= num75 && Main.mouseX <= num75 + TextureAssets.CraftUpButton.Width() && Main.mouseY >= num77 && Main.mouseY <= num77 + TextureAssets.CraftUpButton.Height() && !PlayerInput.IgnoreMouseInterface)
|
|
{
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
if (Main.mouseLeftRelease && Main.mouseLeft)
|
|
{
|
|
Main.recStart += num69;
|
|
SoundEngine.PlaySound(12);
|
|
if (Main.recStart > Main.numAvailableRecipes - num69)
|
|
Main.recStart = Main.numAvailableRecipes - num69;
|
|
Main.mouseLeftRelease = false;
|
|
}
|
|
}
|
|
Main.spriteBatch.Draw(TextureAssets.CraftDownButton.Value, new Vector2((float) num75, (float) num77), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.CraftUpButton.Width(), TextureAssets.CraftUpButton.Height())), new Microsoft.Xna.Framework.Color(200, 200, 200, 200), 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
for (int recStart = Main.recStart; recStart < Recipe.maxRecipes && recStart < Main.numAvailableRecipes; ++recStart)
|
|
{
|
|
int num78 = num73;
|
|
int num79 = num74;
|
|
double num80 = (double) ((int) Main.inventoryBack.A + 50);
|
|
double maxValue = (double) byte.MaxValue;
|
|
Microsoft.Xna.Framework.Color color8 = new Microsoft.Xna.Framework.Color((int) (byte) num80, (int) (byte) num80, (int) (byte) num80, (int) (byte) num80);
|
|
Microsoft.Xna.Framework.Color color9 = new Microsoft.Xna.Framework.Color((int) (byte) maxValue, (int) (byte) maxValue, (int) (byte) maxValue, (int) (byte) maxValue);
|
|
if (Main.mouseX >= num78 && (double) Main.mouseX <= (double) num78 + (double) TextureAssets.InventoryBack.Width() * (double) Main.inventoryScale && Main.mouseY >= num79 && (double) Main.mouseY <= (double) num79 + (double) TextureAssets.InventoryBack.Height() * (double) Main.inventoryScale && !PlayerInput.IgnoreMouseInterface)
|
|
{
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
if (Main.mouseLeftRelease && Main.mouseLeft)
|
|
{
|
|
Main.focusRecipe = recStart;
|
|
Main.recFastScroll = true;
|
|
Main.recBigList = false;
|
|
SoundEngine.PlaySound(12);
|
|
Main.mouseLeftRelease = false;
|
|
if (PlayerInput.UsingGamepadUI)
|
|
{
|
|
UILinkPointNavigator.ChangePage(9);
|
|
Main.LockCraftingForThisCraftClickDuration();
|
|
}
|
|
}
|
|
Main.craftingHide = true;
|
|
Main.hoverItemName = Main.recipe[Main.availableRecipe[recStart]].createItem.Name;
|
|
Main.HoverItem = Main.recipe[Main.availableRecipe[recStart]].createItem.Clone();
|
|
if (Main.recipe[Main.availableRecipe[recStart]].createItem.stack > 1)
|
|
Main.hoverItemName = Main.hoverItemName + " (" + (object) Main.recipe[Main.availableRecipe[recStart]].createItem.stack + ")";
|
|
}
|
|
if (Main.numAvailableRecipes > 0)
|
|
{
|
|
double num81 = num80 - 50.0;
|
|
if (num81 < 0.0)
|
|
num81 = 0.0;
|
|
UILinkPointNavigator.Shortcuts.CRAFT_CurrentRecipeBig = recStart - Main.recStart;
|
|
Microsoft.Xna.Framework.Color inventoryBack4 = Main.inventoryBack;
|
|
Main.inventoryBack = new Microsoft.Xna.Framework.Color((int) (byte) num81, (int) (byte) num81, (int) (byte) num81, (int) (byte) num81);
|
|
ItemSlot.Draw(Main.spriteBatch, ref Main.recipe[Main.availableRecipe[recStart]].createItem, 22, new Vector2((float) num78, (float) num79));
|
|
Main.inventoryBack = inventoryBack4;
|
|
}
|
|
num73 += num66;
|
|
++num71;
|
|
if (num71 >= num69)
|
|
{
|
|
num73 = num68;
|
|
num74 += num66;
|
|
num71 = 0;
|
|
++num72;
|
|
if (num72 >= num70)
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
Vector2 vector2_4 = FontAssets.MouseText.Value.MeasureString("Coins");
|
|
Vector2 vector2_5 = FontAssets.MouseText.Value.MeasureString(Lang.inter[26].Value);
|
|
float num82 = vector2_4.X / vector2_5.X;
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.MouseText.Value, Lang.inter[26].Value, new Vector2(496f, (float) (84.0 + ((double) vector2_4.Y - (double) vector2_4.Y * (double) num82) / 2.0)), new Microsoft.Xna.Framework.Color((int) Main.mouseTextColor, (int) Main.mouseTextColor, (int) Main.mouseTextColor, (int) Main.mouseTextColor), 0.0f, new Vector2(), 0.75f * num82, SpriteEffects.None, 0.0f);
|
|
Main.inventoryScale = 0.6f;
|
|
for (int index = 0; index < 4; ++index)
|
|
{
|
|
int num83 = 497;
|
|
int num84 = (int) (85.0 + (double) (index * 56) * (double) Main.inventoryScale + 20.0);
|
|
int slot = index + 50;
|
|
Microsoft.Xna.Framework.Color color10 = new Microsoft.Xna.Framework.Color(100, 100, 100, 100);
|
|
if (Main.mouseX >= num83 && (double) Main.mouseX <= (double) num83 + (double) TextureAssets.InventoryBack.Width() * (double) Main.inventoryScale && Main.mouseY >= num84 && (double) Main.mouseY <= (double) num84 + (double) TextureAssets.InventoryBack.Height() * (double) Main.inventoryScale && !PlayerInput.IgnoreMouseInterface)
|
|
{
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
ItemSlot.OverrideHover(Main.player[Main.myPlayer].inventory, 1, slot);
|
|
ItemSlot.LeftClick(Main.player[Main.myPlayer].inventory, 1, slot);
|
|
ItemSlot.RightClick(Main.player[Main.myPlayer].inventory, 1, slot);
|
|
if (Main.mouseLeftRelease && Main.mouseLeft)
|
|
Recipe.FindRecipes();
|
|
ItemSlot.MouseHover(Main.player[Main.myPlayer].inventory, 1, slot);
|
|
}
|
|
ItemSlot.Draw(Main.spriteBatch, Main.player[Main.myPlayer].inventory, 1, slot, new Vector2((float) num83, (float) num84));
|
|
}
|
|
Vector2 vector2_6 = FontAssets.MouseText.Value.MeasureString("Ammo");
|
|
Vector2 vector2_7 = FontAssets.MouseText.Value.MeasureString(Lang.inter[27].Value);
|
|
float num85 = vector2_6.X / vector2_7.X;
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.MouseText.Value, Lang.inter[27].Value, new Vector2(532f, (float) (84.0 + ((double) vector2_6.Y - (double) vector2_6.Y * (double) num85) / 2.0)), new Microsoft.Xna.Framework.Color((int) Main.mouseTextColor, (int) Main.mouseTextColor, (int) Main.mouseTextColor, (int) Main.mouseTextColor), 0.0f, new Vector2(), 0.75f * num85, SpriteEffects.None, 0.0f);
|
|
Main.inventoryScale = 0.6f;
|
|
for (int index = 0; index < 4; ++index)
|
|
{
|
|
int num86 = 534;
|
|
int num87 = (int) (85.0 + (double) (index * 56) * (double) Main.inventoryScale + 20.0);
|
|
int slot = 54 + index;
|
|
Microsoft.Xna.Framework.Color color11 = new Microsoft.Xna.Framework.Color(100, 100, 100, 100);
|
|
if (Main.mouseX >= num86 && (double) Main.mouseX <= (double) num86 + (double) TextureAssets.InventoryBack.Width() * (double) Main.inventoryScale && Main.mouseY >= num87 && (double) Main.mouseY <= (double) num87 + (double) TextureAssets.InventoryBack.Height() * (double) Main.inventoryScale && !PlayerInput.IgnoreMouseInterface)
|
|
{
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
ItemSlot.OverrideHover(Main.player[Main.myPlayer].inventory, 2, slot);
|
|
ItemSlot.LeftClick(Main.player[Main.myPlayer].inventory, 2, slot);
|
|
ItemSlot.RightClick(Main.player[Main.myPlayer].inventory, 2, slot);
|
|
if (Main.mouseLeftRelease && Main.mouseLeft)
|
|
Recipe.FindRecipes();
|
|
ItemSlot.MouseHover(Main.player[Main.myPlayer].inventory, 2, slot);
|
|
}
|
|
ItemSlot.Draw(Main.spriteBatch, Main.player[Main.myPlayer].inventory, 2, slot, new Vector2((float) num86, (float) num87));
|
|
}
|
|
if (Main.npcShop > 0 && (!Main.playerInventory || Main.player[Main.myPlayer].talkNPC == -1))
|
|
Main.SetNPCShopIndex(0);
|
|
if (Main.npcShop > 0 && !Main.recBigList)
|
|
{
|
|
Utils.DrawBorderStringFourWay(Main.spriteBatch, FontAssets.MouseText.Value, Lang.inter[28].Value, 504f, (float) this.invBottom, Microsoft.Xna.Framework.Color.White * ((float) Main.mouseTextColor / (float) byte.MaxValue), Microsoft.Xna.Framework.Color.Black, Vector2.Zero);
|
|
ItemSlot.DrawSavings(Main.spriteBatch, 504f, (float) this.invBottom);
|
|
Main.inventoryScale = 0.755f;
|
|
if (Main.mouseX > 73 && Main.mouseX < (int) (73.0 + 560.0 * (double) Main.inventoryScale) && Main.mouseY > this.invBottom && Main.mouseY < (int) ((double) this.invBottom + 224.0 * (double) Main.inventoryScale) && !PlayerInput.IgnoreMouseInterface)
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
for (int index5 = 0; index5 < 10; ++index5)
|
|
{
|
|
for (int index6 = 0; index6 < 4; ++index6)
|
|
{
|
|
int num88 = (int) (73.0 + (double) (index5 * 56) * (double) Main.inventoryScale);
|
|
int num89 = (int) ((double) this.invBottom + (double) (index6 * 56) * (double) Main.inventoryScale);
|
|
int slot = index5 + index6 * 10;
|
|
Microsoft.Xna.Framework.Color color12 = new Microsoft.Xna.Framework.Color(100, 100, 100, 100);
|
|
if (Main.mouseX >= num88 && (double) Main.mouseX <= (double) num88 + (double) TextureAssets.InventoryBack.Width() * (double) Main.inventoryScale && Main.mouseY >= num89 && (double) Main.mouseY <= (double) num89 + (double) TextureAssets.InventoryBack.Height() * (double) Main.inventoryScale && !PlayerInput.IgnoreMouseInterface)
|
|
{
|
|
ItemSlot.OverrideHover(this.shop[Main.npcShop].item, 15, slot);
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
ItemSlot.LeftClick(this.shop[Main.npcShop].item, 15, slot);
|
|
ItemSlot.RightClick(this.shop[Main.npcShop].item, 15, slot);
|
|
ItemSlot.MouseHover(this.shop[Main.npcShop].item, 15, slot);
|
|
}
|
|
ItemSlot.Draw(Main.spriteBatch, this.shop[Main.npcShop].item, 15, slot, new Vector2((float) num88, (float) num89));
|
|
}
|
|
}
|
|
}
|
|
if (Main.player[Main.myPlayer].chest > -1 && !Main.tileContainer[(int) Main.tile[Main.player[Main.myPlayer].chestX, Main.player[Main.myPlayer].chestY].type])
|
|
{
|
|
Main.player[Main.myPlayer].chest = -1;
|
|
Recipe.FindRecipes();
|
|
}
|
|
int num90 = 0;
|
|
UIVirtualKeyboard.ShouldHideText = !PlayerInput.UsingGamepad;
|
|
if (!PlayerInput.UsingGamepad)
|
|
num90 = 9999;
|
|
UIVirtualKeyboard.OffsetDown = num90;
|
|
ChestUI.Draw(Main.spriteBatch);
|
|
Main.LocalPlayer.tileEntityAnchor.GetTileEntity()?.OnInventoryDraw(Main.LocalPlayer, Main.spriteBatch);
|
|
if (Main.player[Main.myPlayer].chest == -1 && Main.npcShop == 0)
|
|
{
|
|
int index = 0;
|
|
int num91 = 498;
|
|
int num92 = 244;
|
|
int num93 = TextureAssets.ChestStack[index].Width();
|
|
int num94 = TextureAssets.ChestStack[index].Height();
|
|
UILinkPointNavigator.SetPosition(301, new Vector2((float) num91 + (float) num93 * 0.75f, (float) num92 + (float) num94 * 0.75f));
|
|
if (Main.mouseX >= num91 && Main.mouseX <= num91 + num93 && Main.mouseY >= num92 && Main.mouseY <= num92 + num94 && !PlayerInput.IgnoreMouseInterface)
|
|
{
|
|
index = 1;
|
|
if (!Main.allChestStackHover)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
Main.allChestStackHover = true;
|
|
}
|
|
if (Main.mouseLeft && Main.mouseLeftRelease)
|
|
{
|
|
Main.mouseLeftRelease = false;
|
|
Main.player[Main.myPlayer].QuickStackAllChests();
|
|
Recipe.FindRecipes();
|
|
}
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
}
|
|
else if (Main.allChestStackHover)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
Main.allChestStackHover = false;
|
|
}
|
|
Main.spriteBatch.Draw(TextureAssets.ChestStack[index].Value, new Vector2((float) num91, (float) num92), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.ChestStack[index].Width(), TextureAssets.ChestStack[index].Height())), Microsoft.Xna.Framework.Color.White, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
if (!Main.mouseText && index == 1)
|
|
this.MouseText(Language.GetTextValue("GameUI.QuickStackToNearby"));
|
|
}
|
|
if (Main.player[Main.myPlayer].chest != -1 || Main.npcShop != 0)
|
|
return;
|
|
int num95 = 0;
|
|
int num96 = 534;
|
|
int num97 = 244;
|
|
int num98 = 30;
|
|
int num99 = 30;
|
|
UILinkPointNavigator.SetPosition(302, new Vector2((float) num96 + (float) num98 * 0.75f, (float) num97 + (float) num99 * 0.75f));
|
|
bool flag11 = false;
|
|
if (Main.mouseX >= num96 && Main.mouseX <= num96 + num98 && Main.mouseY >= num97 && Main.mouseY <= num97 + num99 && !PlayerInput.IgnoreMouseInterface)
|
|
{
|
|
num95 = 1;
|
|
flag11 = true;
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
if (Main.mouseLeft && Main.mouseLeftRelease)
|
|
{
|
|
Main.mouseLeftRelease = false;
|
|
ItemSorting.SortInventory();
|
|
Recipe.FindRecipes();
|
|
}
|
|
}
|
|
if (flag11 != Main.inventorySortMouseOver)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
Main.inventorySortMouseOver = flag11;
|
|
}
|
|
Texture2D texture1 = TextureAssets.InventorySort[Main.inventorySortMouseOver ? 1 : 0].Value;
|
|
Main.spriteBatch.Draw(texture1, new Vector2((float) num96, (float) num97), new Microsoft.Xna.Framework.Rectangle?(), Microsoft.Xna.Framework.Color.White, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
if (Main.mouseText || num95 != 1)
|
|
return;
|
|
this.MouseText(Language.GetTextValue("GameUI.SortInventory"));
|
|
}
|
|
|
|
private void DrawNPCHousesInUI()
|
|
{
|
|
UILinkPointNavigator.Shortcuts.NPCS_LastHovered = -2;
|
|
if (Main.mouseX > Main.screenWidth - 64 - 28 && Main.mouseX < (int) ((double) (Main.screenWidth - 64 - 28) + 56.0 * (double) Main.inventoryScale) && Main.mouseY > 174 + Main.mH && Main.mouseY < (int) ((double) (174 + Main.mH) + 448.0 * (double) Main.inventoryScale) && !PlayerInput.IgnoreMouseInterface)
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
int num1 = 0;
|
|
string cursorText = "";
|
|
int num2 = 0;
|
|
int num3 = 0;
|
|
this._npcTypesThatAlreadyDrewAHead.Clear();
|
|
for (int index = 0; index < this._npcIndexWhoHoldsHeadIndex.Length; ++index)
|
|
this._npcIndexWhoHoldsHeadIndex[index] = -1;
|
|
for (int index1 = 0; index1 < 200; ++index1)
|
|
{
|
|
if (Main.npc[index1].active && !this._npcTypesThatAlreadyDrewAHead.Contains(Main.npc[index1].type))
|
|
{
|
|
ITownNPCProfile profile;
|
|
int index2 = !TownNPCProfiles.Instance.GetProfile(Main.npc[index1].type, out profile) ? NPC.TypeToDefaultHeadIndex(Main.npc[index1].type) : profile.GetHeadTextureIndex(Main.npc[index1]);
|
|
if (index2 > 0 && index2 <= 45 && !NPCHeadID.Sets.CannotBeDrawnInHousingUI[index2] && this._npcIndexWhoHoldsHeadIndex[index2] == -1)
|
|
{
|
|
this._npcIndexWhoHoldsHeadIndex[index2] = index1;
|
|
this._npcTypesThatAlreadyDrewAHead.Add(Main.npc[index1].type);
|
|
}
|
|
}
|
|
}
|
|
Main.hidePVPIcons = false;
|
|
for (int index3 = 0; index3 < TextureAssets.NpcHead.Length; ++index3)
|
|
{
|
|
if (index3 == 0 || this._npcIndexWhoHoldsHeadIndex[index3] != -1)
|
|
{
|
|
int index4 = this._npcIndexWhoHoldsHeadIndex[index3];
|
|
int num4 = Main.screenWidth - 64 - 28 + num3;
|
|
int num5 = (int) ((double) (174 + Main.mH) + (double) (num1 * 56) * (double) Main.inventoryScale) + num2;
|
|
Microsoft.Xna.Framework.Color color1 = new Microsoft.Xna.Framework.Color(100, 100, 100, 100);
|
|
if (num5 > Main.screenHeight - 80)
|
|
{
|
|
num3 -= 48;
|
|
num2 -= num5 - (174 + Main.mH);
|
|
num4 = Main.screenWidth - 64 - 28 + num3;
|
|
num5 = (int) ((double) (174 + Main.mH) + (double) (num1 * 56) * (double) Main.inventoryScale) + num2;
|
|
UILinkPointNavigator.Shortcuts.NPCS_IconsPerColumn = num1;
|
|
if (num3 <= -144)
|
|
Main.hidePVPIcons = true;
|
|
}
|
|
if (Main.mouseX >= num4 && (double) Main.mouseX <= (double) num4 + (double) TextureAssets.InventoryBack.Width() * (double) Main.inventoryScale && Main.mouseY >= num5 && (double) Main.mouseY <= (double) num5 + (double) TextureAssets.InventoryBack.Height() * (double) Main.inventoryScale)
|
|
{
|
|
UILinkPointNavigator.Shortcuts.NPCS_LastHovered = index4;
|
|
Main.mouseText = true;
|
|
cursorText = index3 != 0 ? Main.npc[index4].FullName : Lang.inter[8].Value;
|
|
if (!PlayerInput.IgnoreMouseInterface)
|
|
{
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
if (Main.mouseLeftRelease && Main.mouseLeft && !PlayerInput.UsingGamepadUI && Main.mouseItem.type == 0)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
if (index3 == 0)
|
|
this.SetMouseNPC_ToHousingQuery();
|
|
else
|
|
this.SetMouseNPC(index4, Main.npc[index4].type);
|
|
Main.mouseLeftRelease = false;
|
|
}
|
|
}
|
|
}
|
|
UILinkPointNavigator.SetPosition(600 + num1, new Vector2((float) num4, (float) num5) + TextureAssets.InventoryBack.Value.Size() * 0.75f);
|
|
Texture2D texture = TextureAssets.InventoryBack11.Value;
|
|
Microsoft.Xna.Framework.Color color2 = Main.inventoryBack;
|
|
if (UILinkPointNavigator.CurrentPoint - 600 == num1)
|
|
{
|
|
texture = TextureAssets.InventoryBack14.Value;
|
|
color2 = Microsoft.Xna.Framework.Color.White;
|
|
}
|
|
Main.spriteBatch.Draw(texture, new Vector2((float) num4, (float) num5), new Microsoft.Xna.Framework.Rectangle?(), color2, 0.0f, new Vector2(), Main.inventoryScale, SpriteEffects.None, 0.0f);
|
|
color1 = Microsoft.Xna.Framework.Color.White;
|
|
int index5 = index3;
|
|
float scale = 1f;
|
|
float num6 = TextureAssets.NpcHead[index5].Width() <= TextureAssets.NpcHead[index5].Height() ? (float) TextureAssets.NpcHead[index5].Height() : (float) TextureAssets.NpcHead[index5].Width();
|
|
if ((double) num6 > 36.0)
|
|
scale = 36f / num6;
|
|
Main.spriteBatch.Draw(TextureAssets.NpcHead[index5].Value, new Vector2((float) num4 + 26f * Main.inventoryScale, (float) num5 + 26f * Main.inventoryScale), new Microsoft.Xna.Framework.Rectangle?(), color1, 0.0f, new Vector2((float) (TextureAssets.NpcHead[index5].Width() / 2), (float) (TextureAssets.NpcHead[index5].Height() / 2)), scale, SpriteEffects.None, 0.0f);
|
|
++num1;
|
|
}
|
|
}
|
|
UILinkPointNavigator.Shortcuts.NPCS_IconsTotal = num1;
|
|
if (!(cursorText != "") || Main.mouseItem.type != 0)
|
|
return;
|
|
this.MouseText(cursorText);
|
|
}
|
|
|
|
private static void DrawDefenseCounter(int inventoryX, int inventoryY)
|
|
{
|
|
Vector2 vector2_1 = new Vector2((float) (inventoryX - 10 - 47 - 47 - 14), (float) inventoryY + (float) TextureAssets.InventoryBack.Height() * 0.5f);
|
|
Main.spriteBatch.Draw(TextureAssets.Extra[58].Value, vector2_1, new Microsoft.Xna.Framework.Rectangle?(), Microsoft.Xna.Framework.Color.White, 0.0f, TextureAssets.Extra[58].Value.Size() / 2f, Main.inventoryScale, SpriteEffects.None, 0.0f);
|
|
Vector2 vector2_2 = FontAssets.MouseText.Value.MeasureString(Main.player[Main.myPlayer].statDefense.ToString());
|
|
ChatManager.DrawColorCodedStringWithShadow(Main.spriteBatch, FontAssets.MouseText.Value, Main.player[Main.myPlayer].statDefense.ToString(), vector2_1 - vector2_2 * 0.5f * Main.inventoryScale, Microsoft.Xna.Framework.Color.White, 0.0f, Vector2.Zero, new Vector2(Main.inventoryScale));
|
|
if (Utils.CenteredRectangle(vector2_1, TextureAssets.Extra[58].Value.Size()).Contains(new Microsoft.Xna.Framework.Point(Main.mouseX, Main.mouseY)) && !PlayerInput.IgnoreMouseInterface)
|
|
{
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
string str = Main.player[Main.myPlayer].statDefense.ToString() + " " + Lang.inter[10].Value;
|
|
if (!string.IsNullOrEmpty(str))
|
|
Main.hoverItemName = str;
|
|
}
|
|
UILinkPointNavigator.SetPosition(1557, vector2_1 + TextureAssets.Extra[58].Value.Size() * Main.inventoryScale / 4f);
|
|
}
|
|
|
|
private static void DrawGuideCraftText(
|
|
int adjY,
|
|
Microsoft.Xna.Framework.Color craftingTipColor,
|
|
out int inventoryX,
|
|
out int inventoryY)
|
|
{
|
|
inventoryX = 73;
|
|
inventoryY = 331;
|
|
inventoryY += adjY;
|
|
Main._requiredObjecsForCraftingText.Clear();
|
|
string str1;
|
|
if (Main.guideItem.IsAir)
|
|
{
|
|
str1 = Lang.inter[24].Value;
|
|
}
|
|
else
|
|
{
|
|
str1 = Lang.inter[21].Value + " " + Main.guideItem.Name;
|
|
Recipe recipe = Main.recipe[Main.availableRecipe[Main.focusRecipe]];
|
|
for (int index = 0; index < Recipe.maxRequirements; ++index)
|
|
{
|
|
int num = recipe.requiredTile[index];
|
|
if (num != -1)
|
|
{
|
|
int requiredTileStyle = Recipe.GetRequiredTileStyle(num);
|
|
string mapObjectName = Lang.GetMapObjectName(MapHelper.TileToLookup(num, requiredTileStyle));
|
|
Main._requiredObjecsForCraftingText.Add(mapObjectName);
|
|
}
|
|
else
|
|
break;
|
|
}
|
|
if (recipe.needWater)
|
|
Main._requiredObjecsForCraftingText.Add(Lang.inter[53].Value);
|
|
if (recipe.needHoney)
|
|
Main._requiredObjecsForCraftingText.Add(Lang.inter[58].Value);
|
|
if (recipe.needLava)
|
|
Main._requiredObjecsForCraftingText.Add(Lang.inter[56].Value);
|
|
if (recipe.needSnowBiome)
|
|
Main._requiredObjecsForCraftingText.Add(Lang.inter[123].Value);
|
|
if (recipe.needGraveyardBiome)
|
|
Main._requiredObjecsForCraftingText.Add(Lang.inter[124].Value);
|
|
if (Main._requiredObjecsForCraftingText.Count == 0)
|
|
{
|
|
string str2 = Lang.inter[23].Value;
|
|
Main._requiredObjecsForCraftingText.Add(str2);
|
|
}
|
|
}
|
|
Microsoft.Xna.Framework.Color color1 = new Microsoft.Xna.Framework.Color((int) Main.mouseTextColor, (int) Main.mouseTextColor, (int) Main.mouseTextColor, (int) Main.mouseTextColor);
|
|
Vector2 vector2_1 = new Vector2((float) (inventoryX + 50), (float) (inventoryY + 12));
|
|
DynamicSpriteFont dynamicSpriteFont = FontAssets.MouseText.Value;
|
|
if (Main._requiredObjecsForCraftingText.Count > 0)
|
|
{
|
|
vector2_1.Y -= 14f;
|
|
Vector2 vector2_2 = vector2_1 + new Vector2(0.0f, 26f);
|
|
Microsoft.Xna.Framework.Color color2 = color1;
|
|
string str3 = Lang.inter[22].Value + " " + string.Join(", ", (IEnumerable<string>) Main._requiredObjecsForCraftingText);
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, dynamicSpriteFont, str3, vector2_2, color2, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, dynamicSpriteFont, str1, vector2_1, color1, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
|
|
private static void DrawGuideCraftText_Old(
|
|
int adjY,
|
|
Microsoft.Xna.Framework.Color craftingTipColor,
|
|
out int inventoryX,
|
|
out int inventoryY)
|
|
{
|
|
inventoryX = 73;
|
|
inventoryY = 331;
|
|
inventoryY += adjY;
|
|
int num1 = 0;
|
|
int num2 = 0;
|
|
inventoryX += num1;
|
|
inventoryY += num2;
|
|
string str;
|
|
if (Main.guideItem.type > 0)
|
|
{
|
|
str = Lang.inter[21].Value + " " + Main.guideItem.Name;
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.MouseText.Value, Lang.inter[22].Value, new Vector2((float) inventoryX, (float) (inventoryY + 118)), craftingTipColor, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
int focusRecipe = Main.focusRecipe;
|
|
int num3 = 0;
|
|
for (int index = 0; index < Recipe.maxRequirements; ++index)
|
|
{
|
|
int num4 = (index + 1) * 26;
|
|
if (Main.recipe[Main.availableRecipe[focusRecipe]].requiredTile[index] == -1)
|
|
{
|
|
if (index == 0 && !Main.recipe[Main.availableRecipe[focusRecipe]].needWater && !Main.recipe[Main.availableRecipe[focusRecipe]].needHoney && !Main.recipe[Main.availableRecipe[focusRecipe]].needLava && !Main.recipe[Main.availableRecipe[focusRecipe]].needSnowBiome && !Main.recipe[Main.availableRecipe[focusRecipe]].needGraveyardBiome)
|
|
{
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.MouseText.Value, Lang.inter[23].Value, new Vector2((float) inventoryX, (float) (inventoryY + 118 + num4)), craftingTipColor, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
++num3;
|
|
int num5 = Main.recipe[Main.availableRecipe[focusRecipe]].requiredTile[index];
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.MouseText.Value, Lang.GetMapObjectName(MapHelper.TileToLookup(num5, Recipe.GetRequiredTileStyle(num5))), new Vector2((float) inventoryX, (float) (inventoryY + 118 + num4)), craftingTipColor, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
if (Main.recipe[Main.availableRecipe[focusRecipe]].needWater)
|
|
{
|
|
int num6 = (num3 + 1) * 26;
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.MouseText.Value, Lang.inter[53].Value, new Vector2((float) inventoryX, (float) (inventoryY + 118 + num6)), craftingTipColor, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
if (Main.recipe[Main.availableRecipe[focusRecipe]].needHoney)
|
|
{
|
|
int num7 = (num3 + 1) * 26;
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.MouseText.Value, Lang.inter[58].Value, new Vector2((float) inventoryX, (float) (inventoryY + 118 + num7)), craftingTipColor, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
if (Main.recipe[Main.availableRecipe[focusRecipe]].needLava)
|
|
{
|
|
int num8 = (num3 + 1) * 26;
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.MouseText.Value, Lang.inter[56].Value, new Vector2((float) inventoryX, (float) (inventoryY + 118 + num8)), craftingTipColor, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
if (Main.recipe[Main.availableRecipe[focusRecipe]].needSnowBiome)
|
|
{
|
|
int num9 = (num3 + 1) * 26;
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.MouseText.Value, Lang.inter[123].Value, new Vector2((float) inventoryX, (float) (inventoryY + 118 + num9)), craftingTipColor, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
if (Main.recipe[Main.availableRecipe[focusRecipe]].needGraveyardBiome)
|
|
{
|
|
int num10 = (num3 + 1) * 26;
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.MouseText.Value, Lang.inter[124].Value, new Vector2((float) inventoryX, (float) (inventoryY + 118 + num10)), craftingTipColor, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
else
|
|
str = Lang.inter[24].Value;
|
|
inventoryX -= num1;
|
|
inventoryY -= num2;
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.MouseText.Value, str, new Vector2((float) (inventoryX + 50), (float) (inventoryY + 12)), new Microsoft.Xna.Framework.Color((int) Main.mouseTextColor, (int) Main.mouseTextColor, (int) Main.mouseTextColor, (int) Main.mouseTextColor), 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
|
|
public static void LockCraftingForThisCraftClickDuration() => Main._preventCraftingBecauseClickWasUsedToChangeFocusedRecipe = true;
|
|
|
|
private static void HoverOverCraftingItemButton(int recipeIndex)
|
|
{
|
|
Recipe recipe = Main.recipe[Main.availableRecipe[recipeIndex]];
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
bool flag1 = Main.mouseLeftRelease && Main.mouseLeft || Main.mouseRightRelease && Main.mouseRight;
|
|
bool flag2 = Main.mouseLeft || Main.mouseRight;
|
|
if (Main.focusRecipe == recipeIndex && Main.guideItem.IsAir)
|
|
{
|
|
bool flag3 = Main.LocalPlayer.ItemTimeIsZero && Main.LocalPlayer.itemAnimation == 0 && !Main.player[Main.myPlayer].HasLockedInventory() && !Main._preventCraftingBecauseClickWasUsedToChangeFocusedRecipe;
|
|
bool flag4 = ((Main._currentRecipeBeingCrafted == -1 ? 0 : (Main._currentRecipeBeingCrafted != Main.availableRecipe[recipeIndex] ? 1 : 0)) | (Main._currentRecipeBeingCrafted == -1 ? (false ? 1 : 0) : (Main.recipe[Main._currentRecipeBeingCrafted].createItem.maxStack == 1 ? 1 : 0))) != 0;
|
|
if (((!flag2 ? 0 : (!flag4 ? 1 : 0)) & (flag3 ? 1 : 0)) != 0 && Main.stackSplit <= 1)
|
|
{
|
|
bool usingGamepad = PlayerInput.UsingGamepad;
|
|
bool movedAnItemToAllowCrafting;
|
|
int num = Main.TryAllowingToCraftRecipe(recipe, usingGamepad, out movedAnItemToAllowCrafting) ? 1 : 0;
|
|
if (movedAnItemToAllowCrafting)
|
|
Main._preventCraftingBecauseClickWasUsedToChangeFocusedRecipe = true;
|
|
if (num != 0 && !movedAnItemToAllowCrafting)
|
|
{
|
|
if (Main._currentRecipeBeingCrafted == -1)
|
|
Main._currentRecipeBeingCrafted = Main.availableRecipe[recipeIndex];
|
|
ItemSlot.RefreshStackSplitCooldown();
|
|
Main.CraftItem(recipe);
|
|
}
|
|
}
|
|
}
|
|
else if (flag1)
|
|
{
|
|
Main.focusRecipe = recipeIndex;
|
|
Main.stackSplit = 15;
|
|
Main._preventCraftingBecauseClickWasUsedToChangeFocusedRecipe = true;
|
|
}
|
|
Main.craftingHide = true;
|
|
Main.hoverItemName = recipe.createItem.Name;
|
|
Main.HoverItem = recipe.createItem.Clone();
|
|
if (recipe.createItem.stack > 1)
|
|
Main.hoverItemName = Main.hoverItemName + " (" + (object) recipe.createItem.stack + ")";
|
|
if (flag2)
|
|
return;
|
|
Main._preventCraftingBecauseClickWasUsedToChangeFocusedRecipe = false;
|
|
Main._currentRecipeBeingCrafted = -1;
|
|
}
|
|
|
|
private static bool TryAllowingToCraftRecipe(
|
|
Recipe currentRecipe,
|
|
bool tryFittingItemInInventoryToAllowCrafting,
|
|
out bool movedAnItemToAllowCrafting)
|
|
{
|
|
movedAnItemToAllowCrafting = false;
|
|
if (Main.mouseItem.IsAir || Main.mouseItem.IsTheSameAs(currentRecipe.createItem) && Main.mouseItem.stack + currentRecipe.createItem.stack <= Main.mouseItem.maxStack)
|
|
return true;
|
|
if (tryFittingItemInInventoryToAllowCrafting && Main.LocalPlayer.ItemSpace(Main.mouseItem).CanTakeItemToPersonalInventory)
|
|
{
|
|
Main.mouseItem = Main.LocalPlayer.GetItem(Main.myPlayer, Main.mouseItem, GetItemSettings.InventoryUIToInventorySettingsShowAsNew);
|
|
if (Main.mouseItem.IsAir)
|
|
{
|
|
movedAnItemToAllowCrafting = true;
|
|
return true;
|
|
}
|
|
if (Main.mouseItem.IsTheSameAs(currentRecipe.createItem) && Main.mouseItem.stack + currentRecipe.createItem.stack <= Main.mouseItem.maxStack)
|
|
{
|
|
movedAnItemToAllowCrafting = true;
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
private static void DrawTrashItemSlot(int pivotTopLeftX, int pivotTopLeftY)
|
|
{
|
|
Main.inventoryScale = 0.85f;
|
|
int num1 = 448 + pivotTopLeftX;
|
|
int num2 = 258 + pivotTopLeftY;
|
|
if ((Main.player[Main.myPlayer].chest != -1 || Main.npcShop > 0) && !Main.recBigList)
|
|
{
|
|
num2 += 168;
|
|
Main.inventoryScale = 0.755f;
|
|
num1 += 5;
|
|
}
|
|
Microsoft.Xna.Framework.Color color = new Microsoft.Xna.Framework.Color(150, 150, 150, 150);
|
|
if (Main.mouseX >= num1 && (double) Main.mouseX <= (double) num1 + (double) TextureAssets.InventoryBack.Width() * (double) Main.inventoryScale && Main.mouseY >= num2 && (double) Main.mouseY <= (double) num2 + (double) TextureAssets.InventoryBack.Height() * (double) Main.inventoryScale && !PlayerInput.IgnoreMouseInterface)
|
|
{
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
ItemSlot.LeftClick(ref Main.player[Main.myPlayer].trashItem, 6);
|
|
if (Main.mouseLeftRelease && Main.mouseLeft)
|
|
Recipe.FindRecipes();
|
|
ItemSlot.MouseHover(ref Main.player[Main.myPlayer].trashItem, 6);
|
|
}
|
|
ItemSlot.Draw(Main.spriteBatch, ref Main.player[Main.myPlayer].trashItem, 6, new Vector2((float) num1, (float) num2));
|
|
}
|
|
|
|
private static void DrawEmoteBubblesButton(int pivotTopLeftX, int pivotTopLeftY)
|
|
{
|
|
Main.inventoryScale = 0.85f;
|
|
int num1 = (int) ((double) (450 + pivotTopLeftX) - 56.0 * (double) Main.inventoryScale);
|
|
int num2 = 258 + pivotTopLeftY;
|
|
int num3 = 244;
|
|
int width = 30;
|
|
int height = 30;
|
|
int x = 534;
|
|
int y = num3 + height + 4;
|
|
if ((Main.player[Main.myPlayer].chest != -1 || Main.npcShop > 0) && !Main.recBigList)
|
|
{
|
|
y += 168;
|
|
Main.inventoryScale = 0.755f;
|
|
x += 5;
|
|
int num4 = num3 + 24;
|
|
}
|
|
Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.Rectangle(x, y, (int) ((double) TextureAssets.InventoryBack.Width() * (double) Main.inventoryScale), (int) ((double) TextureAssets.InventoryBack.Height() * (double) Main.inventoryScale));
|
|
rectangle = new Microsoft.Xna.Framework.Rectangle(x, y, width, height);
|
|
bool flag = false;
|
|
if (rectangle.Contains(new Microsoft.Xna.Framework.Point(Main.mouseX, Main.mouseY)) && !PlayerInput.IgnoreMouseInterface)
|
|
{
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
flag = true;
|
|
if (Main.mouseLeft && Main.mouseLeftRelease)
|
|
{
|
|
Main.player[Main.myPlayer].SetTalkNPC(-1);
|
|
Main.npcChatCornerItem = 0;
|
|
Main.npcChatText = "";
|
|
Main.mouseLeftRelease = false;
|
|
SoundEngine.PlaySound(12);
|
|
IngameFancyUI.OpenUIState((UIState) new UIEmotesMenu());
|
|
}
|
|
}
|
|
Texture2D texture2D = TextureAssets.EmoteMenuButton.Value;
|
|
Vector2 vector2 = rectangle.Center.ToVector2();
|
|
Microsoft.Xna.Framework.Rectangle r = texture2D.Frame(2, frameX: (flag ? 1 : 0));
|
|
r.Width -= 2;
|
|
r.Height -= 2;
|
|
Vector2 origin = r.Size() / 2f;
|
|
Microsoft.Xna.Framework.Color white = Microsoft.Xna.Framework.Color.White;
|
|
Main.spriteBatch.Draw(texture2D, vector2, new Microsoft.Xna.Framework.Rectangle?(r), white, 0.0f, origin, 1f, SpriteEffects.None, 0.0f);
|
|
UILinkPointNavigator.SetPosition(309, vector2);
|
|
if (!(!Main.mouseText & flag))
|
|
return;
|
|
Main.instance.MouseText(Language.GetTextValue("GameUI.Emote"));
|
|
}
|
|
|
|
private static void DrawBestiaryIcon(int pivotTopLeftX, int pivotTopLeftY)
|
|
{
|
|
Main.inventoryScale = 0.85f;
|
|
int num1 = (int) ((double) (450 + pivotTopLeftX) - 56.0 * (double) Main.inventoryScale * 2.0);
|
|
int num2 = 258 + pivotTopLeftY;
|
|
int num3 = 244;
|
|
int width = 30;
|
|
int height = 30;
|
|
int num4 = 244;
|
|
int x = 498;
|
|
int y = num4 + height + 4;
|
|
if ((Main.player[Main.myPlayer].chest != -1 || Main.npcShop > 0) && !Main.recBigList)
|
|
{
|
|
y += 168;
|
|
Main.inventoryScale = 0.755f;
|
|
x += 5;
|
|
num3 = num4 + 24;
|
|
}
|
|
Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.Rectangle(x, y, (int) ((double) TextureAssets.InventoryBack.Width() * (double) Main.inventoryScale), (int) ((double) TextureAssets.InventoryBack.Height() * (double) Main.inventoryScale));
|
|
rectangle = new Microsoft.Xna.Framework.Rectangle(x, y, width, height);
|
|
bool flag = false;
|
|
if (rectangle.Contains(new Microsoft.Xna.Framework.Point(Main.mouseX, Main.mouseY)) && !PlayerInput.IgnoreMouseInterface)
|
|
{
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
flag = true;
|
|
if (Main.mouseLeft && Main.mouseLeftRelease)
|
|
{
|
|
Main.player[Main.myPlayer].SetTalkNPC(-1);
|
|
Main.npcChatCornerItem = 0;
|
|
Main.npcChatText = "";
|
|
Main.mouseLeftRelease = false;
|
|
SoundEngine.PlaySound(12);
|
|
IngameFancyUI.OpenUIState((UIState) Main.BestiaryUI);
|
|
Main.BestiaryUI.OnOpenPage();
|
|
}
|
|
}
|
|
Texture2D texture2D = TextureAssets.BestiaryMenuButton.Value;
|
|
Vector2 vector2 = rectangle.Center.ToVector2();
|
|
Microsoft.Xna.Framework.Rectangle r = texture2D.Frame(2, frameX: (flag ? 1 : 0));
|
|
r.Width -= 2;
|
|
r.Height -= 2;
|
|
Vector2 origin = r.Size() / 2f;
|
|
Microsoft.Xna.Framework.Color white = Microsoft.Xna.Framework.Color.White;
|
|
Main.spriteBatch.Draw(texture2D, vector2, new Microsoft.Xna.Framework.Rectangle?(r), white, 0.0f, origin, 1f, SpriteEffects.None, 0.0f);
|
|
UILinkPointNavigator.SetPosition(310, vector2);
|
|
if (!(!Main.mouseText & flag))
|
|
return;
|
|
Main.instance.MouseText(Language.GetTextValue("GameUI.Bestiary"));
|
|
}
|
|
|
|
private static void SetRecipeMaterialDisplayName(int i)
|
|
{
|
|
Main.hoverItemName = Main.recipe[Main.availableRecipe[Main.focusRecipe]].requiredItem[i].Name;
|
|
Main.HoverItem = Main.recipe[Main.availableRecipe[Main.focusRecipe]].requiredItem[i].Clone();
|
|
string theText;
|
|
if (Main.recipe[Main.availableRecipe[Main.focusRecipe]].ProcessGroupsForText(Main.recipe[Main.availableRecipe[Main.focusRecipe]].requiredItem[i].type, out theText))
|
|
Main.HoverItem.SetNameOverride(theText);
|
|
if (Main.recipe[Main.availableRecipe[Main.focusRecipe]].anyIronBar && Main.recipe[Main.availableRecipe[Main.focusRecipe]].requiredItem[i].type == 22)
|
|
Main.HoverItem.SetNameOverride(Lang.misc[37].Value + " " + Lang.GetItemNameValue(22));
|
|
else if (Main.recipe[Main.availableRecipe[Main.focusRecipe]].anyWood && Main.recipe[Main.availableRecipe[Main.focusRecipe]].requiredItem[i].type == 9)
|
|
Main.HoverItem.SetNameOverride(Lang.misc[37].Value + " " + Lang.GetItemNameValue(9));
|
|
else if (Main.recipe[Main.availableRecipe[Main.focusRecipe]].anySand && Main.recipe[Main.availableRecipe[Main.focusRecipe]].requiredItem[i].type == 169)
|
|
Main.HoverItem.SetNameOverride(Lang.misc[37].Value + " " + Lang.GetItemNameValue(169));
|
|
else if (Main.recipe[Main.availableRecipe[Main.focusRecipe]].anyFragment && Main.recipe[Main.availableRecipe[Main.focusRecipe]].requiredItem[i].type == 3458)
|
|
Main.HoverItem.SetNameOverride(Lang.misc[37].Value + " " + Lang.misc[51].Value);
|
|
else if (Main.recipe[Main.availableRecipe[Main.focusRecipe]].anyPressurePlate && Main.recipe[Main.availableRecipe[Main.focusRecipe]].requiredItem[i].type == 542)
|
|
Main.HoverItem.SetNameOverride(Lang.misc[37].Value + " " + Lang.misc[38].Value);
|
|
if (Main.recipe[Main.availableRecipe[Main.focusRecipe]].requiredItem[i].stack <= 1)
|
|
return;
|
|
Main.hoverItemName = Main.hoverItemName + " (" + (object) Main.recipe[Main.availableRecipe[Main.focusRecipe]].requiredItem[i].stack + ")";
|
|
}
|
|
|
|
private void DrawHotbarLockIcon(int pivotTopLeftX, int pivotTopLeftY, bool pushSideToolsUp)
|
|
{
|
|
int num1 = pivotTopLeftX;
|
|
int num2 = 21 + pivotTopLeftY;
|
|
Player player = Main.player[Main.myPlayer];
|
|
if (pushSideToolsUp)
|
|
num2 = pivotTopLeftY;
|
|
float scale = 0.9f;
|
|
Texture2D texture2D = TextureAssets.HbLock[Main.player[Main.myPlayer].hbLocked ? 0 : 1].Value;
|
|
Microsoft.Xna.Framework.Rectangle rectangle = texture2D.Frame(2);
|
|
bool flag = false;
|
|
if (Main.mouseX > num1 && (double) Main.mouseX < (double) num1 + (double) rectangle.Width * (double) scale && Main.mouseY > num2 && (double) Main.mouseY < (double) num2 + (double) rectangle.Height * (double) scale)
|
|
{
|
|
flag = true;
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
if (!Main.player[Main.myPlayer].hbLocked)
|
|
this.MouseText(Lang.inter[5].Value);
|
|
else
|
|
this.MouseText(Lang.inter[6].Value);
|
|
Main.mouseText = true;
|
|
if (Main.mouseLeft && Main.mouseLeftRelease)
|
|
{
|
|
SoundEngine.PlaySound(22);
|
|
Main.player[Main.myPlayer].hbLocked = !Main.player[Main.myPlayer].hbLocked;
|
|
}
|
|
}
|
|
Main.spriteBatch.Draw(texture2D, new Vector2((float) num1, (float) num2), new Microsoft.Xna.Framework.Rectangle?(rectangle), Microsoft.Xna.Framework.Color.White, 0.0f, new Vector2(), scale, SpriteEffects.None, 0.0f);
|
|
if (!flag)
|
|
return;
|
|
Main.spriteBatch.Draw(texture2D, new Vector2((float) num1, (float) num2), new Microsoft.Xna.Framework.Rectangle?(texture2D.Frame(2, frameX: 1)), Main.OurFavoriteColor, 0.0f, new Vector2(), scale, SpriteEffects.None, 0.0f);
|
|
}
|
|
|
|
private void DrawBlockReplacementIcon(
|
|
int pivotTopLeftX,
|
|
int pivotTopLeftY,
|
|
bool pushSideToolsUp,
|
|
int gamepadPointOffset)
|
|
{
|
|
if (!Main.playerInventory)
|
|
return;
|
|
int num1 = pivotTopLeftX;
|
|
int num2 = 44 + pivotTopLeftY;
|
|
Player player = Main.player[Main.myPlayer];
|
|
if (pushSideToolsUp)
|
|
num2 = 23 + pivotTopLeftY;
|
|
float scale = 0.9f;
|
|
int index = 10;
|
|
bool flag1 = Main.player[Main.myPlayer].builderAccStatus[index] == 0;
|
|
Texture2D texture2D = TextureAssets.blockReplaceIcon[0].Value;
|
|
Microsoft.Xna.Framework.Rectangle r = texture2D.Frame(3, frameX: (flag1 ? 0 : 1));
|
|
bool flag2 = false;
|
|
if (Main.mouseX > num1 && (double) Main.mouseX < (double) num1 + (double) r.Width * (double) scale && Main.mouseY > num2 && (double) Main.mouseY < (double) num2 + (double) r.Height * (double) scale)
|
|
{
|
|
flag2 = true;
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
this.MouseText(flag1 ? Language.GetTextValue("GameUI.BlockReplacerOn") : Language.GetTextValue("GameUI.BlockReplacerOff"));
|
|
Main.mouseText = true;
|
|
if (Main.mouseLeft && Main.mouseLeftRelease)
|
|
{
|
|
SoundEngine.PlaySound(22);
|
|
Main.player[Main.myPlayer].builderAccStatus[index] = flag1 ? 1 : 0;
|
|
}
|
|
}
|
|
Vector2 position = new Vector2((float) num1, (float) num2);
|
|
Main.spriteBatch.Draw(texture2D, position, new Microsoft.Xna.Framework.Rectangle?(r), Microsoft.Xna.Framework.Color.White, 0.0f, new Vector2(), scale, SpriteEffects.None, 0.0f);
|
|
if (flag2)
|
|
Main.spriteBatch.Draw(texture2D, position, new Microsoft.Xna.Framework.Rectangle?(texture2D.Frame(3, frameX: 2)), Main.OurFavoriteColor, 0.0f, new Vector2(), scale, SpriteEffects.None, 0.0f);
|
|
UILinkPointNavigator.SetPosition(6000 + gamepadPointOffset, position + r.Size() * 0.65f);
|
|
}
|
|
|
|
private void DrawTorchBiomeSwapIcon(
|
|
int pivotTopLeftX,
|
|
int pivotTopLeftY,
|
|
bool pushSideToolsUp,
|
|
int gamepadPointOffset)
|
|
{
|
|
if (!Main.playerInventory)
|
|
return;
|
|
int num1 = pivotTopLeftX;
|
|
int num2 = 68 + pivotTopLeftY;
|
|
Player player = Main.player[Main.myPlayer];
|
|
if (pushSideToolsUp)
|
|
num2 = 47 + pivotTopLeftY;
|
|
float scale = 0.9f;
|
|
int index = 11;
|
|
bool flag1 = Main.player[Main.myPlayer].builderAccStatus[index] == 0;
|
|
Texture2D texture2D = TextureAssets.Extra[211].Value;
|
|
Microsoft.Xna.Framework.Rectangle r = texture2D.Frame(4, frameX: (flag1 ? 1 : 0));
|
|
bool flag2 = false;
|
|
if (Main.mouseX > num1 && (double) Main.mouseX < (double) num1 + (double) r.Width * (double) scale && Main.mouseY > num2 && (double) Main.mouseY < (double) num2 + (double) r.Height * (double) scale)
|
|
{
|
|
flag2 = true;
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
this.MouseText(flag1 ? Language.GetTextValue("GameUI.TorchTypeSwapperOn") : Language.GetTextValue("GameUI.TorchTypeSwapperOff"));
|
|
Main.mouseText = true;
|
|
if (Main.mouseLeft && Main.mouseLeftRelease)
|
|
{
|
|
SoundEngine.PlaySound(22);
|
|
Main.player[Main.myPlayer].builderAccStatus[index] = flag1 ? 1 : 0;
|
|
}
|
|
}
|
|
Vector2 position = new Vector2((float) num1, (float) num2);
|
|
Main.spriteBatch.Draw(texture2D, position, new Microsoft.Xna.Framework.Rectangle?(r), Microsoft.Xna.Framework.Color.White, 0.0f, new Vector2(), scale, SpriteEffects.None, 0.0f);
|
|
if (flag2)
|
|
Main.spriteBatch.Draw(texture2D, position, new Microsoft.Xna.Framework.Rectangle?(texture2D.Frame(4, frameX: (flag1 ? 3 : 2))), Main.OurFavoriteColor, 0.0f, new Vector2(), scale, SpriteEffects.None, 0.0f);
|
|
UILinkPointNavigator.SetPosition(6000 + gamepadPointOffset, position + r.Size() * 0.65f);
|
|
}
|
|
|
|
public static void CraftItem(Recipe r)
|
|
{
|
|
int stack = Main.mouseItem.stack;
|
|
Main.mouseItem = r.createItem.Clone();
|
|
Main.mouseItem.stack += stack;
|
|
if (stack <= 0)
|
|
Main.mouseItem.Prefix(-1);
|
|
Main.mouseItem.position.X = Main.player[Main.myPlayer].position.X + (float) (Main.player[Main.myPlayer].width / 2) - (float) (Main.mouseItem.width / 2);
|
|
Main.mouseItem.position.Y = Main.player[Main.myPlayer].position.Y + (float) (Main.player[Main.myPlayer].height / 2) - (float) (Main.mouseItem.height / 2);
|
|
PopupText.NewText(PopupTextContext.ItemCraft, Main.mouseItem, r.createItem.stack);
|
|
r.Create();
|
|
if (Main.mouseItem.type <= 0 && r.createItem.type <= 0)
|
|
return;
|
|
SoundEngine.PlaySound(7);
|
|
}
|
|
|
|
private static void DrawPVPIcons()
|
|
{
|
|
if (Main.EquipPage == 1)
|
|
{
|
|
if (Main.hidePVPIcons)
|
|
return;
|
|
}
|
|
else
|
|
Main.hidePVPIcons = false;
|
|
Main.inventoryScale = 0.6f;
|
|
int num1 = (int) (52.0 * (double) Main.inventoryScale);
|
|
int num2 = 707 - num1 * 4 + Main.screenWidth - 800;
|
|
int num3 = 114 + Main.mH + num1 * 2 + num1 / 2 - 12;
|
|
if (Main.EquipPage == 2)
|
|
num2 += num1 + num1 / 2;
|
|
int num4 = Main.player[Main.myPlayer].hostile ? 2 : 0;
|
|
if (Main.mouseX > num2 - 7 && Main.mouseX < num2 + 25 && Main.mouseY > num3 - 2 && Main.mouseY < num3 + 37 && !PlayerInput.IgnoreMouseInterface)
|
|
{
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
if (Main.teamCooldown == 0)
|
|
++num4;
|
|
if (Main.mouseLeft && Main.mouseLeftRelease && Main.teamCooldown == 0)
|
|
{
|
|
Main.teamCooldown = Main.teamCooldownLen;
|
|
SoundEngine.PlaySound(12);
|
|
Main.player[Main.myPlayer].hostile = !Main.player[Main.myPlayer].hostile;
|
|
NetMessage.SendData(30, number: Main.myPlayer);
|
|
}
|
|
}
|
|
Microsoft.Xna.Framework.Rectangle r1 = TextureAssets.Pvp[0].Frame(4, 6);
|
|
r1.Location = new Microsoft.Xna.Framework.Point(r1.Width * num4, r1.Height * Main.player[Main.myPlayer].team);
|
|
r1.Width -= 2;
|
|
--r1.Height;
|
|
Main.spriteBatch.Draw(TextureAssets.Pvp[0].Value, new Vector2((float) (num2 - 10), (float) num3), new Microsoft.Xna.Framework.Rectangle?(r1), Microsoft.Xna.Framework.Color.White, 0.0f, Vector2.Zero, Vector2.One, SpriteEffects.None, 0.0f);
|
|
UILinkPointNavigator.SetPosition(1550, new Vector2((float) (num2 - 10), (float) num3) + r1.Size() * 0.75f);
|
|
int num5 = num3 + 60;
|
|
int num6 = num2 - 10;
|
|
Microsoft.Xna.Framework.Rectangle rectangle1 = TextureAssets.Pvp[1].Frame(6);
|
|
Microsoft.Xna.Framework.Rectangle r2 = rectangle1;
|
|
for (int index = 0; index < 6; ++index)
|
|
{
|
|
r2.Location = new Microsoft.Xna.Framework.Point(num6 + index % 2 * 20, num5 + index / 2 * 20);
|
|
rectangle1.X = rectangle1.Width * index;
|
|
bool flag = false;
|
|
if (r2.Contains(Main.MouseScreen.ToPoint()) && !PlayerInput.IgnoreMouseInterface)
|
|
{
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
if (Main.teamCooldown == 0)
|
|
flag = true;
|
|
if (Main.mouseLeft && Main.mouseLeftRelease && Main.player[Main.myPlayer].team != index && Main.teamCooldown == 0)
|
|
{
|
|
if (!Main.player[Main.myPlayer].TeamChangeAllowed())
|
|
{
|
|
Main.NewText(Lang.misc[84].Value, G: (byte) 240, B: (byte) 20);
|
|
}
|
|
else
|
|
{
|
|
Main.teamCooldown = Main.teamCooldownLen;
|
|
SoundEngine.PlaySound(12);
|
|
Main.player[Main.myPlayer].team = index;
|
|
NetMessage.SendData(45, number: Main.myPlayer);
|
|
}
|
|
}
|
|
}
|
|
r2.Width = rectangle1.Width - 2;
|
|
if (flag)
|
|
Main.spriteBatch.Draw(TextureAssets.Pvp[2].Value, r2.Location.ToVector2() + new Vector2(-2f), Microsoft.Xna.Framework.Color.White);
|
|
Microsoft.Xna.Framework.Rectangle rectangle2 = rectangle1;
|
|
rectangle2.Width -= 2;
|
|
Main.spriteBatch.Draw(TextureAssets.Pvp[1].Value, r2.Location.ToVector2(), new Microsoft.Xna.Framework.Rectangle?(rectangle2), Microsoft.Xna.Framework.Color.White);
|
|
UILinkPointNavigator.SetPosition(1550 + index + 1, r2.Location.ToVector2() + r2.Size() * 0.75f);
|
|
}
|
|
}
|
|
|
|
private static int DrawPageIcons(int yPos)
|
|
{
|
|
int num = -1;
|
|
Vector2 vector2 = new Vector2((float) (Main.screenWidth - 162), (float) yPos);
|
|
vector2.X += 82f;
|
|
Texture2D texture2D1 = TextureAssets.EquipPage[Main.EquipPage == 2 ? 3 : 2].Value;
|
|
if (Collision.CheckAABBvAABBCollision(vector2, texture2D1.Size(), new Vector2((float) Main.mouseX, (float) Main.mouseY), Vector2.One) && (Main.mouseItem.stack < 1 || Main.mouseItem.dye > (byte) 0))
|
|
num = 2;
|
|
if (num == 2)
|
|
Main.spriteBatch.Draw(TextureAssets.EquipPage[6].Value, vector2, new Microsoft.Xna.Framework.Rectangle?(), Main.OurFavoriteColor, 0.0f, new Vector2(2f), 0.9f, SpriteEffects.None, 0.0f);
|
|
Main.spriteBatch.Draw(texture2D1, vector2, new Microsoft.Xna.Framework.Rectangle?(), Microsoft.Xna.Framework.Color.White, 0.0f, Vector2.Zero, 0.9f, SpriteEffects.None, 0.0f);
|
|
UILinkPointNavigator.SetPosition(305, vector2 + texture2D1.Size() * 0.75f);
|
|
vector2.X -= 48f;
|
|
Texture2D texture2D2 = TextureAssets.EquipPage[Main.EquipPage == 1 ? 5 : 4].Value;
|
|
if (Collision.CheckAABBvAABBCollision(vector2, texture2D2.Size(), new Vector2((float) Main.mouseX, (float) Main.mouseY), Vector2.One) && Main.mouseItem.stack < 1)
|
|
num = 1;
|
|
if (num == 1)
|
|
Main.spriteBatch.Draw(TextureAssets.EquipPage[7].Value, vector2, new Microsoft.Xna.Framework.Rectangle?(), Main.OurFavoriteColor, 0.0f, new Vector2(2f), 0.9f, SpriteEffects.None, 0.0f);
|
|
Main.spriteBatch.Draw(texture2D2, vector2, new Microsoft.Xna.Framework.Rectangle?(), Microsoft.Xna.Framework.Color.White, 0.0f, Vector2.Zero, 0.9f, SpriteEffects.None, 0.0f);
|
|
UILinkPointNavigator.SetPosition(306, vector2 + texture2D2.Size() * 0.75f);
|
|
vector2.X -= 48f;
|
|
Texture2D texture2D3 = TextureAssets.EquipPage[Main.EquipPage == 3 ? 10 : 8].Value;
|
|
if (Collision.CheckAABBvAABBCollision(vector2, texture2D3.Size(), new Vector2((float) Main.mouseX, (float) Main.mouseY), Vector2.One) && Main.mouseItem.stack < 1)
|
|
num = 3;
|
|
if (num == 3 && !Main.CaptureModeDisabled)
|
|
Main.spriteBatch.Draw(TextureAssets.EquipPage[9].Value, vector2, new Microsoft.Xna.Framework.Rectangle?(), Main.OurFavoriteColor, 0.0f, Vector2.Zero, 0.9f, SpriteEffects.None, 0.0f);
|
|
Main.spriteBatch.Draw(texture2D3, vector2, new Microsoft.Xna.Framework.Rectangle?(), Main.CaptureModeDisabled ? Microsoft.Xna.Framework.Color.Red : Microsoft.Xna.Framework.Color.White, 0.0f, Vector2.Zero, 0.9f, SpriteEffects.None, 0.0f);
|
|
UILinkPointNavigator.SetPosition(307, vector2 + texture2D3.Size() * 0.75f);
|
|
if (num != -1)
|
|
{
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
if (Main.mouseLeft && Main.mouseLeftRelease)
|
|
{
|
|
bool flag = true;
|
|
if (num == 3)
|
|
{
|
|
if (Main.CaptureModeDisabled)
|
|
flag = false;
|
|
else if (PlayerInput.UsingGamepad)
|
|
{
|
|
CaptureInterface.QuickScreenshot();
|
|
}
|
|
else
|
|
{
|
|
CaptureManager.Instance.Active = true;
|
|
Main.blockMouse = true;
|
|
}
|
|
}
|
|
else
|
|
Main.EquipPageSelected = Main.EquipPageSelected == num ? 0 : num;
|
|
if (flag)
|
|
SoundEngine.PlaySound(10);
|
|
}
|
|
}
|
|
ItemSlot.SelectEquipPage(Main.mouseItem);
|
|
if (Main.EquipPage == -1)
|
|
Main.EquipPage = Main.EquipPageSelected;
|
|
return num;
|
|
}
|
|
|
|
public void DrawMouseOver()
|
|
{
|
|
PlayerInput.SetZoom_Unscaled();
|
|
PlayerInput.SetZoom_MouseInWorld();
|
|
Microsoft.Xna.Framework.Rectangle rectangle1 = new Microsoft.Xna.Framework.Rectangle((int) ((double) Main.mouseX + (double) Main.screenPosition.X), (int) ((double) Main.mouseY + (double) Main.screenPosition.Y), 1, 1);
|
|
if ((double) Main.player[Main.myPlayer].gravDir == -1.0)
|
|
rectangle1.Y = (int) Main.screenPosition.Y + Main.screenHeight - Main.mouseY;
|
|
PlayerInput.SetZoom_UI();
|
|
if (!Main.LocalPlayer.ghost)
|
|
Main.ActivePlayerResourcesSet.TryToHover();
|
|
Main.AchievementAdvisor.DrawMouseHover();
|
|
IngameOptions.MouseOver();
|
|
IngameFancyUI.MouseOver();
|
|
if (!Main.mouseText)
|
|
{
|
|
for (int index = 0; index < 400; ++index)
|
|
{
|
|
if (Main.item[index].active)
|
|
{
|
|
Microsoft.Xna.Framework.Rectangle drawHitbox = Item.GetDrawHitbox(Main.item[index].type, (Player) null);
|
|
Vector2 bottom = Main.item[index].Bottom;
|
|
Microsoft.Xna.Framework.Rectangle rectangle2 = new Microsoft.Xna.Framework.Rectangle((int) ((double) bottom.X - (double) drawHitbox.Width * 0.5), (int) ((double) bottom.Y - (double) drawHitbox.Height), drawHitbox.Width, drawHitbox.Height);
|
|
if (rectangle1.Intersects(rectangle2))
|
|
{
|
|
Main.player[Main.myPlayer].cursorItemIconEnabled = false;
|
|
string text = Main.item[index].AffixName();
|
|
if (Main.item[index].stack > 1)
|
|
text = text + " (" + (object) Main.item[index].stack + ")";
|
|
if (Main.item[index].playerIndexTheItemIsReservedFor < (int) byte.MaxValue && Main.showItemOwner)
|
|
text = text + " <" + Main.player[Main.item[index].playerIndexTheItemIsReservedFor].name + ">";
|
|
Main.rare = Main.item[index].rare;
|
|
if (Main.item[index].expert)
|
|
Main.rare = -12;
|
|
this.MouseTextHackZoom(text, Main.rare);
|
|
Main.mouseText = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
for (int index = 0; index < (int) byte.MaxValue; ++index)
|
|
{
|
|
if (Main.player[index].active && Main.myPlayer != index && !Main.player[index].dead && !Main.player[index].ShouldNotDraw && (double) Main.player[index].stealth > 0.5)
|
|
{
|
|
Microsoft.Xna.Framework.Rectangle rectangle3 = new Microsoft.Xna.Framework.Rectangle((int) ((double) Main.player[index].position.X + (double) Main.player[index].width * 0.5 - 16.0), (int) ((double) Main.player[index].position.Y + (double) Main.player[index].height - 48.0), 32, 48);
|
|
if (!Main.mouseText && rectangle1.Intersects(rectangle3))
|
|
{
|
|
Main.player[Main.myPlayer].cursorItemIconEnabled = false;
|
|
int num = Main.player[index].statLife;
|
|
if (num < 0)
|
|
num = 0;
|
|
string text = Main.player[index].name + ": " + (object) num + "/" + (object) Main.player[index].statLifeMax2;
|
|
if (Main.player[index].hostile)
|
|
text = text + " " + Language.GetTextValue("Game.PvPFlag");
|
|
this.MouseTextHackZoom(text, 0, Main.player[index].difficulty);
|
|
Main.mouseText = true;
|
|
}
|
|
}
|
|
}
|
|
Main.HoveringOverAnNPC = false;
|
|
if (!Main.mouseText)
|
|
{
|
|
for (int npcIndex = 0; npcIndex < 200; ++npcIndex)
|
|
{
|
|
if (Main.npc[npcIndex].active)
|
|
{
|
|
this.LoadNPC(Main.npc[npcIndex].type);
|
|
NPC npc1 = Main.npc[npcIndex];
|
|
npc1.position = npc1.position + Main.npc[npcIndex].netOffset;
|
|
Microsoft.Xna.Framework.Rectangle rectangle4 = new Microsoft.Xna.Framework.Rectangle((int) Main.npc[npcIndex].Bottom.X - Main.npc[npcIndex].frame.Width / 2, (int) Main.npc[npcIndex].Bottom.Y - Main.npc[npcIndex].frame.Height, Main.npc[npcIndex].frame.Width, Main.npc[npcIndex].frame.Height);
|
|
if (Main.npc[npcIndex].type >= 87 && Main.npc[npcIndex].type <= 92)
|
|
rectangle4 = new Microsoft.Xna.Framework.Rectangle((int) ((double) Main.npc[npcIndex].position.X + (double) Main.npc[npcIndex].width * 0.5 - 32.0), (int) ((double) Main.npc[npcIndex].position.Y + (double) Main.npc[npcIndex].height * 0.5 - 32.0), 64, 64);
|
|
bool flag1 = rectangle1.Intersects(rectangle4);
|
|
bool flag2 = flag1 || Main.SmartInteractShowingGenuine && Main.SmartInteractNPC == npcIndex;
|
|
if (flag2 && (Main.npc[npcIndex].type != 85 && Main.npc[npcIndex].type != 341 && Main.npc[npcIndex].type != 629 && Main.npc[npcIndex].aiStyle != 87 || (double) Main.npc[npcIndex].ai[0] != 0.0) && Main.npc[npcIndex].type != 488)
|
|
{
|
|
bool flag3 = Main.SmartInteractShowingGenuine && Main.SmartInteractNPC == npcIndex;
|
|
if ((Main.npc[npcIndex].townNPC || Main.npc[npcIndex].type == 105 || Main.npc[npcIndex].type == 106 || Main.npc[npcIndex].type == 123 || Main.npc[npcIndex].type == 354 || Main.npc[npcIndex].type == 376 || Main.npc[npcIndex].type == 579 || Main.npc[npcIndex].type == 453 || Main.npc[npcIndex].type == 589) && new Microsoft.Xna.Framework.Rectangle((int) ((double) Main.player[Main.myPlayer].position.X + (double) (Main.player[Main.myPlayer].width / 2) - (double) (Player.tileRangeX * 16)), (int) ((double) Main.player[Main.myPlayer].position.Y + (double) (Main.player[Main.myPlayer].height / 2) - (double) (Player.tileRangeY * 16)), Player.tileRangeX * 16 * 2, Player.tileRangeY * 16 * 2).Intersects(new Microsoft.Xna.Framework.Rectangle((int) Main.npc[npcIndex].position.X, (int) Main.npc[npcIndex].position.Y, Main.npc[npcIndex].width, Main.npc[npcIndex].height)))
|
|
flag3 = true;
|
|
if (Main.player[Main.myPlayer].ownedProjectileCounts[651] > 0)
|
|
flag3 = false;
|
|
if (flag3 && !Main.player[Main.myPlayer].dead)
|
|
{
|
|
PlayerInput.SetZoom_MouseInWorld();
|
|
Main.HoveringOverAnNPC = true;
|
|
this.currentNPCShowingChatBubble = npcIndex;
|
|
if (Main.mouseRight && Main.npcChatRelease)
|
|
{
|
|
Main.npcChatRelease = false;
|
|
if (PlayerInput.UsingGamepad)
|
|
Main.player[Main.myPlayer].releaseInventory = false;
|
|
if (Main.player[Main.myPlayer].talkNPC != npcIndex && !Main.player[Main.myPlayer].tileInteractionHappened)
|
|
{
|
|
Main.CancelHairWindow();
|
|
Main.SetNPCShopIndex(0);
|
|
Main.InGuideCraftMenu = false;
|
|
Main.player[Main.myPlayer].dropItemCheck();
|
|
Main.npcChatCornerItem = 0;
|
|
Main.player[Main.myPlayer].sign = -1;
|
|
Main.editSign = false;
|
|
Main.player[Main.myPlayer].SetTalkNPC(npcIndex);
|
|
Main.playerInventory = false;
|
|
Main.player[Main.myPlayer].chest = -1;
|
|
Recipe.FindRecipes();
|
|
Main.npcChatText = Main.npc[npcIndex].GetChat();
|
|
SoundEngine.PlaySound(24);
|
|
}
|
|
}
|
|
}
|
|
if (flag1 && !Main.player[Main.myPlayer].mouseInterface)
|
|
{
|
|
Main.player[Main.myPlayer].cursorItemIconEnabled = false;
|
|
string text = Main.npc[npcIndex].GivenOrTypeName;
|
|
int index = npcIndex;
|
|
if (Main.npc[npcIndex].realLife >= 0)
|
|
index = Main.npc[npcIndex].realLife;
|
|
if (Main.npc[index].lifeMax > 1 && !Main.npc[index].dontTakeDamage)
|
|
text = text + ": " + (object) Main.npc[index].life + "/" + (object) Main.npc[index].lifeMax;
|
|
this.MouseTextHackZoom(text);
|
|
Main.mouseText = true;
|
|
NPC npc2 = Main.npc[npcIndex];
|
|
npc2.position = npc2.position - Main.npc[npcIndex].netOffset;
|
|
break;
|
|
}
|
|
if (flag2)
|
|
{
|
|
NPC npc3 = Main.npc[npcIndex];
|
|
npc3.position = npc3.position - Main.npc[npcIndex].netOffset;
|
|
break;
|
|
}
|
|
}
|
|
NPC npc4 = Main.npc[npcIndex];
|
|
npc4.position = npc4.position - Main.npc[npcIndex].netOffset;
|
|
}
|
|
}
|
|
}
|
|
if (!Main.mouseText && Main.signHover != -1 && Main.sign[Main.signHover] != null && !Main.player[Main.myPlayer].mouseInterface && !string.IsNullOrWhiteSpace(Main.sign[Main.signHover].text))
|
|
{
|
|
int lineAmount;
|
|
string[] strArray = Utils.WordwrapString(Main.sign[Main.signHover].text, FontAssets.MouseText.Value, 460, 10, out lineAmount);
|
|
++lineAmount;
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, (BlendState) null, (SamplerState) null, (DepthStencilState) null, (RasterizerState) null, (Effect) null, Main._uiScaleMatrix);
|
|
PlayerInput.SetZoom_UI();
|
|
int screenWidth = Main.screenWidth;
|
|
int screenHeight = Main.screenHeight;
|
|
int mouseX = Main.mouseX;
|
|
int mouseY = Main.mouseY;
|
|
PlayerInput.SetZoom_UI();
|
|
PlayerInput.SetZoom_Test();
|
|
float num1 = 0.0f;
|
|
for (int index = 0; index < lineAmount; ++index)
|
|
{
|
|
float x = FontAssets.MouseText.Value.MeasureString(strArray[index]).X;
|
|
if ((double) num1 < (double) x)
|
|
num1 = x;
|
|
}
|
|
if ((double) num1 > 460.0)
|
|
num1 = 460f;
|
|
int num2 = Main.SettingsEnabled_OpaqueBoxBehindTooltips ? 1 : 0;
|
|
Vector2 vector2 = new Vector2((float) mouseX, (float) mouseY) + new Vector2(16f);
|
|
if (num2 != 0)
|
|
vector2 += new Vector2(8f, 2f);
|
|
if ((double) vector2.Y > (double) (screenHeight - 30 * lineAmount))
|
|
vector2.Y = (float) (screenHeight - 30 * lineAmount);
|
|
if ((double) vector2.X > (double) screenWidth - (double) num1)
|
|
vector2.X = (float) screenWidth - num1;
|
|
Microsoft.Xna.Framework.Color textColor = new Microsoft.Xna.Framework.Color((int) Main.mouseTextColor, (int) Main.mouseTextColor, (int) Main.mouseTextColor, (int) Main.mouseTextColor);
|
|
if (num2 != 0)
|
|
{
|
|
textColor = Microsoft.Xna.Framework.Color.Lerp(textColor, Microsoft.Xna.Framework.Color.White, 1f);
|
|
int num3 = 10;
|
|
int num4 = 5;
|
|
Utils.DrawInvBG(Main.spriteBatch, new Microsoft.Xna.Framework.Rectangle((int) vector2.X - num3, (int) vector2.Y - num4, (int) num1 + num3 * 2, 30 * lineAmount + num4 + num4 / 2), new Microsoft.Xna.Framework.Color(23, 25, 81, (int) byte.MaxValue) * 0.925f * 0.85f);
|
|
}
|
|
for (int index = 0; index < lineAmount; ++index)
|
|
Utils.DrawBorderStringFourWay(Main.spriteBatch, FontAssets.MouseText.Value, strArray[index], vector2.X, vector2.Y + (float) (index * 30), textColor, Microsoft.Xna.Framework.Color.Black, Vector2.Zero);
|
|
Main.mouseText = true;
|
|
}
|
|
PlayerInput.SetZoom_UI();
|
|
}
|
|
|
|
private static void DrawNPCChatBubble(int i)
|
|
{
|
|
int num = -(Main.npc[i].width / 2 + 8);
|
|
float y = Main.npc[i].position.Y - (float) TextureAssets.Chat.Height() - (float) (int) Main.screenPosition.Y;
|
|
if (Main.npc[i].type == 637 && (double) Main.npc[i].ai[0] == 5.0)
|
|
y -= 18f;
|
|
SpriteEffects effects = SpriteEffects.None;
|
|
if (Main.npc[i].spriteDirection == -1)
|
|
{
|
|
effects = SpriteEffects.FlipHorizontally;
|
|
num = Main.npc[i].width / 2 + 8;
|
|
}
|
|
if ((double) Main.player[Main.myPlayer].gravDir != 1.0)
|
|
{
|
|
effects |= SpriteEffects.FlipVertically;
|
|
y = (float) Main.screenHeight - y - (float) TextureAssets.Chat.Height();
|
|
}
|
|
Vector2 position = new Vector2(Main.npc[i].position.X + (float) (Main.npc[i].width / 2) - Main.screenPosition.X - (float) (TextureAssets.Chat.Width() / 2) - (float) num, y);
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, (BlendState) null, SamplerState.PointClamp, (DepthStencilState) null, (RasterizerState) null, (Effect) null, Main.GameViewMatrix.ZoomMatrix);
|
|
PlayerInput.SetZoom_UI();
|
|
Main.spriteBatch.Draw(TextureAssets.Chat.Value, position, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Chat.Width(), TextureAssets.Chat.Height())), new Microsoft.Xna.Framework.Color((int) Main.mouseTextColor, (int) Main.mouseTextColor, (int) Main.mouseTextColor, (int) Main.mouseTextColor), 0.0f, new Vector2(), 1f, effects, 0.0f);
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, (BlendState) null, (SamplerState) null, (DepthStencilState) null, (RasterizerState) null, (Effect) null, Main._uiScaleMatrix);
|
|
}
|
|
|
|
public void GUIBarsDraw()
|
|
{
|
|
if (Main.ignoreErrors)
|
|
{
|
|
try
|
|
{
|
|
this.GUIBarsDrawInner();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
TimeLogger.DrawException(ex);
|
|
}
|
|
}
|
|
else
|
|
this.GUIBarsDrawInner();
|
|
}
|
|
|
|
protected void GUIBarsDrawInner()
|
|
{
|
|
Main.ActivePlayerResourcesSet.Draw();
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, DepthStencilState.None, RasterizerState.CullCounterClockwise, (Effect) null, Main.UIScaleMatrix);
|
|
Main.DrawInterface_Resources_Breath();
|
|
Main.DrawInterface_Resources_ClearBuffs();
|
|
if (Main.ingameOptionsWindow || Main.playerInventory || Main.inFancyUI)
|
|
return;
|
|
this.DrawInterface_Resources_Buffs();
|
|
}
|
|
|
|
private static void DrawInterface_Resources_ClearBuffs()
|
|
{
|
|
Main.buffString = "";
|
|
Main.bannerMouseOver = false;
|
|
if (Main.recBigList)
|
|
return;
|
|
Main.recStart = 0;
|
|
}
|
|
|
|
private void DrawInterface_Resources_Buffs()
|
|
{
|
|
Main.recBigList = false;
|
|
int drawBuffText = -1;
|
|
int num1 = 11;
|
|
for (int buffSlotOnPlayer = 0; buffSlotOnPlayer < 22; ++buffSlotOnPlayer)
|
|
{
|
|
if (Main.player[Main.myPlayer].buffType[buffSlotOnPlayer] > 0)
|
|
{
|
|
int num2 = Main.player[Main.myPlayer].buffType[buffSlotOnPlayer];
|
|
int x = 32 + buffSlotOnPlayer * 38;
|
|
int y = 76;
|
|
if (buffSlotOnPlayer >= num1)
|
|
{
|
|
x = 32 + (buffSlotOnPlayer - num1) * 38;
|
|
y += 50;
|
|
}
|
|
drawBuffText = Main.DrawBuffIcon(drawBuffText, buffSlotOnPlayer, x, y);
|
|
}
|
|
else
|
|
Main.buffAlpha[buffSlotOnPlayer] = 0.4f;
|
|
}
|
|
if (drawBuffText < 0)
|
|
return;
|
|
int index = Main.player[Main.myPlayer].buffType[drawBuffText];
|
|
if (index <= 0)
|
|
return;
|
|
string buffName = Lang.GetBuffName(index);
|
|
string buffTooltip = Main.GetBuffTooltip(Main.player[Main.myPlayer], index);
|
|
if (index == 147)
|
|
Main.bannerMouseOver = true;
|
|
if (Main.meleeBuff[index])
|
|
this.MouseTextHackZoom(buffName, -10, buffTooltip: buffTooltip);
|
|
else
|
|
this.MouseTextHackZoom(buffName, buffTooltip);
|
|
}
|
|
|
|
private static string GetBuffTooltip(Player player, int buffType)
|
|
{
|
|
string str = Lang.GetBuffDescription(buffType);
|
|
switch (buffType)
|
|
{
|
|
case 26:
|
|
if (Main.expertMode)
|
|
{
|
|
str = Language.GetTextValue("BuffDescription.WellFed_Expert");
|
|
break;
|
|
}
|
|
break;
|
|
case 94:
|
|
int num = (int) ((double) player.manaSickReduction * 100.0) + 1;
|
|
str = str + (object) num + "%";
|
|
break;
|
|
case 206:
|
|
if (Main.expertMode)
|
|
{
|
|
str = Language.GetTextValue("BuffDescription.WellFed2_Expert");
|
|
break;
|
|
}
|
|
break;
|
|
case 207:
|
|
if (Main.expertMode)
|
|
{
|
|
str = Language.GetTextValue("BuffDescription.WellFed3_Expert");
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
return str;
|
|
}
|
|
|
|
private static bool TryGetBuffTime(int buffSlotOnPlayer, out int buffTimeValue)
|
|
{
|
|
int index = Main.player[Main.myPlayer].buffType[buffSlotOnPlayer];
|
|
buffTimeValue = 0;
|
|
if (Main.vanityPet[index] || Main.lightPet[index] || Main.buffNoTimeDisplay[index] || Main.player[Main.myPlayer].honeyWet && index == 48 || Main.player[Main.myPlayer].wet && Main.expertMode && index == 46)
|
|
return false;
|
|
buffTimeValue = Main.player[Main.myPlayer].buffTime[buffSlotOnPlayer];
|
|
return true;
|
|
}
|
|
|
|
private static int DrawBuffIcon(int drawBuffText, int buffSlotOnPlayer, int x, int y)
|
|
{
|
|
int b = Main.player[Main.myPlayer].buffType[buffSlotOnPlayer];
|
|
if (b == 0)
|
|
return drawBuffText;
|
|
Microsoft.Xna.Framework.Color color = new Microsoft.Xna.Framework.Color(Main.buffAlpha[buffSlotOnPlayer], Main.buffAlpha[buffSlotOnPlayer], Main.buffAlpha[buffSlotOnPlayer], Main.buffAlpha[buffSlotOnPlayer]);
|
|
Main.spriteBatch.Draw(TextureAssets.Buff[b].Value, new Vector2((float) x, (float) y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Buff[b].Width(), TextureAssets.Buff[b].Height())), color, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
int buffTimeValue;
|
|
if (Main.TryGetBuffTime(buffSlotOnPlayer, out buffTimeValue) && buffTimeValue > 2)
|
|
{
|
|
string str = Lang.LocalizedDuration(new TimeSpan(0, 0, buffTimeValue / 60), true, false);
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.ItemStack.Value, str, new Vector2((float) x, (float) (y + TextureAssets.Buff[b].Height())), color, 0.0f, new Vector2(), 0.8f, SpriteEffects.None, 0.0f);
|
|
}
|
|
if (Main.mouseX < x + TextureAssets.Buff[b].Width() && Main.mouseY < y + TextureAssets.Buff[b].Height() && Main.mouseX > x && Main.mouseY > y)
|
|
{
|
|
drawBuffText = buffSlotOnPlayer;
|
|
Main.buffAlpha[buffSlotOnPlayer] += 0.1f;
|
|
bool flag = Main.mouseRight && Main.mouseRightRelease;
|
|
if (PlayerInput.UsingGamepad)
|
|
{
|
|
flag = Main.mouseLeft && Main.mouseLeftRelease && Main.playerInventory;
|
|
if (Main.playerInventory)
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
}
|
|
else
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
if (flag)
|
|
Main.TryRemovingBuff(buffSlotOnPlayer, b);
|
|
}
|
|
else
|
|
Main.buffAlpha[buffSlotOnPlayer] -= 0.05f;
|
|
if ((double) Main.buffAlpha[buffSlotOnPlayer] > 1.0)
|
|
Main.buffAlpha[buffSlotOnPlayer] = 1f;
|
|
else if ((double) Main.buffAlpha[buffSlotOnPlayer] < 0.4)
|
|
Main.buffAlpha[buffSlotOnPlayer] = 0.4f;
|
|
if (PlayerInput.UsingGamepad && !Main.playerInventory)
|
|
drawBuffText = -1;
|
|
return drawBuffText;
|
|
}
|
|
|
|
private static void TryRemovingBuff(int i, int b)
|
|
{
|
|
bool flag = false;
|
|
if (Main.debuff[b] || b == 60 || b == 151)
|
|
return;
|
|
if (Main.player[Main.myPlayer].mount.Active && Main.player[Main.myPlayer].mount.CheckBuff(b))
|
|
{
|
|
Main.player[Main.myPlayer].mount.Dismount(Main.player[Main.myPlayer]);
|
|
flag = true;
|
|
}
|
|
Main.TryRemovingBuff_CheckBuffHideMisc(0, b);
|
|
Main.TryRemovingBuff_CheckBuffHideMisc(1, b);
|
|
SoundEngine.PlaySound(12);
|
|
if (flag)
|
|
return;
|
|
Main.player[Main.myPlayer].DelBuff(i);
|
|
}
|
|
|
|
private static void TryRemovingBuff_CheckBuffHideMisc(int slot, int buffID)
|
|
{
|
|
if (Main.player[Main.myPlayer].hideMisc[slot])
|
|
return;
|
|
bool flag = Main.player[Main.myPlayer].miscEquips[slot].buffType == buffID;
|
|
if (!flag && (buffID == 102 || buffID == 101))
|
|
flag = Main.player[Main.myPlayer].miscEquips[slot].buffType == 27;
|
|
if (!flag)
|
|
return;
|
|
Main.player[Main.myPlayer].hideMisc[slot] = true;
|
|
}
|
|
|
|
private static void DrawInterface_Resources_Breath()
|
|
{
|
|
bool flag = false;
|
|
if (Main.player[Main.myPlayer].dead)
|
|
return;
|
|
if (Main.player[Main.myPlayer].lavaTime < Main.player[Main.myPlayer].lavaMax && Main.player[Main.myPlayer].lavaWet)
|
|
flag = true;
|
|
else if (Main.player[Main.myPlayer].lavaTime < Main.player[Main.myPlayer].lavaMax && Main.player[Main.myPlayer].breath == Main.player[Main.myPlayer].breathMax)
|
|
flag = true;
|
|
Vector2 vector2_1 = Main.player[Main.myPlayer].Top + new Vector2(0.0f, Main.player[Main.myPlayer].gfxOffY);
|
|
if (Main.playerInventory && Main.screenHeight < 1000)
|
|
vector2_1.Y += (float) (Main.player[Main.myPlayer].height - 20);
|
|
Vector2 vector2_2 = Vector2.Transform(vector2_1 - Main.screenPosition, Main.GameViewMatrix.ZoomMatrix);
|
|
if (!Main.playerInventory || Main.screenHeight >= 1000)
|
|
vector2_2.Y -= 100f;
|
|
Vector2 vector2_3 = vector2_2 / Main.UIScale;
|
|
if (Main.ingameOptionsWindow || Main.InGameUI.IsVisible)
|
|
{
|
|
vector2_3 = new Vector2((float) (Main.screenWidth / 2), (float) (Main.screenHeight / 2 + 236));
|
|
if (Main.InGameUI.IsVisible)
|
|
vector2_3.Y = (float) (Main.screenHeight - 64);
|
|
}
|
|
if (Main.player[Main.myPlayer].breath < Main.player[Main.myPlayer].breathMax && !Main.player[Main.myPlayer].ghost && !flag)
|
|
{
|
|
int num1 = Main.player[Main.myPlayer].breathMax / 20;
|
|
int num2 = 20;
|
|
for (int index = 1; index < Main.player[Main.myPlayer].breathMax / num2 + 1; ++index)
|
|
{
|
|
float scale = 1f;
|
|
int num3;
|
|
if (Main.player[Main.myPlayer].breath >= index * num2)
|
|
{
|
|
num3 = (int) byte.MaxValue;
|
|
}
|
|
else
|
|
{
|
|
float num4 = (float) (Main.player[Main.myPlayer].breath - (index - 1) * num2) / (float) num2;
|
|
num3 = (int) (30.0 + 225.0 * (double) num4);
|
|
if (num3 < 30)
|
|
num3 = 30;
|
|
scale = (float) ((double) num4 / 4.0 + 0.75);
|
|
if ((double) scale < 0.75)
|
|
scale = 0.75f;
|
|
}
|
|
int num5 = 0;
|
|
int num6 = 0;
|
|
if (index > 10)
|
|
{
|
|
num5 -= 260;
|
|
num6 += 26;
|
|
}
|
|
Main.spriteBatch.Draw(TextureAssets.Bubble.Value, vector2_3 + new Vector2((float) (26 * (index - 1) + num5) - 125f, (float) (32.0 + ((double) TextureAssets.Bubble.Height() - (double) TextureAssets.Bubble.Height() * (double) scale) / 2.0) + (float) num6), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Bubble.Width(), TextureAssets.Bubble.Height())), new Microsoft.Xna.Framework.Color(num3, num3, num3, num3), 0.0f, new Vector2(), scale, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
if (((Main.player[Main.myPlayer].lavaTime >= Main.player[Main.myPlayer].lavaMax ? 0 : (!Main.player[Main.myPlayer].ghost ? 1 : 0)) & (flag ? 1 : 0)) == 0)
|
|
return;
|
|
int num7 = Main.player[Main.myPlayer].lavaMax / 10;
|
|
int num8 = Main.player[Main.myPlayer].breathMax / num7;
|
|
for (int index = 1; index < Main.player[Main.myPlayer].lavaMax / num7 + 1; ++index)
|
|
{
|
|
float scale = 1f;
|
|
int num9;
|
|
if (Main.player[Main.myPlayer].lavaTime >= index * num7)
|
|
{
|
|
num9 = (int) byte.MaxValue;
|
|
}
|
|
else
|
|
{
|
|
float num10 = (float) (Main.player[Main.myPlayer].lavaTime - (index - 1) * num7) / (float) num7;
|
|
num9 = (int) (30.0 + 225.0 * (double) num10);
|
|
if (num9 < 30)
|
|
num9 = 30;
|
|
scale = (float) ((double) num10 / 4.0 + 0.75);
|
|
if ((double) scale < 0.75)
|
|
scale = 0.75f;
|
|
}
|
|
int num11 = 0;
|
|
int num12 = 0;
|
|
if (index > 10)
|
|
{
|
|
num11 -= 260;
|
|
num12 += 26;
|
|
}
|
|
Main.spriteBatch.Draw(TextureAssets.Flame.Value, vector2_3 + new Vector2((float) (26 * (index - 1) + num11) - 125f, (float) (32.0 + ((double) TextureAssets.Flame.Height() - (double) TextureAssets.Flame.Height() * (double) scale) / 2.0) + (float) num12), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Bubble.Width(), TextureAssets.Bubble.Height())), new Microsoft.Xna.Framework.Color(num9, num9, num9, num9), 0.0f, new Vector2(), scale, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
|
|
private static void DrawInterface_Resources_GolfPower()
|
|
{
|
|
Projectile golfHelper = (Projectile) null;
|
|
for (int index = 0; index < 1000; ++index)
|
|
{
|
|
Projectile projectile = Main.projectile[index];
|
|
if (projectile.active && projectile.owner == Main.myPlayer && projectile.type == 722)
|
|
{
|
|
golfHelper = projectile;
|
|
break;
|
|
}
|
|
}
|
|
if (golfHelper == null)
|
|
return;
|
|
Projectile golfBallForHelper = GolfHelper.FindGolfBallForHelper(golfHelper);
|
|
if (golfBallForHelper == null)
|
|
return;
|
|
float relativeStrength = GolfHelper.CalculateShotStrength(golfHelper, (Entity) golfBallForHelper).RelativeStrength;
|
|
if ((double) relativeStrength < 1.0 / 1000.0)
|
|
return;
|
|
Vector2 position = (Main.LocalPlayer.Bottom - Main.Camera.ScaledPosition) * Main.GameViewMatrix.Zoom / Main.UIScale;
|
|
position.X -= 27f;
|
|
position.Y += 14f;
|
|
Main.spriteBatch.Draw(TextureAssets.GolfSwingBarPanel.Value, position, new Microsoft.Xna.Framework.Rectangle?(), Microsoft.Xna.Framework.Color.White);
|
|
Main.spriteBatch.Draw(TextureAssets.GolfSwingBarFill.Value, position, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, (int) (54.0 * (double) relativeStrength), 14)), Microsoft.Xna.Framework.Color.White);
|
|
}
|
|
|
|
private static void DrawInterface_GolfBallIndicator()
|
|
{
|
|
if (!Item.IsAGolfingItem(Main.LocalPlayer.HeldItem))
|
|
return;
|
|
Projectile lastHitBall = Main.LocalGolfState.GetLastHitBall();
|
|
if (lastHitBall == null || !GolfHelper.IsGolfBallResting(lastHitBall))
|
|
return;
|
|
Vector2 vector2_1 = (lastHitBall.Top - Main.Camera.ScaledPosition) * Main.GameViewMatrix.Zoom / Main.UIScale;
|
|
float num1 = MathHelper.Clamp((float) (((double) (Main.LocalPlayer.position - lastHitBall.position).Length() - 150.0) / 50.0), 0.0f, 1f);
|
|
Vector2 vector2_2 = Vector2.Clamp(vector2_1, new Vector2(20f), Main.Camera.UnscaledSize - new Vector2(20f));
|
|
float rotation = 0.0f;
|
|
if (vector2_2 != vector2_1)
|
|
rotation = (vector2_2 - vector2_1).ToRotation() + 1.570796f;
|
|
Vector2 position = vector2_2 - (rotation + 1.570796f).ToRotationVector2() * (float) ((Math.Sin((double) Main.GlobalTimeWrappedHourly * 4.0) * 0.5 + 0.5) * 5.0 + 14.0);
|
|
Texture2D texture2D = TextureAssets.GolfBallArrow.Value;
|
|
Microsoft.Xna.Framework.Rectangle r = texture2D.Frame(2);
|
|
Vector2 origin = r.Size() * new Vector2(0.5f, 1f);
|
|
Microsoft.Xna.Framework.Rectangle rectangle = texture2D.Frame(2, frameX: 1);
|
|
Main.spriteBatch.Draw(TextureAssets.GolfBallArrowShadow.Value, position + new Vector2(-4f, 4f) * 1.5f, new Microsoft.Xna.Framework.Rectangle?(r), Microsoft.Xna.Framework.Color.White * num1, rotation, origin, 1.5f, SpriteEffects.None, 0.0f);
|
|
float amount = (float) (Math.Sin((double) Main.GlobalTimeWrappedHourly * 4.0) * 0.5 + 0.5);
|
|
for (float num2 = 0.0f; (double) num2 < 1.0; num2 += 0.25f)
|
|
Main.spriteBatch.Draw(texture2D, position + (6.283185f * num2 + rotation).ToRotationVector2() * MathHelper.Lerp(2f, 2f, amount), new Microsoft.Xna.Framework.Rectangle?(rectangle), Microsoft.Xna.Framework.Color.Black * num1 * MathHelper.Lerp(1f, 1f, amount), rotation, origin, 1.5f, SpriteEffects.None, 0.0f);
|
|
for (float num3 = 0.0f; (double) num3 < 1.0; num3 += 0.25f)
|
|
Main.spriteBatch.Draw(texture2D, position + (6.283185f * num3 + rotation).ToRotationVector2() * MathHelper.Lerp(0.0f, 0.0f, amount), new Microsoft.Xna.Framework.Rectangle?(rectangle), Microsoft.Xna.Framework.Color.White * num1 * MathHelper.Lerp(0.8f, 0.8f, amount), rotation, origin, 1.5f, SpriteEffects.None, 0.0f);
|
|
Main.spriteBatch.Draw(texture2D, position, new Microsoft.Xna.Framework.Rectangle?(r), Main.mouseColor * num1, rotation, origin, 1.5f, SpriteEffects.None, 0.0f);
|
|
}
|
|
|
|
protected void GUIHotbarDrawInner()
|
|
{
|
|
if (Main.playerInventory || Main.player[Main.myPlayer].ghost)
|
|
return;
|
|
string str = Lang.inter[37].Value;
|
|
if (Main.player[Main.myPlayer].inventory[Main.player[Main.myPlayer].selectedItem].Name != null && Main.player[Main.myPlayer].inventory[Main.player[Main.myPlayer].selectedItem].Name != "")
|
|
str = Main.player[Main.myPlayer].inventory[Main.player[Main.myPlayer].selectedItem].AffixName();
|
|
Vector2 vector2 = FontAssets.MouseText.Value.MeasureString(str) / 2f;
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.MouseText.Value, str, new Vector2(236f - vector2.X, 0.0f), new Microsoft.Xna.Framework.Color((int) Main.mouseTextColor, (int) Main.mouseTextColor, (int) Main.mouseTextColor, (int) Main.mouseTextColor), 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
int num1 = 20;
|
|
for (int slot = 0; slot < 10; ++slot)
|
|
{
|
|
if (slot == Main.player[Main.myPlayer].selectedItem)
|
|
{
|
|
if ((double) Main.hotbarScale[slot] < 1.0)
|
|
Main.hotbarScale[slot] += 0.05f;
|
|
}
|
|
else if ((double) Main.hotbarScale[slot] > 0.75)
|
|
Main.hotbarScale[slot] -= 0.05f;
|
|
float num2 = Main.hotbarScale[slot];
|
|
int num3 = (int) (20.0 + 22.0 * (1.0 - (double) num2));
|
|
Microsoft.Xna.Framework.Color lightColor = new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, (int) (75.0 + 150.0 * (double) num2));
|
|
if (!Main.player[Main.myPlayer].hbLocked && !PlayerInput.IgnoreMouseInterface && Main.mouseX >= num1 && (double) Main.mouseX <= (double) num1 + (double) TextureAssets.InventoryBack.Width() * (double) Main.hotbarScale[slot] && Main.mouseY >= num3 && (double) Main.mouseY <= (double) num3 + (double) TextureAssets.InventoryBack.Height() * (double) Main.hotbarScale[slot] && !Main.player[Main.myPlayer].channel)
|
|
{
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
Main.player[Main.myPlayer].cursorItemIconEnabled = false;
|
|
if (Main.mouseLeft && !Main.player[Main.myPlayer].hbLocked && !Main.blockMouse)
|
|
Main.player[Main.myPlayer].changeItem = slot;
|
|
Main.hoverItemName = Main.player[Main.myPlayer].inventory[slot].AffixName();
|
|
if (Main.player[Main.myPlayer].inventory[slot].stack > 1)
|
|
Main.hoverItemName = Main.hoverItemName + " (" + (object) Main.player[Main.myPlayer].inventory[slot].stack + ")";
|
|
Main.rare = Main.player[Main.myPlayer].inventory[slot].rare;
|
|
}
|
|
double inventoryScale = (double) Main.inventoryScale;
|
|
Main.inventoryScale = num2;
|
|
ItemSlot.Draw(Main.spriteBatch, Main.player[Main.myPlayer].inventory, 13, slot, new Vector2((float) num1, (float) num3), lightColor);
|
|
Main.inventoryScale = (float) inventoryScale;
|
|
num1 += (int) ((double) TextureAssets.InventoryBack.Width() * (double) Main.hotbarScale[slot]) + 4;
|
|
}
|
|
int selectedItem = Main.player[Main.myPlayer].selectedItem;
|
|
if (selectedItem < 10 || selectedItem == 58 && Main.mouseItem.type <= 0)
|
|
return;
|
|
float num4 = 1f;
|
|
int num5 = (int) (20.0 + 22.0 * (1.0 - (double) num4));
|
|
Microsoft.Xna.Framework.Color lightColor1 = new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, (int) (75.0 + 150.0 * (double) num4));
|
|
double inventoryScale1 = (double) Main.inventoryScale;
|
|
Main.inventoryScale = num4;
|
|
ItemSlot.Draw(Main.spriteBatch, Main.player[Main.myPlayer].inventory, 13, selectedItem, new Vector2((float) num1, (float) num5), lightColor1);
|
|
Main.inventoryScale = (float) inventoryScale1;
|
|
}
|
|
|
|
public static void OpenHairWindow()
|
|
{
|
|
Main.hBar = -1f;
|
|
Main.lBar = -1f;
|
|
Main.sBar = -1f;
|
|
Main.playerInventory = false;
|
|
Main.npcChatText = "";
|
|
Main.oldHairStyle = Main.player[Main.myPlayer].hair;
|
|
Main.oldHairColor = Main.player[Main.myPlayer].hairColor;
|
|
Main.hairWindow = true;
|
|
SoundEngine.PlaySound(10);
|
|
}
|
|
|
|
public static void CancelHairWindow()
|
|
{
|
|
if (!Main.hairWindow)
|
|
return;
|
|
Main.player[Main.myPlayer].hair = Main.oldHairStyle;
|
|
Main.player[Main.myPlayer].hairColor = Main.oldHairColor;
|
|
Main.hairWindow = false;
|
|
if (Main.player[Main.myPlayer].talkNPC > -1 && Main.npc[Main.player[Main.myPlayer].talkNPC].type == 353)
|
|
Main.player[Main.myPlayer].SetTalkNPC(-1);
|
|
SoundEngine.PlaySound(11);
|
|
}
|
|
|
|
public static void BuyHairWindow()
|
|
{
|
|
SoundEngine.PlaySound(18);
|
|
Main.hairWindow = false;
|
|
Main.player[Main.myPlayer].SetTalkNPC(-1);
|
|
Main.npcChatCornerItem = 0;
|
|
NetMessage.SendData(4, number: Main.myPlayer);
|
|
}
|
|
|
|
public static int UnlockedMaxHair()
|
|
{
|
|
int num = 151;
|
|
if (NPC.downedMartians)
|
|
num += 10;
|
|
if (NPC.downedMartians && NPC.downedMoonlord)
|
|
++num;
|
|
return num;
|
|
}
|
|
|
|
protected void DrawHairWindow()
|
|
{
|
|
if (Main.npcChatText != "" || Main.playerInventory || Main.player[Main.myPlayer].chest != -1 || Main.npcShop != 0 || Main.player[Main.myPlayer].talkNPC == -1 || Main.InGuideCraftMenu)
|
|
{
|
|
Main.CancelHairWindow();
|
|
}
|
|
else
|
|
{
|
|
Main.Hairstyles.UpdateUnlocks();
|
|
int count = Main.Hairstyles.AvailableHairstyles.Count;
|
|
int y1 = Main.screenHeight / 2 + 60;
|
|
int x1 = Main.screenWidth / 2 - TextureAssets.HairStyleBack.Width() / 2;
|
|
int num1 = y1 + 42;
|
|
int num2 = x1 + 22;
|
|
int num3 = x1 + 234;
|
|
int num4 = y1 + 18;
|
|
Main.selColor = Main.player[Main.myPlayer].hairColor;
|
|
Main.spriteBatch.Draw(TextureAssets.HairStyleBack.Value, new Vector2((float) x1, (float) y1), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.HairStyleBack.Width(), TextureAssets.HairStyleBack.Height())), new Microsoft.Xna.Framework.Color(200, 200, 200, 200), 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
if (new Microsoft.Xna.Framework.Rectangle(x1, y1, TextureAssets.HairStyleBack.Width(), TextureAssets.HairStyleBack.Height()).Contains(Main.MouseScreen.ToPoint()))
|
|
{
|
|
int num5 = -(PlayerInput.ScrollWheelDelta / 120);
|
|
int num6 = Math.Sign(num5);
|
|
for (; num5 != 0; num5 -= num6)
|
|
{
|
|
if (num5 < 0)
|
|
{
|
|
Main.hairStart -= 5;
|
|
SoundEngine.PlaySound(12);
|
|
}
|
|
else
|
|
{
|
|
Main.hairStart += 5;
|
|
SoundEngine.PlaySound(12);
|
|
}
|
|
}
|
|
}
|
|
if (Main.mouseX > x1 && Main.mouseX < x1 + TextureAssets.HairStyleBack.Width() && Main.mouseY > y1 && Main.mouseY < y1 + TextureAssets.HairStyleBack.Height())
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
int num7 = num3 - 18;
|
|
int num8 = num4 + 74;
|
|
if (Main.hairStart > 1)
|
|
{
|
|
if (Main.mouseX >= num7 && Main.mouseX <= num7 + TextureAssets.CraftUpButton.Width() && Main.mouseY >= num8 && Main.mouseY <= num8 + TextureAssets.CraftUpButton.Height())
|
|
{
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
if (Main.mouseLeftRelease && Main.mouseLeft)
|
|
{
|
|
Main.hairStart -= 15;
|
|
SoundEngine.PlaySound(12);
|
|
}
|
|
}
|
|
Main.spriteBatch.Draw(TextureAssets.ScrollLeftButton.Value, new Vector2((float) num7, (float) num8), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.CraftUpButton.Width(), TextureAssets.CraftUpButton.Height())), new Microsoft.Xna.Framework.Color(200, 200, 200, 200), 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
if (Main.hairStart + 15 < count)
|
|
{
|
|
int num9 = num7 + 296;
|
|
if (Main.mouseX >= num9 && Main.mouseX <= num9 + TextureAssets.CraftUpButton.Width() && Main.mouseY >= num8 && Main.mouseY <= num8 + TextureAssets.CraftUpButton.Height())
|
|
{
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
if (Main.mouseLeftRelease && Main.mouseLeft)
|
|
{
|
|
Main.hairStart += 15;
|
|
SoundEngine.PlaySound(12);
|
|
}
|
|
}
|
|
Main.spriteBatch.Draw(TextureAssets.ScrollRightButton.Value, new Vector2((float) num9, (float) num8), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.CraftUpButton.Width(), TextureAssets.CraftUpButton.Height())), new Microsoft.Xna.Framework.Color(200, 200, 200, 200), 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
if (Main.hairStart + 15 >= count)
|
|
Main.hairStart = count - 15;
|
|
if (Main.hairStart < 0)
|
|
Main.hairStart = 0;
|
|
int num10 = 0;
|
|
if (Main.oldHairStyle != Main.player[Main.myPlayer].hair)
|
|
{
|
|
if (Main.player[Main.myPlayer].hair > 51)
|
|
num10 += 200000;
|
|
else
|
|
num10 += 20000;
|
|
}
|
|
if (Main.oldHairColor != Main.player[Main.myPlayer].hairColor)
|
|
num10 += 20000;
|
|
int num11 = (int) Math.Round((double) (int) ((double) num10 * Main.player[Main.myPlayer].currentShoppingSettings.PriceAdjustment) / 10000.0) * 10000;
|
|
string str1 = "";
|
|
int num12 = 0;
|
|
int num13 = 0;
|
|
int num14 = 0;
|
|
int num15 = 0;
|
|
int num16 = num11;
|
|
if (num16 < 0)
|
|
num16 = 0;
|
|
int price = num16;
|
|
if (num16 >= 1000000)
|
|
{
|
|
num12 = num16 / 1000000;
|
|
num16 -= num12 * 1000000;
|
|
}
|
|
if (num16 >= 10000)
|
|
{
|
|
num13 = num16 / 10000;
|
|
num16 -= num13 * 10000;
|
|
}
|
|
if (num16 >= 100)
|
|
{
|
|
num14 = num16 / 100;
|
|
num16 -= num14 * 100;
|
|
}
|
|
if (num16 >= 1)
|
|
num15 = num16;
|
|
if (num12 > 0)
|
|
str1 = str1 + (object) num12 + " " + Lang.inter[15].Value + " ";
|
|
if (num13 > 0)
|
|
str1 = str1 + (object) num13 + " " + Lang.inter[16].Value + " ";
|
|
if (num14 > 0)
|
|
str1 = str1 + (object) num14 + " " + Lang.inter[17].Value + " ";
|
|
if (num15 > 0)
|
|
str1 = str1 + (object) num15 + " " + Lang.inter[18].Value + " ";
|
|
string textValue1 = Language.GetTextValue("GameUI.BuyWithValue", (object) str1);
|
|
if (price == 0)
|
|
textValue1 = Language.GetTextValue("GameUI.Buy");
|
|
int num17 = ((int) Main.mouseTextColor * 2 + (int) byte.MaxValue) / 3;
|
|
Microsoft.Xna.Framework.Color color1 = new Microsoft.Xna.Framework.Color(num17, (int) ((double) num17 / 1.1), num17 / 2, num17);
|
|
float num18 = 0.9f;
|
|
string str2 = textValue1;
|
|
int num19 = x1 + 18;
|
|
int num20 = y1 + 156;
|
|
bool flag1 = false;
|
|
if (price > 0)
|
|
ItemSlot.DrawSavings(Main.spriteBatch, (float) num19, (float) (num20 - 70), true);
|
|
if (price > 0 && Main.mouseX > num19 && (double) Main.mouseX < (double) num19 + (double) FontAssets.MouseText.Value.MeasureString(str2).X && Main.mouseY > num20 && (double) Main.mouseY < (double) num20 + (double) FontAssets.MouseText.Value.MeasureString(str2).Y)
|
|
{
|
|
flag1 = true;
|
|
num18 = 1.1f;
|
|
if (!Main.npcChatFocus1)
|
|
SoundEngine.PlaySound(12);
|
|
Main.npcChatFocus1 = true;
|
|
Main.player[Main.myPlayer].releaseUseItem = false;
|
|
}
|
|
else
|
|
{
|
|
if (Main.npcChatFocus1)
|
|
SoundEngine.PlaySound(12);
|
|
Main.npcChatFocus1 = false;
|
|
}
|
|
Vector2 vector2_1 = FontAssets.MouseText.Value.MeasureString(str2) * 0.5f;
|
|
UILinkPointNavigator.SetPosition(2603, new Vector2((float) num19, (float) num20) + vector2_1);
|
|
for (int index = 0; index < 5; ++index)
|
|
{
|
|
int num21 = num19;
|
|
int num22 = num20;
|
|
Microsoft.Xna.Framework.Color color2 = Microsoft.Xna.Framework.Color.Black;
|
|
if (flag1)
|
|
color2 = Microsoft.Xna.Framework.Color.Brown;
|
|
if (index == 0)
|
|
num21 -= 2;
|
|
if (index == 1)
|
|
num21 += 2;
|
|
if (index == 2)
|
|
num22 -= 2;
|
|
if (index == 3)
|
|
num22 += 2;
|
|
if (index == 4)
|
|
color2 = price != 0 ? color1 : new Microsoft.Xna.Framework.Color(100, 100, 100);
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.MouseText.Value, str2, new Vector2((float) num21 + vector2_1.X, (float) num22 + vector2_1.Y), color2, 0.0f, vector2_1, num18, SpriteEffects.None, 0.0f);
|
|
}
|
|
float num23 = 0.9f;
|
|
string textValue2 = Language.GetTextValue("GameUI.Cancel");
|
|
int num24 = num19 + 130;
|
|
bool flag2 = false;
|
|
if (Main.mouseX > num24 && (double) Main.mouseX < (double) num24 + (double) FontAssets.MouseText.Value.MeasureString(textValue2).X && Main.mouseY > num20 && (double) Main.mouseY < (double) num20 + (double) FontAssets.MouseText.Value.MeasureString(textValue2).Y)
|
|
{
|
|
flag2 = true;
|
|
num23 = 1.1f;
|
|
if (!Main.npcChatFocus2)
|
|
SoundEngine.PlaySound(12);
|
|
Main.npcChatFocus2 = true;
|
|
Main.player[Main.myPlayer].releaseUseItem = false;
|
|
}
|
|
else
|
|
{
|
|
if (Main.npcChatFocus2)
|
|
SoundEngine.PlaySound(12);
|
|
Main.npcChatFocus2 = false;
|
|
}
|
|
Vector2 vector2_2 = FontAssets.MouseText.Value.MeasureString(textValue2) * 0.5f;
|
|
UILinkPointNavigator.SetPosition(2604, new Vector2((float) num24, (float) num20) + vector2_2);
|
|
for (int index = 0; index < 5; ++index)
|
|
{
|
|
int num25 = num24;
|
|
int num26 = num20;
|
|
Microsoft.Xna.Framework.Color color3 = Microsoft.Xna.Framework.Color.Black;
|
|
if (flag2)
|
|
color3 = Microsoft.Xna.Framework.Color.Brown;
|
|
if (index == 0)
|
|
num25 -= 2;
|
|
if (index == 1)
|
|
num25 += 2;
|
|
if (index == 2)
|
|
num26 -= 2;
|
|
if (index == 3)
|
|
num26 += 2;
|
|
if (index == 4)
|
|
color3 = color1;
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.MouseText.Value, textValue2, new Vector2((float) num25 + vector2_2.X, (float) num26 + vector2_2.Y), color3, 0.0f, vector2_2, num23, SpriteEffects.None, 0.0f);
|
|
}
|
|
if (Main.mouseLeft && Main.mouseLeftRelease)
|
|
{
|
|
if (Main.npcChatFocus1)
|
|
{
|
|
if (Main.player[Main.myPlayer].BuyItem(price))
|
|
{
|
|
Main.BuyHairWindow();
|
|
return;
|
|
}
|
|
}
|
|
else if (Main.npcChatFocus2)
|
|
{
|
|
Main.CancelHairWindow();
|
|
return;
|
|
}
|
|
}
|
|
if (!Main.mouseLeft)
|
|
{
|
|
this.grabColorSlider = 0;
|
|
Main.blockMouse = false;
|
|
}
|
|
int num27 = 167;
|
|
Vector3 hsl = Main.rgbToHsl(Main.selColor);
|
|
float Hue = hsl.X;
|
|
float Saturation1 = hsl.Y;
|
|
float Luminosity1 = hsl.Z;
|
|
float num28 = (float) Main.selColor.A / (float) byte.MaxValue;
|
|
if ((double) Main.hBar == -1.0 || (double) Main.sBar == -1.0 || (double) Main.lBar == -1.0 || (double) Main.aBar == -1.0)
|
|
{
|
|
Main.hBar = Hue;
|
|
Main.sBar = Saturation1;
|
|
Main.lBar = Luminosity1;
|
|
Main.aBar = (float) Main.selColor.A / (float) byte.MaxValue;
|
|
}
|
|
else
|
|
{
|
|
Hue = Main.hBar;
|
|
Saturation1 = Main.sBar;
|
|
Luminosity1 = Main.lBar;
|
|
Main.aBar = num28;
|
|
}
|
|
UILinkPointNavigator.SetPosition(2600, new Vector2((float) num2, (float) num1) + TextureAssets.Hue.Value.Size() / 2f);
|
|
Main.spriteBatch.Draw(TextureAssets.Hue.Value, new Vector2((float) num2, (float) num1), Microsoft.Xna.Framework.Color.White);
|
|
if (Main.mouseX > num2 - 4 && Main.mouseX < num2 + TextureAssets.Hue.Width() + 4 && Main.mouseY > num1 - 4 && Main.mouseY < num1 + TextureAssets.Hue.Height() + 4 || this.grabColorSlider == 1)
|
|
Main.spriteBatch.Draw(TextureAssets.ColorHighlight.Value, new Vector2((float) num2, (float) num1), Main.OurFavoriteColor);
|
|
Main.spriteBatch.Draw(TextureAssets.ColorSlider.Value, new Vector2((float) num2 + (float) (TextureAssets.Hue.Width() - 2) * Main.hBar - (float) (TextureAssets.ColorSlider.Width() / 2), (float) (num1 - TextureAssets.ColorSlider.Height() / 2 + TextureAssets.Hue.Height() / 2)), Microsoft.Xna.Framework.Color.White);
|
|
if ((Main.mouseX > num2 - 4 && Main.mouseX < num2 + TextureAssets.Hue.Width() + 4 && Main.mouseY > num1 - 4 && Main.mouseY < num1 + TextureAssets.Hue.Height() + 4 || this.grabColorSlider == 1) && Main.mouseLeft && !Main.blockMouse)
|
|
{
|
|
this.grabColorSlider = 1;
|
|
Hue = (float) (Main.mouseX - num2) / (float) TextureAssets.Hue.Width();
|
|
if ((double) Hue < 0.0)
|
|
Hue = 0.0f;
|
|
if ((double) Hue > 1.0)
|
|
Hue = 1f;
|
|
Main.hBar = Hue;
|
|
}
|
|
int num29 = num1 + 26;
|
|
UILinkPointNavigator.SetPosition(2601, new Vector2((float) num2, (float) num29) + TextureAssets.ColorBar.Value.Size() / 2f);
|
|
Main.spriteBatch.Draw(TextureAssets.ColorBar.Value, new Vector2((float) num2, (float) num29), Microsoft.Xna.Framework.Color.White);
|
|
for (int index = 0; index <= num27; ++index)
|
|
{
|
|
float Saturation2 = (float) index / (float) num27;
|
|
Microsoft.Xna.Framework.Color rgb = Main.hslToRgb(Hue, Saturation2, Luminosity1);
|
|
Main.spriteBatch.Draw(TextureAssets.ColorBlip.Value, new Vector2((float) (num2 + index + 5), (float) (num29 + 4)), rgb);
|
|
}
|
|
if (Main.mouseX > num2 - 4 && Main.mouseX < num2 + TextureAssets.Hue.Width() + 4 && Main.mouseY > num29 - 4 && Main.mouseY < num29 + TextureAssets.Hue.Height() + 4 || this.grabColorSlider == 2)
|
|
Main.spriteBatch.Draw(TextureAssets.ColorHighlight.Value, new Vector2((float) num2, (float) num29), Main.OurFavoriteColor);
|
|
Main.spriteBatch.Draw(TextureAssets.ColorSlider.Value, new Vector2((float) num2 + (float) (TextureAssets.Hue.Width() - 2) * Main.sBar - (float) (TextureAssets.ColorSlider.Width() / 2), (float) (num29 - TextureAssets.ColorSlider.Height() / 2 + TextureAssets.Hue.Height() / 2)), Microsoft.Xna.Framework.Color.White);
|
|
if ((Main.mouseX > num2 - 4 && Main.mouseX < num2 + TextureAssets.Hue.Width() + 4 && Main.mouseY > num29 - 4 && Main.mouseY < num29 + TextureAssets.Hue.Height() + 4 || this.grabColorSlider == 2) && Main.mouseLeft && !Main.blockMouse)
|
|
{
|
|
this.grabColorSlider = 2;
|
|
Saturation1 = (float) (Main.mouseX - num2) / (float) TextureAssets.Hue.Width();
|
|
if ((double) Saturation1 < 0.0)
|
|
Saturation1 = 0.0f;
|
|
if ((double) Saturation1 > 1.0)
|
|
Saturation1 = 1f;
|
|
Main.sBar = Saturation1;
|
|
}
|
|
int num30 = num29 + 26;
|
|
UILinkPointNavigator.SetPosition(2602, new Vector2((float) num2, (float) num30) + TextureAssets.ColorBar.Value.Size() / 2f);
|
|
Main.spriteBatch.Draw(TextureAssets.ColorBar.Value, new Vector2((float) num2, (float) num30), Microsoft.Xna.Framework.Color.White);
|
|
float num31 = 0.15f;
|
|
for (int index = 0; index <= num27; ++index)
|
|
{
|
|
float Luminosity2 = (float) index / (float) num27;
|
|
Microsoft.Xna.Framework.Color rgb = Main.hslToRgb(Hue, Saturation1, Luminosity2);
|
|
Main.spriteBatch.Draw(TextureAssets.ColorBlip.Value, new Vector2((float) (num2 + index + 5), (float) (num30 + 4)), rgb);
|
|
}
|
|
if (Main.mouseX > num2 - 4 && Main.mouseX < num2 + TextureAssets.Hue.Width() + 4 && Main.mouseY > num30 - 4 && Main.mouseY < num30 + TextureAssets.Hue.Height() + 4 || this.grabColorSlider == 3)
|
|
Main.spriteBatch.Draw(TextureAssets.ColorHighlight.Value, new Vector2((float) num2, (float) num30), Main.OurFavoriteColor);
|
|
Main.spriteBatch.Draw(TextureAssets.ColorSlider.Value, new Vector2((float) num2 + (float) (TextureAssets.Hue.Width() - 2) * (float) (((double) Main.lBar - (double) num31) / (1.0 - (double) num31)) - (float) (TextureAssets.ColorSlider.Width() / 2), (float) (num30 - TextureAssets.ColorSlider.Height() / 2 + TextureAssets.Hue.Height() / 2)), Microsoft.Xna.Framework.Color.White);
|
|
if ((Main.mouseX > num2 - 4 && Main.mouseX < num2 + TextureAssets.Hue.Width() + 4 && Main.mouseY > num30 - 4 && Main.mouseY < num30 + TextureAssets.Hue.Height() + 4 || this.grabColorSlider == 3) && Main.mouseLeft && !Main.blockMouse)
|
|
{
|
|
this.grabColorSlider = 3;
|
|
float num32 = (float) (Main.mouseX - num2) / (float) TextureAssets.Hue.Width();
|
|
if ((double) num32 < 0.0)
|
|
num32 = 0.0f;
|
|
if ((double) num32 > 1.0)
|
|
num32 = 1f;
|
|
Main.lBar = num32 * (1f - num31) + num31;
|
|
}
|
|
Main.selColor = Main.hslToRgb(Main.hBar, Main.sBar, Main.lBar);
|
|
Main.player[Main.myPlayer].hairColor = Main.selColor;
|
|
int x2 = num3;
|
|
int y2 = num4;
|
|
int hairStart = Main.hairStart;
|
|
int index1 = 0;
|
|
int num33 = 0;
|
|
for (int index2 = 0; index2 < 15; ++index2)
|
|
{
|
|
int availableHairstyle = Main.Hairstyles.AvailableHairstyles[Main.hairStart + index2];
|
|
UILinkPointNavigator.SetPosition(2605 + index2, new Vector2((float) x2, (float) y2) + TextureAssets.InventoryBack.Value.Size() * 0.75f);
|
|
if (Main.player[Main.myPlayer].hair == availableHairstyle)
|
|
Main.spriteBatch.Draw(TextureAssets.InventoryBack14.Value, new Vector2((float) x2, (float) y2), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.InventoryBack.Width(), TextureAssets.InventoryBack.Height())), new Microsoft.Xna.Framework.Color(200, 200, 200, 200), 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
else
|
|
Main.spriteBatch.Draw(TextureAssets.InventoryBack8.Value, new Vector2((float) x2, (float) y2), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.InventoryBack.Width(), TextureAssets.InventoryBack.Height())), new Microsoft.Xna.Framework.Color(200, 200, 200, 200), 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
if ((Main.mouseX <= x2 || Main.mouseX >= x2 + TextureAssets.InventoryBack.Width() || Main.mouseY <= y2 ? 0 : (Main.mouseY < y2 + TextureAssets.InventoryBack.Height() ? 1 : 0)) != 0)
|
|
{
|
|
Asset<Texture2D> asset = Main.Assets.Request<Texture2D>("Images/UI/PanelBorder", (AssetRequestMode) 1);
|
|
Utils.DrawSplicedPanel(Main.spriteBatch, asset.Value, x2, y2, TextureAssets.InventoryBack.Width(), TextureAssets.InventoryBack.Height(), asset.Width() / 2 - 1, asset.Width() / 2 - 1, asset.Height() / 2 - 1, asset.Height() / 2 - 1, Main.OurFavoriteColor);
|
|
if (Main.mouseLeft && Main.mouseLeftRelease)
|
|
{
|
|
Main.mouseLeftRelease = false;
|
|
Main.player[Main.myPlayer].hair = availableHairstyle;
|
|
SoundEngine.PlaySound(12);
|
|
}
|
|
}
|
|
this.LoadHair(availableHairstyle);
|
|
float x3 = (float) (x2 + TextureAssets.InventoryBack.Width() / 2 - TextureAssets.PlayerHair[availableHairstyle].Width() / 2);
|
|
float y3 = (float) (y2 + 4);
|
|
Main.spriteBatch.Draw(TextureAssets.Players[index1, 0].Value, new Vector2(x3, y3), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.PlayerHair[availableHairstyle].Width(), 56)), Main.player[Main.myPlayer].skinColor, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
Main.spriteBatch.Draw(TextureAssets.Players[index1, 1].Value, new Vector2(x3, y3), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.PlayerHair[availableHairstyle].Width(), 56)), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue), 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
Main.spriteBatch.Draw(TextureAssets.Players[index1, 2].Value, new Vector2(x3, y3), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.PlayerHair[availableHairstyle].Width(), 56)), Main.player[Main.myPlayer].eyeColor, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
Main.spriteBatch.Draw(TextureAssets.PlayerHair[availableHairstyle].Value, new Vector2(x3, y3), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.PlayerHair[availableHairstyle].Width(), 56)), Main.selColor, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
++num33;
|
|
x2 += 56;
|
|
if (num33 >= 5)
|
|
{
|
|
num33 = 0;
|
|
x2 = num3;
|
|
y2 += 56;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void OpenClothesWindow()
|
|
{
|
|
if (Main.clothesWindow)
|
|
{
|
|
Main.CancelClothesWindow();
|
|
}
|
|
else
|
|
{
|
|
Main.hBar = -1f;
|
|
Main.lBar = -1f;
|
|
Main.sBar = -1f;
|
|
Main.playerInventory = false;
|
|
Main.npcChatText = "";
|
|
Main.clothesWindow = true;
|
|
SoundEngine.PlaySound(10);
|
|
Main.selClothes = 0;
|
|
Main.oldClothesColor[0] = Main.player[Main.myPlayer].shirtColor;
|
|
Main.oldClothesColor[1] = Main.player[Main.myPlayer].underShirtColor;
|
|
Main.oldClothesColor[2] = Main.player[Main.myPlayer].pantsColor;
|
|
Main.oldClothesColor[3] = Main.player[Main.myPlayer].shoeColor;
|
|
Main.oldClothesColor[4] = Main.player[Main.myPlayer].eyeColor;
|
|
Main.oldClothesColor[5] = Main.player[Main.myPlayer].skinColor;
|
|
if (Main.dresserInterfaceDummy == null)
|
|
Main.dresserInterfaceDummy = new Player();
|
|
Main.oldClothesStyle = Main.player[Main.myPlayer].skinVariant;
|
|
}
|
|
}
|
|
|
|
public static void CancelClothesWindow(bool quiet = false)
|
|
{
|
|
if (!Main.clothesWindow)
|
|
return;
|
|
Main.clothesWindow = false;
|
|
if (!quiet)
|
|
SoundEngine.PlaySound(11);
|
|
Main.player[Main.myPlayer].shirtColor = Main.oldClothesColor[0];
|
|
Main.player[Main.myPlayer].underShirtColor = Main.oldClothesColor[1];
|
|
Main.player[Main.myPlayer].pantsColor = Main.oldClothesColor[2];
|
|
Main.player[Main.myPlayer].shoeColor = Main.oldClothesColor[3];
|
|
Main.player[Main.myPlayer].eyeColor = Main.oldClothesColor[4];
|
|
Main.player[Main.myPlayer].skinColor = Main.oldClothesColor[5];
|
|
Main.dresserInterfaceDummy.skinVariant = Main.oldClothesStyle;
|
|
Main.dresserInterfaceDummy.Male = Main.player[Main.myPlayer].Male;
|
|
Main.player[Main.myPlayer].skinVariant = Main.dresserInterfaceDummy.skinVariant;
|
|
}
|
|
|
|
public static void SaveClothesWindow()
|
|
{
|
|
SoundEngine.PlaySound(7);
|
|
Main.clothesWindow = false;
|
|
NetMessage.SendData(4, number: Main.myPlayer);
|
|
}
|
|
|
|
protected void DrawClothesWindow()
|
|
{
|
|
if (Main.npcChatText != "" || Main.playerInventory || Main.player[Main.myPlayer].chest != -1 || Main.npcShop != 0 || Main.player[Main.myPlayer].talkNPC != -1 || Main.InGuideCraftMenu)
|
|
Main.CancelClothesWindow();
|
|
else if (!Main.LocalPlayer.IsInInteractionRangeToMultiTileHitbox(Main.interactedDresserTopLeftX, Main.interactedDresserTopLeftY) || !Main.tile[Main.interactedDresserTopLeftX, Main.interactedDresserTopLeftY].active())
|
|
{
|
|
Main.CancelClothesWindow();
|
|
}
|
|
else
|
|
{
|
|
int num1 = 477 / 2;
|
|
int num2 = 180;
|
|
int num3 = 511;
|
|
int width = num3 - (num3 / 2 - num2 - 26);
|
|
int y1 = Main.screenHeight / 2 + 60;
|
|
int x1 = Main.screenWidth / 2 - width / 2;
|
|
int num4 = y1 + 32;
|
|
int num5 = x1 + 22;
|
|
int num6 = num4 - 16;
|
|
int num7 = x1 + width - num2;
|
|
int num8 = y1 + 18;
|
|
if (Main.selClothes == 0)
|
|
Main.selColor = Main.player[Main.myPlayer].shirtColor;
|
|
if (Main.selClothes == 1)
|
|
Main.selColor = Main.player[Main.myPlayer].underShirtColor;
|
|
if (Main.selClothes == 2)
|
|
Main.selColor = Main.player[Main.myPlayer].pantsColor;
|
|
if (Main.selClothes == 3)
|
|
Main.selColor = Main.player[Main.myPlayer].shoeColor;
|
|
if (Main.selClothes == 4)
|
|
Main.selColor = Main.player[Main.myPlayer].eyeColor;
|
|
if (Main.selClothes == 5)
|
|
Main.selColor = Main.player[Main.myPlayer].skinColor;
|
|
Utils.DrawInvBG(Main.spriteBatch, new Microsoft.Xna.Framework.Rectangle(x1, y1, width, 133));
|
|
if (!PlayerInput.IgnoreMouseInterface && Main.mouseX > x1 && Main.mouseX < x1 + TextureAssets.ClothesStyleBack.Width() && Main.mouseY > y1 && Main.mouseY < y1 + TextureAssets.ClothesStyleBack.Height())
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
Vector2 vector2_1 = new Vector2((float) (x1 + width / 2 - 16 - 28), (float) (y1 + 66 + Main.dresserInterfaceDummy.height / 2 - 20));
|
|
vector2_1.Y += 18f;
|
|
vector2_1.X += 58f;
|
|
Microsoft.Xna.Framework.Rectangle R = new Microsoft.Xna.Framework.Rectangle((int) vector2_1.X - Main.dresserInterfaceDummy.width / 2 - 15, (int) vector2_1.Y - Main.dresserInterfaceDummy.height - 33, Main.dresserInterfaceDummy.width + 30, Main.dresserInterfaceDummy.height + 66);
|
|
bool flag1 = R.Contains(Main.MouseScreen.ToPoint());
|
|
int selClothes = Main.selClothes;
|
|
int num9 = ((int) Main.mouseTextColor * 2 + (int) byte.MaxValue) / 3;
|
|
Microsoft.Xna.Framework.Color color1 = new Microsoft.Xna.Framework.Color(num9, (int) ((double) num9 / 1.1), num9 / 2, num9);
|
|
float num10 = 0.9f;
|
|
string textValue1 = Language.GetTextValue("GameUI.Change");
|
|
int num11 = x1 + width - num2 + 22;
|
|
int num12 = x1 + 22;
|
|
int num13 = y1 + 94;
|
|
bool flag2 = false;
|
|
if (Main.oldClothesColor[0] != Main.player[Main.myPlayer].shirtColor || Main.oldClothesColor[1] != Main.player[Main.myPlayer].underShirtColor || Main.oldClothesColor[2] != Main.player[Main.myPlayer].pantsColor || Main.oldClothesColor[3] != Main.player[Main.myPlayer].shoeColor || Main.oldClothesColor[4] != Main.player[Main.myPlayer].eyeColor || Main.oldClothesColor[5] != Main.player[Main.myPlayer].skinColor || Main.oldClothesStyle != Main.player[Main.myPlayer].skinVariant)
|
|
flag2 = true;
|
|
Vector2 vector2_2 = FontAssets.MouseText.Value.MeasureString(textValue1);
|
|
bool flag3 = false;
|
|
UILinkPointNavigator.SetPosition(2803, new Vector2((float) num12, (float) num13) + vector2_2 * num10 * 0.5f);
|
|
if (flag2 && Main.mouseX > num12 && (double) Main.mouseX < (double) num12 + (double) vector2_2.X && Main.mouseY > num13 && (double) Main.mouseY < (double) num13 + (double) vector2_2.Y)
|
|
{
|
|
flag3 = true;
|
|
num10 = 1.1f;
|
|
if (!Main.npcChatFocus1)
|
|
SoundEngine.PlaySound(12);
|
|
Main.npcChatFocus1 = true;
|
|
Main.player[Main.myPlayer].releaseUseItem = false;
|
|
}
|
|
else
|
|
{
|
|
if (Main.npcChatFocus1)
|
|
SoundEngine.PlaySound(12);
|
|
Main.npcChatFocus1 = false;
|
|
}
|
|
for (int index = 0; index < 5; ++index)
|
|
{
|
|
int num14 = num12;
|
|
int num15 = num13;
|
|
Microsoft.Xna.Framework.Color color2 = Microsoft.Xna.Framework.Color.Black;
|
|
if (flag3)
|
|
color2 = Microsoft.Xna.Framework.Color.Brown;
|
|
if (index == 0)
|
|
num14 -= 2;
|
|
if (index == 1)
|
|
num14 += 2;
|
|
if (index == 2)
|
|
num15 -= 2;
|
|
if (index == 3)
|
|
num15 += 2;
|
|
if (index == 4)
|
|
color2 = flag2 ? color1 : new Microsoft.Xna.Framework.Color(100, 100, 100);
|
|
Vector2 vector2_3 = FontAssets.MouseText.Value.MeasureString(textValue1) * 0.5f;
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.MouseText.Value, textValue1, new Vector2((float) num14 + vector2_3.X, (float) num15 + vector2_3.Y), color2, 0.0f, vector2_3, num10, SpriteEffects.None, 0.0f);
|
|
}
|
|
float num16 = 0.9f;
|
|
string textValue2 = Language.GetTextValue("GameUI.Cancel");
|
|
int num17 = num12 + 130;
|
|
bool flag4 = false;
|
|
Vector2 vector2_4 = FontAssets.MouseText.Value.MeasureString(textValue2);
|
|
UILinkPointNavigator.SetPosition(2804, new Vector2((float) num17, (float) num13) + vector2_4 * num16 * 0.5f);
|
|
if (Main.mouseX > num17 && (double) Main.mouseX < (double) num17 + (double) vector2_4.X && Main.mouseY > num13 && (double) Main.mouseY < (double) num13 + (double) vector2_4.Y)
|
|
{
|
|
flag4 = true;
|
|
num16 = 1.1f;
|
|
if (!Main.npcChatFocus2)
|
|
SoundEngine.PlaySound(12);
|
|
Main.npcChatFocus2 = true;
|
|
Main.player[Main.myPlayer].releaseUseItem = false;
|
|
}
|
|
else
|
|
{
|
|
if (Main.npcChatFocus2)
|
|
SoundEngine.PlaySound(12);
|
|
Main.npcChatFocus2 = false;
|
|
}
|
|
for (int index = 0; index < 5; ++index)
|
|
{
|
|
int num18 = num17;
|
|
int num19 = num13;
|
|
Microsoft.Xna.Framework.Color color3 = Microsoft.Xna.Framework.Color.Black;
|
|
if (flag4)
|
|
color3 = Microsoft.Xna.Framework.Color.Brown;
|
|
if (index == 0)
|
|
num18 -= 2;
|
|
if (index == 1)
|
|
num18 += 2;
|
|
if (index == 2)
|
|
num19 -= 2;
|
|
if (index == 3)
|
|
num19 += 2;
|
|
if (index == 4)
|
|
color3 = color1;
|
|
Vector2 vector2_5 = FontAssets.MouseText.Value.MeasureString(textValue2) * 0.5f;
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.MouseText.Value, textValue2, new Vector2((float) num18 + vector2_5.X, (float) num19 + vector2_5.Y), color3, 0.0f, vector2_5, num16, SpriteEffects.None, 0.0f);
|
|
}
|
|
if (Main.mouseLeft && Main.mouseLeftRelease)
|
|
{
|
|
if (Main.npcChatFocus1)
|
|
{
|
|
Main.SaveClothesWindow();
|
|
return;
|
|
}
|
|
if (Main.npcChatFocus2)
|
|
{
|
|
Main.CancelClothesWindow();
|
|
return;
|
|
}
|
|
}
|
|
if (!Main.mouseLeft)
|
|
{
|
|
this.grabColorSlider = 0;
|
|
Main.blockMouse = false;
|
|
}
|
|
int num20 = 167;
|
|
Vector3 hsl = Main.rgbToHsl(Main.selColor);
|
|
float Hue = hsl.X;
|
|
float Saturation1 = hsl.Y;
|
|
float Luminosity1 = hsl.Z;
|
|
if ((double) Main.hBar == -1.0 || (double) Main.sBar == -1.0 || (double) Main.lBar == -1.0)
|
|
{
|
|
Main.hBar = Hue;
|
|
Main.sBar = Saturation1;
|
|
Main.lBar = Luminosity1;
|
|
}
|
|
else
|
|
{
|
|
Hue = Main.hBar;
|
|
Saturation1 = Main.sBar;
|
|
Luminosity1 = Main.lBar;
|
|
}
|
|
Main.spriteBatch.Draw(TextureAssets.Hue.Value, new Vector2((float) num5, (float) num6), Microsoft.Xna.Framework.Color.White);
|
|
if (Main.mouseX > num5 - 4 && Main.mouseX < num5 + TextureAssets.Hue.Width() + 4 && Main.mouseY > num6 - 4 && Main.mouseY < num6 + TextureAssets.Hue.Height() + 4 || this.grabColorSlider == 1)
|
|
Main.spriteBatch.Draw(TextureAssets.ColorHighlight.Value, new Vector2((float) num5, (float) num6), Main.OurFavoriteColor);
|
|
Main.spriteBatch.Draw(TextureAssets.ColorSlider.Value, new Vector2((float) num5 + (float) (TextureAssets.Hue.Width() - 2) * Main.hBar - (float) (TextureAssets.ColorSlider.Width() / 2), (float) (num6 - TextureAssets.ColorSlider.Height() / 2 + TextureAssets.Hue.Height() / 2)), Microsoft.Xna.Framework.Color.White);
|
|
if ((Main.mouseX > num5 - 4 && Main.mouseX < num5 + TextureAssets.Hue.Width() + 4 && Main.mouseY > num6 - 4 && Main.mouseY < num6 + TextureAssets.Hue.Height() + 4 || this.grabColorSlider == 1) && Main.mouseLeft && !Main.blockMouse)
|
|
{
|
|
this.grabColorSlider = 1;
|
|
Hue = (float) (Main.mouseX - num5) / (float) TextureAssets.Hue.Width();
|
|
if ((double) Hue < 0.0)
|
|
Hue = 0.0f;
|
|
if ((double) Hue > 1.0)
|
|
Hue = 1f;
|
|
Main.hBar = Hue;
|
|
}
|
|
UILinkPointNavigator.SetPosition(2800, new Vector2((float) num5, (float) num6) + TextureAssets.Hue.Value.Size() / 2f);
|
|
int num21 = num6 + 26;
|
|
Main.spriteBatch.Draw(TextureAssets.ColorBar.Value, new Vector2((float) num5, (float) num21), Microsoft.Xna.Framework.Color.White);
|
|
for (int index = 0; index <= num20; ++index)
|
|
{
|
|
float Saturation2 = (float) index / (float) num20;
|
|
Microsoft.Xna.Framework.Color rgb = Main.hslToRgb(Hue, Saturation2, Luminosity1);
|
|
Main.spriteBatch.Draw(TextureAssets.ColorBlip.Value, new Vector2((float) (num5 + index + 5), (float) (num21 + 4)), rgb);
|
|
}
|
|
if (Main.mouseX > num5 - 4 && Main.mouseX < num5 + TextureAssets.Hue.Width() + 4 && Main.mouseY > num21 - 4 && Main.mouseY < num21 + TextureAssets.Hue.Height() + 4 || this.grabColorSlider == 2)
|
|
Main.spriteBatch.Draw(TextureAssets.ColorHighlight.Value, new Vector2((float) num5, (float) num21), Main.OurFavoriteColor);
|
|
Main.spriteBatch.Draw(TextureAssets.ColorSlider.Value, new Vector2((float) num5 + (float) (TextureAssets.Hue.Width() - 2) * Main.sBar - (float) (TextureAssets.ColorSlider.Width() / 2), (float) (num21 - TextureAssets.ColorSlider.Height() / 2 + TextureAssets.Hue.Height() / 2)), Microsoft.Xna.Framework.Color.White);
|
|
if ((Main.mouseX > num5 - 4 && Main.mouseX < num5 + TextureAssets.Hue.Width() + 4 && Main.mouseY > num21 - 4 && Main.mouseY < num21 + TextureAssets.Hue.Height() + 4 || this.grabColorSlider == 2) && Main.mouseLeft && !Main.blockMouse)
|
|
{
|
|
this.grabColorSlider = 2;
|
|
Saturation1 = (float) (Main.mouseX - num5) / (float) TextureAssets.Hue.Width();
|
|
if ((double) Saturation1 < 0.0)
|
|
Saturation1 = 0.0f;
|
|
if ((double) Saturation1 > 1.0)
|
|
Saturation1 = 1f;
|
|
Main.sBar = Saturation1;
|
|
}
|
|
UILinkPointNavigator.SetPosition(2801, new Vector2((float) num5, (float) num21) + TextureAssets.Hue.Value.Size() / 2f);
|
|
int num22 = num21 + 26;
|
|
Main.spriteBatch.Draw(TextureAssets.ColorBar.Value, new Vector2((float) num5, (float) num22), Microsoft.Xna.Framework.Color.White);
|
|
float num23 = 0.15f;
|
|
for (int index = 0; index <= num20; ++index)
|
|
{
|
|
float Luminosity2 = (float) index / (float) num20;
|
|
Microsoft.Xna.Framework.Color rgb = Main.hslToRgb(Hue, Saturation1, Luminosity2);
|
|
Main.spriteBatch.Draw(TextureAssets.ColorBlip.Value, new Vector2((float) (num5 + index + 5), (float) (num22 + 4)), rgb);
|
|
}
|
|
if (Main.mouseX > num5 - 4 && Main.mouseX < num5 + TextureAssets.Hue.Width() + 4 && Main.mouseY > num22 - 4 && Main.mouseY < num22 + TextureAssets.Hue.Height() + 4 || this.grabColorSlider == 3)
|
|
Main.spriteBatch.Draw(TextureAssets.ColorHighlight.Value, new Vector2((float) num5, (float) num22), Main.OurFavoriteColor);
|
|
Main.spriteBatch.Draw(TextureAssets.ColorSlider.Value, new Vector2((float) num5 + (float) (TextureAssets.Hue.Width() - 2) * (float) (((double) Main.lBar - (double) num23) / (1.0 - (double) num23)) - (float) (TextureAssets.ColorSlider.Width() / 2), (float) (num22 - TextureAssets.ColorSlider.Height() / 2 + TextureAssets.Hue.Height() / 2)), Microsoft.Xna.Framework.Color.White);
|
|
if ((Main.mouseX > num5 - 4 && Main.mouseX < num5 + TextureAssets.Hue.Width() + 4 && Main.mouseY > num22 - 4 && Main.mouseY < num22 + TextureAssets.Hue.Height() + 4 || this.grabColorSlider == 3) && Main.mouseLeft && !Main.blockMouse)
|
|
{
|
|
this.grabColorSlider = 3;
|
|
float num24 = (float) (Main.mouseX - num5) / (float) TextureAssets.Hue.Width();
|
|
if ((double) num24 < 0.0)
|
|
num24 = 0.0f;
|
|
if ((double) num24 > 1.0)
|
|
num24 = 1f;
|
|
Main.lBar = num24 * (1f - num23) + num23;
|
|
}
|
|
UILinkPointNavigator.SetPosition(2802, new Vector2((float) num5, (float) num22) + TextureAssets.Hue.Value.Size() / 2f);
|
|
Main.selColor = Main.hslToRgb(Main.hBar, Main.sBar, Main.lBar);
|
|
if (Main.selClothes == 0)
|
|
Main.player[Main.myPlayer].shirtColor = Main.selColor;
|
|
if (Main.selClothes == 1)
|
|
Main.player[Main.myPlayer].underShirtColor = Main.selColor;
|
|
if (Main.selClothes == 2)
|
|
Main.player[Main.myPlayer].pantsColor = Main.selColor;
|
|
if (Main.selClothes == 3)
|
|
Main.player[Main.myPlayer].shoeColor = Main.selColor;
|
|
if (Main.selClothes == 4)
|
|
Main.player[Main.myPlayer].eyeColor = Main.selColor;
|
|
if (Main.selClothes == 5)
|
|
Main.player[Main.myPlayer].skinColor = Main.selColor;
|
|
int num25 = num7;
|
|
int num26 = num8 - 8;
|
|
for (int index = 0; index < 6; ++index)
|
|
{
|
|
if (selClothes == index)
|
|
Main.spriteBatch.Draw(TextureAssets.InventoryBack14.Value, new Vector2((float) num25, (float) num26), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.InventoryBack.Width(), TextureAssets.InventoryBack.Height())), new Microsoft.Xna.Framework.Color(200, 200, 200, 200), 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
else
|
|
Main.spriteBatch.Draw(TextureAssets.InventoryBack8.Value, new Vector2((float) num25, (float) num26), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.InventoryBack.Width(), TextureAssets.InventoryBack.Height())), new Microsoft.Xna.Framework.Color(200, 200, 200, 200), 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
if (Main.mouseX > num25 && Main.mouseX < num25 + TextureAssets.InventoryBack.Width() && Main.mouseY > num26 && Main.mouseY < num26 + TextureAssets.InventoryBack.Height() && Main.mouseLeft && Main.mouseLeftRelease)
|
|
{
|
|
Main.mouseLeftRelease = false;
|
|
Main.selClothes = index;
|
|
SoundEngine.PlaySound(12);
|
|
Main.hBar = -1f;
|
|
Main.lBar = -1f;
|
|
Main.sBar = -1f;
|
|
}
|
|
float x2 = (float) (num25 + TextureAssets.InventoryBack.Width() / 2 - TextureAssets.Clothes[index].Width() / 2);
|
|
float y2 = (float) (num26 + TextureAssets.InventoryBack.Height() / 2 - TextureAssets.Clothes[index].Height() / 2);
|
|
Microsoft.Xna.Framework.Color color4 = Microsoft.Xna.Framework.Color.White;
|
|
if (index == 0)
|
|
color4 = Main.player[Main.myPlayer].shirtColor;
|
|
if (index == 1)
|
|
color4 = Main.player[Main.myPlayer].underShirtColor;
|
|
if (index == 2)
|
|
color4 = Main.player[Main.myPlayer].pantsColor;
|
|
if (index == 3)
|
|
color4 = Main.player[Main.myPlayer].shoeColor;
|
|
if (index == 4)
|
|
color4 = Main.player[Main.myPlayer].eyeColor;
|
|
if (index == 5)
|
|
color4 = Main.player[Main.myPlayer].skinColor;
|
|
Main.spriteBatch.Draw(TextureAssets.Clothes[index].Value, new Vector2(x2, y2), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Clothes[index].Width(), TextureAssets.Clothes[index].Height())), color4, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
if (index == 4)
|
|
{
|
|
Texture2D texture2D = Main.Assets.Request<Texture2D>("Images/UI/CharCreation/ColorEyeBack", (AssetRequestMode) 1).Value;
|
|
Main.spriteBatch.Draw(texture2D, new Vector2(x2, y2), new Microsoft.Xna.Framework.Rectangle?(texture2D.Frame()), Microsoft.Xna.Framework.Color.White, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
UILinkPointNavigator.SetPosition(2806 + index, new Vector2(x2, y2) + TextureAssets.Clothes[index].Value.Size() * 0.75f);
|
|
num25 += 56;
|
|
if (index == 1)
|
|
{
|
|
num25 -= 112;
|
|
num26 += 56;
|
|
}
|
|
if (index == 3)
|
|
num26 -= 56;
|
|
if (index == 4)
|
|
{
|
|
num26 += 56;
|
|
num25 -= 56;
|
|
}
|
|
}
|
|
Main.dresserInterfaceDummy.skinVariant = Main.player[Main.myPlayer].skinVariant;
|
|
Main.dresserInterfaceDummy.eyeColor = Main.player[Main.myPlayer].eyeColor;
|
|
Main.dresserInterfaceDummy.hairColor = Main.player[Main.myPlayer].hairColor;
|
|
Main.dresserInterfaceDummy.hair = Main.player[Main.myPlayer].hair;
|
|
Main.dresserInterfaceDummy.skinColor = Main.player[Main.myPlayer].skinColor;
|
|
Main.dresserInterfaceDummy.shirtColor = Main.player[Main.myPlayer].shirtColor;
|
|
Main.dresserInterfaceDummy.underShirtColor = Main.player[Main.myPlayer].underShirtColor;
|
|
Main.dresserInterfaceDummy.shoeColor = Main.player[Main.myPlayer].shoeColor;
|
|
Main.dresserInterfaceDummy.pantsColor = Main.player[Main.myPlayer].pantsColor;
|
|
Main.dresserInterfaceDummy.Bottom = Main.screenPosition + vector2_1;
|
|
Main.dresserInterfaceDummy.direction = -1;
|
|
Main.dresserInterfaceDummy.gravDir = 1f;
|
|
Main.dresserInterfaceDummy.PlayerFrame();
|
|
Main.dresserInterfaceDummy.socialIgnoreLight = true;
|
|
Microsoft.Xna.Framework.Color c = new Microsoft.Xna.Framework.Color(46, 106, 98) * 0.6f;
|
|
if (flag1)
|
|
{
|
|
c = new Microsoft.Xna.Framework.Color(46, 106, 98) * 2f * 0.6f;
|
|
if (Main.mouseLeft && Main.mouseLeftRelease)
|
|
{
|
|
Main.mouseLeftRelease = false;
|
|
SoundEngine.PlaySound(12);
|
|
Main.CycleClothingStyle(Main.player[Main.myPlayer]);
|
|
}
|
|
}
|
|
UILinkPointNavigator.SetPosition(2805, R.Center.ToVector2());
|
|
Utils.DrawInvBG(Main.spriteBatch, R, c);
|
|
Main.PlayerRenderer.DrawPlayer(Main.Camera, Main.dresserInterfaceDummy, Main.dresserInterfaceDummy.position, Main.dresserInterfaceDummy.fullRotation, Main.dresserInterfaceDummy.fullRotationOrigin);
|
|
}
|
|
}
|
|
|
|
private void DrawInterface_Tests()
|
|
{
|
|
}
|
|
|
|
private void SetupDrawInterfaceLayers()
|
|
{
|
|
if (!this._needToSetupDrawInterfaceLayers)
|
|
return;
|
|
this._needToSetupDrawInterfaceLayers = false;
|
|
this._gameInterfaceLayers = new List<GameInterfaceLayer>();
|
|
this._gameInterfaceLayers.AddRange((IEnumerable<GameInterfaceLayer>) new GameInterfaceLayer[43]
|
|
{
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: Interface Logic 1", (GameInterfaceDrawMethod) (() =>
|
|
{
|
|
Main.DrawInterface_0_InterfaceLogic1();
|
|
return true;
|
|
})),
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: MP Player Names", (GameInterfaceDrawMethod) (() =>
|
|
{
|
|
Main.DrawInterface_20_MultiplayerPlayerNames();
|
|
return true;
|
|
})),
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: Emote Bubbles", (GameInterfaceDrawMethod) (() =>
|
|
{
|
|
Main.DrawInterface_1_1_DrawEmoteBubblesInWorld();
|
|
return true;
|
|
})),
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: Entity Markers", (GameInterfaceDrawMethod) (() =>
|
|
{
|
|
Main.DrawInterface_1_2_DrawEntityMarkersInWorld();
|
|
return true;
|
|
})),
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: Smart Cursor Targets", (GameInterfaceDrawMethod) (() =>
|
|
{
|
|
Main.DrawInterface_2_SmartCursorTargets();
|
|
return true;
|
|
})),
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: Laser Ruler", (GameInterfaceDrawMethod) (() =>
|
|
{
|
|
Main.DrawInterface_3_LaserRuler();
|
|
return true;
|
|
})),
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: Ruler", (GameInterfaceDrawMethod) (() =>
|
|
{
|
|
Main.DrawInterface_4_Ruler();
|
|
return true;
|
|
})),
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: Gamepad Lock On", (GameInterfaceDrawMethod) (() =>
|
|
{
|
|
Main.DrawInterface_5_GamepadLockOn();
|
|
return true;
|
|
})),
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: Tile Grid Option", (GameInterfaceDrawMethod) (() =>
|
|
{
|
|
Main.DrawInterface_6_TileGridOption();
|
|
return true;
|
|
})),
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: Town NPC House Banners", (GameInterfaceDrawMethod) (() =>
|
|
{
|
|
this.DrawInterface_7_TownNPCHouseBanners();
|
|
return true;
|
|
})),
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: Hide UI Toggle", new GameInterfaceDrawMethod(Main.DrawInterface_8_CheckF11UIHideToggle), InterfaceScaleType.UI),
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: Wire Selection", (GameInterfaceDrawMethod) (() =>
|
|
{
|
|
Main.DrawInterface_9_WireSelection();
|
|
return true;
|
|
}), InterfaceScaleType.UI),
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: Capture Manager Check", new GameInterfaceDrawMethod(Main.DrawInterface_10_CheckCaptureManager)),
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: Ingame Options", new GameInterfaceDrawMethod(this.DrawInterface_11_IngameOptionsMenu), InterfaceScaleType.UI),
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: Fancy UI", new GameInterfaceDrawMethod(Main.DrawInterface_12_IngameFancyUI), InterfaceScaleType.UI),
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: Achievement Complete Popups", (GameInterfaceDrawMethod) (() =>
|
|
{
|
|
Main.DrawInterface_13_AchievementCompletePopups();
|
|
return true;
|
|
}), InterfaceScaleType.UI),
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: Entity Health Bars", (GameInterfaceDrawMethod) (() =>
|
|
{
|
|
this.DrawInterface_14_EntityHealthBars();
|
|
return true;
|
|
})),
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: Invasion Progress Bars", (GameInterfaceDrawMethod) (() =>
|
|
{
|
|
Main.DrawInterface_15_InvasionProgressBars();
|
|
return true;
|
|
}), InterfaceScaleType.UI),
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: Map / Minimap", (GameInterfaceDrawMethod) (() =>
|
|
{
|
|
this.DrawInterface_16_MapOrMinimap();
|
|
return true;
|
|
}), InterfaceScaleType.UI),
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: Diagnose Net", (GameInterfaceDrawMethod) (() =>
|
|
{
|
|
Main.DrawInterface_17_DiagnoseNet();
|
|
return true;
|
|
}), InterfaceScaleType.UI),
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: Diagnose Video", (GameInterfaceDrawMethod) (() =>
|
|
{
|
|
Main.DrawInterface_18_DiagnoseVideo();
|
|
return true;
|
|
}), InterfaceScaleType.UI),
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: Sign Tile Bubble", (GameInterfaceDrawMethod) (() =>
|
|
{
|
|
Main.DrawInterface_19_SignTileBubble();
|
|
return true;
|
|
})),
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: Hair Window", (GameInterfaceDrawMethod) (() =>
|
|
{
|
|
this.DrawInterface_21_HairWindow();
|
|
return true;
|
|
}), InterfaceScaleType.UI),
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: Dresser Window", (GameInterfaceDrawMethod) (() =>
|
|
{
|
|
this.DrawInterface_22_DresserWindow();
|
|
return true;
|
|
}), InterfaceScaleType.UI),
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: NPC / Sign Dialog", (GameInterfaceDrawMethod) (() =>
|
|
{
|
|
this.DrawInterface_23_NPCSignsDialog();
|
|
return true;
|
|
}), InterfaceScaleType.UI),
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: Interface Logic 2", (GameInterfaceDrawMethod) (() =>
|
|
{
|
|
Main.DrawInterface_24_InterfaceLogic2();
|
|
return true;
|
|
})),
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: Resource Bars", (GameInterfaceDrawMethod) (() =>
|
|
{
|
|
this.DrawInterface_25_ResourceBars();
|
|
return true;
|
|
}), InterfaceScaleType.UI),
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: Interface Logic 3", (GameInterfaceDrawMethod) (() =>
|
|
{
|
|
Main.DrawInterface_26_InterfaceLogic3();
|
|
return true;
|
|
})),
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: Inventory", (GameInterfaceDrawMethod) (() =>
|
|
{
|
|
this.DrawInterface_27_Inventory();
|
|
return true;
|
|
}), InterfaceScaleType.UI),
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: Info Accessories Bar", (GameInterfaceDrawMethod) (() =>
|
|
{
|
|
this.DrawInterface_28_InfoAccs();
|
|
return true;
|
|
}), InterfaceScaleType.UI),
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: Settings Button", (GameInterfaceDrawMethod) (() =>
|
|
{
|
|
Main.DrawInterface_29_SettingsButton();
|
|
return true;
|
|
}), InterfaceScaleType.UI),
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: Hotbar", (GameInterfaceDrawMethod) (() =>
|
|
{
|
|
this.DrawInterface_30_Hotbar();
|
|
return true;
|
|
}), InterfaceScaleType.UI),
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: Builder Accessories Bar", (GameInterfaceDrawMethod) (() =>
|
|
{
|
|
this.DrawInterface_31_BuilderAccToggles();
|
|
return true;
|
|
}), InterfaceScaleType.UI),
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: Radial Hotbars", (GameInterfaceDrawMethod) (() =>
|
|
{
|
|
Main.DrawInterface_32_GamepadRadialHotbars();
|
|
return true;
|
|
}), InterfaceScaleType.UI),
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: Mouse Text", (GameInterfaceDrawMethod) (() =>
|
|
{
|
|
this.DrawInterface_33_MouseText();
|
|
return true;
|
|
}), InterfaceScaleType.UI),
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: Player Chat", (GameInterfaceDrawMethod) (() =>
|
|
{
|
|
this.DrawInterface_34_PlayerChat();
|
|
return true;
|
|
}), InterfaceScaleType.UI),
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: Death Text", (GameInterfaceDrawMethod) (() =>
|
|
{
|
|
Main.DrawInterface_35_YouDied();
|
|
return true;
|
|
}), InterfaceScaleType.UI),
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: Cursor", (GameInterfaceDrawMethod) (() =>
|
|
{
|
|
Main.DrawInterface_36_Cursor();
|
|
return true;
|
|
}), InterfaceScaleType.UI),
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: Debug Stuff", (GameInterfaceDrawMethod) (() =>
|
|
{
|
|
Main.DrawInterface_37_DebugStuff();
|
|
return true;
|
|
}), InterfaceScaleType.UI),
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: Mouse Item / NPC Head", (GameInterfaceDrawMethod) (() =>
|
|
{
|
|
this.DrawInterface_38_MouseCarriedObject();
|
|
return true;
|
|
}), InterfaceScaleType.UI),
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: Mouse Over", (GameInterfaceDrawMethod) (() =>
|
|
{
|
|
this.DrawInterface_39_MouseOver();
|
|
return true;
|
|
})),
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: Interact Item Icon", (GameInterfaceDrawMethod) (() =>
|
|
{
|
|
this.DrawInterface_40_InteractItemIcon();
|
|
return true;
|
|
}), InterfaceScaleType.UI),
|
|
(GameInterfaceLayer) new LegacyGameInterfaceLayer("Vanilla: Interface Logic 4", (GameInterfaceDrawMethod) (() =>
|
|
{
|
|
Main.DrawInterface_41_InterfaceLogic4();
|
|
return true;
|
|
}), InterfaceScaleType.UI)
|
|
});
|
|
}
|
|
|
|
protected void DrawInterface(GameTime gameTime)
|
|
{
|
|
Main._drawInterfaceGameTime = gameTime;
|
|
if (this._needToSetupDrawInterfaceLayers)
|
|
this.SetupDrawInterfaceLayers();
|
|
PlayerInput.SetZoom_UI();
|
|
foreach (GameInterfaceLayer gameInterfaceLayer in this._gameInterfaceLayers)
|
|
{
|
|
if (!gameInterfaceLayer.Draw())
|
|
break;
|
|
}
|
|
PlayerInput.SetZoom_World();
|
|
}
|
|
|
|
private static void DrawWallOfCopperShortswords()
|
|
{
|
|
UnifiedRandom r = new UnifiedRandom(5000);
|
|
Texture2D texture = TextureAssets.Cloud[28].Value;
|
|
Vector2 vector2_1 = Main.ScreenSize.ToVector2();
|
|
Main.spriteBatch.Begin();
|
|
for (int index = 0; index < 20000; ++index)
|
|
{
|
|
Vector2 vector2_2 = r.NextVector2Square(-0.1f, 1.1f);
|
|
vector2_2.X -= 0.1f;
|
|
vector2_2.X += (float) ((double) Main.GlobalTimeWrappedHourly % 10.0 / 10.0 * 1.20000004768372);
|
|
vector2_2.Y -= (float) ((double) Main.GlobalTimeWrappedHourly % 10.0 / 10.0);
|
|
if ((double) vector2_2.Y < -0.200000002980232)
|
|
vector2_2.Y += 1.4f;
|
|
if ((double) vector2_2.X > 1.10000002384186)
|
|
vector2_2.X -= 1.2f;
|
|
Vector2 position = vector2_2 * vector2_1;
|
|
Main.spriteBatch.Draw(texture, position, Microsoft.Xna.Framework.Color.White);
|
|
}
|
|
Main.spriteBatch.End();
|
|
}
|
|
|
|
private static void DrawWallOfBoulders()
|
|
{
|
|
UnifiedRandom r = new UnifiedRandom(5000);
|
|
Main.instance.LoadProjectile(99);
|
|
Texture2D texture = TextureAssets.Projectile[99].Value;
|
|
Vector2 vector2_1 = Main.ScreenSize.ToVector2();
|
|
Main.spriteBatch.Begin();
|
|
for (int index = 0; index < 20000; ++index)
|
|
{
|
|
Vector2 vector2_2 = r.NextVector2Square(-0.1f, 1.1f);
|
|
vector2_2.X *= 0.1f;
|
|
vector2_2.X -= 0.1f;
|
|
vector2_2.X += (float) ((double) Main.GlobalTimeWrappedHourly % 10.0 / 10.0 * 1.20000004768372);
|
|
vector2_2.Y -= (float) ((double) Main.GlobalTimeWrappedHourly % 10.0 / 10.0);
|
|
if ((double) vector2_2.Y < -0.200000002980232)
|
|
vector2_2.Y += 1.4f;
|
|
if ((double) vector2_2.X > 1.10000002384186)
|
|
vector2_2.X -= 1.2f;
|
|
Vector2 position = vector2_2 * vector2_1;
|
|
Main.spriteBatch.Draw(texture, position, Microsoft.Xna.Framework.Color.White);
|
|
}
|
|
Main.spriteBatch.End();
|
|
}
|
|
|
|
private static void DrawInterface_41_InterfaceLogic4()
|
|
{
|
|
Main.npcChatRelease = !Main.mouseRight;
|
|
Main._MouseOversCanClear = true;
|
|
Main.DrawPendingMouseText();
|
|
Main.cursorOverride = -1;
|
|
}
|
|
|
|
private static void DrawPendingMouseText()
|
|
{
|
|
Main.DrawGamepadInstructions();
|
|
if (!Main.instance._mouseTextCache.isValid)
|
|
return;
|
|
Main.instance.MouseTextInner(Main.instance._mouseTextCache);
|
|
Main.DrawInterface_36_Cursor();
|
|
Main.instance._mouseTextCache.isValid = false;
|
|
Main.instance._mouseTextCache.noOverride = false;
|
|
}
|
|
|
|
private void DrawInterface_40_InteractItemIcon()
|
|
{
|
|
if (Main.HoveringOverAnNPC || Main.LocalPlayer.mouseInterface)
|
|
return;
|
|
int index = Main.player[Main.myPlayer].inventory[Main.player[Main.myPlayer].selectedItem].type;
|
|
if (index == 8 && Main.player[Main.myPlayer].UsingBiomeTorches)
|
|
index = Main.player[Main.myPlayer].BiomeTorchHoldStyle(index);
|
|
if (Main.player[Main.myPlayer].cursorItemIconID != 0)
|
|
index = Main.player[Main.myPlayer].cursorItemIconID;
|
|
bool flag1 = Main.player[Main.myPlayer].cursorItemIconEnabled && (Main.player[Main.myPlayer].inventory[Main.player[Main.myPlayer].selectedItem].type > 0 || (uint) Main.player[Main.myPlayer].cursorItemIconID > 0U);
|
|
Main.ItemIconCacheVerification();
|
|
bool flag2 = Main._itemIconCacheTime > 0 && Main.mouseItem.type < 1;
|
|
if (!(flag1 | flag2))
|
|
return;
|
|
int cacheSelectedItemId = Main._itemIconCacheSelectedItemID;
|
|
if (!flag1)
|
|
Utils.Swap<int>(ref cacheSelectedItemId, ref Main.player[Main.myPlayer].cursorItemIconID);
|
|
Microsoft.Xna.Framework.Color currentColor = Main.player[Main.myPlayer].inventory[Main.player[Main.myPlayer].selectedItem].GetAlpha(Microsoft.Xna.Framework.Color.White);
|
|
Microsoft.Xna.Framework.Color color = Main.player[Main.myPlayer].inventory[Main.player[Main.myPlayer].selectedItem].GetColor(Microsoft.Xna.Framework.Color.White);
|
|
if (Main.player[Main.myPlayer].cursorItemIconID != 0)
|
|
{
|
|
currentColor = Microsoft.Xna.Framework.Color.White;
|
|
color = new Microsoft.Xna.Framework.Color();
|
|
}
|
|
if (Main.player[Main.myPlayer].cursorItemIconID == 269)
|
|
currentColor = Main.player[Main.myPlayer].shirtColor;
|
|
float cursorScale = Main.cursorScale;
|
|
ItemSlot.GetItemLight(ref currentColor, index);
|
|
SpriteEffects effects = SpriteEffects.None;
|
|
if (Main.player[Main.myPlayer].cursorItemIconReversed)
|
|
effects = SpriteEffects.FlipHorizontally;
|
|
if (index > 0)
|
|
{
|
|
Main.instance.LoadItem(index);
|
|
Main.spriteBatch.Draw(TextureAssets.Item[index].Value, new Vector2((float) (Main.mouseX + 10), (float) (Main.mouseY + 10)), new Microsoft.Xna.Framework.Rectangle?(Item.GetDrawHitbox(index, (Player) null)), currentColor, 0.0f, new Vector2(), cursorScale, effects, 0.0f);
|
|
}
|
|
if (Main.player[Main.myPlayer].cursorItemIconText != "")
|
|
this.MouseText(Main.player[Main.myPlayer].cursorItemIconText);
|
|
if (Main.player[Main.myPlayer].cursorItemIconID == 0 && Main.player[Main.myPlayer].inventory[Main.player[Main.myPlayer].selectedItem].color != new Microsoft.Xna.Framework.Color())
|
|
{
|
|
Main.instance.LoadItem(Main.player[Main.myPlayer].inventory[Main.player[Main.myPlayer].selectedItem].type);
|
|
Main.spriteBatch.Draw(TextureAssets.Item[Main.player[Main.myPlayer].inventory[Main.player[Main.myPlayer].selectedItem].type].Value, new Vector2((float) (Main.mouseX + 10), (float) (Main.mouseY + 10)), new Microsoft.Xna.Framework.Rectangle?(Item.GetDrawHitbox(Main.player[Main.myPlayer].inventory[Main.player[Main.myPlayer].selectedItem].type, (Player) null)), color, 0.0f, new Vector2(), cursorScale, SpriteEffects.None, 0.0f);
|
|
}
|
|
if (flag1)
|
|
return;
|
|
Utils.Swap<int>(ref cacheSelectedItemId, ref Main.player[Main.myPlayer].cursorItemIconID);
|
|
}
|
|
|
|
private void DrawInterface_39_MouseOver()
|
|
{
|
|
if (Main.ignoreErrors)
|
|
{
|
|
try
|
|
{
|
|
this.DrawMouseOver();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
TimeLogger.DrawException(ex);
|
|
}
|
|
}
|
|
else
|
|
this.DrawMouseOver();
|
|
}
|
|
|
|
private void DrawInterface_38_MouseCarriedObject()
|
|
{
|
|
if (Main.mouseItem.type > 0 && Main.mouseItem.stack > 0)
|
|
{
|
|
this.SetMouseNPC(-1, -1);
|
|
Main.player[Main.myPlayer].cursorItemIconEnabled = false;
|
|
Main.player[Main.myPlayer].cursorItemIconID = 0;
|
|
Main.mouseText = true;
|
|
double inventoryScale = (double) Main.inventoryScale;
|
|
Main.inventoryScale = Main.cursorScale;
|
|
ItemSlot.Draw(Main.spriteBatch, ref Main.mouseItem, 21, new Vector2((float) Main.mouseX, (float) Main.mouseY));
|
|
Main.inventoryScale = (float) inventoryScale;
|
|
}
|
|
else
|
|
{
|
|
if (this.mouseNPCType <= -1)
|
|
return;
|
|
float scale = 1f * Main.cursorScale;
|
|
if (this.mouseNPCIndex >= 0)
|
|
{
|
|
NPC npc = Main.npc[this.mouseNPCIndex];
|
|
if (!npc.active || npc.type != this.mouseNPCType)
|
|
this.SetMouseNPC_ToHousingQuery();
|
|
}
|
|
int mouseNpcType = this.mouseNPCType;
|
|
ITownNPCProfile profile;
|
|
int index = this.mouseNPCIndex < 0 || !TownNPCProfiles.Instance.GetProfile(mouseNpcType, out profile) ? NPC.TypeToDefaultHeadIndex(mouseNpcType) : profile.GetHeadTextureIndex(Main.npc[this.mouseNPCIndex]);
|
|
Texture2D texture = TextureAssets.NpcHead[index].Value;
|
|
Main.spriteBatch.Draw(texture, new Vector2((float) ((double) Main.mouseX + 26.0 * (double) scale - (double) texture.Width * 0.5 * (double) scale), (float) ((double) Main.mouseY + 26.0 * (double) scale - (double) texture.Height * 0.5 * (double) scale)), new Microsoft.Xna.Framework.Rectangle?(), Microsoft.Xna.Framework.Color.White, 0.0f, new Vector2(), scale, SpriteEffects.None, 0.0f);
|
|
if (PlayerInput.IgnoreMouseInterface)
|
|
return;
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
Main.mouseText = false;
|
|
if (Main.mouseRight && Main.mouseRightRelease)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
this.SetMouseNPC(-1, -1);
|
|
}
|
|
if (!Main.mouseLeft || !Main.mouseLeftRelease)
|
|
return;
|
|
if (this.mouseNPCType == 0)
|
|
{
|
|
PlayerInput.SetZoom_Unscaled();
|
|
PlayerInput.SetZoom_MouseInWorld();
|
|
int x = (int) (((double) Main.mouseX + (double) Main.screenPosition.X) / 16.0);
|
|
int num1 = (int) (((double) Main.mouseY + (double) Main.screenPosition.Y) / 16.0);
|
|
if ((double) Main.player[Main.myPlayer].gravDir == -1.0)
|
|
num1 = (int) (((double) Main.screenPosition.Y + (double) Main.screenHeight - (double) Main.mouseY) / 16.0);
|
|
PlayerInput.SetZoom_Unscaled();
|
|
int num2 = -1;
|
|
int y = num1;
|
|
int n = num2;
|
|
if (!WorldGen.MoveTownNPC(x, y, n))
|
|
return;
|
|
Main.NewText(Lang.inter[39].Value, G: (byte) 240, B: (byte) 20);
|
|
}
|
|
else
|
|
{
|
|
int mouseNpcIndex = this.mouseNPCIndex;
|
|
if (mouseNpcIndex < 0)
|
|
return;
|
|
PlayerInput.SetZoom_Unscaled();
|
|
PlayerInput.SetZoom_MouseInWorld();
|
|
int x = (int) (((double) Main.mouseX + (double) Main.screenPosition.X) / 16.0);
|
|
int y = (int) (((double) Main.mouseY + (double) Main.screenPosition.Y) / 16.0);
|
|
PlayerInput.SetZoom_Unscaled();
|
|
if (!WorldGen.MoveTownNPC(x, y, mouseNpcIndex))
|
|
return;
|
|
this.SetMouseNPC(-1, -1);
|
|
WorldGen.moveRoom(x, y, mouseNpcIndex);
|
|
SoundEngine.PlaySound(12);
|
|
}
|
|
}
|
|
}
|
|
|
|
private static void DrawInterface_37_DebugStuff()
|
|
{
|
|
}
|
|
|
|
private static void DrawInterface_36_Cursor()
|
|
{
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, Main.SamplerStateForCursor, DepthStencilState.None, RasterizerState.CullCounterClockwise, (Effect) null, Main.UIScaleMatrix);
|
|
if (Main.cursorOverride != -1)
|
|
{
|
|
Microsoft.Xna.Framework.Color color1 = new Microsoft.Xna.Framework.Color((int) ((double) Main.cursorColor.R * 0.200000002980232), (int) ((double) Main.cursorColor.G * 0.200000002980232), (int) ((double) Main.cursorColor.B * 0.200000002980232), (int) ((double) Main.cursorColor.A * 0.5));
|
|
Microsoft.Xna.Framework.Color color2 = Main.cursorColor;
|
|
bool flag1 = true;
|
|
bool flag2 = true;
|
|
float rotation = 0.0f;
|
|
Vector2 vector2 = new Vector2();
|
|
float num = 1f;
|
|
if (Main.cursorOverride == 2)
|
|
{
|
|
flag1 = false;
|
|
color2 = Microsoft.Xna.Framework.Color.White;
|
|
num = 0.7f;
|
|
vector2 = new Vector2(0.1f);
|
|
}
|
|
switch (Main.cursorOverride - 2)
|
|
{
|
|
case 0:
|
|
flag1 = false;
|
|
color2 = Microsoft.Xna.Framework.Color.White;
|
|
num = 0.7f;
|
|
vector2 = new Vector2(0.1f);
|
|
break;
|
|
case 1:
|
|
case 4:
|
|
case 5:
|
|
case 6:
|
|
case 7:
|
|
case 8:
|
|
flag1 = false;
|
|
color2 = Microsoft.Xna.Framework.Color.White;
|
|
break;
|
|
}
|
|
if (flag1)
|
|
Main.spriteBatch.Draw(TextureAssets.Cursors[Main.cursorOverride].Value, new Vector2((float) (Main.mouseX + 1), (float) (Main.mouseY + 1)), new Microsoft.Xna.Framework.Rectangle?(), color1, rotation, vector2 * TextureAssets.Cursors[Main.cursorOverride].Value.Size(), Main.cursorScale * 1.1f * num, SpriteEffects.None, 0.0f);
|
|
if (!flag2)
|
|
return;
|
|
Main.spriteBatch.Draw(TextureAssets.Cursors[Main.cursorOverride].Value, new Vector2((float) Main.mouseX, (float) Main.mouseY), new Microsoft.Xna.Framework.Rectangle?(), color2, rotation, vector2 * TextureAssets.Cursors[Main.cursorOverride].Value.Size(), Main.cursorScale * num, SpriteEffects.None, 0.0f);
|
|
}
|
|
else if (Main.SmartCursorEnabled)
|
|
Main.DrawCursor(Main.DrawThickCursor(true), true);
|
|
else
|
|
Main.DrawCursor(Main.DrawThickCursor());
|
|
}
|
|
|
|
private static void DrawInterface_35_YouDied()
|
|
{
|
|
if (!Main.player[Main.myPlayer].dead)
|
|
return;
|
|
float num1 = -60f;
|
|
string str = Lang.inter[38].Value;
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.DeathText.Value, str, new Vector2((float) (Main.screenWidth / 2) - FontAssets.DeathText.Value.MeasureString(str).X / 2f, (float) (Main.screenHeight / 2) + num1), Main.player[Main.myPlayer].GetDeathAlpha(Microsoft.Xna.Framework.Color.Transparent), 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
if (Main.player[Main.myPlayer].lostCoins > 0)
|
|
{
|
|
num1 += 50f;
|
|
string textValue = Language.GetTextValue("Game.DroppedCoins", (object) Main.player[Main.myPlayer].lostCoinString);
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.MouseText.Value, textValue, new Vector2((float) (Main.screenWidth / 2) - FontAssets.MouseText.Value.MeasureString(textValue).X / 2f, (float) (Main.screenHeight / 2) + num1), Main.player[Main.myPlayer].GetDeathAlpha(Microsoft.Xna.Framework.Color.Transparent), 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
float num2 = num1 + (Main.player[Main.myPlayer].lostCoins > 0 ? 24f : 50f) + 20f;
|
|
float num3 = 0.7f;
|
|
string textValue1 = Language.GetTextValue("Game.RespawnInSuffix", (object) ((float) (int) (1.0 + (double) Main.player[Main.myPlayer].respawnTimer / 60.0)).ToString());
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.DeathText.Value, textValue1, new Vector2((float) (Main.screenWidth / 2) - (float) ((double) FontAssets.MouseText.Value.MeasureString(textValue1).X * (double) num3 / 2.0), (float) (Main.screenHeight / 2) + num2), Main.player[Main.myPlayer].GetDeathAlpha(Microsoft.Xna.Framework.Color.Transparent), 0.0f, new Vector2(), num3, SpriteEffects.None, 0.0f);
|
|
}
|
|
|
|
private void DrawInterface_34_PlayerChat()
|
|
{
|
|
if (Main.ignoreErrors)
|
|
{
|
|
try
|
|
{
|
|
this.DrawPlayerChat();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
TimeLogger.DrawException(ex);
|
|
}
|
|
}
|
|
else
|
|
this.DrawPlayerChat();
|
|
}
|
|
|
|
private void DrawInterface_33_MouseText()
|
|
{
|
|
if (Main.mouseItem.stack <= 0)
|
|
Main.mouseItem.type = 0;
|
|
if (Main.hoverItemName != null && Main.hoverItemName != "" && Main.mouseItem.type == 0)
|
|
{
|
|
Main.player[Main.myPlayer].cursorItemIconEnabled = false;
|
|
if (Main.SettingsEnabled_OpaqueBoxBehindTooltips)
|
|
this.MouseText(Main.hoverItemName, Main.rare, hackedMouseX: (Main.mouseX + 6), hackedMouseY: (Main.mouseY + 6));
|
|
else
|
|
this.MouseText(Main.hoverItemName, Main.rare);
|
|
Main.mouseText = true;
|
|
}
|
|
if (!Main.LocalPlayer.rulerLine || Main.LocalPlayer.builderAccStatus[0] != 0 || (double) Main.LocalPlayer.velocity.Length() > 6.0)
|
|
return;
|
|
int num1 = Math.Abs(Main.rulerLineDisplayValues.X) + 1;
|
|
int num2 = Math.Abs(Main.rulerLineDisplayValues.Y) + 1;
|
|
if (num1 <= 1 && num2 <= 1)
|
|
return;
|
|
Utils.DrawBorderString(Main.spriteBatch, num1.ToString() + "x" + (object) num2, Main.MouseScreen + new Vector2(16f, 0.0f), new Microsoft.Xna.Framework.Color(0.24f, 0.8f, 0.9f, 1f), Main.GameZoomTarget, anchory: 0.8f);
|
|
}
|
|
|
|
private static void DrawInterface_32_GamepadRadialHotbars()
|
|
{
|
|
ItemSlot.DrawRadialCircular(Main.spriteBatch, new Vector2((float) Main.screenWidth, (float) Main.screenHeight) / 2f);
|
|
ItemSlot.DrawRadialQuicks(Main.spriteBatch, new Vector2((float) Main.screenWidth, (float) Main.screenHeight) / 2f);
|
|
}
|
|
|
|
private void DrawInterface_31_BuilderAccToggles() => this.DrawBuilderAccToggles(new Vector2(10f, 77f));
|
|
|
|
public static void DrawInterface_29_SettingsButton()
|
|
{
|
|
Main._settingsButtonIsPushedToSide = false;
|
|
if (!Main.playerInventory && !Main.ingameOptionsWindow && !Main.player[Main.myPlayer].ghost && !Main.player[Main.myPlayer].dead)
|
|
return;
|
|
string text = Lang.inter[62].Value;
|
|
string textSizeMatcher = "Settings";
|
|
int posX = Main.screenWidth - 110;
|
|
int posY = Main.screenHeight - 20;
|
|
int num1 = 620;
|
|
int num2 = 870;
|
|
int accessorySlotsToShow = Main.player[Main.myPlayer].GetAmountOfExtraAccessorySlotsToShow();
|
|
if (accessorySlotsToShow > 1)
|
|
{
|
|
int num3 = (int) (56.0 * (double) Main.inventoryScale * (double) (accessorySlotsToShow - 1));
|
|
num1 += num3;
|
|
num2 += num3;
|
|
}
|
|
if (accessorySlotsToShow >= 1 && (Main.screenHeight < num1 || Main.screenHeight < num2 && Main.mapStyle == 1))
|
|
{
|
|
posX -= 140;
|
|
posY -= PlayerInput.UsingGamepad.ToInt() * 30;
|
|
Main._settingsButtonIsPushedToSide = true;
|
|
}
|
|
Action clickAction = new Action(IngameOptions.Open);
|
|
if (Main.ingameOptionsWindow)
|
|
clickAction = new Action(IngameOptions.Close);
|
|
Main.DrawSettingButton(ref Main.mouseExit, ref Main.exitScale, posX, posY, text, textSizeMatcher, clickAction);
|
|
}
|
|
|
|
public static void DrawSettingButton(
|
|
ref bool mouseOver,
|
|
ref float scale,
|
|
int posX,
|
|
int posY,
|
|
string text,
|
|
string textSizeMatcher,
|
|
Action clickAction)
|
|
{
|
|
Vector2 vector2_1 = FontAssets.MouseText.Value.MeasureString(textSizeMatcher);
|
|
Vector2 vector2_2 = FontAssets.MouseText.Value.MeasureString(text);
|
|
Vector2 vector2_3 = FontAssets.DeathText.Value.MeasureString(text);
|
|
float num1 = vector2_1.X / vector2_2.X;
|
|
if (mouseOver)
|
|
{
|
|
if ((double) scale < 0.96)
|
|
scale += 0.02f;
|
|
}
|
|
else if ((double) scale > 0.8)
|
|
scale -= 0.02f;
|
|
UILinkPointNavigator.SetPosition(308, new Vector2((float) posX, (float) posY));
|
|
for (int index = 0; index < 5; ++index)
|
|
{
|
|
int num2 = 0;
|
|
int num3 = 0;
|
|
Microsoft.Xna.Framework.Color color = Microsoft.Xna.Framework.Color.Black;
|
|
if (index == 0)
|
|
num2 = -2;
|
|
if (index == 1)
|
|
num2 = 2;
|
|
if (index == 2)
|
|
num3 = -2;
|
|
if (index == 3)
|
|
num3 = 2;
|
|
if (index == 4)
|
|
color = Microsoft.Xna.Framework.Color.White;
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.DeathText.Value, text, new Vector2((float) (posX + num2), (float) (posY + num3)), color, 0.0f, new Vector2(vector2_3.X / 2f, vector2_3.Y / 2f), (scale - 0.2f) * num1, SpriteEffects.None, 0.0f);
|
|
}
|
|
if ((double) Main.mouseX > (double) posX - (double) vector2_3.X / 2.0 && (double) Main.mouseX < (double) posX + (double) vector2_3.X / 2.0 && (double) Main.mouseY > (double) posY - (double) vector2_3.Y / 2.0 && (double) Main.mouseY < (double) posY + (double) vector2_3.Y / 2.0 - 10.0 && !Main.LocalPlayer.mouseInterface)
|
|
{
|
|
if (PlayerInput.IgnoreMouseInterface)
|
|
return;
|
|
if (!mouseOver)
|
|
SoundEngine.PlaySound(12);
|
|
mouseOver = true;
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
if (!Main.mouseLeftRelease || !Main.mouseLeft)
|
|
return;
|
|
mouseOver = false;
|
|
scale = 0.8f;
|
|
clickAction();
|
|
}
|
|
else
|
|
mouseOver = false;
|
|
}
|
|
|
|
private void DrawInterface_28_InfoAccs()
|
|
{
|
|
double inventoryScale = (double) Main.inventoryScale;
|
|
Main.inventoryScale = 0.6f;
|
|
this.DrawInfoAccs();
|
|
Main.inventoryScale = (float) inventoryScale;
|
|
}
|
|
|
|
private void DrawInterface_27_Inventory()
|
|
{
|
|
if (Main.playerInventory)
|
|
{
|
|
if (Main.player[Main.myPlayer].chest != -1)
|
|
Main.CreativeMenu.CloseMenu();
|
|
if (Main.ignoreErrors)
|
|
{
|
|
try
|
|
{
|
|
this.DrawInventory();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
TimeLogger.DrawException(ex);
|
|
}
|
|
}
|
|
else
|
|
this.DrawInventory();
|
|
}
|
|
else
|
|
{
|
|
Main.CreativeMenu.CloseMenu();
|
|
Main.recFastScroll = true;
|
|
this.SetMouseNPC(-1, -1);
|
|
Main.EquipPage = 0;
|
|
}
|
|
}
|
|
|
|
private static void DrawInterface_26_InterfaceLogic3()
|
|
{
|
|
bool playerInventory = Main.playerInventory;
|
|
if (Main.player[Main.myPlayer].dead)
|
|
Main.playerInventory = false;
|
|
if (!Main.playerInventory)
|
|
{
|
|
Main.player[Main.myPlayer].chest = -1;
|
|
Main.InGuideCraftMenu = false;
|
|
Main.InReforgeMenu = false;
|
|
if (playerInventory)
|
|
Recipe.FindRecipes();
|
|
}
|
|
Main.hoverItemName = "";
|
|
}
|
|
|
|
private void DrawInterface_25_ResourceBars() => this.GUIBarsDraw();
|
|
|
|
private static void DrawInterface_24_InterfaceLogic2()
|
|
{
|
|
Main.invAlpha += Main.invDir * 0.2f;
|
|
if ((double) Main.invAlpha > 240.0)
|
|
{
|
|
Main.invAlpha = 240f;
|
|
Main.invDir = -1f;
|
|
}
|
|
if ((double) Main.invAlpha < 180.0)
|
|
{
|
|
Main.invAlpha = 180f;
|
|
Main.invDir = 1f;
|
|
}
|
|
Main.inventoryBack = new Microsoft.Xna.Framework.Color((int) (byte) Main.invAlpha, (int) (byte) Main.invAlpha, (int) (byte) Main.invAlpha, (int) (byte) Main.invAlpha);
|
|
Main.mouseText = false;
|
|
Main.rare = 0;
|
|
}
|
|
|
|
private void DrawInterface_23_NPCSignsDialog() => this.GUIChatDraw();
|
|
|
|
private void DrawInterface_22_DresserWindow()
|
|
{
|
|
if (!Main.clothesWindow)
|
|
return;
|
|
this.DrawClothesWindow();
|
|
}
|
|
|
|
private void DrawInterface_21_HairWindow()
|
|
{
|
|
if (!Main.hairWindow)
|
|
return;
|
|
this.DrawHairWindow();
|
|
}
|
|
|
|
private static void DrawInterface_20_MultiplayerPlayerNames() => Main.ActiveClosePlayersTeamOverlay.Draw();
|
|
|
|
private static void DrawInterface_19_SignTileBubble()
|
|
{
|
|
if (!Main.signBubble)
|
|
return;
|
|
int num1 = (int) ((double) Main.signX - (double) Main.screenPosition.X);
|
|
int num2 = (int) ((double) Main.signY - (double) Main.screenPosition.Y);
|
|
if ((double) Main.player[Main.myPlayer].gravDir == -1.0)
|
|
num2 = Main.screenHeight - (int) ((double) Main.signY - (double) Main.screenPosition.Y) - 32;
|
|
SpriteEffects effects = SpriteEffects.None;
|
|
int num3;
|
|
if ((double) Main.signX > (double) Main.player[Main.myPlayer].position.X + (double) Main.player[Main.myPlayer].width)
|
|
{
|
|
effects = SpriteEffects.FlipHorizontally;
|
|
num3 = num1 + (-8 - TextureAssets.Chat2.Width());
|
|
}
|
|
else
|
|
num3 = num1 + 8;
|
|
int num4 = num2 - 22;
|
|
Main.spriteBatch.Draw(TextureAssets.Chat2.Value, new Vector2((float) num3, (float) num4), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Chat2.Width(), TextureAssets.Chat2.Height())), new Microsoft.Xna.Framework.Color((int) Main.mouseTextColor, (int) Main.mouseTextColor, (int) Main.mouseTextColor, (int) Main.mouseTextColor), 0.0f, new Vector2(), 1f, effects, 0.0f);
|
|
Main.signBubble = false;
|
|
}
|
|
|
|
private static void DrawInterface_18_DiagnoseVideo()
|
|
{
|
|
if (!Main.drawDiag)
|
|
return;
|
|
if (PlayerInput.UsingGamepad)
|
|
{
|
|
for (int index = 0; index < 2; ++index)
|
|
{
|
|
string str = "";
|
|
int num1 = 20;
|
|
int num2 = 160 + index * 16;
|
|
if (index == 0)
|
|
str = "Gamepad Left Thumbstick : " + string.Format("{0,-10} , {1,-10}", (object) PlayerInput.GamepadThumbstickLeft.X.ToString("P2"), (object) PlayerInput.GamepadThumbstickLeft.Y.ToString("P2"));
|
|
if (index == 1)
|
|
str = "Gamepad Right Thumbstick: " + string.Format("{0,-10} , {1,-10}", (object) PlayerInput.GamepadThumbstickRight.X.ToString("P2"), (object) PlayerInput.GamepadThumbstickRight.Y.ToString("P2"));
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.MouseText.Value, str, new Vector2((float) num1, (float) num2), Microsoft.Xna.Framework.Color.White, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
for (int index = 0; index < 7; ++index)
|
|
{
|
|
string str = "";
|
|
int num3 = 20;
|
|
int num4 = 220 + index * 16;
|
|
if (index == 0)
|
|
str = "Solid Tiles:";
|
|
if (index == 1)
|
|
str = "Misc. Tiles:";
|
|
if (index == 2)
|
|
str = "Walls Tiles:";
|
|
if (index == 3)
|
|
str = "Background Tiles:";
|
|
if (index == 4)
|
|
str = "Water Tiles:";
|
|
if (index == 5)
|
|
str = "Black Tiles:";
|
|
if (index == 6)
|
|
str = "Total Render:";
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.MouseText.Value, str, new Vector2((float) num3, (float) num4), Microsoft.Xna.Framework.Color.White, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
for (int drawType = 0; drawType < 7; ++drawType)
|
|
{
|
|
int num5 = 180;
|
|
int num6 = 220 + drawType * 16;
|
|
string str = string.Format("{0:F2}ms", (object) (float) (drawType != 6 ? (double) TimeLogger.GetDrawTime(drawType) : (double) TimeLogger.GetDrawTotal()));
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.MouseText.Value, str, new Vector2((float) num5, (float) num6), Microsoft.Xna.Framework.Color.White, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
for (int index = 0; index < 6; ++index)
|
|
{
|
|
string str = "";
|
|
int num7 = 20;
|
|
int num8 = 346 + index * 16;
|
|
if (index == 0)
|
|
str = "Lighting Init:";
|
|
if (index == 1)
|
|
str = "Lighting Phase #1:";
|
|
if (index == 2)
|
|
str = "Lighting Phase #2:";
|
|
if (index == 3)
|
|
str = "Lighting Phase #3";
|
|
if (index == 4)
|
|
str = "Lighting Phase #4";
|
|
if (index == 5)
|
|
str = "Total Lighting:";
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.MouseText.Value, str, new Vector2((float) num7, (float) num8), Microsoft.Xna.Framework.Color.White, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
for (int lightingType = 0; lightingType < 6; ++lightingType)
|
|
{
|
|
int num9 = 180;
|
|
int num10 = 346 + lightingType * 16;
|
|
string str = string.Format("{0:F2}ms", (object) (float) (lightingType != 5 ? (double) TimeLogger.GetLightingTime(lightingType) : (double) TimeLogger.GetLightingTotal()));
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.MouseText.Value, str, new Vector2((float) num9, (float) num10), Microsoft.Xna.Framework.Color.White, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
int num11 = 5;
|
|
for (int index = 0; index < num11; ++index)
|
|
{
|
|
int num12 = 20;
|
|
int num13 = 456 + index * 16;
|
|
string str = "Render #" + (object) index + ":";
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.MouseText.Value, str, new Vector2((float) num12, (float) num13), Microsoft.Xna.Framework.Color.White, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
for (int renderType = 0; renderType < num11; ++renderType)
|
|
{
|
|
int num14 = 180;
|
|
int num15 = 456 + renderType * 16;
|
|
string str = string.Format("{0:F2}ms", (object) TimeLogger.GetRenderTime(renderType));
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.MouseText.Value, str, new Vector2((float) num14, (float) num15), Microsoft.Xna.Framework.Color.White, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
for (int renderType = 0; renderType < num11; ++renderType)
|
|
{
|
|
int num16 = 230;
|
|
int num17 = 456 + renderType * 16;
|
|
int num18 = num16 + 10;
|
|
string str = string.Format("{0:F2}ms", (object) TimeLogger.GetRenderMax(renderType));
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.MouseText.Value, str, new Vector2((float) num18, (float) num17), Microsoft.Xna.Framework.Color.White, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
string str1 = "";
|
|
int num19 = 20;
|
|
int num20 = 456 + 16 * num11 + 16;
|
|
string str2 = "Update:";
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.MouseText.Value, str2, new Vector2((float) num19, (float) num20), Microsoft.Xna.Framework.Color.White, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
str1 = "";
|
|
int num21 = 180;
|
|
string str3 = string.Format("{0:F2}ms", (object) Main.upTimer);
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.MouseText.Value, str3, new Vector2((float) num21, (float) num20), Microsoft.Xna.Framework.Color.White, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
str1 = "";
|
|
int num22 = 240;
|
|
string str4 = string.Format("{0:F2}ms", (object) Main.upTimerMax);
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.MouseText.Value, str4, new Vector2((float) num22, (float) num20), Microsoft.Xna.Framework.Color.White, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
|
|
private static void DrawInterface_17_DiagnoseNet()
|
|
{
|
|
if (!Main.shouldDrawNetDiagnosticsUI)
|
|
return;
|
|
Main.ActiveNetDiagnosticsUI.Draw(Main.spriteBatch);
|
|
}
|
|
|
|
private void DrawInterface_16_MapOrMinimap()
|
|
{
|
|
Main.mH = 0;
|
|
if (!Main.mapEnabled)
|
|
return;
|
|
if (!Main.mapFullscreen && Main.mapStyle == 1)
|
|
{
|
|
Main.mH = 256;
|
|
try
|
|
{
|
|
this.DrawMap(new GameTime());
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (Main.ignoreErrors)
|
|
TimeLogger.DrawException(ex);
|
|
else
|
|
throw;
|
|
}
|
|
}
|
|
PlayerInput.SetZoom_UI();
|
|
if (Main.mH + this.RecommendedEquipmentAreaPushUp <= Main.screenHeight)
|
|
return;
|
|
Main.mH = Main.screenHeight - this.RecommendedEquipmentAreaPushUp;
|
|
}
|
|
|
|
public int RecommendedEquipmentAreaPushUp => Main.player[Main.myPlayer].CanDemonHeartAccessoryBeShown() ? 610 + PlayerInput.UsingGamepad.ToInt() * 30 : 600;
|
|
|
|
private static void DrawInterface_15_InvasionProgressBars()
|
|
{
|
|
Main.DrawInvasionProgress();
|
|
if (Main.HealthBarDrawSettings == (byte) 0)
|
|
return;
|
|
Main.BigBossProgressBar.Draw(Main.spriteBatch);
|
|
}
|
|
|
|
private void DrawInterface_14_EntityHealthBars()
|
|
{
|
|
if (Main.HealthBarDrawSettings == (byte) 0)
|
|
return;
|
|
int index1 = -1;
|
|
if (PlayerInput.UsingGamepad)
|
|
{
|
|
Player localPlayer = Main.LocalPlayer;
|
|
for (int index2 = 0; index2 < 200; ++index2)
|
|
{
|
|
NPC npc = Main.npc[index2];
|
|
if ((npc.life == npc.lifeMax || npc.dontTakeDamage) && !npc.dontTakeDamage && (double) npc.nameOver > 0.0 && (index1 == -1 || (double) npc.Distance(localPlayer.Center) < (double) Main.npc[index1].Distance(localPlayer.Center)))
|
|
index1 = index2;
|
|
}
|
|
}
|
|
bool flag = false;
|
|
for (int i = 199; i >= 0; --i)
|
|
{
|
|
if (Main.npc[i].active && Main.npc[i].type > 0)
|
|
{
|
|
NPC npc1 = Main.npc[i];
|
|
npc1.position = npc1.position + Main.npc[i].netOffset;
|
|
if (Main.npc[i].life != Main.npc[i].lifeMax && !Main.npc[i].dontTakeDamage)
|
|
{
|
|
float scale1 = 1f;
|
|
int type = Main.npc[i].type;
|
|
if (type == 4)
|
|
scale1 = 1.5f;
|
|
if (type == 35)
|
|
scale1 = 1.5f;
|
|
if (type == 36)
|
|
scale1 = 1.5f;
|
|
if (type == 50)
|
|
scale1 = 1.5f;
|
|
if (type == 113)
|
|
scale1 = 1.5f;
|
|
if (type == 114)
|
|
scale1 = 1.5f;
|
|
if (type == 125)
|
|
scale1 = 1.5f;
|
|
if (type == 126)
|
|
scale1 = 1.5f;
|
|
if (type == (int) sbyte.MaxValue)
|
|
scale1 = 1.5f;
|
|
if (type == 128)
|
|
scale1 = 1.5f;
|
|
if (type == 129)
|
|
scale1 = 1.5f;
|
|
if (type == 130)
|
|
scale1 = 1.5f;
|
|
if (type == 131)
|
|
scale1 = 1.5f;
|
|
if (type == 222)
|
|
scale1 = 1.5f;
|
|
if (type >= 245 && type <= 249)
|
|
scale1 = 1.5f;
|
|
if (type == 262)
|
|
scale1 = 1.5f;
|
|
if (type == 266)
|
|
scale1 = 1.5f;
|
|
if (type == 564 || type == 565 || type == 551 || type == 576 || type == 577)
|
|
scale1 = 1.5f;
|
|
if (type == 87)
|
|
scale1 = 1.5f;
|
|
if (type == 510 || type == 454 || type == 621)
|
|
scale1 = 1.5f;
|
|
if (type == 439 || type == 370)
|
|
scale1 = 1.5f;
|
|
if ((!Main.expertMode || type != 266) && (type != 439 && type != 440 || (double) Main.npc[i].ai[0] != 5.0))
|
|
{
|
|
if (type >= 134 && type <= 136)
|
|
{
|
|
float scale2 = 1.5f;
|
|
if (!flag)
|
|
{
|
|
flag = true;
|
|
Vector2 vector2_1 = new Vector2();
|
|
float num = 999999f;
|
|
for (int index3 = 0; index3 < 200; ++index3)
|
|
{
|
|
if (Main.npc[index3].active && Main.npc[index3].type >= 134 && Main.npc[index3].type <= 136)
|
|
{
|
|
Vector2 vector2_2 = Main.player[Main.myPlayer].Center - Main.npc[index3].Center;
|
|
if ((double) vector2_2.Length() < (double) num && Collision.CanHit(Main.player[Main.myPlayer].Center, 1, 1, Main.npc[index3].Center, 1, 1))
|
|
{
|
|
num = vector2_2.Length();
|
|
vector2_1 = Main.npc[index3].position;
|
|
}
|
|
}
|
|
}
|
|
if ((double) num < (double) Main.screenWidth)
|
|
{
|
|
Main.destroyerHB = (double) Main.destroyerHB.X >= 100.0 || (double) Main.destroyerHB.Y >= 100.0 ? (Main.destroyerHB * 49f + vector2_1) / 50f : vector2_1;
|
|
Vector2 destroyerHb = Main.destroyerHB;
|
|
int index4 = i;
|
|
if (type != 134 && Main.npc[i].realLife != -1)
|
|
index4 = Main.npc[i].realLife;
|
|
float alpha = (float) (((double) Lighting.Brightness((int) (((double) Main.npc[i].position.X + (double) (Main.npc[i].width / 2)) / 16.0), (int) (((double) Main.npc[i].position.Y + (double) (Main.npc[i].height / 2) + (double) Main.npc[i].gfxOffY) / 16.0)) + 1.0) / 2.0);
|
|
this.DrawHealthBar(destroyerHb.X + (float) (Main.npc[i].width / 2), destroyerHb.Y + (float) (Main.npc[i].height / 2), Main.npc[index4].life, Main.npc[index4].lifeMax, alpha, scale2);
|
|
}
|
|
else
|
|
Main.destroyerHB = new Vector2(0.0f, 0.0f);
|
|
}
|
|
}
|
|
else if (type == 7)
|
|
this.DrawInterface_Healthbar_Worm(Main.npc[i], 9, scale1);
|
|
else if (type != 8 && type != 9)
|
|
{
|
|
if (type == 95)
|
|
this.DrawInterface_Healthbar_Worm(Main.npc[i], 97, scale1);
|
|
else if (type != 96 && type != 97)
|
|
{
|
|
if (type == 10)
|
|
this.DrawInterface_Healthbar_Worm(Main.npc[i], 12, scale1);
|
|
else if (type != 11 && type != 12)
|
|
{
|
|
if (type == 87)
|
|
this.DrawInterface_Healthbar_Worm(Main.npc[i], 92, scale1);
|
|
else if (type < 88 || type > 92)
|
|
{
|
|
if (type == 412)
|
|
this.DrawInterface_Healthbar_Worm(Main.npc[i], 414, scale1);
|
|
else if (type != 414 && type != 413)
|
|
{
|
|
if (type == 39)
|
|
this.DrawInterface_Healthbar_Worm(Main.npc[i], 41, scale1);
|
|
else if (type != 40 && type != 41)
|
|
{
|
|
if (type == 98)
|
|
this.DrawInterface_Healthbar_Worm(Main.npc[i], 100, scale1);
|
|
else if (type != 99 && type != 100)
|
|
{
|
|
if (type == 454)
|
|
this.DrawInterface_Healthbar_Worm(Main.npc[i], 459, scale1);
|
|
else if (type < 455 || type > 459)
|
|
{
|
|
if (type == 510)
|
|
this.DrawInterface_Healthbar_Worm(Main.npc[i], 512, scale1);
|
|
else if (type != 511 && type != 512)
|
|
{
|
|
if (type == 621)
|
|
this.DrawInterface_Healthbar_Worm(Main.npc[i], 623, scale1);
|
|
else if (type != 622 && type != 623)
|
|
{
|
|
if (type == 513)
|
|
this.DrawInterface_Healthbar_Worm(Main.npc[i], 515, scale1);
|
|
else if (type != 514 && type != 515)
|
|
{
|
|
if (type == 117)
|
|
this.DrawInterface_Healthbar_Worm(Main.npc[i], 119, scale1);
|
|
else if (type != 118 && type != 119)
|
|
{
|
|
switch (Main.HealthBarDrawSettings)
|
|
{
|
|
case 1:
|
|
float num1 = 10f + Main.NPCAddHeight(Main.npc[i]);
|
|
this.DrawHealthBar(Main.npc[i].position.X + (float) (Main.npc[i].width / 2), Main.npc[i].position.Y + (float) Main.npc[i].height + num1 + Main.npc[i].gfxOffY, Main.npc[i].life, Main.npc[i].lifeMax, Lighting.Brightness((int) (((double) Main.npc[i].position.X + (double) (Main.npc[i].width / 2)) / 16.0), (int) (((double) Main.npc[i].position.Y + (double) (Main.npc[i].height / 2) + (double) Main.npc[i].gfxOffY) / 16.0)), scale1);
|
|
break;
|
|
case 2:
|
|
float num2 = -24f - Main.NPCAddHeight(Main.npc[i]) / 2f;
|
|
this.DrawHealthBar(Main.npc[i].position.X + (float) (Main.npc[i].width / 2), Main.npc[i].position.Y + num2 + Main.npc[i].gfxOffY, Main.npc[i].life, Main.npc[i].lifeMax, Lighting.Brightness((int) (((double) Main.npc[i].position.X + (double) (Main.npc[i].width / 2)) / 16.0), (int) (((double) Main.npc[i].position.Y + (double) (Main.npc[i].height / 2) + (double) Main.npc[i].gfxOffY) / 16.0)), scale1);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if (!Main.npc[i].dontTakeDamage && (double) Main.npc[i].nameOver > 0.0 && PlayerInput.UsingGamepad && i == index1)
|
|
{
|
|
Vector2 stringSize = ChatManager.GetStringSize(FontAssets.MouseText.Value, Main.npc[i].GivenOrTypeName, Vector2.One);
|
|
Vector2 vector2_3 = Main.npc[i].Bottom - Main.screenPosition + new Vector2(0.0f, 10f);
|
|
Vector2 pos;
|
|
if (NPC.GetNPCLocation(i, true, true, out int _, out pos))
|
|
{
|
|
Vector2 vector2_4 = pos - Main.screenPosition + new Vector2(0.0f, (float) (10 + Main.npc[i].height / 2));
|
|
if ((double) Main.player[Main.myPlayer].gravDir == -1.0)
|
|
vector2_4 = Main.ReverseGravitySupport(vector2_4, (float) (-Main.npc[i].height - 20));
|
|
Vector2 origin = stringSize * new Vector2(0.5f, 0.0f);
|
|
ChatManager.DrawColorCodedStringShadow(Main.spriteBatch, FontAssets.MouseText.Value, Main.npc[i].GivenOrTypeName, vector2_4, Microsoft.Xna.Framework.Color.Black * Main.npc[i].nameOver * 0.5f, 0.0f, origin, Vector2.One);
|
|
ChatManager.DrawColorCodedString(Main.spriteBatch, FontAssets.MouseText.Value, Main.npc[i].GivenOrTypeName, vector2_4, Microsoft.Xna.Framework.Color.White * Main.npc[i].nameOver, 0.0f, origin, Vector2.One);
|
|
}
|
|
}
|
|
if (Main.npc[i].type == 548 && !Main.npc[i].dontTakeDamageFromHostiles && DD2Event.TimeLeftBetweenWaves > 0 && !Main.hideUI)
|
|
{
|
|
Vector2 position = Main.npc[i].Bottom - Main.screenPosition + new Vector2(0.0f, -100f);
|
|
string text = string.Format("{0}", (object) (DD2Event.TimeLeftBetweenWaves / 60));
|
|
DynamicSpriteFont font = FontAssets.MouseText.Value;
|
|
float num = 1f;
|
|
Vector2 origin = font.MeasureString(text) * num * new Vector2(0.5f, 0.5f);
|
|
ChatManager.DrawColorCodedStringWithShadow(Main.spriteBatch, font, text, position, Microsoft.Xna.Framework.Color.White, 0.0f, origin, Vector2.One * num);
|
|
}
|
|
NPC npc2 = Main.npc[i];
|
|
npc2.position = npc2.position - Main.npc[i].netOffset;
|
|
}
|
|
}
|
|
for (int index5 = 0; index5 < (int) byte.MaxValue; ++index5)
|
|
{
|
|
if (index5 != Main.myPlayer && Main.player[index5].active && !Main.player[index5].ghost && !Main.player[index5].dead && !Main.player[index5].invis && Main.player[index5].statLife != Main.player[index5].statLifeMax2)
|
|
{
|
|
switch (Main.HealthBarDrawSettings)
|
|
{
|
|
case 1:
|
|
int num3 = 10;
|
|
this.DrawHealthBar(Main.player[index5].position.X + (float) (Main.player[index5].width / 2), Main.player[index5].position.Y + (float) Main.player[index5].height + (float) num3 + Main.player[index5].gfxOffY, Main.player[index5].statLife, Main.player[index5].statLifeMax2, Main.player[index5].stealth * Lighting.Brightness((int) (((double) Main.player[index5].position.X + (double) (Main.player[index5].width / 2)) / 16.0), (int) (((double) Main.player[index5].position.Y + (double) (Main.player[index5].height / 2) + (double) Main.player[index5].gfxOffY) / 16.0)));
|
|
continue;
|
|
case 2:
|
|
int num4 = -20;
|
|
this.DrawHealthBar(Main.player[index5].position.X + (float) (Main.player[index5].width / 2), Main.player[index5].position.Y + (float) num4 + Main.player[index5].gfxOffY, Main.player[index5].statLife, Main.player[index5].statLifeMax2, Main.player[index5].stealth * Lighting.Brightness((int) (((double) Main.player[index5].position.X + (double) (Main.player[index5].width / 2)) / 16.0), (int) (((double) Main.player[index5].position.Y + (double) (Main.player[index5].height / 2) + (double) Main.player[index5].gfxOffY) / 16.0)));
|
|
continue;
|
|
default:
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private void DrawInterface_Healthbar_Worm(NPC head, int tailID, float scale)
|
|
{
|
|
NPC npc = head;
|
|
for (int index = head.whoAmI + 1; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active && Main.npc[index].type == tailID)
|
|
{
|
|
npc = Main.npc[index];
|
|
break;
|
|
}
|
|
}
|
|
Vector2 vector2 = (head.position + npc.position) / 2f;
|
|
this.DrawHealthBar(vector2.X + (float) (head.width / 2), vector2.Y + (float) (head.height / 2), head.life, head.lifeMax, Lighting.Brightness((int) (((double) head.position.X + (double) (head.width / 2)) / 16.0), (int) (((double) head.position.Y + (double) (head.height / 2) + (double) head.gfxOffY) / 16.0)), scale);
|
|
}
|
|
|
|
private static void DrawInterface_13_AchievementCompletePopups() => InGameNotificationsTracker.DrawInGame(Main.spriteBatch);
|
|
|
|
private static bool DrawInterface_12_IngameFancyUI()
|
|
{
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, Main.SamplerStateForCursor, DepthStencilState.None, RasterizerState.CullCounterClockwise, (Effect) null, Main.UIScaleMatrix);
|
|
Main.InGameUI.Draw(Main.spriteBatch, Main._drawInterfaceGameTime);
|
|
bool flag = true;
|
|
if (Main.inFancyUI && !IngameFancyUI.Draw(Main.spriteBatch, Main._drawInterfaceGameTime))
|
|
{
|
|
flag = false;
|
|
Main.DrawPendingMouseText();
|
|
}
|
|
return flag;
|
|
}
|
|
|
|
private bool DrawInterface_11_IngameOptionsMenu()
|
|
{
|
|
bool flag = true;
|
|
if (Main.ingameOptionsWindow)
|
|
{
|
|
this.DrawInterface_16_MapOrMinimap();
|
|
PlayerInput.SetZoom_UI();
|
|
Matrix uiScaleMatrix = Main.UIScaleMatrix;
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, (BlendState) null, (SamplerState) null, (DepthStencilState) null, (RasterizerState) null, (Effect) null, uiScaleMatrix);
|
|
IngameOptions.Draw(this, Main.spriteBatch);
|
|
this.DrawInterface_40_InteractItemIcon();
|
|
Main.DrawPendingMouseText();
|
|
flag = false;
|
|
Main._MouseOversCanClear = true;
|
|
}
|
|
return flag;
|
|
}
|
|
|
|
private static bool DrawInterface_8_CheckF11UIHideToggle()
|
|
{
|
|
bool flag = true;
|
|
if (Main.hideUI)
|
|
{
|
|
Main.maxQ = true;
|
|
flag = false;
|
|
Main._MouseOversCanClear = true;
|
|
Main.DrawPendingMouseText();
|
|
}
|
|
return flag;
|
|
}
|
|
|
|
private static bool DrawInterface_10_CheckCaptureManager()
|
|
{
|
|
bool flag = true;
|
|
PlayerInput.SetDesiredZoomContext(ZoomContext.Unscaled_MouseInWorld);
|
|
CaptureManager.Instance.Update();
|
|
if (CaptureManager.Instance.Active)
|
|
{
|
|
CaptureManager.Instance.Draw(Main.spriteBatch);
|
|
flag = false;
|
|
Main._MouseOversCanClear = true;
|
|
PlayerInput.SetZoom_UI();
|
|
Matrix uiScaleMatrix = Main.UIScaleMatrix;
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, (BlendState) null, (SamplerState) null, (DepthStencilState) null, (RasterizerState) null, (Effect) null, uiScaleMatrix);
|
|
Main.DrawPendingMouseText();
|
|
}
|
|
return flag;
|
|
}
|
|
|
|
private static void DrawInterface_9_WireSelection()
|
|
{
|
|
if (!Main.hideUI)
|
|
{
|
|
Main.DrawInterface_Resources_GolfPower();
|
|
Main.DrawInterface_GolfBallIndicator();
|
|
}
|
|
WiresUI.HandleWiresUI(Main.spriteBatch);
|
|
}
|
|
|
|
private static void DrawInterface_0_InterfaceLogic1()
|
|
{
|
|
if (Main.player[Main.myPlayer].selectedItem != 58 || Main.player[Main.myPlayer].itemAnimation <= 0)
|
|
return;
|
|
Main.mouseLeftRelease = false;
|
|
}
|
|
|
|
private void DrawInterface_7_TownNPCHouseBanners()
|
|
{
|
|
if (Main.EquipPage != 1 && (!UILinkPointNavigator.Shortcuts.NPCS_IconsDisplay || !PlayerInput.UsingGamepad))
|
|
return;
|
|
if (Main.ignoreErrors)
|
|
{
|
|
try
|
|
{
|
|
this.DrawNPCHousesInWorld();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
TimeLogger.DrawException(ex);
|
|
}
|
|
}
|
|
else
|
|
this.DrawNPCHousesInWorld();
|
|
}
|
|
|
|
private static void DrawInterface_6_TileGridOption()
|
|
{
|
|
bool flag = Main.MouseShowBuildingGrid && !Main.SmartCursorEnabled;
|
|
int num1 = !PlayerInput.UsingGamepad || Main.SmartCursorEnabled ? 0 : (!PlayerInput.UsingGamepadUI ? 1 : 0);
|
|
if (flag && !Main.player[Main.myPlayer].dead && !PlayerInput.CursorIsBusy)
|
|
{
|
|
float num2 = MathHelper.Lerp(0.0f, 0.7f, MathHelper.Clamp((float) (1.0 - (double) Main.player[Main.myPlayer].velocity.Length() / 6.0), 0.0f, 1f));
|
|
Main.MouseBuildingGridAlpha = MathHelper.Lerp(Main.MouseBuildingGridAlpha, num2, 0.2f);
|
|
float buildingGridAlpha = Main.MouseBuildingGridAlpha;
|
|
if ((double) buildingGridAlpha <= 0.0)
|
|
return;
|
|
Vector2 vector2_1 = Main.MouseWorld.ToTileCoordinates().ToVector2() * 16f;
|
|
Vector2 vector2_2 = new Vector2((float) Main.offScreenRange, (float) Main.offScreenRange);
|
|
int num3 = Main.drawToScreen ? 1 : 0;
|
|
Vector2 position = vector2_1 - Main.screenPosition + new Vector2(8f);
|
|
if ((double) Main.player[Main.myPlayer].gravDir == -1.0)
|
|
position.Y = (float) Main.screenHeight - position.Y;
|
|
Texture2D texture2D = TextureAssets.CursorRadial.Value;
|
|
Main.spriteBatch.Draw(texture2D, position, new Microsoft.Xna.Framework.Rectangle?(), Microsoft.Xna.Framework.Color.White * 0.5f * buildingGridAlpha, 0.0f, texture2D.Size() / 2f, 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
else
|
|
Main.MouseBuildingGridAlpha = MathHelper.Clamp(Main.MouseBuildingGridAlpha - 0.05f, 0.0f, 1f);
|
|
}
|
|
|
|
private static void DrawInterface_5_GamepadLockOn() => LockOnHelper.Draw(Main.spriteBatch);
|
|
|
|
private static void DrawInterface_4_Ruler()
|
|
{
|
|
if (!Main.player[Main.myPlayer].rulerLine || Main.player[Main.myPlayer].builderAccStatus[0] != 0)
|
|
return;
|
|
float num1 = Main.player[Main.myPlayer].velocity.Length();
|
|
float num2 = 6f;
|
|
float num3 = 2f;
|
|
if ((double) num1 > (double) num2)
|
|
return;
|
|
float num4 = 1f;
|
|
if ((double) num1 >= (double) num3)
|
|
num4 = (float) (1.0 - ((double) num1 - (double) num3) / (double) num2);
|
|
int num5 = 1;
|
|
if ((double) Main.mouseX + (double) Main.screenPosition.X < (double) Main.player[Main.myPlayer].Center.X)
|
|
num5 = -1;
|
|
int num6 = (int) ((double) Main.player[Main.myPlayer].position.X + (double) (Main.player[Main.myPlayer].width / 2)) / 16;
|
|
int num7 = (int) ((double) Main.player[Main.myPlayer].position.Y + (double) Main.player[Main.myPlayer].height - 2.0) / 16;
|
|
if ((double) Main.player[Main.myPlayer].gravDir == -1.0)
|
|
--num7;
|
|
Vector2 mouseWorld = Main.MouseWorld;
|
|
if (Math.Abs(num6 - (int) ((double) Main.MouseWorld.X / 16.0)) > 0)
|
|
num6 += num5;
|
|
if ((double) Main.player[Main.myPlayer].gravDir == -1.0)
|
|
mouseWorld.Y += 16f;
|
|
Vector2 vector2_1 = mouseWorld / 16f;
|
|
Vector2 vector2_2 = new Vector2((float) num6, (float) num7);
|
|
int num8 = (int) vector2_1.X - num6;
|
|
int num9 = (int) vector2_1.Y - num7;
|
|
Math.Abs(num8);
|
|
Math.Abs(num9);
|
|
Main.rulerLineDisplayValues.X = num8;
|
|
Main.rulerLineDisplayValues.Y = num9;
|
|
if (num8 == 0 && num9 == 0)
|
|
return;
|
|
Texture2D texture = TextureAssets.Extra[2].Value;
|
|
Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.Rectangle(0, 0, 16, 16);
|
|
int num10 = num6;
|
|
int num11 = num7;
|
|
if ((double) Main.player[Main.myPlayer].gravDir == -1.0)
|
|
--num11;
|
|
float r = 0.24f;
|
|
float g = 0.8f;
|
|
float b = 0.9f;
|
|
float a = 1f;
|
|
float num12 = 0.8f;
|
|
Microsoft.Xna.Framework.Color color1 = new Microsoft.Xna.Framework.Color(r, g, b, a) * num12 * num4;
|
|
Main.spriteBatch.Draw(texture, Main.ReverseGravitySupport(new Vector2((float) num10, (float) num11) * 16f - Main.screenPosition, 16f), new Microsoft.Xna.Framework.Rectangle?(rectangle), color1, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0.0f);
|
|
if (num8 != 0)
|
|
{
|
|
int num13 = Math.Sign(num8);
|
|
rectangle.Y = num13 == 1 ? 16 : 32;
|
|
while (num8 != 0)
|
|
{
|
|
num8 -= num13;
|
|
num10 += num13;
|
|
if (num8 == 0)
|
|
rectangle.Y = 0;
|
|
Microsoft.Xna.Framework.Color color2 = new Microsoft.Xna.Framework.Color(r, g, b, a) * num12 * num4;
|
|
Main.spriteBatch.Draw(texture, Main.ReverseGravitySupport(new Vector2((float) num10, (float) num11) * 16f - Main.screenPosition, 16f), new Microsoft.Xna.Framework.Rectangle?(rectangle), color2, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
if (num9 == 0)
|
|
return;
|
|
int num14 = Math.Sign(num9);
|
|
rectangle.Y = num14 == 1 ? 48 : 64;
|
|
while (num9 != 0)
|
|
{
|
|
num9 -= num14;
|
|
num11 += num14;
|
|
if (num9 == 0)
|
|
rectangle.Y = 0;
|
|
Microsoft.Xna.Framework.Color color3 = new Microsoft.Xna.Framework.Color(r, g, b, a) * num12 * num4;
|
|
Main.spriteBatch.Draw(texture, Main.ReverseGravitySupport(new Vector2((float) num10, (float) num11) * 16f - Main.screenPosition, 16f), new Microsoft.Xna.Framework.Rectangle?(rectangle), color3, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
|
|
private static void DrawInterface_3_LaserRuler()
|
|
{
|
|
if (!Main.player[Main.myPlayer].rulerGrid || Main.player[Main.myPlayer].builderAccStatus[1] != 0)
|
|
return;
|
|
Main.player[Main.myPlayer].velocity.Length();
|
|
float num1 = Vector2.Distance(Main.player[Main.myPlayer].position, Main.player[Main.myPlayer].shadowPos[2]);
|
|
float num2 = 6f;
|
|
Texture2D texture = TextureAssets.Extra[68].Value;
|
|
float num3 = MathHelper.Lerp(0.2f, 0.7f, MathHelper.Clamp((float) (1.0 - (double) num1 / (double) num2), 0.0f, 1f));
|
|
Vector2 vector2_1 = (Main.screenPosition + new Vector2(-50f)).ToTileCoordinates().ToVector2() * 16f;
|
|
int num4 = (Main.screenWidth + 100) / 16;
|
|
int num5 = (Main.screenHeight + 100) / 16;
|
|
Microsoft.Xna.Framework.Point tileCoordinates = Main.MouseWorld.ToTileCoordinates();
|
|
tileCoordinates.X -= (int) vector2_1.X / 16;
|
|
tileCoordinates.Y -= (int) vector2_1.Y / 16;
|
|
Microsoft.Xna.Framework.Color color1 = new Microsoft.Xna.Framework.Color(0.24f, 0.8f, 0.9f, 0.5f) * 0.4f * num3;
|
|
Microsoft.Xna.Framework.Color color2 = new Microsoft.Xna.Framework.Color(1f, 0.8f, 0.9f, 0.5f) * 0.5f * num3;
|
|
Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.Rectangle(0, 18, 18, 18);
|
|
Vector2 vector2_2 = vector2_1 - Vector2.One;
|
|
for (int index1 = 0; index1 < num4; ++index1)
|
|
{
|
|
for (int index2 = 0; index2 < num5; ++index2)
|
|
{
|
|
Microsoft.Xna.Framework.Color color3 = color1;
|
|
Vector2 zero = Vector2.Zero;
|
|
if (index1 != tileCoordinates.X && index2 != tileCoordinates.Y)
|
|
{
|
|
if (index1 != tileCoordinates.X + 1)
|
|
{
|
|
rectangle.X = 0;
|
|
rectangle.Width = 16;
|
|
}
|
|
else
|
|
{
|
|
rectangle.X = 2;
|
|
rectangle.Width = 14;
|
|
zero.X = 2f;
|
|
}
|
|
if (index2 != tileCoordinates.Y + 1)
|
|
{
|
|
rectangle.Y = 18;
|
|
rectangle.Height = 16;
|
|
}
|
|
else
|
|
{
|
|
rectangle.Y = 2;
|
|
rectangle.Height = 14;
|
|
zero.Y = 2f;
|
|
}
|
|
Main.spriteBatch.Draw(texture, Main.ReverseGravitySupport(new Vector2((float) index1, (float) index2) * 16f - Main.screenPosition + vector2_2 + zero, 16f), new Microsoft.Xna.Framework.Rectangle?(rectangle), color3, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
}
|
|
rectangle = new Microsoft.Xna.Framework.Rectangle(0, 0, 16, 18);
|
|
for (int index = 0; index < num4; ++index)
|
|
{
|
|
if (index == tileCoordinates.X)
|
|
Main.spriteBatch.Draw(texture, Main.ReverseGravitySupport(new Vector2((float) index, (float) tileCoordinates.Y) * 16f - Main.screenPosition + vector2_2, 16f), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, 16, 16)), color2, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0.0f);
|
|
else
|
|
Main.spriteBatch.Draw(texture, Main.ReverseGravitySupport(new Vector2((float) index, (float) tileCoordinates.Y) * 16f - Main.screenPosition + vector2_2, 16f), new Microsoft.Xna.Framework.Rectangle?(rectangle), color2, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
rectangle = new Microsoft.Xna.Framework.Rectangle(0, 0, 18, 16);
|
|
for (int index = 0; index < num5; ++index)
|
|
{
|
|
if (index != tileCoordinates.Y)
|
|
Main.spriteBatch.Draw(texture, Main.ReverseGravitySupport(new Vector2((float) tileCoordinates.X, (float) index) * 16f - Main.screenPosition + vector2_2, 16f), new Microsoft.Xna.Framework.Rectangle?(rectangle), color2, 0.0f, Vector2.Zero, 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
|
|
private static void DrawInterface_2_SmartCursorTargets() => Main.DrawSmartCursor();
|
|
|
|
private static void DrawInterface_1_1_DrawEmoteBubblesInWorld()
|
|
{
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, (BlendState) null, SamplerState.PointClamp, (DepthStencilState) null, (RasterizerState) null, (Effect) null, Main.GameViewMatrix.ZoomMatrix);
|
|
EmoteBubble.DrawAll(Main.spriteBatch);
|
|
if (Main.instance.currentNPCShowingChatBubble != -1)
|
|
Main.DrawNPCChatBubble(Main.instance.currentNPCShowingChatBubble);
|
|
Main.instance.currentNPCShowingChatBubble = -1;
|
|
}
|
|
|
|
private static void DrawInterface_1_2_DrawEntityMarkersInWorld()
|
|
{
|
|
Player localPlayer = Main.LocalPlayer;
|
|
if ((localPlayer.dead ? 0 : (localPlayer.HeldItem.summon ? 1 : 0)) == 0)
|
|
return;
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, (BlendState) null, SamplerState.PointClamp, (DepthStencilState) null, (RasterizerState) null, (Effect) null, Main.GameViewMatrix.ZoomMatrix);
|
|
Texture2D texture2D = TextureAssets.Extra[199].Value;
|
|
Vector2 zero = Vector2.Zero;
|
|
int minionAttackTargetNpc = localPlayer.MinionAttackTargetNPC;
|
|
Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.Rectangle((int) Main.screenPosition.X, (int) Main.screenPosition.Y, Main.screenWidth, Main.screenHeight);
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
NPC npc = Main.npc[index];
|
|
if (npc.active && npc.Hitbox.Intersects(rectangle))
|
|
{
|
|
Vector2 vector2 = npc.Center - Main.screenPosition;
|
|
if ((double) Main.player[Main.myPlayer].gravDir == -1.0)
|
|
vector2.Y = (float) Main.screenHeight - vector2.Y;
|
|
Vector2 position = vector2 + zero;
|
|
if (index == minionAttackTargetNpc)
|
|
{
|
|
int frameY = (int) ((double) Main.GlobalTimeWrappedHourly * 10.0) % 4;
|
|
Microsoft.Xna.Framework.Rectangle r = texture2D.Frame(verticalFrames: 4, frameY: frameY, sizeOffsetY: -2);
|
|
Vector2 origin = r.Size() / 2f;
|
|
Microsoft.Xna.Framework.Color color = Microsoft.Xna.Framework.Color.White * 0.7f;
|
|
color.A /= (byte) 2;
|
|
Main.spriteBatch.Draw(texture2D, position, new Microsoft.Xna.Framework.Rectangle?(r), color, 0.0f, origin, 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private static void MouseOversTryToClear()
|
|
{
|
|
if (!Main._MouseOversCanClear)
|
|
return;
|
|
Main._MouseOversCanClear = false;
|
|
Main.MouseOversClear();
|
|
}
|
|
|
|
private static void MouseOversClear()
|
|
{
|
|
Main.player[Main.myPlayer].cursorItemIconEnabled = false;
|
|
Main.player[Main.myPlayer].cursorItemIconID = 0;
|
|
Main.player[Main.myPlayer].cursorItemIconText = string.Empty;
|
|
Main.signHover = -1;
|
|
}
|
|
|
|
public static void ItemIconCacheUpdate(int selectedItemID)
|
|
{
|
|
Main._itemIconCacheScreenPosition = Main.MouseScreen;
|
|
Main._itemIconCacheSelectedItemID = selectedItemID;
|
|
Main._itemIconCacheTime = 10;
|
|
}
|
|
|
|
public static void ItemIconCacheVerification()
|
|
{
|
|
if (Main._itemIconCacheTime <= 0)
|
|
return;
|
|
double num = (double) Vector2.Distance(Main._itemIconCacheScreenPosition, Main.MouseScreen);
|
|
if (num != 0.0)
|
|
--Main._itemIconCacheTime;
|
|
if (num > 4.0)
|
|
Main._itemIconCacheTime = 0;
|
|
if (Main._itemIconCacheSelectedItemID == Main.player[Main.myPlayer].inventory[Main.player[Main.myPlayer].selectedItem].type)
|
|
return;
|
|
Main._itemIconCacheTime = 0;
|
|
}
|
|
|
|
public static void DrawWallOfFish()
|
|
{
|
|
List<int> intList = new List<int>();
|
|
for (int index = 2297; index <= 2321; ++index)
|
|
intList.Add(index);
|
|
for (int index = 2450; index <= 2488; ++index)
|
|
intList.Add(index);
|
|
for (int index1 = 0; index1 < 5; ++index1)
|
|
{
|
|
float num = 10f;
|
|
Vector2 position = new Vector2((float) ((double) Main.screenWidth / (double) num * ((double) Main.GlobalTimeWrappedHourly % (double) num)), -100f);
|
|
position.X += (float) (14 * index1);
|
|
position.Y += (float) (index1 % 2 * 14);
|
|
int index2 = 30 * index1;
|
|
while ((double) position.Y < (double) (Main.screenHeight + 100))
|
|
{
|
|
if (++index2 >= intList.Count)
|
|
index2 = 0;
|
|
position.Y += 26f;
|
|
Main.instance.LoadItem(intList[index2]);
|
|
Texture2D texture2D = TextureAssets.Item[intList[index2]].Value;
|
|
Microsoft.Xna.Framework.Point tileCoordinates = (position + Main.screenPosition).ToTileCoordinates();
|
|
Main.spriteBatch.Draw(texture2D, position, new Microsoft.Xna.Framework.Rectangle?(), Lighting.GetColor(tileCoordinates.X, tileCoordinates.Y), 0.7853982f, texture2D.Size() / 2f, 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void DrawWallOfStars()
|
|
{
|
|
bool flag = true;
|
|
if (flag)
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, Main.DefaultSamplerState, DepthStencilState.None, Main.Rasterizer, (Effect) null, Main.Transform);
|
|
int i = Projectile.NewProjectile(Vector2.Zero, Vector2.UnitX, 12, 0, 0.0f, Main.myPlayer);
|
|
Projectile projectile = Main.projectile[i];
|
|
for (int index = 0; index < 5; ++index)
|
|
{
|
|
float num = 10f;
|
|
Vector2 vector2 = new Vector2((float) ((double) Main.screenWidth / (double) num * ((double) Main.GlobalTimeWrappedHourly % (double) num)), -100f);
|
|
vector2.X += (float) (14 * index);
|
|
vector2.Y += (float) (index % 2 * 14);
|
|
while ((double) vector2.Y < (double) (Main.screenHeight + 100))
|
|
{
|
|
vector2.Y += 26f;
|
|
projectile.position = Vector2.One * 10f;
|
|
projectile.velocity = Vector2.UnitX * 10f;
|
|
projectile.rotation = Main.GlobalTimeWrappedHourly * 6.283185f;
|
|
projectile.Update(i);
|
|
projectile.position = vector2 + Main.screenPosition;
|
|
Main.instance.DrawProj(i);
|
|
}
|
|
}
|
|
projectile.position = Vector2.One * 10f;
|
|
projectile.Kill();
|
|
if (!flag)
|
|
return;
|
|
Main.spriteBatch.End();
|
|
}
|
|
|
|
private static void DrawSmartCursor()
|
|
{
|
|
if (!Main.SmartCursorShowing || Main.player[Main.myPlayer].dead)
|
|
return;
|
|
Vector2 vector2_1 = new Vector2((float) Main.SmartCursorX, (float) Main.SmartCursorY) * 16f;
|
|
Vector2 vector2_2 = new Vector2((float) Main.offScreenRange, (float) Main.offScreenRange);
|
|
int num1 = Main.drawToScreen ? 1 : 0;
|
|
Vector2 position = vector2_1 - Main.screenPosition;
|
|
if ((double) Main.player[Main.myPlayer].gravDir == -1.0)
|
|
position.Y = (float) ((double) Main.screenHeight - (double) position.Y - 16.0);
|
|
Microsoft.Xna.Framework.Color newColor = Lighting.GetColor(Main.SmartCursorX, Main.SmartCursorY) * 1f;
|
|
Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.Rectangle(0, 0, 1, 1);
|
|
float R = 1f;
|
|
float G1 = 0.9f;
|
|
float B1 = 0.1f;
|
|
float A1 = 1f;
|
|
float num2 = 0.6f;
|
|
Main.spriteBatch.Draw(TextureAssets.MagicPixel.Value, position, new Microsoft.Xna.Framework.Rectangle?(rectangle), Main.buffColor(newColor, R, G1, B1, A1) * num2, 0.0f, Vector2.Zero, 8f, SpriteEffects.None, 0.0f);
|
|
Main.spriteBatch.Draw(TextureAssets.MagicPixel.Value, position + Vector2.UnitX * 8f, new Microsoft.Xna.Framework.Rectangle?(rectangle), Main.buffColor(newColor, R, G1, B1, A1) * num2, 0.0f, Vector2.Zero, 8f, SpriteEffects.None, 0.0f);
|
|
Main.spriteBatch.Draw(TextureAssets.MagicPixel.Value, position + Vector2.UnitY * 8f, new Microsoft.Xna.Framework.Rectangle?(rectangle), Main.buffColor(newColor, R, G1, B1, A1) * num2, 0.0f, Vector2.Zero, 8f, SpriteEffects.None, 0.0f);
|
|
Main.spriteBatch.Draw(TextureAssets.MagicPixel.Value, position + Vector2.One * 8f, new Microsoft.Xna.Framework.Rectangle?(rectangle), Main.buffColor(newColor, R, G1, B1, A1) * num2, 0.0f, Vector2.Zero, 8f, SpriteEffects.None, 0.0f);
|
|
float B2 = 0.3f;
|
|
float G2 = 0.95f;
|
|
float num3;
|
|
float A2 = num3 = 1f;
|
|
Main.spriteBatch.Draw(TextureAssets.MagicPixel.Value, position + Vector2.UnitX * -2f, new Microsoft.Xna.Framework.Rectangle?(rectangle), Main.buffColor(newColor, R, G2, B2, A2) * num3, 0.0f, Vector2.Zero, new Vector2(2f, 16f), SpriteEffects.None, 0.0f);
|
|
Main.spriteBatch.Draw(TextureAssets.MagicPixel.Value, position + Vector2.UnitX * 16f, new Microsoft.Xna.Framework.Rectangle?(rectangle), Main.buffColor(newColor, R, G2, B2, A2) * num3, 0.0f, Vector2.Zero, new Vector2(2f, 16f), SpriteEffects.None, 0.0f);
|
|
Main.spriteBatch.Draw(TextureAssets.MagicPixel.Value, position + Vector2.UnitY * -2f, new Microsoft.Xna.Framework.Rectangle?(rectangle), Main.buffColor(newColor, R, G2, B2, A2) * num3, 0.0f, Vector2.Zero, new Vector2(16f, 2f), SpriteEffects.None, 0.0f);
|
|
Main.spriteBatch.Draw(TextureAssets.MagicPixel.Value, position + Vector2.UnitY * 16f, new Microsoft.Xna.Framework.Rectangle?(rectangle), Main.buffColor(newColor, R, G2, B2, A2) * num3, 0.0f, Vector2.Zero, new Vector2(16f, 2f), SpriteEffects.None, 0.0f);
|
|
}
|
|
|
|
private static void DrawSmartInteract()
|
|
{
|
|
if (!Main.SmartInteractShowingGenuine || Main.SmartInteractNPC != -1 || Main.SmartInteractProj != -1 || Main.player[Main.myPlayer].dead)
|
|
return;
|
|
Vector2 vector2_1 = new Vector2((float) Main.SmartInteractX, (float) Main.SmartInteractY) * 16f;
|
|
Vector2 vector2_2 = new Vector2((float) Main.offScreenRange, (float) Main.offScreenRange);
|
|
int num1 = Main.drawToScreen ? 1 : 0;
|
|
Vector2 position = vector2_1 - Main.screenPosition;
|
|
if ((double) Main.player[Main.myPlayer].gravDir == -1.0)
|
|
position.Y = (float) ((double) Main.screenHeight - (double) position.Y - 16.0);
|
|
Microsoft.Xna.Framework.Color newColor = Lighting.GetColor(Main.SmartInteractX, Main.SmartInteractY) * 1f;
|
|
Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.Rectangle(0, 0, 1, 1);
|
|
float R1 = 0.1f;
|
|
float G1 = 0.9f;
|
|
float B = 1f;
|
|
float A1 = 1f;
|
|
float num2 = 0.6f;
|
|
Main.spriteBatch.Draw(TextureAssets.MagicPixel.Value, position, new Microsoft.Xna.Framework.Rectangle?(rectangle), Main.buffColor(newColor, R1, G1, B, A1) * num2, 0.0f, Vector2.Zero, 8f, SpriteEffects.None, 0.0f);
|
|
Main.spriteBatch.Draw(TextureAssets.MagicPixel.Value, position + Vector2.UnitX * 8f, new Microsoft.Xna.Framework.Rectangle?(rectangle), Main.buffColor(newColor, R1, G1, B, A1) * num2, 0.0f, Vector2.Zero, 8f, SpriteEffects.None, 0.0f);
|
|
Main.spriteBatch.Draw(TextureAssets.MagicPixel.Value, position + Vector2.UnitY * 8f, new Microsoft.Xna.Framework.Rectangle?(rectangle), Main.buffColor(newColor, R1, G1, B, A1) * num2, 0.0f, Vector2.Zero, 8f, SpriteEffects.None, 0.0f);
|
|
Main.spriteBatch.Draw(TextureAssets.MagicPixel.Value, position + Vector2.One * 8f, new Microsoft.Xna.Framework.Rectangle?(rectangle), Main.buffColor(newColor, R1, G1, B, A1) * num2, 0.0f, Vector2.Zero, 8f, SpriteEffects.None, 0.0f);
|
|
float R2 = 0.3f;
|
|
float G2 = 0.95f;
|
|
float num3;
|
|
float A2 = num3 = 1f;
|
|
Main.spriteBatch.Draw(TextureAssets.MagicPixel.Value, position + Vector2.UnitX * -2f, new Microsoft.Xna.Framework.Rectangle?(rectangle), Main.buffColor(newColor, R2, G2, B, A2) * num3, 0.0f, Vector2.Zero, new Vector2(2f, 16f), SpriteEffects.None, 0.0f);
|
|
Main.spriteBatch.Draw(TextureAssets.MagicPixel.Value, position + Vector2.UnitX * 16f, new Microsoft.Xna.Framework.Rectangle?(rectangle), Main.buffColor(newColor, R2, G2, B, A2) * num3, 0.0f, Vector2.Zero, new Vector2(2f, 16f), SpriteEffects.None, 0.0f);
|
|
Main.spriteBatch.Draw(TextureAssets.MagicPixel.Value, position + Vector2.UnitY * -2f, new Microsoft.Xna.Framework.Rectangle?(rectangle), Main.buffColor(newColor, R2, G2, B, A2) * num3, 0.0f, Vector2.Zero, new Vector2(16f, 2f), SpriteEffects.None, 0.0f);
|
|
Main.spriteBatch.Draw(TextureAssets.MagicPixel.Value, position + Vector2.UnitY * 16f, new Microsoft.Xna.Framework.Rectangle?(rectangle), Main.buffColor(newColor, R2, G2, B, A2) * num3, 0.0f, Vector2.Zero, new Vector2(16f, 2f), SpriteEffects.None, 0.0f);
|
|
}
|
|
|
|
private void DrawInterface_30_Hotbar()
|
|
{
|
|
try
|
|
{
|
|
this.GUIHotbarDrawInner();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (Main.ignoreErrors)
|
|
TimeLogger.DrawException(ex);
|
|
else
|
|
throw;
|
|
}
|
|
}
|
|
|
|
public void GUIChatDraw()
|
|
{
|
|
if (Main.ignoreErrors)
|
|
{
|
|
try
|
|
{
|
|
if (!(Main.npcChatText != "") && Main.player[Main.myPlayer].sign == -1 || Main.editChest)
|
|
return;
|
|
this.GUIChatDrawInner();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
TimeLogger.DrawException(ex);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (!(Main.npcChatText != "") && Main.player[Main.myPlayer].sign == -1 || Main.editChest)
|
|
return;
|
|
this.GUIChatDrawInner();
|
|
}
|
|
}
|
|
|
|
public static bool ShouldDrawInfoIconsHorizontally => !Main._cannotDrawAccessoriesHorizontally && (Main.mapStyle != 1 || !Main.mapEnabled || Main.screenHeight >= 820) && (Main.mapStyle == 1 || Main.screenWidth >= 855) && !PlayerInput.UsingGamepad;
|
|
|
|
public static bool CanShowInfoAccs => (Main.npcChatText == null || Main.npcChatText == "" || Main.player[Main.myPlayer].chest > -1) && Main.player[Main.myPlayer].sign < 0;
|
|
|
|
public static void DrawItemIcon(
|
|
SpriteBatch spriteBatch,
|
|
Item theItem,
|
|
Vector2 screenPositionForItemCenter,
|
|
Microsoft.Xna.Framework.Color itemLightColor,
|
|
float sizeLimit)
|
|
{
|
|
Main.instance.LoadItem(theItem.type);
|
|
Texture2D texture2D = TextureAssets.Item[theItem.type].Value;
|
|
Microsoft.Xna.Framework.Rectangle rectangle = Main.itemAnimations[theItem.type] == null ? texture2D.Frame() : Main.itemAnimations[theItem.type].GetFrame(texture2D);
|
|
int width = rectangle.Width;
|
|
int height = rectangle.Height;
|
|
float num1 = 1f;
|
|
if ((double) width > (double) sizeLimit || (double) height > (double) sizeLimit)
|
|
num1 = width <= height ? sizeLimit / (float) height : sizeLimit / (float) width;
|
|
float num2 = num1 * theItem.scale;
|
|
SpriteEffects effects = SpriteEffects.None;
|
|
Microsoft.Xna.Framework.Color currentColor = itemLightColor;
|
|
float scale1 = 1f;
|
|
ItemSlot.GetItemLight(ref currentColor, ref scale1, theItem);
|
|
float scale2 = num2 * scale1;
|
|
spriteBatch.Draw(texture2D, screenPositionForItemCenter, new Microsoft.Xna.Framework.Rectangle?(rectangle), currentColor, 0.0f, new Vector2((float) (width / 2), (float) (height / 2)), scale2, effects, 0.0f);
|
|
if (!(theItem.color != new Microsoft.Xna.Framework.Color()))
|
|
return;
|
|
spriteBatch.Draw(texture2D, screenPositionForItemCenter, new Microsoft.Xna.Framework.Rectangle?(rectangle), theItem.GetColor(itemLightColor), 0.0f, new Vector2((float) (width / 2), (float) (height / 2)), scale2, effects, 0.0f);
|
|
}
|
|
|
|
private void DrawInfoAccs()
|
|
{
|
|
if (!Main.CanShowInfoAccs)
|
|
return;
|
|
bool flag1 = false;
|
|
bool flag2 = false;
|
|
bool flag3 = false;
|
|
bool flag4 = false;
|
|
bool flag5 = false;
|
|
bool flag6 = false;
|
|
bool flag7 = false;
|
|
bool flag8 = false;
|
|
bool flag9 = false;
|
|
bool flag10 = false;
|
|
bool flag11 = false;
|
|
bool flag12 = false;
|
|
int index1 = -1;
|
|
int num1 = -10;
|
|
int drawnCount = 0;
|
|
string cursorText = "";
|
|
float num2 = 215f;
|
|
int StartX = 0;
|
|
if (GameCulture.FromCultureName(GameCulture.CultureName.Russian).IsActive)
|
|
{
|
|
StartX = -50;
|
|
num2 += 50f;
|
|
}
|
|
for (int index2 = 0; index2 < 12; ++index2)
|
|
{
|
|
string str1 = "";
|
|
string str2 = "";
|
|
if (Main.player[Main.myPlayer].accWatch > 0 && !flag1 && (!Main.player[Main.myPlayer].hideInfo[0] || Main.playerInventory))
|
|
{
|
|
index1 = 0;
|
|
str2 = Lang.inter[95].Value;
|
|
string textValue = Language.GetTextValue("GameUI.TimeAtMorning");
|
|
double time = Main.time;
|
|
if (!Main.dayTime)
|
|
time += 54000.0;
|
|
double num3 = time / 86400.0 * 24.0 - 7.5 - 12.0;
|
|
if (num3 < 0.0)
|
|
num3 += 24.0;
|
|
if (num3 >= 12.0)
|
|
textValue = Language.GetTextValue("GameUI.TimePastMorning");
|
|
int num4 = (int) num3;
|
|
double num5 = (double) (int) ((num3 - (double) num4) * 60.0);
|
|
string str3 = string.Concat((object) num5);
|
|
if (num5 < 10.0)
|
|
str3 = "0" + str3;
|
|
if (num4 > 12)
|
|
num4 -= 12;
|
|
if (num4 == 0)
|
|
num4 = 12;
|
|
if (Main.player[Main.myPlayer].accWatch == 1)
|
|
str3 = "00";
|
|
else if (Main.player[Main.myPlayer].accWatch == 2)
|
|
str3 = num5 >= 30.0 ? "30" : "00";
|
|
str1 = num4.ToString() + ":" + str3 + " " + textValue;
|
|
flag1 = true;
|
|
}
|
|
else if (Main.player[Main.myPlayer].accWeatherRadio && !flag5 && (!Main.player[Main.myPlayer].hideInfo[1] || Main.playerInventory))
|
|
{
|
|
index1 = 1;
|
|
str2 = Lang.inter[96].Value;
|
|
str1 = !Main.IsItStorming ? ((double) Main.maxRaining <= 0.6 ? ((double) Main.maxRaining < 0.2 ? ((double) Main.maxRaining <= 0.0 ? ((double) Main.cloudBGActive <= 0.0 ? (Main.numClouds <= 90 ? (Main.numClouds <= 55 ? (Main.numClouds <= 15 ? Language.GetTextValue("GameUI.Clear") : Language.GetTextValue("GameUI.PartlyCloudy")) : Language.GetTextValue("GameUI.Cloudy")) : Language.GetTextValue("GameUI.MostlyCloudy")) : Language.GetTextValue("GameUI.Overcast")) : Language.GetTextValue("GameUI.LightRain")) : Language.GetTextValue("GameUI.Rain")) : Language.GetTextValue("GameUI.HeavyRain")) : Language.GetTextValue("GameUI.Storm");
|
|
int num6 = (int) ((double) Main.windSpeedCurrent * 50.0);
|
|
if (num6 < 0)
|
|
str1 += Language.GetTextValue("GameUI.EastWind", (object) Math.Abs(num6));
|
|
else if (num6 > 0)
|
|
str1 += Language.GetTextValue("GameUI.WestWind", (object) num6);
|
|
flag5 = true;
|
|
}
|
|
else if (Main.player[Main.myPlayer].accCalendar && !flag8 && (!Main.player[Main.myPlayer].hideInfo[7] || Main.playerInventory))
|
|
{
|
|
index1 = !Main.bloodMoon || Main.dayTime ? (!Main.eclipse || !Main.dayTime ? 7 : 8) : 8;
|
|
str2 = Lang.inter[102].Value;
|
|
switch (Main.moonPhase)
|
|
{
|
|
case 0:
|
|
str1 = Language.GetTextValue("GameUI.FullMoon");
|
|
break;
|
|
case 1:
|
|
str1 = Language.GetTextValue("GameUI.WaningGibbous");
|
|
break;
|
|
case 2:
|
|
str1 = Language.GetTextValue("GameUI.ThirdQuarter");
|
|
break;
|
|
case 3:
|
|
str1 = Language.GetTextValue("GameUI.WaningCrescent");
|
|
break;
|
|
case 4:
|
|
str1 = Language.GetTextValue("GameUI.NewMoon");
|
|
break;
|
|
case 5:
|
|
str1 = Language.GetTextValue("GameUI.WaxingCrescent");
|
|
break;
|
|
case 6:
|
|
str1 = Language.GetTextValue("GameUI.FirstQuarter");
|
|
break;
|
|
case 7:
|
|
str1 = Language.GetTextValue("GameUI.WaxingGibbous");
|
|
break;
|
|
}
|
|
flag8 = true;
|
|
}
|
|
else if (Main.player[Main.myPlayer].accFishFinder && !flag4 && (!Main.player[Main.myPlayer].hideInfo[2] || Main.playerInventory))
|
|
{
|
|
bool flag13 = false;
|
|
index1 = 2;
|
|
str2 = Lang.inter[97].Value;
|
|
for (int index3 = 0; index3 < 1000; ++index3)
|
|
{
|
|
if (Main.projectile[index3].active && Main.projectile[index3].owner == Main.myPlayer && Main.projectile[index3].bobber)
|
|
{
|
|
flag13 = true;
|
|
break;
|
|
}
|
|
}
|
|
if (flag13)
|
|
{
|
|
str1 = Main.player[Main.myPlayer].displayedFishingInfo;
|
|
}
|
|
else
|
|
{
|
|
PlayerFishingConditions fishingConditions = Main.player[Main.myPlayer].GetFishingConditions();
|
|
str1 = fishingConditions.BaitItemType != 2673 ? (Main.player[Main.myPlayer].displayedFishingInfo = Language.GetTextValue("GameUI.FishingPower", (object) fishingConditions.FinalFishingLevel)) : Language.GetTextValue("GameUI.FishingWarning");
|
|
}
|
|
flag4 = true;
|
|
}
|
|
else if (Main.player[Main.myPlayer].accOreFinder && !flag10 && (!Main.player[Main.myPlayer].hideInfo[10] || Main.playerInventory))
|
|
{
|
|
index1 = 10;
|
|
str2 = Lang.inter[104].Value;
|
|
if (Main.SceneMetrics.bestOre <= 0)
|
|
{
|
|
str1 = Language.GetTextValue("GameUI.NoTreasureNearby");
|
|
}
|
|
else
|
|
{
|
|
int baseOption = 0;
|
|
int tileType = Main.SceneMetrics.bestOre;
|
|
Microsoft.Xna.Framework.Point? closestOrePosition = Main.SceneMetrics.ClosestOrePosition;
|
|
if (closestOrePosition.HasValue)
|
|
{
|
|
closestOrePosition = Main.SceneMetrics.ClosestOrePosition;
|
|
Microsoft.Xna.Framework.Point pt = closestOrePosition.Value;
|
|
Tile tileSafely = Framing.GetTileSafely(pt);
|
|
if (tileSafely.active())
|
|
{
|
|
MapHelper.GetTileBaseOption(pt.Y, tileSafely, ref baseOption);
|
|
tileType = (int) tileSafely.type;
|
|
if (TileID.Sets.BasicChest[tileType] || TileID.Sets.BasicChestFake[tileType])
|
|
baseOption = 0;
|
|
}
|
|
}
|
|
str1 = Language.GetTextValue("GameUI.OreDetected", (object) Lang.GetMapObjectName(MapHelper.TileToLookup(tileType, baseOption)));
|
|
}
|
|
flag10 = true;
|
|
}
|
|
else if (Main.player[Main.myPlayer].accCritterGuide && !flag11 && (!Main.player[Main.myPlayer].hideInfo[11] || Main.playerInventory))
|
|
{
|
|
flag11 = true;
|
|
index1 = 11;
|
|
str2 = Lang.inter[105].Value;
|
|
int num7 = 1300;
|
|
int num8 = 0;
|
|
int index4 = -1;
|
|
if (Main.player[Main.myPlayer].accCritterGuideCounter <= (byte) 0)
|
|
{
|
|
Main.player[Main.myPlayer].accCritterGuideCounter = (byte) 15;
|
|
for (int index5 = 0; index5 < 200; ++index5)
|
|
{
|
|
if (Main.npc[index5].active && Main.npc[index5].rarity > num8 && (double) (Main.npc[index5].Center - Main.player[Main.myPlayer].Center).Length() < (double) num7)
|
|
{
|
|
index4 = index5;
|
|
num8 = Main.npc[index5].rarity;
|
|
}
|
|
}
|
|
Main.player[Main.myPlayer].accCritterGuideNumber = (byte) index4;
|
|
}
|
|
else
|
|
{
|
|
--Main.player[Main.myPlayer].accCritterGuideCounter;
|
|
index4 = (int) Main.player[Main.myPlayer].accCritterGuideNumber;
|
|
}
|
|
str1 = index4 < 0 || index4 >= 200 || !Main.npc[index4].active || Main.npc[index4].rarity <= 0 ? Language.GetTextValue("GameUI.NoRareCreatures") : Main.npc[index4].GivenOrTypeName;
|
|
}
|
|
else if (Main.player[Main.myPlayer].accThirdEye && !flag6 && (!Main.player[Main.myPlayer].hideInfo[5] || Main.playerInventory))
|
|
{
|
|
flag6 = true;
|
|
index1 = 5;
|
|
str2 = Lang.inter[100].Value;
|
|
int num9 = 2000;
|
|
if (Main.player[Main.myPlayer].accThirdEyeCounter == (byte) 0)
|
|
{
|
|
Main.player[Main.myPlayer].accThirdEyeNumber = (byte) 0;
|
|
Main.player[Main.myPlayer].accThirdEyeCounter = (byte) 15;
|
|
for (int index6 = 0; index6 < 200; ++index6)
|
|
{
|
|
if (Main.npc[index6].active && !Main.npc[index6].friendly && Main.npc[index6].damage > 0 && Main.npc[index6].lifeMax > 5 && !Main.npc[index6].dontCountMe && (double) (Main.npc[index6].Center - Main.player[Main.myPlayer].Center).Length() < (double) num9)
|
|
++Main.player[Main.myPlayer].accThirdEyeNumber;
|
|
}
|
|
}
|
|
else
|
|
--Main.player[Main.myPlayer].accThirdEyeCounter;
|
|
str1 = Main.player[Main.myPlayer].accThirdEyeNumber != (byte) 0 ? (Main.player[Main.myPlayer].accThirdEyeNumber != (byte) 1 ? Language.GetTextValue("GameUI.EnemiesNearby", (object) Main.player[Main.myPlayer].accThirdEyeNumber) : Language.GetTextValue("GameUI.OneEnemyNearby")) : Language.GetTextValue("GameUI.NoEnemiesNearby");
|
|
}
|
|
else if (Main.player[Main.myPlayer].accJarOfSouls && !flag7 && (!Main.player[Main.myPlayer].hideInfo[6] || Main.playerInventory))
|
|
{
|
|
flag7 = true;
|
|
index1 = 6;
|
|
str2 = Lang.inter[101].Value;
|
|
int lastCreatureHit = Main.player[Main.myPlayer].lastCreatureHit;
|
|
str1 = lastCreatureHit > 0 ? Lang.GetNPCNameValue(Item.BannerToNPC(lastCreatureHit)) + ": " + (object) NPC.killCount[lastCreatureHit] : Language.GetTextValue("GameUI.NoKillCount");
|
|
}
|
|
else if (Main.player[Main.myPlayer].accDreamCatcher && !flag12 && (!Main.player[Main.myPlayer].hideInfo[12] || Main.playerInventory))
|
|
{
|
|
index1 = 12;
|
|
str2 = Lang.inter[106].Value;
|
|
Main.player[Main.myPlayer].checkDPSTime();
|
|
int dps = Main.player[Main.myPlayer].getDPS();
|
|
flag12 = true;
|
|
str1 = dps != 0 ? Language.GetTextValue("GameUI.DPS", (object) Main.player[Main.myPlayer].getDPS()) : Language.GetTextValue("GameUI.NoDPS");
|
|
}
|
|
else if (Main.player[Main.myPlayer].accStopwatch && !flag9 && (!Main.player[Main.myPlayer].hideInfo[9] || Main.playerInventory))
|
|
{
|
|
index1 = 9;
|
|
str2 = Lang.inter[103].Value;
|
|
Vector2 vector2 = Main.player[Main.myPlayer].velocity + Main.player[Main.myPlayer].instantMovementAccumulatedThisFrame;
|
|
if (Main.player[Main.myPlayer].mount.Active && Main.player[Main.myPlayer].mount.IsConsideredASlimeMount && (double) Main.player[Main.myPlayer].velocity.Y != 0.0 && !Main.player[Main.myPlayer].SlimeDontHyperJump)
|
|
vector2.Y += Main.player[Main.myPlayer].velocity.Y;
|
|
int num10 = (int) (1.0 + (double) vector2.Length() * 6.0);
|
|
if (num10 > Main.player[Main.myPlayer].speedSlice.Length)
|
|
num10 = Main.player[Main.myPlayer].speedSlice.Length;
|
|
float num11 = 0.0f;
|
|
for (int index7 = num10 - 1; index7 > 0; --index7)
|
|
Main.player[Main.myPlayer].speedSlice[index7] = Main.player[Main.myPlayer].speedSlice[index7 - 1];
|
|
Main.player[Main.myPlayer].speedSlice[0] = vector2.Length();
|
|
for (int index8 = 0; index8 < Main.player[Main.myPlayer].speedSlice.Length; ++index8)
|
|
{
|
|
if (index8 < num10)
|
|
num11 += Main.player[Main.myPlayer].speedSlice[index8];
|
|
else
|
|
Main.player[Main.myPlayer].speedSlice[index8] = num11 / (float) num10;
|
|
}
|
|
float num12 = num11 / (float) num10;
|
|
int num13 = 42240;
|
|
int num14 = 216000;
|
|
float num15 = num12 * (float) num14 / (float) num13;
|
|
if (!Main.player[Main.myPlayer].merman && !Main.player[Main.myPlayer].ignoreWater)
|
|
{
|
|
if (Main.player[Main.myPlayer].honeyWet)
|
|
num15 /= 4f;
|
|
else if (Main.player[Main.myPlayer].wet)
|
|
num15 /= 2f;
|
|
}
|
|
str1 = Language.GetTextValue("GameUI.Speed", (object) Math.Round((double) num15));
|
|
flag9 = true;
|
|
}
|
|
else if (Main.player[Main.myPlayer].accCompass > 0 && !flag3 && (!Main.player[Main.myPlayer].hideInfo[3] || Main.playerInventory))
|
|
{
|
|
index1 = 3;
|
|
str2 = Lang.inter[98].Value;
|
|
int num16 = (int) (((double) Main.player[Main.myPlayer].position.X + (double) (Main.player[Main.myPlayer].width / 2)) * 2.0 / 16.0 - (double) Main.maxTilesX);
|
|
str1 = num16 <= 0 ? (num16 >= 0 ? Language.GetTextValue("GameUI.CompassCenter") : Language.GetTextValue("GameUI.CompassWest", (object) -num16)) : Language.GetTextValue("GameUI.CompassEast", (object) num16);
|
|
flag3 = true;
|
|
}
|
|
else if (Main.player[Main.myPlayer].accDepthMeter > 0 && !flag2 && (!Main.player[Main.myPlayer].hideInfo[4] || Main.playerInventory))
|
|
{
|
|
index1 = 4;
|
|
str2 = Lang.inter[99].Value;
|
|
int num17 = (int) (((double) Main.player[Main.myPlayer].position.Y + (double) Main.player[Main.myPlayer].height) * 2.0 / 16.0 - Main.worldSurface * 2.0);
|
|
float num18 = (float) (Main.maxTilesX / 4200);
|
|
float num19 = num18 * num18;
|
|
int num20 = 1200;
|
|
float num21 = (float) (((double) Main.player[Main.myPlayer].Center.Y / 16.0 - (65.0 + 10.0 * (double) num19)) / (Main.worldSurface / 5.0));
|
|
string str4 = (double) Main.player[Main.myPlayer].position.Y <= (double) ((Main.maxTilesY - 204) * 16) ? ((double) Main.player[Main.myPlayer].position.Y <= Main.rockLayer * 16.0 + (double) (num20 / 2) + 16.0 ? (num17 <= 0 ? ((double) num21 < 1.0 ? Language.GetTextValue("GameUI.LayerSpace") : Language.GetTextValue("GameUI.LayerSurface")) : Language.GetTextValue("GameUI.LayerUnderground")) : Language.GetTextValue("GameUI.LayerCaverns")) : Language.GetTextValue("GameUI.LayerUnderworld");
|
|
int num22 = Math.Abs(num17);
|
|
str1 = (num22 != 0 ? Language.GetTextValue("GameUI.Depth", (object) num22) : Language.GetTextValue("GameUI.DepthLevel")) + " " + str4;
|
|
flag2 = true;
|
|
}
|
|
if (str1 != "")
|
|
{
|
|
int X;
|
|
int Y;
|
|
Main.GetInfoAccIconPosition(drawnCount, StartX, out X, out Y);
|
|
if (index1 >= 0)
|
|
{
|
|
++drawnCount;
|
|
int num23 = 22;
|
|
if (Main.screenHeight < 650)
|
|
num23 = 20;
|
|
Vector2 position = new Vector2((float) X, (float) (Y + 74 + num23 * index2 + 52));
|
|
int index9 = index1;
|
|
if (index9 == 8)
|
|
index9 = 7;
|
|
Microsoft.Xna.Framework.Color color = Microsoft.Xna.Framework.Color.White;
|
|
bool flag14 = false;
|
|
if (Main.playerInventory)
|
|
{
|
|
position = new Vector2((float) X, (float) Y);
|
|
if ((double) Main.mouseX >= (double) position.X && (double) Main.mouseY >= (double) position.Y && (double) Main.mouseX <= (double) position.X + (double) TextureAssets.InfoIcon[index1].Width() && (double) Main.mouseY <= (double) position.Y + (double) TextureAssets.InfoIcon[index1].Height() && !PlayerInput.IgnoreMouseInterface)
|
|
{
|
|
flag14 = true;
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
if (Main.mouseLeft && Main.mouseLeftRelease)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
Main.mouseLeftRelease = false;
|
|
Main.player[Main.myPlayer].hideInfo[index9] = !Main.player[Main.myPlayer].hideInfo[index9];
|
|
}
|
|
if (!Main.mouseText)
|
|
{
|
|
cursorText = str2;
|
|
Main.mouseText = true;
|
|
}
|
|
}
|
|
if (Main.player[Main.myPlayer].hideInfo[index9])
|
|
color = new Microsoft.Xna.Framework.Color(80, 80, 80, 70);
|
|
}
|
|
else if ((double) Main.mouseX >= (double) position.X && (double) Main.mouseY >= (double) position.Y && (double) Main.mouseX <= (double) position.X + (double) TextureAssets.InfoIcon[index1].Width() && (double) Main.mouseY <= (double) position.Y + (double) TextureAssets.InfoIcon[index1].Height() && !Main.mouseText)
|
|
{
|
|
num1 = index2;
|
|
cursorText = str2;
|
|
Main.mouseText = true;
|
|
}
|
|
UILinkPointNavigator.SetPosition(1558 + drawnCount - 1, position + TextureAssets.InfoIcon[index1].Value.Size() * 0.75f);
|
|
Main.spriteBatch.Draw(TextureAssets.InfoIcon[index1].Value, position, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.InfoIcon[index1].Width(), TextureAssets.InfoIcon[index1].Height())), color, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
if (flag14)
|
|
Main.spriteBatch.Draw(TextureAssets.InfoIcon[13].Value, position - Vector2.One * 2f, new Microsoft.Xna.Framework.Rectangle?(), Main.OurFavoriteColor, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
X += 20;
|
|
}
|
|
UILinkPointNavigator.Shortcuts.INFOACCCOUNT = drawnCount;
|
|
if (!Main.playerInventory)
|
|
{
|
|
Vector2 vector2_1 = new Vector2(1f);
|
|
Vector2 vector2_2 = FontAssets.MouseText.Value.MeasureString(str1);
|
|
if ((double) vector2_2.X > (double) num2)
|
|
vector2_1.X = num2 / vector2_2.X;
|
|
if ((double) vector2_1.X < 0.579999983310699)
|
|
vector2_1.Y = (float) (1.0 - (double) vector2_1.X / 3.0);
|
|
for (int index10 = 0; index10 < 5; ++index10)
|
|
{
|
|
int num24 = 0;
|
|
int num25 = 0;
|
|
Microsoft.Xna.Framework.Color color = Microsoft.Xna.Framework.Color.Black;
|
|
if (index10 == 0)
|
|
num24 = -2;
|
|
if (index10 == 1)
|
|
num24 = 2;
|
|
if (index10 == 2)
|
|
num25 = -2;
|
|
if (index10 == 3)
|
|
num25 = 2;
|
|
if (index10 == 4)
|
|
color = new Microsoft.Xna.Framework.Color((int) Main.mouseTextColor, (int) Main.mouseTextColor, (int) Main.mouseTextColor, (int) Main.mouseTextColor);
|
|
if (index2 > num1 && index2 < num1 + 2)
|
|
color = new Microsoft.Xna.Framework.Color((int) color.R / 3, (int) color.G / 3, (int) color.B / 3, (int) color.A / 3);
|
|
int num26 = 22;
|
|
if (Main.screenHeight < 650)
|
|
num26 = 20;
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.MouseText.Value, str1, new Vector2((float) (X + num24), (float) (Y + 74 + num26 * index2 + num25 + 48)), color, 0.0f, new Vector2(), vector2_1, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (string.IsNullOrEmpty(cursorText))
|
|
return;
|
|
if (Main.playerInventory)
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
this.MouseText(cursorText);
|
|
}
|
|
|
|
private static void GetInfoAccIconPosition(int drawnCount, int StartX, out int X, out int Y)
|
|
{
|
|
if (!Main.playerInventory)
|
|
{
|
|
X = Main.screenWidth - 280;
|
|
Y = -32;
|
|
if (Main.mapStyle == 1 && Main.mapEnabled)
|
|
Y += 261;
|
|
}
|
|
else if (Main.ShouldDrawInfoIconsHorizontally)
|
|
{
|
|
X = Main.screenWidth - 280 + 20 * drawnCount - 10;
|
|
Y = 94;
|
|
if (Main.mapStyle == 1 && Main.mapEnabled)
|
|
Y += 261;
|
|
}
|
|
else
|
|
{
|
|
int num = (int) (52.0 * (double) Main.inventoryScale);
|
|
X = 697 - num * 4 + Main.screenWidth - 800 + 20 * (drawnCount % 2);
|
|
Y = 114 + Main.mH + num * 7 + num / 2 + 20 * (drawnCount / 2) + 8 * (drawnCount / 4) - 20;
|
|
if (Main.EquipPage == 2)
|
|
{
|
|
X += num + num / 2;
|
|
Y -= num;
|
|
}
|
|
}
|
|
X += StartX;
|
|
}
|
|
|
|
private void DrawBuilderAccToggles(Vector2 start)
|
|
{
|
|
if (!Main.playerInventory)
|
|
return;
|
|
string.IsNullOrEmpty(Main.npcChatText);
|
|
if (Main.player[Main.myPlayer].sign >= 0)
|
|
return;
|
|
int num1 = 0;
|
|
Player plr = Main.player[Main.myPlayer];
|
|
int[] builderAccStatus = Main.player[Main.myPlayer].builderAccStatus;
|
|
int blockReplaceIcons;
|
|
int torchGodIcons;
|
|
int totalDrawnIcons;
|
|
Main.GetBuilderAccsCountToShow(plr, out blockReplaceIcons, out torchGodIcons, out totalDrawnIcons);
|
|
start.Y += (float) (24 * torchGodIcons);
|
|
bool pushSideToolsUp = totalDrawnIcons >= 10;
|
|
int num2 = 10;
|
|
for (int index1 = 0; index1 < num2; ++index1)
|
|
{
|
|
int index2 = index1 - 2;
|
|
switch (index1)
|
|
{
|
|
case 0:
|
|
index2 = 8;
|
|
break;
|
|
case 1:
|
|
index2 = 9;
|
|
break;
|
|
}
|
|
Texture2D texture = TextureAssets.BuilderAcc.Value;
|
|
Microsoft.Xna.Framework.Rectangle r = new Microsoft.Xna.Framework.Rectangle(0, 16, 14, 14);
|
|
Microsoft.Xna.Framework.Color color = Microsoft.Xna.Framework.Color.White;
|
|
Microsoft.Xna.Framework.Color firstColor = new Microsoft.Xna.Framework.Color((int) sbyte.MaxValue, (int) sbyte.MaxValue, (int) sbyte.MaxValue);
|
|
Vector2 vector2 = start + new Vector2(0.0f, (float) (num1 * 24));
|
|
if (pushSideToolsUp)
|
|
vector2.Y -= 24f;
|
|
bool flag1 = Utils.CenteredRectangle(vector2, new Vector2(14f)).Contains(Main.MouseScreen.ToPoint()) && !PlayerInput.IgnoreMouseInterface;
|
|
bool flag2 = flag1 && Main.mouseLeft && Main.mouseLeftRelease;
|
|
switch (index2)
|
|
{
|
|
case 0:
|
|
if (plr.rulerLine)
|
|
{
|
|
r.X = index2 * 16;
|
|
color = builderAccStatus[index2] == 0 ? color : firstColor;
|
|
if (flag1)
|
|
{
|
|
plr.mouseInterface = true;
|
|
this.MouseText(builderAccStatus[index2] == 0 ? Language.GetTextValue("GameUI.RulerOn") : Language.GetTextValue("GameUI.RulerOff"));
|
|
Main.mouseText = true;
|
|
}
|
|
if (flag2)
|
|
{
|
|
builderAccStatus[index2] = builderAccStatus[index2] == 0 ? 1 : 0;
|
|
SoundEngine.PlaySound(12);
|
|
Main.mouseLeftRelease = false;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
continue;
|
|
case 1:
|
|
if (plr.rulerGrid)
|
|
{
|
|
r.X = index2 * 16;
|
|
color = builderAccStatus[index2] == 0 ? color : firstColor;
|
|
if (flag1)
|
|
{
|
|
plr.mouseInterface = true;
|
|
this.MouseText(builderAccStatus[index2] == 0 ? Language.GetTextValue("GameUI.MechanicalRulerOn") : Language.GetTextValue("GameUI.MechanicalRulerOff"));
|
|
Main.mouseText = true;
|
|
}
|
|
if (flag2)
|
|
{
|
|
builderAccStatus[index2] = builderAccStatus[index2] == 0 ? 1 : 0;
|
|
SoundEngine.PlaySound(12);
|
|
Main.mouseLeftRelease = false;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
continue;
|
|
case 2:
|
|
if (plr.autoActuator)
|
|
{
|
|
r.X = index2 * 16;
|
|
color = builderAccStatus[index2] == 0 ? color : firstColor;
|
|
if (flag1)
|
|
{
|
|
plr.mouseInterface = true;
|
|
this.MouseText(builderAccStatus[index2] == 0 ? Language.GetTextValue("GameUI.ActuationDeviceOn") : Language.GetTextValue("GameUI.ActuationDeviceOff"));
|
|
Main.mouseText = true;
|
|
}
|
|
if (flag2)
|
|
{
|
|
builderAccStatus[index2] = builderAccStatus[index2] == 0 ? 1 : 0;
|
|
SoundEngine.PlaySound(12);
|
|
Main.mouseLeftRelease = false;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
continue;
|
|
case 3:
|
|
if (plr.autoPaint)
|
|
{
|
|
r.X = index2 * 16;
|
|
color = builderAccStatus[index2] == 0 ? color : firstColor;
|
|
if (flag1)
|
|
{
|
|
plr.mouseInterface = true;
|
|
this.MouseText(builderAccStatus[index2] == 0 ? Language.GetTextValue("GameUI.PaintSprayerOn") : Language.GetTextValue("GameUI.PaintSprayerOff"));
|
|
Main.mouseText = true;
|
|
}
|
|
if (flag2)
|
|
{
|
|
builderAccStatus[index2] = builderAccStatus[index2] == 0 ? 1 : 0;
|
|
SoundEngine.PlaySound(12);
|
|
Main.mouseLeftRelease = false;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
continue;
|
|
case 4:
|
|
case 5:
|
|
case 6:
|
|
case 7:
|
|
case 9:
|
|
if (plr.InfoAccMechShowWires)
|
|
{
|
|
r.X = index2 * 16;
|
|
color = builderAccStatus[index2] == 0 ? color : (builderAccStatus[index2] == 1 ? firstColor : (builderAccStatus[index2] == 2 ? firstColor.MultiplyRGBA(new Microsoft.Xna.Framework.Color(0.66f, 0.66f, 0.66f, 0.66f)) : firstColor.MultiplyRGBA(new Microsoft.Xna.Framework.Color(0.33f, 0.33f, 0.33f, 0.33f))));
|
|
if (flag1)
|
|
{
|
|
plr.mouseInterface = true;
|
|
string str1 = "";
|
|
switch (index2)
|
|
{
|
|
case 4:
|
|
str1 = Language.GetTextValue("Game.RedWires");
|
|
break;
|
|
case 5:
|
|
str1 = Language.GetTextValue("Game.BlueWires");
|
|
break;
|
|
case 6:
|
|
str1 = Language.GetTextValue("Game.GreenWires");
|
|
break;
|
|
case 7:
|
|
str1 = Language.GetTextValue("Game.YellowWires");
|
|
break;
|
|
case 9:
|
|
str1 = Language.GetTextValue("Game.Actuators");
|
|
break;
|
|
}
|
|
string str2 = "";
|
|
switch (builderAccStatus[index2])
|
|
{
|
|
case 0:
|
|
str2 = Language.GetTextValue("GameUI.Bright");
|
|
break;
|
|
case 1:
|
|
str2 = Language.GetTextValue("GameUI.Normal");
|
|
break;
|
|
case 2:
|
|
str2 = Language.GetTextValue("GameUI.Faded");
|
|
break;
|
|
case 3:
|
|
str2 = Language.GetTextValue("GameUI.Hidden");
|
|
break;
|
|
}
|
|
this.MouseText(string.Format("{0}: {1}", (object) str1, (object) str2));
|
|
Main.mouseText = true;
|
|
}
|
|
if (flag2)
|
|
{
|
|
builderAccStatus[index2] = builderAccStatus[index2] + 1;
|
|
if (builderAccStatus[index2] >= 3)
|
|
builderAccStatus[index2] = 0;
|
|
SoundEngine.PlaySound(12);
|
|
Main.mouseLeftRelease = false;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
continue;
|
|
case 8:
|
|
if (plr.InfoAccMechShowWires)
|
|
{
|
|
r.X = index2 * 16;
|
|
color = builderAccStatus[index2] == 0 ? color : firstColor;
|
|
if (flag1)
|
|
{
|
|
plr.mouseInterface = true;
|
|
this.MouseText(builderAccStatus[index2] == 0 ? Language.GetTextValue("GameUI.WireModeForced") : Language.GetTextValue("GameUI.WireModeNormal"));
|
|
Main.mouseText = true;
|
|
}
|
|
if (flag2)
|
|
{
|
|
builderAccStatus[index2] = builderAccStatus[index2] == 0 ? 1 : 0;
|
|
SoundEngine.PlaySound(12);
|
|
Main.mouseLeftRelease = false;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
continue;
|
|
case 11:
|
|
continue;
|
|
}
|
|
Main.spriteBatch.Draw(texture, vector2, new Microsoft.Xna.Framework.Rectangle?(r), color, 0.0f, r.Size() / 2f, 1f, SpriteEffects.None, 0.0f);
|
|
if (flag1)
|
|
Main.spriteBatch.Draw(TextureAssets.InfoIcon[13].Value, vector2, new Microsoft.Xna.Framework.Rectangle?(), Main.OurFavoriteColor, 0.0f, TextureAssets.InfoIcon[13].Value.Size() / 2f, 1f, SpriteEffects.None, 0.0f);
|
|
UILinkPointNavigator.SetPosition(6000 + num1 + blockReplaceIcons + torchGodIcons, vector2 + r.Size() * 0.15f);
|
|
++num1;
|
|
}
|
|
this.DrawBlockReplacementIcon(0, 0, pushSideToolsUp, 0);
|
|
int num3 = num1 + 1;
|
|
if (plr.unlockedBiomeTorches)
|
|
{
|
|
this.DrawTorchBiomeSwapIcon(0, 0, pushSideToolsUp, 0);
|
|
++num3;
|
|
}
|
|
UILinkPointNavigator.Shortcuts.BUILDERACCCOUNT = num3;
|
|
}
|
|
|
|
private static void GetBuilderAccsCountToShow(
|
|
Player plr,
|
|
out int blockReplaceIcons,
|
|
out int torchGodIcons,
|
|
out int totalDrawnIcons)
|
|
{
|
|
blockReplaceIcons = 1;
|
|
torchGodIcons = plr.unlockedBiomeTorches ? 1 : 0;
|
|
totalDrawnIcons = plr.InfoAccMechShowWires.ToInt() * 6 + plr.rulerLine.ToInt() + plr.rulerGrid.ToInt() + plr.autoActuator.ToInt() + plr.autoPaint.ToInt() + blockReplaceIcons + torchGodIcons;
|
|
}
|
|
|
|
public static void CheckInvasionProgressDisplay()
|
|
{
|
|
if (Main.invasionProgressMode != 2)
|
|
{
|
|
Main.invasionProgressNearInvasion = false;
|
|
}
|
|
else
|
|
{
|
|
bool flag = false;
|
|
Player player = Main.player[Main.myPlayer];
|
|
Microsoft.Xna.Framework.Rectangle rectangle1 = new Microsoft.Xna.Framework.Rectangle((int) Main.screenPosition.X, (int) Main.screenPosition.Y, Main.screenWidth, Main.screenHeight);
|
|
int num = 5000;
|
|
int icon = 0;
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active)
|
|
{
|
|
icon = 0;
|
|
switch (Main.npc[index].type)
|
|
{
|
|
case 26:
|
|
case 27:
|
|
case 28:
|
|
case 29:
|
|
case 111:
|
|
icon = 4;
|
|
break;
|
|
case 143:
|
|
case 144:
|
|
case 145:
|
|
icon = 5;
|
|
break;
|
|
case 212:
|
|
case 213:
|
|
case 214:
|
|
case 215:
|
|
case 216:
|
|
case 491:
|
|
icon = 6;
|
|
break;
|
|
case 305:
|
|
case 306:
|
|
case 307:
|
|
case 308:
|
|
case 309:
|
|
case 310:
|
|
case 311:
|
|
case 312:
|
|
case 313:
|
|
case 314:
|
|
case 315:
|
|
case 325:
|
|
case 326:
|
|
case 327:
|
|
case 329:
|
|
case 330:
|
|
icon = 2;
|
|
break;
|
|
case 338:
|
|
case 339:
|
|
case 340:
|
|
case 341:
|
|
case 342:
|
|
case 343:
|
|
case 344:
|
|
case 345:
|
|
case 346:
|
|
case 347:
|
|
case 348:
|
|
case 349:
|
|
case 350:
|
|
icon = 1;
|
|
break;
|
|
case 381:
|
|
case 382:
|
|
case 383:
|
|
case 385:
|
|
case 386:
|
|
case 388:
|
|
case 389:
|
|
case 390:
|
|
case 391:
|
|
case 395:
|
|
icon = 7;
|
|
break;
|
|
case 548:
|
|
case 549:
|
|
case 551:
|
|
case 552:
|
|
case 553:
|
|
case 554:
|
|
case 555:
|
|
case 556:
|
|
case 557:
|
|
case 558:
|
|
case 559:
|
|
case 560:
|
|
case 561:
|
|
case 562:
|
|
case 563:
|
|
case 564:
|
|
case 565:
|
|
case 568:
|
|
case 569:
|
|
case 570:
|
|
case 571:
|
|
case 572:
|
|
case 573:
|
|
case 574:
|
|
case 575:
|
|
case 576:
|
|
case 577:
|
|
case 578:
|
|
icon = 3;
|
|
break;
|
|
}
|
|
if (icon != 0 && (icon != 1 || (double) player.position.Y <= Main.worldSurface * 16.0 && !Main.dayTime && Main.snowMoon) && (icon != 2 || (double) player.position.Y <= Main.worldSurface * 16.0 && !Main.dayTime && Main.pumpkinMoon) && (icon != 3 || DD2Event.Ongoing) && (icon <= 3 || (double) player.position.Y <= Main.worldSurface * 16.0 && Main.invasionType == icon - 3))
|
|
{
|
|
Microsoft.Xna.Framework.Rectangle rectangle2 = new Microsoft.Xna.Framework.Rectangle((int) ((double) Main.npc[index].position.X + (double) (Main.npc[index].width / 2)) - num, (int) ((double) Main.npc[index].position.Y + (double) (Main.npc[index].height / 2)) - num, num * 2, num * 2);
|
|
if (rectangle1.Intersects(rectangle2))
|
|
{
|
|
flag = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
Main.invasionProgressNearInvasion = flag;
|
|
if (!flag || Main.invasionProgressIcon != 0)
|
|
return;
|
|
int waveNumber = NPC.waveNumber;
|
|
if (Main.snowMoon)
|
|
{
|
|
int progressMax = new int[21]
|
|
{
|
|
0,
|
|
25,
|
|
15,
|
|
10,
|
|
30,
|
|
100,
|
|
160,
|
|
180,
|
|
200,
|
|
250,
|
|
300,
|
|
375,
|
|
450,
|
|
525,
|
|
675,
|
|
850,
|
|
1025,
|
|
1325,
|
|
1550,
|
|
2000,
|
|
0
|
|
}[waveNumber];
|
|
Main.ReportInvasionProgress((int) NPC.waveKills, progressMax, 1, waveNumber);
|
|
}
|
|
else if (Main.pumpkinMoon)
|
|
{
|
|
int progressMax = new int[16]
|
|
{
|
|
0,
|
|
25,
|
|
40,
|
|
50,
|
|
80,
|
|
100,
|
|
160,
|
|
180,
|
|
200,
|
|
250,
|
|
300,
|
|
375,
|
|
450,
|
|
525,
|
|
675,
|
|
0
|
|
}[waveNumber];
|
|
Main.ReportInvasionProgress((int) NPC.waveKills, progressMax, 2, waveNumber);
|
|
}
|
|
else if (DD2Event.Ongoing)
|
|
{
|
|
DD2Event.ReportEventProgress();
|
|
}
|
|
else
|
|
{
|
|
int progressMax = 1;
|
|
if (Main.invasionType != 0 && Main.invasionSizeStart != 0)
|
|
progressMax = Main.invasionSizeStart;
|
|
Main.ReportInvasionProgress(Main.invasionSizeStart - Main.invasionSize, progressMax, icon, 0);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void SyncAnInvasion(int toWho)
|
|
{
|
|
int waveNumber = NPC.waveNumber;
|
|
if (Main.snowMoon)
|
|
{
|
|
int num = new int[21]
|
|
{
|
|
0,
|
|
25,
|
|
15,
|
|
10,
|
|
30,
|
|
100,
|
|
160,
|
|
180,
|
|
200,
|
|
250,
|
|
300,
|
|
375,
|
|
450,
|
|
525,
|
|
675,
|
|
850,
|
|
1025,
|
|
1325,
|
|
1550,
|
|
2000,
|
|
0
|
|
}[waveNumber];
|
|
NetMessage.SendData(78, toWho, number: ((int) NPC.waveKills), number2: ((float) num), number3: 1f, number4: ((float) waveNumber));
|
|
}
|
|
else if (Main.pumpkinMoon)
|
|
{
|
|
int num = new int[16]
|
|
{
|
|
0,
|
|
25,
|
|
40,
|
|
50,
|
|
80,
|
|
100,
|
|
160,
|
|
180,
|
|
200,
|
|
250,
|
|
300,
|
|
375,
|
|
450,
|
|
525,
|
|
675,
|
|
0
|
|
}[waveNumber];
|
|
NetMessage.SendData(78, toWho, number: ((int) NPC.waveKills), number2: ((float) num), number3: 2f, number4: ((float) waveNumber));
|
|
}
|
|
else if (DD2Event.Ongoing)
|
|
{
|
|
DD2Event.SyncInvasionProgress(toWho);
|
|
}
|
|
else
|
|
{
|
|
if (Main.invasionType <= 0)
|
|
return;
|
|
int num = 1;
|
|
if (Main.invasionType != 0 && Main.invasionSizeStart != 0)
|
|
num = Main.invasionSizeStart;
|
|
NetMessage.SendData(78, toWho, number: (Main.invasionSizeStart - Main.invasionSize), number2: ((float) num), number3: ((float) (Main.invasionType + 3)));
|
|
}
|
|
}
|
|
|
|
public static void ReportInvasionProgress(
|
|
int progress,
|
|
int progressMax,
|
|
int icon,
|
|
int progressWave)
|
|
{
|
|
Main.invasionProgress = progress;
|
|
Main.invasionProgressMax = progressMax;
|
|
Main.invasionProgressIcon = icon;
|
|
Main.invasionProgressWave = progressWave;
|
|
Main.invasionProgressDisplayLeft = 160;
|
|
}
|
|
|
|
public static void DrawInvasionProgress()
|
|
{
|
|
if (Main.invasionProgress == -1)
|
|
return;
|
|
if (Main.invasionProgressMode == 2 && Main.invasionProgressNearInvasion && Main.invasionProgressDisplayLeft < 160)
|
|
Main.invasionProgressDisplayLeft = 160;
|
|
if (!Main.gamePaused && Main.invasionProgressDisplayLeft > 0)
|
|
--Main.invasionProgressDisplayLeft;
|
|
if (Main.invasionProgressDisplayLeft > 0)
|
|
Main.invasionProgressAlpha += 0.05f;
|
|
else
|
|
Main.invasionProgressAlpha -= 0.05f;
|
|
if (Main.invasionProgressMode == 0)
|
|
{
|
|
Main.invasionProgressDisplayLeft = 0;
|
|
Main.invasionProgressAlpha = 0.0f;
|
|
}
|
|
if ((double) Main.invasionProgressAlpha < 0.0)
|
|
Main.invasionProgressAlpha = 0.0f;
|
|
if ((double) Main.invasionProgressAlpha > 1.0)
|
|
Main.invasionProgressAlpha = 1f;
|
|
if ((double) Main.invasionProgressAlpha <= 0.0)
|
|
return;
|
|
float scale1 = (float) (0.5 + (double) Main.invasionProgressAlpha * 0.5);
|
|
Texture2D texture1 = TextureAssets.Extra[9].Value;
|
|
string text = "";
|
|
Microsoft.Xna.Framework.Color c = Microsoft.Xna.Framework.Color.White;
|
|
switch (Main.invasionProgressIcon)
|
|
{
|
|
case 1:
|
|
texture1 = TextureAssets.Extra[8].Value;
|
|
text = Lang.inter[83].Value;
|
|
c = new Microsoft.Xna.Framework.Color(64, 109, 164) * 0.5f;
|
|
break;
|
|
case 2:
|
|
texture1 = TextureAssets.Extra[12].Value;
|
|
text = Lang.inter[84].Value;
|
|
c = new Microsoft.Xna.Framework.Color(112, 86, 114) * 0.5f;
|
|
break;
|
|
case 3:
|
|
texture1 = TextureAssets.Extra[79].Value;
|
|
text = Language.GetTextValue("DungeonDefenders2.InvasionProgressTitle");
|
|
c = new Microsoft.Xna.Framework.Color(88, 0, 160) * 0.5f;
|
|
break;
|
|
case 4:
|
|
texture1 = TextureAssets.Extra[9].Value;
|
|
text = Lang.inter[88].Value;
|
|
c = new Microsoft.Xna.Framework.Color(94, 72, 131) * 0.5f;
|
|
break;
|
|
case 5:
|
|
texture1 = TextureAssets.Extra[7].Value;
|
|
text = Lang.inter[87].Value;
|
|
c = new Microsoft.Xna.Framework.Color(173, 135, 140) * 0.5f;
|
|
break;
|
|
case 6:
|
|
texture1 = TextureAssets.Extra[11].Value;
|
|
text = Lang.inter[86].Value;
|
|
c = new Microsoft.Xna.Framework.Color(148, 122, 72) * 0.5f;
|
|
break;
|
|
case 7:
|
|
texture1 = TextureAssets.Extra[10].Value;
|
|
text = Lang.inter[85].Value;
|
|
c = new Microsoft.Xna.Framework.Color(165, 160, 155) * 0.5f;
|
|
break;
|
|
}
|
|
if (Main.invasionProgressWave > 0)
|
|
{
|
|
int width = (int) (200.0 * (double) scale1);
|
|
int height = (int) (45.0 * (double) scale1);
|
|
Vector2 position1 = new Vector2((float) (Main.screenWidth - 120), (float) (Main.screenHeight - 40));
|
|
Microsoft.Xna.Framework.Rectangle R = new Microsoft.Xna.Framework.Rectangle((int) position1.X - width / 2, (int) position1.Y - height / 2, width, height);
|
|
Utils.DrawInvBG(Main.spriteBatch, R, new Microsoft.Xna.Framework.Color(63, 65, 151, (int) byte.MaxValue) * 0.785f);
|
|
string str = Main.invasionProgressMax != 0 ? ((int) ((double) Main.invasionProgress * 100.0 / (double) Main.invasionProgressMax)).ToString() + "%" : Language.GetTextValue("Game.InvasionPoints", (object) Main.invasionProgress);
|
|
string textValue = Language.GetTextValue("Game.WaveMessage", (object) Main.invasionProgressWave, (object) str);
|
|
Texture2D texture2 = TextureAssets.ColorBar.Value;
|
|
Texture2D texture2D = TextureAssets.ColorBlip.Value;
|
|
float num1 = MathHelper.Clamp((float) Main.invasionProgress / (float) Main.invasionProgressMax, 0.0f, 1f);
|
|
if (Main.invasionProgressMax == 0)
|
|
num1 = 1f;
|
|
float num2 = 169f * scale1;
|
|
float y = 8f * scale1;
|
|
Vector2 pos = position1 + Vector2.UnitY * y + Vector2.UnitX * 1f;
|
|
Utils.DrawBorderString(Main.spriteBatch, textValue, pos, Microsoft.Xna.Framework.Color.White * Main.invasionProgressAlpha, scale1, 0.5f, 1f);
|
|
Main.spriteBatch.Draw(texture2, position1, new Microsoft.Xna.Framework.Rectangle?(), Microsoft.Xna.Framework.Color.White * Main.invasionProgressAlpha, 0.0f, new Vector2((float) (texture2.Width / 2), 0.0f), scale1, SpriteEffects.None, 0.0f);
|
|
Vector2 position2 = pos + Vector2.UnitX * (num1 - 0.5f) * num2;
|
|
Main.spriteBatch.Draw(TextureAssets.MagicPixel.Value, position2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, 1, 1)), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, 241, 51) * Main.invasionProgressAlpha, 0.0f, new Vector2(1f, 0.5f), new Vector2(num2 * num1, y), SpriteEffects.None, 0.0f);
|
|
Main.spriteBatch.Draw(TextureAssets.MagicPixel.Value, position2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, 1, 1)), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, 165, 0, (int) sbyte.MaxValue) * Main.invasionProgressAlpha, 0.0f, new Vector2(1f, 0.5f), new Vector2(2f, y), SpriteEffects.None, 0.0f);
|
|
Main.spriteBatch.Draw(TextureAssets.MagicPixel.Value, position2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, 1, 1)), Microsoft.Xna.Framework.Color.Black * Main.invasionProgressAlpha, 0.0f, new Vector2(0.0f, 0.5f), new Vector2(num2 * (1f - num1), y), SpriteEffects.None, 0.0f);
|
|
}
|
|
else
|
|
{
|
|
int width = (int) (200.0 * (double) scale1);
|
|
int height = (int) (45.0 * (double) scale1);
|
|
Vector2 position3 = new Vector2((float) (Main.screenWidth - 120), (float) (Main.screenHeight - 40));
|
|
Microsoft.Xna.Framework.Rectangle R = new Microsoft.Xna.Framework.Rectangle((int) position3.X - width / 2, (int) position3.Y - height / 2, width, height);
|
|
Utils.DrawInvBG(Main.spriteBatch, R, new Microsoft.Xna.Framework.Color(63, 65, 151, (int) byte.MaxValue) * 0.785f);
|
|
string textValue = Language.GetTextValue("Game.WaveCleared", Main.invasionProgressMax != 0 ? (object) (((int) ((double) Main.invasionProgress * 100.0 / (double) Main.invasionProgressMax)).ToString() + "%") : (object) Main.invasionProgress.ToString());
|
|
Texture2D texture3 = TextureAssets.ColorBar.Value;
|
|
Texture2D texture2D = TextureAssets.ColorBlip.Value;
|
|
if (Main.invasionProgressMax != 0)
|
|
{
|
|
Main.spriteBatch.Draw(texture3, position3, new Microsoft.Xna.Framework.Rectangle?(), Microsoft.Xna.Framework.Color.White * Main.invasionProgressAlpha, 0.0f, new Vector2((float) (texture3.Width / 2), 0.0f), scale1, SpriteEffects.None, 0.0f);
|
|
float num3 = MathHelper.Clamp((float) Main.invasionProgress / (float) Main.invasionProgressMax, 0.0f, 1f);
|
|
Vector2 vector2_1 = FontAssets.MouseText.Value.MeasureString(textValue);
|
|
float scale2 = scale1;
|
|
if ((double) vector2_1.Y > 22.0)
|
|
scale2 *= 22f / vector2_1.Y;
|
|
float num4 = 169f * scale1;
|
|
float y = 8f * scale1;
|
|
Vector2 vector2_2 = position3 + Vector2.UnitY * y + Vector2.UnitX * 1f;
|
|
Utils.DrawBorderString(Main.spriteBatch, textValue, vector2_2 + new Vector2(0.0f, -4f), Microsoft.Xna.Framework.Color.White * Main.invasionProgressAlpha, scale2, 0.5f, 1f);
|
|
Vector2 position4 = vector2_2 + Vector2.UnitX * (num3 - 0.5f) * num4;
|
|
Main.spriteBatch.Draw(TextureAssets.MagicPixel.Value, position4, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, 1, 1)), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, 241, 51) * Main.invasionProgressAlpha, 0.0f, new Vector2(1f, 0.5f), new Vector2(num4 * num3, y), SpriteEffects.None, 0.0f);
|
|
Main.spriteBatch.Draw(TextureAssets.MagicPixel.Value, position4, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, 1, 1)), new Microsoft.Xna.Framework.Color((int) byte.MaxValue, 165, 0, (int) sbyte.MaxValue) * Main.invasionProgressAlpha, 0.0f, new Vector2(1f, 0.5f), new Vector2(2f, y), SpriteEffects.None, 0.0f);
|
|
Main.spriteBatch.Draw(TextureAssets.MagicPixel.Value, position4, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, 1, 1)), Microsoft.Xna.Framework.Color.Black * Main.invasionProgressAlpha, 0.0f, new Vector2(0.0f, 0.5f), new Vector2(num4 * (1f - num3), y), SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
Vector2 vector2 = FontAssets.MouseText.Value.MeasureString(text);
|
|
float num = 120f;
|
|
if ((double) vector2.X > 200.0)
|
|
num += vector2.X - 200f;
|
|
Microsoft.Xna.Framework.Rectangle rectangle = Utils.CenteredRectangle(new Vector2((float) Main.screenWidth - num, (float) (Main.screenHeight - 80)), (vector2 + new Vector2((float) (texture1.Width + 12), 6f)) * scale1);
|
|
Utils.DrawInvBG(Main.spriteBatch, rectangle, c);
|
|
Main.spriteBatch.Draw(texture1, rectangle.Left() + Vector2.UnitX * scale1 * 8f, new Microsoft.Xna.Framework.Rectangle?(), Microsoft.Xna.Framework.Color.White * Main.invasionProgressAlpha, 0.0f, new Vector2(0.0f, (float) (texture1.Height / 2)), scale1 * 0.8f, SpriteEffects.None, 0.0f);
|
|
Utils.DrawBorderString(Main.spriteBatch, text, rectangle.Right() + Vector2.UnitX * scale1 * -22f, Microsoft.Xna.Framework.Color.White * Main.invasionProgressAlpha, scale1 * 0.9f, 1f, 0.4f);
|
|
}
|
|
|
|
protected void QuitGame()
|
|
{
|
|
Main.SaveSettings();
|
|
SocialAPI.Shutdown();
|
|
this.Exit();
|
|
}
|
|
|
|
protected Microsoft.Xna.Framework.Color randColor()
|
|
{
|
|
int r = 0;
|
|
int g = 0;
|
|
int b;
|
|
for (b = 0; r + b + g <= 150; b = Main.rand.Next(256))
|
|
{
|
|
r = Main.rand.Next(256);
|
|
g = Main.rand.Next(256);
|
|
}
|
|
return new Microsoft.Xna.Framework.Color(r, g, b, (int) byte.MaxValue);
|
|
}
|
|
|
|
public static Microsoft.Xna.Framework.Color hslToRgb(Vector3 hslVector) => Main.hslToRgb(hslVector.X, hslVector.Y, hslVector.Z);
|
|
|
|
public static Microsoft.Xna.Framework.Color hslToRgb(
|
|
float Hue,
|
|
float Saturation,
|
|
float Luminosity)
|
|
{
|
|
byte num1;
|
|
byte num2;
|
|
byte num3;
|
|
if ((double) Saturation == 0.0)
|
|
{
|
|
num1 = (byte) Math.Round((double) Luminosity * (double) byte.MaxValue);
|
|
num2 = (byte) Math.Round((double) Luminosity * (double) byte.MaxValue);
|
|
num3 = (byte) Math.Round((double) Luminosity * (double) byte.MaxValue);
|
|
}
|
|
else
|
|
{
|
|
double num4 = (double) Hue;
|
|
double t2_1 = (double) Luminosity >= 0.5 ? (double) Luminosity + (double) Saturation - (double) Luminosity * (double) Saturation : (double) Luminosity * (1.0 + (double) Saturation);
|
|
double t1_1 = 2.0 * (double) Luminosity - t2_1;
|
|
double c1 = num4 + 1.0 / 3.0;
|
|
double c2 = num4;
|
|
double c3 = num4 - 1.0 / 3.0;
|
|
double num5 = Main.hue2rgb(c1, t1_1, t2_1);
|
|
double num6 = Main.hue2rgb(c2, t1_1, t2_1);
|
|
double t1_2 = t1_1;
|
|
double t2_2 = t2_1;
|
|
double num7 = Main.hue2rgb(c3, t1_2, t2_2);
|
|
num1 = (byte) Math.Round(num5 * (double) byte.MaxValue);
|
|
num2 = (byte) Math.Round(num6 * (double) byte.MaxValue);
|
|
num3 = (byte) Math.Round(num7 * (double) byte.MaxValue);
|
|
}
|
|
return new Microsoft.Xna.Framework.Color((int) num1, (int) num2, (int) num3);
|
|
}
|
|
|
|
public static double hue2rgb(double c, double t1, double t2)
|
|
{
|
|
if (c < 0.0)
|
|
++c;
|
|
if (c > 1.0)
|
|
--c;
|
|
if (6.0 * c < 1.0)
|
|
return t1 + (t2 - t1) * 6.0 * c;
|
|
if (2.0 * c < 1.0)
|
|
return t2;
|
|
return 3.0 * c < 2.0 ? t1 + (t2 - t1) * (2.0 / 3.0 - c) * 6.0 : t1;
|
|
}
|
|
|
|
public static Vector3 rgbToHsl(Microsoft.Xna.Framework.Color newColor)
|
|
{
|
|
float r = (float) newColor.R;
|
|
float g = (float) newColor.G;
|
|
float b = (float) newColor.B;
|
|
float val1 = r / (float) byte.MaxValue;
|
|
float val2_1 = g / (float) byte.MaxValue;
|
|
float val2_2 = b / (float) byte.MaxValue;
|
|
float num1 = Math.Max(Math.Max(val1, val2_1), val2_2);
|
|
float num2 = Math.Min(Math.Min(val1, val2_1), val2_2);
|
|
float num3 = 0.0f;
|
|
float z = (float) (((double) num1 + (double) num2) / 2.0);
|
|
float y;
|
|
float x;
|
|
if ((double) num1 == (double) num2)
|
|
{
|
|
x = y = 0.0f;
|
|
}
|
|
else
|
|
{
|
|
float num4 = num1 - num2;
|
|
y = (double) z > 0.5 ? num4 / (2f - num1 - num2) : num4 / (num1 + num2);
|
|
if ((double) num1 == (double) val1)
|
|
num3 = (float) (((double) val2_1 - (double) val2_2) / (double) num4 + ((double) val2_1 < (double) val2_2 ? 6.0 : 0.0));
|
|
if ((double) num1 == (double) val2_1)
|
|
num3 = (float) (((double) val2_2 - (double) val1) / (double) num4 + 2.0);
|
|
if ((double) num1 == (double) val2_2)
|
|
num3 = (float) (((double) val1 - (double) val2_1) / (double) num4 + 4.0);
|
|
x = num3 / 6f;
|
|
}
|
|
return new Vector3(x, y, z);
|
|
}
|
|
|
|
public static void DrawCursor(Vector2 bonus, bool smart = false)
|
|
{
|
|
if (Main.gameMenu && Main.alreadyGrabbingSunOrMoon)
|
|
return;
|
|
if (Main.player[Main.myPlayer].dead || Main.player[Main.myPlayer].mouseInterface)
|
|
{
|
|
Main.ClearSmartInteract();
|
|
int num;
|
|
Main.TileInteractionHY = num = -1;
|
|
Main.TileInteractionLY = num;
|
|
Main.TileInteractionHX = num;
|
|
Main.TileInteractionLX = num;
|
|
}
|
|
bool flag1 = UILinkPointNavigator.Available && !PlayerInput.InBuildingMode;
|
|
Microsoft.Xna.Framework.Color cursorColor = Main.cursorColor;
|
|
if (PlayerInput.UsingGamepad)
|
|
{
|
|
if (Main.player[Main.myPlayer].dead && !Main.player[Main.myPlayer].ghost && !Main.gameMenu || PlayerInput.InvisibleGamepadInMenus)
|
|
return;
|
|
Vector2 t1 = new Vector2((float) Main.mouseX, (float) Main.mouseY);
|
|
Vector2 t2 = Vector2.Zero;
|
|
bool flag2 = Main.SmartCursorEnabled;
|
|
if (flag2)
|
|
{
|
|
PlayerInput.smartSelectPointer.UpdateCenter(Main.ScreenSize.ToVector2() / 2f);
|
|
t2 = PlayerInput.smartSelectPointer.GetPointerPosition();
|
|
if ((double) Vector2.Distance(t2, t1) < 1.0)
|
|
flag2 = false;
|
|
else
|
|
Utils.Swap<Vector2>(ref t1, ref t2);
|
|
}
|
|
float num = 1f;
|
|
if (flag2)
|
|
{
|
|
num = 0.3f;
|
|
Microsoft.Xna.Framework.Color color = Microsoft.Xna.Framework.Color.White * Main.GamepadCursorAlpha;
|
|
int index = 17;
|
|
int frameX = 0;
|
|
Main.spriteBatch.Draw(TextureAssets.Cursors[index].Value, t2 + bonus, new Microsoft.Xna.Framework.Rectangle?(TextureAssets.Cursors[index].Frame(frameX: frameX)), color, 1.570796f * Main.GlobalTimeWrappedHourly, TextureAssets.Cursors[index].Frame(frameX: frameX).Size() / 2f, Main.cursorScale, SpriteEffects.None, 0.0f);
|
|
}
|
|
if (smart && !flag1)
|
|
{
|
|
Microsoft.Xna.Framework.Color color = Microsoft.Xna.Framework.Color.White * Main.GamepadCursorAlpha * num;
|
|
int index = 13;
|
|
int frameX = 0;
|
|
Main.spriteBatch.Draw(TextureAssets.Cursors[index].Value, t1 + bonus, new Microsoft.Xna.Framework.Rectangle?(TextureAssets.Cursors[index].Frame(2, frameX: frameX)), color, 0.0f, TextureAssets.Cursors[index].Frame(2, frameX: frameX).Size() / 2f, Main.cursorScale, SpriteEffects.None, 0.0f);
|
|
}
|
|
else
|
|
{
|
|
Microsoft.Xna.Framework.Color white = Microsoft.Xna.Framework.Color.White;
|
|
int index = 15;
|
|
Main.spriteBatch.Draw(TextureAssets.Cursors[index].Value, new Vector2((float) Main.mouseX, (float) Main.mouseY) + bonus, new Microsoft.Xna.Framework.Rectangle?(), white, 0.0f, TextureAssets.Cursors[index].Value.Size() / 2f, Main.cursorScale, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
int index = smart.ToInt();
|
|
Main.spriteBatch.Draw(TextureAssets.Cursors[index].Value, new Vector2((float) Main.mouseX, (float) Main.mouseY) + bonus + Vector2.One, new Microsoft.Xna.Framework.Rectangle?(), new Microsoft.Xna.Framework.Color((int) ((double) cursorColor.R * 0.200000002980232), (int) ((double) cursorColor.G * 0.200000002980232), (int) ((double) cursorColor.B * 0.200000002980232), (int) ((double) cursorColor.A * 0.5)), 0.0f, new Vector2(), Main.cursorScale * 1.1f, SpriteEffects.None, 0.0f);
|
|
Main.spriteBatch.Draw(TextureAssets.Cursors[index].Value, new Vector2((float) Main.mouseX, (float) Main.mouseY) + bonus, new Microsoft.Xna.Framework.Rectangle?(), cursorColor, 0.0f, new Vector2(), Main.cursorScale, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
|
|
public static void ClearSmartInteract()
|
|
{
|
|
Main.SmartInteractShowingGenuine = false;
|
|
Main.SmartInteractShowingFake = false;
|
|
Main.SmartInteractNPC = -1;
|
|
Main.SmartInteractProj = -1;
|
|
Main.SmartInteractTileCoords.Clear();
|
|
Main.SmartInteractTileCoordsSelected.Clear();
|
|
}
|
|
|
|
public static Vector2 DrawThickCursor(bool smart = false)
|
|
{
|
|
if (!Main.ThickMouse || Main.gameMenu && Main.alreadyGrabbingSunOrMoon || PlayerInput.UsingGamepad && PlayerInput.InvisibleGamepadInMenus || PlayerInput.UsingGamepad && Main.player[Main.myPlayer].dead && !Main.player[Main.myPlayer].ghost && !Main.gameMenu)
|
|
return Vector2.Zero;
|
|
bool flag = UILinkPointNavigator.Available && !PlayerInput.InBuildingMode;
|
|
Microsoft.Xna.Framework.Color mouseBorderColor = Main.MouseBorderColor;
|
|
int index1 = 11 + smart.ToInt();
|
|
for (int index2 = 0; index2 < 4; ++index2)
|
|
{
|
|
Vector2 vector2_1 = Vector2.Zero;
|
|
switch (index2)
|
|
{
|
|
case 0:
|
|
vector2_1 = new Vector2(0.0f, 1f);
|
|
break;
|
|
case 1:
|
|
vector2_1 = new Vector2(1f, 0.0f);
|
|
break;
|
|
case 2:
|
|
vector2_1 = new Vector2(0.0f, -1f);
|
|
break;
|
|
case 3:
|
|
vector2_1 = new Vector2(-1f, 0.0f);
|
|
break;
|
|
}
|
|
Vector2 vector2_2 = vector2_1 * 1f + Vector2.One * 2f;
|
|
Vector2 origin = new Vector2(2f);
|
|
Microsoft.Xna.Framework.Rectangle? sourceRectangle = new Microsoft.Xna.Framework.Rectangle?();
|
|
float scale = Main.cursorScale * 1.1f;
|
|
if (PlayerInput.UsingGamepad)
|
|
{
|
|
if (smart && !flag)
|
|
{
|
|
index1 = 13;
|
|
int frameX = 0;
|
|
vector2_2 = Vector2.One;
|
|
sourceRectangle = new Microsoft.Xna.Framework.Rectangle?(TextureAssets.Cursors[index1].Frame(2, frameX: frameX));
|
|
origin = TextureAssets.Cursors[index1].Frame(2, frameX: frameX).Size() / 2f;
|
|
mouseBorderColor *= Main.GamepadCursorAlpha;
|
|
}
|
|
else
|
|
{
|
|
index1 = 15;
|
|
vector2_2 = Vector2.One;
|
|
origin = TextureAssets.Cursors[index1].Value.Size() / 2f;
|
|
}
|
|
}
|
|
Main.spriteBatch.Draw(TextureAssets.Cursors[index1].Value, new Vector2((float) Main.mouseX, (float) Main.mouseY) + vector2_2, sourceRectangle, mouseBorderColor, 0.0f, origin, scale, SpriteEffects.None, 0.0f);
|
|
}
|
|
return new Vector2(2f);
|
|
}
|
|
|
|
private void OnCharacterNamed(string text)
|
|
{
|
|
Main.PendingPlayer.name = text.Trim();
|
|
PlayerFileData.CreateAndSave(Main.PendingPlayer);
|
|
Main.LoadPlayers();
|
|
Main.menuMode = 1;
|
|
}
|
|
|
|
private void OnSeedSelected(string text)
|
|
{
|
|
text = text.Trim();
|
|
if (text.Length == 0)
|
|
Main.ActiveWorldFileData.SetSeedToRandom();
|
|
else
|
|
Main.ActiveWorldFileData.SetSeed(text);
|
|
Main.menuMode = 10;
|
|
WorldGen.CreateNewWorld();
|
|
}
|
|
|
|
private void OnWorldNamed(string text)
|
|
{
|
|
Main.menuMode = 10;
|
|
Main.worldName = text.Trim();
|
|
Main.ActiveWorldFileData = WorldFile.CreateMetadata(Main.worldName, SocialAPI.Cloud != null && SocialAPI.Cloud.EnabledByDefault, Main.GameMode);
|
|
Main.menuMode = 5000;
|
|
}
|
|
|
|
private static Action CreateGoToMenuEvent(int menu) => (Action) (() =>
|
|
{
|
|
Main.menuMode = menu;
|
|
UILinkPointNavigator.Shortcuts.FANCYUI_SPECIAL_INSTRUCTIONS = 0;
|
|
});
|
|
|
|
public static Microsoft.Xna.Framework.Point ScreenSize => new Microsoft.Xna.Framework.Point(Main.screenWidth, Main.screenHeight);
|
|
|
|
public static void GoToWorldSelect()
|
|
{
|
|
Main.MenuUI.SetState((UIState) Main._worldSelectMenu);
|
|
Main.menuMode = 888;
|
|
}
|
|
|
|
public static void StartClientGameplay()
|
|
{
|
|
Main.menuMode = 10;
|
|
Netplay.StartTcpClient();
|
|
}
|
|
|
|
public static void ReleaseHostAndPlayProcess()
|
|
{
|
|
if (Main.tServer == null)
|
|
return;
|
|
Main.tServer = (Process) null;
|
|
}
|
|
|
|
protected void DrawMenu(GameTime gameTime)
|
|
{
|
|
if (!Main.IsEngineLoaded)
|
|
{
|
|
Main.IsEngineLoaded = true;
|
|
if (Main.OnEngineLoad != null)
|
|
Main.OnEngineLoad();
|
|
}
|
|
GamepadMainMenuHandler.Update();
|
|
GamepadMainMenuHandler.MenuItemPositions.Clear();
|
|
int menuMode1 = Main.menuMode;
|
|
if (Main.menuMode <= 1 && Main.slimeRain)
|
|
Main.StopSlimeRain();
|
|
Main.render = false;
|
|
Main.SceneMetrics.Reset();
|
|
Main.drawingPlayerChat = false;
|
|
Main.chatMonitor.Clear();
|
|
Main.screenLastPosition = Main.screenPosition;
|
|
Main.screenPosition.Y = (float) (Main.worldSurface * 16.0) - (float) Main.screenHeight;
|
|
Main.MenuXMovement = 4f;
|
|
if (Main.alreadyGrabbingSunOrMoon)
|
|
this.playOldTile = true;
|
|
Main.screenPosition.X += Main.MenuXMovement;
|
|
if ((double) Main.screenPosition.X > 2147483520.0)
|
|
Main.screenPosition.X = 0.0f;
|
|
if ((double) Main.screenPosition.X < -2147483520.0)
|
|
Main.screenPosition.X = 0.0f;
|
|
Star.UpdateStars();
|
|
Cloud.UpdateClouds();
|
|
this.DrawFPS();
|
|
Main.background = 0;
|
|
byte num1 = (byte) (((int) byte.MaxValue + (int) Main.tileColor.R * 2) / 3);
|
|
Microsoft.Xna.Framework.Color color1 = new Microsoft.Xna.Framework.Color((int) num1, (int) num1, (int) num1, (int) byte.MaxValue);
|
|
if (WorldGen.drunkWorldGen)
|
|
{
|
|
this.logoRotation += this.logoRotationSpeed * 4E-06f;
|
|
if ((double) this.logoRotationSpeed > 0.0)
|
|
this.logoRotationSpeed += 1500f;
|
|
else
|
|
this.logoRotationSpeed -= 1500f;
|
|
this.logoScale -= 0.05f;
|
|
if ((double) this.logoScale < 0.0)
|
|
this.logoScale = 0.0f;
|
|
}
|
|
else
|
|
{
|
|
this.logoRotation += this.logoRotationSpeed * 4E-06f;
|
|
if ((double) this.logoRotation > 0.08)
|
|
this.logoRotationDirection = -1f;
|
|
else if ((double) this.logoRotation < -0.08)
|
|
this.logoRotationDirection = 1f;
|
|
if ((double) this.logoRotationSpeed < 20.0 && (double) this.logoRotationDirection == 1.0)
|
|
++this.logoRotationSpeed;
|
|
else if ((double) this.logoRotationSpeed > -20.0 && (double) this.logoRotationDirection == -1.0)
|
|
--this.logoRotationSpeed;
|
|
this.logoScale += this.logoScaleSpeed * 9E-06f;
|
|
if ((double) this.logoScale > 1.35)
|
|
this.logoScaleDirection = -1f;
|
|
else if ((double) this.logoScale < 1.0)
|
|
this.logoScaleDirection = 1f;
|
|
if ((double) this.logoScaleSpeed < 50.0 && (double) this.logoScaleDirection == 1.0)
|
|
++this.logoScaleSpeed;
|
|
else if ((double) this.logoScaleSpeed > -50.0 && (double) this.logoScaleDirection == -1.0)
|
|
--this.logoScaleSpeed;
|
|
}
|
|
Microsoft.Xna.Framework.Color color2 = new Microsoft.Xna.Framework.Color((int) (byte) ((double) color1.R * ((double) Main.LogoA / (double) byte.MaxValue)), (int) (byte) ((double) color1.G * ((double) Main.LogoA / (double) byte.MaxValue)), (int) (byte) ((double) color1.B * ((double) Main.LogoA / (double) byte.MaxValue)), (int) (byte) ((double) color1.A * ((double) Main.LogoA / (double) byte.MaxValue)));
|
|
Microsoft.Xna.Framework.Color color3 = new Microsoft.Xna.Framework.Color((int) (byte) ((double) color1.R * ((double) Main.LogoB / (double) byte.MaxValue)), (int) (byte) ((double) color1.G * ((double) Main.LogoB / (double) byte.MaxValue)), (int) (byte) ((double) color1.B * ((double) Main.LogoB / (double) byte.MaxValue)), (int) (byte) ((double) color1.A * ((double) Main.LogoB / (double) byte.MaxValue)));
|
|
if (this.playOldTile)
|
|
{
|
|
Main.spriteBatch.Draw(TextureAssets.Logo3.Value, new Vector2((float) (Main.screenWidth / 2), 100f), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Logo.Width(), TextureAssets.Logo.Height())), color2, this.logoRotation, new Vector2((float) (TextureAssets.Logo.Width() / 2), (float) (TextureAssets.Logo.Height() / 2)), this.logoScale, SpriteEffects.None, 0.0f);
|
|
Main.spriteBatch.Draw(TextureAssets.Logo4.Value, new Vector2((float) (Main.screenWidth / 2), 100f), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Logo.Width(), TextureAssets.Logo.Height())), color3, this.logoRotation, new Vector2((float) (TextureAssets.Logo.Width() / 2), (float) (TextureAssets.Logo.Height() / 2)), this.logoScale, SpriteEffects.None, 0.0f);
|
|
}
|
|
else
|
|
{
|
|
Main.spriteBatch.Draw(TextureAssets.Logo.Value, new Vector2((float) (Main.screenWidth / 2), 100f), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Logo.Width(), TextureAssets.Logo.Height())), color2, this.logoRotation, new Vector2((float) (TextureAssets.Logo.Width() / 2), (float) (TextureAssets.Logo.Height() / 2)), this.logoScale, SpriteEffects.None, 0.0f);
|
|
Main.spriteBatch.Draw(TextureAssets.Logo2.Value, new Vector2((float) (Main.screenWidth / 2), 100f), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Logo.Width(), TextureAssets.Logo.Height())), color3, this.logoRotation, new Vector2((float) (TextureAssets.Logo.Width() / 2), (float) (TextureAssets.Logo.Height() / 2)), this.logoScale, SpriteEffects.None, 0.0f);
|
|
}
|
|
if (Main.dayTime)
|
|
{
|
|
Main.LogoA += 2;
|
|
if (Main.LogoA > (int) byte.MaxValue)
|
|
Main.LogoA = (int) byte.MaxValue;
|
|
--Main.LogoB;
|
|
if (Main.LogoB < 0)
|
|
Main.LogoB = 0;
|
|
}
|
|
else
|
|
{
|
|
Main.LogoB += 2;
|
|
if (Main.LogoB > (int) byte.MaxValue)
|
|
Main.LogoB = (int) byte.MaxValue;
|
|
--Main.LogoA;
|
|
if (Main.LogoA < 0)
|
|
{
|
|
Main.LogoA = 0;
|
|
Main.LogoT = true;
|
|
}
|
|
}
|
|
int num2 = 250;
|
|
int num3 = Main.screenWidth / 2;
|
|
int num4 = 80;
|
|
int num5 = 0;
|
|
int menuMode2 = Main.menuMode;
|
|
int num6 = 0;
|
|
int num7 = 0;
|
|
bool flag1 = false;
|
|
bool flag2 = false;
|
|
bool flag3 = false;
|
|
int num8 = 0;
|
|
bool[] flagArray1 = new bool[Main.maxMenuItems];
|
|
bool[] flagArray2 = new bool[Main.maxMenuItems];
|
|
bool[] flagArray3 = new bool[Main.maxMenuItems];
|
|
int[] numArray1 = new int[Main.maxMenuItems];
|
|
int[] numArray2 = new int[Main.maxMenuItems];
|
|
byte[] numArray3 = new byte[Main.maxMenuItems];
|
|
float[] numArray4 = new float[Main.maxMenuItems];
|
|
bool[] flagArray4 = new bool[Main.maxMenuItems];
|
|
bool flag4 = false;
|
|
bool flag5 = UILinkPointNavigator.Shortcuts.BackButtonInUse && !UILinkPointNavigator.Shortcuts.BackButtonLock;
|
|
for (int index = 0; index < Main.maxMenuItems; ++index)
|
|
{
|
|
flagArray1[index] = false;
|
|
flagArray2[index] = false;
|
|
numArray1[index] = 0;
|
|
numArray2[index] = 0;
|
|
numArray4[index] = 1f;
|
|
}
|
|
string[] strArray1 = new string[Main.maxMenuItems];
|
|
if (Main.menuMode == -1)
|
|
Main.menuMode = 0;
|
|
if (Program.LoadedEverything)
|
|
GamepadMainMenuHandler.CanRun = true;
|
|
switch (Main.menuMode)
|
|
{
|
|
case 1212:
|
|
strArray1[0] = Lang.menu[102].Value;
|
|
num4 = 33;
|
|
num2 = 200;
|
|
numArray1[0] = -20;
|
|
numArray1[1] = 25;
|
|
numArray1[2] = 25;
|
|
numArray1[3] = 25;
|
|
numArray1[4] = 25;
|
|
numArray1[5] = 25;
|
|
numArray1[6] = 25;
|
|
numArray1[7] = 25;
|
|
numArray1[8] = 25;
|
|
numArray1[9] = 25;
|
|
flagArray1[0] = true;
|
|
strArray1[1] = Language.GetTextValue("Language.English");
|
|
strArray1[2] = Language.GetTextValue("Language.German");
|
|
strArray1[3] = Language.GetTextValue("Language.Italian");
|
|
strArray1[4] = Language.GetTextValue("Language.French");
|
|
strArray1[5] = Language.GetTextValue("Language.Spanish");
|
|
strArray1[6] = Language.GetTextValue("Language.Russian");
|
|
strArray1[7] = Language.GetTextValue("Language.Chinese");
|
|
strArray1[8] = Language.GetTextValue("Language.Portuguese");
|
|
strArray1[9] = Language.GetTextValue("Language.Polish");
|
|
num5 = 10;
|
|
for (int index = 0; index < num5; ++index)
|
|
numArray4[index] = 0.75f;
|
|
numArray4[0] = 1f;
|
|
if (this.selectedMenu >= 1)
|
|
{
|
|
Main.changeTheTitle = true;
|
|
LanguageManager.Instance.SetLanguage(this.selectedMenu);
|
|
Main.menuMode = 0;
|
|
SoundEngine.PlaySound(10);
|
|
Main.SaveSettings();
|
|
break;
|
|
}
|
|
break;
|
|
case 1213:
|
|
strArray1[0] = Lang.menu[102].Value;
|
|
flagArray1[0] = true;
|
|
strArray1[1] = Language.GetTextValue("Language.English");
|
|
strArray1[2] = Language.GetTextValue("Language.German");
|
|
strArray1[3] = Language.GetTextValue("Language.Italian");
|
|
strArray1[4] = Language.GetTextValue("Language.French");
|
|
strArray1[5] = Language.GetTextValue("Language.Spanish");
|
|
strArray1[6] = Language.GetTextValue("Language.Russian");
|
|
strArray1[7] = Language.GetTextValue("Language.Chinese");
|
|
strArray1[8] = Language.GetTextValue("Language.Portuguese");
|
|
strArray1[9] = Language.GetTextValue("Language.Polish");
|
|
strArray1[10] = Lang.menu[5].Value;
|
|
num5 = 11;
|
|
if (this.selectedMenu == 10 | flag5)
|
|
{
|
|
flag5 = false;
|
|
Main.menuMode = 11;
|
|
SoundEngine.PlaySound(11);
|
|
}
|
|
else if (this.selectedMenu >= 1)
|
|
{
|
|
Main.changeTheTitle = true;
|
|
LanguageManager.Instance.SetLanguage(this.selectedMenu);
|
|
SoundEngine.PlaySound(12);
|
|
Main.SaveSettings();
|
|
}
|
|
num4 = 33;
|
|
num2 = 200;
|
|
numArray1[0] = -20;
|
|
numArray1[10] = 10;
|
|
for (int index = 0; index < num5; ++index)
|
|
numArray4[index] = 0.75f;
|
|
numArray4[0] = 0.85f;
|
|
numArray4[10] = 0.95f;
|
|
break;
|
|
default:
|
|
if (Main.netMode == 2)
|
|
{
|
|
bool flag6 = true;
|
|
for (int index = 0; index < 8; ++index)
|
|
{
|
|
if (index < (int) byte.MaxValue)
|
|
{
|
|
try
|
|
{
|
|
strArray1[index] = Netplay.Clients[index].StatusText;
|
|
if (Netplay.Clients[index].IsActive)
|
|
{
|
|
if (Main.showSpam)
|
|
{
|
|
ref string local = ref strArray1[index];
|
|
local = local + " (" + (object) NetMessage.buffer[index].spamCount + ")";
|
|
}
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
strArray1[index] = "";
|
|
}
|
|
flagArray1[index] = true;
|
|
if (strArray1[index] != "" && strArray1[index] != null)
|
|
flag6 = false;
|
|
}
|
|
}
|
|
if (flag6)
|
|
{
|
|
strArray1[0] = Lang.menu[0].Value;
|
|
strArray1[1] = Lang.menu[1].Value + (object) Netplay.ListenPort + ".";
|
|
}
|
|
num5 = 11;
|
|
strArray1[9] = Main.statusText;
|
|
flagArray1[9] = true;
|
|
num2 = 170;
|
|
num4 = 30;
|
|
numArray1[10] = 20;
|
|
numArray1[10] = 40;
|
|
strArray1[10] = Lang.menu[2].Value;
|
|
if (this.selectedMenu == 10 | flag5)
|
|
{
|
|
flag5 = false;
|
|
Netplay.Disconnect = true;
|
|
SoundEngine.PlaySound(11);
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if (Main.menuMode == 31)
|
|
{
|
|
string serverPassword1 = Netplay.ServerPassword;
|
|
PlayerInput.WritingText = true;
|
|
flag5 = false;
|
|
Main.instance.HandleIME();
|
|
Netplay.ServerPassword = Main.GetInputText(Netplay.ServerPassword);
|
|
string serverPassword2 = Netplay.ServerPassword;
|
|
if (serverPassword1 != serverPassword2)
|
|
SoundEngine.PlaySound(12);
|
|
strArray1[0] = Lang.menu[3].Value;
|
|
++this.textBlinkerCount;
|
|
if (this.textBlinkerCount >= 20)
|
|
{
|
|
this.textBlinkerState = this.textBlinkerState != 0 ? 0 : 1;
|
|
this.textBlinkerCount = 0;
|
|
}
|
|
strArray1[1] = Netplay.ServerPassword;
|
|
if (Main.HidePassword)
|
|
{
|
|
strArray1[1] = "";
|
|
for (int index = 0; index < Netplay.ServerPassword.Length; ++index)
|
|
{
|
|
// ISSUE: explicit reference operation
|
|
^ref strArray1[1] += "*";
|
|
}
|
|
}
|
|
if (this.textBlinkerState == 1)
|
|
{
|
|
// ISSUE: explicit reference operation
|
|
^ref strArray1[1] += "|";
|
|
numArray2[1] = 1;
|
|
}
|
|
else
|
|
{
|
|
// ISSUE: explicit reference operation
|
|
^ref strArray1[1] += " ";
|
|
}
|
|
flagArray1[0] = true;
|
|
flagArray1[1] = true;
|
|
numArray1[1] = -20;
|
|
numArray1[2] = 20;
|
|
strArray1[2] = Lang.menu[4].Value;
|
|
strArray1[3] = Lang.menu[5].Value;
|
|
num5 = 4;
|
|
if (this.selectedMenu == 3 | flag5)
|
|
{
|
|
flag5 = false;
|
|
SoundEngine.PlaySound(11);
|
|
Main.menuMode = 0;
|
|
Netplay.Disconnect = true;
|
|
Netplay.ServerPassword = "";
|
|
break;
|
|
}
|
|
if (this.selectedMenu == 2 || Main.inputTextEnter)
|
|
{
|
|
NetMessage.SendData(38);
|
|
Main.menuMode = 14;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if (Main.netMode != 1)
|
|
{
|
|
switch (Main.menuMode)
|
|
{
|
|
case -71:
|
|
num2 = 200;
|
|
num4 = 60;
|
|
numArray1[1] = 30;
|
|
numArray1[2] = 30;
|
|
numArray1[3] = 30;
|
|
numArray1[4] = 70;
|
|
num5 = 5;
|
|
int index1 = 0;
|
|
strArray1[index1] = Lang.misc[100].Value;
|
|
flagArray1[index1] = true;
|
|
int index2 = index1 + 1;
|
|
strArray1[index2] = Lang.misc[101].Value;
|
|
if (this.selectedMenu == index2)
|
|
{
|
|
WorldGen.WorldGenParam_Evil = 0;
|
|
SoundEngine.PlaySound(10);
|
|
Main.menuMode = 7;
|
|
}
|
|
int index3 = index2 + 1;
|
|
strArray1[index3] = Lang.misc[102].Value;
|
|
if (this.selectedMenu == index3)
|
|
{
|
|
WorldGen.WorldGenParam_Evil = 1;
|
|
SoundEngine.PlaySound(10);
|
|
Main.menuMode = 7;
|
|
}
|
|
int index4 = index3 + 1;
|
|
strArray1[index4] = Lang.misc[103].Value;
|
|
if (this.selectedMenu == index4)
|
|
{
|
|
WorldGen.WorldGenParam_Evil = -1;
|
|
SoundEngine.PlaySound(10);
|
|
Main.menuMode = 7;
|
|
}
|
|
int index5 = index4 + 1;
|
|
strArray1[index5] = Language.GetTextValue("UI.Back");
|
|
if (this.selectedMenu == index5 | flag5)
|
|
{
|
|
flag5 = false;
|
|
SoundEngine.PlaySound(11);
|
|
Main.menuMode = -7;
|
|
}
|
|
int num9 = index5 + 1;
|
|
Main.clrInput();
|
|
goto label_623;
|
|
case -7:
|
|
num2 = 200;
|
|
num4 = 60;
|
|
numArray1[2] = 30;
|
|
numArray1[3] = 30;
|
|
numArray1[4] = 30;
|
|
numArray3[3] = (byte) 1;
|
|
numArray3[4] = (byte) 2;
|
|
numArray1[5] = 70;
|
|
if (this.focusMenu == 2)
|
|
strArray1[1] = Language.GetTextValue("UI.WorldDescriptionNormal");
|
|
else if (this.focusMenu == 3)
|
|
strArray1[1] = Language.GetTextValue("UI.WorldDescriptionExpert");
|
|
else if (this.focusMenu == 4)
|
|
strArray1[1] = Language.GetTextValue("UI.WorldDescriptionMaster");
|
|
strArray1[0] = Lang.menu[32].Value;
|
|
flagArray1[0] = true;
|
|
flagArray1[1] = true;
|
|
strArray1[2] = Language.GetTextValue("UI.Normal");
|
|
strArray1[3] = Language.GetTextValue("UI.Expert");
|
|
strArray1[4] = Language.GetTextValue("UI.Master");
|
|
strArray1[5] = Language.GetTextValue("UI.Back");
|
|
num5 = 6;
|
|
if (this.selectedMenu == 2)
|
|
{
|
|
Main.GameMode = 0;
|
|
SoundEngine.PlaySound(10);
|
|
Main.menuMode = 7;
|
|
if (Main.SettingsUnlock_WorldEvil)
|
|
Main.menuMode = -71;
|
|
}
|
|
else if (this.selectedMenu == 3)
|
|
{
|
|
Main.GameMode = 1;
|
|
SoundEngine.PlaySound(10);
|
|
Main.menuMode = 7;
|
|
if (Main.SettingsUnlock_WorldEvil)
|
|
Main.menuMode = -71;
|
|
}
|
|
else if (this.selectedMenu == 4)
|
|
{
|
|
Main.GameMode = 2;
|
|
SoundEngine.PlaySound(10);
|
|
Main.menuMode = 7;
|
|
if (Main.SettingsUnlock_WorldEvil)
|
|
Main.menuMode = -71;
|
|
}
|
|
else if (this.selectedMenu == 5 | flag5)
|
|
{
|
|
flag5 = false;
|
|
SoundEngine.PlaySound(11);
|
|
Main.menuMode = 16;
|
|
}
|
|
Main.clrInput();
|
|
goto label_623;
|
|
case 0:
|
|
Main._blockFancyUIWhileLoading = false;
|
|
Main._pendingCharacterSelect = (Main.OnPlayerSelected) null;
|
|
DD2Event.Ongoing = false;
|
|
Main.eclipse = false;
|
|
Main.pumpkinMoon = false;
|
|
Main.snowMoon = false;
|
|
Main.ServerSideCharacter = false;
|
|
Main.menuMultiplayer = false;
|
|
Main.menuServer = false;
|
|
Main.netMode = 0;
|
|
Main.ClearVisualPostProcessEffects();
|
|
int index6 = 0;
|
|
num5 = 6;
|
|
num4 = 60;
|
|
strArray1[index6] = Lang.menu[12].Value;
|
|
if (this.selectedMenu == index6)
|
|
{
|
|
SoundEngine.PlaySound(10);
|
|
Main.ClearPendingPlayerSelectCallbacks();
|
|
Main.menuMode = 1;
|
|
}
|
|
int index7 = index6 + 1;
|
|
strArray1[index7] = Lang.menu[13].Value;
|
|
if (this.selectedMenu == index7)
|
|
{
|
|
SoundEngine.PlaySound(10);
|
|
Main.menuMode = 12;
|
|
}
|
|
int index8 = index7 + 1;
|
|
strArray1[index8] = Lang.menu[131].Value;
|
|
if (this.selectedMenu == index8)
|
|
{
|
|
SoundEngine.PlaySound(10);
|
|
Main.MenuUI.SetState((UIState) Main.AchievementsMenu);
|
|
Main.menuMode = 888;
|
|
}
|
|
int index9 = index8 + 1;
|
|
strArray1[index9] = Language.GetText("UI.ResourcePacks").Value;
|
|
if (this.selectedMenu == index9)
|
|
{
|
|
SoundEngine.PlaySound(10);
|
|
Main.MenuUI.SetState((UIState) new UIResourcePackSelectionMenu(Main.AssetSourceController, AssetInitializer.CreateResourcePackList((System.IServiceProvider) this.Services)));
|
|
Main.menuMode = 888;
|
|
}
|
|
int index10 = index9 + 1;
|
|
strArray1[index10] = Lang.menu[14].Value;
|
|
if (this.selectedMenu == index10)
|
|
{
|
|
SoundEngine.PlaySound(10);
|
|
Main.menuMode = 11;
|
|
}
|
|
int index11 = index10 + 1;
|
|
strArray1[index11] = Lang.menu[15].Value;
|
|
if (this.selectedMenu == index11)
|
|
this.QuitGame();
|
|
int num10 = index11 + 1;
|
|
goto label_623;
|
|
case 1:
|
|
Main.OpenCharacterSelectUI();
|
|
goto label_623;
|
|
case 2:
|
|
flag4 = true;
|
|
if (this.selectedMenu == 0)
|
|
{
|
|
Main.menuMode = 17;
|
|
SoundEngine.PlaySound(10);
|
|
Main.selColor = Main.PendingPlayer.hairColor;
|
|
}
|
|
if (this.selectedMenu == 1)
|
|
{
|
|
Main.menuMode = 18;
|
|
SoundEngine.PlaySound(10);
|
|
Main.selColor = Main.PendingPlayer.eyeColor;
|
|
}
|
|
if (this.selectedMenu == 2)
|
|
{
|
|
Main.menuMode = 19;
|
|
SoundEngine.PlaySound(10);
|
|
Main.selColor = Main.PendingPlayer.skinColor;
|
|
}
|
|
if (this.selectedMenu == 3)
|
|
{
|
|
Main.menuMode = 20;
|
|
SoundEngine.PlaySound(10);
|
|
}
|
|
strArray1[0] = Lang.menu[18].Value;
|
|
strArray1[1] = Lang.menu[19].Value;
|
|
strArray1[2] = Lang.menu[20].Value;
|
|
strArray1[3] = Lang.menu[21].Value;
|
|
num2 = 220;
|
|
for (int index12 = 0; index12 < 9; ++index12)
|
|
numArray4[index12] = index12 >= 6 ? 0.9f : 0.75f;
|
|
num4 = 38;
|
|
numArray1[6] = 6;
|
|
numArray1[7] = 12;
|
|
numArray1[8] = 18;
|
|
num6 = Main.screenWidth / 2 - 16;
|
|
num7 = 176;
|
|
strArray1[4] = !Main.PendingPlayer.Male ? Lang.menu[23].Value : Lang.menu[22].Value;
|
|
if (this.selectedMenu == 4)
|
|
{
|
|
if (Main.PendingPlayer.Male)
|
|
{
|
|
SoundEngine.PlaySound(20);
|
|
Main.PendingPlayer.Male = false;
|
|
}
|
|
else
|
|
{
|
|
SoundEngine.PlaySound(1);
|
|
Main.PendingPlayer.Male = true;
|
|
}
|
|
}
|
|
if (Main.PendingPlayer.difficulty == (byte) 2)
|
|
{
|
|
strArray1[5] = Lang.menu[24].Value;
|
|
numArray3[5] = Main.PendingPlayer.difficulty;
|
|
}
|
|
else if (Main.PendingPlayer.difficulty == (byte) 1)
|
|
{
|
|
strArray1[5] = Lang.menu[25].Value;
|
|
numArray3[5] = Main.PendingPlayer.difficulty;
|
|
}
|
|
else
|
|
strArray1[5] = Lang.menu[26].Value;
|
|
if (this.selectedMenu == 5)
|
|
{
|
|
SoundEngine.PlaySound(10);
|
|
Main.menuMode = 222;
|
|
}
|
|
if (this.selectedMenu == 7)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
Main.PendingPlayer.hair = Main.rand.Next(51);
|
|
Main.PendingPlayer.eyeColor = this.randColor();
|
|
while ((int) Main.PendingPlayer.eyeColor.R + (int) Main.PendingPlayer.eyeColor.G + (int) Main.PendingPlayer.eyeColor.B > 300)
|
|
Main.PendingPlayer.eyeColor = this.randColor();
|
|
Main.PendingPlayer.hairColor = this.randColor();
|
|
Main.PendingPlayer.pantsColor = this.randColor();
|
|
Main.PendingPlayer.shirtColor = this.randColor();
|
|
Main.PendingPlayer.shoeColor = this.randColor();
|
|
Main.PendingPlayer.skinColor = this.randColor();
|
|
float num11 = (float) Main.rand.Next(60, 120) * 0.01f;
|
|
if ((double) num11 > 1.0)
|
|
num11 = 1f;
|
|
Main.PendingPlayer.skinColor.R = (byte) ((double) Main.rand.Next(240, (int) byte.MaxValue) * (double) num11);
|
|
Main.PendingPlayer.skinColor.G = (byte) ((double) Main.rand.Next(110, 140) * (double) num11);
|
|
Main.PendingPlayer.skinColor.B = (byte) ((double) Main.rand.Next(75, 110) * (double) num11);
|
|
Main.PendingPlayer.underShirtColor = this.randColor();
|
|
switch (Main.PendingPlayer.hair + 1)
|
|
{
|
|
case 5:
|
|
case 6:
|
|
case 7:
|
|
case 10:
|
|
case 12:
|
|
case 19:
|
|
case 22:
|
|
case 23:
|
|
case 26:
|
|
case 27:
|
|
case 30:
|
|
case 33:
|
|
Main.PendingPlayer.Male = false;
|
|
break;
|
|
default:
|
|
Main.PendingPlayer.Male = true;
|
|
break;
|
|
}
|
|
Main.PendingPlayer.skinVariant = Main.rand.Next(12);
|
|
}
|
|
strArray1[7] = Lang.menu[27].Value;
|
|
strArray1[6] = Lang.menu[28].Value;
|
|
strArray1[8] = Lang.menu[5].Value;
|
|
num5 = 9;
|
|
if (this.selectedMenu == 8 | flag5)
|
|
{
|
|
flag5 = false;
|
|
SoundEngine.PlaySound(11);
|
|
Main.menuMode = 1;
|
|
goto label_623;
|
|
}
|
|
else if (this.selectedMenu == 6)
|
|
{
|
|
SoundEngine.PlaySound(10);
|
|
Main.PendingPlayer.name = "";
|
|
Main.menuMode = 3;
|
|
Main.clrInput();
|
|
goto label_623;
|
|
}
|
|
else
|
|
goto label_623;
|
|
case 3:
|
|
UIVirtualKeyboard uiVirtualKeyboard = new UIVirtualKeyboard(Lang.menu[45].Value, "", new UIVirtualKeyboard.KeyboardSubmitEvent(this.OnCharacterNamed), Main.CreateGoToMenuEvent(2));
|
|
uiVirtualKeyboard.SetMaxInputLength(20);
|
|
Main.MenuUI.SetState((UIState) uiVirtualKeyboard);
|
|
Main.menuMode = 888;
|
|
goto label_623;
|
|
case 5:
|
|
strArray1[0] = Lang.menu[46].Value + " " + Main.PlayerList[Main.selectedPlayer].Player.name + "?";
|
|
flagArray1[0] = true;
|
|
strArray1[1] = Lang.menu[104].Value;
|
|
strArray1[2] = Lang.menu[105].Value;
|
|
num5 = 3;
|
|
if (this.selectedMenu == 1)
|
|
{
|
|
Main.ErasePlayer(Main.selectedPlayer);
|
|
SoundEngine.PlaySound(10);
|
|
Main.menuMode = 1;
|
|
goto label_623;
|
|
}
|
|
else if (this.selectedMenu == 2 | flag5)
|
|
{
|
|
flag5 = false;
|
|
SoundEngine.PlaySound(11);
|
|
Main.menuMode = 1;
|
|
goto label_623;
|
|
}
|
|
else
|
|
goto label_623;
|
|
case 6:
|
|
Main.MenuUI.SetState((UIState) Main._worldSelectMenu);
|
|
Main.menuMode = 888;
|
|
goto label_623;
|
|
case 7:
|
|
Main.MenuUI.SetState((UIState) new UIVirtualKeyboard(Lang.menu[48].Value, "", new UIVirtualKeyboard.KeyboardSubmitEvent(this.OnWorldNamed), Main.CreateGoToMenuEvent(-7)));
|
|
Main.menuMode = 888;
|
|
goto label_623;
|
|
case 8:
|
|
num2 = 180;
|
|
num4 = 40;
|
|
num5 = 8;
|
|
numArray1[7] += 30;
|
|
for (int index13 = 0; index13 < num5; ++index13)
|
|
numArray4[index13] = 0.8f;
|
|
strArray1[7] = Lang.menu[5].Value;
|
|
for (int index14 = 0; index14 < 7; ++index14)
|
|
{
|
|
if (index14 < Main.WorldList.Count)
|
|
{
|
|
strArray1[index14] = Main.WorldList[index14 + Main.menuSkip].Name;
|
|
if (Main.WorldList[index14 + Main.menuSkip].GameMode == 1)
|
|
numArray3[index14] = (byte) 1;
|
|
else if (Main.WorldList[index14 + Main.menuSkip].GameMode == 2)
|
|
numArray3[index14] = (byte) 2;
|
|
}
|
|
else
|
|
strArray1[index14] = (string) null;
|
|
}
|
|
if (Main.WorldList.Count > 7 + Main.menuSkip)
|
|
{
|
|
strArray1[6] = Language.GetTextValue("UI.More");
|
|
strArray1[6] = "▼";
|
|
numArray4[6] = 0.6f;
|
|
numArray1[6] += 8;
|
|
this.menuWide[6] = true;
|
|
}
|
|
if (Main.menuSkip > 0)
|
|
{
|
|
strArray1[0] = "▲";
|
|
numArray4[0] = 0.6f;
|
|
numArray1[0] += 8;
|
|
this.menuWide[0] = true;
|
|
}
|
|
if (this.selectedMenu == 0 && Main.menuSkip > 0)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
Main.menuSkip -= 5;
|
|
if (Main.menuSkip < 0)
|
|
{
|
|
Main.menuSkip = 0;
|
|
goto label_623;
|
|
}
|
|
else
|
|
goto label_623;
|
|
}
|
|
else if (this.selectedMenu == 6 && Main.menuSkip < Main.WorldList.Count - 7)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
Main.menuSkip += 5;
|
|
if (Main.menuSkip >= Main.PlayerList.Count - 7)
|
|
{
|
|
Main.menuSkip = Main.WorldList.Count - 7;
|
|
goto label_623;
|
|
}
|
|
else
|
|
goto label_623;
|
|
}
|
|
else if (this.selectedMenu == 7 | flag5)
|
|
{
|
|
flag5 = false;
|
|
SoundEngine.PlaySound(11);
|
|
Main.menuMode = 6;
|
|
goto label_623;
|
|
}
|
|
else if (this.selectedMenu >= 0)
|
|
{
|
|
Main.selectedWorld = this.selectedMenu + Main.menuSkip;
|
|
SoundEngine.PlaySound(10);
|
|
Main.menuMode = 9;
|
|
goto label_623;
|
|
}
|
|
else
|
|
goto label_623;
|
|
case 9:
|
|
strArray1[0] = Lang.menu[46].Value + " " + Main.WorldList[Main.selectedWorld].Name + "?";
|
|
flagArray1[0] = true;
|
|
strArray1[1] = Lang.menu[104].Value;
|
|
strArray1[2] = Lang.menu[105].Value;
|
|
num5 = 3;
|
|
if (this.selectedMenu == 1)
|
|
{
|
|
Main.EraseWorld(Main.selectedWorld);
|
|
SoundEngine.PlaySound(10);
|
|
Main.menuMode = 6;
|
|
goto label_623;
|
|
}
|
|
else if (this.selectedMenu == 2 | flag5)
|
|
{
|
|
SoundEngine.PlaySound(11);
|
|
Main.menuMode = 6;
|
|
goto label_623;
|
|
}
|
|
else
|
|
goto label_623;
|
|
case 10:
|
|
num5 = 1;
|
|
strArray1[0] = Main.statusText;
|
|
flagArray1[0] = true;
|
|
num2 = 300;
|
|
Main.gameTips.Update();
|
|
Main.gameTips.Draw();
|
|
goto label_623;
|
|
case 11:
|
|
num2 = 210;
|
|
num4 = 37;
|
|
num5 = 8;
|
|
numArray1[num5 - 1] = 8;
|
|
for (int index15 = 0; index15 < num5; ++index15)
|
|
numArray4[index15] = 0.75f;
|
|
int index16 = 0;
|
|
strArray1[index16] = Lang.menu[114].Value;
|
|
if (this.selectedMenu == index16)
|
|
{
|
|
SoundEngine.PlaySound(10);
|
|
Main.menuMode = 112;
|
|
}
|
|
int index17 = index16 + 1;
|
|
strArray1[index17] = Lang.menu[210].Value;
|
|
if (this.selectedMenu == index17)
|
|
{
|
|
SoundEngine.PlaySound(10);
|
|
Main.menuMode = 1112;
|
|
}
|
|
int index18 = index17 + 1;
|
|
strArray1[index18] = Lang.menu[63].Value;
|
|
if (this.selectedMenu == index18)
|
|
{
|
|
SoundEngine.PlaySound(10);
|
|
Main.menuMode = 1111;
|
|
}
|
|
int index19 = index18 + 1;
|
|
strArray1[index19] = Lang.menu[65].Value;
|
|
if (this.selectedMenu == index19)
|
|
{
|
|
SoundEngine.PlaySound(11);
|
|
Main.menuMode = 26;
|
|
}
|
|
int index20 = index19 + 1;
|
|
strArray1[index20] = Lang.menu[218].Value;
|
|
if (this.selectedMenu == index20)
|
|
{
|
|
SoundEngine.PlaySound(10);
|
|
Main.menuMode = 1125;
|
|
}
|
|
int index21 = index20 + 1;
|
|
strArray1[index21] = Lang.menu[219].Value;
|
|
if (this.selectedMenu == index21)
|
|
{
|
|
SoundEngine.PlaySound(10);
|
|
Main.menuMode = 1127;
|
|
}
|
|
int index22 = index21 + 1;
|
|
strArray1[index22] = Lang.menu[103].Value;
|
|
if (this.selectedMenu == index22)
|
|
{
|
|
SoundEngine.PlaySound(10);
|
|
Main.menuMode = 1213;
|
|
}
|
|
int index23 = index22 + 1;
|
|
strArray1[index23] = Lang.menu[5].Value;
|
|
if (this.selectedMenu == index23 | flag5)
|
|
{
|
|
flag5 = false;
|
|
SoundEngine.PlaySound(11);
|
|
Main.menuMode = 0;
|
|
Main.SaveSettings();
|
|
goto label_623;
|
|
}
|
|
else
|
|
goto label_623;
|
|
case 12:
|
|
int num12 = SocialAPI.Network != null ? 1 : 0;
|
|
Main.menuServer = false;
|
|
strArray1[0] = Lang.menu[SocialAPI.Network != null ? 146 : 87].Value;
|
|
strArray1[1] = Lang.menu[145].Value;
|
|
strArray1[1 + num12] = Lang.menu[88].Value;
|
|
strArray1[2 + num12] = Lang.menu[5].Value;
|
|
if (this.selectedMenu == 0)
|
|
{
|
|
Main.LoadPlayers();
|
|
Main.menuMultiplayer = true;
|
|
SoundEngine.PlaySound(10);
|
|
Main.ClearPendingPlayerSelectCallbacks();
|
|
Main.menuMode = 1;
|
|
}
|
|
else if (this.selectedMenu == 1 + num12)
|
|
{
|
|
Main.LoadPlayers();
|
|
SoundEngine.PlaySound(10);
|
|
Main.ClearPendingPlayerSelectCallbacks();
|
|
Main.menuMode = 1;
|
|
Main.menuMultiplayer = true;
|
|
Main.menuServer = true;
|
|
}
|
|
else if (this.selectedMenu == 1)
|
|
{
|
|
SoundEngine.PlaySound(10);
|
|
SocialAPI.Friends.OpenJoinInterface();
|
|
}
|
|
else if (this.selectedMenu == 2 + num12 | flag5)
|
|
{
|
|
flag5 = false;
|
|
SoundEngine.PlaySound(11);
|
|
Main.menuMode = 0;
|
|
}
|
|
num5 = 3 + num12;
|
|
goto label_623;
|
|
case 13:
|
|
string getIp1 = Main.getIP;
|
|
PlayerInput.WritingText = true;
|
|
flag5 = false;
|
|
Main.instance.HandleIME();
|
|
Main.getIP = Main.GetInputText(Main.getIP);
|
|
string getIp2 = Main.getIP;
|
|
if (getIp1 != getIp2)
|
|
SoundEngine.PlaySound(12);
|
|
strArray1[0] = Lang.menu[89].Value;
|
|
flagArray2[9] = true;
|
|
if (Main.getIP != "")
|
|
{
|
|
if (Main.getIP.Substring(0, 1) == " ")
|
|
Main.getIP = "";
|
|
for (int index24 = 0; index24 < Main.getIP.Length; ++index24)
|
|
{
|
|
if (Main.getIP != " ")
|
|
flagArray2[9] = false;
|
|
}
|
|
}
|
|
++this.textBlinkerCount;
|
|
if (this.textBlinkerCount >= 20)
|
|
{
|
|
this.textBlinkerState = this.textBlinkerState != 0 ? 0 : 1;
|
|
this.textBlinkerCount = 0;
|
|
}
|
|
strArray1[1] = Main.getIP;
|
|
if (this.textBlinkerState == 1)
|
|
{
|
|
// ISSUE: explicit reference operation
|
|
^ref strArray1[1] += "|";
|
|
numArray2[1] = 1;
|
|
}
|
|
else
|
|
{
|
|
// ISSUE: explicit reference operation
|
|
^ref strArray1[1] += " ";
|
|
}
|
|
flagArray1[0] = true;
|
|
flagArray1[1] = true;
|
|
numArray1[9] = 44;
|
|
numArray1[10] = 64;
|
|
strArray1[9] = Lang.menu[4].Value;
|
|
strArray1[10] = Lang.menu[5].Value;
|
|
num5 = 11;
|
|
num2 = 180;
|
|
num4 = 30;
|
|
numArray1[1] = 19;
|
|
for (int index25 = 2; index25 < 9; ++index25)
|
|
{
|
|
int index26 = index25 - 2;
|
|
if (Main.recentWorld[index26] != null && Main.recentWorld[index26] != "")
|
|
{
|
|
strArray1[index25] = Main.recentWorld[index26] + " (" + Main.recentIP[index26] + ":" + (object) Main.recentPort[index26] + ")";
|
|
}
|
|
else
|
|
{
|
|
strArray1[index25] = "";
|
|
flagArray1[index25] = true;
|
|
}
|
|
numArray4[index25] = 0.6f;
|
|
numArray1[index25] = 40;
|
|
}
|
|
if (this.selectedMenu >= 2 && this.selectedMenu < 9)
|
|
{
|
|
Main.autoPass = false;
|
|
int index27 = this.selectedMenu - 2;
|
|
Netplay.ListenPort = Main.recentPort[index27];
|
|
Main.getIP = Main.recentIP[index27];
|
|
Netplay.SetRemoteIPAsync(Main.getIP, new Action(Main.StartClientGameplay));
|
|
Main.menuMode = 14;
|
|
Main.statusText = Language.GetTextValue("Net.ConnectingTo", (object) Main.getIP);
|
|
}
|
|
if (this.selectedMenu == 10 | flag5)
|
|
{
|
|
flag5 = false;
|
|
SoundEngine.PlaySound(11);
|
|
Main.menuMode = 1;
|
|
}
|
|
if (this.selectedMenu == 9 || !flagArray2[2] && Main.inputTextEnter)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
Main.menuMode = 131;
|
|
Main.clrInput();
|
|
goto label_623;
|
|
}
|
|
else
|
|
goto label_623;
|
|
case 14:
|
|
break;
|
|
case 15:
|
|
num5 = 2;
|
|
strArray1[0] = Main.statusText;
|
|
flagArray1[0] = true;
|
|
num2 = 80;
|
|
num4 = 400;
|
|
strArray1[1] = Lang.menu[5].Value;
|
|
if (this.selectedMenu == 1 | flag5)
|
|
{
|
|
flag5 = false;
|
|
Netplay.Disconnect = true;
|
|
SoundEngine.PlaySound(11);
|
|
Main.menuMode = 0;
|
|
Main.netMode = 0;
|
|
goto label_623;
|
|
}
|
|
else
|
|
goto label_623;
|
|
case 16:
|
|
num2 = 200;
|
|
num4 = 60;
|
|
numArray1[1] = 30;
|
|
numArray1[2] = 30;
|
|
numArray1[3] = 30;
|
|
numArray1[4] = 70;
|
|
strArray1[0] = Lang.menu[91].Value;
|
|
flagArray1[0] = true;
|
|
strArray1[1] = Lang.menu[92].Value;
|
|
strArray1[2] = Lang.menu[93].Value;
|
|
strArray1[3] = Lang.menu[94].Value;
|
|
strArray1[4] = Lang.menu[5].Value;
|
|
num5 = 5;
|
|
if (this.selectedMenu == 4 | flag5)
|
|
{
|
|
flag5 = false;
|
|
Main.menuMode = 6;
|
|
SoundEngine.PlaySound(11);
|
|
goto label_623;
|
|
}
|
|
else if (this.selectedMenu > 0)
|
|
{
|
|
if (this.selectedMenu == 1)
|
|
{
|
|
Main.maxTilesX = 4200;
|
|
Main.maxTilesY = 1200;
|
|
}
|
|
else if (this.selectedMenu == 2)
|
|
{
|
|
Main.maxTilesX = 6400;
|
|
Main.maxTilesY = 1800;
|
|
}
|
|
else
|
|
{
|
|
Main.maxTilesX = 8400;
|
|
Main.maxTilesY = 2400;
|
|
}
|
|
Main.clrInput();
|
|
Main.menuMode = -7;
|
|
SoundEngine.PlaySound(10);
|
|
WorldGen.setWorldSize();
|
|
goto label_623;
|
|
}
|
|
else
|
|
goto label_623;
|
|
case 17:
|
|
flag4 = true;
|
|
num6 = Main.screenWidth / 2 - 16;
|
|
num7 = 210;
|
|
flag1 = true;
|
|
num8 = 390;
|
|
num2 = 260;
|
|
num4 = 60;
|
|
Main.PendingPlayer.hairColor = Main.selColor;
|
|
num5 = 3;
|
|
strArray1[0] = Lang.menu[37].Value + " " + (object) (Main.PendingPlayer.hair + 1);
|
|
strArray1[1] = Lang.menu[38].Value;
|
|
flagArray1[1] = true;
|
|
numArray1[2] = 150;
|
|
numArray1[1] = 10;
|
|
strArray1[2] = Lang.menu[5].Value;
|
|
int num13 = 51;
|
|
if (this.focusMenu == 0)
|
|
UILinkPointNavigator.Shortcuts.OPTIONS_BUTTON_SPECIALFEATURE = 9;
|
|
if (this.selectedMenu == 0)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
++Main.PendingPlayer.hair;
|
|
if (Main.PendingPlayer.hair >= num13)
|
|
Main.PendingPlayer.hair = 0;
|
|
}
|
|
else if (this.selectedMenu2 == 0)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
--Main.PendingPlayer.hair;
|
|
if (Main.PendingPlayer.hair < 0)
|
|
Main.PendingPlayer.hair = num13 - 1;
|
|
}
|
|
if (this.selectedMenu == 2 | flag5)
|
|
{
|
|
flag5 = false;
|
|
Main.menuMode = 2;
|
|
SoundEngine.PlaySound(11);
|
|
goto label_623;
|
|
}
|
|
else
|
|
goto label_623;
|
|
case 18:
|
|
flag4 = true;
|
|
num6 = Main.screenWidth / 2 - 16;
|
|
num7 = 210;
|
|
flag1 = true;
|
|
num8 = 370;
|
|
num2 = 240;
|
|
num4 = 60;
|
|
Main.PendingPlayer.eyeColor = Main.selColor;
|
|
num5 = 3;
|
|
strArray1[0] = "";
|
|
strArray1[1] = Lang.menu[39].Value;
|
|
flagArray1[1] = true;
|
|
numArray1[2] = 170;
|
|
numArray1[1] = 10;
|
|
strArray1[2] = Lang.menu[5].Value;
|
|
if (this.selectedMenu == 2 | flag5)
|
|
{
|
|
flag5 = false;
|
|
Main.menuMode = 2;
|
|
SoundEngine.PlaySound(11);
|
|
goto label_623;
|
|
}
|
|
else
|
|
goto label_623;
|
|
case 19:
|
|
flag4 = true;
|
|
num6 = Main.screenWidth / 2 - 16;
|
|
num7 = 210;
|
|
flag1 = true;
|
|
num8 = 370;
|
|
num2 = 240;
|
|
num4 = 60;
|
|
Main.PendingPlayer.skinColor = Main.selColor;
|
|
num5 = 3;
|
|
strArray1[0] = "";
|
|
strArray1[1] = Lang.menu[40].Value;
|
|
flagArray1[1] = true;
|
|
numArray1[2] = 170;
|
|
numArray1[1] = 10;
|
|
strArray1[2] = Lang.menu[5].Value;
|
|
if (this.selectedMenu == 2 | flag5)
|
|
{
|
|
flag5 = false;
|
|
Main.menuMode = 2;
|
|
SoundEngine.PlaySound(11);
|
|
goto label_623;
|
|
}
|
|
else
|
|
goto label_623;
|
|
case 20:
|
|
flag4 = true;
|
|
if (this.selectedMenu == 0)
|
|
{
|
|
Main.menuMode = 21;
|
|
SoundEngine.PlaySound(10);
|
|
Main.selColor = Main.PendingPlayer.shirtColor;
|
|
}
|
|
if (this.selectedMenu == 1)
|
|
{
|
|
Main.menuMode = 22;
|
|
SoundEngine.PlaySound(10);
|
|
Main.selColor = Main.PendingPlayer.underShirtColor;
|
|
}
|
|
if (this.selectedMenu == 2)
|
|
{
|
|
Main.menuMode = 23;
|
|
SoundEngine.PlaySound(10);
|
|
Main.selColor = Main.PendingPlayer.pantsColor;
|
|
}
|
|
if (this.selectedMenu == 3)
|
|
{
|
|
Main.selColor = Main.PendingPlayer.shoeColor;
|
|
Main.menuMode = 24;
|
|
SoundEngine.PlaySound(10);
|
|
}
|
|
if (this.selectedMenu == 5 | flag5)
|
|
{
|
|
flag5 = false;
|
|
SoundEngine.PlaySound(11);
|
|
Main.menuMode = 2;
|
|
}
|
|
if (this.selectedMenu == 4)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
Main.CycleClothingStyle(Main.PendingPlayer);
|
|
}
|
|
num6 = Main.screenWidth / 2 - 16;
|
|
num7 = 210;
|
|
num2 = 260;
|
|
num4 = 50;
|
|
num5 = 6;
|
|
strArray1[0] = Lang.menu[33].Value;
|
|
strArray1[1] = Lang.menu[34].Value;
|
|
strArray1[2] = Lang.menu[35].Value;
|
|
strArray1[3] = Lang.menu[36].Value;
|
|
strArray1[4] = Lang.menu[(int) sbyte.MaxValue].Value;
|
|
strArray1[5] = Lang.menu[5].Value;
|
|
numArray1[5] = 20;
|
|
goto label_623;
|
|
case 21:
|
|
flag4 = true;
|
|
num6 = Main.screenWidth / 2 - 16;
|
|
num7 = 210;
|
|
flag1 = true;
|
|
num8 = 370;
|
|
num2 = 240;
|
|
num4 = 60;
|
|
Main.PendingPlayer.shirtColor = Main.selColor;
|
|
num5 = 3;
|
|
strArray1[0] = "";
|
|
strArray1[1] = Lang.menu[41].Value;
|
|
flagArray1[1] = true;
|
|
numArray1[2] = 170;
|
|
numArray1[1] = 10;
|
|
strArray1[2] = Lang.menu[5].Value;
|
|
if (this.selectedMenu == 2 | flag5)
|
|
{
|
|
flag5 = false;
|
|
Main.menuMode = 20;
|
|
SoundEngine.PlaySound(11);
|
|
goto label_623;
|
|
}
|
|
else
|
|
goto label_623;
|
|
case 22:
|
|
flag4 = true;
|
|
num6 = Main.screenWidth / 2 - 16;
|
|
num7 = 210;
|
|
flag1 = true;
|
|
num8 = 370;
|
|
num2 = 240;
|
|
num4 = 60;
|
|
Main.PendingPlayer.underShirtColor = Main.selColor;
|
|
num5 = 3;
|
|
strArray1[0] = "";
|
|
strArray1[1] = Lang.menu[42].Value;
|
|
flagArray1[1] = true;
|
|
numArray1[2] = 170;
|
|
numArray1[1] = 10;
|
|
strArray1[2] = Lang.menu[5].Value;
|
|
if (this.selectedMenu == 2 | flag5)
|
|
{
|
|
flag5 = false;
|
|
Main.menuMode = 20;
|
|
SoundEngine.PlaySound(11);
|
|
goto label_623;
|
|
}
|
|
else
|
|
goto label_623;
|
|
case 23:
|
|
flag4 = true;
|
|
num6 = Main.screenWidth / 2 - 16;
|
|
num7 = 210;
|
|
flag1 = true;
|
|
num8 = 370;
|
|
num2 = 240;
|
|
num4 = 60;
|
|
Main.PendingPlayer.pantsColor = Main.selColor;
|
|
num5 = 3;
|
|
strArray1[0] = "";
|
|
strArray1[1] = Lang.menu[43].Value;
|
|
flagArray1[1] = true;
|
|
numArray1[2] = 170;
|
|
numArray1[1] = 10;
|
|
strArray1[2] = Lang.menu[5].Value;
|
|
if (this.selectedMenu == 2 | flag5)
|
|
{
|
|
flag5 = false;
|
|
Main.menuMode = 20;
|
|
SoundEngine.PlaySound(11);
|
|
goto label_623;
|
|
}
|
|
else
|
|
goto label_623;
|
|
case 24:
|
|
flag4 = true;
|
|
num6 = Main.screenWidth / 2 - 16;
|
|
num7 = 210;
|
|
flag1 = true;
|
|
num8 = 370;
|
|
num2 = 240;
|
|
num4 = 60;
|
|
Main.PendingPlayer.shoeColor = Main.selColor;
|
|
num5 = 3;
|
|
strArray1[0] = "";
|
|
strArray1[1] = Lang.menu[44].Value;
|
|
flagArray1[1] = true;
|
|
numArray1[2] = 170;
|
|
numArray1[1] = 10;
|
|
strArray1[2] = Lang.menu[5].Value;
|
|
if (this.selectedMenu == 2 | flag5)
|
|
{
|
|
flag5 = false;
|
|
Main.menuMode = 20;
|
|
SoundEngine.PlaySound(11);
|
|
goto label_623;
|
|
}
|
|
else
|
|
goto label_623;
|
|
case 25:
|
|
flag1 = true;
|
|
num8 = 320;
|
|
num2 = 200;
|
|
num4 = 10;
|
|
Main.mouseColor = Main.selColor;
|
|
Main.mouseColorSlider.SetHSL(Main.mouseColor);
|
|
num5 = 3;
|
|
strArray1[0] = "";
|
|
strArray1[1] = Lang.menu[64].Value;
|
|
flagArray1[1] = true;
|
|
numArray1[2] = 250;
|
|
numArray1[1] = 10;
|
|
strArray1[2] = Lang.menu[5].Value;
|
|
if (this.selectedMenu == 2 | flag5)
|
|
{
|
|
flag5 = false;
|
|
Main.menuMode = 1125;
|
|
SoundEngine.PlaySound(11);
|
|
goto label_623;
|
|
}
|
|
else
|
|
goto label_623;
|
|
case 26:
|
|
flag2 = true;
|
|
num2 = 200;
|
|
num4 = 10;
|
|
num5 = 3;
|
|
strArray1[0] = "";
|
|
strArray1[1] = Lang.menu[65].Value;
|
|
flagArray1[1] = true;
|
|
numArray1[2] = 250;
|
|
numArray1[1] = 10;
|
|
strArray1[2] = Lang.menu[5].Value;
|
|
if (this.selectedMenu == 2 | flag5)
|
|
{
|
|
flag5 = false;
|
|
Main.menuMode = 11;
|
|
SoundEngine.PlaySound(11);
|
|
goto label_623;
|
|
}
|
|
else
|
|
goto label_623;
|
|
case 27:
|
|
num2 = 176;
|
|
num4 = 22;
|
|
num5 = 16;
|
|
string[] strArray2 = new string[14]
|
|
{
|
|
Main.cUp,
|
|
Main.cDown,
|
|
Main.cLeft,
|
|
Main.cRight,
|
|
Main.cJump,
|
|
Main.cThrowItem,
|
|
Main.cInv,
|
|
Main.cHeal,
|
|
Main.cMana,
|
|
Main.cBuff,
|
|
Main.cHook,
|
|
Main.cTorch,
|
|
Main.cSmart,
|
|
Main.cMount
|
|
};
|
|
if (Main.setKey >= 0)
|
|
strArray2[Main.setKey] = "_";
|
|
strArray1[0] = Lang.menu[74].Value + strArray2[0];
|
|
strArray1[1] = Lang.menu[75].Value + strArray2[1];
|
|
strArray1[2] = Lang.menu[76].Value + strArray2[2];
|
|
strArray1[3] = Lang.menu[77].Value + strArray2[3];
|
|
strArray1[4] = Lang.menu[78].Value + strArray2[4];
|
|
strArray1[5] = Lang.menu[79].Value + strArray2[5];
|
|
strArray1[6] = Lang.menu[80].Value + strArray2[6];
|
|
strArray1[7] = Lang.menu[81].Value + strArray2[7];
|
|
strArray1[8] = Lang.menu[82].Value + strArray2[8];
|
|
strArray1[9] = Lang.menu[83].Value + strArray2[9];
|
|
strArray1[10] = Lang.menu[84].Value + strArray2[10];
|
|
strArray1[11] = Lang.menu[85].Value + strArray2[11];
|
|
strArray1[12] = Lang.menu[120].Value + strArray2[12];
|
|
strArray1[13] = Lang.menu[130].Value + strArray2[13];
|
|
for (int index28 = 0; index28 < 14; ++index28)
|
|
{
|
|
flagArray4[index28] = true;
|
|
numArray4[index28] = 0.45f;
|
|
numArray2[index28] = -80;
|
|
}
|
|
numArray4[14] = 0.8f;
|
|
numArray1[14] = 6;
|
|
strArray1[14] = Lang.menu[86].Value;
|
|
numArray4[15] = 0.8f;
|
|
numArray1[15] = 16;
|
|
strArray1[15] = Lang.menu[5].Value;
|
|
if (this.selectedMenu == 15 | flag5)
|
|
{
|
|
flag5 = false;
|
|
Main.menuMode = 11;
|
|
SoundEngine.PlaySound(11);
|
|
}
|
|
else if (this.selectedMenu == 14)
|
|
{
|
|
Main.ResetKeyBindings();
|
|
Main.setKey = -1;
|
|
SoundEngine.PlaySound(11);
|
|
}
|
|
else if (this.selectedMenu >= 0)
|
|
Main.setKey = this.selectedMenu;
|
|
if (Main.setKey >= 0)
|
|
{
|
|
List<Microsoft.Xna.Framework.Input.Keys> pressedKeys = PlayerInput.GetPressedKeys();
|
|
if (pressedKeys.Count > 0)
|
|
{
|
|
string str = string.Concat((object) pressedKeys[0]);
|
|
if (str != "None")
|
|
{
|
|
if (Main.setKey == 0)
|
|
Main.cUp = str;
|
|
if (Main.setKey == 1)
|
|
Main.cDown = str;
|
|
if (Main.setKey == 2)
|
|
Main.cLeft = str;
|
|
if (Main.setKey == 3)
|
|
Main.cRight = str;
|
|
if (Main.setKey == 4)
|
|
Main.cJump = str;
|
|
if (Main.setKey == 5)
|
|
Main.cThrowItem = str;
|
|
if (Main.setKey == 6)
|
|
Main.cInv = str;
|
|
if (Main.setKey == 7)
|
|
Main.cHeal = str;
|
|
if (Main.setKey == 8)
|
|
Main.cMana = str;
|
|
if (Main.setKey == 9)
|
|
Main.cBuff = str;
|
|
if (Main.setKey == 10)
|
|
Main.cHook = str;
|
|
if (Main.setKey == 11)
|
|
Main.cTorch = str;
|
|
if (Main.setKey == 12)
|
|
Main.cSmart = str;
|
|
if (Main.setKey == 13)
|
|
Main.cMount = str;
|
|
Main.setKey = -1;
|
|
goto label_623;
|
|
}
|
|
else
|
|
goto label_623;
|
|
}
|
|
else
|
|
goto label_623;
|
|
}
|
|
else
|
|
goto label_623;
|
|
case 28:
|
|
Main.caveParallax = (float) (1.0 - (double) Main.bgScroll / 500.0);
|
|
flag3 = true;
|
|
num2 = 240;
|
|
num4 = 60;
|
|
num5 = 3;
|
|
strArray1[0] = "";
|
|
strArray1[1] = Lang.menu[52].Value;
|
|
flagArray1[1] = true;
|
|
numArray1[2] = 170;
|
|
numArray1[1] = 10;
|
|
strArray1[2] = Lang.menu[5].Value;
|
|
if (this.selectedMenu == 2 | flag5)
|
|
{
|
|
flag5 = false;
|
|
Main.menuMode = 1111;
|
|
SoundEngine.PlaySound(11);
|
|
goto label_623;
|
|
}
|
|
else
|
|
goto label_623;
|
|
case 30:
|
|
string serverPassword3 = Netplay.ServerPassword;
|
|
PlayerInput.WritingText = true;
|
|
flag5 = false;
|
|
Main.instance.HandleIME();
|
|
Netplay.ServerPassword = Main.GetInputText(Netplay.ServerPassword);
|
|
string serverPassword4 = Netplay.ServerPassword;
|
|
if (serverPassword3 != serverPassword4)
|
|
SoundEngine.PlaySound(12);
|
|
strArray1[0] = Lang.menu[7].Value;
|
|
++this.textBlinkerCount;
|
|
if (this.textBlinkerCount >= 20)
|
|
{
|
|
this.textBlinkerState = this.textBlinkerState != 0 ? 0 : 1;
|
|
this.textBlinkerCount = 0;
|
|
}
|
|
strArray1[1] = Netplay.ServerPassword;
|
|
if (Main.HidePassword)
|
|
{
|
|
strArray1[1] = "";
|
|
for (int index29 = 0; index29 < Netplay.ServerPassword.Length; ++index29)
|
|
{
|
|
// ISSUE: explicit reference operation
|
|
^ref strArray1[1] += "*";
|
|
}
|
|
}
|
|
if (this.textBlinkerState == 1)
|
|
{
|
|
// ISSUE: explicit reference operation
|
|
^ref strArray1[1] += "|";
|
|
numArray2[1] = 1;
|
|
}
|
|
else
|
|
{
|
|
// ISSUE: explicit reference operation
|
|
^ref strArray1[1] += " ";
|
|
}
|
|
flagArray1[0] = true;
|
|
flagArray1[1] = true;
|
|
numArray1[1] = -20;
|
|
numArray1[2] = 20;
|
|
strArray1[2] = Lang.menu[4].Value;
|
|
strArray1[3] = Lang.menu[5].Value;
|
|
num5 = 4;
|
|
if (this.selectedMenu == 3 | flag5)
|
|
{
|
|
flag5 = false;
|
|
Main.menuMode = SocialAPI.Network == null ? 6 : 889;
|
|
Netplay.ServerPassword = "";
|
|
goto label_623;
|
|
}
|
|
else if (this.selectedMenu == 2 || Main.inputTextEnter || Main.autoPass)
|
|
{
|
|
string str1 = "-autoshutdown -password \"" + Main.ConvertToSafeArgument(Netplay.ServerPassword) + "\" -lang " + (object) Language.ActiveCulture.LegacyId;
|
|
string str2 = (!Main.ActiveWorldFileData.IsCloudSave ? (object) (str1 + " -world \"" + Main.worldPathName + "\"") : (object) (str1 + " -cloudworld \"" + Main.worldPathName + "\"")).ToString() + " -worldrollbackstokeep " + (object) Main.WorldRollingBackupsCountToKeep;
|
|
Main.tServer = new Process();
|
|
Main.tServer.StartInfo.FileName = "TerrariaServer.exe";
|
|
Main.tServer.StartInfo.Arguments = str2;
|
|
if (Main.libPath != "")
|
|
{
|
|
ProcessStartInfo startInfo = Main.tServer.StartInfo;
|
|
startInfo.Arguments = startInfo.Arguments + " -loadlib " + Main.libPath;
|
|
}
|
|
Main.tServer.StartInfo.UseShellExecute = false;
|
|
Main.tServer.StartInfo.CreateNoWindow = true;
|
|
if (SocialAPI.Network != null)
|
|
SocialAPI.Network.LaunchLocalServer(Main.tServer, Main.MenuServerMode);
|
|
else
|
|
Main.tServer.Start();
|
|
Netplay.SetRemoteIP("127.0.0.1");
|
|
Main.autoPass = true;
|
|
Main.statusText = Lang.menu[8].Value;
|
|
Netplay.StartTcpClient();
|
|
Main.menuMode = 10;
|
|
goto label_623;
|
|
}
|
|
else
|
|
goto label_623;
|
|
case 100:
|
|
num5 = 1;
|
|
strArray1[0] = Main.statusText;
|
|
flagArray1[0] = true;
|
|
num2 = 300;
|
|
goto label_623;
|
|
case 111:
|
|
for (int index30 = 0; index30 < 9; ++index30)
|
|
numArray4[index30] = 0.85f;
|
|
num2 = 210;
|
|
num4 = 55;
|
|
int index31 = 0;
|
|
strArray1[index31] = Lang.menu[73].Value + ": " + (object) Main.PendingResolutionWidth + "x" + (object) Main.PendingResolutionHeight;
|
|
if (this.selectedMenu == index31)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
int num14 = 0;
|
|
for (int index32 = 0; index32 < Main.numDisplayModes; ++index32)
|
|
{
|
|
if (Main.displayWidth[index32] == Main.PendingResolutionWidth && Main.displayHeight[index32] == Main.PendingResolutionHeight)
|
|
{
|
|
num14 = index32;
|
|
break;
|
|
}
|
|
}
|
|
int index33 = (num14 + 1) % Main.numDisplayModes;
|
|
Main.PendingResolutionWidth = Main.displayWidth[index33];
|
|
Main.PendingResolutionHeight = Main.displayHeight[index33];
|
|
}
|
|
int index34 = index31 + 1;
|
|
if (Main.IsBorderlessDisplayAvailable())
|
|
{
|
|
strArray1[index34] = Lang.menu[Main.PendingBorderlessState ? 245 : 246].Value;
|
|
if (this.selectedMenu == index34)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
Main.PendingBorderlessState = !Main.PendingBorderlessState;
|
|
}
|
|
++index34;
|
|
}
|
|
numArray1[index34] = 100;
|
|
strArray1[index34] = Lang.menu[134].Value;
|
|
if (this.selectedMenu == index34)
|
|
{
|
|
if (Main.graphics.IsFullScreen || Main.PendingBorderlessState != Main.screenBorderless || Main.PendingResolutionWidth != Main.screenWidth || Main.PendingResolutionHeight != Main.screenHeight)
|
|
{
|
|
Main.screenBorderless = Main.PendingBorderlessState;
|
|
Main.screenBorderlessPendingResizes = Main.screenBorderless ? 6 : 0;
|
|
Main.SetResolution(Main.PendingResolutionWidth, Main.PendingResolutionHeight);
|
|
}
|
|
SoundEngine.PlaySound(11);
|
|
Main.menuMode = 1111;
|
|
}
|
|
int index35 = index34 + 1;
|
|
strArray1[index35] = Lang.menu[5].Value;
|
|
numArray1[index35] = 100;
|
|
if (this.selectedMenu == index35 | flag5)
|
|
{
|
|
flag5 = false;
|
|
Main.PendingResolutionWidth = Main.graphics.PreferredBackBufferWidth;
|
|
Main.PendingResolutionHeight = Main.graphics.PreferredBackBufferHeight;
|
|
Main.PendingBorderlessState = Main.screenBorderless;
|
|
Main.menuMode = 1111;
|
|
SoundEngine.PlaySound(11);
|
|
}
|
|
num5 = index35 + 1;
|
|
goto label_623;
|
|
case 112:
|
|
num2 = 250;
|
|
num4 = 52;
|
|
num5 = 5;
|
|
numArray1[num5 - 1] = 18;
|
|
for (int index36 = 0; index36 < num5; ++index36)
|
|
numArray4[index36] = 0.78f;
|
|
int index37 = 0;
|
|
strArray1[index37] = !Main.autoSave ? Lang.menu[68].Value : Lang.menu[67].Value;
|
|
if (this.selectedMenu == index37)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
Main.autoSave = !Main.autoSave;
|
|
}
|
|
int index38 = index37 + 1;
|
|
strArray1[index38] = !Main.autoPause ? Lang.menu[70].Value : Lang.menu[69].Value;
|
|
if (this.selectedMenu == index38)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
Main.autoPause = !Main.autoPause;
|
|
}
|
|
int index39 = index38 + 1;
|
|
strArray1[index39] = !Main.mapEnabled ? Lang.menu[113].Value : Lang.menu[112].Value;
|
|
if (this.selectedMenu == index39)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
Main.mapEnabled = !Main.mapEnabled;
|
|
}
|
|
int index40 = index39 + 1;
|
|
strArray1[index40] = Main.HidePassword ? Lang.menu[212].Value : Lang.menu[211].Value;
|
|
if (this.selectedMenu == index40)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
Main.HidePassword = !Main.HidePassword;
|
|
}
|
|
int index41 = index40 + 1;
|
|
strArray1[index41] = Lang.menu[5].Value;
|
|
if (this.selectedMenu == index41 | flag5)
|
|
{
|
|
flag5 = false;
|
|
Main.menuMode = 11;
|
|
SoundEngine.PlaySound(11);
|
|
goto label_623;
|
|
}
|
|
else
|
|
goto label_623;
|
|
case 131:
|
|
int num15 = 7777;
|
|
PlayerInput.WritingText = true;
|
|
flag5 = false;
|
|
Main.instance.HandleIME();
|
|
string getPort1 = Main.getPort;
|
|
Main.getPort = Main.GetInputText(Main.getPort);
|
|
string getPort2 = Main.getPort;
|
|
if (getPort1 != getPort2)
|
|
SoundEngine.PlaySound(12);
|
|
strArray1[0] = Lang.menu[90].Value;
|
|
flagArray2[2] = true;
|
|
if (Main.getPort != "")
|
|
{
|
|
bool flag7 = false;
|
|
try
|
|
{
|
|
num15 = Convert.ToInt32(Main.getPort);
|
|
if (num15 > 0)
|
|
{
|
|
if (num15 <= (int) ushort.MaxValue)
|
|
flag7 = true;
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
if (flag7)
|
|
flagArray2[2] = false;
|
|
}
|
|
++this.textBlinkerCount;
|
|
if (this.textBlinkerCount >= 20)
|
|
{
|
|
this.textBlinkerState = this.textBlinkerState != 0 ? 0 : 1;
|
|
this.textBlinkerCount = 0;
|
|
}
|
|
strArray1[1] = Main.getPort;
|
|
if (this.textBlinkerState == 1)
|
|
{
|
|
// ISSUE: explicit reference operation
|
|
^ref strArray1[1] += "|";
|
|
numArray2[1] = 1;
|
|
}
|
|
else
|
|
{
|
|
// ISSUE: explicit reference operation
|
|
^ref strArray1[1] += " ";
|
|
}
|
|
flagArray1[0] = true;
|
|
flagArray1[1] = true;
|
|
numArray1[1] = -20;
|
|
numArray1[2] = 20;
|
|
strArray1[2] = Lang.menu[4].Value;
|
|
strArray1[3] = Lang.menu[5].Value;
|
|
num5 = 4;
|
|
if (this.selectedMenu == 3 | flag5)
|
|
{
|
|
flag5 = false;
|
|
SoundEngine.PlaySound(11);
|
|
Main.menuMode = 1;
|
|
}
|
|
if (this.selectedMenu == 2 || !flagArray2[2] && Main.inputTextEnter)
|
|
{
|
|
Netplay.ListenPort = num15;
|
|
Main.autoPass = false;
|
|
Netplay.SetRemoteIPAsync(Main.getIP, new Action(Main.StartClientGameplay));
|
|
Main.menuMode = 14;
|
|
Main.statusText = Language.GetTextValue("Net.ConnectingTo", (object) Main.getIP);
|
|
goto label_623;
|
|
}
|
|
else
|
|
goto label_623;
|
|
case 200:
|
|
num5 = 3;
|
|
strArray1[0] = Lang.menu[9].Value;
|
|
flagArray1[0] = true;
|
|
num2 -= 30;
|
|
numArray1[1] = 70;
|
|
numArray1[2] = 50;
|
|
strArray1[1] = Lang.menu[10].Value;
|
|
strArray1[2] = Lang.menu[6].Value;
|
|
if (this.selectedMenu == 1)
|
|
{
|
|
if (FileUtilities.Exists(Main.worldPathName + ".bak", Main.ActiveWorldFileData.IsCloudSave))
|
|
{
|
|
FileUtilities.Move(Main.worldPathName, Main.worldPathName + ".bad", Main.ActiveWorldFileData.IsCloudSave);
|
|
FileUtilities.Move(Main.worldPathName + ".bak", Main.worldPathName, Main.ActiveWorldFileData.IsCloudSave);
|
|
SoundEngine.PlaySound(10);
|
|
WorldGen.playWorld();
|
|
Main.menuMode = 10;
|
|
}
|
|
else
|
|
{
|
|
SoundEngine.PlaySound(11);
|
|
Main.menuMode = 0;
|
|
Main.netMode = 0;
|
|
}
|
|
}
|
|
if (this.selectedMenu == 2 | flag5)
|
|
{
|
|
flag5 = false;
|
|
SoundEngine.PlaySound(11);
|
|
Main.menuMode = 0;
|
|
Main.netMode = 0;
|
|
goto label_623;
|
|
}
|
|
else
|
|
goto label_623;
|
|
case 201:
|
|
num5 = 3;
|
|
strArray1[0] = Lang.menu[9].Value;
|
|
flagArray1[0] = true;
|
|
flagArray1[1] = true;
|
|
num2 -= 30;
|
|
numArray1[1] = -30;
|
|
numArray1[2] = 50;
|
|
strArray1[1] = Lang.menu[11].Value;
|
|
strArray1[2] = Lang.menu[5].Value;
|
|
if (this.selectedMenu == 2 | flag5)
|
|
{
|
|
flag5 = false;
|
|
SoundEngine.PlaySound(11);
|
|
Main.menuMode = 0;
|
|
Main.netMode = 0;
|
|
goto label_623;
|
|
}
|
|
else
|
|
goto label_623;
|
|
case 222:
|
|
strArray1[0] = this.focusMenu != 3 ? (this.focusMenu != 2 ? (this.focusMenu != 1 ? Lang.menu[32].Value : Lang.menu[31].Value) : Lang.menu[30].Value) : Lang.menu[29].Value;
|
|
num4 = 50;
|
|
numArray1[1] = 25;
|
|
numArray1[2] = 25;
|
|
numArray1[3] = 25;
|
|
flagArray1[0] = true;
|
|
strArray1[1] = Lang.menu[26].Value;
|
|
strArray1[2] = Lang.menu[25].Value;
|
|
numArray3[2] = (byte) 1;
|
|
strArray1[3] = Lang.menu[24].Value;
|
|
numArray3[3] = (byte) 2;
|
|
num5 = 4;
|
|
if (this.selectedMenu == 1)
|
|
{
|
|
Main.PendingPlayer.difficulty = (byte) 0;
|
|
Main.menuMode = 2;
|
|
goto label_623;
|
|
}
|
|
else if (this.selectedMenu == 2)
|
|
{
|
|
Main.menuMode = 2;
|
|
Main.PendingPlayer.difficulty = (byte) 1;
|
|
goto label_623;
|
|
}
|
|
else if (this.selectedMenu == 3)
|
|
{
|
|
Main.PendingPlayer.difficulty = (byte) 2;
|
|
Main.menuMode = 2;
|
|
goto label_623;
|
|
}
|
|
else
|
|
goto label_623;
|
|
case 252:
|
|
flag1 = true;
|
|
num8 = 320;
|
|
num2 = 200;
|
|
num4 = 10;
|
|
Main.MouseBorderColor = Main.selColor;
|
|
Main.mouseBorderColorSlider.SetHSL(Main.mouseColor);
|
|
num5 = 3;
|
|
strArray1[0] = "";
|
|
strArray1[1] = Lang.menu[217].Value;
|
|
flagArray1[1] = true;
|
|
numArray1[2] = 250;
|
|
numArray1[1] = 10;
|
|
strArray1[2] = Lang.menu[5].Value;
|
|
if (this.selectedMenu == 2 | flag5)
|
|
{
|
|
flag5 = false;
|
|
Main.menuMode = 1125;
|
|
SoundEngine.PlaySound(11);
|
|
goto label_623;
|
|
}
|
|
else
|
|
goto label_623;
|
|
case 882:
|
|
num5 = 2;
|
|
flagArray1[0] = true;
|
|
num2 = 300;
|
|
strArray1[0] = Main.statusText;
|
|
strArray1[1] = Lang.menu[6].Value;
|
|
if (this.selectedMenu == 1 | flag5)
|
|
{
|
|
flag5 = false;
|
|
SoundEngine.PlaySound(11);
|
|
Main.menuMode = 0;
|
|
Main.netMode = 0;
|
|
if (SocialAPI.Network != null)
|
|
{
|
|
SocialAPI.Network.CancelJoin();
|
|
goto label_623;
|
|
}
|
|
else
|
|
goto label_623;
|
|
}
|
|
else
|
|
goto label_623;
|
|
case 889:
|
|
num2 = 200;
|
|
num4 = 60;
|
|
numArray1[1] = 30;
|
|
numArray1[2] = 30;
|
|
numArray1[3] = 30;
|
|
numArray1[4] = 70;
|
|
numArray1[5] = 70;
|
|
num5 = 6;
|
|
strArray1[0] = Lang.menu[135].Value;
|
|
strArray1[4] = Lang.menu[144].Value;
|
|
strArray1[5] = Lang.menu[5].Value;
|
|
flagArray1[0] = true;
|
|
if (!Main.MenuServerMode.HasFlag((Enum) ServerMode.Lobby))
|
|
{
|
|
Main.MenuServerMode = ServerMode.None;
|
|
flagArray1[2] = true;
|
|
flagArray1[3] = true;
|
|
strArray1[1] = Lang.menu[136].Value;
|
|
strArray1[2] = "";
|
|
strArray1[3] = "";
|
|
}
|
|
else
|
|
{
|
|
strArray1[1] = Lang.menu[137].Value;
|
|
if (Main.MenuServerMode.HasFlag((Enum) ServerMode.FriendsCanJoin))
|
|
{
|
|
strArray1[2] = Lang.menu[139].Value;
|
|
strArray1[3] = !Main.MenuServerMode.HasFlag((Enum) ServerMode.FriendsOfFriends) ? Lang.menu[142].Value : Lang.menu[143].Value;
|
|
}
|
|
else
|
|
{
|
|
strArray1[2] = Lang.menu[138].Value;
|
|
strArray1[3] = !Main.MenuServerMode.HasFlag((Enum) ServerMode.FriendsOfFriends) ? Lang.menu[140].Value : Lang.menu[141].Value;
|
|
}
|
|
}
|
|
if (flag5)
|
|
{
|
|
flag5 = false;
|
|
this.selectedMenu = 5;
|
|
}
|
|
switch (this.selectedMenu)
|
|
{
|
|
case 1:
|
|
Main.MenuServerMode ^= ServerMode.Lobby;
|
|
SoundEngine.PlaySound(12);
|
|
goto label_623;
|
|
case 2:
|
|
Main.MenuServerMode ^= ServerMode.FriendsCanJoin;
|
|
SoundEngine.PlaySound(12);
|
|
goto label_623;
|
|
case 3:
|
|
Main.MenuServerMode ^= ServerMode.FriendsOfFriends;
|
|
SoundEngine.PlaySound(12);
|
|
goto label_623;
|
|
case 4:
|
|
Main.clrInput();
|
|
Netplay.ServerPassword = "";
|
|
Main.GetInputText("");
|
|
Main.autoPass = false;
|
|
Main.menuMode = 30;
|
|
SoundEngine.PlaySound(10);
|
|
goto label_623;
|
|
case 5:
|
|
Main.menuMode = 6;
|
|
SoundEngine.PlaySound(11);
|
|
goto label_623;
|
|
default:
|
|
goto label_623;
|
|
}
|
|
case 1111:
|
|
Main.bgScroll = (int) Math.Round((1.0 - (double) Main.caveParallax) * 500.0);
|
|
int index42 = 0;
|
|
strArray1[index42] = Main.graphics.IsFullScreen ? Lang.menu[49].Value : Lang.menu[50].Value;
|
|
if (this.selectedMenu == index42)
|
|
Main.ToggleFullScreen();
|
|
int index43 = index42 + 1;
|
|
strArray1[index43] = Lang.menu[51].Value;
|
|
if (this.selectedMenu == index43)
|
|
{
|
|
SoundEngine.PlaySound(10);
|
|
Main.menuMode = 111;
|
|
}
|
|
int index44 = index43 + 1;
|
|
strArray1[index44] = Lang.menu[52].Value;
|
|
if (this.selectedMenu == index44)
|
|
{
|
|
SoundEngine.PlaySound(11);
|
|
Main.menuMode = 28;
|
|
}
|
|
int index45 = index44 + 1;
|
|
strArray1[index45] = Lang.menu[247 + Main.FrameSkipMode].Value;
|
|
if (this.selectedMenu == index45)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
++Main.FrameSkipMode;
|
|
if (Main.FrameSkipMode < 0 || Main.FrameSkipMode > 2)
|
|
Main.FrameSkipMode = 0;
|
|
}
|
|
int index46 = index45 + 1;
|
|
strArray1[index46] = Language.GetTextValue("UI.LightMode_" + (object) Lighting.Mode);
|
|
if (this.selectedMenu == index46)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
Lighting.NextLightMode();
|
|
}
|
|
int index47 = index46 + 1;
|
|
switch (Main.qaStyle)
|
|
{
|
|
case 0:
|
|
strArray1[index47] = Lang.menu[59].Value;
|
|
break;
|
|
case 1:
|
|
strArray1[index47] = Lang.menu[60].Value;
|
|
break;
|
|
case 2:
|
|
strArray1[index47] = Lang.menu[61].Value;
|
|
break;
|
|
default:
|
|
strArray1[index47] = Lang.menu[62].Value;
|
|
break;
|
|
}
|
|
if (this.selectedMenu == index47)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
if (++Main.qaStyle > 3)
|
|
Main.qaStyle = 0;
|
|
}
|
|
int index48 = index47 + 1;
|
|
strArray1[index48] = Main.BackgroundEnabled ? Lang.menu[100].Value : Lang.menu[101].Value;
|
|
if (this.selectedMenu == index48)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
Main.BackgroundEnabled = !Main.BackgroundEnabled;
|
|
}
|
|
int index49 = index48 + 1;
|
|
strArray1[index49] = ChildSafety.Disabled ? Lang.menu[132].Value : Lang.menu[133].Value;
|
|
if (this.selectedMenu == index49)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
ChildSafety.Disabled = !ChildSafety.Disabled;
|
|
}
|
|
int index50 = index49 + 1;
|
|
strArray1[index50] = Main.SettingsEnabled_MinersWobble ? Lang.menu[250].Value : Lang.menu[251].Value;
|
|
if (this.selectedMenu == index50)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
Main.SettingsEnabled_MinersWobble = !Main.SettingsEnabled_MinersWobble;
|
|
}
|
|
int index51 = index50 + 1;
|
|
strArray1[index51] = Main.SettingsEnabled_TilesSwayInWind ? Language.GetTextValue("UI.TilesSwayInWindOn") : Language.GetTextValue("UI.TilesSwayInWindOff");
|
|
if (this.selectedMenu == index51)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
Main.SettingsEnabled_TilesSwayInWind = !Main.SettingsEnabled_TilesSwayInWind;
|
|
}
|
|
int index52 = index51 + 1;
|
|
strArray1[index52] = Language.GetTextValue("UI.Effects");
|
|
if (this.selectedMenu == index52)
|
|
{
|
|
SoundEngine.PlaySound(11);
|
|
Main.menuMode = 2008;
|
|
}
|
|
int num16 = index52;
|
|
int index53 = num16;
|
|
strArray1[index53] = Lang.menu[5].Value;
|
|
numArray1[index53] = 8;
|
|
if (this.selectedMenu == index53 | flag5)
|
|
{
|
|
flag5 = false;
|
|
SoundEngine.PlaySound(11);
|
|
Main.SaveSettings();
|
|
Main.menuMode = 11;
|
|
}
|
|
num2 = 186;
|
|
num4 = 30;
|
|
num5 = index53 + 1;
|
|
for (int index54 = 0; index54 < num16; ++index54)
|
|
numArray4[index54] = 0.6f;
|
|
goto label_623;
|
|
case 1112:
|
|
num2 = 210;
|
|
num4 = 36;
|
|
num5 = 9;
|
|
numArray1[num5 - 1] = 18;
|
|
for (int index55 = 0; index55 < num5; ++index55)
|
|
numArray4[index55] = 0.75f;
|
|
int index56 = 0;
|
|
strArray1[index56] = !Main.showItemText ? Lang.menu[72].Value : Lang.menu[71].Value;
|
|
if (this.selectedMenu == index56)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
Main.showItemText = !Main.showItemText;
|
|
}
|
|
int index57 = index56 + 1;
|
|
strArray1[index57] = Lang.menu[123].Value + " " + Lang.menu[124 + Main.invasionProgressMode].Value;
|
|
if (this.selectedMenu == index57)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
++Main.invasionProgressMode;
|
|
if (Main.invasionProgressMode >= 3)
|
|
Main.invasionProgressMode = 0;
|
|
}
|
|
int index58 = index57 + 1;
|
|
strArray1[index58] = Main.placementPreview ? Lang.menu[128].Value : Lang.menu[129].Value;
|
|
if (this.selectedMenu == index58)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
Main.placementPreview = !Main.placementPreview;
|
|
}
|
|
int index59 = index58 + 1;
|
|
strArray1[index59] = ItemSlot.Options.HighlightNewItems ? Lang.inter[117].Value : Lang.inter[116].Value;
|
|
if (this.selectedMenu == index59)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
ItemSlot.Options.HighlightNewItems = !ItemSlot.Options.HighlightNewItems;
|
|
}
|
|
int index60 = index59 + 1;
|
|
strArray1[index60] = Main.MouseShowBuildingGrid ? Lang.menu[229].Value : Lang.menu[230].Value;
|
|
if (this.selectedMenu == index60)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
Main.MouseShowBuildingGrid = !Main.MouseShowBuildingGrid;
|
|
}
|
|
int index61 = index60 + 1;
|
|
strArray1[index61] = Main.GamepadDisableInstructionsDisplay ? Lang.menu[241].Value : Lang.menu[242].Value;
|
|
if (this.selectedMenu == index61)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
Main.GamepadDisableInstructionsDisplay = !Main.GamepadDisableInstructionsDisplay;
|
|
}
|
|
int index62 = index61 + 1;
|
|
string str3 = "";
|
|
MinimapFrame minimapFrame1 = (MinimapFrame) null;
|
|
foreach (KeyValuePair<string, MinimapFrame> minimapFrame2 in Main.MinimapFrames)
|
|
{
|
|
MinimapFrame minimapFrame3 = minimapFrame2.Value;
|
|
if (minimapFrame3 == Main.ActiveMinimapFrame)
|
|
{
|
|
str3 = Language.GetTextValue("UI.MinimapFrame_" + minimapFrame2.Key);
|
|
break;
|
|
}
|
|
minimapFrame1 = minimapFrame3;
|
|
}
|
|
if (minimapFrame1 == null)
|
|
minimapFrame1 = Main.MinimapFrames.Values.Last<MinimapFrame>();
|
|
strArray1[index62] = Language.GetTextValue("UI.SelectMapBorder", (object) str3);
|
|
if (this.selectedMenu == index62)
|
|
Main.ActiveMinimapFrame = minimapFrame1;
|
|
int index63 = index62 + 1;
|
|
string str4 = "";
|
|
IPlayerResourcesDisplaySet resourcesDisplaySet1 = (IPlayerResourcesDisplaySet) null;
|
|
foreach (KeyValuePair<string, IPlayerResourcesDisplaySet> playerResourcesSet in Main.PlayerResourcesSets)
|
|
{
|
|
IPlayerResourcesDisplaySet resourcesDisplaySet2 = playerResourcesSet.Value;
|
|
if (resourcesDisplaySet2 == Main.ActivePlayerResourcesSet)
|
|
{
|
|
str4 = Language.GetTextValue("UI.HealthManaStyle_" + playerResourcesSet.Key);
|
|
break;
|
|
}
|
|
resourcesDisplaySet1 = resourcesDisplaySet2;
|
|
}
|
|
if (resourcesDisplaySet1 == null)
|
|
resourcesDisplaySet1 = Main.PlayerResourcesSets.Values.Last<IPlayerResourcesDisplaySet>();
|
|
strArray1[index63] = Language.GetTextValue("UI.SelectHealthStyle", (object) str4);
|
|
if (this.selectedMenu == index63)
|
|
Main.ActivePlayerResourcesSet = resourcesDisplaySet1;
|
|
int index64 = index63 + 1;
|
|
strArray1[index64] = Lang.menu[5].Value;
|
|
if (this.selectedMenu == index64 | flag5)
|
|
{
|
|
flag5 = false;
|
|
Main.menuMode = 11;
|
|
SoundEngine.PlaySound(11);
|
|
goto label_623;
|
|
}
|
|
else
|
|
goto label_623;
|
|
case 1125:
|
|
num2 = 232;
|
|
num4 = 38;
|
|
num5 = 7;
|
|
numArray1[num5 - 1] = 18;
|
|
for (int index65 = 0; index65 < num5; ++index65)
|
|
numArray4[index65] = 0.73f;
|
|
int index66 = 0;
|
|
strArray1[index66] = Lang.menu[64].Value;
|
|
if (this.selectedMenu == index66)
|
|
{
|
|
SoundEngine.PlaySound(10);
|
|
Main.selColor = Main.mouseColor;
|
|
Main.mouseColorSlider.SetHSL(Main.mouseColor);
|
|
Main.menuMode = 25;
|
|
}
|
|
int index67 = index66 + 1;
|
|
strArray1[index67] = Lang.menu[217].Value;
|
|
if (this.selectedMenu == index67)
|
|
{
|
|
SoundEngine.PlaySound(10);
|
|
Main.selColor = Main.MouseBorderColor;
|
|
Main.mouseBorderColorSlider.SetHSL(Main.mouseColor);
|
|
Main.menuMode = 252;
|
|
}
|
|
int index68 = index67 + 1;
|
|
strArray1[index68] = Main.cSmartCursorModeIsToggleAndNotHold ? Lang.menu[121].Value : Lang.menu[122].Value;
|
|
if (this.selectedMenu == index68)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
Main.cSmartCursorModeIsToggleAndNotHold = !Main.cSmartCursorModeIsToggleAndNotHold;
|
|
}
|
|
int index69 = index68 + 1;
|
|
strArray1[index69] = Player.SmartCursorSettings.SmartAxeAfterPickaxe ? Lang.menu[214].Value : Lang.menu[213].Value;
|
|
if (this.selectedMenu == index69)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
Player.SmartCursorSettings.SmartAxeAfterPickaxe = !Player.SmartCursorSettings.SmartAxeAfterPickaxe;
|
|
}
|
|
int index70 = index69 + 1;
|
|
strArray1[index70] = Player.SmartCursorSettings.SmartBlocksEnabled ? Lang.menu[215].Value : Lang.menu[216].Value;
|
|
if (this.selectedMenu == index70)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
Player.SmartCursorSettings.SmartBlocksEnabled = !Player.SmartCursorSettings.SmartBlocksEnabled;
|
|
}
|
|
int index71 = index70 + 1;
|
|
switch (LockOnHelper.UseMode)
|
|
{
|
|
case LockOnHelper.LockOnMode.FocusTarget:
|
|
strArray1[index71] = Lang.menu[232].Value;
|
|
break;
|
|
case LockOnHelper.LockOnMode.TargetClosest:
|
|
strArray1[index71] = Lang.menu[233].Value;
|
|
break;
|
|
case LockOnHelper.LockOnMode.ThreeDS:
|
|
strArray1[index71] = Lang.menu[234].Value;
|
|
break;
|
|
}
|
|
if (this.selectedMenu == index71)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
LockOnHelper.CycleUseModes();
|
|
}
|
|
int index72 = index71 + 1;
|
|
strArray1[index72] = Lang.menu[5].Value;
|
|
if (this.selectedMenu == index72 | flag5)
|
|
{
|
|
flag5 = false;
|
|
Main.menuMode = 11;
|
|
SoundEngine.PlaySound(11);
|
|
goto label_623;
|
|
}
|
|
else
|
|
goto label_623;
|
|
case 1127:
|
|
num2 = 250;
|
|
num4 = 52;
|
|
num5 = 4;
|
|
numArray1[num5 - 1] = 18;
|
|
for (int index73 = 0; index73 < num5; ++index73)
|
|
numArray4[index73] = 0.78f;
|
|
int index74 = 0;
|
|
strArray1[index74] = Main.ReversedUpDownArmorSetBonuses ? Lang.menu[220].Value : Lang.menu[221].Value;
|
|
if (this.selectedMenu == index74)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
Main.ReversedUpDownArmorSetBonuses = !Main.ReversedUpDownArmorSetBonuses;
|
|
}
|
|
int index75 = index74 + 1;
|
|
strArray1[index75] = ItemSlot.Options.DisableLeftShiftTrashCan ? Lang.menu[224].Value : Lang.menu[223].Value;
|
|
if (this.selectedMenu == index75)
|
|
{
|
|
SoundEngine.PlaySound(12);
|
|
ItemSlot.Options.DisableLeftShiftTrashCan = !ItemSlot.Options.DisableLeftShiftTrashCan;
|
|
}
|
|
int index76 = index75 + 1;
|
|
strArray1[index76] = Lang.menu[222].Value;
|
|
if (this.selectedMenu == index76)
|
|
{
|
|
SoundEngine.PlaySound(10);
|
|
Main.MenuUI.SetState((UIState) Main.ManageControlsMenu);
|
|
Main.menuMode = 888;
|
|
}
|
|
int index77 = index76 + 1;
|
|
strArray1[index77] = Lang.menu[5].Value;
|
|
if (this.selectedMenu == index77 | flag5)
|
|
{
|
|
flag5 = false;
|
|
Main.menuMode = 11;
|
|
SoundEngine.PlaySound(11);
|
|
goto label_623;
|
|
}
|
|
else
|
|
goto label_623;
|
|
case 2008:
|
|
num2 = 240;
|
|
num4 = 60;
|
|
num5 = 6;
|
|
strArray1[0] = "";
|
|
strArray1[1] = Language.GetTextValue("UI.Effects");
|
|
flagArray1[1] = true;
|
|
numArray1[1] = 10;
|
|
strArray1[2] = Language.GetTextValue("GameUI.StormEffects", Main.UseStormEffects ? (object) Language.GetTextValue("GameUI.Enabled") : (object) Language.GetTextValue("GameUI.Disabled"));
|
|
numArray4[2] = 0.8f;
|
|
strArray1[3] = Language.GetTextValue("GameUI.HeatDistortion", Main.UseHeatDistortion ? (object) Language.GetTextValue("GameUI.Enabled") : (object) Language.GetTextValue("GameUI.Disabled"));
|
|
numArray4[3] = 0.8f;
|
|
string textValue;
|
|
switch (Main.WaveQuality)
|
|
{
|
|
case 1:
|
|
textValue = Language.GetTextValue("GameUI.QualityLow");
|
|
break;
|
|
case 2:
|
|
textValue = Language.GetTextValue("GameUI.QualityMedium");
|
|
break;
|
|
case 3:
|
|
textValue = Language.GetTextValue("GameUI.QualityHigh");
|
|
break;
|
|
default:
|
|
textValue = Language.GetTextValue("GameUI.QualityOff");
|
|
break;
|
|
}
|
|
strArray1[4] = Language.GetTextValue("GameUI.WaveQuality", (object) textValue);
|
|
numArray4[4] = 0.8f;
|
|
strArray1[5] = Lang.menu[5].Value;
|
|
if (this.selectedMenu == 2)
|
|
Main.UseStormEffects = !Main.UseStormEffects;
|
|
if (this.selectedMenu == 3)
|
|
Main.UseHeatDistortion = !Main.UseHeatDistortion;
|
|
if (this.selectedMenu == 4)
|
|
Main.WaveQuality = (Main.WaveQuality + 1) % 4;
|
|
if (this.selectedMenu == 5 | flag5)
|
|
{
|
|
flag5 = false;
|
|
Main.menuMode = 1111;
|
|
SoundEngine.PlaySound(11);
|
|
goto label_623;
|
|
}
|
|
else
|
|
goto label_623;
|
|
case 5000:
|
|
Main.MenuUI.SetState((UIState) new UIVirtualKeyboard(Language.GetTextValue("UI.EnterSeed"), "", new UIVirtualKeyboard.KeyboardSubmitEvent(this.OnSeedSelected), Main.CreateGoToMenuEvent(7), allowEmpty: true));
|
|
Main.menuMode = 888;
|
|
goto label_623;
|
|
case 272727:
|
|
num2 = 200;
|
|
num4 = 30;
|
|
num5 = 14;
|
|
string[] strArray3 = new string[12]
|
|
{
|
|
Main.cMapStyle,
|
|
Main.cMapFull,
|
|
Main.cMapZoomIn,
|
|
Main.cMapZoomOut,
|
|
Main.cMapAlphaUp,
|
|
Main.cMapAlphaDown,
|
|
null,
|
|
null,
|
|
null,
|
|
null,
|
|
null,
|
|
null
|
|
};
|
|
if (Main.setKey >= 0)
|
|
strArray3[Main.setKey] = "_";
|
|
strArray1[0] = Lang.menu[106].Value + strArray3[0];
|
|
strArray1[1] = Lang.menu[107].Value + strArray3[1];
|
|
strArray1[2] = Lang.menu[108].Value + strArray3[2];
|
|
strArray1[3] = Lang.menu[109].Value + strArray3[3];
|
|
strArray1[4] = Lang.menu[110].Value + strArray3[4];
|
|
strArray1[5] = Lang.menu[111].Value + strArray3[5];
|
|
for (int index78 = 0; index78 < 6; ++index78)
|
|
{
|
|
flagArray4[index78] = true;
|
|
numArray4[index78] = 0.55f;
|
|
numArray2[index78] = -140;
|
|
}
|
|
numArray4[6] = 0.8f;
|
|
numArray4[6] = 0.8f;
|
|
numArray1[6] = 6;
|
|
strArray1[6] = Lang.menu[86].Value;
|
|
numArray1[7] = 16;
|
|
strArray1[7] = Lang.menu[5].Value;
|
|
if (this.selectedMenu == 7 | flag5)
|
|
{
|
|
flag5 = false;
|
|
Main.menuMode = 11;
|
|
SoundEngine.PlaySound(11);
|
|
}
|
|
else if (this.selectedMenu == 6)
|
|
{
|
|
Main.cMapStyle = "Tab";
|
|
Main.cMapFull = "M";
|
|
Main.cMapZoomIn = "Add";
|
|
Main.cMapZoomOut = "Subtract";
|
|
Main.cMapAlphaUp = "PageUp";
|
|
Main.cMapAlphaDown = "PageDown";
|
|
Main.setKey = -1;
|
|
SoundEngine.PlaySound(11);
|
|
}
|
|
else if (this.selectedMenu >= 0)
|
|
Main.setKey = this.selectedMenu;
|
|
if (Main.setKey >= 0)
|
|
{
|
|
List<Microsoft.Xna.Framework.Input.Keys> pressedKeys = PlayerInput.GetPressedKeys();
|
|
if (pressedKeys.Count > 0)
|
|
{
|
|
string str5 = string.Concat((object) pressedKeys[0]);
|
|
if (str5 != "None")
|
|
{
|
|
if (Main.setKey == 0)
|
|
Main.cMapStyle = str5;
|
|
if (Main.setKey == 1)
|
|
Main.cMapFull = str5;
|
|
if (Main.setKey == 2)
|
|
Main.cMapZoomIn = str5;
|
|
if (Main.setKey == 3)
|
|
Main.cMapZoomOut = str5;
|
|
if (Main.setKey == 4)
|
|
Main.cMapAlphaUp = str5;
|
|
if (Main.setKey == 5)
|
|
Main.cMapAlphaDown = str5;
|
|
Main.setKey = -1;
|
|
goto label_623;
|
|
}
|
|
else
|
|
goto label_623;
|
|
}
|
|
else
|
|
goto label_623;
|
|
}
|
|
else
|
|
goto label_623;
|
|
case 1000000:
|
|
num5 = 2;
|
|
strArray1[0] = Main.statusText;
|
|
flagArray1[0] = true;
|
|
num2 = 220;
|
|
num4 = 250;
|
|
strArray1[1] = Lang.menu[5].Value;
|
|
if (this.selectedMenu == 1 | flag5)
|
|
{
|
|
flag5 = false;
|
|
SoundEngine.PlaySound(11);
|
|
Main.menuMode = 6;
|
|
Main.netMode = 0;
|
|
goto label_623;
|
|
}
|
|
else
|
|
goto label_623;
|
|
default:
|
|
goto label_623;
|
|
}
|
|
}
|
|
num5 = 2;
|
|
strArray1[0] = Main.statusText;
|
|
flagArray1[0] = true;
|
|
num2 = 300;
|
|
int num17 = Main.statusText.Split('\n').Length - 1;
|
|
numArray4[0] = (float) (1.0 - (double) num17 * 0.0399999991059303);
|
|
numArray1[0] = num17 * -18;
|
|
numArray1[1] = num17 * 28;
|
|
strArray1[1] = Lang.menu[6].Value;
|
|
if (this.selectedMenu == 1 | flag5)
|
|
{
|
|
flag5 = false;
|
|
Netplay.InvalidateAllOngoingIPSetAttempts();
|
|
Netplay.Disconnect = true;
|
|
Netplay.Connection.Socket.Close();
|
|
SoundEngine.PlaySound(11);
|
|
Main.menuMode = 0;
|
|
Main.netMode = 0;
|
|
if (Main.tServer != null)
|
|
{
|
|
try
|
|
{
|
|
Main.tServer.Kill();
|
|
Main.tServer = (Process) null;
|
|
break;
|
|
}
|
|
catch
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
break;
|
|
}
|
|
else
|
|
break;
|
|
}
|
|
label_623:
|
|
if (Main.menuMode == 888)
|
|
{
|
|
if (!Main._blockFancyUIWhileLoading)
|
|
Main.MenuUI.Draw(Main.spriteBatch, gameTime);
|
|
}
|
|
else
|
|
Main.MenuUI.SetState((UIState) null);
|
|
if (UILinkPointNavigator.Shortcuts.BackButtonInUse && !flag5)
|
|
UILinkPointNavigator.Shortcuts.BackButtonLock = true;
|
|
int num18 = this.focusMenu;
|
|
if (Main.menuMode != menuMode2)
|
|
{
|
|
if (Main.menuMode == 10)
|
|
Main.gameTips.ClearTips();
|
|
Main.blockMouse = true;
|
|
Main.menuSkip = 0;
|
|
num5 = 0;
|
|
if (PlayerInput.UsingGamepad && Main.InvisibleCursorForGamepad)
|
|
{
|
|
this.focusMenu = num18 = -1;
|
|
int num19;
|
|
PlayerInput.MouseY = num19 = 0;
|
|
PlayerInput.MouseX = num19;
|
|
Main.mouseY = num19;
|
|
Main.mouseX = num19;
|
|
}
|
|
for (int index79 = 0; index79 < Main.maxMenuItems; ++index79)
|
|
this.menuItemScale[index79] = 0.8f;
|
|
}
|
|
if (!Main.mouseLeft)
|
|
Main.blockMouse = true;
|
|
this.selectedMenu = -1;
|
|
this.selectedMenu2 = -1;
|
|
this.focusMenu = -1;
|
|
bool flag8 = Main.mouseLeft && !PlayerInput.UsingGamepad;
|
|
if (!flag1)
|
|
{
|
|
this.grabColorSlider = 0;
|
|
Main.hBar = -1f;
|
|
Main.sBar = -1f;
|
|
Main.lBar = -1f;
|
|
Main.aBar = -1f;
|
|
}
|
|
if (flag1)
|
|
{
|
|
if (!Main.mouseLeft)
|
|
{
|
|
this.grabColorSlider = 0;
|
|
Main.blockMouse = false;
|
|
}
|
|
int focusColor = Main.focusColor;
|
|
Main.focusColor = 0;
|
|
int num20 = num8;
|
|
int num21 = Main.screenWidth / 2 - TextureAssets.Hue.Width() / 2;
|
|
int num22 = 167;
|
|
Vector3 hsl = Main.rgbToHsl(Main.selColor);
|
|
float Hue = hsl.X;
|
|
float Saturation1 = hsl.Y;
|
|
float Luminosity1 = hsl.Z;
|
|
float num23 = (float) Main.selColor.A / (float) byte.MaxValue;
|
|
if ((double) Main.hBar == -1.0 || (double) Main.sBar == -1.0 || (double) Main.lBar == -1.0 || (double) Main.aBar == -1.0)
|
|
{
|
|
Main.hBar = Hue;
|
|
Main.sBar = Saturation1;
|
|
Main.lBar = Luminosity1;
|
|
Main.aBar = num23;
|
|
}
|
|
else
|
|
{
|
|
Hue = Main.hBar;
|
|
Saturation1 = Main.sBar;
|
|
Luminosity1 = Main.lBar;
|
|
float aBar = Main.aBar;
|
|
}
|
|
Main.spriteBatch.Draw(TextureAssets.Hue.Value, new Vector2((float) num21, (float) num20), Microsoft.Xna.Framework.Color.White);
|
|
if (Main.mouseX > num21 - 4 && Main.mouseX < num21 + TextureAssets.Hue.Width() + 4 && Main.mouseY > num20 - 4 && Main.mouseY < num20 + TextureAssets.Hue.Height() + 4 && this.grabColorSlider == 0 || this.grabColorSlider == 1)
|
|
Main.spriteBatch.Draw(TextureAssets.ColorHighlight.Value, new Vector2((float) num21, (float) num20), Main.OurFavoriteColor);
|
|
Main.spriteBatch.Draw(TextureAssets.ColorSlider.Value, new Vector2((float) num21 + (float) (TextureAssets.Hue.Width() - 2) * Main.hBar - (float) (TextureAssets.ColorSlider.Width() / 2), (float) (num20 - TextureAssets.ColorSlider.Height() / 2 + TextureAssets.Hue.Height() / 2)), Microsoft.Xna.Framework.Color.White);
|
|
if (Main.mouseX > num21 - 4 && Main.mouseX < num21 + TextureAssets.Hue.Width() + 4 && Main.mouseY > num20 - 4 && Main.mouseY < num20 + TextureAssets.Hue.Height() + 4 && this.grabColorSlider == 0 || this.grabColorSlider == 1)
|
|
{
|
|
Main.focusColor = 1;
|
|
UILinkPointNavigator.Shortcuts.OPTIONS_BUTTON_SPECIALFEATURE = 5;
|
|
if (flag8 && !Main.blockMouse)
|
|
{
|
|
this.grabColorSlider = 1;
|
|
Hue = (float) (Main.mouseX - num21) / (float) TextureAssets.Hue.Width();
|
|
if ((double) Hue < 0.0)
|
|
Hue = 0.0f;
|
|
if ((double) Hue > 1.0)
|
|
Hue = 1f;
|
|
Main.hBar = Hue;
|
|
}
|
|
}
|
|
GamepadMainMenuHandler.MenuItemPositions.Add(new Vector2((float) num21, (float) num20) + TextureAssets.ColorBar.Value.Size() / 2f);
|
|
int num24 = num20 + 26;
|
|
Main.spriteBatch.Draw(TextureAssets.ColorBar.Value, new Vector2((float) num21, (float) num24), Microsoft.Xna.Framework.Color.White);
|
|
for (int index80 = 0; index80 <= num22; ++index80)
|
|
{
|
|
float Saturation2 = (float) index80 / (float) num22;
|
|
Microsoft.Xna.Framework.Color rgb = Main.hslToRgb(Hue, Saturation2, Luminosity1);
|
|
Main.spriteBatch.Draw(TextureAssets.ColorBlip.Value, new Vector2((float) (num21 + index80 + 5), (float) (num24 + 4)), rgb);
|
|
}
|
|
if (Main.mouseX > num21 - 4 && Main.mouseX < num21 + TextureAssets.Hue.Width() + 4 && Main.mouseY > num24 - 4 && Main.mouseY < num24 + TextureAssets.Hue.Height() + 4 && this.grabColorSlider == 0 || this.grabColorSlider == 2)
|
|
Main.spriteBatch.Draw(TextureAssets.ColorHighlight.Value, new Vector2((float) num21, (float) num24), Main.OurFavoriteColor);
|
|
Main.spriteBatch.Draw(TextureAssets.ColorSlider.Value, new Vector2((float) num21 + (float) (TextureAssets.Hue.Width() - 2) * Main.sBar - (float) (TextureAssets.ColorSlider.Width() / 2), (float) (num24 - TextureAssets.ColorSlider.Height() / 2 + TextureAssets.Hue.Height() / 2)), Microsoft.Xna.Framework.Color.White);
|
|
if (Main.mouseX > num21 - 4 && Main.mouseX < num21 + TextureAssets.Hue.Width() + 4 && Main.mouseY > num24 - 4 && Main.mouseY < num24 + TextureAssets.Hue.Height() + 4 && this.grabColorSlider == 0 || this.grabColorSlider == 2)
|
|
{
|
|
Main.focusColor = 2;
|
|
UILinkPointNavigator.Shortcuts.OPTIONS_BUTTON_SPECIALFEATURE = 6;
|
|
if (flag8 && !Main.blockMouse)
|
|
{
|
|
this.grabColorSlider = 2;
|
|
Saturation1 = (float) (Main.mouseX - num21) / (float) TextureAssets.Hue.Width();
|
|
if ((double) Saturation1 < 0.0)
|
|
Saturation1 = 0.0f;
|
|
if ((double) Saturation1 > 1.0)
|
|
Saturation1 = 1f;
|
|
Main.sBar = Saturation1;
|
|
}
|
|
}
|
|
GamepadMainMenuHandler.MenuItemPositions.Add(new Vector2((float) num21, (float) num24) + TextureAssets.ColorBar.Value.Size() / 2f);
|
|
int num25 = num24 + 26;
|
|
Main.spriteBatch.Draw(TextureAssets.ColorBar.Value, new Vector2((float) num21, (float) num25), Microsoft.Xna.Framework.Color.White);
|
|
float num26 = 0.15f;
|
|
if (Main.menuMode == 252)
|
|
num26 = 0.0f;
|
|
for (int index81 = 0; index81 <= num22; ++index81)
|
|
{
|
|
float Luminosity2 = (float) index81 / (float) num22;
|
|
Microsoft.Xna.Framework.Color rgb = Main.hslToRgb(Hue, Saturation1, Luminosity2);
|
|
Main.spriteBatch.Draw(TextureAssets.ColorBlip.Value, new Vector2((float) (num21 + index81 + 5), (float) (num25 + 4)), rgb);
|
|
}
|
|
if (Main.mouseX > num21 - 4 && Main.mouseX < num21 + TextureAssets.Hue.Width() + 4 && Main.mouseY > num25 - 4 && Main.mouseY < num25 + TextureAssets.Hue.Height() + 4 && this.grabColorSlider == 0 || this.grabColorSlider == 3)
|
|
Main.spriteBatch.Draw(TextureAssets.ColorHighlight.Value, new Vector2((float) num21, (float) num25), Main.OurFavoriteColor);
|
|
Main.spriteBatch.Draw(TextureAssets.ColorSlider.Value, new Vector2((float) num21 + (float) (TextureAssets.Hue.Width() - 2) * (float) (((double) Main.lBar - (double) num26) / (1.0 - (double) num26)) - (float) (TextureAssets.ColorSlider.Width() / 2), (float) (num25 - TextureAssets.ColorSlider.Height() / 2 + TextureAssets.Hue.Height() / 2)), Microsoft.Xna.Framework.Color.White);
|
|
if (Main.mouseX > num21 - 4 && Main.mouseX < num21 + TextureAssets.Hue.Width() + 4 && Main.mouseY > num25 - 4 && Main.mouseY < num25 + TextureAssets.Hue.Height() + 4 && this.grabColorSlider == 0 || this.grabColorSlider == 3)
|
|
{
|
|
Main.focusColor = 3;
|
|
UILinkPointNavigator.Shortcuts.OPTIONS_BUTTON_SPECIALFEATURE = 7;
|
|
if (flag8 && !Main.blockMouse)
|
|
{
|
|
this.grabColorSlider = 3;
|
|
float num27 = (float) (Main.mouseX - num21) / (float) TextureAssets.Hue.Width();
|
|
if ((double) num27 < 0.0)
|
|
num27 = 0.0f;
|
|
if ((double) num27 > 1.0)
|
|
num27 = 1f;
|
|
Luminosity1 = num27 * (1f - num26) + num26;
|
|
Main.lBar = Luminosity1;
|
|
}
|
|
}
|
|
GamepadMainMenuHandler.MenuItemPositions.Add(new Vector2((float) num21, (float) num25) + TextureAssets.ColorBar.Value.Size() / 2f);
|
|
bool flag9 = false;
|
|
if (Main.menuMode == 252)
|
|
{
|
|
int num28 = num25 + 26;
|
|
flag9 = true;
|
|
Main.spriteBatch.Draw(TextureAssets.ColorBar.Value, new Vector2((float) num21, (float) num28), Microsoft.Xna.Framework.Color.White);
|
|
Microsoft.Xna.Framework.Color rgb = Main.hslToRgb(Hue, Saturation1, Luminosity1);
|
|
for (int index82 = 0; index82 <= num22; ++index82)
|
|
{
|
|
float num29 = (float) index82 / (float) num22;
|
|
Microsoft.Xna.Framework.Color color4 = rgb * num29;
|
|
Main.spriteBatch.Draw(TextureAssets.ColorBlip.Value, new Vector2((float) (num21 + index82 + 5), (float) (num28 + 4)), color4);
|
|
}
|
|
if (Main.mouseX > num21 - 4 && Main.mouseX < num21 + TextureAssets.Hue.Width() + 4 && Main.mouseY > num28 - 4 && Main.mouseY < num28 + TextureAssets.Hue.Height() + 4 && this.grabColorSlider == 0 || this.grabColorSlider == 4)
|
|
Main.spriteBatch.Draw(TextureAssets.ColorHighlight.Value, new Vector2((float) num21, (float) num28), Main.OurFavoriteColor);
|
|
Main.spriteBatch.Draw(TextureAssets.ColorSlider.Value, new Vector2((float) num21 + (float) (TextureAssets.Hue.Width() - 2) * Main.aBar - (float) (TextureAssets.ColorSlider.Width() / 2), (float) (num28 - TextureAssets.ColorSlider.Height() / 2 + TextureAssets.Hue.Height() / 2)), Microsoft.Xna.Framework.Color.White);
|
|
if (Main.mouseX > num21 - 4 && Main.mouseX < num21 + TextureAssets.Hue.Width() + 4 && Main.mouseY > num28 - 4 && Main.mouseY < num28 + TextureAssets.Hue.Height() + 4 && this.grabColorSlider == 0 || this.grabColorSlider == 4)
|
|
{
|
|
Main.focusColor = 4;
|
|
UILinkPointNavigator.Shortcuts.OPTIONS_BUTTON_SPECIALFEATURE = 8;
|
|
if (Main.mouseLeft && !Main.blockMouse)
|
|
{
|
|
this.grabColorSlider = 4;
|
|
float num30 = (float) (Main.mouseX - num21) / (float) TextureAssets.Hue.Width();
|
|
if ((double) num30 < 0.0)
|
|
num30 = 0.0f;
|
|
if ((double) num30 > 1.0)
|
|
num30 = 1f;
|
|
Main.aBar = num30;
|
|
}
|
|
}
|
|
GamepadMainMenuHandler.MenuItemPositions.Add(new Vector2((float) num21, (float) num28) + TextureAssets.ColorBar.Value.Size() / 2f);
|
|
}
|
|
if (focusColor != Main.focusColor)
|
|
SoundEngine.PlaySound(12);
|
|
Main.selColor = Main.hslToRgb(Main.hBar, Main.sBar, Main.lBar);
|
|
if (flag9)
|
|
Main.selColor.A = (byte) ((double) Main.aBar * (double) byte.MaxValue);
|
|
}
|
|
else if (flag1)
|
|
{
|
|
string str6 = "";
|
|
for (int index83 = 0; index83 < 6; ++index83)
|
|
{
|
|
int num31 = num8;
|
|
int num32 = 370 + Main.screenWidth / 2 - 400;
|
|
if (index83 == 0)
|
|
str6 = Lang.menu[95].Value;
|
|
if (index83 == 1)
|
|
{
|
|
str6 = Lang.menu[96].Value;
|
|
num31 += 30;
|
|
}
|
|
if (index83 == 2)
|
|
{
|
|
str6 = Lang.menu[97].Value;
|
|
num31 += 60;
|
|
}
|
|
if (index83 == 3)
|
|
{
|
|
str6 = string.Concat((object) Main.selColor.R);
|
|
num32 += 90;
|
|
}
|
|
if (index83 == 4)
|
|
{
|
|
str6 = string.Concat((object) Main.selColor.G);
|
|
num32 += 90;
|
|
num31 += 30;
|
|
}
|
|
if (index83 == 5)
|
|
{
|
|
str6 = string.Concat((object) Main.selColor.B);
|
|
num32 += 90;
|
|
num31 += 60;
|
|
}
|
|
for (int index84 = 0; index84 < 5; ++index84)
|
|
{
|
|
Microsoft.Xna.Framework.Color color5 = Microsoft.Xna.Framework.Color.Black;
|
|
if (index84 == 4)
|
|
{
|
|
color5 = color1;
|
|
color5.R = (byte) (((int) byte.MaxValue + (int) color5.R) / 2);
|
|
color5.G = (byte) (((int) byte.MaxValue + (int) color5.R) / 2);
|
|
color5.B = (byte) (((int) byte.MaxValue + (int) color5.R) / 2);
|
|
}
|
|
int maxValue = (int) byte.MaxValue;
|
|
int num33 = (int) color5.R - ((int) byte.MaxValue - maxValue);
|
|
if (num33 < 0)
|
|
num33 = 0;
|
|
color5 = new Microsoft.Xna.Framework.Color((int) (byte) num33, (int) (byte) num33, (int) (byte) num33, (int) (byte) maxValue);
|
|
int num34 = 0;
|
|
int num35 = 0;
|
|
if (index84 == 0)
|
|
num34 = -2;
|
|
if (index84 == 1)
|
|
num34 = 2;
|
|
if (index84 == 2)
|
|
num35 = -2;
|
|
if (index84 == 3)
|
|
num35 = 2;
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.DeathText.Value, str6, new Vector2((float) (num32 + num34), (float) (num31 + num35)), color5, 0.0f, new Vector2(), 0.5f, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
bool flag10 = false;
|
|
for (int index85 = 0; index85 < 2; ++index85)
|
|
{
|
|
for (int index86 = 0; index86 < 3; ++index86)
|
|
{
|
|
int num36 = num8 + index86 * 30 - 12;
|
|
int num37 = 360 + Main.screenWidth / 2 - 400;
|
|
float num38 = 0.9f;
|
|
int num39;
|
|
if (index85 == 0)
|
|
{
|
|
num39 = num37 - 70;
|
|
num36 += 2;
|
|
}
|
|
else
|
|
num39 = num37 - 40;
|
|
string str7 = "-";
|
|
if (index85 == 1)
|
|
str7 = "+";
|
|
Vector2 vector2 = new Vector2(24f, 24f);
|
|
int num40 = 142;
|
|
if (Main.mouseX > num39 && (double) Main.mouseX < (double) num39 + (double) vector2.X && Main.mouseY > num36 + 13 && (double) Main.mouseY < (double) (num36 + 13) + (double) vector2.Y)
|
|
{
|
|
if (Main.focusColor != (index85 + 1) * (index86 + 10))
|
|
SoundEngine.PlaySound(12);
|
|
Main.focusColor = (index85 + 1) * (index86 + 10);
|
|
flag10 = true;
|
|
num40 = (int) byte.MaxValue;
|
|
if (Main.mouseLeft)
|
|
{
|
|
if (Main.colorDelay <= 1)
|
|
{
|
|
Main.colorDelay = Main.colorDelay != 0 ? 3 : 40;
|
|
int num41 = index85;
|
|
if (index85 == 0)
|
|
{
|
|
num41 = -1;
|
|
if ((int) Main.selColor.R + (int) Main.selColor.G + (int) Main.selColor.B <= 150)
|
|
num41 = 0;
|
|
}
|
|
if (index86 == 0 && (int) Main.selColor.R + num41 >= 0 && (int) Main.selColor.R + num41 <= (int) byte.MaxValue)
|
|
Main.selColor.R += (byte) num41;
|
|
if (index86 == 1 && (int) Main.selColor.G + num41 >= 0 && (int) Main.selColor.G + num41 <= (int) byte.MaxValue)
|
|
Main.selColor.G += (byte) num41;
|
|
if (index86 == 2 && (int) Main.selColor.B + num41 >= 0 && (int) Main.selColor.B + num41 <= (int) byte.MaxValue)
|
|
Main.selColor.B += (byte) num41;
|
|
}
|
|
--Main.colorDelay;
|
|
}
|
|
else
|
|
Main.colorDelay = 0;
|
|
}
|
|
for (int index87 = 0; index87 < 5; ++index87)
|
|
{
|
|
Microsoft.Xna.Framework.Color color6 = Microsoft.Xna.Framework.Color.Black;
|
|
if (index87 == 4)
|
|
{
|
|
color6 = color1;
|
|
color6.R = (byte) (((int) byte.MaxValue + (int) color6.R) / 2);
|
|
color6.G = (byte) (((int) byte.MaxValue + (int) color6.R) / 2);
|
|
color6.B = (byte) (((int) byte.MaxValue + (int) color6.R) / 2);
|
|
}
|
|
int num42 = (int) color6.R - ((int) byte.MaxValue - num40);
|
|
if (num42 < 0)
|
|
num42 = 0;
|
|
color6 = new Microsoft.Xna.Framework.Color((int) (byte) num42, (int) (byte) num42, (int) (byte) num42, (int) (byte) num40);
|
|
int num43 = 0;
|
|
int num44 = 0;
|
|
if (index87 == 0)
|
|
num43 = -2;
|
|
if (index87 == 1)
|
|
num43 = 2;
|
|
if (index87 == 2)
|
|
num44 = -2;
|
|
if (index87 == 3)
|
|
num44 = 2;
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.DeathText.Value, str7, new Vector2((float) (num39 + num43), (float) (num36 + num44)), color6, 0.0f, new Vector2(), num38, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
}
|
|
if (!flag10)
|
|
{
|
|
Main.focusColor = 0;
|
|
Main.colorDelay = 0;
|
|
}
|
|
}
|
|
if (flag2)
|
|
{
|
|
float x = (float) (Main.screenWidth / 2 - 40 + 37);
|
|
int num45 = 320;
|
|
string text = "";
|
|
for (int index88 = 0; index88 < 6; ++index88)
|
|
{
|
|
int num46 = num45;
|
|
int num47 = 370 + Main.screenWidth / 2 - 400 + 37;
|
|
switch (index88)
|
|
{
|
|
case 0:
|
|
text = Lang.menu[98].Value;
|
|
num46 += 30;
|
|
break;
|
|
case 1:
|
|
text = Lang.menu[99].Value;
|
|
break;
|
|
case 2:
|
|
text = Lang.menu[119].Value;
|
|
num46 += 60;
|
|
break;
|
|
case 3:
|
|
text = Math.Round((double) Main.musicVolume * 100.0).ToString() + "%";
|
|
num47 += 90;
|
|
break;
|
|
case 4:
|
|
text = Math.Round((double) Main.soundVolume * 100.0).ToString() + "%";
|
|
num47 += 90;
|
|
num46 += 30;
|
|
break;
|
|
case 5:
|
|
text = Math.Round((double) Main.ambientVolume * 100.0).ToString() + "%";
|
|
num47 += 90;
|
|
num46 += 60;
|
|
break;
|
|
}
|
|
Microsoft.Xna.Framework.Color textColor = color1;
|
|
textColor.R = (byte) (((int) byte.MaxValue + (int) textColor.R) / 2);
|
|
textColor.G = (byte) (((int) byte.MaxValue + (int) textColor.R) / 2);
|
|
textColor.B = (byte) (((int) byte.MaxValue + (int) textColor.R) / 2);
|
|
int maxValue = (int) byte.MaxValue;
|
|
int num48 = (int) textColor.R - ((int) byte.MaxValue - maxValue);
|
|
if (num48 < 0)
|
|
num48 = 0;
|
|
textColor = new Microsoft.Xna.Framework.Color((int) (byte) num48, (int) (byte) num48, (int) (byte) num48, (int) (byte) maxValue);
|
|
Utils.DrawBorderStringFourWay(Main.spriteBatch, FontAssets.DeathText.Value, text, (float) num47, (float) num46, textColor, Microsoft.Xna.Framework.Color.Black, Vector2.Zero, 0.5f);
|
|
}
|
|
int rightHover = IngameOptions.rightHover;
|
|
IngameOptions.rightHover = -1;
|
|
if (!Main.mouseLeft)
|
|
IngameOptions.rightLock = -1;
|
|
IngameOptions.valuePosition = new Vector2(x, (float) (num45 - 18 + 30));
|
|
GamepadMainMenuHandler.MenuItemPositions.Add(IngameOptions.valuePosition - TextureAssets.ColorBar.Value.Size() * new Vector2(0.5f, 0.0f));
|
|
float num49 = IngameOptions.DrawValueBar(Main.spriteBatch, 1f, Main.musicVolume);
|
|
if (IngameOptions.inBar || IngameOptions.rightLock == 3)
|
|
{
|
|
UILinkPointNavigator.Shortcuts.OPTIONS_BUTTON_SPECIALFEATURE = 2;
|
|
IngameOptions.rightHover = 3;
|
|
if (flag8 && IngameOptions.rightLock == 3)
|
|
Main.musicVolume = num49;
|
|
}
|
|
IngameOptions.valuePosition = new Vector2(x, (float) (num45 - 18 + 60));
|
|
GamepadMainMenuHandler.MenuItemPositions.Add(IngameOptions.valuePosition - TextureAssets.ColorBar.Value.Size() * new Vector2(0.5f, 0.0f));
|
|
float num50 = IngameOptions.DrawValueBar(Main.spriteBatch, 1f, Main.soundVolume);
|
|
if (IngameOptions.inBar || IngameOptions.rightLock == 2)
|
|
{
|
|
UILinkPointNavigator.Shortcuts.OPTIONS_BUTTON_SPECIALFEATURE = 3;
|
|
IngameOptions.rightHover = 2;
|
|
if (flag8 && IngameOptions.rightLock == 2)
|
|
Main.soundVolume = num50;
|
|
}
|
|
IngameOptions.valuePosition = new Vector2(x, (float) (num45 - 18 + 90));
|
|
GamepadMainMenuHandler.MenuItemPositions.Add(IngameOptions.valuePosition - TextureAssets.ColorBar.Value.Size() * new Vector2(0.5f, 0.0f));
|
|
float num51 = IngameOptions.DrawValueBar(Main.spriteBatch, 1f, Main.ambientVolume);
|
|
if (IngameOptions.inBar || IngameOptions.rightLock == 4)
|
|
{
|
|
UILinkPointNavigator.Shortcuts.OPTIONS_BUTTON_SPECIALFEATURE = 4;
|
|
IngameOptions.rightHover = 4;
|
|
if (flag8 && IngameOptions.rightLock == 4)
|
|
Main.ambientVolume = num51;
|
|
}
|
|
if (IngameOptions.rightHover != -1)
|
|
IngameOptions.rightLock = IngameOptions.rightHover;
|
|
if (IngameOptions.rightHover != rightHover)
|
|
SoundEngine.PlaySound(12);
|
|
}
|
|
if (flag3)
|
|
{
|
|
int num52 = 400;
|
|
string str8 = "";
|
|
for (int index89 = 0; index89 < 4; ++index89)
|
|
{
|
|
int num53 = num52;
|
|
int num54 = 370 + Main.screenWidth / 2 - 400;
|
|
if (index89 == 0)
|
|
str8 = Lang.menu[52].Value + ": " + (object) Main.bgScroll;
|
|
for (int index90 = 0; index90 < 5; ++index90)
|
|
{
|
|
Microsoft.Xna.Framework.Color color7 = Microsoft.Xna.Framework.Color.Black;
|
|
if (index90 == 4)
|
|
{
|
|
color7 = color1;
|
|
color7.R = (byte) (((int) byte.MaxValue + (int) color7.R) / 2);
|
|
color7.G = (byte) (((int) byte.MaxValue + (int) color7.R) / 2);
|
|
color7.B = (byte) (((int) byte.MaxValue + (int) color7.R) / 2);
|
|
}
|
|
int maxValue = (int) byte.MaxValue;
|
|
int num55 = (int) color7.R - ((int) byte.MaxValue - maxValue);
|
|
if (num55 < 0)
|
|
num55 = 0;
|
|
color7 = new Microsoft.Xna.Framework.Color((int) (byte) num55, (int) (byte) num55, (int) (byte) num55, (int) (byte) maxValue);
|
|
int num56 = 0;
|
|
int num57 = 0;
|
|
if (index90 == 0)
|
|
num56 = -2;
|
|
if (index90 == 1)
|
|
num56 = 2;
|
|
if (index90 == 2)
|
|
num57 = -2;
|
|
if (index90 == 3)
|
|
num57 = 2;
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.DeathText.Value, str8, new Vector2((float) (num54 + num56), (float) (num53 + num57)), color7, 0.0f, new Vector2(), 0.5f, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
IngameOptions.rightHover = -1;
|
|
if (!Main.mouseLeft)
|
|
IngameOptions.rightLock = -1;
|
|
IngameOptions.valuePosition = new Vector2((float) (Main.screenWidth / 2 - 40), (float) (num52 + 12));
|
|
GamepadMainMenuHandler.MenuItemPositions.Add(IngameOptions.valuePosition - TextureAssets.ColorBar.Value.Size() * new Vector2(0.5f, 0.0f));
|
|
float num58 = IngameOptions.DrawValueBar(Main.spriteBatch, 1f, (float) Main.bgScroll / 100f);
|
|
if (IngameOptions.inBar || IngameOptions.rightLock == 2)
|
|
{
|
|
UILinkPointNavigator.Shortcuts.OPTIONS_BUTTON_SPECIALFEATURE = 1;
|
|
IngameOptions.rightHover = 2;
|
|
if (flag8 && IngameOptions.rightLock == 2)
|
|
{
|
|
Main.bgScroll = (int) ((double) num58 * 100.0);
|
|
Main.caveParallax = (float) (1.0 - (double) Main.bgScroll / 500.0);
|
|
}
|
|
}
|
|
if (IngameOptions.rightHover != -1)
|
|
IngameOptions.rightLock = IngameOptions.rightHover;
|
|
}
|
|
bool flag11 = false;
|
|
for (int index91 = 0; index91 < num5; ++index91)
|
|
{
|
|
if (strArray1[index91] != null)
|
|
{
|
|
Vector2 vector2_1 = FontAssets.DeathText.Value.MeasureString(strArray1[index91]);
|
|
vector2_1.X *= 0.5f;
|
|
vector2_1.Y *= 0.5f;
|
|
for (int index92 = 0; index92 < 5; ++index92)
|
|
{
|
|
Microsoft.Xna.Framework.Color color8 = Microsoft.Xna.Framework.Color.Black;
|
|
if (index92 == 4)
|
|
{
|
|
switch (numArray3[index91])
|
|
{
|
|
case 0:
|
|
color8 = color1;
|
|
break;
|
|
case 1:
|
|
color8 = Main.mcColor;
|
|
break;
|
|
case 2:
|
|
color8 = Main.hcColor;
|
|
break;
|
|
case 3:
|
|
color8 = Main.highVersionColor;
|
|
break;
|
|
case 4:
|
|
case 5:
|
|
case 6:
|
|
color8 = Main.errorColor;
|
|
break;
|
|
default:
|
|
color8 = color1;
|
|
break;
|
|
}
|
|
color8.R = (byte) (((int) byte.MaxValue + (int) color8.R) / 2);
|
|
color8.G = (byte) (((int) byte.MaxValue + (int) color8.G) / 2);
|
|
color8.B = (byte) (((int) byte.MaxValue + (int) color8.B) / 2);
|
|
}
|
|
int num59 = (int) ((double) byte.MaxValue * ((double) this.menuItemScale[index91] * 2.0 - 1.0));
|
|
if (flagArray1[index91])
|
|
num59 = (int) byte.MaxValue;
|
|
int num60 = (int) color8.R - ((int) byte.MaxValue - num59);
|
|
if (num60 < 0)
|
|
num60 = 0;
|
|
int num61 = (int) color8.G - ((int) byte.MaxValue - num59);
|
|
if (num61 < 0)
|
|
num61 = 0;
|
|
int num62 = (int) color8.B - ((int) byte.MaxValue - num59);
|
|
if (num62 < 0)
|
|
num62 = 0;
|
|
if (num18 == index91 && index92 == 4)
|
|
{
|
|
float num63 = (float) num59 / (float) byte.MaxValue;
|
|
num60 = (int) ((double) num60 * (1.0 - (double) num63) + (double) byte.MaxValue * (double) num63);
|
|
num61 = (int) ((double) num61 * (1.0 - (double) num63) + 215.0 * (double) num63);
|
|
num62 = (int) ((double) num62 * (1.0 - (double) num63) + 0.0 * (double) num63);
|
|
}
|
|
color8 = new Microsoft.Xna.Framework.Color((int) (byte) num60, (int) (byte) num61, (int) (byte) num62, (int) (byte) num59);
|
|
if (flagArray3[index91])
|
|
{
|
|
if (index92 == 4)
|
|
{
|
|
color8.R = (byte) ((int) color8.R * (int) Main.mouseTextColor / 300);
|
|
color8.G = (byte) ((int) color8.G * (int) Main.mouseTextColor / 300);
|
|
color8.B = (byte) ((int) color8.B * (int) Main.mouseTextColor / 300);
|
|
color8.A = (byte) ((int) color8.A * (int) Main.mouseTextColor / 300);
|
|
}
|
|
else
|
|
color8.A -= (byte) ((uint) Main.mouseTextColor / 5U);
|
|
}
|
|
int num64 = 0;
|
|
int num65 = 0;
|
|
if (index92 == 0)
|
|
num64 = -2;
|
|
if (index92 == 1)
|
|
num64 = 2;
|
|
if (index92 == 2)
|
|
num65 = -2;
|
|
if (index92 == 3)
|
|
num65 = 2;
|
|
float num66 = this.menuItemScale[index91];
|
|
if (Main.menuMode == 15 && index91 == 0)
|
|
num66 *= 0.35f;
|
|
else if (Main.menuMode == 1000000 && index91 == 0)
|
|
num66 *= 0.75f;
|
|
else if (Main.netMode == 2)
|
|
num66 *= 0.5f;
|
|
float num67 = num66 * numArray4[index91];
|
|
if (!flagArray4[index91])
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.DeathText.Value, strArray1[index91], new Vector2((float) (num3 + num64 + numArray2[index91]), (float) (num2 + num4 * index91 + num65) + vector2_1.Y * numArray4[index91] + (float) numArray1[index91]), color8, 0.0f, vector2_1, num67, SpriteEffects.None, 0.0f);
|
|
else
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.DeathText.Value, strArray1[index91], new Vector2((float) (num3 + num64 + numArray2[index91]), (float) (num2 + num4 * index91 + num65) + vector2_1.Y * numArray4[index91] + (float) numArray1[index91]), color8, 0.0f, new Vector2(0.0f, vector2_1.Y), num67, SpriteEffects.None, 0.0f);
|
|
}
|
|
if (!flagArray1[index91] && !flagArray2[index91])
|
|
GamepadMainMenuHandler.MenuItemPositions.Add(new Vector2((float) (num3 + numArray2[index91]), (float) (num2 + num4 * index91) + vector2_1.Y * numArray4[index91] + (float) numArray1[index91]));
|
|
if (!flagArray4[index91])
|
|
{
|
|
int num68 = 0;
|
|
this.menuWide[index91] = false;
|
|
Vector2 vector2_2 = FontAssets.DeathText.Value.MeasureString(strArray1[index91]) * numArray4[index91];
|
|
if ((double) Main.mouseX > (double) num3 - (double) vector2_2.X * 0.5 + (double) numArray2[index91] - (double) num68 && (double) Main.mouseX < (double) num3 + (double) vector2_2.X * 0.5 * (double) numArray4[index91] + (double) numArray2[index91] + (double) num68 && Main.mouseY > num2 + num4 * index91 + numArray1[index91] && (double) Main.mouseY < (double) (num2 + num4 * index91 + numArray1[index91]) + 50.0 * (double) numArray4[index91] && Main.hasFocus)
|
|
{
|
|
this.focusMenu = index91;
|
|
if (flagArray1[index91] || flagArray2[index91])
|
|
{
|
|
this.focusMenu = -1;
|
|
}
|
|
else
|
|
{
|
|
if (num18 != this.focusMenu)
|
|
flag11 = true;
|
|
if (Main.mouseLeftRelease && Main.mouseLeft)
|
|
this.selectedMenu = index91;
|
|
if (Main.mouseRightRelease && Main.mouseRight)
|
|
this.selectedMenu2 = index91;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Vector2 vector2_3 = FontAssets.DeathText.Value.MeasureString(strArray1[index91]) * numArray4[index91];
|
|
if (Main.mouseX > num3 + numArray2[index91] && (double) Main.mouseX < (double) num3 + (double) vector2_3.X + (double) numArray2[index91] && Main.mouseY > num2 + num4 * index91 + numArray1[index91] && (double) Main.mouseY < (double) (num2 + num4 * index91 + numArray1[index91]) + 50.0 * (double) numArray4[index91] && Main.hasFocus)
|
|
{
|
|
this.focusMenu = index91;
|
|
if (flagArray1[index91] || flagArray2[index91])
|
|
{
|
|
this.focusMenu = -1;
|
|
}
|
|
else
|
|
{
|
|
if (num18 != this.focusMenu)
|
|
flag11 = true;
|
|
if (Main.mouseLeftRelease && Main.mouseLeft)
|
|
this.selectedMenu = index91;
|
|
if (Main.mouseRightRelease && Main.mouseRight)
|
|
this.selectedMenu2 = index91;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (flag11 && num18 != this.focusMenu)
|
|
SoundEngine.PlaySound(12);
|
|
if (GamepadMainMenuHandler.MenuItemPositions.Count == 0)
|
|
{
|
|
Vector2 vector2 = new Vector2((float) Math.Cos((double) Main.GlobalTimeWrappedHourly * 6.28318548202515), (float) Math.Sin((double) Main.GlobalTimeWrappedHourly * 6.28318548202515 * 2.0)) * new Vector2(30f, 15f) + Vector2.UnitY * 20f;
|
|
UILinkPointNavigator.SetPosition(2000, new Vector2((float) Main.screenWidth, (float) Main.screenHeight) / 2f + vector2);
|
|
}
|
|
for (int index93 = 0; index93 < Main.maxMenuItems; ++index93)
|
|
{
|
|
if (index93 == this.focusMenu)
|
|
{
|
|
if ((double) this.menuItemScale[index93] < 1.0)
|
|
this.menuItemScale[index93] += 0.02f;
|
|
if ((double) this.menuItemScale[index93] > 1.0)
|
|
this.menuItemScale[index93] = 1f;
|
|
}
|
|
else if ((double) this.menuItemScale[index93] > 0.8)
|
|
this.menuItemScale[index93] -= 0.02f;
|
|
}
|
|
if (flag4)
|
|
{
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, SamplerState.PointClamp, DepthStencilState.None, RasterizerState.CullCounterClockwise, (Effect) null, Main.UIScaleMatrix);
|
|
Player pendingPlayer = Main.PendingPlayer;
|
|
pendingPlayer.PlayerFrame();
|
|
pendingPlayer.position.X = (float) num6 + Main.screenPosition.X;
|
|
pendingPlayer.position.Y = (float) num7 + Main.screenPosition.Y;
|
|
Main.PlayerRenderer.DrawPlayer(Main.Camera, pendingPlayer, pendingPlayer.position, 0.0f, Vector2.Zero);
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, DepthStencilState.None, RasterizerState.CullCounterClockwise, (Effect) null, Main.UIScaleMatrix);
|
|
}
|
|
if (!WorldGen.drunkWorldGen)
|
|
{
|
|
for (int index94 = 0; index94 < 5; ++index94)
|
|
{
|
|
Microsoft.Xna.Framework.Color color9 = Microsoft.Xna.Framework.Color.Black;
|
|
if (index94 == 4)
|
|
{
|
|
color9 = color1;
|
|
color9.R = (byte) (((int) byte.MaxValue + (int) color9.R) / 2);
|
|
color9.G = (byte) (((int) byte.MaxValue + (int) color9.R) / 2);
|
|
color9.B = (byte) (((int) byte.MaxValue + (int) color9.R) / 2);
|
|
}
|
|
color9.A = (byte) ((double) color9.A * 0.300000011920929);
|
|
int num69 = 0;
|
|
int num70 = 0;
|
|
if (index94 == 0)
|
|
num69 = -2;
|
|
if (index94 == 1)
|
|
num69 = 2;
|
|
if (index94 == 2)
|
|
num70 = -2;
|
|
if (index94 == 3)
|
|
num70 = 2;
|
|
Vector2 vector2 = FontAssets.MouseText.Value.MeasureString(Main.versionNumber);
|
|
vector2.X *= 0.5f;
|
|
vector2.Y *= 0.5f;
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.MouseText.Value, Main.versionNumber, new Vector2((float) ((double) vector2.X + (double) num69 + 10.0), (float) ((double) Main.screenHeight - (double) vector2.Y + (double) num70 - 2.0)), color9, 0.0f, vector2, 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, Main.SamplerStateForCursor, DepthStencilState.None, RasterizerState.CullCounterClockwise, (Effect) null, Main.UIScaleMatrix);
|
|
Main.DrawCursor(Main.DrawThickCursor());
|
|
Main.DrawPendingMouseText();
|
|
if (Main.fadeCounter > 0)
|
|
{
|
|
Microsoft.Xna.Framework.Color color10 = Microsoft.Xna.Framework.Color.White;
|
|
--Main.fadeCounter;
|
|
float num71 = (float) ((double) Main.fadeCounter / 120.0 * (double) byte.MaxValue);
|
|
if (this.quickSplash)
|
|
num71 = (float) ((double) Main.fadeCounter / 75.0 * (double) byte.MaxValue);
|
|
byte num72 = (byte) num71;
|
|
color10 = new Microsoft.Xna.Framework.Color((int) num72, (int) num72, (int) num72, (int) num72);
|
|
Main.spriteBatch.Draw(TextureAssets.Fade.Value, new Microsoft.Xna.Framework.Rectangle(-5, -5, Main.screenWidth + 10, Main.screenHeight + 10), color10);
|
|
}
|
|
Main.spriteBatch.End();
|
|
Main.mouseLeftRelease = !Main.mouseLeft;
|
|
Main.mouseRightRelease = !Main.mouseRight;
|
|
if (Main.menuMode != menuMode1)
|
|
return;
|
|
GamepadMainMenuHandler.LastDrew = menuMode1;
|
|
}
|
|
|
|
private static void ClearVisualPostProcessEffects()
|
|
{
|
|
for (int index = 0; index < 13; ++index)
|
|
{
|
|
string key = "";
|
|
switch (index)
|
|
{
|
|
case 0:
|
|
key = "Solar";
|
|
break;
|
|
case 1:
|
|
key = "Vortex";
|
|
break;
|
|
case 2:
|
|
key = "Nebula";
|
|
break;
|
|
case 3:
|
|
key = "Stardust";
|
|
break;
|
|
case 4:
|
|
key = "MoonLord";
|
|
break;
|
|
case 5:
|
|
key = "MonolithSolar";
|
|
break;
|
|
case 6:
|
|
key = "MonolithVortex";
|
|
break;
|
|
case 7:
|
|
key = "MonolithNebula";
|
|
break;
|
|
case 8:
|
|
key = "MonolithStardust";
|
|
break;
|
|
case 9:
|
|
key = "Blizzard";
|
|
break;
|
|
case 10:
|
|
key = "HeatDistortion";
|
|
break;
|
|
case 11:
|
|
key = "Sandstorm";
|
|
break;
|
|
case 12:
|
|
key = "MonolithMoonLord";
|
|
break;
|
|
}
|
|
if (SkyManager.Instance[key] != null && SkyManager.Instance[key].IsActive())
|
|
SkyManager.Instance[key].Deactivate();
|
|
if (Overlays.Scene[key] != null && Overlays.Scene[key].IsVisible())
|
|
Overlays.Scene[key].Deactivate();
|
|
if (Terraria.Graphics.Effects.Filters.Scene[key] != null && Terraria.Graphics.Effects.Filters.Scene[key].IsActive())
|
|
Terraria.Graphics.Effects.Filters.Scene[key].Deactivate();
|
|
}
|
|
if (Terraria.Graphics.Effects.Filters.Scene["BloodMoon"].IsActive())
|
|
Terraria.Graphics.Effects.Filters.Scene["BloodMoon"].Deactivate();
|
|
if (Terraria.Graphics.Effects.Filters.Scene["Graveyard"].IsActive())
|
|
Terraria.Graphics.Effects.Filters.Scene["Graveyard"].Deactivate();
|
|
if (Terraria.Graphics.Effects.Filters.Scene["BloodMoon"].IsActive())
|
|
Terraria.Graphics.Effects.Filters.Scene["BloodMoon"].Deactivate();
|
|
if (Terraria.Graphics.Effects.Filters.Scene["MoonLordShake"].IsActive())
|
|
Terraria.Graphics.Effects.Filters.Scene["MoonLordShake"].Deactivate();
|
|
if (Terraria.Graphics.Effects.Filters.Scene["WaterDistortion"].IsActive())
|
|
Terraria.Graphics.Effects.Filters.Scene["WaterDistortion"].Deactivate();
|
|
if (SkyManager.Instance["Martian"].IsActive())
|
|
SkyManager.Instance["Martian"].Deactivate();
|
|
if (SkyManager.Instance["Party"].IsActive())
|
|
SkyManager.Instance["Party"].Deactivate();
|
|
if (SkyManager.Instance["Slime"].IsActive())
|
|
SkyManager.Instance["Slime"].Deactivate();
|
|
if (SkyManager.Instance["Ambience"].IsActive())
|
|
SkyManager.Instance["Ambience"].Deactivate();
|
|
Main.slimeRain = false;
|
|
Main.slimeRainTime = 0.0;
|
|
Main.slimeWarningTime = 0;
|
|
BirthdayParty.WorldClear();
|
|
LanternNight.WorldClear();
|
|
Sandstorm.WorldClear();
|
|
Main.maxRaining = 0.0f;
|
|
Main.raining = false;
|
|
}
|
|
|
|
private static void PostDrawMenu(Microsoft.Xna.Framework.Point screenSizeCache, Microsoft.Xna.Framework.Point screenSizeCacheAfterScaling)
|
|
{
|
|
if (!(Main.ScreenSize == screenSizeCacheAfterScaling))
|
|
return;
|
|
Main.screenPosition.Y -= (float) (screenSizeCache.Y - Main.screenHeight);
|
|
}
|
|
|
|
private void PreDrawMenu(out Microsoft.Xna.Framework.Point screenSizeCache, out Microsoft.Xna.Framework.Point screenSizeCacheAfterScaling)
|
|
{
|
|
double uiScaleWanted = (double) Main._uiScaleWanted;
|
|
float num = (float) Main.screenHeight / 900f;
|
|
if ((double) num < 1.0)
|
|
num = 1f;
|
|
if (Main.SettingDontScaleMainMenuUp)
|
|
num = 1f;
|
|
screenSizeCache = Main.ScreenSize;
|
|
Main.UIScale = num;
|
|
PlayerInput.SetZoom_UI();
|
|
screenSizeCacheAfterScaling = Main.ScreenSize;
|
|
if (this._needsMenuUIRecalculation)
|
|
{
|
|
this._needsMenuUIRecalculation = false;
|
|
Main.MenuUI.Recalculate();
|
|
}
|
|
Main._uiScaleWanted = (float) uiScaleWanted;
|
|
}
|
|
|
|
private static bool IsBorderlessDisplayAvailable() => true;
|
|
|
|
private static void SetDisplayModeAsBorderless(ref int width, ref int height, Form form)
|
|
{
|
|
if (!Main.screenBorderless || Main.graphics.IsFullScreen || Main.screenBorderlessPendingResizes <= 0)
|
|
return;
|
|
--Main.screenBorderlessPendingResizes;
|
|
System.Drawing.Rectangle bounds = Screen.FromPoint(form.Location).Bounds;
|
|
width = bounds.Width;
|
|
height = bounds.Height;
|
|
Main.TryPickingDefaultUIScale((float) height);
|
|
}
|
|
|
|
private static void ApplyBorderlessResolution(Form form)
|
|
{
|
|
if (Main.screenBorderlessPendingResizes <= 0)
|
|
return;
|
|
--Main.screenBorderlessPendingResizes;
|
|
System.Drawing.Rectangle bounds = Screen.FromPoint(form.Location).Bounds;
|
|
form.Location = new System.Drawing.Point(bounds.X, bounds.Y);
|
|
form.FormBorderStyle = FormBorderStyle.None;
|
|
form.Width = bounds.Width;
|
|
form.Height = bounds.Height;
|
|
}
|
|
|
|
private static void SetBorderlessFormStyle(Form form)
|
|
{
|
|
form.Location = new System.Drawing.Point(0, 0);
|
|
form.FormBorderStyle = FormBorderStyle.None;
|
|
}
|
|
|
|
public static void OpenCharacterSelectUI()
|
|
{
|
|
Main.MenuUI.SetState((UIState) Main._characterSelectMenu);
|
|
Main.menuMode = 888;
|
|
}
|
|
|
|
public static void OpenWorldSelectUI()
|
|
{
|
|
Main.MenuUI.SetState((UIState) Main._worldSelectMenu);
|
|
Main.menuMode = 888;
|
|
}
|
|
|
|
private static void CycleClothingStyle(Player plr)
|
|
{
|
|
Main.CycleClothingStyle_Inner(plr);
|
|
while (!Main.IsValidPlayerStyle(plr))
|
|
Main.CycleClothingStyle_Inner(plr);
|
|
}
|
|
|
|
private static bool IsValidPlayerStyle(Player plr)
|
|
{
|
|
switch (plr.skinVariant)
|
|
{
|
|
case 10:
|
|
case 11:
|
|
return false;
|
|
default:
|
|
return true;
|
|
}
|
|
}
|
|
|
|
private static void CycleClothingStyle_Inner(Player plr)
|
|
{
|
|
if (plr.Male)
|
|
{
|
|
int num = 0;
|
|
int[] variantOrderMale = PlayerVariantID.Sets.VariantOrderMale;
|
|
for (int index = 0; index < variantOrderMale.Length; ++index)
|
|
{
|
|
if (variantOrderMale[index] == plr.skinVariant)
|
|
{
|
|
num = index;
|
|
break;
|
|
}
|
|
}
|
|
if (num == variantOrderMale.Length - 1)
|
|
plr.skinVariant = variantOrderMale[0];
|
|
else
|
|
plr.skinVariant = variantOrderMale[num + 1];
|
|
}
|
|
else
|
|
{
|
|
int num = 0;
|
|
int[] variantOrderFemale = PlayerVariantID.Sets.VariantOrderFemale;
|
|
for (int index = 0; index < variantOrderFemale.Length; ++index)
|
|
{
|
|
if (variantOrderFemale[index] == plr.skinVariant)
|
|
{
|
|
num = index;
|
|
break;
|
|
}
|
|
}
|
|
if (num == variantOrderFemale.Length - 1)
|
|
plr.skinVariant = variantOrderFemale[0];
|
|
else
|
|
plr.skinVariant = variantOrderFemale[num + 1];
|
|
}
|
|
}
|
|
|
|
public static void ResetKeyBindings()
|
|
{
|
|
Main.cUp = "W";
|
|
Main.cDown = "S";
|
|
Main.cLeft = "A";
|
|
Main.cRight = "D";
|
|
Main.cJump = "Space";
|
|
Main.cThrowItem = "T";
|
|
Main.cInv = "Escape";
|
|
Main.cHeal = "H";
|
|
Main.cMana = "J";
|
|
Main.cBuff = "B";
|
|
Main.cHook = "E";
|
|
Main.cTorch = "LeftShift";
|
|
Main.cSmart = "LeftControl";
|
|
Main.cMount = "R";
|
|
}
|
|
|
|
public static void CursorColor()
|
|
{
|
|
Main.cursorAlpha += (float) Main.cursorColorDirection * 0.015f;
|
|
if ((double) Main.cursorAlpha >= 1.0)
|
|
{
|
|
Main.cursorAlpha = 1f;
|
|
Main.cursorColorDirection = -1;
|
|
}
|
|
if ((double) Main.cursorAlpha <= 0.6)
|
|
{
|
|
Main.cursorAlpha = 0.6f;
|
|
Main.cursorColorDirection = 1;
|
|
}
|
|
float num = (float) ((double) Main.cursorAlpha * 0.300000011920929 + 0.699999988079071);
|
|
Main.cursorColor = new Microsoft.Xna.Framework.Color((int) (byte) ((double) Main.mouseColor.R * (double) Main.cursorAlpha), (int) (byte) ((double) Main.mouseColor.G * (double) Main.cursorAlpha), (int) (byte) ((double) Main.mouseColor.B * (double) Main.cursorAlpha), (int) (byte) ((double) byte.MaxValue * (double) num));
|
|
Main.cursorScale = (float) ((double) Main.cursorAlpha * 0.300000011920929 + 0.699999988079071 + 0.100000001490116);
|
|
}
|
|
|
|
protected void DrawSplash(GameTime gameTime)
|
|
{
|
|
int num1 = 10000;
|
|
this.GraphicsDevice.Clear(Microsoft.Xna.Framework.Color.Black);
|
|
base.Draw(gameTime);
|
|
this.TickLoadProcess();
|
|
long num2 = Main.splashTimer.ElapsedMilliseconds;
|
|
if ((double) Main.musicVolume == 0.0)
|
|
{
|
|
this.quickSplash = true;
|
|
num2 = 999999L;
|
|
num1 = 0;
|
|
}
|
|
if (Main.Assets.PendingAssets == 0 && this._musicLoaded && this._artLoaded && Program.LoadedEverything)
|
|
Main._isAsyncLoadComplete = true;
|
|
Main.spriteBatch.Begin();
|
|
++this.splashCounter;
|
|
Microsoft.Xna.Framework.Color color = Microsoft.Xna.Framework.Color.White;
|
|
byte num3 = 0;
|
|
if (this.quickSplash)
|
|
{
|
|
if (this.splashCounter <= 75)
|
|
num3 = (byte) ((double) this.splashCounter / 75.0 * (double) byte.MaxValue);
|
|
else if (this.splashCounter <= 125)
|
|
num3 = byte.MaxValue;
|
|
else if (this.splashCounter <= 200)
|
|
{
|
|
if (!Main._isAsyncLoadComplete)
|
|
this.splashCounter = 125;
|
|
num3 = (byte) ((double) (75 - (this.splashCounter - 125)) / 75.0 * (double) byte.MaxValue);
|
|
}
|
|
else
|
|
{
|
|
this.Initialize_AlmostEverything();
|
|
Main.PostContentLoadInitialize();
|
|
Main.showSplash = false;
|
|
Main.fadeCounter = 75;
|
|
Main.splashTimer.Stop();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
int num4 = 90;
|
|
int num5 = 410;
|
|
int num6 = 620;
|
|
int num7 = 60;
|
|
if (this.splashCounter >= num4)
|
|
{
|
|
if (this.splashCounter <= num5)
|
|
{
|
|
float num8 = (float) (this.splashCounter - num4) / (float) (num5 - num4);
|
|
num3 = (byte) (num8 * (num8 * num8 * num8) * (float) byte.MaxValue);
|
|
}
|
|
else if (this.splashCounter <= num6)
|
|
{
|
|
num3 = byte.MaxValue;
|
|
if (this.splashCounter >= num6 - num7)
|
|
num3 = (byte) ((double) (num7 - (this.splashCounter - (num6 - num7))) / (double) num7 * (double) byte.MaxValue);
|
|
}
|
|
else if (!Main._isAsyncLoadComplete)
|
|
{
|
|
num3 = (byte) 0;
|
|
num1 = 1;
|
|
}
|
|
else
|
|
{
|
|
this.Initialize_AlmostEverything();
|
|
Main.PostContentLoadInitialize();
|
|
Main.showSplash = false;
|
|
Main.fadeCounter = 120;
|
|
Main.splashTimer.Stop();
|
|
}
|
|
}
|
|
}
|
|
color = new Microsoft.Xna.Framework.Color((int) num3, (int) num3, (int) num3, (int) num3);
|
|
Asset<Texture2D> splashTextureLegoBack = TextureAssets.SplashTextureLegoBack;
|
|
if (splashTextureLegoBack.Width() > 0 && splashTextureLegoBack.Height() > 0)
|
|
{
|
|
Vector2 vector2_1 = new Vector2((float) Main.screenWidth / (float) splashTextureLegoBack.Width(), (float) Main.screenHeight / (float) splashTextureLegoBack.Height());
|
|
Vector2 vector2_2 = splashTextureLegoBack.Size() / 2f;
|
|
Vector2 position = new Vector2((float) Main.screenWidth, (float) Main.screenHeight) / 2f;
|
|
Vector2 scale1 = vector2_1;
|
|
if ((double) scale1.X > (double) scale1.Y)
|
|
scale1.X = scale1.Y;
|
|
else
|
|
scale1.Y = scale1.X;
|
|
Vector2 scale2 = vector2_1;
|
|
if ((double) scale2.X < (double) scale2.Y)
|
|
scale2.X = scale2.Y;
|
|
else
|
|
scale2.Y = scale2.X;
|
|
Main.spriteBatch.Draw(splashTextureLegoBack.Value, position, new Microsoft.Xna.Framework.Rectangle?(), color, 0.0f, splashTextureLegoBack.Size() / 2f, scale2, SpriteEffects.None, 0.0f);
|
|
Main.spriteBatch.Draw(TextureAssets.SplashTextureLegoTree.Value, Main.ScreenSize.ToVector2(), new Microsoft.Xna.Framework.Rectangle?(), color, 0.0f, TextureAssets.SplashTextureLegoTree.Size(), scale1, SpriteEffects.None, 0.0f);
|
|
Main.spriteBatch.Draw(TextureAssets.SplashTextureLegoFront.Value, position, new Microsoft.Xna.Framework.Rectangle?(), color, 0.0f, TextureAssets.SplashTextureLegoFront.Size() / 2f, scale1, SpriteEffects.None, 0.0f);
|
|
}
|
|
int num9 = 70;
|
|
if (num1 == 1)
|
|
this.DrawSplash_LoadingFlower(Microsoft.Xna.Framework.Color.White);
|
|
else if (num2 > (long) num1)
|
|
this.DrawSplash_LoadingFlower(color);
|
|
++this._splashFrameCount;
|
|
if ((double) this._splashFrameCount >= (double) num9)
|
|
this._splashFrameCount = 0.0f;
|
|
Main.spriteBatch.End();
|
|
}
|
|
|
|
private void DrawSplash_LoadingFlower(Microsoft.Xna.Framework.Color splashColor)
|
|
{
|
|
float val2_1 = (float) Main.screenWidth / Main.MinimumZoomComparerX;
|
|
float val2_2 = (float) Main.screenHeight / Main.MinimumZoomComparerY;
|
|
float scale = Math.Max(Math.Max(1f, val2_1), val2_2);
|
|
Texture2D texture2D = TextureAssets.LoadingSunflower.Value;
|
|
int num1 = 3;
|
|
int verticalFrames = 19;
|
|
Vector2 position = new Vector2((float) (Main.screenWidth / 2), (float) Main.screenHeight) - new Vector2(0.0f, 50f) * scale;
|
|
int num2 = (int) this._splashFrameCount / num1;
|
|
if (num2 >= verticalFrames)
|
|
num2 = 0;
|
|
Microsoft.Xna.Framework.Rectangle r = texture2D.Frame(verticalFrames: verticalFrames, frameY: ((num2 + 10) % verticalFrames));
|
|
float rotation = 0.0f;
|
|
Vector2 origin = r.Size() / 2f;
|
|
Main.spriteBatch.Draw(texture2D, position, new Microsoft.Xna.Framework.Rectangle?(r), splashColor, rotation, origin, scale, SpriteEffects.None, 0.0f);
|
|
}
|
|
|
|
private void DrawSplash_LoadingStar(Microsoft.Xna.Framework.Color splashColor)
|
|
{
|
|
int num = 4;
|
|
Vector2 position = new Vector2((float) Main.screenWidth, (float) Main.screenHeight) - new Vector2(30f);
|
|
int frameY = (int) this._splashFrameCount / num;
|
|
if (frameY >= 15)
|
|
frameY = 0;
|
|
if (frameY >= 8)
|
|
frameY = 14 - frameY;
|
|
Microsoft.Xna.Framework.Rectangle r = TextureAssets.Item[75].Frame(verticalFrames: 8, frameY: frameY);
|
|
r.Height -= 2;
|
|
float rotation = 0.0f;
|
|
Vector2 origin = r.Size() / 2f;
|
|
origin.Y += 2f;
|
|
Main.spriteBatch.Draw(TextureAssets.Item[75].Value, position, new Microsoft.Xna.Framework.Rectangle?(r), splashColor, rotation, origin, 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
|
|
protected void DrawUnderworldBackground(bool flat)
|
|
{
|
|
if ((double) Main.screenPosition.Y + (double) Main.screenHeight < (double) (Main.maxTilesY - 220) * 16.0)
|
|
return;
|
|
Vector2 screenOffset = Main.screenPosition + new Vector2((float) (Main.screenWidth >> 1), (float) (Main.screenHeight >> 1));
|
|
float pushUp = (float) (((double) Main.GameViewMatrix.Zoom.Y - 1.0) * 0.5 * 200.0);
|
|
SkyManager.Instance.ResetDepthTracker();
|
|
for (int layerTextureIndex = 4; layerTextureIndex >= 0; --layerTextureIndex)
|
|
Main.DrawUnderworldBackgroudLayer(flat, screenOffset, pushUp, layerTextureIndex);
|
|
if (!Main.mapFullscreen)
|
|
SkyManager.Instance.DrawRemainingDepth(Main.spriteBatch);
|
|
this.DrawSurfaceBG_DrawChangeOverlay(12);
|
|
}
|
|
|
|
private static void DrawUnderworldBackgroudLayer(
|
|
bool flat,
|
|
Vector2 screenOffset,
|
|
float pushUp,
|
|
int layerTextureIndex)
|
|
{
|
|
int index1 = Main.underworldBG[layerTextureIndex];
|
|
Asset<Texture2D> asset = TextureAssets.Underworld[index1];
|
|
if (!asset.IsLoaded)
|
|
Main.Assets.Request<Texture2D>(asset.Name, (AssetRequestMode) 1);
|
|
Texture2D texture = asset.Value;
|
|
Vector2 vector2_1 = new Vector2((float) texture.Width, (float) texture.Height) * 0.5f;
|
|
float num1 = flat ? 1f : (float) (layerTextureIndex * 2) + 3f;
|
|
Vector2 vector2_2 = new Vector2(1f / num1);
|
|
Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.Rectangle(0, 0, texture.Width, texture.Height);
|
|
float scale = 1.3f;
|
|
Vector2 zero = Vector2.Zero;
|
|
int num2 = 0;
|
|
switch (index1)
|
|
{
|
|
case 1:
|
|
int num3 = (int) ((double) Main.GlobalTimeWrappedHourly * 8.0) % 4;
|
|
rectangle = new Microsoft.Xna.Framework.Rectangle((num3 >> 1) * (texture.Width >> 1), num3 % 2 * (texture.Height >> 1), texture.Width >> 1, texture.Height >> 1);
|
|
vector2_1 *= 0.5f;
|
|
zero.Y += 175f;
|
|
break;
|
|
case 2:
|
|
zero.Y += 100f;
|
|
break;
|
|
case 3:
|
|
zero.Y += 75f;
|
|
break;
|
|
case 4:
|
|
scale = 0.5f;
|
|
zero.Y -= 0.0f;
|
|
break;
|
|
case 5:
|
|
zero.Y += (float) num2;
|
|
break;
|
|
case 6:
|
|
int num4 = (int) ((double) Main.GlobalTimeWrappedHourly * 8.0) % 4;
|
|
rectangle = new Microsoft.Xna.Framework.Rectangle(num4 % 2 * (texture.Width >> 1), (num4 >> 1) * (texture.Height >> 1), texture.Width >> 1, texture.Height >> 1);
|
|
vector2_1 *= 0.5f;
|
|
zero.Y += (float) num2;
|
|
zero.Y += -60f;
|
|
break;
|
|
case 7:
|
|
int num5 = (int) ((double) Main.GlobalTimeWrappedHourly * 8.0) % 4;
|
|
rectangle = new Microsoft.Xna.Framework.Rectangle(num5 % 2 * (texture.Width >> 1), (num5 >> 1) * (texture.Height >> 1), texture.Width >> 1, texture.Height >> 1);
|
|
vector2_1 *= 0.5f;
|
|
zero.Y += (float) num2;
|
|
zero.X -= 400f;
|
|
zero.Y += 90f;
|
|
break;
|
|
case 8:
|
|
int num6 = (int) ((double) Main.GlobalTimeWrappedHourly * 8.0) % 4;
|
|
rectangle = new Microsoft.Xna.Framework.Rectangle(num6 % 2 * (texture.Width >> 1), (num6 >> 1) * (texture.Height >> 1), texture.Width >> 1, texture.Height >> 1);
|
|
vector2_1 *= 0.5f;
|
|
zero.Y += (float) num2;
|
|
zero.Y += 90f;
|
|
break;
|
|
case 9:
|
|
zero.Y += (float) num2;
|
|
zero.Y -= 30f;
|
|
break;
|
|
case 10:
|
|
zero.Y += 250f * num1;
|
|
break;
|
|
case 11:
|
|
zero.Y += 100f * num1;
|
|
break;
|
|
case 12:
|
|
zero.Y += 20f * num1;
|
|
break;
|
|
case 13:
|
|
zero.Y += 20f * num1;
|
|
int num7 = (int) ((double) Main.GlobalTimeWrappedHourly * 8.0) % 4;
|
|
rectangle = new Microsoft.Xna.Framework.Rectangle(num7 % 2 * (texture.Width >> 1), (num7 >> 1) * (texture.Height >> 1), texture.Width >> 1, texture.Height >> 1);
|
|
vector2_1 *= 0.5f;
|
|
break;
|
|
}
|
|
if (flat)
|
|
scale *= 1.5f;
|
|
Vector2 vec = vector2_1 * scale;
|
|
SkyManager.Instance.DrawToDepth(Main.spriteBatch, 1f / vector2_2.X);
|
|
if (flat)
|
|
zero.Y += (float) (TextureAssets.Underworld[0].Height() >> 1) * 1.3f - vec.Y;
|
|
zero.Y -= pushUp;
|
|
float num8 = scale * (float) rectangle.Width;
|
|
int num9 = (int) ((double) (int) ((double) screenOffset.X * (double) vector2_2.X - (double) vec.X + (double) zero.X - (double) (Main.screenWidth >> 1)) / (double) num8);
|
|
Vector2 vector2_3 = vec.Floor();
|
|
int num10 = (int) Math.Ceiling((double) Main.screenWidth / (double) num8);
|
|
int num11 = (int) ((double) scale * ((double) (rectangle.Width - 1) / (double) vector2_2.X));
|
|
Vector2 position;
|
|
for (position = ((new Vector2((float) ((num9 - 2) * num11), (float) Main.UnderworldLayer * 16f) + vector2_3 - screenOffset) * vector2_2 + screenOffset - Main.screenPosition - vector2_3 + zero).Floor(); (double) position.X + (double) num8 < 0.0; position.X += num8)
|
|
++num9;
|
|
for (int index2 = num9 - 2; index2 <= num9 + 4 + num10; ++index2)
|
|
{
|
|
Main.spriteBatch.Draw(texture, position, new Microsoft.Xna.Framework.Rectangle?(rectangle), Microsoft.Xna.Framework.Color.White, 0.0f, Vector2.Zero, scale, SpriteEffects.None, 0.0f);
|
|
if (layerTextureIndex == 0)
|
|
{
|
|
int y = (int) ((double) position.Y + (double) rectangle.Height * (double) scale);
|
|
Main.spriteBatch.Draw(TextureAssets.BlackTile.Value, new Microsoft.Xna.Framework.Rectangle((int) position.X, y, (int) ((double) rectangle.Width * (double) scale), Math.Max(0, Main.screenHeight - y)), new Microsoft.Xna.Framework.Color(11, 3, 7));
|
|
}
|
|
position.X += num8;
|
|
}
|
|
}
|
|
|
|
protected void DrawBackground()
|
|
{
|
|
if (!Main.BackgroundEnabled)
|
|
{
|
|
this.OldDrawBackground();
|
|
}
|
|
else
|
|
{
|
|
Microsoft.Xna.Framework.Color[] slices = new Microsoft.Xna.Framework.Color[9];
|
|
Stopwatch stopwatch = new Stopwatch();
|
|
stopwatch.Start();
|
|
double num1 = (double) ((int) (((double) (Main.maxTilesY - 330) - Main.worldSurface) / 6.0) * 6);
|
|
double num2 = Main.worldSurface + num1 - 5.0;
|
|
int num3 = (int) ((double) byte.MaxValue * (1.0 - (double) Main.gfxQuality) + 140.0 * (double) Main.gfxQuality);
|
|
int num4 = (int) (200.0 * (1.0 - (double) Main.gfxQuality) + 40.0 * (double) Main.gfxQuality);
|
|
Vector2 vector2 = Main.drawToScreen ? Vector2.Zero : new Vector2((float) Main.offScreenRange, (float) Main.offScreenRange);
|
|
Vector3 vector3 = new Vector3(0.9f);
|
|
float num5 = MathHelper.Clamp((float) (((double) Main.screenPosition.Y - Main.worldSurface * 16.0) / 300.0), 0.0f, 1f);
|
|
Lighting.GlobalBrightness = (float) ((double) Lighting.GlobalBrightness * (1.0 - (double) num5) + 1.0 * (double) num5);
|
|
float num6 = MathHelper.Clamp((float) ((double) Main.screenPosition.Y - (double) (Main.screenHeight / 2) + 200.0 - Main.rockLayer * 16.0) / 300f, 0.0f, 1f);
|
|
int num7 = (int) (((double) Main.screenPosition.X + (double) (Main.screenWidth / 2)) / 16.0);
|
|
int num8 = (num7 > Main.caveBackX[0] ? (num7 > Main.caveBackX[1] ? (num7 > Main.caveBackX[2] ? Main.caveBackStyle[3] : Main.caveBackStyle[2]) : Main.caveBackStyle[1]) : Main.caveBackStyle[0]) + 3;
|
|
if (Main.SceneMetrics.SnowTileCount > SceneMetrics.SnowTileThreshold && ((double) Main.screenPosition.Y + (double) Main.screenHeight + 1200.0) / 16.0 < (double) (Main.maxTilesY - 250))
|
|
num8 = 1;
|
|
if (Main.SceneMetrics.JungleTileCount > SceneMetrics.JungleTileThreshold)
|
|
{
|
|
if (num8 == 1)
|
|
{
|
|
if (Main.SceneMetrics.JungleTileCount > Main.SceneMetrics.SnowTileCount)
|
|
num8 = 11;
|
|
}
|
|
else
|
|
num8 = 11;
|
|
}
|
|
if (WorldGen.oceanDepths((int) ((double) Main.screenPosition.X + (double) (Main.screenHeight / 2)) / 16, (int) ((double) Main.screenPosition.Y + (double) (Main.screenHeight / 2)) / 16))
|
|
num8 = !Main.player[Main.myPlayer].ZoneCorrupt ? (!Main.player[Main.myPlayer].ZoneCrimson ? (!Main.player[Main.myPlayer].ZoneHallow ? 18 : 20) : 21) : 19;
|
|
else if ((double) Main.screenPosition.Y / 16.0 > Main.rockLayer + 60.0 && (double) Main.screenPosition.Y / 16.0 < num2 - 60.0)
|
|
{
|
|
if (Main.player[Main.myPlayer].ZoneSnow)
|
|
{
|
|
if (Main.player[Main.myPlayer].ZoneCorrupt)
|
|
num8 = 15;
|
|
else if (Main.player[Main.myPlayer].ZoneCrimson)
|
|
num8 = 16;
|
|
else if (Main.player[Main.myPlayer].ZoneHallow)
|
|
num8 = 17;
|
|
}
|
|
else if (Main.player[Main.myPlayer].ZoneCorrupt)
|
|
num8 = 12;
|
|
else if (Main.player[Main.myPlayer].ZoneCrimson)
|
|
num8 = 13;
|
|
else if (Main.player[Main.myPlayer].ZoneHallow)
|
|
num8 = 14;
|
|
}
|
|
if (Main.SceneMetrics.MushroomTileCount > SceneMetrics.MushroomTileMax)
|
|
num8 = 2;
|
|
if (num8 != Main.undergroundBackground)
|
|
{
|
|
Main.oldUndergroundBackground = Main.undergroundBackground;
|
|
Main.undergroundBackground = num8;
|
|
Main.ugBackTransition = 1f;
|
|
}
|
|
if ((double) Main.ugBackTransition > 0.0)
|
|
Main.ugBackTransition -= 0.25f;
|
|
if ((double) Main.ugBackTransition < 0.0)
|
|
Main.ugBackTransition = 0.0f;
|
|
int[] numArray1 = new int[7];
|
|
int[] numArray2 = new int[7];
|
|
for (int index1 = 0; index1 < 2; ++index1)
|
|
{
|
|
int undergroundBackground = Main.undergroundBackground;
|
|
if (index1 == 1)
|
|
undergroundBackground = Main.oldUndergroundBackground;
|
|
int[] numArray3 = new int[7];
|
|
switch (undergroundBackground)
|
|
{
|
|
case 0:
|
|
numArray3[0] = 1;
|
|
numArray3[1] = 2;
|
|
numArray3[2] = 4;
|
|
numArray3[3] = 3;
|
|
numArray3[4] = 6;
|
|
numArray3[5] = 5;
|
|
break;
|
|
case 1:
|
|
switch (Main.iceBackStyle)
|
|
{
|
|
case 0:
|
|
numArray3[1] = 33;
|
|
numArray3[3] = 32;
|
|
numArray3[0] = 40;
|
|
numArray3[2] = 34;
|
|
break;
|
|
case 1:
|
|
numArray3[1] = 118;
|
|
numArray3[3] = 117;
|
|
numArray3[0] = 160;
|
|
numArray3[2] = 161;
|
|
break;
|
|
case 2:
|
|
numArray3[1] = 165;
|
|
numArray3[3] = 167;
|
|
numArray3[0] = 164;
|
|
numArray3[2] = 166;
|
|
break;
|
|
default:
|
|
numArray3[1] = 120;
|
|
numArray3[3] = 119;
|
|
numArray3[0] = 162;
|
|
numArray3[2] = 163;
|
|
break;
|
|
}
|
|
numArray3[4] = 128 + Main.hellBackStyle;
|
|
break;
|
|
case 2:
|
|
numArray3[0] = 62;
|
|
numArray3[1] = 63;
|
|
numArray3[2] = 64;
|
|
numArray3[3] = 65;
|
|
numArray3[4] = 143 + Main.hellBackStyle;
|
|
break;
|
|
case 3:
|
|
numArray3[0] = 66;
|
|
numArray3[1] = 67;
|
|
numArray3[2] = 68;
|
|
numArray3[3] = 69;
|
|
numArray3[4] = 128 + Main.hellBackStyle;
|
|
break;
|
|
case 4:
|
|
numArray3[0] = 70;
|
|
numArray3[1] = 71;
|
|
numArray3[2] = 68;
|
|
numArray3[3] = 72;
|
|
numArray3[4] = 128 + Main.hellBackStyle;
|
|
break;
|
|
case 5:
|
|
numArray3[0] = 73;
|
|
numArray3[1] = 74;
|
|
numArray3[2] = 75;
|
|
numArray3[3] = 76;
|
|
numArray3[4] = 131 + Main.hellBackStyle;
|
|
break;
|
|
case 6:
|
|
numArray3[0] = 77;
|
|
numArray3[1] = 78;
|
|
numArray3[2] = 79;
|
|
numArray3[3] = 80;
|
|
numArray3[4] = 134 + Main.hellBackStyle;
|
|
break;
|
|
case 7:
|
|
numArray3[0] = 77;
|
|
numArray3[1] = 81;
|
|
numArray3[2] = 79;
|
|
numArray3[3] = 82;
|
|
numArray3[4] = 134 + Main.hellBackStyle;
|
|
break;
|
|
case 8:
|
|
numArray3[0] = 83;
|
|
numArray3[1] = 84;
|
|
numArray3[2] = 85;
|
|
numArray3[3] = 86;
|
|
numArray3[4] = 137 + Main.hellBackStyle;
|
|
break;
|
|
case 9:
|
|
numArray3[0] = 83;
|
|
numArray3[1] = 87;
|
|
numArray3[2] = 88;
|
|
numArray3[3] = 89;
|
|
numArray3[4] = 137 + Main.hellBackStyle;
|
|
break;
|
|
case 10:
|
|
numArray3[0] = 121;
|
|
numArray3[1] = 122;
|
|
numArray3[2] = 123;
|
|
numArray3[3] = 124;
|
|
numArray3[4] = 140 + Main.hellBackStyle;
|
|
break;
|
|
case 11:
|
|
if (Main.jungleBackStyle == 0)
|
|
{
|
|
numArray3[0] = 153;
|
|
numArray3[1] = 147;
|
|
numArray3[2] = 148;
|
|
numArray3[3] = 149;
|
|
numArray3[4] = 150 + Main.hellBackStyle;
|
|
break;
|
|
}
|
|
numArray3[0] = 146;
|
|
numArray3[1] = 154;
|
|
numArray3[2] = 155;
|
|
numArray3[3] = 156;
|
|
numArray3[4] = 157 + Main.hellBackStyle;
|
|
break;
|
|
default:
|
|
if (undergroundBackground >= 12 && undergroundBackground <= 14)
|
|
{
|
|
numArray3[0] = 66;
|
|
numArray3[1] = 67;
|
|
numArray3[2] = 68;
|
|
numArray3[4] = 128 + Main.hellBackStyle;
|
|
switch (undergroundBackground)
|
|
{
|
|
case 12:
|
|
numArray3[3] = 193 + Main.worldID % 4;
|
|
break;
|
|
case 13:
|
|
numArray3[3] = 188 + Main.worldID % 5;
|
|
break;
|
|
case 14:
|
|
numArray3[3] = 197 + Main.worldID % 3;
|
|
break;
|
|
}
|
|
}
|
|
else if (undergroundBackground >= 15 && undergroundBackground <= 17)
|
|
{
|
|
numArray3[0] = 40;
|
|
numArray3[1] = 33;
|
|
numArray3[2] = 34;
|
|
numArray3[4] = 128 + Main.hellBackStyle;
|
|
switch (undergroundBackground)
|
|
{
|
|
case 15:
|
|
numArray3[3] = 200;
|
|
break;
|
|
case 16:
|
|
numArray3[3] = 201 + Main.worldID % 2;
|
|
break;
|
|
case 17:
|
|
numArray3[3] = 203 + Main.worldID % 4;
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (undergroundBackground)
|
|
{
|
|
case 18:
|
|
numArray3[0] = 290;
|
|
numArray3[1] = 291;
|
|
break;
|
|
case 19:
|
|
numArray3[0] = 292;
|
|
numArray3[1] = 293;
|
|
break;
|
|
case 20:
|
|
numArray3[0] = 294;
|
|
numArray3[1] = 295;
|
|
break;
|
|
case 21:
|
|
numArray3[0] = 296;
|
|
numArray3[1] = 297;
|
|
break;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
if (Main.hellBackStyle == 0)
|
|
numArray3[5] = 125;
|
|
if (Main.hellBackStyle == 1)
|
|
numArray3[5] = 126;
|
|
if (Main.hellBackStyle == 2)
|
|
numArray3[5] = (int) sbyte.MaxValue;
|
|
numArray3[6] = 185 + Main.hellBackStyle;
|
|
this.LoadBackground(numArray3[0]);
|
|
this.LoadBackground(numArray3[1]);
|
|
this.LoadBackground(numArray3[2]);
|
|
this.LoadBackground(numArray3[3]);
|
|
this.LoadBackground(numArray3[4]);
|
|
this.LoadBackground(numArray3[5]);
|
|
this.LoadBackground(numArray3[6]);
|
|
if (index1 == 0)
|
|
{
|
|
for (int index2 = 0; index2 < 7; ++index2)
|
|
numArray1[index2] = numArray3[index2];
|
|
}
|
|
else
|
|
{
|
|
for (int index3 = 0; index3 < 7; ++index3)
|
|
numArray2[index3] = numArray3[index3];
|
|
}
|
|
}
|
|
float num9 = (float) (1.20000004768372 - 0.200000002980232 * (double) num6);
|
|
float x1 = vector3.X;
|
|
float y1 = vector3.Y;
|
|
float z = vector3.Z;
|
|
int num10 = TextureAssets.Background[numArray1[0]].Width() - 32;
|
|
this.bgParallax = (double) Main.caveParallax;
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) num10 + (double) Main.screenPosition.X * this.bgParallax, (double) num10) - (double) (num10 / 2)) - (int) vector2.X;
|
|
this.bgLoops = (Main.screenWidth + (int) vector2.X * 2) / num10 + 2;
|
|
this.bgTopY = (int) ((double) ((int) Main.worldSurface * 16 - 16) - (double) Main.screenPosition.Y + 16.0);
|
|
for (int index4 = 0; index4 < this.bgLoops; ++index4)
|
|
{
|
|
for (int index5 = 0; index5 < num10 / 16; ++index5)
|
|
{
|
|
int num11 = (int) (float) Math.Round(-Math.IEEERemainder((double) this.bgStartX + (double) Main.screenPosition.X, 16.0));
|
|
if (num11 == -8)
|
|
num11 = 8;
|
|
double num12 = (double) (this.bgStartX + num10 * index4 + index5 * 16 + 8);
|
|
float bgTopY = (float) this.bgTopY;
|
|
double x2 = (double) Main.screenPosition.X;
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor((int) ((num12 + x2) / 16.0), (int) (((double) Main.screenPosition.Y + (double) bgTopY) / 16.0));
|
|
color.R = (byte) ((double) color.R * (double) x1);
|
|
color.G = (byte) ((double) color.G * (double) y1);
|
|
color.B = (byte) ((double) color.B * (double) z);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray1[0]].Value, new Vector2((float) (this.bgStartX + num10 * index4 + 16 * index5 + num11), (float) this.bgTopY) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index5 + num11 + 16, 0, 16, 16)), color);
|
|
}
|
|
}
|
|
if ((double) Main.ugBackTransition > 0.0)
|
|
{
|
|
num10 = TextureAssets.Background[numArray2[0]].Width() - 32;
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) num10 + (double) Main.screenPosition.X * this.bgParallax, (double) num10) - (double) (num10 / 2)) - (int) vector2.X;
|
|
this.bgLoops = (Main.screenWidth + (int) vector2.X * 2) / num10 + 2;
|
|
for (int index6 = 0; index6 < this.bgLoops; ++index6)
|
|
{
|
|
for (int index7 = 0; index7 < num10 / 16; ++index7)
|
|
{
|
|
int num13 = (int) (float) Math.Round(-Math.IEEERemainder((double) this.bgStartX + (double) Main.screenPosition.X, 16.0));
|
|
if (num13 == -8)
|
|
num13 = 8;
|
|
double num14 = (double) (this.bgStartX + num10 * index6 + index7 * 16 + 8);
|
|
float bgTopY = (float) this.bgTopY;
|
|
double x3 = (double) Main.screenPosition.X;
|
|
Microsoft.Xna.Framework.Color color1 = Lighting.GetColor((int) ((num14 + x3) / 16.0), (int) (((double) Main.screenPosition.Y + (double) bgTopY) / 16.0));
|
|
color1.R = (byte) ((double) color1.R * (double) x1);
|
|
color1.G = (byte) ((double) color1.G * (double) y1);
|
|
color1.B = (byte) ((double) color1.B * (double) z);
|
|
Microsoft.Xna.Framework.Color color2 = color1;
|
|
color2.R = (byte) ((double) color2.R * (double) Main.ugBackTransition);
|
|
color2.G = (byte) ((double) color2.G * (double) Main.ugBackTransition);
|
|
color2.B = (byte) ((double) color2.B * (double) Main.ugBackTransition);
|
|
color2.A = (byte) ((double) color2.A * (double) Main.ugBackTransition);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray2[0]].Value, new Vector2((float) (this.bgStartX + num10 * index6 + 16 * index7 + num13), (float) this.bgTopY) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index7 + num13 + 16, 0, 16, 16)), color2);
|
|
}
|
|
}
|
|
}
|
|
bool flag1 = false;
|
|
bool flag2 = false;
|
|
this.bgTopY = (int) ((double) ((int) Main.worldSurface * 16) - (double) Main.screenPosition.Y + 16.0);
|
|
if (Main.worldSurface * 16.0 <= (double) Main.screenPosition.Y + (double) Main.screenHeight + (double) Main.offScreenRange)
|
|
{
|
|
this.bgParallax = (double) Main.caveParallax;
|
|
int num15 = TextureAssets.Background[numArray1[1]].Width() - 32;
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) num15 + (double) Main.screenPosition.X * this.bgParallax, (double) num15) - (double) (num15 / 2)) - (int) vector2.X;
|
|
this.bgLoops = (Main.screenWidth + (int) vector2.X * 2) / num15 + 2;
|
|
if (Main.worldSurface * 16.0 < (double) Main.screenPosition.Y - 16.0)
|
|
{
|
|
this.bgStartY = (int) (Math.IEEERemainder((double) this.bgTopY, (double) Main.backgroundHeight[2]) - (double) Main.backgroundHeight[2]);
|
|
this.bgLoopsY = (Main.screenHeight - this.bgStartY + (int) vector2.Y * 2) / Main.backgroundHeight[2] + 1;
|
|
}
|
|
else
|
|
{
|
|
this.bgStartY = this.bgTopY;
|
|
this.bgLoopsY = (Main.screenHeight - this.bgTopY + (int) vector2.Y * 2) / Main.backgroundHeight[2] + 1;
|
|
}
|
|
if (Main.rockLayer * 16.0 < (double) Main.Camera.ScaledPosition.Y + 600.0)
|
|
{
|
|
this.bgLoopsY = (int) (Main.rockLayer * 16.0 - (double) Main.screenPosition.Y + 600.0 - (double) this.bgStartY) / Main.backgroundHeight[2];
|
|
flag2 = true;
|
|
}
|
|
int num16 = (int) (float) Math.Round(-Math.IEEERemainder((double) this.bgStartX + (double) Main.screenPosition.X, 16.0));
|
|
if (num16 == -8)
|
|
num16 = 8;
|
|
for (int index8 = 0; index8 < this.bgLoops; ++index8)
|
|
{
|
|
for (int index9 = 0; index9 < this.bgLoopsY; ++index9)
|
|
{
|
|
for (int index10 = 0; index10 < num15 / 16; ++index10)
|
|
{
|
|
for (int index11 = 0; index11 < 6; ++index11)
|
|
{
|
|
double num17 = (double) (this.bgStartY + index9 * 96 + index11 * 16 + 8);
|
|
int index12 = (int) (((double) (this.bgStartX + num15 * index8 + index10 * 16 + 8) + (double) Main.screenPosition.X) / 16.0);
|
|
double y2 = (double) Main.screenPosition.Y;
|
|
int index13 = (int) ((num17 + y2) / 16.0);
|
|
Microsoft.Xna.Framework.Color color3 = Lighting.GetColor(index12, index13);
|
|
if (WorldGen.InWorld(index12, index13))
|
|
{
|
|
if (Main.tile[index12, index13] == null)
|
|
Main.tile[index12, index13] = new Tile();
|
|
if (color3.R > (byte) 0 || color3.G > (byte) 0 || color3.B > (byte) 0)
|
|
{
|
|
if (!Main.drawToScreen)
|
|
{
|
|
VertexColors vertices;
|
|
Lighting.GetCornerColors(index12, index13, out vertices);
|
|
vertices.BottomLeftColor = new Microsoft.Xna.Framework.Color(vertices.BottomLeftColor.ToVector3() * vector3);
|
|
vertices.BottomRightColor = new Microsoft.Xna.Framework.Color(vertices.BottomRightColor.ToVector3() * vector3);
|
|
Main.tileBatch.Draw(TextureAssets.Background[numArray1[1]].Value, new Vector2((float) (this.bgStartX + num15 * index8 + 16 * index10 + num16), (float) (this.bgStartY + Main.backgroundHeight[numArray2[1]] * index9 + 16 * index11)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index10 + num16 + 16, 16 * index11, 16, 16)), vertices, Vector2.Zero, 1f, SpriteEffects.None);
|
|
}
|
|
else if (((int) color3.R > num3 || (double) color3.G > (double) num3 * 1.1 || (double) color3.B > (double) num3 * 1.2) && !Main.tile[index12, index13].active() && Main.wallLight[(int) Main.tile[index12, index13].wall] && (double) Main.ugBackTransition == 0.0)
|
|
{
|
|
Lighting.GetColor9Slice(index12, index13, ref slices);
|
|
try
|
|
{
|
|
for (int index14 = 0; index14 < 9; ++index14)
|
|
{
|
|
int num18 = 0;
|
|
int num19 = 0;
|
|
int width = 4;
|
|
int height = 4;
|
|
Microsoft.Xna.Framework.Color color4 = color3;
|
|
Microsoft.Xna.Framework.Color color5 = color3;
|
|
switch (index14)
|
|
{
|
|
case 0:
|
|
if (!Main.tile[index12 - 1, index13 - 1].active())
|
|
{
|
|
color5 = slices[index14];
|
|
break;
|
|
}
|
|
break;
|
|
case 1:
|
|
width = 8;
|
|
num18 = 4;
|
|
if (!Main.tile[index12, index13 - 1].active())
|
|
{
|
|
color5 = slices[index14];
|
|
break;
|
|
}
|
|
break;
|
|
case 2:
|
|
num18 = 12;
|
|
if (!Main.tile[index12 + 1, index13 - 1].active())
|
|
{
|
|
color5 = slices[index14];
|
|
break;
|
|
}
|
|
break;
|
|
case 3:
|
|
height = 8;
|
|
num19 = 4;
|
|
if (!Main.tile[index12 - 1, index13].active())
|
|
{
|
|
color5 = slices[index14];
|
|
break;
|
|
}
|
|
break;
|
|
case 4:
|
|
width = 8;
|
|
height = 8;
|
|
num18 = 4;
|
|
num19 = 4;
|
|
break;
|
|
case 5:
|
|
num18 = 12;
|
|
num19 = 4;
|
|
height = 8;
|
|
if (!Main.tile[index12 + 1, index13].active())
|
|
{
|
|
color5 = slices[index14];
|
|
break;
|
|
}
|
|
break;
|
|
case 6:
|
|
num19 = 12;
|
|
if (!Main.tile[index12 - 1, index13 + 1].active())
|
|
{
|
|
color5 = slices[index14];
|
|
break;
|
|
}
|
|
break;
|
|
case 7:
|
|
width = 8;
|
|
height = 4;
|
|
num18 = 4;
|
|
num19 = 12;
|
|
if (!Main.tile[index12, index13 + 1].active())
|
|
{
|
|
color5 = slices[index14];
|
|
break;
|
|
}
|
|
break;
|
|
case 8:
|
|
num18 = 12;
|
|
num19 = 12;
|
|
if (!Main.tile[index12 + 1, index13 + 1].active())
|
|
{
|
|
color5 = slices[index14];
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
color4.R = (byte) (((int) color3.R + (int) color5.R) / 2);
|
|
color4.G = (byte) (((int) color3.G + (int) color5.G) / 2);
|
|
color4.B = (byte) (((int) color3.B + (int) color5.B) / 2);
|
|
color4.R = (byte) ((double) color4.R * (double) x1);
|
|
color4.G = (byte) ((double) color4.G * (double) y1);
|
|
color4.B = (byte) ((double) color4.B * (double) z);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray1[1]].Value, new Vector2((float) (this.bgStartX + num15 * index8 + 16 * index10 + num18 + num16), (float) (this.bgStartY + Main.backgroundHeight[numArray1[1]] * index9 + 16 * index11 + num19)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index10 + num18 + num16 + 16, 16 * index11 + num19, width, height)), color4);
|
|
if ((double) Main.ugBackTransition > 0.0)
|
|
{
|
|
Microsoft.Xna.Framework.Color color6 = color4;
|
|
color6.R = (byte) ((double) color6.R * (double) Main.ugBackTransition);
|
|
color6.G = (byte) ((double) color6.G * (double) Main.ugBackTransition);
|
|
color6.B = (byte) ((double) color6.B * (double) Main.ugBackTransition);
|
|
color6.A = (byte) ((double) color6.A * (double) Main.ugBackTransition);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray2[1]].Value, new Vector2((float) (this.bgStartX + num15 * index8 + 16 * index10 + num18 + num16), (float) (this.bgStartY + Main.backgroundHeight[numArray2[1]] * index9 + 16 * index11 + num19)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index10 + num18 + num16 + 16, 16 * index11 + num19, width, height)), color6);
|
|
}
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
color3.R = (byte) ((double) color3.R * (double) x1);
|
|
color3.G = (byte) ((double) color3.G * (double) y1);
|
|
color3.B = (byte) ((double) color3.B * (double) z);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray1[1]].Value, new Vector2((float) (this.bgStartX + num15 * index8 + 16 * index10 + num16), (float) (this.bgStartY + Main.backgroundHeight[numArray1[1]] * index9 + 16 * index11)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index10 + num16 + 16, 16 * index11, 16, 16)), color3);
|
|
}
|
|
}
|
|
else if (((int) color3.R > num4 || (double) color3.G > (double) num4 * 1.1 || (double) color3.B > (double) num4 * 1.2) && (double) Main.ugBackTransition == 0.0)
|
|
{
|
|
Lighting.GetColor4Slice(index12, index13, ref slices);
|
|
for (int index15 = 0; index15 < 4; ++index15)
|
|
{
|
|
int num20 = 0;
|
|
int num21 = 0;
|
|
Microsoft.Xna.Framework.Color color7 = color3;
|
|
Microsoft.Xna.Framework.Color color8 = slices[index15];
|
|
switch (index15 - 1)
|
|
{
|
|
case 0:
|
|
num20 = 8;
|
|
break;
|
|
case 1:
|
|
num21 = 8;
|
|
break;
|
|
case 2:
|
|
num20 = 8;
|
|
num21 = 8;
|
|
break;
|
|
}
|
|
color7.R = (byte) (((int) color3.R + (int) color8.R) / 2);
|
|
color7.G = (byte) (((int) color3.G + (int) color8.G) / 2);
|
|
color7.B = (byte) (((int) color3.B + (int) color8.B) / 2);
|
|
color7.R = (byte) ((double) color7.R * (double) x1);
|
|
color7.G = (byte) ((double) color7.G * (double) y1);
|
|
color7.B = (byte) ((double) color7.B * (double) z);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray1[1]].Value, new Vector2((float) (this.bgStartX + num15 * index8 + 16 * index10 + num20 + num16), (float) (this.bgStartY + Main.backgroundHeight[numArray1[1]] * index9 + 16 * index11 + num21)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index10 + num20 + num16 + 16, 16 * index11 + num21, 8, 8)), color7);
|
|
if ((double) Main.ugBackTransition > 0.0)
|
|
{
|
|
Microsoft.Xna.Framework.Color color9 = color7;
|
|
color9.R = (byte) ((double) color9.R * (double) Main.ugBackTransition);
|
|
color9.G = (byte) ((double) color9.G * (double) Main.ugBackTransition);
|
|
color9.B = (byte) ((double) color9.B * (double) Main.ugBackTransition);
|
|
color9.A = (byte) ((double) color9.A * (double) Main.ugBackTransition);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray2[1]].Value, new Vector2((float) (this.bgStartX + num15 * index8 + 16 * index10 + num20 + num16), (float) (this.bgStartY + Main.backgroundHeight[numArray2[1]] * index9 + 16 * index11 + num21)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index10 + num20 + num16 + 16, 16 * index11 + num21, 8, 8)), color9);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
color3.R = (byte) ((double) color3.R * (double) x1);
|
|
color3.G = (byte) ((double) color3.G * (double) y1);
|
|
color3.B = (byte) ((double) color3.B * (double) z);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray1[1]].Value, new Vector2((float) (this.bgStartX + num15 * index8 + 16 * index10 + num16), (float) (this.bgStartY + Main.backgroundHeight[numArray1[1]] * index9 + 16 * index11)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index10 + num16 + 16, 16 * index11, 16, 16)), color3);
|
|
if ((double) Main.ugBackTransition > 0.0)
|
|
{
|
|
Microsoft.Xna.Framework.Color color10 = color3;
|
|
color10.R = (byte) ((double) color10.R * (double) Main.ugBackTransition);
|
|
color10.G = (byte) ((double) color10.G * (double) Main.ugBackTransition);
|
|
color10.B = (byte) ((double) color10.B * (double) Main.ugBackTransition);
|
|
color10.A = (byte) ((double) color10.A * (double) Main.ugBackTransition);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray2[1]].Value, new Vector2((float) (this.bgStartX + num15 * index8 + 16 * index10 + num16), (float) (this.bgStartY + Main.backgroundHeight[numArray2[1]] * index9 + 16 * index11)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index10 + num16 + 16, 16 * index11, 16, 16)), color10);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
color3.R = (byte) ((double) color3.R * (double) x1);
|
|
color3.G = (byte) ((double) color3.G * (double) y1);
|
|
color3.B = (byte) ((double) color3.B * (double) z);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray1[1]].Value, new Vector2((float) (this.bgStartX + num15 * index8 + 16 * index10 + num16), (float) (this.bgStartY + Main.backgroundHeight[numArray1[1]] * index9 + 16 * index11)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index10 + num16 + 16, 16 * index11, 16, 16)), color3);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if ((double) Main.ugBackTransition > 0.0)
|
|
{
|
|
int num22 = TextureAssets.Background[numArray2[1]].Width() - 32;
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) num22 + (double) Main.screenPosition.X * this.bgParallax, (double) num22) - (double) (num22 / 2)) - (int) vector2.X;
|
|
this.bgLoops = (Main.screenWidth + (int) vector2.X * 2) / num22 + 2;
|
|
num16 = (int) (float) Math.Round(-Math.IEEERemainder((double) this.bgStartX + (double) Main.screenPosition.X, 16.0));
|
|
if (num16 == -8)
|
|
num16 = 8;
|
|
for (int index16 = 0; index16 < this.bgLoops; ++index16)
|
|
{
|
|
for (int index17 = 0; index17 < this.bgLoopsY; ++index17)
|
|
{
|
|
for (int index18 = 0; index18 < num22 / 16; ++index18)
|
|
{
|
|
for (int index19 = 0; index19 < 6; ++index19)
|
|
{
|
|
double num23 = (double) (this.bgStartY + index17 * 96 + index19 * 16 + 8);
|
|
int index20 = (int) (((double) (this.bgStartX + num22 * index16 + index18 * 16 + 8) + (double) Main.screenPosition.X) / 16.0);
|
|
double y3 = (double) Main.screenPosition.Y;
|
|
int index21 = (int) ((num23 + y3) / 16.0);
|
|
if (WorldGen.InWorld(index20, index21))
|
|
{
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor(index20, index21);
|
|
if (Main.tile[index20, index21] == null)
|
|
Main.tile[index20, index21] = new Tile();
|
|
if (color.R > (byte) 0 || color.G > (byte) 0 || color.B > (byte) 0)
|
|
{
|
|
VertexColors vertices;
|
|
Lighting.GetCornerColors(index20, index21, out vertices, Main.ugBackTransition);
|
|
byte num24 = (byte) ((double) byte.MaxValue * (double) Main.ugBackTransition);
|
|
vertices.BottomLeftColor.A = num24;
|
|
vertices.BottomRightColor.A = num24;
|
|
vertices.TopLeftColor.A = num24;
|
|
vertices.TopRightColor.A = num24;
|
|
Main.tileBatch.Draw(TextureAssets.Background[numArray2[1]].Value, new Vector2((float) (this.bgStartX + num22 * index16 + 16 * index18 + num16), (float) (this.bgStartY + Main.backgroundHeight[numArray2[1]] * index17 + 16 * index19)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index18 + num16 + 16, 16 * index19, 16, 16)), vertices, Vector2.Zero, 1f, SpriteEffects.None);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
num10 = 128;
|
|
if (flag2)
|
|
{
|
|
this.bgParallax = (double) Main.caveParallax;
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) num10 + (double) Main.screenPosition.X * this.bgParallax, (double) num10) - (double) (num10 / 2)) - (int) vector2.X;
|
|
this.bgLoops = (Main.screenWidth + (int) vector2.X * 2) / num10 + 2;
|
|
this.bgTopY = this.bgStartY + this.bgLoopsY * Main.backgroundHeight[2];
|
|
if (this.bgTopY > -32)
|
|
{
|
|
for (int index22 = 0; index22 < this.bgLoops; ++index22)
|
|
{
|
|
for (int index23 = 0; index23 < num10 / 16; ++index23)
|
|
{
|
|
double num25 = (double) (this.bgStartX + num10 * index22 + index23 * 16 + 8);
|
|
float bgTopY = (float) this.bgTopY;
|
|
double x4 = (double) Main.screenPosition.X;
|
|
Microsoft.Xna.Framework.Color color11 = Lighting.GetColor((int) ((num25 + x4) / 16.0), (int) (((double) Main.screenPosition.Y + (double) bgTopY) / 16.0));
|
|
color11.R = (byte) ((double) color11.R * (double) x1);
|
|
color11.G = (byte) ((double) color11.G * (double) y1);
|
|
color11.B = (byte) ((double) color11.B * (double) z);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray1[2]].Value, new Vector2((float) (this.bgStartX + num10 * index22 + 16 * index23 + num16), (float) this.bgTopY) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index23 + num16 + 16, 0, 16, 16)), color11);
|
|
if ((double) Main.ugBackTransition > 0.0)
|
|
{
|
|
Microsoft.Xna.Framework.Color color12 = color11;
|
|
color12.R = (byte) ((double) color12.R * (double) Main.ugBackTransition);
|
|
color12.G = (byte) ((double) color12.G * (double) Main.ugBackTransition);
|
|
color12.B = (byte) ((double) color12.B * (double) Main.ugBackTransition);
|
|
color12.A = (byte) ((double) color12.A * (double) Main.ugBackTransition);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray2[2]].Value, new Vector2((float) (this.bgStartX + num10 * index22 + 16 * index23 + num16), (float) this.bgTopY) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index23 + num16 + 16, 0, 16, 16)), color12);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (num2 * 16.0 <= (double) Main.screenPosition.Y + (double) Main.screenHeight)
|
|
{
|
|
int y4 = 0;
|
|
int x5 = 0;
|
|
int height = Main.screenHeight + 200;
|
|
int width = Main.screenWidth + 100;
|
|
if ((double) Main.UnderworldLayer * 16.0 < (double) Main.screenPosition.Y + (double) Main.screenHeight)
|
|
{
|
|
int num26 = (int) ((double) this.hellBlackBoxBottom - (double) Main.screenPosition.Y + (double) vector2.Y);
|
|
if (height > num26)
|
|
height = num26;
|
|
}
|
|
Main.spriteBatch.Draw(TextureAssets.BlackTile.Value, new Microsoft.Xna.Framework.Rectangle(x5, y4, width, height), new Microsoft.Xna.Framework.Color(0, 0, 0));
|
|
}
|
|
this.hellBlackBoxBottom = (float) ((double) Main.screenPosition.Y + (double) Main.screenHeight + 100.0);
|
|
this.bgTopY = (int) ((double) ((int) Main.rockLayer * 16) - (double) Main.screenPosition.Y + 16.0 + 600.0 - 8.0);
|
|
if (Main.rockLayer * 16.0 <= (double) Main.screenPosition.Y + (double) Main.screenHeight)
|
|
{
|
|
this.bgParallax = (double) Main.caveParallax;
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) num10 + (double) Main.screenPosition.X * this.bgParallax, (double) num10) - (double) (num10 / 2)) - (int) vector2.X;
|
|
this.bgLoops = (Main.screenWidth + (int) vector2.X * 2) / num10 + 2;
|
|
if (Main.rockLayer * 16.0 + (double) Main.screenHeight < (double) Main.screenPosition.Y - 16.0)
|
|
{
|
|
this.bgStartY = (int) (Math.IEEERemainder((double) this.bgTopY, (double) Main.backgroundHeight[3]) - (double) Main.backgroundHeight[3]);
|
|
this.bgLoopsY = (Main.screenHeight - this.bgStartY + (int) vector2.Y * 2) / Main.backgroundHeight[2] + 1;
|
|
}
|
|
else
|
|
{
|
|
this.bgStartY = this.bgTopY;
|
|
this.bgLoopsY = (Main.screenHeight - this.bgTopY + (int) vector2.Y * 2) / Main.backgroundHeight[2] + 1;
|
|
}
|
|
if (num2 * 16.0 < (double) Main.screenPosition.Y + (double) Main.screenHeight)
|
|
{
|
|
this.bgLoopsY = (int) (num2 * 16.0 - (double) Main.screenPosition.Y + 600.0 - (double) this.bgStartY) / Main.backgroundHeight[2];
|
|
flag1 = true;
|
|
}
|
|
int num27 = (int) (float) Math.Round(-Math.IEEERemainder((double) this.bgStartX + (double) Main.screenPosition.X, 16.0));
|
|
if (num27 == -8)
|
|
num27 = 8;
|
|
for (int index24 = 0; index24 < this.bgLoops; ++index24)
|
|
{
|
|
for (int index25 = 0; index25 < this.bgLoopsY; ++index25)
|
|
{
|
|
for (int index26 = 0; index26 < num10 / 16; ++index26)
|
|
{
|
|
for (int index27 = 0; index27 < 6; ++index27)
|
|
{
|
|
double num28 = (double) (this.bgStartY + index25 * 96 + index27 * 16 + 8);
|
|
int index28 = (int) (((double) (this.bgStartX + num10 * index24 + index26 * 16 + 8) + (double) Main.screenPosition.X) / 16.0);
|
|
double y5 = (double) Main.screenPosition.Y;
|
|
int index29 = (int) ((num28 + y5) / 16.0);
|
|
if (WorldGen.InWorld(index28, index29, 1))
|
|
{
|
|
Microsoft.Xna.Framework.Color color13 = Lighting.GetColor(index28, index29);
|
|
if (Main.tile[index28, index29] == null)
|
|
Main.tile[index28, index29] = new Tile();
|
|
bool flag3 = false;
|
|
if ((double) Main.caveParallax != 0.0)
|
|
{
|
|
if (Main.tile[index28 - 1, index29] == null)
|
|
Main.tile[index28 - 1, index29] = new Tile();
|
|
if (Main.tile[index28 + 1, index29] == null)
|
|
Main.tile[index28 + 1, index29] = new Tile();
|
|
if (Main.wallLight[(int) Main.tile[index28, index29].wall] || Main.wallLight[(int) Main.tile[index28 - 1, index29].wall] || Main.wallLight[(int) Main.tile[index28 + 1, index29].wall])
|
|
flag3 = true;
|
|
}
|
|
else if (Main.wallLight[(int) Main.tile[index28, index29].wall])
|
|
flag3 = true;
|
|
if ((flag3 || color13.R == (byte) 0 || color13.G == (byte) 0 || color13.B == (byte) 0) && (color13.R > (byte) 0 || color13.G > (byte) 0 || color13.B > (byte) 0) && (Main.wallLight[(int) Main.tile[index28, index29].wall] || (double) Main.caveParallax != 0.0))
|
|
{
|
|
if (Lighting.NotRetro && color13.R < (byte) 230 && color13.G < (byte) 230 && color13.B < (byte) 230 && (double) Main.ugBackTransition == 0.0)
|
|
{
|
|
if (((int) color13.R > num3 || (double) color13.G > (double) num3 * 1.1 || (double) color13.B > (double) num3 * 1.2) && !Main.tile[index28, index29].active())
|
|
{
|
|
Lighting.GetColor9Slice(index28, index29, ref slices);
|
|
for (int index30 = 0; index30 < 9; ++index30)
|
|
{
|
|
int num29 = 0;
|
|
int num30 = 0;
|
|
int width = 4;
|
|
int height = 4;
|
|
Microsoft.Xna.Framework.Color color14 = color13;
|
|
Microsoft.Xna.Framework.Color color15 = color13;
|
|
switch (index30)
|
|
{
|
|
case 0:
|
|
if (!Main.tile[index28 - 1, index29 - 1].active())
|
|
{
|
|
color15 = slices[index30];
|
|
break;
|
|
}
|
|
break;
|
|
case 1:
|
|
width = 8;
|
|
num29 = 4;
|
|
if (!Main.tile[index28, index29 - 1].active())
|
|
{
|
|
color15 = slices[index30];
|
|
break;
|
|
}
|
|
break;
|
|
case 2:
|
|
num29 = 12;
|
|
if (!Main.tile[index28 + 1, index29 - 1].active())
|
|
{
|
|
color15 = slices[index30];
|
|
break;
|
|
}
|
|
break;
|
|
case 3:
|
|
height = 8;
|
|
num30 = 4;
|
|
if (!Main.tile[index28 - 1, index29].active())
|
|
{
|
|
color15 = slices[index30];
|
|
break;
|
|
}
|
|
break;
|
|
case 4:
|
|
width = 8;
|
|
height = 8;
|
|
num29 = 4;
|
|
num30 = 4;
|
|
break;
|
|
case 5:
|
|
num29 = 12;
|
|
num30 = 4;
|
|
height = 8;
|
|
if (!Main.tile[index28 + 1, index29].active())
|
|
{
|
|
color15 = slices[index30];
|
|
break;
|
|
}
|
|
break;
|
|
case 6:
|
|
num30 = 12;
|
|
if (!Main.tile[index28 - 1, index29 + 1].active())
|
|
{
|
|
color15 = slices[index30];
|
|
break;
|
|
}
|
|
break;
|
|
case 7:
|
|
width = 8;
|
|
height = 4;
|
|
num29 = 4;
|
|
num30 = 12;
|
|
if (!Main.tile[index28, index29 + 1].active())
|
|
{
|
|
color15 = slices[index30];
|
|
break;
|
|
}
|
|
break;
|
|
case 8:
|
|
num29 = 12;
|
|
num30 = 12;
|
|
if (!Main.tile[index28 + 1, index29 + 1].active())
|
|
{
|
|
color15 = slices[index30];
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
color14.R = (byte) (((int) color13.R + (int) color15.R) / 2);
|
|
color14.G = (byte) (((int) color13.G + (int) color15.G) / 2);
|
|
color14.B = (byte) (((int) color13.B + (int) color15.B) / 2);
|
|
color14.R = (byte) ((double) color14.R * (double) x1);
|
|
color14.G = (byte) ((double) color14.G * (double) y1);
|
|
color14.B = (byte) ((double) color14.B * (double) z);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray1[3]].Value, new Vector2((float) (this.bgStartX + num10 * index24 + 16 * index26 + num29 + num27), (float) (this.bgStartY + Main.backgroundHeight[numArray1[3]] * index25 + 16 * index27 + num30)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index26 + num29 + num27 + 16, 16 * index27 + num30, width, height)), color14);
|
|
if ((double) Main.ugBackTransition > 0.0)
|
|
{
|
|
Microsoft.Xna.Framework.Color color16 = color14;
|
|
color16.R = (byte) ((double) color16.R * (double) Main.ugBackTransition);
|
|
color16.G = (byte) ((double) color16.G * (double) Main.ugBackTransition);
|
|
color16.B = (byte) ((double) color16.B * (double) Main.ugBackTransition);
|
|
color16.A = (byte) ((double) color16.A * (double) Main.ugBackTransition);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray2[3]].Value, new Vector2((float) (this.bgStartX + num10 * index24 + 16 * index26 + num29 + num27), (float) (this.bgStartY + Main.backgroundHeight[numArray2[3]] * index25 + 16 * index27 + num30)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index26 + num29 + num27 + 16, 16 * index27 + num30, width, height)), color16);
|
|
}
|
|
}
|
|
}
|
|
else if ((int) color13.R > num4 || (double) color13.G > (double) num4 * 1.1 || (double) color13.B > (double) num4 * 1.2)
|
|
{
|
|
Lighting.GetColor4Slice(index28, index29, ref slices);
|
|
for (int index31 = 0; index31 < 4; ++index31)
|
|
{
|
|
int num31 = 0;
|
|
int num32 = 0;
|
|
Microsoft.Xna.Framework.Color color17 = color13;
|
|
Microsoft.Xna.Framework.Color color18 = slices[index31];
|
|
switch (index31 - 1)
|
|
{
|
|
case 0:
|
|
num31 = 8;
|
|
break;
|
|
case 1:
|
|
num32 = 8;
|
|
break;
|
|
case 2:
|
|
num31 = 8;
|
|
num32 = 8;
|
|
break;
|
|
}
|
|
color17.R = (byte) (((int) color13.R + (int) color18.R) / 2);
|
|
color17.G = (byte) (((int) color13.G + (int) color18.G) / 2);
|
|
color17.B = (byte) (((int) color13.B + (int) color18.B) / 2);
|
|
color17.R = (byte) ((double) color17.R * (double) x1);
|
|
color17.G = (byte) ((double) color17.G * (double) y1);
|
|
color17.B = (byte) ((double) color17.B * (double) z);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray1[3]].Value, new Vector2((float) (this.bgStartX + num10 * index24 + 16 * index26 + num31 + num27), (float) (this.bgStartY + Main.backgroundHeight[numArray1[3]] * index25 + 16 * index27 + num32)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index26 + num31 + num27 + 16, 16 * index27 + num32, 8, 8)), color17);
|
|
if ((double) Main.ugBackTransition > 0.0)
|
|
{
|
|
Microsoft.Xna.Framework.Color color19 = color17;
|
|
color19.R = (byte) ((double) color19.R * (double) Main.ugBackTransition);
|
|
color19.G = (byte) ((double) color19.G * (double) Main.ugBackTransition);
|
|
color19.B = (byte) ((double) color19.B * (double) Main.ugBackTransition);
|
|
color19.A = (byte) ((double) color19.A * (double) Main.ugBackTransition);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray2[3]].Value, new Vector2((float) (this.bgStartX + num10 * index24 + 16 * index26 + num31 + num27), (float) (this.bgStartY + Main.backgroundHeight[numArray2[3]] * index25 + 16 * index27 + num32)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index26 + num31 + num27 + 16, 16 * index27 + num32, 8, 8)), color19);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
color13.R = (byte) ((double) color13.R * (double) x1);
|
|
color13.G = (byte) ((double) color13.G * (double) y1);
|
|
color13.B = (byte) ((double) color13.B * (double) z);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray1[3]].Value, new Vector2((float) (this.bgStartX + num10 * index24 + 16 * index26 + num27), (float) (this.bgStartY + Main.backgroundHeight[numArray1[3]] * index25 + 16 * index27)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index26 + num27 + 16, 16 * index27, 16, 16)), color13);
|
|
if ((double) Main.ugBackTransition > 0.0)
|
|
{
|
|
Microsoft.Xna.Framework.Color color20 = color13;
|
|
color20.R = (byte) ((double) color20.R * (double) Main.ugBackTransition);
|
|
color20.G = (byte) ((double) color20.G * (double) Main.ugBackTransition);
|
|
color20.B = (byte) ((double) color20.B * (double) Main.ugBackTransition);
|
|
color20.A = (byte) ((double) color20.A * (double) Main.ugBackTransition);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray2[3]].Value, new Vector2((float) (this.bgStartX + num10 * index24 + 16 * index26 + num27), (float) (this.bgStartY + Main.backgroundHeight[numArray2[3]] * index25 + 16 * index27)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index26 + num27 + 16, 16 * index27, 16, 16)), color20);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
color13.R = (byte) ((double) color13.R * (double) x1);
|
|
color13.G = (byte) ((double) color13.G * (double) y1);
|
|
color13.B = (byte) ((double) color13.B * (double) z);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray1[3]].Value, new Vector2((float) (this.bgStartX + num10 * index24 + 16 * index26 + num27), (float) (this.bgStartY + Main.backgroundHeight[numArray1[3]] * index25 + 16 * index27)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index26 + num27 + 16, 16 * index27, 16, 16)), color13);
|
|
if ((double) Main.ugBackTransition > 0.0)
|
|
{
|
|
Microsoft.Xna.Framework.Color color21 = color13;
|
|
color21.R = (byte) ((double) color21.R * (double) Main.ugBackTransition);
|
|
color21.G = (byte) ((double) color21.G * (double) Main.ugBackTransition);
|
|
color21.B = (byte) ((double) color21.B * (double) Main.ugBackTransition);
|
|
color21.A = (byte) ((double) color21.A * (double) Main.ugBackTransition);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray2[3]].Value, new Vector2((float) (this.bgStartX + num10 * index24 + 16 * index26 + num27), (float) (this.bgStartY + Main.backgroundHeight[numArray2[3]] * index25 + 16 * index27)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index26 + num27 + 16, 16 * index27, 16, 16)), color21);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
num10 = 128;
|
|
if (flag1)
|
|
{
|
|
this.bgParallax = (double) Main.caveParallax;
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) num10 + (double) Main.screenPosition.X * this.bgParallax, (double) num10) - (double) (num10 / 2)) - (int) vector2.X;
|
|
this.bgLoops = (Main.screenWidth + (int) vector2.X * 2) / num10 + 2;
|
|
this.bgTopY = this.bgStartY + this.bgLoopsY * Main.backgroundHeight[2];
|
|
for (int index32 = 0; index32 < this.bgLoops; ++index32)
|
|
{
|
|
for (int index33 = 0; index33 < num10 / 16; ++index33)
|
|
{
|
|
double num33 = (double) (this.bgStartX + num10 * index32 + index33 * 16 + 8);
|
|
float bgTopY = (float) this.bgTopY;
|
|
double x6 = (double) Main.screenPosition.X;
|
|
Microsoft.Xna.Framework.Color color22 = Lighting.GetColor((int) ((num33 + x6) / 16.0), (int) (((double) Main.screenPosition.Y + (double) bgTopY) / 16.0));
|
|
color22.R = (byte) ((double) color22.R * (double) x1);
|
|
color22.G = (byte) ((double) color22.G * (double) y1);
|
|
color22.B = (byte) ((double) color22.B * (double) z);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray1[4]].Value, new Vector2((float) (this.bgStartX + num10 * index32 + 16 * index33 + num27), (float) this.bgTopY) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index33 + num27 + 16, Main.magmaBGFrame * 16, 16, 16)), color22);
|
|
if ((double) Main.ugBackTransition > 0.0)
|
|
{
|
|
Microsoft.Xna.Framework.Color color23 = color22;
|
|
color23.R = (byte) ((double) color23.R * (double) Main.ugBackTransition);
|
|
color23.G = (byte) ((double) color23.G * (double) Main.ugBackTransition);
|
|
color23.B = (byte) ((double) color23.B * (double) Main.ugBackTransition);
|
|
color23.A = (byte) ((double) color23.A * (double) Main.ugBackTransition);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray2[4]].Value, new Vector2((float) (this.bgStartX + num10 * index32 + 16 * index33 + num27), (float) this.bgTopY) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index33 + num27 + 16, Main.magmaBGFrame * 16, 16, 16)), color23);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
this.bgTopY = (int) ((double) ((int) num2 * 16) - (double) Main.screenPosition.Y + 16.0 + 600.0) - 8;
|
|
bool flag4 = false;
|
|
if (num2 * 16.0 <= (double) Main.screenPosition.Y + (double) Main.screenHeight)
|
|
{
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) num10 + (double) Main.screenPosition.X * this.bgParallax, (double) num10) - (double) (num10 / 2)) - (int) vector2.X;
|
|
this.bgLoops = (Main.screenWidth + (int) vector2.X * 2) / num10 + 2;
|
|
if (num2 * 16.0 + (double) Main.screenHeight < (double) Main.screenPosition.Y - 16.0)
|
|
{
|
|
this.bgStartY = (int) (Math.IEEERemainder((double) this.bgTopY, (double) Main.backgroundHeight[2]) - (double) Main.backgroundHeight[2]);
|
|
this.bgLoopsY = (Main.screenHeight - this.bgStartY + (int) vector2.Y * 2) / Main.backgroundHeight[2] + 1;
|
|
}
|
|
else
|
|
{
|
|
this.bgStartY = this.bgTopY;
|
|
this.bgLoopsY = (Main.screenHeight - this.bgTopY + (int) vector2.Y * 2) / Main.backgroundHeight[2] + 1;
|
|
}
|
|
if ((double) Main.UnderworldLayer * 16.0 < (double) Main.screenPosition.Y + (double) Main.screenHeight)
|
|
{
|
|
this.bgLoopsY = (int) Math.Ceiling(((double) Main.UnderworldLayer * 16.0 - (double) Main.screenPosition.Y - (double) this.bgStartY) / (double) Main.backgroundHeight[2]);
|
|
flag4 = true;
|
|
}
|
|
int num34 = (int) ((double) num3 * 1.5);
|
|
int num35 = (int) ((double) num4 * 1.5);
|
|
int num36 = (int) (float) Math.Round(-Math.IEEERemainder((double) this.bgStartX + (double) Main.screenPosition.X, 16.0));
|
|
if (num36 == -8)
|
|
num36 = 8;
|
|
for (int index34 = 0; index34 < this.bgLoops; ++index34)
|
|
{
|
|
for (int index35 = 0; index35 < this.bgLoopsY; ++index35)
|
|
{
|
|
for (int index36 = 0; index36 < num10 / 16; ++index36)
|
|
{
|
|
for (int index37 = 0; index37 < 6; ++index37)
|
|
{
|
|
double num37 = (double) (this.bgStartY + index35 * 96 + index37 * 16 + 8);
|
|
int index38 = (int) (((double) (this.bgStartX + num10 * index34 + index36 * 16 + 8) + (double) Main.screenPosition.X) / 16.0);
|
|
double y6 = (double) Main.screenPosition.Y;
|
|
int index39 = (int) ((num37 + y6) / 16.0);
|
|
if (WorldGen.InWorld(index38, index39, 1))
|
|
{
|
|
Microsoft.Xna.Framework.Color color24 = Lighting.GetColor(index38, index39);
|
|
if (Main.tile[index38, index39] == null)
|
|
Main.tile[index38, index39] = new Tile();
|
|
bool flag5 = false;
|
|
if ((double) Main.caveParallax != 0.0)
|
|
{
|
|
if (Main.tile[index38 - 1, index39] == null)
|
|
Main.tile[index38 - 1, index39] = new Tile();
|
|
if (Main.tile[index38 + 1, index39] == null)
|
|
Main.tile[index38 + 1, index39] = new Tile();
|
|
if (Main.wallLight[(int) Main.tile[index38, index39].wall] || Main.wallLight[(int) Main.tile[index38 - 1, index39].wall] || Main.wallLight[(int) Main.tile[index38 + 1, index39].wall])
|
|
flag5 = true;
|
|
}
|
|
else if (Main.wallLight[(int) Main.tile[index38, index39].wall])
|
|
flag5 = true;
|
|
if ((flag5 || color24.R == (byte) 0 || color24.G == (byte) 0 || color24.B == (byte) 0) && (color24.R > (byte) 0 || color24.G > (byte) 0 || color24.B > (byte) 0 || index39 > Main.maxTilesY - 300) && (Main.wallLight[(int) Main.tile[index38, index39].wall] || (double) Main.caveParallax != 0.0))
|
|
{
|
|
if (Lighting.NotRetro && color24.R < (byte) 230 && color24.G < (byte) 230 && color24.B < (byte) 230)
|
|
{
|
|
if (((int) color24.R > num34 || (double) color24.G > (double) num34 * 1.1 || (double) color24.B > (double) num34 * 1.2) && !Main.tile[index38, index39].active())
|
|
{
|
|
Lighting.GetColor9Slice(index38, index39, ref slices);
|
|
for (int index40 = 0; index40 < 9; ++index40)
|
|
{
|
|
int num38 = 0;
|
|
int num39 = 0;
|
|
int width = 4;
|
|
int height = 4;
|
|
Microsoft.Xna.Framework.Color color25 = color24;
|
|
Microsoft.Xna.Framework.Color color26 = color24;
|
|
switch (index40)
|
|
{
|
|
case 0:
|
|
if (!Main.tile[index38 - 1, index39 - 1].active())
|
|
{
|
|
color26 = slices[index40];
|
|
break;
|
|
}
|
|
break;
|
|
case 1:
|
|
width = 8;
|
|
num38 = 4;
|
|
if (!Main.tile[index38, index39 - 1].active())
|
|
{
|
|
color26 = slices[index40];
|
|
break;
|
|
}
|
|
break;
|
|
case 2:
|
|
num38 = 12;
|
|
if (!Main.tile[index38 + 1, index39 - 1].active())
|
|
{
|
|
color26 = slices[index40];
|
|
break;
|
|
}
|
|
break;
|
|
case 3:
|
|
height = 8;
|
|
num39 = 4;
|
|
if (!Main.tile[index38 - 1, index39].active())
|
|
{
|
|
color26 = slices[index40];
|
|
break;
|
|
}
|
|
break;
|
|
case 4:
|
|
width = 8;
|
|
height = 8;
|
|
num38 = 4;
|
|
num39 = 4;
|
|
break;
|
|
case 5:
|
|
num38 = 12;
|
|
num39 = 4;
|
|
height = 8;
|
|
if (!Main.tile[index38 + 1, index39].active())
|
|
{
|
|
color26 = slices[index40];
|
|
break;
|
|
}
|
|
break;
|
|
case 6:
|
|
num39 = 12;
|
|
if (!Main.tile[index38 - 1, index39 + 1].active())
|
|
{
|
|
color26 = slices[index40];
|
|
break;
|
|
}
|
|
break;
|
|
case 7:
|
|
width = 8;
|
|
height = 4;
|
|
num38 = 4;
|
|
num39 = 12;
|
|
if (!Main.tile[index38, index39 + 1].active())
|
|
{
|
|
color26 = slices[index40];
|
|
break;
|
|
}
|
|
break;
|
|
case 8:
|
|
num38 = 12;
|
|
num39 = 12;
|
|
if (!Main.tile[index38 + 1, index39 + 1].active())
|
|
{
|
|
color26 = slices[index40];
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
color25.R = (byte) (((int) color24.R + (int) color26.R) / 2);
|
|
color25.G = (byte) (((int) color24.G + (int) color26.G) / 2);
|
|
color25.B = (byte) (((int) color24.B + (int) color26.B) / 2);
|
|
color25.R = (byte) ((double) color25.R * (double) x1);
|
|
color25.G = (byte) ((double) color25.G * (double) y1);
|
|
color25.B = (byte) ((double) color25.B * (double) z);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray1[5]].Value, new Vector2((float) (this.bgStartX + num10 * index34 + 16 * index36 + num38 + num36), (float) (this.bgStartY + Main.backgroundHeight[2] * index35 + 16 * index37 + num39)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index36 + num38 + num36 + 16, 16 * index37 + Main.backgroundHeight[2] * Main.magmaBGFrame + num39, width, height)), color25, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
else if ((int) color24.R > num35 || (double) color24.G > (double) num35 * 1.1 || (double) color24.B > (double) num35 * 1.2)
|
|
{
|
|
Lighting.GetColor4Slice(index38, index39, ref slices);
|
|
for (int index41 = 0; index41 < 4; ++index41)
|
|
{
|
|
int num40 = 0;
|
|
int num41 = 0;
|
|
Microsoft.Xna.Framework.Color color27 = color24;
|
|
Microsoft.Xna.Framework.Color color28 = slices[index41];
|
|
switch (index41 - 1)
|
|
{
|
|
case 0:
|
|
num40 = 8;
|
|
break;
|
|
case 1:
|
|
num41 = 8;
|
|
break;
|
|
case 2:
|
|
num40 = 8;
|
|
num41 = 8;
|
|
break;
|
|
}
|
|
color27.R = (byte) (((int) color24.R + (int) color28.R) / 2);
|
|
color27.G = (byte) (((int) color24.G + (int) color28.G) / 2);
|
|
color27.B = (byte) (((int) color24.B + (int) color28.B) / 2);
|
|
color27.R = (byte) ((double) color27.R * (double) x1);
|
|
color27.G = (byte) ((double) color27.G * (double) y1);
|
|
color27.B = (byte) ((double) color27.B * (double) z);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray1[5]].Value, new Vector2((float) (this.bgStartX + num10 * index34 + 16 * index36 + num40 + num36), (float) (this.bgStartY + Main.backgroundHeight[2] * index35 + 16 * index37 + num41)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index36 + num40 + num36 + 16, 16 * index37 + Main.backgroundHeight[2] * Main.magmaBGFrame + num41, 8, 8)), color27, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
color24.R = (byte) ((double) color24.R * (double) x1);
|
|
color24.G = (byte) ((double) color24.G * (double) y1);
|
|
color24.B = (byte) ((double) color24.B * (double) z);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray1[5]].Value, new Vector2((float) (this.bgStartX + num10 * index34 + 16 * index36 + num36), (float) (this.bgStartY + Main.backgroundHeight[2] * index35 + 16 * index37)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index36 + num36 + 16, 16 * index37 + Main.backgroundHeight[2] * Main.magmaBGFrame, 16, 16)), color24, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
color24.R = (byte) ((double) color24.R * (double) x1);
|
|
color24.G = (byte) ((double) color24.G * (double) y1);
|
|
color24.B = (byte) ((double) color24.B * (double) z);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray1[5]].Value, new Vector2((float) (this.bgStartX + num10 * index34 + 16 * index36 + num36), (float) (this.bgStartY + Main.backgroundHeight[2] * index35 + 16 * index37)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index36 + num36 + 16, 16 * index37 + Main.backgroundHeight[2] * Main.magmaBGFrame, 16, 16)), color24, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (flag4)
|
|
{
|
|
this.bgParallax = (double) Main.caveParallax;
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) num10 + (double) Main.screenPosition.X * this.bgParallax, (double) num10) - (double) (num10 / 2)) - (int) vector2.X;
|
|
this.bgLoops = (Main.screenWidth + (int) vector2.X * 2) / num10 + 2;
|
|
this.bgTopY = this.bgStartY + this.bgLoopsY * Main.backgroundHeight[2];
|
|
this.hellBlackBoxBottom = (float) this.bgTopY + Main.screenPosition.Y;
|
|
for (int index42 = 0; index42 < this.bgLoops; ++index42)
|
|
{
|
|
for (int index43 = 0; index43 < num10 / 16; ++index43)
|
|
{
|
|
double num42 = (double) (this.bgStartX + num10 * index42 + index43 * 16 + 8);
|
|
float bgTopY = (float) this.bgTopY;
|
|
double x7 = (double) Main.screenPosition.X;
|
|
Microsoft.Xna.Framework.Color color29 = Lighting.GetColor((int) ((num42 + x7) / 16.0), (int) (((double) Main.screenPosition.Y + (double) bgTopY) / 16.0));
|
|
color29.R = (byte) ((double) color29.R * (double) x1);
|
|
color29.G = (byte) ((double) color29.G * (double) y1);
|
|
color29.B = (byte) ((double) color29.B * (double) z);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray1[6]].Value, new Vector2((float) (this.bgStartX + num10 * index42 + 16 * index43 + num36), (float) this.bgTopY) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index43 + num36 + 16, Main.magmaBGFrame * 16, 16, 16)), color29);
|
|
if ((double) Main.ugBackTransition > 0.0)
|
|
{
|
|
Microsoft.Xna.Framework.Color color30 = color29;
|
|
color30.R = (byte) ((double) color30.R * (double) Main.ugBackTransition);
|
|
color30.G = (byte) ((double) color30.G * (double) Main.ugBackTransition);
|
|
color30.B = (byte) ((double) color30.B * (double) Main.ugBackTransition);
|
|
color30.A = (byte) ((double) color30.A * (double) Main.ugBackTransition);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray2[6]].Value, new Vector2((float) (this.bgStartX + num10 * index42 + 16 * index43 + num36), (float) this.bgTopY) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index43 + num36 + 16, Main.magmaBGFrame * 16, 16, 16)), color30);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
Lighting.GlobalBrightness = num9;
|
|
TimeLogger.DrawTime(3, stopwatch.Elapsed.TotalMilliseconds);
|
|
}
|
|
}
|
|
|
|
public static Microsoft.Xna.Framework.Point GetScreenOverdrawOffset() => (Main.Camera.ScaledPosition - Main.Camera.UnscaledPosition).ToTileCoordinates();
|
|
|
|
protected void OldDrawBackground()
|
|
{
|
|
Microsoft.Xna.Framework.Color[] slices = new Microsoft.Xna.Framework.Color[9];
|
|
Stopwatch stopwatch = new Stopwatch();
|
|
stopwatch.Start();
|
|
int num1 = (int) ((double) byte.MaxValue * (1.0 - (double) Main.gfxQuality) + 140.0 * (double) Main.gfxQuality);
|
|
int num2 = (int) (200.0 * (1.0 - (double) Main.gfxQuality) + 40.0 * (double) Main.gfxQuality);
|
|
int num3 = 128;
|
|
Vector2 vector2 = new Vector2((float) Main.offScreenRange, (float) Main.offScreenRange);
|
|
if (Main.drawToScreen)
|
|
vector2 = Vector2.Zero;
|
|
double num4;
|
|
float num5 = (float) (num4 = 0.899999976158142);
|
|
float num6 = (float) num4;
|
|
float num7 = (float) num4;
|
|
float num8 = 0.0f;
|
|
if (Main.SceneMetrics.BloodTileCount > Main.SceneMetrics.EvilTileCount && Main.SceneMetrics.BloodTileCount > Main.SceneMetrics.HolyTileCount)
|
|
num8 = (float) Main.SceneMetrics.BloodTileCount;
|
|
else if (Main.SceneMetrics.HolyTileCount > Main.SceneMetrics.EvilTileCount)
|
|
num8 = (float) Main.SceneMetrics.HolyTileCount;
|
|
else if (Main.SceneMetrics.EvilTileCount > Main.SceneMetrics.HolyTileCount)
|
|
num8 = (float) Main.SceneMetrics.EvilTileCount;
|
|
float num9 = MathHelper.Clamp(num8 / 800f, 0.0f, 1f);
|
|
float num10 = (Main.screenPosition.Y - (float) (Main.worldSurface * 16.0)) / 300f;
|
|
if ((double) num10 < 0.0)
|
|
num10 = 0.0f;
|
|
else if ((double) num10 > 1.0)
|
|
num10 = 1f;
|
|
float num11 = (float) (1.0 * (1.0 - (double) num10) + (double) num5 * (double) num10);
|
|
Lighting.GlobalBrightness = (float) ((double) Lighting.GlobalBrightness * (1.0 - (double) num10) + 1.0 * (double) num10);
|
|
float num12 = MathHelper.Clamp((float) ((double) Main.screenPosition.Y - (double) (Main.screenHeight / 2) + 200.0 - Main.rockLayer * 16.0) / 300f, 0.0f, 1f);
|
|
if (Main.SceneMetrics.BloodTileCount > Main.SceneMetrics.EvilTileCount && Main.SceneMetrics.BloodTileCount > Main.SceneMetrics.HolyTileCount)
|
|
{
|
|
num5 = (float) (1.0 * (double) num9 + (double) num5 * (1.0 - (double) num9));
|
|
num6 = (float) (0.550000011920929 * (double) num9 + (double) num6 * (1.0 - (double) num9));
|
|
num7 = (float) (0.5 * (double) num9 + (double) num7 * (1.0 - (double) num9));
|
|
}
|
|
else if (Main.SceneMetrics.EvilTileCount > 0)
|
|
{
|
|
num5 = (float) (0.800000011920929 * (double) num9 + (double) num5 * (1.0 - (double) num9));
|
|
num6 = (float) (0.75 * (double) num9 + (double) num6 * (1.0 - (double) num9));
|
|
num7 = (float) (1.10000002384186 * (double) num9 + (double) num7 * (1.0 - (double) num9));
|
|
}
|
|
else if (Main.SceneMetrics.HolyTileCount > 0)
|
|
{
|
|
num5 = (float) (1.0 * (double) num9 + (double) num5 * (1.0 - (double) num9));
|
|
num6 = (float) (0.699999988079071 * (double) num9 + (double) num6 * (1.0 - (double) num9));
|
|
num7 = (float) (0.899999976158142 * (double) num9 + (double) num7 * (1.0 - (double) num9));
|
|
}
|
|
float num13 = (float) (1.0 * ((double) num11 - (double) num12) + (double) num5 * (double) num12);
|
|
float num14 = (float) (1.0 * ((double) num11 - (double) num12) + (double) num6 * (double) num12);
|
|
float num15 = (float) (1.0 * ((double) num11 - (double) num12) + (double) num7 * (double) num12);
|
|
int num16 = (int) (((double) Main.screenPosition.X + (double) (Main.screenWidth / 2)) / 16.0);
|
|
int num17 = (num16 > Main.caveBackX[0] ? (num16 > Main.caveBackX[1] ? (num16 > Main.caveBackX[2] ? Main.caveBackStyle[3] : Main.caveBackStyle[2]) : Main.caveBackStyle[1]) : Main.caveBackStyle[0]) + 3;
|
|
if (Main.SceneMetrics.SnowTileCount > SceneMetrics.SnowTileThreshold && ((double) Main.screenPosition.Y + (double) Main.screenHeight) / 16.0 < (double) (Main.maxTilesY - 250))
|
|
num17 = 1;
|
|
if (Main.SceneMetrics.JungleTileCount > SceneMetrics.JungleTileThreshold)
|
|
{
|
|
if (num17 == 1)
|
|
{
|
|
if (Main.SceneMetrics.JungleTileCount > Main.SceneMetrics.SnowTileCount)
|
|
num17 = 11;
|
|
}
|
|
else
|
|
num17 = 11;
|
|
}
|
|
if (Main.SceneMetrics.MushroomTileCount > SceneMetrics.MushroomTileMax)
|
|
num17 = 2;
|
|
if (num17 != Main.undergroundBackground)
|
|
{
|
|
Main.oldUndergroundBackground = Main.undergroundBackground;
|
|
Main.undergroundBackground = num17;
|
|
Main.ugBackTransition = 1f;
|
|
}
|
|
if ((double) Main.ugBackTransition > 0.0)
|
|
Main.ugBackTransition -= 0.25f;
|
|
if ((double) Main.ugBackTransition < 0.0)
|
|
Main.ugBackTransition = 0.0f;
|
|
int[] numArray1 = new int[6];
|
|
int[] numArray2 = new int[6];
|
|
for (int index1 = 0; index1 < 2; ++index1)
|
|
{
|
|
int undergroundBackground = Main.undergroundBackground;
|
|
if (index1 == 1)
|
|
undergroundBackground = Main.oldUndergroundBackground;
|
|
int[] numArray3 = new int[6];
|
|
switch (undergroundBackground)
|
|
{
|
|
case 0:
|
|
numArray3[0] = 1;
|
|
numArray3[1] = 2;
|
|
numArray3[2] = 4;
|
|
numArray3[3] = 3;
|
|
numArray3[4] = 6;
|
|
numArray3[5] = 5;
|
|
break;
|
|
case 1:
|
|
switch (Main.iceBackStyle)
|
|
{
|
|
case 0:
|
|
numArray3[1] = 33;
|
|
numArray3[3] = 32;
|
|
numArray3[0] = 40;
|
|
numArray3[2] = 34;
|
|
break;
|
|
case 1:
|
|
numArray3[1] = 118;
|
|
numArray3[3] = 117;
|
|
numArray3[0] = 160;
|
|
numArray3[2] = 161;
|
|
break;
|
|
case 2:
|
|
numArray3[1] = 165;
|
|
numArray3[3] = 167;
|
|
numArray3[0] = 164;
|
|
numArray3[2] = 166;
|
|
break;
|
|
default:
|
|
numArray3[1] = 120;
|
|
numArray3[3] = 119;
|
|
numArray3[0] = 162;
|
|
numArray3[2] = 163;
|
|
break;
|
|
}
|
|
numArray3[4] = numArray3[3];
|
|
break;
|
|
case 2:
|
|
numArray3[0] = 62;
|
|
numArray3[1] = 63;
|
|
numArray3[2] = 64;
|
|
numArray3[3] = 65;
|
|
numArray3[4] = 143 + Main.hellBackStyle;
|
|
break;
|
|
case 3:
|
|
numArray3[0] = 66;
|
|
numArray3[1] = 67;
|
|
numArray3[2] = 68;
|
|
numArray3[3] = 69;
|
|
numArray3[4] = 128 + Main.hellBackStyle;
|
|
break;
|
|
case 4:
|
|
numArray3[0] = 70;
|
|
numArray3[1] = 71;
|
|
numArray3[2] = 68;
|
|
numArray3[3] = 72;
|
|
numArray3[4] = 128 + Main.hellBackStyle;
|
|
break;
|
|
case 5:
|
|
numArray3[0] = 73;
|
|
numArray3[1] = 74;
|
|
numArray3[2] = 75;
|
|
numArray3[3] = 76;
|
|
numArray3[4] = 131 + Main.hellBackStyle;
|
|
break;
|
|
case 6:
|
|
numArray3[0] = 77;
|
|
numArray3[1] = 78;
|
|
numArray3[2] = 79;
|
|
numArray3[3] = 80;
|
|
numArray3[4] = 134 + Main.hellBackStyle;
|
|
break;
|
|
case 7:
|
|
numArray3[0] = 77;
|
|
numArray3[1] = 81;
|
|
numArray3[2] = 79;
|
|
numArray3[3] = 82;
|
|
numArray3[4] = 134 + Main.hellBackStyle;
|
|
break;
|
|
case 8:
|
|
numArray3[0] = 83;
|
|
numArray3[1] = 84;
|
|
numArray3[2] = 85;
|
|
numArray3[3] = 86;
|
|
numArray3[4] = 137 + Main.hellBackStyle;
|
|
break;
|
|
case 9:
|
|
numArray3[0] = 83;
|
|
numArray3[1] = 87;
|
|
numArray3[2] = 88;
|
|
numArray3[3] = 89;
|
|
numArray3[4] = 137 + Main.hellBackStyle;
|
|
break;
|
|
case 10:
|
|
numArray3[0] = 121;
|
|
numArray3[1] = 122;
|
|
numArray3[2] = 123;
|
|
numArray3[3] = 124;
|
|
numArray3[4] = 140 + Main.hellBackStyle;
|
|
break;
|
|
case 11:
|
|
if (Main.jungleBackStyle == 0)
|
|
{
|
|
numArray3[0] = 153;
|
|
numArray3[1] = 147;
|
|
numArray3[2] = 148;
|
|
numArray3[3] = 149;
|
|
numArray3[4] = 150 + Main.hellBackStyle;
|
|
break;
|
|
}
|
|
numArray3[0] = 146;
|
|
numArray3[1] = 154;
|
|
numArray3[2] = 155;
|
|
numArray3[3] = 156;
|
|
numArray3[4] = 157 + Main.hellBackStyle;
|
|
break;
|
|
}
|
|
if (Main.hellBackStyle == 0)
|
|
numArray3[5] = 125;
|
|
if (Main.hellBackStyle == 1)
|
|
numArray3[5] = 126;
|
|
if (Main.hellBackStyle == 2)
|
|
numArray3[5] = (int) sbyte.MaxValue;
|
|
this.LoadBackground(numArray3[0]);
|
|
this.LoadBackground(numArray3[1]);
|
|
this.LoadBackground(numArray3[2]);
|
|
this.LoadBackground(numArray3[3]);
|
|
this.LoadBackground(numArray3[4]);
|
|
this.LoadBackground(numArray3[5]);
|
|
if (index1 == 0)
|
|
{
|
|
for (int index2 = 0; index2 < 6; ++index2)
|
|
numArray1[index2] = numArray3[index2];
|
|
}
|
|
else
|
|
{
|
|
for (int index3 = 0; index3 < 6; ++index3)
|
|
numArray2[index3] = numArray3[index3];
|
|
}
|
|
}
|
|
float num18 = (float) (1.20000004768372 * (1.0 - (double) num12) + 1.0 * (double) num12);
|
|
this.bgParallax = (double) Main.caveParallax;
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) num3 + (double) Main.screenPosition.X * this.bgParallax, (double) num3) - (double) (num3 / 2)) - (int) vector2.X;
|
|
this.bgLoops = (Main.screenWidth + (int) vector2.X * 2) / num3 + 2;
|
|
this.bgTopY = (int) ((double) ((int) Main.worldSurface * 16 - 16) - (double) Main.screenPosition.Y + 16.0);
|
|
for (int index4 = 0; index4 < this.bgLoops; ++index4)
|
|
{
|
|
for (int index5 = 0; index5 < num3 / 16; ++index5)
|
|
{
|
|
int num19 = (int) (float) Math.Round(-Math.IEEERemainder((double) this.bgStartX + (double) Main.screenPosition.X, 16.0));
|
|
if (num19 == -8)
|
|
num19 = 8;
|
|
double num20 = (double) (this.bgStartX + num3 * index4 + index5 * 16 + 8);
|
|
float bgTopY = (float) this.bgTopY;
|
|
double x = (double) Main.screenPosition.X;
|
|
Microsoft.Xna.Framework.Color color1 = Lighting.GetColor((int) ((num20 + x) / 16.0), (int) (((double) Main.screenPosition.Y + (double) bgTopY) / 16.0));
|
|
color1.R = (byte) ((double) color1.R * (double) num13);
|
|
color1.G = (byte) ((double) color1.G * (double) num14);
|
|
color1.B = (byte) ((double) color1.B * (double) num15);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray1[0]].Value, new Vector2((float) (this.bgStartX + num3 * index4 + 16 * index5 + num19), (float) this.bgTopY) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index5 + num19 + 16, 0, 16, 16)), color1);
|
|
if ((double) Main.ugBackTransition > 0.0)
|
|
{
|
|
Microsoft.Xna.Framework.Color color2 = color1;
|
|
color2.R = (byte) ((double) color2.R * (double) Main.ugBackTransition);
|
|
color2.G = (byte) ((double) color2.G * (double) Main.ugBackTransition);
|
|
color2.B = (byte) ((double) color2.B * (double) Main.ugBackTransition);
|
|
color2.A = (byte) ((double) color2.A * (double) Main.ugBackTransition);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray2[0]].Value, new Vector2((float) (this.bgStartX + num3 * index4 + 16 * index5 + num19), (float) this.bgTopY) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index5 + num19 + 16, 0, 16, 16)), color2);
|
|
}
|
|
}
|
|
}
|
|
double num21 = (double) ((int) (((double) (Main.maxTilesY - 230) - Main.worldSurface) / 6.0) * 6);
|
|
double num22 = Main.worldSurface + num21 - 5.0;
|
|
bool flag1 = false;
|
|
bool flag2 = false;
|
|
this.bgTopY = (int) ((double) ((int) Main.worldSurface * 16) - (double) Main.screenPosition.Y + 16.0);
|
|
if (Main.worldSurface * 16.0 <= (double) Main.screenPosition.Y + (double) Main.screenHeight + (double) Main.offScreenRange)
|
|
{
|
|
this.bgParallax = (double) Main.caveParallax;
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) num3 + (double) Main.screenPosition.X * this.bgParallax, (double) num3) - (double) (num3 / 2)) - (int) vector2.X;
|
|
this.bgLoops = (Main.screenWidth + (int) vector2.X * 2) / num3 + 2;
|
|
if (Main.worldSurface * 16.0 < (double) Main.screenPosition.Y - 16.0)
|
|
{
|
|
this.bgStartY = (int) (Math.IEEERemainder((double) this.bgTopY, (double) Main.backgroundHeight[2]) - (double) Main.backgroundHeight[2]);
|
|
this.bgLoopsY = (Main.screenHeight - this.bgStartY + (int) vector2.Y * 2) / Main.backgroundHeight[2] + 1;
|
|
}
|
|
else
|
|
{
|
|
this.bgStartY = this.bgTopY;
|
|
this.bgLoopsY = (Main.screenHeight - this.bgTopY + (int) vector2.Y * 2) / Main.backgroundHeight[2] + 1;
|
|
}
|
|
if (Main.rockLayer * 16.0 < (double) Main.Camera.ScaledPosition.Y + 600.0)
|
|
{
|
|
this.bgLoopsY = (int) (Main.rockLayer * 16.0 - (double) Main.screenPosition.Y + 600.0 - (double) this.bgStartY) / Main.backgroundHeight[2];
|
|
flag2 = true;
|
|
}
|
|
int num23 = (int) (float) Math.Round(-Math.IEEERemainder((double) this.bgStartX + (double) Main.screenPosition.X, 16.0));
|
|
if (num23 == -8)
|
|
num23 = 8;
|
|
for (int index6 = 0; index6 < this.bgLoops; ++index6)
|
|
{
|
|
for (int index7 = 0; index7 < this.bgLoopsY; ++index7)
|
|
{
|
|
for (int index8 = 0; index8 < num3 / 16; ++index8)
|
|
{
|
|
for (int index9 = 0; index9 < 6; ++index9)
|
|
{
|
|
double num24 = (double) (this.bgStartY + index7 * 96 + index9 * 16 + 8);
|
|
int index10 = (int) (((double) (this.bgStartX + num3 * index6 + index8 * 16 + 8) + (double) Main.screenPosition.X) / 16.0);
|
|
double y = (double) Main.screenPosition.Y;
|
|
int index11 = (int) ((num24 + y) / 16.0);
|
|
Microsoft.Xna.Framework.Color color3 = Lighting.GetColor(index10, index11);
|
|
if (Main.tile[index10, index11] == null)
|
|
Main.tile[index10, index11] = new Tile();
|
|
if (color3.R > (byte) 0 || color3.G > (byte) 0 || color3.B > (byte) 0)
|
|
{
|
|
if (!Main.drawToScreen)
|
|
{
|
|
VertexColors vertices;
|
|
Lighting.GetCornerColors(index10, index11, out vertices);
|
|
Main.tileBatch.Draw(TextureAssets.Background[numArray1[1]].Value, new Vector2((float) (this.bgStartX + num3 * index6 + 16 * index8 + num23), (float) (this.bgStartY + Main.backgroundHeight[numArray2[1]] * index7 + 16 * index9)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index8 + num23 + 16, 16 * index9, 16, 16)), vertices, Vector2.Zero, 1f, SpriteEffects.None);
|
|
}
|
|
else if (((int) color3.R > num1 || (double) color3.G > (double) num1 * 1.1 || (double) color3.B > (double) num1 * 1.2) && !Main.tile[index10, index11].active() && Main.wallLight[(int) Main.tile[index10, index11].wall] && (double) Main.ugBackTransition == 0.0)
|
|
{
|
|
Lighting.GetColor9Slice(index10, index11, ref slices);
|
|
try
|
|
{
|
|
for (int index12 = 0; index12 < 9; ++index12)
|
|
{
|
|
int num25 = 0;
|
|
int num26 = 0;
|
|
int width = 4;
|
|
int height = 4;
|
|
Microsoft.Xna.Framework.Color color4 = color3;
|
|
Microsoft.Xna.Framework.Color color5 = color3;
|
|
switch (index12)
|
|
{
|
|
case 0:
|
|
if (!Main.tile[index10 - 1, index11 - 1].active())
|
|
{
|
|
color5 = slices[index12];
|
|
break;
|
|
}
|
|
break;
|
|
case 1:
|
|
width = 8;
|
|
num25 = 4;
|
|
if (!Main.tile[index10, index11 - 1].active())
|
|
{
|
|
color5 = slices[index12];
|
|
break;
|
|
}
|
|
break;
|
|
case 2:
|
|
num25 = 12;
|
|
if (!Main.tile[index10 + 1, index11 - 1].active())
|
|
{
|
|
color5 = slices[index12];
|
|
break;
|
|
}
|
|
break;
|
|
case 3:
|
|
height = 8;
|
|
num26 = 4;
|
|
if (!Main.tile[index10 - 1, index11].active())
|
|
{
|
|
color5 = slices[index12];
|
|
break;
|
|
}
|
|
break;
|
|
case 4:
|
|
width = 8;
|
|
height = 8;
|
|
num25 = 4;
|
|
num26 = 4;
|
|
break;
|
|
case 5:
|
|
num25 = 12;
|
|
num26 = 4;
|
|
height = 8;
|
|
if (!Main.tile[index10 + 1, index11].active())
|
|
{
|
|
color5 = slices[index12];
|
|
break;
|
|
}
|
|
break;
|
|
case 6:
|
|
num26 = 12;
|
|
if (!Main.tile[index10 - 1, index11 + 1].active())
|
|
{
|
|
color5 = slices[index12];
|
|
break;
|
|
}
|
|
break;
|
|
case 7:
|
|
width = 8;
|
|
height = 4;
|
|
num25 = 4;
|
|
num26 = 12;
|
|
if (!Main.tile[index10, index11 + 1].active())
|
|
{
|
|
color5 = slices[index12];
|
|
break;
|
|
}
|
|
break;
|
|
case 8:
|
|
num25 = 12;
|
|
num26 = 12;
|
|
if (!Main.tile[index10 + 1, index11 + 1].active())
|
|
{
|
|
color5 = slices[index12];
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
color4.R = (byte) (((int) color3.R + (int) color5.R) / 2);
|
|
color4.G = (byte) (((int) color3.G + (int) color5.G) / 2);
|
|
color4.B = (byte) (((int) color3.B + (int) color5.B) / 2);
|
|
color4.R = (byte) ((double) color4.R * (double) num13);
|
|
color4.G = (byte) ((double) color4.G * (double) num14);
|
|
color4.B = (byte) ((double) color4.B * (double) num15);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray1[1]].Value, new Vector2((float) (this.bgStartX + num3 * index6 + 16 * index8 + num25 + num23), (float) (this.bgStartY + Main.backgroundHeight[numArray1[1]] * index7 + 16 * index9 + num26)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index8 + num25 + num23 + 16, 16 * index9 + num26, width, height)), color4);
|
|
if ((double) Main.ugBackTransition > 0.0)
|
|
{
|
|
Microsoft.Xna.Framework.Color color6 = color4;
|
|
color6.R = (byte) ((double) color6.R * (double) Main.ugBackTransition);
|
|
color6.G = (byte) ((double) color6.G * (double) Main.ugBackTransition);
|
|
color6.B = (byte) ((double) color6.B * (double) Main.ugBackTransition);
|
|
color6.A = (byte) ((double) color6.A * (double) Main.ugBackTransition);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray2[1]].Value, new Vector2((float) (this.bgStartX + num3 * index6 + 16 * index8 + num25 + num23), (float) (this.bgStartY + Main.backgroundHeight[numArray2[1]] * index7 + 16 * index9 + num26)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index8 + num25 + num23 + 16, 16 * index9 + num26, width, height)), color6);
|
|
}
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
color3.R = (byte) ((double) color3.R * (double) num13);
|
|
color3.G = (byte) ((double) color3.G * (double) num14);
|
|
color3.B = (byte) ((double) color3.B * (double) num15);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray1[1]].Value, new Vector2((float) (this.bgStartX + num3 * index6 + 16 * index8 + num23), (float) (this.bgStartY + Main.backgroundHeight[numArray1[1]] * index7 + 16 * index9)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index8 + num23 + 16, 16 * index9, 16, 16)), color3);
|
|
}
|
|
}
|
|
else if (((int) color3.R > num2 || (double) color3.G > (double) num2 * 1.1 || (double) color3.B > (double) num2 * 1.2) && (double) Main.ugBackTransition == 0.0)
|
|
{
|
|
Lighting.GetColor4Slice(index10, index11, ref slices);
|
|
for (int index13 = 0; index13 < 4; ++index13)
|
|
{
|
|
int num27 = 0;
|
|
int num28 = 0;
|
|
Microsoft.Xna.Framework.Color color7 = color3;
|
|
Microsoft.Xna.Framework.Color color8 = slices[index13];
|
|
switch (index13 - 1)
|
|
{
|
|
case 0:
|
|
num27 = 8;
|
|
break;
|
|
case 1:
|
|
num28 = 8;
|
|
break;
|
|
case 2:
|
|
num27 = 8;
|
|
num28 = 8;
|
|
break;
|
|
}
|
|
color7.R = (byte) (((int) color3.R + (int) color8.R) / 2);
|
|
color7.G = (byte) (((int) color3.G + (int) color8.G) / 2);
|
|
color7.B = (byte) (((int) color3.B + (int) color8.B) / 2);
|
|
color7.R = (byte) ((double) color7.R * (double) num13);
|
|
color7.G = (byte) ((double) color7.G * (double) num14);
|
|
color7.B = (byte) ((double) color7.B * (double) num15);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray1[1]].Value, new Vector2((float) (this.bgStartX + num3 * index6 + 16 * index8 + num27 + num23), (float) (this.bgStartY + Main.backgroundHeight[numArray1[1]] * index7 + 16 * index9 + num28)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index8 + num27 + num23 + 16, 16 * index9 + num28, 8, 8)), color7);
|
|
if ((double) Main.ugBackTransition > 0.0)
|
|
{
|
|
Microsoft.Xna.Framework.Color color9 = color7;
|
|
color9.R = (byte) ((double) color9.R * (double) Main.ugBackTransition);
|
|
color9.G = (byte) ((double) color9.G * (double) Main.ugBackTransition);
|
|
color9.B = (byte) ((double) color9.B * (double) Main.ugBackTransition);
|
|
color9.A = (byte) ((double) color9.A * (double) Main.ugBackTransition);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray2[1]].Value, new Vector2((float) (this.bgStartX + num3 * index6 + 16 * index8 + num27 + num23), (float) (this.bgStartY + Main.backgroundHeight[numArray2[1]] * index7 + 16 * index9 + num28)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index8 + num27 + num23 + 16, 16 * index9 + num28, 8, 8)), color9);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
color3.R = (byte) ((double) color3.R * (double) num13);
|
|
color3.G = (byte) ((double) color3.G * (double) num14);
|
|
color3.B = (byte) ((double) color3.B * (double) num15);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray1[1]].Value, new Vector2((float) (this.bgStartX + num3 * index6 + 16 * index8 + num23), (float) (this.bgStartY + Main.backgroundHeight[numArray1[1]] * index7 + 16 * index9)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index8 + num23 + 16, 16 * index9, 16, 16)), color3);
|
|
if ((double) Main.ugBackTransition > 0.0)
|
|
{
|
|
Microsoft.Xna.Framework.Color color10 = color3;
|
|
color10.R = (byte) ((double) color10.R * (double) Main.ugBackTransition);
|
|
color10.G = (byte) ((double) color10.G * (double) Main.ugBackTransition);
|
|
color10.B = (byte) ((double) color10.B * (double) Main.ugBackTransition);
|
|
color10.A = (byte) ((double) color10.A * (double) Main.ugBackTransition);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray2[1]].Value, new Vector2((float) (this.bgStartX + num3 * index6 + 16 * index8 + num23), (float) (this.bgStartY + Main.backgroundHeight[numArray2[1]] * index7 + 16 * index9)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index8 + num23 + 16, 16 * index9, 16, 16)), color10);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
color3.R = (byte) ((double) color3.R * (double) num13);
|
|
color3.G = (byte) ((double) color3.G * (double) num14);
|
|
color3.B = (byte) ((double) color3.B * (double) num15);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray1[1]].Value, new Vector2((float) (this.bgStartX + num3 * index6 + 16 * index8 + num23), (float) (this.bgStartY + Main.backgroundHeight[numArray1[1]] * index7 + 16 * index9)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index8 + num23 + 16, 16 * index9, 16, 16)), color3);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if ((double) Main.ugBackTransition > 0.0)
|
|
{
|
|
for (int index14 = 0; index14 < this.bgLoops; ++index14)
|
|
{
|
|
for (int index15 = 0; index15 < this.bgLoopsY; ++index15)
|
|
{
|
|
for (int index16 = 0; index16 < num3 / 16; ++index16)
|
|
{
|
|
for (int index17 = 0; index17 < 6; ++index17)
|
|
{
|
|
double num29 = (double) (this.bgStartY + index15 * 96 + index17 * 16 + 8);
|
|
int index18 = (int) (((double) (this.bgStartX + num3 * index14 + index16 * 16 + 8) + (double) Main.screenPosition.X) / 16.0);
|
|
double y = (double) Main.screenPosition.Y;
|
|
int index19 = (int) ((num29 + y) / 16.0);
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor(index18, index19);
|
|
if (Main.tile[index18, index19] == null)
|
|
Main.tile[index18, index19] = new Tile();
|
|
if (color.R > (byte) 0 || color.G > (byte) 0 || color.B > (byte) 0)
|
|
{
|
|
VertexColors vertices;
|
|
Lighting.GetCornerColors(index18, index19, out vertices, Main.ugBackTransition);
|
|
byte num30 = (byte) ((double) byte.MaxValue * (double) Main.ugBackTransition);
|
|
vertices.BottomLeftColor.A = num30;
|
|
vertices.BottomRightColor.A = num30;
|
|
vertices.TopLeftColor.A = num30;
|
|
vertices.TopRightColor.A = num30;
|
|
Main.tileBatch.Draw(TextureAssets.Background[numArray2[1]].Value, new Vector2((float) (this.bgStartX + num3 * index14 + 16 * index16 + num23), (float) (this.bgStartY + Main.backgroundHeight[numArray2[1]] * index15 + 16 * index17)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index16 + num23 + 16, 16 * index17, 16, 16)), vertices, Vector2.Zero, 1f, SpriteEffects.None);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (flag2)
|
|
{
|
|
this.bgParallax = (double) Main.caveParallax;
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) num3 + (double) Main.screenPosition.X * this.bgParallax, (double) num3) - (double) (num3 / 2)) - (int) vector2.X;
|
|
this.bgLoops = (Main.screenWidth + (int) vector2.X * 2) / num3 + 2;
|
|
this.bgTopY = this.bgStartY + this.bgLoopsY * Main.backgroundHeight[2];
|
|
if (this.bgTopY > -32)
|
|
{
|
|
for (int index20 = 0; index20 < this.bgLoops; ++index20)
|
|
{
|
|
for (int index21 = 0; index21 < num3 / 16; ++index21)
|
|
{
|
|
double num31 = (double) (this.bgStartX + num3 * index20 + index21 * 16 + 8);
|
|
float bgTopY = (float) this.bgTopY;
|
|
double x = (double) Main.screenPosition.X;
|
|
Microsoft.Xna.Framework.Color color11 = Lighting.GetColor((int) ((num31 + x) / 16.0), (int) (((double) Main.screenPosition.Y + (double) bgTopY) / 16.0));
|
|
color11.R = (byte) ((double) color11.R * (double) num13);
|
|
color11.G = (byte) ((double) color11.G * (double) num14);
|
|
color11.B = (byte) ((double) color11.B * (double) num15);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray1[2]].Value, new Vector2((float) (this.bgStartX + num3 * index20 + 16 * index21 + num23), (float) this.bgTopY) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index21 + num23 + 16, 0, 16, 16)), color11);
|
|
if ((double) Main.ugBackTransition > 0.0)
|
|
{
|
|
Microsoft.Xna.Framework.Color color12 = color11;
|
|
color12.R = (byte) ((double) color12.R * (double) Main.ugBackTransition);
|
|
color12.G = (byte) ((double) color12.G * (double) Main.ugBackTransition);
|
|
color12.B = (byte) ((double) color12.B * (double) Main.ugBackTransition);
|
|
color12.A = (byte) ((double) color12.A * (double) Main.ugBackTransition);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray2[2]].Value, new Vector2((float) (this.bgStartX + num3 * index20 + 16 * index21 + num23), (float) this.bgTopY) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index21 + num23 + 16, 0, 16, 16)), color12);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
this.bgTopY = (int) ((double) ((int) Main.rockLayer * 16) - (double) Main.screenPosition.Y + 16.0 + 600.0 - 8.0);
|
|
if (Main.rockLayer * 16.0 <= (double) Main.screenPosition.Y + 600.0)
|
|
{
|
|
this.bgParallax = (double) Main.caveParallax;
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) num3 + (double) Main.screenPosition.X * this.bgParallax, (double) num3) - (double) (num3 / 2)) - (int) vector2.X;
|
|
this.bgLoops = (Main.screenWidth + (int) vector2.X * 2) / num3 + 2;
|
|
if (Main.rockLayer * 16.0 + (double) Main.screenHeight < (double) Main.screenPosition.Y - 16.0)
|
|
{
|
|
this.bgStartY = (int) (Math.IEEERemainder((double) this.bgTopY, (double) Main.backgroundHeight[3]) - (double) Main.backgroundHeight[3]);
|
|
this.bgLoopsY = (Main.screenHeight - this.bgStartY + (int) vector2.Y * 2) / Main.backgroundHeight[2] + 1;
|
|
}
|
|
else
|
|
{
|
|
this.bgStartY = this.bgTopY;
|
|
this.bgLoopsY = (Main.screenHeight - this.bgTopY + (int) vector2.Y * 2) / Main.backgroundHeight[2] + 1;
|
|
}
|
|
if (num22 * 16.0 < (double) Main.screenPosition.Y + 600.0)
|
|
{
|
|
this.bgLoopsY = (int) (num22 * 16.0 - (double) Main.screenPosition.Y + 600.0 - (double) this.bgStartY) / Main.backgroundHeight[2];
|
|
flag1 = true;
|
|
}
|
|
int num32 = (int) (float) Math.Round(-Math.IEEERemainder((double) this.bgStartX + (double) Main.screenPosition.X, 16.0));
|
|
if (num32 == -8)
|
|
num32 = 8;
|
|
for (int index22 = 0; index22 < this.bgLoops; ++index22)
|
|
{
|
|
for (int index23 = 0; index23 < this.bgLoopsY; ++index23)
|
|
{
|
|
for (int index24 = 0; index24 < num3 / 16; ++index24)
|
|
{
|
|
for (int index25 = 0; index25 < 6; ++index25)
|
|
{
|
|
double num33 = (double) (this.bgStartY + index23 * 96 + index25 * 16 + 8);
|
|
int index26 = (int) (((double) (this.bgStartX + num3 * index22 + index24 * 16 + 8) + (double) Main.screenPosition.X) / 16.0);
|
|
double y = (double) Main.screenPosition.Y;
|
|
int index27 = (int) ((num33 + y) / 16.0);
|
|
Microsoft.Xna.Framework.Color color13 = Lighting.GetColor(index26, index27);
|
|
if (Main.tile[index26, index27] == null)
|
|
Main.tile[index26, index27] = new Tile();
|
|
bool flag3 = false;
|
|
if ((double) Main.caveParallax != 0.0)
|
|
{
|
|
if (Main.tile[index26 - 1, index27] == null)
|
|
Main.tile[index26 - 1, index27] = new Tile();
|
|
if (Main.tile[index26 + 1, index27] == null)
|
|
Main.tile[index26 + 1, index27] = new Tile();
|
|
if (Main.wallLight[(int) Main.tile[index26, index27].wall] || Main.wallLight[(int) Main.tile[index26 - 1, index27].wall] || Main.wallLight[(int) Main.tile[index26 + 1, index27].wall])
|
|
flag3 = true;
|
|
}
|
|
else if (Main.wallLight[(int) Main.tile[index26, index27].wall])
|
|
flag3 = true;
|
|
if ((flag3 || color13.R == (byte) 0 || color13.G == (byte) 0 || color13.B == (byte) 0) && (color13.R > (byte) 0 || color13.G > (byte) 0 || color13.B > (byte) 0) && (Main.wallLight[(int) Main.tile[index26, index27].wall] || (double) Main.caveParallax != 0.0))
|
|
{
|
|
if (Lighting.NotRetro && color13.R < (byte) 230 && color13.G < (byte) 230 && color13.B < (byte) 230 && (double) Main.ugBackTransition == 0.0)
|
|
{
|
|
if (((int) color13.R > num1 || (double) color13.G > (double) num1 * 1.1 || (double) color13.B > (double) num1 * 1.2) && !Main.tile[index26, index27].active())
|
|
{
|
|
Lighting.GetColor9Slice(index26, index27, ref slices);
|
|
for (int index28 = 0; index28 < 9; ++index28)
|
|
{
|
|
int num34 = 0;
|
|
int num35 = 0;
|
|
int width = 4;
|
|
int height = 4;
|
|
Microsoft.Xna.Framework.Color color14 = color13;
|
|
Microsoft.Xna.Framework.Color color15 = color13;
|
|
switch (index28)
|
|
{
|
|
case 0:
|
|
if (!Main.tile[index26 - 1, index27 - 1].active())
|
|
{
|
|
color15 = slices[index28];
|
|
break;
|
|
}
|
|
break;
|
|
case 1:
|
|
width = 8;
|
|
num34 = 4;
|
|
if (!Main.tile[index26, index27 - 1].active())
|
|
{
|
|
color15 = slices[index28];
|
|
break;
|
|
}
|
|
break;
|
|
case 2:
|
|
num34 = 12;
|
|
if (!Main.tile[index26 + 1, index27 - 1].active())
|
|
{
|
|
color15 = slices[index28];
|
|
break;
|
|
}
|
|
break;
|
|
case 3:
|
|
height = 8;
|
|
num35 = 4;
|
|
if (!Main.tile[index26 - 1, index27].active())
|
|
{
|
|
color15 = slices[index28];
|
|
break;
|
|
}
|
|
break;
|
|
case 4:
|
|
width = 8;
|
|
height = 8;
|
|
num34 = 4;
|
|
num35 = 4;
|
|
break;
|
|
case 5:
|
|
num34 = 12;
|
|
num35 = 4;
|
|
height = 8;
|
|
if (!Main.tile[index26 + 1, index27].active())
|
|
{
|
|
color15 = slices[index28];
|
|
break;
|
|
}
|
|
break;
|
|
case 6:
|
|
num35 = 12;
|
|
if (!Main.tile[index26 - 1, index27 + 1].active())
|
|
{
|
|
color15 = slices[index28];
|
|
break;
|
|
}
|
|
break;
|
|
case 7:
|
|
width = 8;
|
|
height = 4;
|
|
num34 = 4;
|
|
num35 = 12;
|
|
if (!Main.tile[index26, index27 + 1].active())
|
|
{
|
|
color15 = slices[index28];
|
|
break;
|
|
}
|
|
break;
|
|
case 8:
|
|
num34 = 12;
|
|
num35 = 12;
|
|
if (!Main.tile[index26 + 1, index27 + 1].active())
|
|
{
|
|
color15 = slices[index28];
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
color14.R = (byte) (((int) color13.R + (int) color15.R) / 2);
|
|
color14.G = (byte) (((int) color13.G + (int) color15.G) / 2);
|
|
color14.B = (byte) (((int) color13.B + (int) color15.B) / 2);
|
|
color14.R = (byte) ((double) color14.R * (double) num13);
|
|
color14.G = (byte) ((double) color14.G * (double) num14);
|
|
color14.B = (byte) ((double) color14.B * (double) num15);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray1[3]].Value, new Vector2((float) (this.bgStartX + num3 * index22 + 16 * index24 + num34 + num32), (float) (this.bgStartY + Main.backgroundHeight[numArray1[3]] * index23 + 16 * index25 + num35)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index24 + num34 + num32 + 16, 16 * index25 + num35, width, height)), color14);
|
|
if ((double) Main.ugBackTransition > 0.0)
|
|
{
|
|
Microsoft.Xna.Framework.Color color16 = color14;
|
|
color16.R = (byte) ((double) color16.R * (double) Main.ugBackTransition);
|
|
color16.G = (byte) ((double) color16.G * (double) Main.ugBackTransition);
|
|
color16.B = (byte) ((double) color16.B * (double) Main.ugBackTransition);
|
|
color16.A = (byte) ((double) color16.A * (double) Main.ugBackTransition);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray2[3]].Value, new Vector2((float) (this.bgStartX + num3 * index22 + 16 * index24 + num34 + num32), (float) (this.bgStartY + Main.backgroundHeight[numArray2[3]] * index23 + 16 * index25 + num35)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index24 + num34 + num32 + 16, 16 * index25 + num35, width, height)), color16);
|
|
}
|
|
}
|
|
}
|
|
else if ((int) color13.R > num2 || (double) color13.G > (double) num2 * 1.1 || (double) color13.B > (double) num2 * 1.2)
|
|
{
|
|
Lighting.GetColor4Slice(index26, index27, ref slices);
|
|
for (int index29 = 0; index29 < 4; ++index29)
|
|
{
|
|
int num36 = 0;
|
|
int num37 = 0;
|
|
Microsoft.Xna.Framework.Color color17 = color13;
|
|
Microsoft.Xna.Framework.Color color18 = slices[index29];
|
|
switch (index29 - 1)
|
|
{
|
|
case 0:
|
|
num36 = 8;
|
|
break;
|
|
case 1:
|
|
num37 = 8;
|
|
break;
|
|
case 2:
|
|
num36 = 8;
|
|
num37 = 8;
|
|
break;
|
|
}
|
|
color17.R = (byte) (((int) color13.R + (int) color18.R) / 2);
|
|
color17.G = (byte) (((int) color13.G + (int) color18.G) / 2);
|
|
color17.B = (byte) (((int) color13.B + (int) color18.B) / 2);
|
|
color17.R = (byte) ((double) color17.R * (double) num13);
|
|
color17.G = (byte) ((double) color17.G * (double) num14);
|
|
color17.B = (byte) ((double) color17.B * (double) num15);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray1[3]].Value, new Vector2((float) (this.bgStartX + num3 * index22 + 16 * index24 + num36 + num32), (float) (this.bgStartY + Main.backgroundHeight[numArray1[3]] * index23 + 16 * index25 + num37)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index24 + num36 + num32 + 16, 16 * index25 + num37, 8, 8)), color17);
|
|
if ((double) Main.ugBackTransition > 0.0)
|
|
{
|
|
Microsoft.Xna.Framework.Color color19 = color17;
|
|
color19.R = (byte) ((double) color19.R * (double) Main.ugBackTransition);
|
|
color19.G = (byte) ((double) color19.G * (double) Main.ugBackTransition);
|
|
color19.B = (byte) ((double) color19.B * (double) Main.ugBackTransition);
|
|
color19.A = (byte) ((double) color19.A * (double) Main.ugBackTransition);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray2[3]].Value, new Vector2((float) (this.bgStartX + num3 * index22 + 16 * index24 + num36 + num32), (float) (this.bgStartY + Main.backgroundHeight[numArray2[3]] * index23 + 16 * index25 + num37)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index24 + num36 + num32 + 16, 16 * index25 + num37, 8, 8)), color19);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
color13.R = (byte) ((double) color13.R * (double) num13);
|
|
color13.G = (byte) ((double) color13.G * (double) num14);
|
|
color13.B = (byte) ((double) color13.B * (double) num15);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray1[3]].Value, new Vector2((float) (this.bgStartX + num3 * index22 + 16 * index24 + num32), (float) (this.bgStartY + Main.backgroundHeight[numArray1[3]] * index23 + 16 * index25)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index24 + num32 + 16, 16 * index25, 16, 16)), color13);
|
|
if ((double) Main.ugBackTransition > 0.0)
|
|
{
|
|
Microsoft.Xna.Framework.Color color20 = color13;
|
|
color20.R = (byte) ((double) color20.R * (double) Main.ugBackTransition);
|
|
color20.G = (byte) ((double) color20.G * (double) Main.ugBackTransition);
|
|
color20.B = (byte) ((double) color20.B * (double) Main.ugBackTransition);
|
|
color20.A = (byte) ((double) color20.A * (double) Main.ugBackTransition);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray2[3]].Value, new Vector2((float) (this.bgStartX + num3 * index22 + 16 * index24 + num32), (float) (this.bgStartY + Main.backgroundHeight[numArray2[3]] * index23 + 16 * index25)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index24 + num32 + 16, 16 * index25, 16, 16)), color20);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
color13.R = (byte) ((double) color13.R * (double) num13);
|
|
color13.G = (byte) ((double) color13.G * (double) num14);
|
|
color13.B = (byte) ((double) color13.B * (double) num15);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray1[3]].Value, new Vector2((float) (this.bgStartX + num3 * index22 + 16 * index24 + num32), (float) (this.bgStartY + Main.backgroundHeight[numArray1[3]] * index23 + 16 * index25)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index24 + num32 + 16, 16 * index25, 16, 16)), color13);
|
|
if ((double) Main.ugBackTransition > 0.0)
|
|
{
|
|
Microsoft.Xna.Framework.Color color21 = color13;
|
|
color21.R = (byte) ((double) color21.R * (double) Main.ugBackTransition);
|
|
color21.G = (byte) ((double) color21.G * (double) Main.ugBackTransition);
|
|
color21.B = (byte) ((double) color21.B * (double) Main.ugBackTransition);
|
|
color21.A = (byte) ((double) color21.A * (double) Main.ugBackTransition);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray2[3]].Value, new Vector2((float) (this.bgStartX + num3 * index22 + 16 * index24 + num32), (float) (this.bgStartY + Main.backgroundHeight[numArray2[3]] * index23 + 16 * index25)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index24 + num32 + 16, 16 * index25, 16, 16)), color21);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
num3 = 128;
|
|
if (flag1)
|
|
{
|
|
this.bgParallax = (double) Main.caveParallax;
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) num3 + (double) Main.screenPosition.X * this.bgParallax, (double) num3) - (double) (num3 / 2)) - (int) vector2.X;
|
|
this.bgLoops = (Main.screenWidth + (int) vector2.X * 2) / num3 + 2;
|
|
this.bgTopY = this.bgStartY + this.bgLoopsY * Main.backgroundHeight[2];
|
|
for (int index30 = 0; index30 < this.bgLoops; ++index30)
|
|
{
|
|
for (int index31 = 0; index31 < num3 / 16; ++index31)
|
|
{
|
|
double num38 = (double) (this.bgStartX + num3 * index30 + index31 * 16 + 8);
|
|
float bgTopY = (float) this.bgTopY;
|
|
double x = (double) Main.screenPosition.X;
|
|
Microsoft.Xna.Framework.Color color22 = Lighting.GetColor((int) ((num38 + x) / 16.0), (int) (((double) Main.screenPosition.Y + (double) bgTopY) / 16.0));
|
|
color22.R = (byte) ((double) color22.R * (double) num13);
|
|
color22.G = (byte) ((double) color22.G * (double) num14);
|
|
color22.B = (byte) ((double) color22.B * (double) num15);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray1[4]].Value, new Vector2((float) (this.bgStartX + num3 * index30 + 16 * index31 + num32), (float) this.bgTopY) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index31 + num32 + 16, Main.magmaBGFrame * 16, 16, 16)), color22);
|
|
if ((double) Main.ugBackTransition > 0.0)
|
|
{
|
|
Microsoft.Xna.Framework.Color color23 = color22;
|
|
color23.R = (byte) ((double) color23.R * (double) Main.ugBackTransition);
|
|
color23.G = (byte) ((double) color23.G * (double) Main.ugBackTransition);
|
|
color23.B = (byte) ((double) color23.B * (double) Main.ugBackTransition);
|
|
color23.A = (byte) ((double) color23.A * (double) Main.ugBackTransition);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray2[4]].Value, new Vector2((float) (this.bgStartX + num3 * index30 + 16 * index31 + num32), (float) this.bgTopY) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index31 + num32 + 16, Main.magmaBGFrame * 16, 16, 16)), color23);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
this.bgTopY = (int) ((double) ((int) num22 * 16) - (double) Main.screenPosition.Y + 16.0 + 600.0) - 8;
|
|
if (num22 * 16.0 <= (double) Main.screenPosition.Y + 600.0)
|
|
{
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) num3 + (double) Main.screenPosition.X * this.bgParallax, (double) num3) - (double) (num3 / 2)) - (int) vector2.X;
|
|
this.bgLoops = (Main.screenWidth + (int) vector2.X * 2) / num3 + 2;
|
|
if (num22 * 16.0 + (double) Main.screenHeight < (double) Main.screenPosition.Y - 16.0)
|
|
{
|
|
this.bgStartY = (int) (Math.IEEERemainder((double) this.bgTopY, (double) Main.backgroundHeight[2]) - (double) Main.backgroundHeight[2]);
|
|
this.bgLoopsY = (Main.screenHeight - this.bgStartY + (int) vector2.Y * 2) / Main.backgroundHeight[2] + 1;
|
|
}
|
|
else
|
|
{
|
|
this.bgStartY = this.bgTopY;
|
|
this.bgLoopsY = (Main.screenHeight - this.bgTopY + (int) vector2.Y * 2) / Main.backgroundHeight[2] + 1;
|
|
}
|
|
int num39 = (int) ((double) num1 * 1.5);
|
|
int num40 = (int) ((double) num2 * 1.5);
|
|
int num41 = (int) (float) Math.Round(-Math.IEEERemainder((double) this.bgStartX + (double) Main.screenPosition.X, 16.0));
|
|
if (num41 == -8)
|
|
num41 = 8;
|
|
for (int index32 = 0; index32 < this.bgLoops; ++index32)
|
|
{
|
|
for (int index33 = 0; index33 < this.bgLoopsY; ++index33)
|
|
{
|
|
for (int index34 = 0; index34 < num3 / 16; ++index34)
|
|
{
|
|
for (int index35 = 0; index35 < 6; ++index35)
|
|
{
|
|
double num42 = (double) (this.bgStartY + index33 * 96 + index35 * 16 + 8);
|
|
int index36 = (int) (((double) (this.bgStartX + num3 * index32 + index34 * 16 + 8) + (double) Main.screenPosition.X) / 16.0);
|
|
double y = (double) Main.screenPosition.Y;
|
|
int index37 = (int) ((num42 + y) / 16.0);
|
|
Microsoft.Xna.Framework.Color color24 = Lighting.GetColor(index36, index37);
|
|
if (Main.tile[index36, index37] == null)
|
|
Main.tile[index36, index37] = new Tile();
|
|
bool flag4 = false;
|
|
if ((double) Main.caveParallax != 0.0)
|
|
{
|
|
if (Main.tile[index36 - 1, index37] == null)
|
|
Main.tile[index36 - 1, index37] = new Tile();
|
|
if (Main.tile[index36 + 1, index37] == null)
|
|
Main.tile[index36 + 1, index37] = new Tile();
|
|
if (Main.wallLight[(int) Main.tile[index36, index37].wall] || Main.wallLight[(int) Main.tile[index36 - 1, index37].wall] || Main.wallLight[(int) Main.tile[index36 + 1, index37].wall])
|
|
flag4 = true;
|
|
}
|
|
else if (Main.wallLight[(int) Main.tile[index36, index37].wall])
|
|
flag4 = true;
|
|
if ((flag4 || color24.R == (byte) 0 || color24.G == (byte) 0 || color24.B == (byte) 0) && (color24.R > (byte) 0 || color24.G > (byte) 0 || color24.B > (byte) 0) && (Main.wallLight[(int) Main.tile[index36, index37].wall] || (double) Main.caveParallax != 0.0))
|
|
{
|
|
if (Lighting.NotRetro && color24.R < (byte) 230 && color24.G < (byte) 230 && color24.B < (byte) 230)
|
|
{
|
|
if (((int) color24.R > num39 || (double) color24.G > (double) num39 * 1.1 || (double) color24.B > (double) num39 * 1.2) && !Main.tile[index36, index37].active())
|
|
{
|
|
Lighting.GetColor9Slice(index36, index37, ref slices);
|
|
for (int index38 = 0; index38 < 9; ++index38)
|
|
{
|
|
int num43 = 0;
|
|
int num44 = 0;
|
|
int width = 4;
|
|
int height = 4;
|
|
Microsoft.Xna.Framework.Color color25 = color24;
|
|
Microsoft.Xna.Framework.Color color26 = color24;
|
|
switch (index38)
|
|
{
|
|
case 0:
|
|
if (!Main.tile[index36 - 1, index37 - 1].active())
|
|
{
|
|
color26 = slices[index38];
|
|
break;
|
|
}
|
|
break;
|
|
case 1:
|
|
width = 8;
|
|
num43 = 4;
|
|
if (!Main.tile[index36, index37 - 1].active())
|
|
{
|
|
color26 = slices[index38];
|
|
break;
|
|
}
|
|
break;
|
|
case 2:
|
|
num43 = 12;
|
|
if (!Main.tile[index36 + 1, index37 - 1].active())
|
|
{
|
|
color26 = slices[index38];
|
|
break;
|
|
}
|
|
break;
|
|
case 3:
|
|
height = 8;
|
|
num44 = 4;
|
|
if (!Main.tile[index36 - 1, index37].active())
|
|
{
|
|
color26 = slices[index38];
|
|
break;
|
|
}
|
|
break;
|
|
case 4:
|
|
width = 8;
|
|
height = 8;
|
|
num43 = 4;
|
|
num44 = 4;
|
|
break;
|
|
case 5:
|
|
num43 = 12;
|
|
num44 = 4;
|
|
height = 8;
|
|
if (!Main.tile[index36 + 1, index37].active())
|
|
{
|
|
color26 = slices[index38];
|
|
break;
|
|
}
|
|
break;
|
|
case 6:
|
|
num44 = 12;
|
|
if (!Main.tile[index36 - 1, index37 + 1].active())
|
|
{
|
|
color26 = slices[index38];
|
|
break;
|
|
}
|
|
break;
|
|
case 7:
|
|
width = 8;
|
|
height = 4;
|
|
num43 = 4;
|
|
num44 = 12;
|
|
if (!Main.tile[index36, index37 + 1].active())
|
|
{
|
|
color26 = slices[index38];
|
|
break;
|
|
}
|
|
break;
|
|
case 8:
|
|
num43 = 12;
|
|
num44 = 12;
|
|
if (!Main.tile[index36 + 1, index37 + 1].active())
|
|
{
|
|
color26 = slices[index38];
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
color25.R = (byte) (((int) color24.R + (int) color26.R) / 2);
|
|
color25.G = (byte) (((int) color24.G + (int) color26.G) / 2);
|
|
color25.B = (byte) (((int) color24.B + (int) color26.B) / 2);
|
|
color25.R = (byte) ((double) color25.R * (double) num13);
|
|
color25.G = (byte) ((double) color25.G * (double) num14);
|
|
color25.B = (byte) ((double) color25.B * (double) num15);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray1[5]].Value, new Vector2((float) (this.bgStartX + num3 * index32 + 16 * index34 + num43 + num41), (float) (this.bgStartY + Main.backgroundHeight[2] * index33 + 16 * index35 + num44)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index34 + num43 + num41 + 16, 16 * index35 + Main.backgroundHeight[2] * Main.magmaBGFrame + num44, width, height)), color25, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
else if ((int) color24.R > num40 || (double) color24.G > (double) num40 * 1.1 || (double) color24.B > (double) num40 * 1.2)
|
|
{
|
|
Lighting.GetColor4Slice(index36, index37, ref slices);
|
|
for (int index39 = 0; index39 < 4; ++index39)
|
|
{
|
|
int num45 = 0;
|
|
int num46 = 0;
|
|
Microsoft.Xna.Framework.Color color27 = color24;
|
|
Microsoft.Xna.Framework.Color color28 = slices[index39];
|
|
switch (index39 - 1)
|
|
{
|
|
case 0:
|
|
num45 = 8;
|
|
break;
|
|
case 1:
|
|
num46 = 8;
|
|
break;
|
|
case 2:
|
|
num45 = 8;
|
|
num46 = 8;
|
|
break;
|
|
}
|
|
color27.R = (byte) (((int) color24.R + (int) color28.R) / 2);
|
|
color27.G = (byte) (((int) color24.G + (int) color28.G) / 2);
|
|
color27.B = (byte) (((int) color24.B + (int) color28.B) / 2);
|
|
color27.R = (byte) ((double) color27.R * (double) num13);
|
|
color27.G = (byte) ((double) color27.G * (double) num14);
|
|
color27.B = (byte) ((double) color27.B * (double) num15);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray1[5]].Value, new Vector2((float) (this.bgStartX + num3 * index32 + 16 * index34 + num45 + num41), (float) (this.bgStartY + Main.backgroundHeight[2] * index33 + 16 * index35 + num46)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index34 + num45 + num41 + 16, 16 * index35 + Main.backgroundHeight[2] * Main.magmaBGFrame + num46, 8, 8)), color27, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
color24.R = (byte) ((double) color24.R * (double) num13);
|
|
color24.G = (byte) ((double) color24.G * (double) num14);
|
|
color24.B = (byte) ((double) color24.B * (double) num15);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray1[5]].Value, new Vector2((float) (this.bgStartX + num3 * index32 + 16 * index34 + num41), (float) (this.bgStartY + Main.backgroundHeight[2] * index33 + 16 * index35)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index34 + num41 + 16, 16 * index35 + Main.backgroundHeight[2] * Main.magmaBGFrame, 16, 16)), color24, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
color24.R = (byte) ((double) color24.R * (double) num13);
|
|
color24.G = (byte) ((double) color24.G * (double) num14);
|
|
color24.B = (byte) ((double) color24.B * (double) num15);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[numArray1[5]].Value, new Vector2((float) (this.bgStartX + num3 * index32 + 16 * index34 + num41), (float) (this.bgStartY + Main.backgroundHeight[2] * index33 + 16 * index35)) + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(16 * index34 + num41 + 16, 16 * index35 + Main.backgroundHeight[2] * Main.magmaBGFrame, 16, 16)), color24, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
Lighting.GlobalBrightness = num18;
|
|
TimeLogger.DrawTime(3, stopwatch.Elapsed.TotalMilliseconds);
|
|
}
|
|
|
|
protected void RenderBackground()
|
|
{
|
|
if (Main.drawToScreen)
|
|
return;
|
|
this.GraphicsDevice.SetRenderTarget(this.backWaterTarget);
|
|
this.GraphicsDevice.Clear(Microsoft.Xna.Framework.Color.Transparent);
|
|
Main.spriteBatch.Begin();
|
|
Main.tileBatch.Begin();
|
|
try
|
|
{
|
|
this.DrawWaters(true);
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
Main.tileBatch.End();
|
|
Main.spriteBatch.End();
|
|
this.GraphicsDevice.SetRenderTarget((RenderTarget2D) null);
|
|
this.GraphicsDevice.SetRenderTarget(this.backgroundTarget);
|
|
this.GraphicsDevice.Clear(Microsoft.Xna.Framework.Color.Transparent);
|
|
Main.spriteBatch.Begin();
|
|
Main.tileBatch.Begin();
|
|
if (Main.ignoreErrors)
|
|
{
|
|
try
|
|
{
|
|
this.DrawBackground();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
TimeLogger.DrawException(ex);
|
|
}
|
|
}
|
|
else
|
|
this.DrawBackground();
|
|
TimeLogger.DetailedDrawReset();
|
|
Main.spriteBatch.End();
|
|
Main.tileBatch.End();
|
|
TimeLogger.DetailedDrawTime(33);
|
|
this.GraphicsDevice.SetRenderTarget((RenderTarget2D) null);
|
|
}
|
|
|
|
protected void DrawToMap()
|
|
{
|
|
if (!Main.mapEnabled)
|
|
return;
|
|
int num1 = Main.maxTilesX / Main.textureMaxWidth;
|
|
int num2 = Main.maxTilesY / Main.textureMaxHeight;
|
|
for (int i = 0; i <= num1; ++i)
|
|
{
|
|
for (int j = 0; j <= num2; ++j)
|
|
{
|
|
if (!this.checkMap(i, j))
|
|
return;
|
|
}
|
|
}
|
|
if (Main.clearMap)
|
|
{
|
|
for (int index1 = 0; index1 <= num1; ++index1)
|
|
{
|
|
for (int index2 = 0; index2 <= num2; ++index2)
|
|
{
|
|
this.GraphicsDevice.SetRenderTarget(this.mapTarget[index1, index2]);
|
|
this.GraphicsDevice.Clear(Microsoft.Xna.Framework.Color.Transparent);
|
|
this.GraphicsDevice.SetRenderTarget((RenderTarget2D) null);
|
|
}
|
|
}
|
|
Main.clearMap = false;
|
|
}
|
|
int num3 = -1;
|
|
int num4 = -1;
|
|
bool flag = false;
|
|
int num5 = 0;
|
|
int mapMinY1 = Main.mapMinY;
|
|
int num6 = Main.mapMinY;
|
|
int num7 = Main.mapMaxY;
|
|
int mapMaxY = Main.mapMaxY;
|
|
int num8 = 1;
|
|
if (Main.mapMinY / Main.textureMaxHeight != Main.mapMaxY / Main.textureMaxHeight)
|
|
{
|
|
num7 = Main.textureMaxHeight;
|
|
num6 = Main.textureMaxHeight;
|
|
num8 = 2;
|
|
}
|
|
for (int index3 = 0; index3 < num8; ++index3)
|
|
{
|
|
switch (index3)
|
|
{
|
|
case 0:
|
|
Main.mapMinY = mapMinY1;
|
|
Main.mapMaxY = num7;
|
|
break;
|
|
case 1:
|
|
Main.mapMinY = num6;
|
|
Main.mapMaxY = mapMaxY;
|
|
break;
|
|
}
|
|
if (Main.mapMinX < 0)
|
|
Main.mapMinX = 0;
|
|
if (Main.mapMinX >= Main.maxTilesX)
|
|
Main.mapMinX = Main.maxTilesX - 1;
|
|
if (Main.mapMinY < 0)
|
|
Main.mapMinY = 0;
|
|
if (Main.mapMinY >= Main.maxTilesY)
|
|
Main.mapMinY = Main.maxTilesY - 1;
|
|
for (int mapMinX = Main.mapMinX; mapMinX < Main.mapMaxX; ++mapMinX)
|
|
{
|
|
for (int mapMinY2 = Main.mapMinY; mapMinY2 < Main.mapMaxY; ++mapMinY2)
|
|
{
|
|
MapTile tile = Main.Map[mapMinX, mapMinY2];
|
|
if (tile.IsChanged && !this.mapTarget[mapMinX / Main.textureMaxWidth, mapMinY2 / Main.textureMaxHeight].IsContentLost)
|
|
{
|
|
++num5;
|
|
if (num5 < Main.maxMapUpdates)
|
|
{
|
|
if (Main.loadMap)
|
|
Main.loadMapLastX = mapMinX;
|
|
Main.Map.ConsumeUpdate(mapMinX, mapMinY2);
|
|
int index4 = mapMinX / Main.textureMaxWidth;
|
|
int index5 = mapMinY2 / Main.textureMaxHeight;
|
|
if (index4 != num3 || index5 != num4)
|
|
{
|
|
num3 = index4;
|
|
num4 = index5;
|
|
if (flag)
|
|
{
|
|
Main.spriteBatch.End();
|
|
this.GraphicsDevice.SetRenderTarget((RenderTarget2D) null);
|
|
}
|
|
flag = true;
|
|
this.GraphicsDevice.SetRenderTarget(this.mapTarget[index4, index5]);
|
|
Main.spriteBatch.Begin();
|
|
}
|
|
int num9 = mapMinX - index4 * Main.textureMaxWidth;
|
|
int num10 = mapMinY2 - index5 * Main.textureMaxHeight;
|
|
Microsoft.Xna.Framework.Color mapTileXnaColor = MapHelper.GetMapTileXnaColor(ref tile);
|
|
int height = 1;
|
|
int width = 1;
|
|
int y = mapMinY2 + 1;
|
|
MapTile other;
|
|
MapTile mapTile;
|
|
while (y < Main.mapMaxY)
|
|
{
|
|
mapTile = other = Main.Map[mapMinX, y];
|
|
if (mapTile.IsChanged && tile.Equals(ref other) && y / Main.textureMaxHeight == index5)
|
|
{
|
|
Main.Map.ConsumeUpdate(mapMinX, y);
|
|
++height;
|
|
++y;
|
|
++mapMinY2;
|
|
}
|
|
else
|
|
break;
|
|
}
|
|
if (height == 1)
|
|
{
|
|
for (int x = mapMinX + 1; x < Main.mapMaxX; ++x)
|
|
{
|
|
mapTile = other = Main.Map[x, mapMinY2];
|
|
if (mapTile.IsChanged && tile.Equals(ref other) && x / Main.textureMaxWidth == index4)
|
|
{
|
|
Main.Map.ConsumeUpdate(x, mapMinY2);
|
|
++width;
|
|
}
|
|
else
|
|
break;
|
|
}
|
|
}
|
|
Main.spriteBatch.Draw(TextureAssets.MagicPixel.Value, new Vector2((float) num9, (float) num10), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, width, height)), mapTileXnaColor, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
for (int index6 = 0; index6 < MapHelper.numUpdateTile; ++index6)
|
|
{
|
|
int x = (int) MapHelper.updateTileX[index6];
|
|
int y = (int) MapHelper.updateTileY[index6];
|
|
MapTile tile = Main.Map[x, y];
|
|
if (tile.IsChanged)
|
|
{
|
|
Main.Map.ConsumeUpdate(x, y);
|
|
int index7 = x / Main.textureMaxWidth;
|
|
int index8 = y / Main.textureMaxHeight;
|
|
if (index7 != num3 || index8 != num4)
|
|
{
|
|
num3 = index7;
|
|
num4 = index8;
|
|
if (flag)
|
|
{
|
|
Main.spriteBatch.End();
|
|
this.GraphicsDevice.SetRenderTarget((RenderTarget2D) null);
|
|
}
|
|
flag = true;
|
|
this.GraphicsDevice.SetRenderTarget(this.mapTarget[index7, index8]);
|
|
Main.spriteBatch.Begin();
|
|
}
|
|
int num11 = x - index7 * Main.textureMaxWidth;
|
|
int num12 = y - index8 * Main.textureMaxHeight;
|
|
Microsoft.Xna.Framework.Color mapTileXnaColor = MapHelper.GetMapTileXnaColor(ref tile);
|
|
Main.spriteBatch.Draw(TextureAssets.MagicPixel.Value, new Vector2((float) num11, (float) num12), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, 1, 1)), mapTileXnaColor, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
MapHelper.numUpdateTile = 0;
|
|
if (flag)
|
|
{
|
|
Main.spriteBatch.End();
|
|
this.GraphicsDevice.SetRenderTarget((RenderTarget2D) null);
|
|
}
|
|
Main.mapReady = true;
|
|
Main.loadMapLastX = 0;
|
|
Main.loadMap = false;
|
|
Main.loadMapLock = false;
|
|
}
|
|
|
|
protected void DrawToMap_Section(int secX, int secY)
|
|
{
|
|
Stopwatch stopwatch = Stopwatch.StartNew();
|
|
Microsoft.Xna.Framework.Color[] mapColorCacheArray = Main._mapColorCacheArray;
|
|
int num1 = secX * 200;
|
|
int num2 = num1 + 200;
|
|
int num3 = secY * 150;
|
|
int num4 = num3 + 150;
|
|
int i = num1 / Main.textureMaxWidth;
|
|
int j = num3 / Main.textureMaxHeight;
|
|
int num5 = num1 % Main.textureMaxWidth;
|
|
int num6 = num3 % Main.textureMaxHeight;
|
|
if (!this.checkMap(i, j))
|
|
return;
|
|
int index = 0;
|
|
Microsoft.Xna.Framework.Color transparent = Microsoft.Xna.Framework.Color.Transparent;
|
|
for (int y = num3; y < num4; ++y)
|
|
{
|
|
for (int x = num1; x < num2; ++x)
|
|
{
|
|
MapTile tile = Main.Map[x, y];
|
|
mapColorCacheArray[index] = MapHelper.GetMapTileXnaColor(ref tile);
|
|
++index;
|
|
}
|
|
}
|
|
try
|
|
{
|
|
this.GraphicsDevice.SetRenderTarget(this.mapTarget[i, j]);
|
|
}
|
|
catch (ObjectDisposedException ex)
|
|
{
|
|
Main.initMap[i, j] = false;
|
|
return;
|
|
}
|
|
Main.spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend);
|
|
TimeSpan elapsed = stopwatch.Elapsed;
|
|
double totalMilliseconds1 = elapsed.TotalMilliseconds;
|
|
this.mapSectionTexture.SetData<Microsoft.Xna.Framework.Color>(mapColorCacheArray, 0, mapColorCacheArray.Length);
|
|
elapsed = stopwatch.Elapsed;
|
|
double totalMilliseconds2 = elapsed.TotalMilliseconds;
|
|
elapsed = stopwatch.Elapsed;
|
|
totalMilliseconds1 = elapsed.TotalMilliseconds;
|
|
Main.spriteBatch.Draw((Texture2D) this.mapSectionTexture, new Vector2((float) num5, (float) num6), Microsoft.Xna.Framework.Color.White);
|
|
Main.spriteBatch.End();
|
|
this.GraphicsDevice.SetRenderTarget((RenderTarget2D) null);
|
|
elapsed = stopwatch.Elapsed;
|
|
double totalMilliseconds3 = elapsed.TotalMilliseconds;
|
|
stopwatch.Stop();
|
|
}
|
|
|
|
public static string ValueToCoins(int value)
|
|
{
|
|
int num1 = value;
|
|
int num2 = 0;
|
|
int num3 = 0;
|
|
int num4 = 0;
|
|
while (num1 >= 1000000)
|
|
{
|
|
num1 -= 1000000;
|
|
++num2;
|
|
}
|
|
while (num1 >= 10000)
|
|
{
|
|
num1 -= 10000;
|
|
++num3;
|
|
}
|
|
while (num1 >= 100)
|
|
{
|
|
num1 -= 100;
|
|
++num4;
|
|
}
|
|
int num5 = num1;
|
|
string str = "";
|
|
if (num2 > 0)
|
|
str += string.Format("{0} {1} ", (object) num2, (object) Language.GetTextValue("Currency.Platinum").ToLower());
|
|
if (num3 > 0)
|
|
str += string.Format("{0} {1} ", (object) num3, (object) Language.GetTextValue("Currency.Gold").ToLower());
|
|
if (num4 > 0)
|
|
str += string.Format("{0} {1} ", (object) num4, (object) Language.GetTextValue("Currency.Silver").ToLower());
|
|
if (num5 > 0)
|
|
str += string.Format("{0} {1} ", (object) num5, (object) Language.GetTextValue("Currency.Copper").ToLower());
|
|
if (str.Length > 0)
|
|
str = str.Substring(0, str.Length - 1);
|
|
return str;
|
|
}
|
|
|
|
private static void UpdateMinimapAnchors()
|
|
{
|
|
int num1 = 240;
|
|
int num2 = 240;
|
|
Main._minimapTopRightAnchorOffsetTowardsLeft = 292;
|
|
Main._minimapTopRightAnchorOffsetTowardsBottom = 90;
|
|
Main._minimapTopRightAnchorOffsetTowardsLeft = (int) ((double) (52 + num1 / 2) + (double) Main.MapScale * (double) num1 / 2.0);
|
|
Main._minimapTopRightAnchorOffsetTowardsBottom = (int) ((double) (90 + num2 / 2) - (double) Main.MapScale * (double) num2 / 2.0);
|
|
Main._minimapTopRightAnchorOffsetTowardsLeft = 52 + (int) (240.0 * (double) Main.MapScale);
|
|
Main._minimapTopRightAnchorOffsetTowardsBottom = 90;
|
|
}
|
|
|
|
protected void DrawMap(GameTime gameTime)
|
|
{
|
|
string cursorText = "";
|
|
if (!Main.mapEnabled || !Main.mapReady)
|
|
return;
|
|
float num1 = 0.0f;
|
|
float num2 = 0.0f;
|
|
float num3 = num1;
|
|
float num4 = num2;
|
|
byte alpha = byte.MaxValue;
|
|
int num5 = Main.maxTilesX / Main.textureMaxWidth;
|
|
int num6 = Main.maxTilesY / Main.textureMaxHeight;
|
|
float offScreenTiles1 = (float) Lighting.OffScreenTiles;
|
|
float offScreenTiles2 = (float) Lighting.OffScreenTiles;
|
|
float num7 = (float) (Main.maxTilesX - Lighting.OffScreenTiles - 1);
|
|
float num8 = (float) (Main.maxTilesY - Lighting.OffScreenTiles - 42);
|
|
float num9 = 0.0f;
|
|
float num10 = 0.0f;
|
|
float num11 = 10f;
|
|
float num12 = 10f;
|
|
float num13 = (float) (Main.maxTilesX - 10);
|
|
float num14 = (float) (Main.maxTilesY - 10);
|
|
for (int index1 = 0; index1 < this.mapTarget.GetLength(0); ++index1)
|
|
{
|
|
for (int index2 = 0; index2 < this.mapTarget.GetLength(1); ++index2)
|
|
{
|
|
if (this.mapTarget[index1, index2] != null)
|
|
{
|
|
if (this.mapTarget[index1, index2].IsContentLost && !Main.mapWasContentLost[index1, index2])
|
|
{
|
|
Main.mapWasContentLost[index1, index2] = true;
|
|
Main.refreshMap = true;
|
|
Main.clearMap = true;
|
|
}
|
|
else if (!this.mapTarget[index1, index2].IsContentLost && Main.mapWasContentLost[index1, index2])
|
|
Main.mapWasContentLost[index1, index2] = false;
|
|
}
|
|
}
|
|
}
|
|
float num15 = 200f;
|
|
float num16 = 300f;
|
|
float num17 = 0.0f;
|
|
float num18 = 0.0f;
|
|
float num19 = num13 - 1f;
|
|
float num20 = num14 - 1f;
|
|
float num21 = !Main.mapFullscreen ? (Main.mapStyle != 1 ? Main.mapOverlayScale : Main.mapMinimapScale) : Main.mapFullscreenScale;
|
|
bool flag1 = false;
|
|
float mapScale = Main.MapScale;
|
|
float num22 = 1f / mapScale;
|
|
int mouseX = Main.mouseX;
|
|
int mouseY = Main.mouseY;
|
|
Matrix uiScaleMatrix = Main.UIScaleMatrix;
|
|
Matrix transformMatrix1 = uiScaleMatrix;
|
|
Matrix transformMatrix2 = uiScaleMatrix;
|
|
Matrix scale = Matrix.CreateScale(mapScale);
|
|
int index3 = -1;
|
|
if (Main.mapStyle != 1)
|
|
transformMatrix1 = Matrix.Identity;
|
|
if (Main.mapFullscreen)
|
|
transformMatrix1 = Matrix.Identity;
|
|
if (!Main.mapFullscreen && Main.mapStyle == 1)
|
|
{
|
|
transformMatrix1 *= scale;
|
|
transformMatrix2 *= scale;
|
|
}
|
|
if (!Main.mapFullscreen)
|
|
{
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, DepthStencilState.None, RasterizerState.CullCounterClockwise, (Effect) null, transformMatrix1);
|
|
if ((double) num21 > 1.0)
|
|
flag1 = true;
|
|
}
|
|
if (Main.mapFullscreen)
|
|
{
|
|
if (Main.mouseLeft && this.IsActive && !CaptureManager.Instance.UsingMap)
|
|
{
|
|
if (Main.mouseLeftRelease)
|
|
{
|
|
Main.grabMapX = (float) Main.mouseX;
|
|
Main.grabMapY = (float) Main.mouseY;
|
|
}
|
|
else
|
|
{
|
|
float num23 = (float) Main.mouseX - Main.grabMapX;
|
|
float num24 = (float) Main.mouseY - Main.grabMapY;
|
|
Main.grabMapX = (float) Main.mouseX;
|
|
Main.grabMapY = (float) Main.mouseY;
|
|
float num25 = num23 * 0.06255f;
|
|
float num26 = num24 * 0.06255f;
|
|
Main.mapFullscreenPos.X -= num25 * (16f / Main.mapFullscreenScale);
|
|
Main.mapFullscreenPos.Y -= num26 * (16f / Main.mapFullscreenScale);
|
|
}
|
|
}
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
float num27 = (float) ((double) Main.screenWidth / (double) Main.maxTilesX * 0.598999977111816);
|
|
if ((double) Main.mapFullscreenScale < (double) num27)
|
|
Main.mapFullscreenScale = num27;
|
|
if ((double) Main.mapFullscreenScale > 31.2000007629395)
|
|
Main.mapFullscreenScale = 31.18f;
|
|
num21 = Main.mapFullscreenScale;
|
|
alpha = byte.MaxValue;
|
|
if ((double) Main.mapFullscreenPos.X < (double) num11)
|
|
Main.mapFullscreenPos.X = num11;
|
|
if ((double) Main.mapFullscreenPos.X > (double) num13)
|
|
Main.mapFullscreenPos.X = num13;
|
|
if ((double) Main.mapFullscreenPos.Y < (double) num12)
|
|
Main.mapFullscreenPos.Y = num12;
|
|
if ((double) Main.mapFullscreenPos.Y > (double) num14)
|
|
Main.mapFullscreenPos.Y = num14;
|
|
float num28 = Main.mapFullscreenPos.X;
|
|
float num29 = Main.mapFullscreenPos.Y;
|
|
if (Main.resetMapFull)
|
|
{
|
|
Main.resetMapFull = false;
|
|
num28 = (float) (((double) Main.screenPosition.X + (double) (Main.screenWidth / 2)) / 16.0);
|
|
num29 = (float) (((double) Main.screenPosition.Y + (double) (Main.screenHeight / 2)) / 16.0);
|
|
Main.mapFullscreenPos.X = num28;
|
|
Main.mapFullscreenPos.Y = num29;
|
|
}
|
|
float num30 = num28 * num21;
|
|
float num31 = num29 * num21;
|
|
float num32 = -num30 + (float) (Main.screenWidth / 2);
|
|
float num33 = -num31 + (float) (Main.screenHeight / 2);
|
|
num15 = num32 + num11 * num21;
|
|
num16 = num33 + num12 * num21;
|
|
float num34 = (float) (Main.maxTilesX / 840) * Main.mapFullscreenScale;
|
|
float num35 = num15;
|
|
float num36 = num16;
|
|
float num37 = (float) TextureAssets.Map.Width();
|
|
float num38 = (float) TextureAssets.Map.Height();
|
|
switch (Main.maxTilesX)
|
|
{
|
|
case 4200:
|
|
float num39 = num34 * 0.998f;
|
|
num35 -= 37.3f * num39;
|
|
num36 -= 1.7f * num39;
|
|
num37 = (num37 - 16f) * num39;
|
|
num38 = (num38 - 8.31f) * num39;
|
|
break;
|
|
case 6300:
|
|
float num40 = num34 * 1.09f;
|
|
num35 -= 39.8f * num40;
|
|
num36 = num16 - 4.08f * num40;
|
|
num37 = (num37 - 26.69f) * num40;
|
|
num38 = (num38 - 6.92f) * num40;
|
|
if ((double) num40 < 1.2)
|
|
{
|
|
num38 += 2f;
|
|
break;
|
|
}
|
|
break;
|
|
case 6400:
|
|
float num41 = num34 * 1.09f;
|
|
num35 -= 38.8f * num41;
|
|
num36 = num16 - 3.85f * num41;
|
|
num37 = (num37 - 13.6f) * num41;
|
|
num38 = (num38 - 6.92f) * num41;
|
|
if ((double) num41 < 1.2)
|
|
{
|
|
num38 += 2f;
|
|
break;
|
|
}
|
|
break;
|
|
case 8400:
|
|
float num42 = num34 * 0.999f;
|
|
num35 -= 40.6f * num42;
|
|
num36 = num16 - 5f * num42;
|
|
num37 = (num37 - 8.045f) * num42;
|
|
num38 = (num38 + 0.12f) * num42;
|
|
if ((double) num42 < 1.2)
|
|
{
|
|
++num38;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, DepthStencilState.None, RasterizerState.CullCounterClockwise);
|
|
flag1 = true;
|
|
Main.DrawMapFullscreenBackground(Main.screenPosition, Main.screenWidth, Main.screenHeight);
|
|
Microsoft.Xna.Framework.Rectangle destinationRectangle = new Microsoft.Xna.Framework.Rectangle((int) num35, (int) num36, (int) num37, (int) num38);
|
|
Main.spriteBatch.Draw(TextureAssets.Map.Value, destinationRectangle, Microsoft.Xna.Framework.Color.White);
|
|
if (Main.mouseLeft && Main.mouseLeftRelease)
|
|
{
|
|
double totalSeconds = gameTime.TotalGameTime.TotalSeconds;
|
|
if (totalSeconds - Main._lastPingMouseDownTime < 0.5 && (double) Vector2.Distance(Main.MouseScreen, Main._lastPingMousePosition) < 2.0)
|
|
Main.TriggerPing((Main.MouseScreen - new Vector2(num15 - 10f * num21, num16 - 10f * num21)) / num21);
|
|
Main._lastPingMouseDownTime = totalSeconds;
|
|
Main._lastPingMousePosition = Main.MouseScreen;
|
|
}
|
|
if ((double) num21 < 1.0)
|
|
{
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin();
|
|
flag1 = false;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (Main.mapStyle)
|
|
{
|
|
case 1:
|
|
Main.UpdateMinimapAnchors();
|
|
Main.miniMapWidth = 240;
|
|
Main.miniMapHeight = 240;
|
|
Main.miniMapX = Main.screenWidth - Main._minimapTopRightAnchorOffsetTowardsLeft;
|
|
Main.miniMapY = Main._minimapTopRightAnchorOffsetTowardsBottom;
|
|
Main.miniMapX = (int) ((double) Main.miniMapX * (double) num22);
|
|
Main.miniMapY = (int) ((double) Main.miniMapY * (double) num22);
|
|
Main.mouseX = (int) ((double) Main.mouseX * (double) num22);
|
|
Main.mouseY = (int) ((double) Main.mouseY * (double) num22);
|
|
double num43 = (double) Main.miniMapHeight / (double) Main.maxTilesY;
|
|
if ((double) Main.mapMinimapScale < 0.2)
|
|
Main.mapMinimapScale = 0.2f;
|
|
if ((double) Main.mapMinimapScale > 3.0)
|
|
Main.mapMinimapScale = 3f;
|
|
if ((double) Main.mapMinimapAlpha < 0.01)
|
|
Main.mapMinimapAlpha = 0.01f;
|
|
if ((double) Main.mapMinimapAlpha > 1.0)
|
|
Main.mapMinimapAlpha = 1f;
|
|
num21 = Main.mapMinimapScale;
|
|
alpha = (byte) ((double) byte.MaxValue * (double) Main.mapMinimapAlpha);
|
|
num15 = (float) Main.miniMapX;
|
|
num16 = (float) Main.miniMapY;
|
|
num3 = num15;
|
|
num4 = num16;
|
|
double num44 = ((double) Main.screenPosition.X + (double) (PlayerInput.RealScreenWidth / 2)) / 16.0;
|
|
float num45 = (float) (((double) Main.screenPosition.Y + (double) (PlayerInput.RealScreenHeight / 2)) / 16.0);
|
|
num9 = (float) -(num44 - (double) (int) (((double) Main.screenPosition.X + (double) (PlayerInput.RealScreenWidth / 2)) / 16.0)) * num21;
|
|
num10 = (float) -((double) num45 - (double) (int) (((double) Main.screenPosition.Y + (double) (PlayerInput.RealScreenHeight / 2)) / 16.0)) * num21;
|
|
num19 = (float) Main.miniMapWidth / num21;
|
|
num20 = (float) Main.miniMapHeight / num21;
|
|
num17 = (float) (int) num44 - num19 / 2f;
|
|
num18 = (float) (int) num45 - num20 / 2f;
|
|
double num46 = (double) Main.maxTilesY + (double) num18;
|
|
float num47 = num3 - 6f;
|
|
float num48 = num4 - 6f;
|
|
Main.ActiveMinimapFrame.MinimapPosition = new Vector2(num47 + 10f, num48 + 10f);
|
|
Main.ActiveMinimapFrame.Update();
|
|
Main.ActiveMinimapFrame.DrawBackground(Main.spriteBatch);
|
|
break;
|
|
case 2:
|
|
float num49 = (float) Main.screenWidth / (float) Main.maxTilesX;
|
|
if ((double) Main.mapOverlayScale < (double) num49)
|
|
Main.mapOverlayScale = num49;
|
|
if ((double) Main.mapOverlayScale > 16.0 * (double) Main.GameViewMatrix.Zoom.X)
|
|
Main.mapOverlayScale = 16f * Main.GameViewMatrix.Zoom.X;
|
|
if ((double) Main.mapOverlayAlpha < 0.01)
|
|
Main.mapOverlayAlpha = 0.01f;
|
|
if ((double) Main.mapOverlayAlpha > 1.0)
|
|
Main.mapOverlayAlpha = 1f;
|
|
num21 = Main.mapOverlayScale;
|
|
alpha = (byte) ((double) byte.MaxValue * (double) Main.mapOverlayAlpha);
|
|
int maxTilesX = Main.maxTilesX;
|
|
int maxTilesY = Main.maxTilesY;
|
|
float num50 = (float) (((double) Main.screenPosition.X + (double) (Main.screenWidth / 2)) / 16.0);
|
|
double num51 = ((double) Main.screenPosition.Y + (double) (Main.screenHeight / 2)) / 16.0;
|
|
float num52 = num50 * num21;
|
|
double num53 = (double) num21;
|
|
double num54 = num51 * num53;
|
|
float num55 = -num52 + (float) (Main.screenWidth / 2);
|
|
float num56 = (float) -num54 + (float) (Main.screenHeight / 2);
|
|
num15 = num55 + num11 * num21;
|
|
num16 = num56 + num12 * num21;
|
|
break;
|
|
}
|
|
}
|
|
if (Main.mapStyle == 1 && !Main.mapFullscreen)
|
|
{
|
|
if ((double) num17 < (double) num11)
|
|
num15 -= (num17 - num11) * num21;
|
|
if ((double) num18 < (double) num12)
|
|
num16 -= (num18 - num12) * num21;
|
|
}
|
|
float num57 = num17 + num19;
|
|
float num58 = num18 + num20;
|
|
if ((double) num17 > (double) num11)
|
|
num11 = num17;
|
|
if ((double) num18 > (double) num12)
|
|
num12 = num18;
|
|
if ((double) num57 < (double) num13)
|
|
num13 = num57;
|
|
if ((double) num58 < (double) num14)
|
|
num14 = num58;
|
|
float num59 = (float) Main.textureMaxWidth * num21;
|
|
float num60 = (float) Main.textureMaxHeight * num21;
|
|
float num61 = num15;
|
|
float num62 = 0.0f;
|
|
for (int index4 = 0; index4 <= 4; ++index4)
|
|
{
|
|
if ((double) ((index4 + 1) * Main.textureMaxWidth) > (double) num11 && (double) (index4 * Main.textureMaxWidth) < (double) num11 + (double) num13)
|
|
{
|
|
for (int index5 = 0; index5 <= num6; ++index5)
|
|
{
|
|
if ((double) ((index5 + 1) * Main.textureMaxHeight) > (double) num12 && (double) (index5 * Main.textureMaxHeight) < (double) num12 + (double) num14)
|
|
{
|
|
float num63 = num15 + (float) (int) ((double) index4 * (double) num59);
|
|
float num64 = num16 + (float) (int) ((double) index5 * (double) num60);
|
|
float num65 = (float) (index4 * Main.textureMaxWidth);
|
|
float num66 = (float) (index5 * Main.textureMaxHeight);
|
|
float num67 = 0.0f;
|
|
float num68 = 0.0f;
|
|
float num69;
|
|
if ((double) num65 < (double) num11)
|
|
{
|
|
num67 = num11 - num65;
|
|
num69 = num15;
|
|
}
|
|
else
|
|
num69 = num63 - num11 * num21;
|
|
float num70;
|
|
if ((double) num66 < (double) num12)
|
|
{
|
|
num68 = num12 - num66;
|
|
num70 = num16;
|
|
}
|
|
else
|
|
num70 = num64 - num12 * num21;
|
|
float num71 = num61;
|
|
float textureMaxWidth = (float) Main.textureMaxWidth;
|
|
float textureMaxHeight = (float) Main.textureMaxHeight;
|
|
float num72 = (float) ((index4 + 1) * Main.textureMaxWidth);
|
|
float num73 = (float) ((index5 + 1) * Main.textureMaxHeight);
|
|
if ((double) num72 >= (double) num13)
|
|
textureMaxWidth -= num72 - num13;
|
|
if ((double) num73 >= (double) num14)
|
|
textureMaxHeight -= num73 - num14;
|
|
float x = num71 + num9;
|
|
float y = num70 + num10;
|
|
if ((double) textureMaxWidth > (double) num67)
|
|
{
|
|
Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.Rectangle((int) num67, (int) num68, (int) textureMaxWidth - (int) num67, (int) textureMaxHeight - (int) num68);
|
|
Main.spriteBatch.Draw((Texture2D) this.mapTarget[index4, index5], new Vector2(x, y), new Microsoft.Xna.Framework.Rectangle?(rectangle), new Microsoft.Xna.Framework.Color((int) alpha, (int) alpha, (int) alpha, (int) alpha), 0.0f, new Vector2(), num21, SpriteEffects.None, 0.0f);
|
|
}
|
|
num62 = (float) ((int) textureMaxWidth - (int) num67) * num21;
|
|
}
|
|
if (index5 == num6)
|
|
num61 += num62;
|
|
}
|
|
}
|
|
}
|
|
if (flag1)
|
|
{
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, SamplerState.LinearClamp, DepthStencilState.None, RasterizerState.CullCounterClockwise, (Effect) null, transformMatrix1);
|
|
}
|
|
if (!Main.mapFullscreen)
|
|
{
|
|
if (Main.mapStyle == 2)
|
|
{
|
|
float num74 = (float) (((double) num21 * 0.200000002980232 * 2.0 + 1.0) / 3.0);
|
|
if ((double) num74 > 1.0)
|
|
num74 = 1f;
|
|
float num75 = num74 * Main.UIScale;
|
|
Main.MapIcons.Draw(Vector2.Zero, new Vector2(num15 - 10f * num21, num16 - 10f * num21), new Microsoft.Xna.Framework.Rectangle?(), num21, num75, ref cursorText);
|
|
CoinLossRevengeSystem.RevengeMarker revengeMarker = NPC.RevengeManager.DrawMapIcons(Main.spriteBatch, Vector2.Zero, new Vector2(num15 - 10f * num21, num16 - 10f * num21), new Microsoft.Xna.Framework.Rectangle?(), num21, num75, ref cursorText);
|
|
this.DrawMiscMapIcons(Main.spriteBatch, Vector2.Zero, new Vector2(num15 - 10f * num21, num16 - 10f * num21), new Microsoft.Xna.Framework.Rectangle?(), num21, num75, ref cursorText);
|
|
Main.spriteBatch.End();
|
|
if (revengeMarker != null)
|
|
{
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, DepthStencilState.None, RasterizerState.CullCounterClockwise, (Effect) null, uiScaleMatrix);
|
|
try
|
|
{
|
|
revengeMarker.UseMouseOver(Main.spriteBatch, ref cursorText, num75);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
TimeLogger.DrawException(ex);
|
|
}
|
|
Main.spriteBatch.End();
|
|
}
|
|
Main.spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, SamplerState.LinearClamp, DepthStencilState.None, RasterizerState.CullCounterClockwise, (Effect) null, transformMatrix1);
|
|
try
|
|
{
|
|
for (int index6 = 0; index6 < 200; ++index6)
|
|
{
|
|
if (Main.npc[index6].active && Main.npc[index6].townNPC)
|
|
{
|
|
ITownNPCProfile profile;
|
|
int npcID = !TownNPCProfiles.Instance.GetProfile(Main.npc[index6].type, out profile) ? NPC.TypeToDefaultHeadIndex(Main.npc[index6].type) : profile.GetHeadTextureIndex(Main.npc[index6]);
|
|
if (npcID > 0)
|
|
{
|
|
SpriteEffects dir = SpriteEffects.None;
|
|
if (Main.npc[index6].direction > 0)
|
|
dir = SpriteEffects.FlipHorizontally;
|
|
float num76 = (float) (((double) Main.npc[index6].position.X + (double) (Main.npc[index6].width / 2)) / 16.0) * num21;
|
|
float num77 = (float) (((double) Main.npc[index6].position.Y + (double) (Main.npc[index6].height / 2)) / 16.0) * num21;
|
|
float num78 = num76 + num15;
|
|
float num79 = num77 + num16;
|
|
float x = num78 - 10f * num21;
|
|
float y = num79 - 10f * num21;
|
|
Main.DrawNPCHeadFriendly((Entity) Main.npc[index6], alpha, num75, dir, npcID, x, y);
|
|
}
|
|
}
|
|
if (Main.npc[index6].active && Main.npc[index6].GetBossHeadTextureIndex() != -1)
|
|
{
|
|
float bossHeadRotation = Main.npc[index6].GetBossHeadRotation();
|
|
SpriteEffects headSpriteEffects = Main.npc[index6].GetBossHeadSpriteEffects();
|
|
Vector2 vector2 = Main.npc[index6].Center + new Vector2(0.0f, Main.npc[index6].gfxOffY);
|
|
if (Main.npc[index6].type == 134)
|
|
{
|
|
Vector2 center = Main.npc[index6].Center;
|
|
int num80 = 1;
|
|
for (int index7 = (int) Main.npc[index6].ai[0]; num80 < 15 && Main.npc[index7].active && Main.npc[index7].type >= 134 && Main.npc[index7].type <= 136; index7 = (int) Main.npc[index7].ai[0])
|
|
{
|
|
++num80;
|
|
center += Main.npc[index7].Center;
|
|
}
|
|
vector2 = center / (float) num80;
|
|
}
|
|
int headTextureIndex = Main.npc[index6].GetBossHeadTextureIndex();
|
|
float num81 = vector2.X / 16f * num21;
|
|
float num82 = vector2.Y / 16f * num21;
|
|
float num83 = num81 + num15;
|
|
float num84 = num82 + num16;
|
|
float x = num83 - 10f * num21;
|
|
float y = num84 - 10f * num21;
|
|
Main.DrawNPCHeadBoss((Entity) Main.npc[index6], alpha, num75, bossHeadRotation, headSpriteEffects, headTextureIndex, x, y);
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
TimeLogger.DrawException(ex);
|
|
}
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, SamplerState.LinearClamp, DepthStencilState.None, RasterizerState.CullCounterClockwise, (Effect) null, transformMatrix1);
|
|
for (int index8 = 0; index8 < (int) byte.MaxValue; ++index8)
|
|
{
|
|
if (Main.player[index8].active && !Main.player[index8].dead && index8 != Main.myPlayer && (!Main.player[Main.myPlayer].hostile && !Main.player[index8].hostile || Main.player[Main.myPlayer].team == Main.player[index8].team && Main.player[index8].team != 0 || index8 == Main.myPlayer))
|
|
{
|
|
float num85 = (float) (((double) Main.player[index8].position.X + (double) (Main.player[index8].width / 2)) / 16.0) * num21;
|
|
float num86 = Main.player[index8].position.Y / 16f * num21;
|
|
float num87 = num85 + num15;
|
|
float num88 = num86 + num16;
|
|
float num89 = num87 - 6f;
|
|
float num90 = num88 - 2f - (float) (2.0 - (double) num21 / 5.0 * 2.0);
|
|
float x = num89 - 10f * num21;
|
|
float y = num90 - 10f * num21;
|
|
Microsoft.Xna.Framework.Color headBordersColor = Main.GetPlayerHeadBordersColor(Main.player[index8]);
|
|
Main.MapPlayerRenderer.DrawPlayerHead(Main.Camera, Main.player[index8], new Vector2(x, y), (float) alpha / (float) byte.MaxValue, num75, headBordersColor);
|
|
}
|
|
}
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin();
|
|
}
|
|
if (Main.mapStyle == 1)
|
|
{
|
|
float num91 = (float) (((double) num21 * 0.25 * 2.0 + 1.0) / 3.0);
|
|
if ((double) num91 > 1.0)
|
|
num91 = 1f;
|
|
Main.MapIcons.Draw(new Vector2(num17, num18), new Vector2(num3 + num9, num4 + num10), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(Main.miniMapX, Main.miniMapY, Main.miniMapWidth, Main.miniMapHeight)), num21, num91, ref cursorText);
|
|
CoinLossRevengeSystem.RevengeMarker revengeMarker = NPC.RevengeManager.DrawMapIcons(Main.spriteBatch, new Vector2(num17, num18), new Vector2(num3 + num9, num4 + num10), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(Main.miniMapX, Main.miniMapY, Main.miniMapWidth, Main.miniMapHeight)), num21, num91, ref cursorText);
|
|
this.DrawMiscMapIcons(Main.spriteBatch, new Vector2(num17, num18), new Vector2(num3 + num9, num4 + num10), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(Main.miniMapX, Main.miniMapY, Main.miniMapWidth, Main.miniMapHeight)), num21, num91, ref cursorText);
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, SamplerState.LinearClamp, DepthStencilState.None, RasterizerState.CullCounterClockwise, (Effect) null, transformMatrix2);
|
|
for (int index9 = 0; index9 < 200; ++index9)
|
|
{
|
|
if (Main.npc[index9].active && Main.npc[index9].townNPC)
|
|
{
|
|
ITownNPCProfile profile;
|
|
int npcID = !TownNPCProfiles.Instance.GetProfile(Main.npc[index9].type, out profile) ? NPC.TypeToDefaultHeadIndex(Main.npc[index9].type) : profile.GetHeadTextureIndex(Main.npc[index9]);
|
|
if (npcID > 0)
|
|
{
|
|
SpriteEffects dir = SpriteEffects.None;
|
|
if (Main.npc[index9].direction > 0)
|
|
dir = SpriteEffects.FlipHorizontally;
|
|
float num92 = ((float) (((double) Main.npc[index9].position.X + (double) Main.npc[index9].width / 2.0) / 16.0) - num17) * num21;
|
|
float num93 = ((float) (((double) Main.npc[index9].position.Y + (double) Main.npc[index9].gfxOffY + (double) Main.npc[index9].height / 2.0) / 16.0) - num18) * num21;
|
|
float num94 = num92 + num3;
|
|
float num95 = num93 + num4 - (float) (2.0 * (double) num21 / 5.0);
|
|
float x = num94 + num9;
|
|
float y = num95 + num10;
|
|
if ((double) x > (double) (Main.miniMapX + 12) && (double) x < (double) (Main.miniMapX + Main.miniMapWidth - 16) && (double) y > (double) (Main.miniMapY + 10) && (double) y < (double) (Main.miniMapY + Main.miniMapHeight - 14))
|
|
{
|
|
float num96 = x - (float) (TextureAssets.NpcHead[npcID].Width() / 2) * num91;
|
|
float num97 = y - (float) (TextureAssets.NpcHead[npcID].Height() / 2) * num91;
|
|
float num98 = num96 + (float) TextureAssets.NpcHead[npcID].Width() * num91;
|
|
float num99 = num97 + (float) TextureAssets.NpcHead[npcID].Height() * num91;
|
|
if ((double) Main.mouseX >= (double) num96 && (double) Main.mouseX <= (double) num98 && (double) Main.mouseY >= (double) num97 && (double) Main.mouseY <= (double) num99)
|
|
cursorText = Main.npc[index9].FullName;
|
|
Main.DrawNPCHeadFriendly((Entity) Main.npc[index9], alpha, num91, dir, npcID, x, y);
|
|
}
|
|
}
|
|
}
|
|
if (Main.npc[index9].active && Main.npc[index9].GetBossHeadTextureIndex() != -1)
|
|
{
|
|
float bossHeadRotation = Main.npc[index9].GetBossHeadRotation();
|
|
SpriteEffects headSpriteEffects = Main.npc[index9].GetBossHeadSpriteEffects();
|
|
Vector2 vector2 = Main.npc[index9].Center + new Vector2(0.0f, Main.npc[index9].gfxOffY);
|
|
if (Main.npc[index9].type == 134)
|
|
{
|
|
Vector2 center = Main.npc[index9].Center;
|
|
int num100 = 1;
|
|
for (int index10 = (int) Main.npc[index9].ai[0]; num100 < 15 && Main.npc[index10].active && Main.npc[index10].type >= 134 && Main.npc[index10].type <= 136; index10 = (int) Main.npc[index10].ai[0])
|
|
{
|
|
++num100;
|
|
center += Main.npc[index10].Center;
|
|
}
|
|
vector2 = center / (float) num100;
|
|
}
|
|
int headTextureIndex = Main.npc[index9].GetBossHeadTextureIndex();
|
|
float num101 = (vector2.X / 16f - num17) * num21;
|
|
float num102 = (vector2.Y / 16f - num18) * num21;
|
|
float num103 = num101 + num3;
|
|
float num104 = num102 + num4 - (float) (2.0 * (double) num21 / 5.0);
|
|
float x = num103 + num9;
|
|
float y = num104 + num10;
|
|
if ((double) x > (double) (Main.miniMapX + 12) && (double) x < (double) (Main.miniMapX + Main.miniMapWidth - 16) && (double) y > (double) (Main.miniMapY + 10) && (double) y < (double) (Main.miniMapY + Main.miniMapHeight - 14))
|
|
{
|
|
float num105 = x - (float) (TextureAssets.NpcHeadBoss[headTextureIndex].Width() / 2) * num91;
|
|
float num106 = y - (float) (TextureAssets.NpcHeadBoss[headTextureIndex].Height() / 2) * num91;
|
|
float num107 = num105 + (float) TextureAssets.NpcHeadBoss[headTextureIndex].Width() * num91;
|
|
float num108 = num106 + (float) TextureAssets.NpcHeadBoss[headTextureIndex].Height() * num91;
|
|
if ((double) Main.mouseX >= (double) num105 && (double) Main.mouseX <= (double) num107 && (double) Main.mouseY >= (double) num106 && (double) Main.mouseY <= (double) num108)
|
|
cursorText = Main.npc[index9].GivenOrTypeName;
|
|
Main.DrawNPCHeadBoss((Entity) Main.npc[index9], alpha, num91, bossHeadRotation, headSpriteEffects, headTextureIndex, x, y);
|
|
}
|
|
}
|
|
}
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, SamplerState.LinearClamp, DepthStencilState.None, RasterizerState.CullCounterClockwise, (Effect) null, transformMatrix2);
|
|
for (int index11 = 0; index11 < (int) byte.MaxValue; ++index11)
|
|
{
|
|
if (Main.player[index11].active && (!Main.player[Main.myPlayer].hostile && !Main.player[index11].hostile || Main.player[Main.myPlayer].team == Main.player[index11].team && Main.player[index11].team != 0 || index11 == Main.myPlayer))
|
|
{
|
|
float num109 = ((float) (((double) Main.player[index11].position.X + (double) (Main.player[index11].width / 2)) / 16.0) - num17) * num21;
|
|
float num110 = ((float) (((double) Main.player[index11].position.Y + (double) Main.player[index11].gfxOffY + (double) (Main.player[index11].height / 2)) / 16.0) - num18) * num21;
|
|
float num111 = num109 + num3;
|
|
float num112 = num110 + num4;
|
|
float num113 = num111 - 6f;
|
|
float num114 = num112 - 6f - (float) (2.0 - (double) num21 / 5.0 * 2.0);
|
|
float x1 = num113 + num9;
|
|
float y1 = num114 + num10;
|
|
if (!Main.player[index11].dead && (double) x1 > (double) (Main.miniMapX + 6) && (double) x1 < (double) (Main.miniMapX + Main.miniMapWidth - 16) && (double) y1 > (double) (Main.miniMapY + 6) && (double) y1 < (double) (Main.miniMapY + Main.miniMapHeight - 14))
|
|
{
|
|
Microsoft.Xna.Framework.Color headBordersColor = Main.GetPlayerHeadBordersColor(Main.player[index11]);
|
|
Main.MapPlayerRenderer.DrawPlayerHead(Main.Camera, Main.player[index11], new Vector2(x1, y1), (float) alpha / (float) byte.MaxValue, num91, headBordersColor);
|
|
if (index11 != Main.myPlayer)
|
|
{
|
|
float num115 = (float) ((double) x1 + 4.0 - 14.0 * (double) num91);
|
|
float num116 = (float) ((double) y1 + 2.0 - 14.0 * (double) num91);
|
|
float num117 = num115 + 28f * num91;
|
|
float num118 = num116 + 28f * num91;
|
|
if ((double) Main.mouseX >= (double) num115 && (double) Main.mouseX <= (double) num117 && (double) Main.mouseY >= (double) num116 && (double) Main.mouseY <= (double) num118)
|
|
cursorText = Main.player[index11].name;
|
|
}
|
|
}
|
|
if (Main.player[index11].showLastDeath)
|
|
{
|
|
float num119 = (Main.player[index11].lastDeathPostion.X / 16f - num17) * num21;
|
|
float num120 = (Main.player[index11].lastDeathPostion.Y / 16f - num18) * num21;
|
|
float num121 = num119 + num3;
|
|
float num122 = num120 + num4 - (float) (2.0 - (double) num21 / 5.0 * 2.0);
|
|
float x2 = num121 + num9;
|
|
float y2 = num122 + num10;
|
|
if ((double) x2 > (double) (Main.miniMapX + 8) && (double) x2 < (double) (Main.miniMapX + Main.miniMapWidth - 18) && (double) y2 > (double) (Main.miniMapY + 8) && (double) y2 < (double) (Main.miniMapY + Main.miniMapHeight - 16))
|
|
{
|
|
Main.spriteBatch.Draw(TextureAssets.MapDeath.Value, new Vector2(x2, y2), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.MapDeath.Width(), TextureAssets.MapDeath.Height())), Microsoft.Xna.Framework.Color.White, 0.0f, new Vector2((float) TextureAssets.MapDeath.Width() * 0.5f, (float) TextureAssets.MapDeath.Height() * 0.5f), num91, SpriteEffects.None, 0.0f);
|
|
float num123 = (float) ((double) x2 + 4.0 - 14.0 * (double) num91);
|
|
float num124 = (float) ((double) y2 + 2.0 - 14.0 * (double) num91);
|
|
float num125 = num123 - 4f;
|
|
float num126 = num124 - 4f;
|
|
float num127 = num125 + 28f * num91;
|
|
float num128 = num126 + 28f * num91;
|
|
if ((double) Main.mouseX >= (double) num125 && (double) Main.mouseX <= (double) num127 && (double) Main.mouseY >= (double) num126 && (double) Main.mouseY <= (double) num128)
|
|
index3 = index11;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, DepthStencilState.None, RasterizerState.CullCounterClockwise, (Effect) null, transformMatrix2);
|
|
Main.ActiveMinimapFrame.DrawForeground(Main.spriteBatch);
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, DepthStencilState.None, RasterizerState.CullCounterClockwise, (Effect) null, uiScaleMatrix);
|
|
if (index3 != -1)
|
|
{
|
|
TimeSpan time = DateTime.Now - Main.player[index3].lastDeathTime;
|
|
cursorText = Language.GetTextValue("Game.PlayerDeathTime", (object) Main.player[index3].name, (object) Lang.LocalizedDuration(time, false, false));
|
|
}
|
|
else
|
|
revengeMarker?.UseMouseOver(Main.spriteBatch, ref cursorText);
|
|
}
|
|
}
|
|
if (Main.mapFullscreen)
|
|
{
|
|
int x3 = (int) ((-(double) num15 + (double) Main.mouseX) / (double) num21 + (double) num11);
|
|
int y3 = (int) ((-(double) num16 + (double) Main.mouseY) / (double) num21 + (double) num12);
|
|
bool flag2 = false;
|
|
if ((double) x3 < (double) num11)
|
|
flag2 = true;
|
|
if ((double) x3 >= (double) num13)
|
|
flag2 = true;
|
|
if ((double) y3 < (double) num12)
|
|
flag2 = true;
|
|
if ((double) y3 >= (double) num14)
|
|
flag2 = true;
|
|
if (!flag2 && Main.Map[x3, y3].Light > (byte) 40)
|
|
{
|
|
int type = (int) Main.Map[x3, y3].Type;
|
|
int num129 = (int) MapHelper.tileLookup[21];
|
|
int num130 = (int) MapHelper.tileLookup[441];
|
|
int tileOptionCount1 = MapHelper.tileOptionCounts[21];
|
|
int num131 = (int) MapHelper.tileLookup[467];
|
|
int num132 = (int) MapHelper.tileLookup[468];
|
|
int tileOptionCount2 = MapHelper.tileOptionCounts[467];
|
|
int num133 = (int) MapHelper.tileLookup[88];
|
|
int tileOptionCount3 = MapHelper.tileOptionCounts[88];
|
|
LocalizedText[] chestType = Lang.chestType;
|
|
LocalizedText[] chestType2 = Lang.chestType2;
|
|
if (type >= num129 && type < num129 + tileOptionCount1)
|
|
{
|
|
Tile chestTile = Main.tile[x3, y3];
|
|
if (chestTile != null)
|
|
{
|
|
int x4 = x3;
|
|
int y4 = y3;
|
|
if ((int) chestTile.frameX % 36 != 0)
|
|
--x4;
|
|
if ((int) chestTile.frameY % 36 != 0)
|
|
--y4;
|
|
cursorText = Main.DrawMap_FindChestName(chestType, chestTile, x4, y4);
|
|
}
|
|
}
|
|
else if (type >= num131 && type < num131 + tileOptionCount2)
|
|
{
|
|
Tile chestTile = Main.tile[x3, y3];
|
|
if (chestTile != null)
|
|
{
|
|
int x5 = x3;
|
|
int y5 = y3;
|
|
if ((int) chestTile.frameX % 36 != 0)
|
|
--x5;
|
|
if ((int) chestTile.frameY % 36 != 0)
|
|
--y5;
|
|
cursorText = Main.DrawMap_FindChestName(chestType2, chestTile, x5, y5);
|
|
}
|
|
}
|
|
else if (type >= num130 && type < num130 + tileOptionCount1)
|
|
{
|
|
Tile tile = Main.tile[x3, y3];
|
|
if (tile != null)
|
|
{
|
|
int num134 = x3;
|
|
int num135 = y3;
|
|
if ((int) tile.frameX % 36 != 0)
|
|
{
|
|
int num136 = num134 - 1;
|
|
}
|
|
if ((int) tile.frameY % 36 != 0)
|
|
{
|
|
int num137 = num135 - 1;
|
|
}
|
|
cursorText = chestType[(int) tile.frameX / 36].Value;
|
|
}
|
|
}
|
|
else if (type >= num132 && type < num132 + tileOptionCount2)
|
|
{
|
|
Tile tile = Main.tile[x3, y3];
|
|
if (tile != null)
|
|
{
|
|
int num138 = x3;
|
|
int num139 = y3;
|
|
if ((int) tile.frameX % 36 != 0)
|
|
{
|
|
int num140 = num138 - 1;
|
|
}
|
|
if ((int) tile.frameY % 36 != 0)
|
|
{
|
|
int num141 = num139 - 1;
|
|
}
|
|
cursorText = chestType2[(int) tile.frameX / 36].Value;
|
|
}
|
|
}
|
|
else if (type >= num133 && type < num133 + tileOptionCount3)
|
|
{
|
|
Tile tile = Main.tile[x3, y3];
|
|
if (tile != null)
|
|
{
|
|
int num142 = x3;
|
|
int num143 = y3;
|
|
int num144 = (int) tile.frameX % 54 / 18;
|
|
int X = num142 - num144;
|
|
if ((int) tile.frameY % 36 != 0)
|
|
--num143;
|
|
int Y = num143;
|
|
int chest = Chest.FindChest(X, Y);
|
|
cursorText = chest >= 0 ? (!(Main.chest[chest].name != "") ? Lang.dresserType[(int) tile.frameX / 54].Value : Lang.dresserType[(int) tile.frameX / 54].Value + ": " + Main.chest[chest].name) : Lang.dresserType[0].Value;
|
|
}
|
|
}
|
|
else
|
|
cursorText = Lang.GetMapObjectName(type);
|
|
}
|
|
float num145;
|
|
if (((double) num21 * 0.25 * 2.0 + 1.0) / 3.0 > 1.0)
|
|
num145 = 1f;
|
|
num145 = 1f;
|
|
float uiScale = Main.UIScale;
|
|
CoinLossRevengeSystem.RevengeMarker revengeMarker = NPC.RevengeManager.DrawMapIcons(Main.spriteBatch, Vector2.Zero, new Vector2(num15 - 10f * num21, num16 - 10f * num21), new Microsoft.Xna.Framework.Rectangle?(), num21, uiScale, ref cursorText);
|
|
this.DrawMiscMapIcons(Main.spriteBatch, Vector2.Zero, new Vector2(num15 - 10f * num21, num16 - 10f * num21), new Microsoft.Xna.Framework.Rectangle?(), num21, uiScale, ref cursorText);
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend);
|
|
for (int index12 = 0; index12 < 200; ++index12)
|
|
{
|
|
if (Main.npc[index12].active && Main.npc[index12].townNPC)
|
|
{
|
|
ITownNPCProfile profile;
|
|
int npcID = !TownNPCProfiles.Instance.GetProfile(Main.npc[index12].type, out profile) ? NPC.TypeToDefaultHeadIndex(Main.npc[index12].type) : profile.GetHeadTextureIndex(Main.npc[index12]);
|
|
if (npcID > 0)
|
|
{
|
|
SpriteEffects dir = SpriteEffects.None;
|
|
if (Main.npc[index12].direction > 0)
|
|
dir = SpriteEffects.FlipHorizontally;
|
|
float num146 = (float) (((double) Main.npc[index12].position.X + (double) (Main.npc[index12].width / 2)) / 16.0) * num21;
|
|
float num147 = (float) (((double) Main.npc[index12].position.Y + (double) Main.npc[index12].gfxOffY + (double) (Main.npc[index12].height / 2)) / 16.0) * num21;
|
|
float num148 = num146 + num15;
|
|
float num149 = num147 + num16;
|
|
float x6 = num148 - 10f * num21;
|
|
float y6 = num149 - 10f * num21;
|
|
float num150 = x6 - (float) (TextureAssets.NpcHead[npcID].Width() / 2) * uiScale;
|
|
float num151 = y6 - (float) (TextureAssets.NpcHead[npcID].Height() / 2) * uiScale;
|
|
float num152 = num150 + (float) TextureAssets.NpcHead[npcID].Width() * uiScale;
|
|
float num153 = num151 + (float) TextureAssets.NpcHead[npcID].Height() * uiScale;
|
|
if ((double) Main.mouseX >= (double) num150 && (double) Main.mouseX <= (double) num152 && (double) Main.mouseY >= (double) num151 && (double) Main.mouseY <= (double) num153)
|
|
cursorText = Main.npc[index12].FullName;
|
|
Main.DrawNPCHeadFriendly((Entity) Main.npc[index12], alpha, uiScale, dir, npcID, x6, y6);
|
|
}
|
|
}
|
|
if (Main.npc[index12].active && Main.npc[index12].GetBossHeadTextureIndex() != -1)
|
|
{
|
|
float bossHeadRotation = Main.npc[index12].GetBossHeadRotation();
|
|
SpriteEffects headSpriteEffects = Main.npc[index12].GetBossHeadSpriteEffects();
|
|
Vector2 vector2 = Main.npc[index12].Center + new Vector2(0.0f, Main.npc[index12].gfxOffY);
|
|
if (Main.npc[index12].type == 134)
|
|
{
|
|
Vector2 center = Main.npc[index12].Center;
|
|
int num154 = 1;
|
|
for (int index13 = (int) Main.npc[index12].ai[0]; num154 < 15 && Main.npc[index13].active && Main.npc[index13].type >= 134 && Main.npc[index13].type <= 136; index13 = (int) Main.npc[index13].ai[0])
|
|
{
|
|
++num154;
|
|
center += Main.npc[index13].Center;
|
|
}
|
|
vector2 = center / (float) num154;
|
|
}
|
|
int headTextureIndex = Main.npc[index12].GetBossHeadTextureIndex();
|
|
float num155 = vector2.X / 16f * num21;
|
|
float num156 = vector2.Y / 16f * num21;
|
|
float num157 = num155 + num15;
|
|
float num158 = num156 + num16;
|
|
float x7 = num157 - 10f * num21;
|
|
float y7 = num158 - 10f * num21;
|
|
Main.DrawNPCHeadBoss((Entity) Main.npc[index12], alpha, uiScale, bossHeadRotation, headSpriteEffects, headTextureIndex, x7, y7);
|
|
float num159 = x7 - (float) (TextureAssets.NpcHeadBoss[headTextureIndex].Width() / 2) * uiScale;
|
|
float num160 = y7 - (float) (TextureAssets.NpcHeadBoss[headTextureIndex].Height() / 2) * uiScale;
|
|
float num161 = num159 + (float) TextureAssets.NpcHeadBoss[headTextureIndex].Width() * uiScale;
|
|
float num162 = num160 + (float) TextureAssets.NpcHeadBoss[headTextureIndex].Height() * uiScale;
|
|
if ((double) Main.mouseX >= (double) num159 && (double) Main.mouseX <= (double) num161 && (double) Main.mouseY >= (double) num160 && (double) Main.mouseY <= (double) num162)
|
|
cursorText = Main.npc[index12].GivenOrTypeName;
|
|
}
|
|
}
|
|
bool flag3 = false;
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend);
|
|
for (int i = 0; i < (int) byte.MaxValue; ++i)
|
|
{
|
|
if (Main.player[i].active && (!Main.player[Main.myPlayer].hostile && !Main.player[i].hostile || Main.player[Main.myPlayer].team == Main.player[i].team && Main.player[i].team != 0 || i == Main.myPlayer) && Main.player[i].showLastDeath && Main.DrawPlayerDeathMarker(num15, num16, num21, num17, num18, uiScale, i))
|
|
index3 = i;
|
|
}
|
|
if (index3 != -1)
|
|
{
|
|
TimeSpan time = DateTime.Now - Main.player[index3].lastDeathTime;
|
|
cursorText = Language.GetTextValue("Game.PlayerDeathTime", (object) Main.player[index3].name, (object) Lang.LocalizedDuration(time, false, false));
|
|
}
|
|
else if (revengeMarker != null)
|
|
{
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, DepthStencilState.None, RasterizerState.CullCounterClockwise, (Effect) null, uiScaleMatrix);
|
|
revengeMarker.UseMouseOver(Main.spriteBatch, ref cursorText, uiScale);
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend);
|
|
}
|
|
for (int index14 = 0; index14 < (int) byte.MaxValue; ++index14)
|
|
{
|
|
if (Main.player[index14].active && (!Main.player[Main.myPlayer].hostile && !Main.player[index14].hostile || Main.player[Main.myPlayer].team == Main.player[index14].team && Main.player[index14].team != 0 || index14 == Main.myPlayer))
|
|
{
|
|
float num163 = ((float) (((double) Main.player[index14].position.X + (double) (Main.player[index14].width / 2)) / 16.0) - num17) * num21;
|
|
float num164 = ((float) (((double) Main.player[index14].position.Y + (double) Main.player[index14].gfxOffY + (double) (Main.player[index14].height / 2)) / 16.0) - num18) * num21;
|
|
float num165 = num163 + num15;
|
|
float num166 = num164 + num16;
|
|
float num167 = num165 - 6f;
|
|
float num168 = num166 - 2f - (float) (2.0 - (double) num21 / 5.0 * 2.0);
|
|
float x8 = num167 - 10f * num21;
|
|
float y8 = num168 - 10f * num21;
|
|
float num169 = (float) ((double) x8 + 4.0 - 14.0 * (double) uiScale);
|
|
float num170 = (float) ((double) y8 + 2.0 - 14.0 * (double) uiScale);
|
|
float num171 = num169 + 28f * uiScale;
|
|
float num172 = num170 + 28f * uiScale;
|
|
if (!Main.player[index14].dead)
|
|
{
|
|
Microsoft.Xna.Framework.Color headBordersColor = Main.GetPlayerHeadBordersColor(Main.player[index14]);
|
|
Main.MapPlayerRenderer.DrawPlayerHead(Main.Camera, Main.player[index14], new Vector2(x8, y8), (float) alpha / (float) byte.MaxValue, uiScale, headBordersColor);
|
|
if ((double) Main.mouseX >= (double) num169 && (double) Main.mouseX <= (double) num171 && (double) Main.mouseY >= (double) num170 && (double) Main.mouseY <= (double) num172)
|
|
{
|
|
cursorText = Main.player[index14].name;
|
|
if (index14 != Main.myPlayer && Main.player[Main.myPlayer].team > 0 && Main.player[Main.myPlayer].team == Main.player[index14].team && Main.netMode == 1 && Main.player[Main.myPlayer].HasUnityPotion() && !flag3 && !Main.cancelWormHole)
|
|
{
|
|
flag3 = true;
|
|
if (!this.unityMouseOver)
|
|
SoundEngine.PlaySound(12);
|
|
this.unityMouseOver = true;
|
|
Microsoft.Xna.Framework.Color favoriteColor = Main.OurFavoriteColor;
|
|
Main.MapPlayerRenderer.DrawPlayerHead(Main.Camera, Main.player[index14], new Vector2(x8, y8), scale: (uiScale + 0.5f), borderColor: favoriteColor);
|
|
cursorText = Language.GetTextValue("Game.TeleportTo", (object) Main.player[index14].name);
|
|
if (Main.mouseLeft && Main.mouseLeftRelease)
|
|
{
|
|
Main.mouseLeftRelease = false;
|
|
Main.mapFullscreen = false;
|
|
Main.player[Main.myPlayer].UnityTeleport(Main.player[index14].position);
|
|
Main.player[Main.myPlayer].TakeUnityPotion();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
Main.cancelWormHole = false;
|
|
Main.MapIcons.Draw(Vector2.Zero, new Vector2(num15 - 10f * num21, num16 - 10f * num21), new Microsoft.Xna.Framework.Rectangle?(), num21, uiScale, ref cursorText);
|
|
if (!flag3 && this.unityMouseOver)
|
|
this.unityMouseOver = false;
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, Main.SamplerStateForCursor, DepthStencilState.None, RasterizerState.CullCounterClockwise, (Effect) null, Main.UIScaleMatrix);
|
|
PlayerInput.SetZoom_UI();
|
|
int num173 = 10;
|
|
int num174 = Main.screenHeight - 40;
|
|
if (Main.showFrameRate)
|
|
num174 -= 15;
|
|
int index15 = 0;
|
|
int num175 = 130;
|
|
if (Main.mouseX >= num173 && Main.mouseX <= num173 + 32 && Main.mouseY >= num174 && Main.mouseY <= num174 + 30)
|
|
{
|
|
num175 = (int) byte.MaxValue;
|
|
index15 += 4;
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
if (Main.mouseLeft && Main.mouseLeftRelease)
|
|
{
|
|
SoundEngine.PlaySound(10);
|
|
Main.mapFullscreen = false;
|
|
}
|
|
}
|
|
Main.spriteBatch.Draw(TextureAssets.MapIcon[index15].Value, new Vector2((float) num173, (float) num174), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.MapIcon[index15].Width(), TextureAssets.MapIcon[index15].Height())), new Microsoft.Xna.Framework.Color(num175, num175, num175, num175), 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
Main.DrawCursor(Main.DrawThickCursor());
|
|
}
|
|
Main.mouseX = mouseX;
|
|
Main.mouseY = mouseY;
|
|
float t1 = 3f;
|
|
Utils.Swap<float>(ref t1, ref Main.inventoryScale);
|
|
if (cursorText != "")
|
|
this.MouseText(cursorText);
|
|
Utils.Swap<float>(ref t1, ref Main.inventoryScale);
|
|
Main.spriteBatch.End();
|
|
try
|
|
{
|
|
if ((double) num17 < (double) num11)
|
|
num15 += (num17 - num11) * num21;
|
|
if ((double) num18 < (double) num12)
|
|
num16 += (num18 - num12) * num21;
|
|
if (Main.mapFullscreen)
|
|
{
|
|
if (Main.OnPostFullscreenMapDraw != null)
|
|
Main.OnPostFullscreenMapDraw(new Vector2(num15, num16), num21);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
TimeLogger.DrawException(ex);
|
|
}
|
|
Main.spriteBatch.Begin();
|
|
PlayerInput.SetZoom_Unscaled();
|
|
TimeLogger.DetailedDrawTime(9);
|
|
}
|
|
|
|
private static void DrawMapFullscreenBackground(
|
|
Vector2 screenPosition,
|
|
int screenWidth,
|
|
int screenHeight)
|
|
{
|
|
Asset<Texture2D> mapBg = TextureAssets.MapBGs[0];
|
|
int index = -1;
|
|
Microsoft.Xna.Framework.Color color = Microsoft.Xna.Framework.Color.White;
|
|
int wall = (int) Main.tile[(int) ((double) Main.player[Main.myPlayer].Center.X / 16.0), (int) ((double) Main.player[Main.myPlayer].Center.Y / 16.0)].wall;
|
|
if ((double) screenPosition.Y > (double) ((Main.maxTilesY - 232) * 16))
|
|
index = 2;
|
|
else if (Main.player[Main.myPlayer].ZoneDungeon)
|
|
index = 4;
|
|
else if (wall == 87)
|
|
index = 13;
|
|
else if ((double) screenPosition.Y > Main.worldSurface * 16.0)
|
|
{
|
|
switch (wall)
|
|
{
|
|
case 62:
|
|
case 263:
|
|
index = 18;
|
|
break;
|
|
case 86:
|
|
case 108:
|
|
index = 15;
|
|
break;
|
|
case 178:
|
|
case 183:
|
|
index = 17;
|
|
break;
|
|
case 180:
|
|
case 184:
|
|
index = 16;
|
|
break;
|
|
default:
|
|
index = !Main.player[Main.myPlayer].ZoneGlowshroom ? (!Main.player[Main.myPlayer].ZoneCorrupt ? (!Main.player[Main.myPlayer].ZoneCrimson ? (!Main.player[Main.myPlayer].ZoneHallow ? (!Main.player[Main.myPlayer].ZoneSnow ? (!Main.player[Main.myPlayer].ZoneJungle ? (!Main.player[Main.myPlayer].ZoneDesert ? (!Main.player[Main.myPlayer].ZoneRockLayerHeight ? 1 : 31) : 14) : 12) : 3) : (!Main.player[Main.myPlayer].ZoneDesert ? (!Main.player[Main.myPlayer].ZoneSnow ? 21 : 35) : 41)) : (!Main.player[Main.myPlayer].ZoneDesert ? (!Main.player[Main.myPlayer].ZoneSnow ? 23 : 34) : 40)) : (!Main.player[Main.myPlayer].ZoneDesert ? (!Main.player[Main.myPlayer].ZoneSnow ? 22 : 33) : 39)) : 20;
|
|
break;
|
|
}
|
|
}
|
|
else if (Main.player[Main.myPlayer].ZoneGlowshroom)
|
|
{
|
|
index = 19;
|
|
}
|
|
else
|
|
{
|
|
color = Main.ColorOfTheSkies;
|
|
int num = (int) (((double) screenPosition.X + (double) (screenWidth / 2)) / 16.0);
|
|
if (Main.player[Main.myPlayer].ZoneSkyHeight)
|
|
index = 32;
|
|
else if (Main.player[Main.myPlayer].ZoneCorrupt)
|
|
index = !Main.player[Main.myPlayer].ZoneDesert ? 5 : 36;
|
|
else if (Main.player[Main.myPlayer].ZoneCrimson)
|
|
index = !Main.player[Main.myPlayer].ZoneDesert ? 6 : 37;
|
|
else if (Main.player[Main.myPlayer].ZoneHallow)
|
|
index = !Main.player[Main.myPlayer].ZoneDesert ? 7 : 38;
|
|
else if ((double) screenPosition.Y / 16.0 < Main.worldSurface + 10.0 && (num < 380 || num > Main.maxTilesX - 380))
|
|
index = 10;
|
|
else if (Main.player[Main.myPlayer].ZoneSnow)
|
|
index = 11;
|
|
else if (Main.player[Main.myPlayer].ZoneJungle)
|
|
index = 8;
|
|
else if (Main.player[Main.myPlayer].ZoneDesert)
|
|
index = 9;
|
|
else if (Main.bloodMoon)
|
|
{
|
|
color *= 2f;
|
|
index = 25;
|
|
}
|
|
else if (Main.player[Main.myPlayer].ZoneGraveyard)
|
|
index = 26;
|
|
}
|
|
if (index > -1)
|
|
mapBg = TextureAssets.MapBGs[index];
|
|
Main.spriteBatch.Draw(mapBg.Value, new Microsoft.Xna.Framework.Rectangle(0, 0, screenWidth, screenHeight), color);
|
|
}
|
|
|
|
private static bool DrawPlayerDeathMarker(
|
|
float X,
|
|
float Y,
|
|
float scale,
|
|
float left,
|
|
float top,
|
|
float headScale,
|
|
int i)
|
|
{
|
|
float num1 = (Main.player[i].lastDeathPostion.X / 16f - left) * scale;
|
|
float num2 = (Main.player[i].lastDeathPostion.Y / 16f - top) * scale;
|
|
float num3 = num1 + X;
|
|
float num4 = num2 + Y - (float) (2.0 - (double) scale / 5.0 * 2.0);
|
|
float x = num3 - 10f * scale;
|
|
float y = num4 - 10f * scale;
|
|
Main.spriteBatch.Draw(TextureAssets.MapDeath.Value, new Vector2(x, y), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.MapDeath.Width(), TextureAssets.MapDeath.Height())), Microsoft.Xna.Framework.Color.White, 0.0f, new Vector2((float) TextureAssets.MapDeath.Width() * 0.5f, (float) TextureAssets.MapDeath.Height() * 0.5f), headScale, SpriteEffects.None, 0.0f);
|
|
float num5 = (float) ((double) x + 4.0 - 14.0 * (double) headScale);
|
|
float num6 = (float) ((double) y + 2.0 - 14.0 * (double) headScale);
|
|
float num7 = num5 + 28f * headScale;
|
|
float num8 = num6 + 28f * headScale;
|
|
return (double) Main.mouseX >= (double) num5 && (double) Main.mouseX <= (double) num7 && (double) Main.mouseY >= (double) num6 && (double) Main.mouseY <= (double) num8;
|
|
}
|
|
|
|
private void DrawMiscMapIcons(
|
|
SpriteBatch spriteBatch,
|
|
Vector2 mapTopLeft,
|
|
Vector2 mapX2Y2AndOff,
|
|
Microsoft.Xna.Framework.Rectangle? mapRect,
|
|
float mapScale,
|
|
float drawScale,
|
|
ref string mouseTextString)
|
|
{
|
|
this.DrawMapIcons_PotionOfReturnHomePosition(spriteBatch, mapTopLeft, mapX2Y2AndOff, mapRect, mapScale, drawScale, ref mouseTextString);
|
|
this.DrawMapIcons_PotionOfReturnAppearAfterUsePosition(spriteBatch, mapTopLeft, mapX2Y2AndOff, mapRect, mapScale, drawScale, ref mouseTextString);
|
|
this.DrawMapIcons_LastGolfballHit(spriteBatch, mapTopLeft, mapX2Y2AndOff, mapRect, mapScale, drawScale, ref mouseTextString);
|
|
}
|
|
|
|
private void DrawMapIcons_PotionOfReturnAppearAfterUsePosition(
|
|
SpriteBatch spriteBatch,
|
|
Vector2 mapTopLeft,
|
|
Vector2 mapX2Y2AndOff,
|
|
Microsoft.Xna.Framework.Rectangle? mapRect,
|
|
float mapScale,
|
|
float drawScale,
|
|
ref string mouseTextString)
|
|
{
|
|
Vector2? originalUsePosition = Main.LocalPlayer.PotionOfReturnOriginalUsePosition;
|
|
if (!originalUsePosition.HasValue)
|
|
return;
|
|
Vector2? nullable = originalUsePosition;
|
|
Vector2 vector2_1 = new Vector2(0.0f, (float) (-Main.LocalPlayer.height / 2));
|
|
Vector2 vector2_2 = (((nullable.HasValue ? new Vector2?(nullable.GetValueOrDefault() + vector2_1) : new Vector2?()).Value / 16f - mapTopLeft) * mapScale + mapX2Y2AndOff).Floor();
|
|
if (mapRect.HasValue && !mapRect.Value.Contains(vector2_2.ToPoint()))
|
|
return;
|
|
Texture2D texture2D = TextureAssets.Extra[173].Value;
|
|
Microsoft.Xna.Framework.Rectangle r = texture2D.Frame();
|
|
spriteBatch.Draw(texture2D, vector2_2, new Microsoft.Xna.Framework.Rectangle?(r), Microsoft.Xna.Framework.Color.White, 0.0f, r.Size() / 2f, drawScale, SpriteEffects.None, 0.0f);
|
|
if (!Utils.CenteredRectangle(vector2_2, r.Size() * drawScale).Contains(Main.MouseScreen.ToPoint()))
|
|
return;
|
|
mouseTextString = Language.GetTextValue("GameUI.PotionOfReturnExitPortal");
|
|
Vector2 vector2_3 = Main.MouseScreen + new Vector2(-28f) + new Vector2(4f, 0.0f);
|
|
}
|
|
|
|
private void DrawMapIcons_PotionOfReturnHomePosition(
|
|
SpriteBatch spriteBatch,
|
|
Vector2 mapTopLeft,
|
|
Vector2 mapX2Y2AndOff,
|
|
Microsoft.Xna.Framework.Rectangle? mapRect,
|
|
float mapScale,
|
|
float drawScale,
|
|
ref string mouseTextString)
|
|
{
|
|
Vector2? returnHomePosition = Main.LocalPlayer.PotionOfReturnHomePosition;
|
|
if (!returnHomePosition.HasValue)
|
|
return;
|
|
Vector2? nullable = returnHomePosition;
|
|
Vector2 vector2_1 = new Vector2(0.0f, (float) (-Main.LocalPlayer.height / 2));
|
|
Vector2 vector2_2 = (((nullable.HasValue ? new Vector2?(nullable.GetValueOrDefault() + vector2_1) : new Vector2?()).Value / 16f - mapTopLeft) * mapScale + mapX2Y2AndOff).Floor();
|
|
if (mapRect.HasValue && !mapRect.Value.Contains(vector2_2.ToPoint()))
|
|
return;
|
|
Texture2D texture2D = TextureAssets.Extra[175].Value;
|
|
Microsoft.Xna.Framework.Rectangle r = texture2D.Frame();
|
|
spriteBatch.Draw(texture2D, vector2_2, new Microsoft.Xna.Framework.Rectangle?(r), Microsoft.Xna.Framework.Color.White, 0.0f, r.Size() / 2f, drawScale, SpriteEffects.None, 0.0f);
|
|
if (!Utils.CenteredRectangle(vector2_2, r.Size() * drawScale).Contains(Main.MouseScreen.ToPoint()))
|
|
return;
|
|
mouseTextString = Language.GetTextValue("GameUI.PotionOfReturnHomePortal");
|
|
Vector2 vector2_3 = Main.MouseScreen + new Vector2(-28f) + new Vector2(4f, 0.0f);
|
|
}
|
|
|
|
private void DrawMapIcons_LastGolfballHit(
|
|
SpriteBatch spriteBatch,
|
|
Vector2 mapTopLeft,
|
|
Vector2 mapX2Y2AndOff,
|
|
Microsoft.Xna.Framework.Rectangle? mapRect,
|
|
float mapScale,
|
|
float drawScale,
|
|
ref string mouseTextString)
|
|
{
|
|
Projectile lastHitBall = Main.LocalGolfState.GetLastHitBall();
|
|
if (lastHitBall == null)
|
|
return;
|
|
Vector2 vector2_1 = ((lastHitBall.Center / 16f - mapTopLeft) * mapScale + mapX2Y2AndOff).Floor();
|
|
if (mapRect.HasValue && !mapRect.Value.Contains(vector2_1.ToPoint()))
|
|
return;
|
|
Texture2D texture2D1 = TextureAssets.Extra[176].Value;
|
|
Microsoft.Xna.Framework.Rectangle r1 = texture2D1.Frame();
|
|
spriteBatch.Draw(texture2D1, vector2_1, new Microsoft.Xna.Framework.Rectangle?(r1), Microsoft.Xna.Framework.Color.White, 0.0f, r1.Size() / 2f, drawScale, SpriteEffects.None, 0.0f);
|
|
Microsoft.Xna.Framework.Rectangle rectangle = Utils.CenteredRectangle(vector2_1, r1.Size() * drawScale);
|
|
this.LoadProjectile(lastHitBall.type);
|
|
Texture2D texture2D2 = TextureAssets.Projectile[lastHitBall.type].Value;
|
|
Microsoft.Xna.Framework.Rectangle r2 = texture2D2.Frame();
|
|
spriteBatch.Draw(texture2D2, vector2_1, new Microsoft.Xna.Framework.Rectangle?(r2), Microsoft.Xna.Framework.Color.White, 0.0f, r2.Size() / 2f, drawScale, SpriteEffects.None, 0.0f);
|
|
if (!rectangle.Contains(Main.MouseScreen.ToPoint()))
|
|
return;
|
|
mouseTextString = lastHitBall.Name;
|
|
Vector2 vector2_2 = Main.MouseScreen + new Vector2(-28f) + new Vector2(4f, 0.0f);
|
|
}
|
|
|
|
public static void TriggerPing(Vector2 position)
|
|
{
|
|
Main.Pings.Add(position);
|
|
if (Main.netMode != 1)
|
|
return;
|
|
NetManager.Instance.SendToServer(NetPingModule.Serialize(position));
|
|
}
|
|
|
|
private static void DrawNPCHeadFriendly(
|
|
Entity theNPC,
|
|
byte alpha,
|
|
float headScale,
|
|
SpriteEffects dir,
|
|
int npcID,
|
|
float x,
|
|
float y)
|
|
{
|
|
Main.TownNPCHeadRenderer.DrawWithOutlines(theNPC, npcID, new Vector2(x, y), new Microsoft.Xna.Framework.Color((int) alpha, (int) alpha, (int) alpha, (int) alpha), 0.0f, headScale, dir);
|
|
}
|
|
|
|
private static void DrawNPCHeadBoss(
|
|
Entity theNPC,
|
|
byte alpha,
|
|
float headScale,
|
|
float rotation,
|
|
SpriteEffects effects,
|
|
int npcID,
|
|
float x,
|
|
float y)
|
|
{
|
|
Main.BossNPCHeadRenderer.DrawWithOutlines(theNPC, npcID, new Vector2(x, y), new Microsoft.Xna.Framework.Color((int) alpha, (int) alpha, (int) alpha, (int) alpha), 0.0f, headScale, effects);
|
|
}
|
|
|
|
private static void DrawWithOutlines(
|
|
Entity entity,
|
|
Texture2D tex,
|
|
Vector2 position,
|
|
Microsoft.Xna.Framework.Rectangle? rect,
|
|
Microsoft.Xna.Framework.Color color,
|
|
float rotation,
|
|
Vector2 origin,
|
|
float scale,
|
|
SpriteEffects effects)
|
|
{
|
|
float num1 = 2f * scale;
|
|
Microsoft.Xna.Framework.Color white = Microsoft.Xna.Framework.Color.White;
|
|
int colorOnlyShaderIndex = ContentSamples.CommonlyUsedContentSamples.ColorOnlyShaderIndex;
|
|
DrawData drawData = new DrawData(tex, position, rect, color, rotation, origin, scale, effects, 0);
|
|
GameShaders.Armor.Apply(colorOnlyShaderIndex, entity, new DrawData?(drawData));
|
|
Microsoft.Xna.Framework.Color color1 = Microsoft.Xna.Framework.Color.Black * ((float) color.A / (float) byte.MaxValue) * ((float) color.A / (float) byte.MaxValue);
|
|
Microsoft.Xna.Framework.Color color2 = white * ((float) color.A / (float) byte.MaxValue) * ((float) color.A / (float) byte.MaxValue);
|
|
int num2 = 2;
|
|
for (int index1 = -num2; index1 <= num2; ++index1)
|
|
{
|
|
for (int index2 = -num2; index2 <= num2; ++index2)
|
|
{
|
|
if (Math.Abs(index1) + Math.Abs(index2) == num2)
|
|
{
|
|
Vector2 vector2 = new Vector2((float) index1 * num1, (float) index2 * num1).RotatedBy((double) rotation);
|
|
Main.spriteBatch.Draw(tex, position + vector2, rect, color1, rotation, origin, scale, effects, 0.0f);
|
|
}
|
|
}
|
|
}
|
|
int num3 = 1;
|
|
Vector2 zero = Vector2.Zero;
|
|
for (int index3 = -num3; index3 <= num3; ++index3)
|
|
{
|
|
for (int index4 = -num3; index4 <= num3; ++index4)
|
|
{
|
|
if (Math.Abs(index3) + Math.Abs(index4) == num3)
|
|
{
|
|
Vector2 vector2 = new Vector2((float) index3 * num1, (float) index4 * num1).RotatedBy((double) rotation);
|
|
Main.spriteBatch.Draw(tex, position + vector2, rect, color2, rotation, origin, scale, effects, 0.0f);
|
|
}
|
|
}
|
|
}
|
|
Main.pixelShader.CurrentTechnique.Passes[0].Apply();
|
|
Main.spriteBatch.Draw(tex, position, rect, color, rotation, origin, scale, effects, 0.0f);
|
|
}
|
|
|
|
public static Microsoft.Xna.Framework.Color GetPlayerHeadBordersColor(Player plr) => plr.ghost || plr.dead || plr.whoAmI != Main.myPlayer && plr.hostile && (plr.team != Main.LocalPlayer.team || plr.team == 0) ? Microsoft.Xna.Framework.Color.Transparent : Main.teamColor[plr.team];
|
|
|
|
private static string DrawMap_FindChestName(
|
|
LocalizedText[] chestNames,
|
|
Tile chestTile,
|
|
int x,
|
|
int y,
|
|
int fullTileWidth = 36)
|
|
{
|
|
int chestByGuessing = Chest.FindChestByGuessing(x, y);
|
|
return chestByGuessing >= 0 ? (!(Main.chest[chestByGuessing].name != "") ? chestNames[(int) chestTile.frameX / fullTileWidth].Value : chestNames[(int) chestTile.frameX / fullTileWidth].ToString() + ": " + Main.chest[chestByGuessing].name) : chestNames[0].Value;
|
|
}
|
|
|
|
public void DrawSimpleSurfaceBackground(Vector2 areaPosition, int areaWidth, int areaHeight)
|
|
{
|
|
float val2 = (float) (Main.worldSurface + 1.0) * 16f;
|
|
float num1 = Math.Min(areaPosition.Y + (float) areaHeight, val2) - areaPosition.Y;
|
|
float y = areaPosition.Y;
|
|
float num2 = areaPosition.Y + num1;
|
|
Vector4 vector4_1 = Main.ColorOfTheSkies.ToVector4();
|
|
Vector4 vector4_2 = new Microsoft.Xna.Framework.Color(53, 43, 243).ToVector4() * vector4_1;
|
|
Vector4 vector4_3 = new Microsoft.Xna.Framework.Color(132, 170, 248).ToVector4() * vector4_1;
|
|
Microsoft.Xna.Framework.Color color1 = new Microsoft.Xna.Framework.Color(Vector4.Lerp(vector4_2, vector4_3, y / val2));
|
|
Microsoft.Xna.Framework.Color color2 = new Microsoft.Xna.Framework.Color(Vector4.Lerp(vector4_2, vector4_3, num2 / val2));
|
|
VertexColors colors;
|
|
colors.TopLeftColor = color1;
|
|
colors.TopRightColor = color1;
|
|
colors.BottomLeftColor = color2;
|
|
colors.BottomRightColor = color2;
|
|
Main.tileBatch.Draw(TextureAssets.BlackTile.Value, new Vector4(0.0f, 0.0f, (float) areaWidth, num1), colors);
|
|
float w = (float) areaHeight - num1;
|
|
if ((double) w <= 0.0)
|
|
return;
|
|
colors.TopLeftColor = Microsoft.Xna.Framework.Color.Black;
|
|
colors.TopRightColor = Microsoft.Xna.Framework.Color.Black;
|
|
colors.BottomLeftColor = Microsoft.Xna.Framework.Color.Black;
|
|
colors.BottomRightColor = Microsoft.Xna.Framework.Color.Black;
|
|
Main.tileBatch.Draw(TextureAssets.BlackTile.Value, new Vector4(0.0f, num1, (float) areaWidth, w), colors);
|
|
}
|
|
|
|
public void DrawCapture(Microsoft.Xna.Framework.Rectangle area, CaptureSettings settings)
|
|
{
|
|
float[] bgAlphaFrontLayer = Main.bgAlphaFrontLayer;
|
|
Main.bgAlphaFrontLayer = new float[bgAlphaFrontLayer.Length];
|
|
float[] alphaFarBackLayer = Main.bgAlphaFarBackLayer;
|
|
Main.bgAlphaFarBackLayer = new float[alphaFarBackLayer.Length];
|
|
this.UpdateBGVisibility_BackLayer(new int?(settings.Biome.BackgroundIndex), new float?(1f));
|
|
this.UpdateBGVisibility_FrontLayer(new int?(settings.Biome.BackgroundIndex), new float?(1f));
|
|
float[] array = ((IEnumerable<float>) Main.liquidAlpha).ToArray<float>();
|
|
int holyTileCount = Main.SceneMetrics.HolyTileCount;
|
|
Main.SceneMetrics.HolyTileCount = settings.Biome.BackgroundIndex == 6 ? SceneMetrics.HallowTileMax : 0;
|
|
int offScreenRange = Main.offScreenRange;
|
|
Main.offScreenRange = 0;
|
|
SpriteViewMatrix gameViewMatrix = Main.GameViewMatrix;
|
|
Main.GameViewMatrix = new SpriteViewMatrix(this.GraphicsDevice);
|
|
Main.Rasterizer = RasterizerState.CullCounterClockwise;
|
|
bool captureEntities = settings.CaptureEntities;
|
|
bool captureBackground = settings.CaptureBackground;
|
|
CaptureBiome biome = settings.Biome;
|
|
Vector2 screenPosition1 = Main.screenPosition;
|
|
int screenWidth1 = Main.screenWidth;
|
|
int screenHeight1 = Main.screenHeight;
|
|
float cloudAlpha = Main.cloudAlpha;
|
|
bool captureMech = settings.CaptureMech;
|
|
Main.screenWidth = area.Width << 4;
|
|
Main.screenHeight = area.Height << 4;
|
|
Main.screenPosition = new Vector2((float) (area.X * 16), (float) (area.Y * 16));
|
|
Main.cloudAlpha = 0.0f;
|
|
for (int index = 0; index <= 10; ++index)
|
|
{
|
|
if (index != 1)
|
|
Main.liquidAlpha[index] = index == biome.WaterStyle ? 1f : 0.0f;
|
|
}
|
|
int x1 = area.X;
|
|
int y1 = area.Y;
|
|
int num1 = area.X + Main.screenWidth / 16;
|
|
int num2 = area.Y + Main.screenHeight / 16;
|
|
float tempMushroomInfluence = (float) (biome.TileColor == CaptureBiome.TileColorStyle.Mushroom).ToInt();
|
|
Microsoft.Xna.Framework.Color sunColor;
|
|
Microsoft.Xna.Framework.Color moonColor;
|
|
Main.SetBackColor(new Main.InfoToSetBackColor()
|
|
{
|
|
isInGameMenuOrIsServer = Main.gameMenu || Main.netMode == 2,
|
|
CorruptionBiomeInfluence = (float) (biome.TileColor == CaptureBiome.TileColorStyle.Corrupt).ToInt(),
|
|
CrimsonBiomeInfluence = (float) (biome.TileColor == CaptureBiome.TileColorStyle.Crimson).ToInt(),
|
|
JungleBiomeInfluence = (float) (biome.TileColor == CaptureBiome.TileColorStyle.Jungle).ToInt(),
|
|
MushroomBiomeInfluence = tempMushroomInfluence,
|
|
GraveyardInfluence = Main.GraveyardVisualIntensity,
|
|
BloodMoonActive = biome.WaterStyle == 9,
|
|
LanternNightActive = LanternNight.LanternsUp
|
|
}, out sunColor, out moonColor);
|
|
Main.ApplyColorOfTheSkiesToTiles();
|
|
Main.ColorOfSurfaceBackgroundsBase = Main.ColorOfSurfaceBackgroundsModified = Main.ColorOfTheSkies;
|
|
bool mapEnabled = Main.mapEnabled;
|
|
Main.mapEnabled = false;
|
|
Lighting.Initialize();
|
|
Main.renderCount = 99;
|
|
for (int index = 0; index < 4; ++index)
|
|
Lighting.LightTiles(x1, num1, y1, num2);
|
|
Main.mapEnabled = mapEnabled;
|
|
if ((double) (settings.Area.X * 16) <= (double) screenPosition1.X - 16.0 || (double) (settings.Area.Y * 16) <= (double) screenPosition1.Y - 16.0 || (double) ((settings.Area.X + settings.Area.Width) * 16) >= (double) screenPosition1.X + (double) screenWidth1 + 16.0 || (double) ((settings.Area.Y + settings.Area.Height) * 16) >= (double) screenPosition1.Y + (double) screenHeight1 + 16.0)
|
|
{
|
|
for (int index = 0; index < Main.dust.Length; ++index)
|
|
{
|
|
if (Main.dust[index].active && Main.dust[index].type == 76)
|
|
Main.dust[index].active = false;
|
|
}
|
|
}
|
|
Vector2 vector2_1 = Main.drawToScreen ? Vector2.Zero : new Vector2((float) Main.offScreenRange, (float) Main.offScreenRange);
|
|
int val1_1 = (int) (((double) Main.screenPosition.X - (double) vector2_1.X) / 16.0 - 1.0);
|
|
int val1_2 = (int) (((double) Main.screenPosition.X + (double) Main.screenWidth + (double) vector2_1.X) / 16.0) + 2;
|
|
int val1_3 = (int) (((double) Main.screenPosition.Y - (double) vector2_1.Y) / 16.0 - 1.0);
|
|
int val1_4 = (int) (((double) Main.screenPosition.Y + (double) Main.screenHeight + (double) vector2_1.Y) / 16.0) + 5;
|
|
Vector2 vector2_2 = vector2_1 - Main.screenPosition;
|
|
int x2 = Math.Max(val1_1, 5) - 2;
|
|
int y2 = Math.Max(val1_3, 5);
|
|
int num3 = Math.Min(val1_2, Main.maxTilesX - 5) + 2;
|
|
int num4 = Math.Min(val1_4, Main.maxTilesY - 5) + 4;
|
|
Microsoft.Xna.Framework.Rectangle drawArea = new Microsoft.Xna.Framework.Rectangle(x2, y2, num3 - x2, num4 - y2);
|
|
LiquidRenderer.Instance.PrepareDraw(drawArea);
|
|
WorldGen.SectionTileFrameWithCheck(x1, y1, num1, num2);
|
|
if (captureBackground)
|
|
{
|
|
Matrix transform = Main.Transform;
|
|
int screenHeight2 = Main.screenHeight;
|
|
int screenWidth2 = Main.screenWidth;
|
|
Vector2 screenPosition2 = Main.screenPosition;
|
|
bool mapFullscreen = Main.mapFullscreen;
|
|
Main.mapFullscreen = false;
|
|
float scAdj = this.scAdj;
|
|
Vector2 vector2_3 = new Vector2((float) screenWidth1, (float) screenHeight1);
|
|
Vector2 vector2_4 = new Vector2((float) (settings.Area.Width * 16), (float) (settings.Area.Height * 16)) / vector2_3;
|
|
vector2_4.X = Math.Max(1f, vector2_4.X);
|
|
vector2_4.Y = Math.Max(1f, vector2_4.Y);
|
|
Vector2[] vector2Array = new Vector2[Main.numClouds];
|
|
for (int index = 0; index < Main.numClouds; ++index)
|
|
{
|
|
vector2Array[index] = Main.cloud[index].position;
|
|
Main.cloud[index].position *= vector2_4;
|
|
}
|
|
if ((double) (settings.Area.Height * 16) >= 2000.0 || (double) (settings.Area.Width * 16) >= 2000.0)
|
|
{
|
|
this.scAdj = 0.0f;
|
|
float num5 = 2048f;
|
|
float scale = MathHelper.Clamp((float) settings.Area.Height * 16f / num5, 1f, 3f);
|
|
Main.screenWidth = settings.Area.Width * 16;
|
|
Main.screenHeight = Math.Min(2048, settings.Area.Height * 16);
|
|
Main.screenPosition.X = (float) (settings.Area.X * 16);
|
|
Main.screenPosition.Y = (float) (settings.Area.Y * 16);
|
|
Main.screenPosition.Y += Math.Max(0.0f, (float) ((double) Math.Min((float) settings.Area.Height, (float) Main.worldSurface) * 16.0 - (double) num5 * (double) scale));
|
|
transform *= Matrix.CreateScale(scale);
|
|
transform.Translation += new Vector3((float) ((settings.Area.X - area.X) * 16), (float) ((settings.Area.Y - area.Y) * 16), 0.0f);
|
|
transform.Translation += new Vector3(0.0f, Math.Max(0.0f, (float) ((double) Math.Min((float) settings.Area.Height, (float) Main.worldSurface) * 16.0 - (double) num5 * (double) scale)) / scale, 0.0f);
|
|
}
|
|
else if ((double) (settings.Area.X * 16) > (double) screenPosition1.X - 16.0 && (double) (settings.Area.Y * 16) > (double) screenPosition1.Y - 16.0 && (double) ((settings.Area.X + settings.Area.Width) * 16) < (double) screenPosition1.X + (double) screenWidth1 + 16.0 && (double) ((settings.Area.Y + settings.Area.Height) * 16) < (double) screenPosition1.Y + (double) screenHeight1 + 16.0)
|
|
{
|
|
Main.screenPosition = screenPosition1;
|
|
Main.screenWidth = screenWidth1;
|
|
Main.screenHeight = screenHeight1;
|
|
transform.Translation += new Vector3(screenPosition1.X - (float) area.X * 16f, screenPosition1.Y - (float) area.Y * 16f, 0.0f);
|
|
}
|
|
Vector2 areaPosition = new Vector2((float) (area.X * 16), (float) (area.Y * 16));
|
|
int areaWidth = area.Width * 16;
|
|
int areaHeight = area.Height * 16;
|
|
Main.tileBatch.Begin();
|
|
this.DrawSimpleSurfaceBackground(areaPosition, areaWidth, areaHeight);
|
|
Main.tileBatch.End();
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.AnisotropicClamp, DepthStencilState.Default, RasterizerState.CullNone, (Effect) null, transform);
|
|
int num6 = Main.screenWidth;
|
|
int num7 = Main.screenHeight;
|
|
Vector2 zero = Vector2.Zero;
|
|
if (num6 < 800)
|
|
{
|
|
int num8 = 800 - num6;
|
|
zero.X -= (float) num8 * 0.5f;
|
|
num6 = 800;
|
|
}
|
|
if (num7 < 600)
|
|
{
|
|
int num9 = 600 - num7;
|
|
zero.Y -= (float) num9 * 0.5f;
|
|
num7 = 600;
|
|
}
|
|
Main.SceneArea sceneArea = new Main.SceneArea()
|
|
{
|
|
bgTopY = 0,
|
|
totalWidth = (float) num6,
|
|
totalHeight = (float) num7,
|
|
SceneLocalScreenPositionOffset = zero
|
|
};
|
|
this.DrawStarsInBackground(sceneArea);
|
|
if ((double) Main.screenPosition.Y / 16.0 < Main.worldSurface + 2.0)
|
|
this.DrawSunAndMoon(sceneArea, moonColor, sunColor, tempMushroomInfluence);
|
|
this.DrawSurfaceBG();
|
|
Main.spriteBatch.End();
|
|
for (int index = 0; index < Main.numClouds; ++index)
|
|
Main.cloud[index].position = vector2Array[index];
|
|
this.scAdj = scAdj;
|
|
Main.mapFullscreen = mapFullscreen;
|
|
Main.screenWidth = screenWidth2;
|
|
Main.screenHeight = screenHeight2;
|
|
Main.screenPosition = screenPosition2;
|
|
}
|
|
if (captureBackground)
|
|
{
|
|
Main.spriteBatch.Begin();
|
|
this.DrawUnderworldBackground(true);
|
|
Main.spriteBatch.End();
|
|
}
|
|
if (captureEntities)
|
|
{
|
|
Main.spriteBatch.Begin();
|
|
this.CacheNPCDraws();
|
|
this.CacheProjDraws();
|
|
this.DrawCachedNPCs(this.DrawCacheNPCsMoonMoon, true);
|
|
Main.spriteBatch.End();
|
|
}
|
|
Main.tileBatch.Begin();
|
|
Main.spriteBatch.Begin();
|
|
this.DrawBlack(true);
|
|
Main.tileBatch.End();
|
|
Main.spriteBatch.End();
|
|
Main.tileBatch.Begin();
|
|
Main.spriteBatch.Begin();
|
|
if (biome == null)
|
|
this.DrawWater(true, Main.waterStyle);
|
|
else
|
|
this.DrawWater(true, Main.bloodMoon ? 9 : biome.WaterStyle);
|
|
Main.tileBatch.End();
|
|
Main.spriteBatch.End();
|
|
if (captureBackground)
|
|
{
|
|
Main.tileBatch.Begin();
|
|
Main.spriteBatch.Begin();
|
|
this.DrawBackground();
|
|
Main.tileBatch.End();
|
|
Main.spriteBatch.End();
|
|
}
|
|
Main.tileBatch.Begin();
|
|
Main.spriteBatch.Begin();
|
|
this.DrawWalls();
|
|
Main.tileBatch.End();
|
|
Main.spriteBatch.End();
|
|
if (captureEntities)
|
|
{
|
|
Main.spriteBatch.Begin();
|
|
this.DrawWoF();
|
|
Main.spriteBatch.End();
|
|
}
|
|
if (Main.drawBackGore & captureEntities)
|
|
{
|
|
Main.spriteBatch.Begin();
|
|
this.DrawGoreBehind();
|
|
Main.spriteBatch.End();
|
|
Main.drawBackGore = true;
|
|
}
|
|
if (captureEntities)
|
|
{
|
|
Main.spriteBatch.Begin();
|
|
MoonlordDeathDrama.DrawPieces(Main.spriteBatch);
|
|
MoonlordDeathDrama.DrawExplosions(Main.spriteBatch);
|
|
Main.spriteBatch.End();
|
|
}
|
|
bool flag = false;
|
|
bool intoRenderTargets1 = false;
|
|
bool intoRenderTargets2 = true;
|
|
this.TilesRenderer.PreDrawTiles(false, flag, intoRenderTargets2);
|
|
Main.tileBatch.Begin();
|
|
Main.spriteBatch.Begin();
|
|
this.DrawCachedNPCs(this.DrawCacheNPCsBehindNonSolidTiles, true);
|
|
int waterStyleOverride = Main.bloodMoon ? 9 : biome.WaterStyle;
|
|
if (biome == null)
|
|
this.DrawTiles(false, flag, intoRenderTargets1);
|
|
else
|
|
this.DrawTiles(false, flag, intoRenderTargets1, waterStyleOverride);
|
|
Main.tileBatch.End();
|
|
Main.spriteBatch.End();
|
|
this.DrawTileEntities(false, flag, intoRenderTargets1);
|
|
if (captureEntities)
|
|
{
|
|
Main.spriteBatch.Begin();
|
|
this.waterfallManager.FindWaterfalls(true);
|
|
this.waterfallManager.Draw(Main.spriteBatch);
|
|
Main.spriteBatch.End();
|
|
}
|
|
if (captureEntities)
|
|
{
|
|
this.DrawCachedProjs(this.DrawCacheProjsBehindNPCsAndTiles);
|
|
Main.spriteBatch.Begin();
|
|
this.DrawNPCs(true);
|
|
Main.spriteBatch.End();
|
|
}
|
|
this.TilesRenderer.PreDrawTiles(true, flag, intoRenderTargets2);
|
|
Main.tileBatch.Begin();
|
|
Main.spriteBatch.Begin();
|
|
if (biome == null)
|
|
this.DrawTiles(true, flag, intoRenderTargets1);
|
|
else
|
|
this.DrawTiles(true, flag, intoRenderTargets1, waterStyleOverride);
|
|
Main.tileBatch.End();
|
|
Main.spriteBatch.End();
|
|
this.DrawTileEntities(true, flag, intoRenderTargets1);
|
|
if (captureEntities)
|
|
{
|
|
this.DrawPlayers_BehindNPCs();
|
|
this.DrawCachedProjs(this.DrawCacheProjsBehindNPCs);
|
|
Main.spriteBatch.Begin();
|
|
this.DrawNPCs();
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin();
|
|
this.DrawCachedNPCs(this.DrawCacheNPCProjectiles, false);
|
|
Main.spriteBatch.End();
|
|
this.DrawSuperSpecialProjectiles(this.DrawCacheFirstFractals);
|
|
this.DrawCachedProjs(this.DrawCacheProjsBehindProjectiles);
|
|
this.DrawProjectiles();
|
|
this.DrawPlayers_AfterProjectiles();
|
|
this.DrawCachedProjs(this.DrawCacheProjsOverPlayers);
|
|
Main.spriteBatch.Begin();
|
|
this.DrawCachedNPCs(this.DrawCacheNPCsOverPlayers, false);
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin();
|
|
this.DrawItems();
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin();
|
|
this.DrawRain();
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin();
|
|
this.DrawGore();
|
|
Main.spriteBatch.End();
|
|
this.DrawDust();
|
|
}
|
|
Main.tileBatch.Begin();
|
|
Main.spriteBatch.Begin();
|
|
if (biome == null)
|
|
this.DrawWater(Style: Main.waterStyle);
|
|
else
|
|
this.DrawWater(Style: biome.WaterStyle);
|
|
if (captureMech)
|
|
this.DrawWires();
|
|
Main.tileBatch.End();
|
|
Main.spriteBatch.End();
|
|
this.DrawCachedProjs(this.DrawCacheProjsOverWiresUI);
|
|
if (Main.mapEnabled)
|
|
{
|
|
Main.spriteBatch.Begin();
|
|
for (int x3 = area.X; x3 < area.X + area.Width; ++x3)
|
|
{
|
|
for (int y3 = area.Y; y3 < area.Y + area.Height; ++y3)
|
|
{
|
|
if (!Main.Map.IsRevealed(x3, y3))
|
|
Main.spriteBatch.Draw(TextureAssets.BlackTile.Value, new Vector2((float) x3 * 16f, (float) y3 * 16f) - Main.screenPosition, Microsoft.Xna.Framework.Color.Black);
|
|
}
|
|
}
|
|
Main.spriteBatch.End();
|
|
}
|
|
Main.renderCount = 99;
|
|
Main.screenWidth = screenWidth1;
|
|
Main.screenHeight = screenHeight1;
|
|
Main.screenPosition = screenPosition1;
|
|
Main.liquidAlpha = array;
|
|
Main.offScreenRange = offScreenRange;
|
|
Main.cloudAlpha = cloudAlpha;
|
|
Main.bgAlphaFrontLayer = bgAlphaFrontLayer;
|
|
Main.bgAlphaFarBackLayer = alphaFarBackLayer;
|
|
Main.SceneMetrics.HolyTileCount = holyTileCount;
|
|
Lighting.Initialize();
|
|
Main.GameViewMatrix = gameViewMatrix;
|
|
}
|
|
|
|
protected void RenderTiles()
|
|
{
|
|
if (Main.drawToScreen)
|
|
return;
|
|
this.RenderBlack();
|
|
this.GraphicsDevice.SetRenderTarget(this.tileTarget);
|
|
this.GraphicsDevice.Clear(Microsoft.Xna.Framework.Color.Transparent);
|
|
Main.spriteBatch.Begin();
|
|
try
|
|
{
|
|
this.TilesRenderer.PreDrawTiles(true, false, true);
|
|
this.DrawTiles(true, false, true);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (Main.ignoreErrors)
|
|
TimeLogger.DrawException(ex);
|
|
else
|
|
throw;
|
|
}
|
|
TimeLogger.DetailedDrawReset();
|
|
Main.spriteBatch.End();
|
|
this.DrawTileEntities(true, false, true);
|
|
TimeLogger.DetailedDrawTime(28);
|
|
this.GraphicsDevice.SetRenderTarget((RenderTarget2D) null);
|
|
}
|
|
|
|
protected void RenderTiles2()
|
|
{
|
|
if (Main.drawToScreen)
|
|
return;
|
|
this.GraphicsDevice.SetRenderTarget(this.tile2Target);
|
|
this.GraphicsDevice.Clear(Microsoft.Xna.Framework.Color.Transparent);
|
|
Main.spriteBatch.Begin();
|
|
try
|
|
{
|
|
this.TilesRenderer.PreDrawTiles(false, false, true);
|
|
this.DrawTiles(false, false, true);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (Main.ignoreErrors)
|
|
TimeLogger.DrawException(ex);
|
|
else
|
|
throw;
|
|
}
|
|
TimeLogger.DetailedDrawReset();
|
|
Main.spriteBatch.End();
|
|
this.DrawTileEntities(false, false, true);
|
|
TimeLogger.DetailedDrawTime(29);
|
|
this.GraphicsDevice.SetRenderTarget((RenderTarget2D) null);
|
|
}
|
|
|
|
protected void RenderWater()
|
|
{
|
|
if (Main.drawToScreen)
|
|
return;
|
|
this.GraphicsDevice.SetRenderTarget(Main.waterTarget);
|
|
this.GraphicsDevice.Clear(Microsoft.Xna.Framework.Color.Transparent);
|
|
Main.spriteBatch.Begin();
|
|
try
|
|
{
|
|
this.DrawWaters();
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
TimeLogger.DetailedDrawReset();
|
|
Main.spriteBatch.End();
|
|
TimeLogger.DetailedDrawTime(31);
|
|
this.GraphicsDevice.SetRenderTarget((RenderTarget2D) null);
|
|
}
|
|
|
|
public static int CalculateWaterStyle(bool ignoreFountains = false)
|
|
{
|
|
if (Main.SceneMetrics.ActiveFountainColor >= 0 && !ignoreFountains)
|
|
return Main.SceneMetrics.ActiveFountainColor;
|
|
if (Main.bgStyle != 4 && Main.bloodMoon && !Main.dayTime)
|
|
return 9;
|
|
switch (Main.bgStyle)
|
|
{
|
|
case 1:
|
|
return 2;
|
|
case 2:
|
|
return (double) Main.player[Main.myPlayer].position.Y / 16.0 > Main.worldSurface ? 12 : 6;
|
|
case 3:
|
|
return 3;
|
|
case 5:
|
|
if (Main.SceneMetrics.EvilTileCount > Main.SceneMetrics.HolyTileCount && Main.SceneMetrics.EvilTileCount > Main.SceneMetrics.BloodTileCount)
|
|
return 2;
|
|
return Main.SceneMetrics.HolyTileCount > Main.SceneMetrics.BloodTileCount ? 4 : 10;
|
|
case 6:
|
|
return 4;
|
|
case 7:
|
|
return 5;
|
|
case 8:
|
|
return 10;
|
|
default:
|
|
return (double) Main.screenPosition.Y / 16.0 > Main.rockLayer + 40.0 ? (Main.player[Main.myPlayer].ZoneGlowshroom ? 7 : 8) : ((double) Main.screenPosition.Y / 16.0 > Main.worldSurface ? 7 : 0);
|
|
}
|
|
}
|
|
|
|
public static bool IsLiquidStyleWater(int liquidStyle) => liquidStyle != 1 && liquidStyle != 11;
|
|
|
|
private void DrawWaters(bool isBackground = false)
|
|
{
|
|
Main.drewLava = false;
|
|
if (!isBackground)
|
|
{
|
|
Main.waterStyle = Main.CalculateWaterStyle();
|
|
for (int index = 0; index < 13; ++index)
|
|
{
|
|
if (Main.IsLiquidStyleWater(Main.waterStyle))
|
|
Main.liquidAlpha[index] = Main.waterStyle == index ? Math.Min(Main.liquidAlpha[index] + 0.2f, 1f) : Math.Max(Main.liquidAlpha[index] - 0.2f, 0.0f);
|
|
}
|
|
}
|
|
if (!Main.drawToScreen && !isBackground)
|
|
{
|
|
Vector2 vector2 = Main.drawToScreen ? Vector2.Zero : new Vector2((float) Main.offScreenRange, (float) Main.offScreenRange);
|
|
int val1_1 = (int) (((double) Main.Camera.ScaledPosition.X - (double) vector2.X) / 16.0 - 1.0);
|
|
int val1_2 = (int) (((double) Main.Camera.ScaledPosition.X + (double) Main.Camera.ScaledSize.X + (double) vector2.X) / 16.0) + 2;
|
|
int val1_3 = (int) (((double) Main.Camera.ScaledPosition.Y - (double) vector2.Y) / 16.0 - 1.0);
|
|
int val1_4 = (int) (((double) Main.Camera.ScaledPosition.Y + (double) Main.Camera.ScaledSize.Y + (double) vector2.Y) / 16.0) + 5;
|
|
int x = Math.Max(val1_1, 5) - 2;
|
|
int y = Math.Max(val1_3, 5);
|
|
int num1 = Math.Min(val1_2, Main.maxTilesX - 5) + 2;
|
|
int num2 = Math.Min(val1_4, Main.maxTilesY - 5) + 4;
|
|
Microsoft.Xna.Framework.Rectangle drawArea = new Microsoft.Xna.Framework.Rectangle(x, y, num1 - x, num2 - y);
|
|
LiquidRenderer.Instance.PrepareDraw(drawArea);
|
|
}
|
|
bool flag = false;
|
|
for (int index = 0; index < 13; ++index)
|
|
{
|
|
if (Main.IsLiquidStyleWater(index) && (double) Main.liquidAlpha[index] > 0.0 && index != Main.waterStyle)
|
|
{
|
|
this.DrawWater(isBackground, index, isBackground ? 1f : Main.liquidAlpha[index]);
|
|
flag = true;
|
|
}
|
|
}
|
|
this.DrawWater(isBackground, Main.waterStyle, flag ? Main.liquidAlpha[Main.waterStyle] : 1f);
|
|
}
|
|
|
|
protected void DrawWater(bool bg = false, int Style = 0, float Alpha = 1f)
|
|
{
|
|
if (!Lighting.NotRetro)
|
|
{
|
|
this.oldDrawWater(bg, Style, Alpha);
|
|
}
|
|
else
|
|
{
|
|
Stopwatch stopwatch = new Stopwatch();
|
|
stopwatch.Start();
|
|
Vector2 drawOffset = (Main.drawToScreen ? Vector2.Zero : new Vector2((float) Main.offScreenRange, (float) Main.offScreenRange)) - Main.screenPosition;
|
|
LiquidRenderer.Instance.Draw(Main.spriteBatch, drawOffset, Style, Alpha, bg);
|
|
if (bg)
|
|
return;
|
|
TimeLogger.DrawTime(4, stopwatch.Elapsed.TotalMilliseconds);
|
|
}
|
|
}
|
|
|
|
public static void DrawTileInWater(Vector2 drawOffset, int x, int y)
|
|
{
|
|
if (Main.tile[x, y] == null || !Main.tile[x, y].active() || Main.tile[x, y].type != (ushort) 518)
|
|
return;
|
|
Main.instance.LoadTiles((int) Main.tile[x, y].type);
|
|
Tile tile = Main.tile[x, y];
|
|
int num = (int) tile.liquid / 16 - 3;
|
|
if (WorldGen.SolidTile(x, y - 1) && num > 8)
|
|
num = 8;
|
|
Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.Rectangle((int) tile.frameX, (int) tile.frameY, 16, 16);
|
|
Main.spriteBatch.Draw(TextureAssets.Tile[(int) tile.type].Value, new Vector2((float) (x * 16), (float) (y * 16 - num)) + drawOffset, new Microsoft.Xna.Framework.Rectangle?(rectangle), Lighting.GetColor(x, y), 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
|
|
public void oldDrawWater(bool bg = false, int Style = 0, float Alpha = 1f)
|
|
{
|
|
float num1 = 0.0f;
|
|
float num2 = 99999f;
|
|
float num3 = 99999f;
|
|
int num4 = -1;
|
|
int num5 = -1;
|
|
Vector2 vector2_1 = new Vector2((float) Main.offScreenRange, (float) Main.offScreenRange);
|
|
if (Main.drawToScreen)
|
|
vector2_1 = Vector2.Zero;
|
|
Microsoft.Xna.Framework.Color[] colorArray = new Microsoft.Xna.Framework.Color[4];
|
|
int num6 = (int) ((double) byte.MaxValue * (1.0 - (double) Main.gfxQuality) + 40.0 * (double) Main.gfxQuality);
|
|
double gfxQuality1 = (double) Main.gfxQuality;
|
|
double gfxQuality2 = (double) Main.gfxQuality;
|
|
int num7 = (int) (((double) Main.screenPosition.X - (double) vector2_1.X) / 16.0 - 1.0);
|
|
int num8 = (int) (((double) Main.screenPosition.X + (double) Main.screenWidth + (double) vector2_1.X) / 16.0) + 2;
|
|
int num9 = (int) (((double) Main.screenPosition.Y - (double) vector2_1.Y) / 16.0 - 1.0);
|
|
int num10 = (int) (((double) Main.screenPosition.Y + (double) Main.screenHeight + (double) vector2_1.Y) / 16.0) + 5;
|
|
if (num7 < 5)
|
|
num7 = 5;
|
|
if (num8 > Main.maxTilesX - 5)
|
|
num8 = Main.maxTilesX - 5;
|
|
if (num9 < 5)
|
|
num9 = 5;
|
|
if (num10 > Main.maxTilesY - 5)
|
|
num10 = Main.maxTilesY - 5;
|
|
for (int y = num9; y < num10 + 4; ++y)
|
|
{
|
|
for (int x = num7 - 2; x < num8 + 2; ++x)
|
|
{
|
|
if (Main.tile[x, y] == null)
|
|
Main.tile[x, y] = new Tile();
|
|
if (Main.tile[x, y].liquid > (byte) 0 && (!Main.tile[x, y].nactive() || !Main.tileSolid[(int) Main.tile[x, y].type] || Main.tileSolidTop[(int) Main.tile[x, y].type]) && (double) Lighting.Brightness(x, y) > 0.0 | bg)
|
|
{
|
|
Microsoft.Xna.Framework.Color color1 = Lighting.GetColor(x, y);
|
|
float num11 = (float) (256 - (int) Main.tile[x, y].liquid) / 32f;
|
|
int index1 = 0;
|
|
if (Main.tile[x, y].lava())
|
|
{
|
|
if (!Main.drewLava)
|
|
{
|
|
float num12 = Math.Abs((float) (x * 16 + 8) - (Main.screenPosition.X + (float) (Main.screenWidth / 2)));
|
|
float num13 = Math.Abs((float) (y * 16 + 8) - (Main.screenPosition.Y + (float) (Main.screenHeight / 2)));
|
|
if ((double) num12 < (double) (Main.screenWidth * 2) && (double) num13 < (double) (Main.screenHeight * 2))
|
|
{
|
|
float num14 = (float) (1.0 - Math.Sqrt((double) num12 * (double) num12 + (double) num13 * (double) num13) / ((double) Main.screenWidth * 0.75));
|
|
if ((double) num14 > 0.0)
|
|
num1 += num14;
|
|
}
|
|
if ((double) num12 < (double) num2)
|
|
{
|
|
num2 = num12;
|
|
num4 = x * 16 + 8;
|
|
}
|
|
if ((double) num13 < (double) num3)
|
|
{
|
|
num3 = num12;
|
|
num5 = y * 16 + 8;
|
|
}
|
|
index1 = 1;
|
|
}
|
|
else
|
|
continue;
|
|
}
|
|
else if (Main.tile[x, y].honey())
|
|
index1 = 11;
|
|
if (index1 == 0)
|
|
index1 = Style;
|
|
if (index1 != 1 && index1 != 11 || !Main.drewLava)
|
|
{
|
|
float num15 = 0.5f;
|
|
if (bg)
|
|
num15 = 1f;
|
|
if (index1 != 1 && index1 != 11)
|
|
num15 *= Alpha;
|
|
Main.DrawTileInWater(-Main.screenPosition + vector2_1, x, y);
|
|
Vector2 vector2_2 = new Vector2((float) (x * 16), (float) (y * 16 + (int) num11 * 2));
|
|
Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.Rectangle(0, 0, 16, 16 - (int) num11 * 2);
|
|
if (Main.tile[x, y + 1].liquid < (byte) 245 && (!Main.tile[x, y + 1].nactive() || !Main.tileSolid[(int) Main.tile[x, y + 1].type] || Main.tileSolidTop[(int) Main.tile[x, y + 1].type]))
|
|
{
|
|
float num16 = (float) (256 - (int) Main.tile[x, y + 1].liquid) / 32f;
|
|
num15 = (float) (0.5 * (8.0 - (double) num11) / 4.0);
|
|
if ((double) num15 > 0.55)
|
|
num15 = 0.55f;
|
|
if ((double) num15 < 0.35)
|
|
num15 = 0.35f;
|
|
float num17 = num11 / 2f;
|
|
if (Main.tile[x, y + 1].liquid < (byte) 200)
|
|
{
|
|
if (!bg)
|
|
{
|
|
if (Main.tile[x, y - 1].liquid > (byte) 0 && Main.tile[x, y - 1].liquid > (byte) 0)
|
|
{
|
|
rectangle = new Microsoft.Xna.Framework.Rectangle(0, 4, 16, 16);
|
|
num15 = 0.5f;
|
|
}
|
|
else if (Main.tile[x, y - 1].liquid > (byte) 0)
|
|
{
|
|
vector2_2 = new Vector2((float) (x * 16), (float) (y * 16 + 4));
|
|
rectangle = new Microsoft.Xna.Framework.Rectangle(0, 4, 16, 12);
|
|
num15 = 0.5f;
|
|
}
|
|
else if (Main.tile[x, y + 1].liquid > (byte) 0)
|
|
{
|
|
vector2_2 = new Vector2((float) (x * 16), (float) (y * 16 + (int) num11 * 2 + (int) num16 * 2));
|
|
rectangle = new Microsoft.Xna.Framework.Rectangle(0, 4, 16, 16 - (int) num11 * 2);
|
|
}
|
|
else
|
|
{
|
|
vector2_2 = new Vector2((float) (x * 16 + (int) num17), (float) (y * 16 + (int) num17 * 2 + (int) num16 * 2));
|
|
rectangle = new Microsoft.Xna.Framework.Rectangle(0, 4, 16 - (int) num17 * 2, 16 - (int) num17 * 2);
|
|
}
|
|
}
|
|
else
|
|
continue;
|
|
}
|
|
else
|
|
{
|
|
num15 = 0.5f;
|
|
rectangle = new Microsoft.Xna.Framework.Rectangle(0, 4, 16, 16 - (int) num11 * 2 + (int) num16 * 2);
|
|
}
|
|
}
|
|
else if (Main.tile[x, y - 1].liquid > (byte) 32)
|
|
rectangle = new Microsoft.Xna.Framework.Rectangle(0, 4, rectangle.Width, rectangle.Height);
|
|
else if ((double) num11 < 1.0 && Main.tile[x, y - 1].nactive() && Main.tileSolid[(int) Main.tile[x, y - 1].type] && !Main.tileSolidTop[(int) Main.tile[x, y - 1].type])
|
|
{
|
|
vector2_2 = new Vector2((float) (x * 16), (float) (y * 16));
|
|
rectangle = new Microsoft.Xna.Framework.Rectangle(0, 4, 16, 16);
|
|
}
|
|
else
|
|
{
|
|
bool flag = true;
|
|
for (int index2 = y + 1; index2 < y + 6 && (!Main.tile[x, index2].nactive() || !Main.tileSolid[(int) Main.tile[x, index2].type] || Main.tileSolidTop[(int) Main.tile[x, index2].type]); ++index2)
|
|
{
|
|
if (Main.tile[x, index2].liquid < (byte) 200)
|
|
{
|
|
flag = false;
|
|
break;
|
|
}
|
|
}
|
|
if (!flag)
|
|
{
|
|
num15 = 0.5f;
|
|
rectangle = new Microsoft.Xna.Framework.Rectangle(0, 4, 16, 16);
|
|
}
|
|
else if (Main.tile[x, y - 1].liquid > (byte) 0)
|
|
rectangle = new Microsoft.Xna.Framework.Rectangle(0, 2, rectangle.Width, rectangle.Height);
|
|
}
|
|
if ((color1.R > (byte) 20 || color1.B > (byte) 20 || color1.G > (byte) 20) && rectangle.Y < 4)
|
|
{
|
|
int num18 = (int) color1.R;
|
|
if ((int) color1.G > num18)
|
|
num18 = (int) color1.G;
|
|
if ((int) color1.B > num18)
|
|
num18 = (int) color1.B;
|
|
int num19 = num18 / 30;
|
|
if (Main.rand.Next(20000) < num19)
|
|
{
|
|
Microsoft.Xna.Framework.Color newColor = new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue);
|
|
if (Main.tile[x, y].honey())
|
|
newColor = new Microsoft.Xna.Framework.Color((int) byte.MaxValue, (int) byte.MaxValue, 50);
|
|
int index3 = Dust.NewDust(new Vector2((float) (x * 16), vector2_2.Y - 2f), 16, 8, 43, Alpha: 254, newColor: newColor, Scale: 0.75f);
|
|
Main.dust[index3].velocity *= 0.0f;
|
|
}
|
|
}
|
|
if (Main.tile[x, y].honey())
|
|
{
|
|
num15 *= 1.6f;
|
|
if ((double) num15 > 1.0)
|
|
num15 = 1f;
|
|
}
|
|
if (Main.tile[x, y].lava())
|
|
{
|
|
num15 *= 1.8f;
|
|
if ((double) num15 > 1.0)
|
|
num15 = 1f;
|
|
if (this.IsActive && !Main.gamePaused && Dust.lavaBubbles < 200)
|
|
{
|
|
if (Main.tile[x, y].liquid > (byte) 200 && Main.rand.Next(700) == 0)
|
|
Dust.NewDust(new Vector2((float) (x * 16), (float) (y * 16)), 16, 16, 35);
|
|
if (rectangle.Y == 0 && Main.rand.Next(350) == 0)
|
|
{
|
|
int index4 = Dust.NewDust(new Vector2((float) (x * 16), (float) ((double) (y * 16) + (double) num11 * 2.0 - 8.0)), 16, 8, 35, Alpha: 50, Scale: 1.5f);
|
|
Main.dust[index4].velocity *= 0.8f;
|
|
Main.dust[index4].velocity.X *= 2f;
|
|
Main.dust[index4].velocity.Y -= (float) Main.rand.Next(1, 7) * 0.1f;
|
|
if (Main.rand.Next(10) == 0)
|
|
Main.dust[index4].velocity.Y *= (float) Main.rand.Next(2, 5);
|
|
Main.dust[index4].noGravity = true;
|
|
}
|
|
}
|
|
}
|
|
color1 = new Microsoft.Xna.Framework.Color((int) (byte) ((float) color1.R * num15), (int) (byte) ((float) color1.G * num15), (int) (byte) ((float) color1.B * num15), (int) (byte) ((float) color1.A * num15));
|
|
if (Lighting.NotRetro && !bg)
|
|
{
|
|
Microsoft.Xna.Framework.Color color2 = color1;
|
|
if (index1 != 1 && ((double) color2.R > (double) num6 * 0.6 || (double) color2.G > (double) num6 * 0.65 || (double) color2.B > (double) num6 * 0.7))
|
|
{
|
|
for (int index5 = 0; index5 < 4; ++index5)
|
|
{
|
|
int num20 = 0;
|
|
int num21 = 0;
|
|
int width = 8;
|
|
int height = 8;
|
|
Microsoft.Xna.Framework.Color color3 = color2;
|
|
Microsoft.Xna.Framework.Color color4 = Lighting.GetColor(x, y);
|
|
if (index5 == 0)
|
|
{
|
|
color4 = Lighting.GetColor(x - 1, y - 1);
|
|
if (rectangle.Height < 8)
|
|
height = rectangle.Height;
|
|
}
|
|
if (index5 == 1)
|
|
{
|
|
color4 = Lighting.GetColor(x + 1, y - 1);
|
|
num20 = 8;
|
|
if (rectangle.Height < 8)
|
|
height = rectangle.Height;
|
|
}
|
|
if (index5 == 2)
|
|
{
|
|
color4 = Lighting.GetColor(x - 1, y + 1);
|
|
num21 = 8;
|
|
height = 8 - (16 - rectangle.Height);
|
|
}
|
|
if (index5 == 3)
|
|
{
|
|
color4 = Lighting.GetColor(x + 1, y + 1);
|
|
num20 = 8;
|
|
num21 = 8;
|
|
height = 8 - (16 - rectangle.Height);
|
|
}
|
|
color4 = new Microsoft.Xna.Framework.Color((int) (byte) ((float) color4.R * num15), (int) (byte) ((float) color4.G * num15), (int) (byte) ((float) color4.B * num15), (int) (byte) ((float) color4.A * num15));
|
|
color3.R = (byte) (((int) color2.R * 3 + (int) color4.R * 2) / 5);
|
|
color3.G = (byte) (((int) color2.G * 3 + (int) color4.G * 2) / 5);
|
|
color3.B = (byte) (((int) color2.B * 3 + (int) color4.B * 2) / 5);
|
|
color3.A = (byte) (((int) color2.A * 3 + (int) color4.A * 2) / 5);
|
|
Main.spriteBatch.Draw(TextureAssets.Liquid[index1].Value, vector2_2 - Main.screenPosition + new Vector2((float) num20, (float) num21) + vector2_1, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(rectangle.X + num20, rectangle.Y + num21, width, height)), color3, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
else
|
|
Main.spriteBatch.Draw(TextureAssets.Liquid[index1].Value, vector2_2 - Main.screenPosition + vector2_1, new Microsoft.Xna.Framework.Rectangle?(rectangle), color1, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
else
|
|
{
|
|
if (rectangle.Y < 4)
|
|
rectangle.X += (int) ((double) Main.wFrame * 18.0);
|
|
Main.spriteBatch.Draw(TextureAssets.Liquid[index1].Value, vector2_2 - Main.screenPosition + vector2_1, new Microsoft.Xna.Framework.Rectangle?(rectangle), color1, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
if (Main.tile[x, y + 1].halfBrick())
|
|
{
|
|
color1 = Lighting.GetColor(x, y + 1);
|
|
color1 = new Microsoft.Xna.Framework.Color((int) (byte) ((float) color1.R * num15), (int) (byte) ((float) color1.G * num15), (int) (byte) ((float) color1.B * num15), (int) (byte) ((float) color1.A * num15));
|
|
vector2_2 = new Vector2((float) (x * 16), (float) (y * 16 + 16));
|
|
Main.spriteBatch.Draw(TextureAssets.Liquid[index1].Value, vector2_2 - Main.screenPosition + vector2_1, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 4, 16, 8)), color1, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (!Main.drewLava)
|
|
{
|
|
Main.ambientLavaX = (float) num4;
|
|
Main.ambientLavaY = (float) num5;
|
|
Main.ambientLavaStrength = num1;
|
|
}
|
|
Main.drewLava = true;
|
|
}
|
|
|
|
protected bool FullTile(int x, int y)
|
|
{
|
|
if (Main.tile[x - 1, y] == null || Main.tile[x - 1, y].blockType() != 0 || Main.tile[x + 1, y] == null || Main.tile[x + 1, y].blockType() != 0)
|
|
return false;
|
|
Tile tile = Main.tile[x, y];
|
|
if (tile == null || !tile.active() || (int) tile.type < TileID.Sets.DrawsWalls.Length && TileID.Sets.DrawsWalls[(int) tile.type] || !Main.tileSolid[(int) tile.type] || Main.tileSolidTop[(int) tile.type])
|
|
return false;
|
|
int frameX = (int) tile.frameX;
|
|
int frameY = (int) tile.frameY;
|
|
if (Main.tileLargeFrames[(int) tile.type] > (byte) 0)
|
|
{
|
|
if ((frameY == 18 || frameY == 108) && (frameX >= 18 && frameX <= 54 || frameX >= 108 && frameX <= 144))
|
|
return true;
|
|
}
|
|
else if (frameY == 18)
|
|
{
|
|
if (frameX >= 18 && frameX <= 54 || frameX >= 108 && frameX <= 144)
|
|
return true;
|
|
}
|
|
else if (frameY >= 90 && frameY <= 196 && (frameX <= 70 || frameX >= 144 && frameX <= 232))
|
|
return true;
|
|
return false;
|
|
}
|
|
|
|
protected void DrawBlack(bool force = false)
|
|
{
|
|
Stopwatch stopwatch = new Stopwatch();
|
|
stopwatch.Start();
|
|
Vector2 vector2 = Main.drawToScreen ? Vector2.Zero : new Vector2((float) Main.offScreenRange, (float) Main.offScreenRange);
|
|
int num1 = ((int) Main.tileColor.R + (int) Main.tileColor.G + (int) Main.tileColor.B) / 3;
|
|
float num2 = (float) num1 * 0.4f / (float) byte.MaxValue;
|
|
switch (Lighting.Mode)
|
|
{
|
|
case LightMode.Retro:
|
|
num2 = (float) ((int) Main.tileColor.R - 55) / (float) byte.MaxValue;
|
|
if ((double) num2 < 0.0)
|
|
{
|
|
num2 = 0.0f;
|
|
break;
|
|
}
|
|
break;
|
|
case LightMode.Trippy:
|
|
num2 = (float) (num1 - 55) / (float) byte.MaxValue;
|
|
if ((double) num2 < 0.0)
|
|
{
|
|
num2 = 0.0f;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
Microsoft.Xna.Framework.Point screenOverdrawOffset = Main.GetScreenOverdrawOffset();
|
|
Microsoft.Xna.Framework.Point point = new Microsoft.Xna.Framework.Point(-Main.offScreenRange / 16 + screenOverdrawOffset.X, -Main.offScreenRange / 16 + screenOverdrawOffset.Y);
|
|
int num3 = (int) (((double) Main.screenPosition.X - (double) vector2.X) / 16.0 - 1.0) + point.X;
|
|
int num4 = (int) (((double) Main.screenPosition.X + (double) Main.screenWidth + (double) vector2.X) / 16.0) + 2 - point.X;
|
|
int val1_1 = (int) (((double) Main.screenPosition.Y - (double) vector2.Y) / 16.0 - 1.0) + point.Y;
|
|
int val1_2 = (int) (((double) Main.screenPosition.Y + (double) Main.screenHeight + (double) vector2.Y) / 16.0) + 5 - point.Y;
|
|
if (num3 < 0)
|
|
num3 = point.X;
|
|
if (num4 > Main.maxTilesX)
|
|
num4 = Main.maxTilesX - point.X;
|
|
if (val1_1 < 0)
|
|
val1_1 = point.Y;
|
|
if (val1_2 > Main.maxTilesY)
|
|
val1_2 = Main.maxTilesY - point.Y;
|
|
if (!force)
|
|
{
|
|
if (val1_1 < Main.maxTilesY / 2)
|
|
{
|
|
val1_2 = Math.Min(val1_2, (int) Main.worldSurface + 1);
|
|
val1_1 = Math.Min(val1_1, (int) Main.worldSurface + 1);
|
|
}
|
|
else
|
|
{
|
|
val1_2 = Math.Max(val1_2, Main.UnderworldLayer);
|
|
val1_1 = Math.Max(val1_1, Main.UnderworldLayer);
|
|
}
|
|
}
|
|
for (int y = val1_1; y < val1_2; ++y)
|
|
{
|
|
bool flag = y >= Main.UnderworldLayer;
|
|
if (flag)
|
|
num2 = 0.2f;
|
|
for (int x = num3; x < num4; ++x)
|
|
{
|
|
int num5 = x;
|
|
for (; x < num4; ++x)
|
|
{
|
|
if (!WorldGen.InWorld(x, y))
|
|
return;
|
|
if (Main.tile[x, y] == null)
|
|
Main.tile[x, y] = new Tile();
|
|
Tile testTile = Main.tile[x, y];
|
|
float num6 = (float) Math.Floor((double) Lighting.Brightness(x, y) * (double) byte.MaxValue) / (float) byte.MaxValue;
|
|
byte liquid = testTile.liquid;
|
|
if (((((double) num6 > (double) num2 ? 0 : (!flag && liquid < (byte) 250 || WorldGen.SolidTile(testTile) ? 1 : (liquid < (byte) 200 ? 0 : ((double) num6 == 0.0 ? 1 : 0)))) == 0 ? 0 : (!WallID.Sets.Transparent[(int) testTile.wall] ? 1 : (!Main.tile[x, y].active() ? 0 : (Main.tileBlockLight[(int) testTile.type] ? 1 : 0)))) == 0 ? 0 : (Main.drawToScreen || !LiquidRenderer.Instance.HasFullWater(x, y) || testTile.wall != (ushort) 0 || testTile.halfBrick() ? 1 : ((double) y <= Main.worldSurface ? 1 : 0))) == 0)
|
|
break;
|
|
}
|
|
if (x - num5 > 0)
|
|
Main.spriteBatch.Draw(TextureAssets.BlackTile.Value, new Vector2((float) (num5 << 4), (float) (y << 4)) - Main.screenPosition + vector2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, x - num5 << 4, 16)), Microsoft.Xna.Framework.Color.Black);
|
|
}
|
|
}
|
|
TimeLogger.DrawTime(5, stopwatch.Elapsed.TotalMilliseconds);
|
|
}
|
|
|
|
protected void RenderBlack()
|
|
{
|
|
if (Main.drawToScreen)
|
|
return;
|
|
this.GraphicsDevice.SetRenderTarget(this.blackTarget);
|
|
this.GraphicsDevice.DepthStencilState = new DepthStencilState()
|
|
{
|
|
DepthBufferEnable = true
|
|
};
|
|
this.GraphicsDevice.Clear(Microsoft.Xna.Framework.Color.Transparent);
|
|
Main.spriteBatch.Begin();
|
|
this.DrawBlack();
|
|
TimeLogger.DetailedDrawReset();
|
|
Main.spriteBatch.End();
|
|
TimeLogger.DetailedDrawTime(30);
|
|
this.GraphicsDevice.SetRenderTarget((RenderTarget2D) null);
|
|
}
|
|
|
|
protected void DrawWalls() => this.WallsRenderer.DrawWalls();
|
|
|
|
protected void RenderWalls()
|
|
{
|
|
if (Main.drawToScreen)
|
|
return;
|
|
this.GraphicsDevice.SetRenderTarget(this.wallTarget);
|
|
this.GraphicsDevice.DepthStencilState = new DepthStencilState()
|
|
{
|
|
DepthBufferEnable = true
|
|
};
|
|
this.GraphicsDevice.Clear(Microsoft.Xna.Framework.Color.Transparent);
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend);
|
|
Main.tileBatch.Begin();
|
|
if (Main.ignoreErrors)
|
|
{
|
|
try
|
|
{
|
|
this.DrawWalls();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
TimeLogger.DrawException(ex);
|
|
}
|
|
}
|
|
else
|
|
this.DrawWalls();
|
|
TimeLogger.DetailedDrawReset();
|
|
Main.tileBatch.End();
|
|
Main.spriteBatch.End();
|
|
TimeLogger.DetailedDrawTime(32);
|
|
this.GraphicsDevice.SetRenderTarget((RenderTarget2D) null);
|
|
}
|
|
|
|
protected void ReleaseTargets()
|
|
{
|
|
try
|
|
{
|
|
if (Main.dedServ)
|
|
return;
|
|
Main.offScreenRange = 0;
|
|
Main.targetSet = false;
|
|
if (Main.waterTarget != null)
|
|
Main.waterTarget.Dispose();
|
|
if (this.backWaterTarget != null)
|
|
this.backWaterTarget.Dispose();
|
|
if (this.blackTarget != null)
|
|
this.blackTarget.Dispose();
|
|
if (this.tileTarget != null)
|
|
this.tileTarget.Dispose();
|
|
if (this.tile2Target != null)
|
|
this.tile2Target.Dispose();
|
|
if (this.wallTarget != null)
|
|
this.wallTarget.Dispose();
|
|
if (Main.screenTarget != null)
|
|
Main.screenTarget.Dispose();
|
|
if (Main.screenTargetSwap != null)
|
|
Main.screenTargetSwap.Dispose();
|
|
if (this.backgroundTarget != null)
|
|
this.backgroundTarget.Dispose();
|
|
if (Main.OnRenderTargetsReleased == null)
|
|
return;
|
|
Main.OnRenderTargetsReleased();
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
}
|
|
|
|
protected bool checkMap(int i, int j)
|
|
{
|
|
if (this.mapTarget[i, j] == null || this.mapTarget[i, j].IsDisposed)
|
|
Main.initMap[i, j] = false;
|
|
if (!Main.initMap[i, j])
|
|
{
|
|
try
|
|
{
|
|
int width = Main.textureMaxWidth;
|
|
int height = Main.textureMaxHeight;
|
|
if (i == Main.mapTargetX - 1)
|
|
width = 400;
|
|
if (j == Main.mapTargetY - 1)
|
|
height = 600;
|
|
this.mapTarget[i, j] = new RenderTarget2D(this.GraphicsDevice, width, height, false, this.GraphicsDevice.PresentationParameters.BackBufferFormat, DepthFormat.None, 0, RenderTargetUsage.PreserveContents);
|
|
}
|
|
catch
|
|
{
|
|
Main.mapEnabled = false;
|
|
for (int index1 = 0; index1 < Main.mapTargetX; ++index1)
|
|
{
|
|
for (int index2 = 0; index2 < Main.mapTargetY; ++index2)
|
|
{
|
|
try
|
|
{
|
|
Main.initMap[index1, index2] = false;
|
|
this.mapTarget[index1, index2].Dispose();
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
Main.initMap[i, j] = true;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
protected void InitMap()
|
|
{
|
|
int mapTargetX = Main.mapTargetX;
|
|
int mapTargetY = Main.mapTargetY;
|
|
if (!Main.mapEnabled)
|
|
return;
|
|
try
|
|
{
|
|
for (int index1 = 0; index1 < mapTargetX; ++index1)
|
|
{
|
|
for (int index2 = 0; index2 < mapTargetY; ++index2)
|
|
this.mapTarget[index1, index2] = new RenderTarget2D(this.GraphicsDevice, Main.textureMaxWidth, Main.textureMaxHeight, false, this.GraphicsDevice.PresentationParameters.BackBufferFormat, DepthFormat.None, 0, RenderTargetUsage.PreserveContents);
|
|
}
|
|
Main.mapInit = true;
|
|
}
|
|
catch
|
|
{
|
|
Main.mapEnabled = false;
|
|
for (int index3 = 0; index3 < mapTargetX; ++index3)
|
|
{
|
|
for (int index4 = 0; index4 < mapTargetY; ++index4)
|
|
{
|
|
try
|
|
{
|
|
if (this.mapTarget[index3, index4] != null)
|
|
this.mapTarget[index3, index4].Dispose();
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
protected void InitTargets()
|
|
{
|
|
this.UpdateDisplaySettings();
|
|
this.InitTargets(this.GraphicsDevice.PresentationParameters.BackBufferWidth, this.GraphicsDevice.PresentationParameters.BackBufferHeight);
|
|
}
|
|
|
|
protected void EnsureRenderTargetContent()
|
|
{
|
|
if (Main.waterTarget != null && !Main.waterTarget.IsContentLost && this.backWaterTarget != null && !this.backWaterTarget.IsContentLost && this.blackTarget != null && !this.blackTarget.IsContentLost && this.tileTarget != null && !this.tileTarget.IsContentLost && this.tile2Target != null && !this.tile2Target.IsContentLost && this.wallTarget != null && !this.wallTarget.IsContentLost && this.backgroundTarget != null && !this.backgroundTarget.IsContentLost && Main.screenTarget != null && !Main.screenTarget.IsContentLost && Main.screenTargetSwap != null && !Main.screenTargetSwap.IsContentLost)
|
|
return;
|
|
this.InitTargets();
|
|
}
|
|
|
|
protected void InitTargets(int width, int height)
|
|
{
|
|
this.ReleaseTargets();
|
|
Main.offScreenRange = 192;
|
|
if (width + Main.offScreenRange * 2 > Main._renderTargetMaxSize)
|
|
Main.offScreenRange = (Main._renderTargetMaxSize - width) / 2;
|
|
width += Main.offScreenRange * 2;
|
|
height += Main.offScreenRange * 2;
|
|
try
|
|
{
|
|
if (Main.dedServ)
|
|
return;
|
|
Main.targetSet = true;
|
|
Main.waterTarget = new RenderTarget2D(this.GraphicsDevice, width, height, false, this.GraphicsDevice.PresentationParameters.BackBufferFormat, DepthFormat.None);
|
|
this.backWaterTarget = new RenderTarget2D(this.GraphicsDevice, width, height, false, this.GraphicsDevice.PresentationParameters.BackBufferFormat, DepthFormat.None);
|
|
this.blackTarget = new RenderTarget2D(this.GraphicsDevice, width, height, false, this.GraphicsDevice.PresentationParameters.BackBufferFormat, DepthFormat.None);
|
|
this.tileTarget = new RenderTarget2D(this.GraphicsDevice, width, height, false, this.GraphicsDevice.PresentationParameters.BackBufferFormat, DepthFormat.None);
|
|
this.tile2Target = new RenderTarget2D(this.GraphicsDevice, width, height, false, this.GraphicsDevice.PresentationParameters.BackBufferFormat, DepthFormat.None);
|
|
this.wallTarget = new RenderTarget2D(this.GraphicsDevice, width, height, false, this.GraphicsDevice.PresentationParameters.BackBufferFormat, DepthFormat.None);
|
|
this.backgroundTarget = new RenderTarget2D(this.GraphicsDevice, width, height, false, this.GraphicsDevice.PresentationParameters.BackBufferFormat, DepthFormat.None);
|
|
Main.screenTarget = new RenderTarget2D(this.GraphicsDevice, this.GraphicsDevice.PresentationParameters.BackBufferWidth, this.GraphicsDevice.PresentationParameters.BackBufferHeight, false, this.GraphicsDevice.PresentationParameters.BackBufferFormat, DepthFormat.None);
|
|
Main.screenTargetSwap = new RenderTarget2D(this.GraphicsDevice, this.GraphicsDevice.PresentationParameters.BackBufferWidth, this.GraphicsDevice.PresentationParameters.BackBufferHeight, false, this.GraphicsDevice.PresentationParameters.BackBufferFormat, DepthFormat.None);
|
|
if (Main.OnRenderTargetsInitialized == null)
|
|
return;
|
|
Main.OnRenderTargetsInitialized(this.GraphicsDevice.PresentationParameters.BackBufferWidth, this.GraphicsDevice.PresentationParameters.BackBufferHeight);
|
|
}
|
|
catch
|
|
{
|
|
Lighting.Mode = LightMode.Retro;
|
|
Main.mapEnabled = false;
|
|
Main.SaveSettings();
|
|
try
|
|
{
|
|
this.ReleaseTargets();
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
}
|
|
}
|
|
|
|
protected void DrawWires()
|
|
{
|
|
Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.Rectangle(0, 0, 16, 16);
|
|
Vector2 zero1 = Vector2.Zero;
|
|
this.DrawWiresSpecialTiles.Clear();
|
|
bool flag1 = !WiresUI.Settings.HideWires;
|
|
float num1 = 1f;
|
|
if (WiresUI.Settings.HideWires)
|
|
num1 = 0.5f;
|
|
int num2 = 1;
|
|
int num3 = 1;
|
|
int num4 = 1;
|
|
int num5 = 1;
|
|
int num6 = 1;
|
|
if (Main.player[Main.myPlayer].InfoAccMechShowWires)
|
|
{
|
|
int[] builderAccStatus = Main.player[Main.myPlayer].builderAccStatus;
|
|
num2 = builderAccStatus[4];
|
|
num3 = builderAccStatus[5];
|
|
num4 = builderAccStatus[6];
|
|
num5 = builderAccStatus[7];
|
|
num6 = builderAccStatus[9];
|
|
}
|
|
double gfxQuality1 = (double) Main.gfxQuality;
|
|
double gfxQuality2 = (double) Main.gfxQuality;
|
|
Vector2 zero2 = Vector2.Zero;
|
|
if (Main.drawToScreen)
|
|
zero2 = Vector2.Zero;
|
|
int num7 = (int) (((double) Main.screenPosition.X - (double) zero2.X) / 16.0 - 1.0);
|
|
int num8 = (int) (((double) Main.screenPosition.X + (double) Main.screenWidth + (double) zero2.X) / 16.0) + 2;
|
|
int num9 = (int) (((double) Main.screenPosition.Y - (double) zero2.Y) / 16.0 - 1.0);
|
|
int num10 = (int) (((double) Main.screenPosition.Y + (double) Main.screenHeight + (double) zero2.Y) / 16.0) + 5;
|
|
if (num7 < 0)
|
|
num7 = 0;
|
|
if (num8 > Main.maxTilesX)
|
|
num8 = Main.maxTilesX;
|
|
if (num9 < 0)
|
|
num9 = 0;
|
|
if (num10 > Main.maxTilesY)
|
|
num10 = Main.maxTilesY;
|
|
Microsoft.Xna.Framework.Point screenOverdrawOffset = Main.GetScreenOverdrawOffset();
|
|
for (int y = num9 + screenOverdrawOffset.Y; y < num10 - screenOverdrawOffset.Y; ++y)
|
|
{
|
|
for (int x = num7 + screenOverdrawOffset.X; x < num8 - screenOverdrawOffset.X; ++x)
|
|
{
|
|
bool flag2 = false;
|
|
bool flag3 = false;
|
|
bool flag4 = false;
|
|
bool flag5 = false;
|
|
float num11 = 0.0f;
|
|
Tile tile = Main.tile[x, y];
|
|
if (flag1)
|
|
{
|
|
int num12 = 0;
|
|
if (tile.active())
|
|
{
|
|
if (tile.type == (ushort) 424)
|
|
{
|
|
switch ((int) tile.frameX / 18)
|
|
{
|
|
case 0:
|
|
num12 += 72;
|
|
break;
|
|
case 1:
|
|
num12 += 144;
|
|
break;
|
|
case 2:
|
|
num12 += 216;
|
|
break;
|
|
}
|
|
}
|
|
else if (tile.type == (ushort) 445)
|
|
num12 += 72;
|
|
}
|
|
if (tile.wire())
|
|
{
|
|
++num11;
|
|
int num13 = 0;
|
|
if (Main.tile[x, y - 1].wire())
|
|
{
|
|
num13 += 18;
|
|
flag4 = true;
|
|
}
|
|
if (Main.tile[x + 1, y].wire())
|
|
{
|
|
num13 += 36;
|
|
flag3 = true;
|
|
}
|
|
if (Main.tile[x, y + 1].wire())
|
|
{
|
|
num13 += 72;
|
|
flag5 = true;
|
|
}
|
|
if (Main.tile[x - 1, y].wire())
|
|
{
|
|
num13 += 144;
|
|
flag2 = true;
|
|
}
|
|
rectangle.Y = num12;
|
|
rectangle.X = num13;
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor(x, y);
|
|
switch (num2)
|
|
{
|
|
case 0:
|
|
color = Microsoft.Xna.Framework.Color.White;
|
|
break;
|
|
case 2:
|
|
color *= 0.5f;
|
|
break;
|
|
case 3:
|
|
color = Microsoft.Xna.Framework.Color.Transparent;
|
|
break;
|
|
}
|
|
if (color == Microsoft.Xna.Framework.Color.Transparent)
|
|
--num11;
|
|
else
|
|
Main.spriteBatch.Draw(TextureAssets.WireNew.Value, new Vector2((float) (x * 16 - (int) Main.screenPosition.X), (float) (y * 16 - (int) Main.screenPosition.Y)) + zero2, new Microsoft.Xna.Framework.Rectangle?(rectangle), color, 0.0f, zero1, 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
if (tile.wire2())
|
|
{
|
|
int num14;
|
|
bool flag6 = (num14 = 0) != 0;
|
|
bool flag7 = num14 != 0;
|
|
bool flag8 = num14 != 0;
|
|
bool flag9 = num14 != 0;
|
|
bool flag10 = num14 != 0;
|
|
++num11;
|
|
int num15 = 0;
|
|
if (Main.tile[x, y - 1].wire2())
|
|
{
|
|
num15 += 18;
|
|
flag8 = true;
|
|
if (flag4)
|
|
flag6 = true;
|
|
}
|
|
if (Main.tile[x + 1, y].wire2())
|
|
{
|
|
num15 += 36;
|
|
flag9 = true;
|
|
if (flag3)
|
|
flag6 = true;
|
|
}
|
|
if (Main.tile[x, y + 1].wire2())
|
|
{
|
|
num15 += 72;
|
|
flag7 = true;
|
|
if (flag5)
|
|
flag6 = true;
|
|
}
|
|
if (Main.tile[x - 1, y].wire2())
|
|
{
|
|
num15 += 144;
|
|
flag10 = true;
|
|
if (flag2)
|
|
flag6 = true;
|
|
}
|
|
if ((double) num11 > 1.0)
|
|
flag6 = true;
|
|
rectangle.Y = num12 + 18;
|
|
rectangle.X = num15;
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor(x, y);
|
|
switch (num3)
|
|
{
|
|
case 0:
|
|
color = Microsoft.Xna.Framework.Color.White;
|
|
break;
|
|
case 2:
|
|
color *= 0.5f;
|
|
break;
|
|
case 3:
|
|
color = Microsoft.Xna.Framework.Color.Transparent;
|
|
break;
|
|
}
|
|
if (color == Microsoft.Xna.Framework.Color.Transparent)
|
|
{
|
|
--num11;
|
|
}
|
|
else
|
|
{
|
|
Main.spriteBatch.Draw(TextureAssets.WireNew.Value, new Vector2((float) (x * 16 - (int) Main.screenPosition.X), (float) (y * 16 - (int) Main.screenPosition.Y)) + zero2, new Microsoft.Xna.Framework.Rectangle?(rectangle), color * (1f / num11), 0.0f, zero1, 1f, SpriteEffects.None, 0.0f);
|
|
if (flag8)
|
|
{
|
|
if (flag6 && !flag4)
|
|
Main.spriteBatch.Draw(TextureAssets.WireNew.Value, new Vector2((float) (x * 16 - (int) Main.screenPosition.X), (float) (y * 16 - (int) Main.screenPosition.Y)) + zero2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(18, rectangle.Y, 16, 6)), color, 0.0f, zero1, 1f, SpriteEffects.None, 0.0f);
|
|
flag4 = true;
|
|
}
|
|
if (flag7)
|
|
{
|
|
if (flag6 && !flag5)
|
|
Main.spriteBatch.Draw(TextureAssets.WireNew.Value, new Vector2((float) (x * 16 - (int) Main.screenPosition.X), (float) (y * 16 - (int) Main.screenPosition.Y)) + zero2 + new Vector2(0.0f, 10f), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(72, rectangle.Y + 10, 16, 6)), color, 0.0f, zero1, 1f, SpriteEffects.None, 0.0f);
|
|
flag5 = true;
|
|
}
|
|
if (flag9)
|
|
{
|
|
if (flag6 && !flag3)
|
|
Main.spriteBatch.Draw(TextureAssets.WireNew.Value, new Vector2((float) (x * 16 - (int) Main.screenPosition.X), (float) (y * 16 - (int) Main.screenPosition.Y)) + zero2 + new Vector2(10f, 0.0f), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(46, rectangle.Y, 6, 16)), color, 0.0f, zero1, 1f, SpriteEffects.None, 0.0f);
|
|
flag3 = true;
|
|
}
|
|
if (flag10)
|
|
{
|
|
if (flag6 && !flag2)
|
|
Main.spriteBatch.Draw(TextureAssets.WireNew.Value, new Vector2((float) (x * 16 - (int) Main.screenPosition.X), (float) (y * 16 - (int) Main.screenPosition.Y)) + zero2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(144, rectangle.Y, 6, 16)), color, 0.0f, zero1, 1f, SpriteEffects.None, 0.0f);
|
|
flag2 = true;
|
|
}
|
|
}
|
|
}
|
|
if (tile.wire3())
|
|
{
|
|
int num16;
|
|
bool flag11 = (num16 = 0) != 0;
|
|
bool flag12 = num16 != 0;
|
|
bool flag13 = num16 != 0;
|
|
bool flag14 = num16 != 0;
|
|
bool flag15 = num16 != 0;
|
|
++num11;
|
|
int num17 = 0;
|
|
if (Main.tile[x, y - 1].wire3())
|
|
{
|
|
num17 += 18;
|
|
flag13 = true;
|
|
if (flag4)
|
|
flag11 = true;
|
|
}
|
|
if (Main.tile[x + 1, y].wire3())
|
|
{
|
|
num17 += 36;
|
|
flag14 = true;
|
|
if (flag3)
|
|
flag11 = true;
|
|
}
|
|
if (Main.tile[x, y + 1].wire3())
|
|
{
|
|
num17 += 72;
|
|
flag12 = true;
|
|
if (flag5)
|
|
flag11 = true;
|
|
}
|
|
if (Main.tile[x - 1, y].wire3())
|
|
{
|
|
num17 += 144;
|
|
flag15 = true;
|
|
if (flag2)
|
|
flag11 = true;
|
|
}
|
|
if ((double) num11 > 1.0)
|
|
flag11 = true;
|
|
rectangle.Y = num12 + 36;
|
|
rectangle.X = num17;
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor(x, y);
|
|
switch (num4)
|
|
{
|
|
case 0:
|
|
color = Microsoft.Xna.Framework.Color.White;
|
|
break;
|
|
case 2:
|
|
color *= 0.5f;
|
|
break;
|
|
case 3:
|
|
color = Microsoft.Xna.Framework.Color.Transparent;
|
|
break;
|
|
}
|
|
if (color == Microsoft.Xna.Framework.Color.Transparent)
|
|
{
|
|
--num11;
|
|
}
|
|
else
|
|
{
|
|
Main.spriteBatch.Draw(TextureAssets.WireNew.Value, new Vector2((float) (x * 16 - (int) Main.screenPosition.X), (float) (y * 16 - (int) Main.screenPosition.Y)) + zero2, new Microsoft.Xna.Framework.Rectangle?(rectangle), color * (1f / num11), 0.0f, zero1, 1f, SpriteEffects.None, 0.0f);
|
|
if (flag13)
|
|
{
|
|
if (flag11 && !flag4)
|
|
Main.spriteBatch.Draw(TextureAssets.WireNew.Value, new Vector2((float) (x * 16 - (int) Main.screenPosition.X), (float) (y * 16 - (int) Main.screenPosition.Y)) + zero2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(18, rectangle.Y, 16, 6)), color, 0.0f, zero1, 1f, SpriteEffects.None, 0.0f);
|
|
flag4 = true;
|
|
}
|
|
if (flag12)
|
|
{
|
|
if (flag11 && !flag5)
|
|
Main.spriteBatch.Draw(TextureAssets.WireNew.Value, new Vector2((float) (x * 16 - (int) Main.screenPosition.X), (float) (y * 16 - (int) Main.screenPosition.Y)) + zero2 + new Vector2(0.0f, 10f), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(72, rectangle.Y + 10, 16, 6)), color, 0.0f, zero1, 1f, SpriteEffects.None, 0.0f);
|
|
flag5 = true;
|
|
}
|
|
if (flag14)
|
|
{
|
|
if (flag11 && !flag3)
|
|
Main.spriteBatch.Draw(TextureAssets.WireNew.Value, new Vector2((float) (x * 16 - (int) Main.screenPosition.X), (float) (y * 16 - (int) Main.screenPosition.Y)) + zero2 + new Vector2(10f, 0.0f), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(46, rectangle.Y, 6, 16)), color, 0.0f, zero1, 1f, SpriteEffects.None, 0.0f);
|
|
flag3 = true;
|
|
}
|
|
if (flag15)
|
|
{
|
|
if (flag11 && !flag2)
|
|
Main.spriteBatch.Draw(TextureAssets.WireNew.Value, new Vector2((float) (x * 16 - (int) Main.screenPosition.X), (float) (y * 16 - (int) Main.screenPosition.Y)) + zero2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(144, rectangle.Y, 6, 16)), color, 0.0f, zero1, 1f, SpriteEffects.None, 0.0f);
|
|
flag2 = true;
|
|
}
|
|
}
|
|
}
|
|
if (tile.wire4())
|
|
{
|
|
int num18;
|
|
bool flag16 = (num18 = 0) != 0;
|
|
bool flag17 = num18 != 0;
|
|
bool flag18 = num18 != 0;
|
|
bool flag19 = num18 != 0;
|
|
bool flag20 = num18 != 0;
|
|
float num19 = num11 + 1f;
|
|
int num20 = 0;
|
|
if (Main.tile[x, y - 1].wire4())
|
|
{
|
|
num20 += 18;
|
|
flag18 = true;
|
|
if (flag4)
|
|
flag16 = true;
|
|
}
|
|
if (Main.tile[x + 1, y].wire4())
|
|
{
|
|
num20 += 36;
|
|
flag19 = true;
|
|
if (flag3)
|
|
flag16 = true;
|
|
}
|
|
if (Main.tile[x, y + 1].wire4())
|
|
{
|
|
num20 += 72;
|
|
flag17 = true;
|
|
if (flag5)
|
|
flag16 = true;
|
|
}
|
|
if (Main.tile[x - 1, y].wire4())
|
|
{
|
|
num20 += 144;
|
|
flag20 = true;
|
|
if (flag2)
|
|
flag16 = true;
|
|
}
|
|
if ((double) num19 > 1.0)
|
|
flag16 = true;
|
|
rectangle.Y = num12 + 54;
|
|
rectangle.X = num20;
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor(x, y);
|
|
switch (num5)
|
|
{
|
|
case 0:
|
|
color = Microsoft.Xna.Framework.Color.White;
|
|
break;
|
|
case 2:
|
|
color *= 0.5f;
|
|
break;
|
|
case 3:
|
|
color = Microsoft.Xna.Framework.Color.Transparent;
|
|
break;
|
|
}
|
|
if (color == Microsoft.Xna.Framework.Color.Transparent)
|
|
{
|
|
float num21 = num19 - 1f;
|
|
}
|
|
else
|
|
{
|
|
Main.spriteBatch.Draw(TextureAssets.WireNew.Value, new Vector2((float) (x * 16 - (int) Main.screenPosition.X), (float) (y * 16 - (int) Main.screenPosition.Y)) + zero2, new Microsoft.Xna.Framework.Rectangle?(rectangle), color * (1f / num19), 0.0f, zero1, 1f, SpriteEffects.None, 0.0f);
|
|
if (flag18)
|
|
{
|
|
if (flag16 && !flag4)
|
|
Main.spriteBatch.Draw(TextureAssets.WireNew.Value, new Vector2((float) (x * 16 - (int) Main.screenPosition.X), (float) (y * 16 - (int) Main.screenPosition.Y)) + zero2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(18, rectangle.Y, 16, 6)), color, 0.0f, zero1, 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
if (flag17)
|
|
{
|
|
if (flag16 && !flag5)
|
|
Main.spriteBatch.Draw(TextureAssets.WireNew.Value, new Vector2((float) (x * 16 - (int) Main.screenPosition.X), (float) (y * 16 - (int) Main.screenPosition.Y)) + zero2 + new Vector2(0.0f, 10f), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(72, rectangle.Y + 10, 16, 6)), color, 0.0f, zero1, 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
if (flag19)
|
|
{
|
|
if (flag16 && !flag3)
|
|
Main.spriteBatch.Draw(TextureAssets.WireNew.Value, new Vector2((float) (x * 16 - (int) Main.screenPosition.X), (float) (y * 16 - (int) Main.screenPosition.Y)) + zero2 + new Vector2(10f, 0.0f), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(46, rectangle.Y, 6, 16)), color, 0.0f, zero1, 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
if (flag20)
|
|
{
|
|
if (flag16 && !flag2)
|
|
Main.spriteBatch.Draw(TextureAssets.WireNew.Value, new Vector2((float) (x * 16 - (int) Main.screenPosition.X), (float) (y * 16 - (int) Main.screenPosition.Y)) + zero2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(144, rectangle.Y, 6, 16)), color, 0.0f, zero1, 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (Main.tile[x, y].actuator() && ((double) Lighting.Brightness(x, y) > 0.0 || num6 == 0))
|
|
{
|
|
Microsoft.Xna.Framework.Color color = Lighting.GetColor(x, y);
|
|
switch (num6)
|
|
{
|
|
case 0:
|
|
color = Microsoft.Xna.Framework.Color.White;
|
|
break;
|
|
case 2:
|
|
color *= 0.5f;
|
|
break;
|
|
case 3:
|
|
color = Microsoft.Xna.Framework.Color.Transparent;
|
|
break;
|
|
}
|
|
Main.spriteBatch.Draw(TextureAssets.Actuator.Value, new Vector2((float) (x * 16 - (int) Main.screenPosition.X), (float) (y * 16 - (int) Main.screenPosition.Y)) + zero2, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Actuator.Width(), TextureAssets.Actuator.Height())), color * num1, 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
if (tile.active() && tile.type == (ushort) 423 && tile.frameY == (short) 36)
|
|
this.DrawWiresSpecialTiles.Add(Tuple.Create<int, int, ushort>(x, y, tile.type));
|
|
}
|
|
}
|
|
for (int index = 0; index < this.DrawWiresSpecialTiles.Count; ++index)
|
|
{
|
|
Tuple<int, int, ushort> wiresSpecialTile = this.DrawWiresSpecialTiles[index];
|
|
if (wiresSpecialTile.Item3 == (ushort) 423)
|
|
{
|
|
Vector2 start = new Vector2((float) (wiresSpecialTile.Item1 * 16 - 32 - 1), (float) (wiresSpecialTile.Item2 * 16 - 160 - 1)) + zero2;
|
|
Vector2 end = new Vector2((float) (wiresSpecialTile.Item1 * 16 + 48 + 1), (float) (wiresSpecialTile.Item2 * 16 + 1)) + zero2;
|
|
Utils.DrawRectangle(Main.spriteBatch, start, end, Microsoft.Xna.Framework.Color.LightSeaGreen, Microsoft.Xna.Framework.Color.LightSeaGreen, 2f);
|
|
}
|
|
}
|
|
TimeLogger.DetailedDrawTime(34);
|
|
}
|
|
|
|
public static int ConvertPaintIdToTileShaderIndex(
|
|
int paintIndexOnTile,
|
|
bool isUsedForPaintingGrass,
|
|
bool useWallShaderHacks)
|
|
{
|
|
if (paintIndexOnTile == 31)
|
|
return 0;
|
|
if (paintIndexOnTile == 30 & useWallShaderHacks)
|
|
return 43;
|
|
if (paintIndexOnTile >= 28)
|
|
return paintIndexOnTile + 12;
|
|
return isUsedForPaintingGrass && paintIndexOnTile >= 1 && paintIndexOnTile <= 12 ? paintIndexOnTile + 27 : paintIndexOnTile;
|
|
}
|
|
|
|
public static void ResetWindCounter(bool resetExtreme = false)
|
|
{
|
|
FastRandom withRandomSeed = FastRandom.CreateWithRandomSeed();
|
|
Main.windCounter = withRandomSeed.Next(900, 2701);
|
|
if (!resetExtreme)
|
|
return;
|
|
Main.extremeWindCounter = withRandomSeed.Next(10, 31);
|
|
}
|
|
|
|
public static void NewLightning()
|
|
{
|
|
if (Main.DisableIntenseVisualEffects)
|
|
return;
|
|
Main.thunderDelay = Main.rand.Next(3) != 0 ? (Main.rand.Next(2) != 0 ? Main.rand.Next(11, 61) : Main.rand.Next(31, 121)) : Main.rand.Next(1, 31);
|
|
Main.thunderDistance = Main.thunderDelay;
|
|
Main.lightningDecay = (float) ((double) Main.rand.NextFloat() * 0.0500000007450581 + 0.00800000037997961);
|
|
Main.lightningSpeed = (float) ((double) Main.rand.NextFloat() * 0.0500000007450581 + 0.0500000007450581);
|
|
}
|
|
|
|
public void UpdateWeather(GameTime gameTime)
|
|
{
|
|
if (Main.netMode != 2)
|
|
{
|
|
bool isActive = this.IsActive;
|
|
if (Main.thunderDelay > 0)
|
|
{
|
|
--Main.thunderDelay;
|
|
if (Main.thunderDelay == 0)
|
|
{
|
|
Vector2 center = Main.player[Main.myPlayer].Center;
|
|
float num1 = (float) (Main.thunderDistance * 15);
|
|
if (Main.rand.Next(2) == 0)
|
|
num1 *= -1f;
|
|
center.X += num1;
|
|
int num2 = (int) (Main.worldSurface * 16.0) - 500;
|
|
if ((double) center.Y > (double) num2)
|
|
center.Y = (float) num2;
|
|
if (isActive)
|
|
SoundEngine.PlaySound(43, center);
|
|
}
|
|
}
|
|
if ((double) Main.lightningSpeed > 0.0)
|
|
{
|
|
Main.lightning += Main.lightningSpeed;
|
|
if ((double) Main.lightning >= 1.0)
|
|
{
|
|
Main.lightning = 1f;
|
|
Main.lightningSpeed = 0.0f;
|
|
}
|
|
Lighting.LightTiles(this.firstTileX, this.lastTileX, this.firstTileY, this.lastTileY);
|
|
Lighting.LightTiles(this.firstTileX, this.lastTileX, this.firstTileY, this.lastTileY);
|
|
}
|
|
else if ((double) Main.lightning > 0.0)
|
|
{
|
|
Main.lightning -= Main.lightningDecay;
|
|
Lighting.LightTiles(this.firstTileX, this.lastTileX, this.firstTileY, this.lastTileY);
|
|
Lighting.LightTiles(this.firstTileX, this.lastTileX, this.firstTileY, this.lastTileY);
|
|
}
|
|
else if (Main.thunderDelay <= 0 && (double) Main.player[Main.myPlayer].position.Y < Main.rockLayer * 16.0 && (double) Main.atmo == 1.0)
|
|
{
|
|
if (Main.IsItStorming)
|
|
{
|
|
float num3 = 600f;
|
|
float num4 = 1600f;
|
|
if ((double) Main.maxRaining > 0.8)
|
|
{
|
|
num3 *= 0.6f;
|
|
num4 *= 0.8f;
|
|
}
|
|
if ((double) Main.maxRaining > 0.7)
|
|
{
|
|
num3 *= 0.7f;
|
|
num4 *= 0.9f;
|
|
}
|
|
if ((double) Main.maxRaining > 0.6)
|
|
{
|
|
num3 *= 0.8f;
|
|
num4 *= 0.95f;
|
|
}
|
|
if ((double) Math.Abs(Main.windSpeedTarget) > 0.7)
|
|
{
|
|
num3 *= 0.6f;
|
|
num4 *= 0.8f;
|
|
}
|
|
if ((double) Math.Abs(Main.windSpeedTarget) > 0.6)
|
|
{
|
|
num3 *= 0.7f;
|
|
num4 *= 0.9f;
|
|
}
|
|
if ((double) Math.Abs(Main.windSpeedTarget) > 0.5)
|
|
{
|
|
num3 *= 0.8f;
|
|
num4 *= 0.95f;
|
|
}
|
|
float num5 = (float) Main.rand.Next((int) num3, (int) num4) * (float) ((1.0 - (double) Main.maxRaining + 1.0) / 2.0) * (float) ((1.0 - (double) Main.windSpeedTarget + 1.0) / 2.0) * (float) Main.dayRate;
|
|
if (Main.rand.Next((int) num5) == 0)
|
|
Main.NewLightning();
|
|
}
|
|
else if ((double) Main.GraveyardVisualIntensity >= 0.9 && Main.rand.Next(7200) == 0)
|
|
Main.NewLightning();
|
|
}
|
|
}
|
|
float num6 = 0.8f;
|
|
float num7 = 0.0003f;
|
|
float num8 = Main.windSpeedTarget * (float) (1.0 + 0.555555582046509 * (double) Main.maxRaining);
|
|
bool enabled = CreativePowerManager.Instance.GetPower<CreativePowers.FreezeWindDirectionAndStrength>().Enabled;
|
|
if (!enabled && LanternNight.LanternsUp)
|
|
Main.windSpeedTarget = 0.0f;
|
|
float num9 = num7 + Math.Abs(num8 - Main.windSpeedCurrent) * 0.0015f;
|
|
if ((double) Main.windSpeedCurrent < (double) num8)
|
|
{
|
|
Main.windSpeedCurrent += num9;
|
|
if ((double) Main.windSpeedCurrent > (double) num8)
|
|
Main.windSpeedCurrent = num8;
|
|
}
|
|
else if ((double) Main.windSpeedCurrent > (double) num8)
|
|
{
|
|
Main.windSpeedCurrent -= num9;
|
|
if ((double) Main.windSpeedCurrent < (double) num8)
|
|
Main.windSpeedCurrent = num8;
|
|
}
|
|
switch (Main.netMode)
|
|
{
|
|
case 1:
|
|
break;
|
|
case 2:
|
|
if (!enabled && LanternNight.LanternsUp)
|
|
break;
|
|
if (!enabled)
|
|
{
|
|
--Main.windCounter;
|
|
if (Main.windCounter <= 0)
|
|
{
|
|
float num10 = 1f;
|
|
if ((double) Main.windSpeedTarget < 0.0)
|
|
num10 = -1f;
|
|
if (Main.rand.Next(4) == 0)
|
|
Main.windSpeedTarget += (float) Main.rand.Next(-25, 26) * (1f / 1000f);
|
|
else if (Main.rand.Next(2) == 0)
|
|
Main.windSpeedTarget += (float) Main.rand.Next(-50, 51) * (1f / 1000f);
|
|
else
|
|
Main.windSpeedTarget += (float) Main.rand.Next(-100, 101) * (1f / 1000f);
|
|
--Main.extremeWindCounter;
|
|
if (Main.extremeWindCounter <= 0)
|
|
{
|
|
Main.ResetWindCounter(true);
|
|
if (Main.rand.Next(30) < 13)
|
|
{
|
|
if (Main.rand.Next(2) == 0)
|
|
{
|
|
Main.windSpeedTarget = 0.0f;
|
|
Main.windCounter = Main.rand.Next(7200, 28801);
|
|
}
|
|
else
|
|
Main.windSpeedTarget = (float) Main.rand.Next(-200, 201) * (1f / 1000f);
|
|
}
|
|
else
|
|
Main.windSpeedTarget = Main.rand.Next(20) >= 13 ? (float) Main.rand.Next(-850, 851) * (1f / 1000f) : (float) Main.rand.Next(-400, 401) * (1f / 1000f);
|
|
if ((double) Math.Abs(Main.windSpeedTarget) > 0.3)
|
|
Main.extremeWindCounter += Main.rand.Next(5, 11);
|
|
if ((double) Math.Abs(Main.windSpeedTarget) > 0.5)
|
|
Main.extremeWindCounter += Main.rand.Next(10, 21);
|
|
if ((double) Math.Abs(Main.windSpeedTarget) > 0.7)
|
|
Main.extremeWindCounter += Main.rand.Next(15, 31);
|
|
}
|
|
else
|
|
Main.ResetWindCounter();
|
|
if (Main.rand.Next(3) != 0 && ((double) num10 < 0.0 && (double) Main.windSpeedTarget > 0.0 || (double) num10 > 0.0 && (double) Main.windSpeedTarget < 0.0))
|
|
Main.windSpeedTarget *= -1f;
|
|
}
|
|
if ((double) Main.windSpeedTarget > (double) num6)
|
|
Main.windSpeedTarget = num6;
|
|
if ((double) Main.windSpeedTarget < -(double) num6)
|
|
Main.windSpeedTarget = -num6;
|
|
}
|
|
if (Main.rand.Next(60) == 0)
|
|
Main.numCloudsTemp += Main.rand.Next(-1, 2);
|
|
if ((double) Main.rand.Next(1000) < 50.0 * (double) Main.cloudBGAlpha)
|
|
++Main.numCloudsTemp;
|
|
if ((double) Main.rand.Next(1300) < 25.0 * (1.0 - (double) Main.cloudBGAlpha))
|
|
--Main.numCloudsTemp;
|
|
if ((double) Main.rand.Next(1000) < 200.0 * (double) Main.cloudAlpha && Main.numCloudsTemp < 100)
|
|
++Main.numCloudsTemp;
|
|
if ((double) Main.rand.Next(1000) < 50.0 * (double) Main.cloudAlpha)
|
|
++Main.numCloudsTemp;
|
|
if (Main.numCloudsTemp > 66 && Main.rand.Next(100) == 0)
|
|
Main.numCloudsTemp -= Main.rand.Next(1, 3);
|
|
if (Main.numCloudsTemp < 50 && Main.rand.Next(100) == 0)
|
|
Main.numCloudsTemp += Main.rand.Next(1, 3);
|
|
if ((double) Main.cloudBGActive <= 0.0 && Main.numCloudsTemp > 100 && (double) Main.cloudAlpha == 0.0)
|
|
Main.numCloudsTemp = 100;
|
|
if (Main.numCloudsTemp < -20)
|
|
Main.numCloudsTemp = -20;
|
|
if ((double) Main.cloudAlpha > 0.0 && (double) Main.numClouds < 200.0 * (double) Main.cloudAlpha)
|
|
{
|
|
while ((double) Main.numClouds < 200.0 * (double) Main.cloudAlpha)
|
|
{
|
|
Main.numClouds += Main.rand.Next(30);
|
|
if (Main.numClouds > 200)
|
|
Main.numClouds = 200;
|
|
if (Main.numCloudsTemp < Main.numClouds)
|
|
Main.numCloudsTemp = Main.numClouds;
|
|
}
|
|
if (Main.netMode == 2)
|
|
NetMessage.SendData(7);
|
|
}
|
|
--Main.weatherCounter;
|
|
if (Main.weatherCounter > 0)
|
|
break;
|
|
if (Main.rand.Next(2) == 0)
|
|
{
|
|
if (Main.rand.Next(2) == 0)
|
|
Main.numCloudsTemp += Main.rand.Next(250);
|
|
else
|
|
Main.numCloudsTemp += Main.rand.Next(100);
|
|
}
|
|
if (Main.numCloudsTemp < 0)
|
|
Main.numCloudsTemp = 0;
|
|
if (Main.numCloudsTemp > 200)
|
|
Main.numCloudsTemp = 200;
|
|
Main.numClouds = Main.numCloudsTemp;
|
|
Main.weatherCounter = Main.rand.Next(3600, 10800);
|
|
if (Main.netMode != 2)
|
|
break;
|
|
NetMessage.SendData(7);
|
|
break;
|
|
default:
|
|
if (Main.gameMenu)
|
|
break;
|
|
goto case 2;
|
|
}
|
|
}
|
|
|
|
public void LoadBackground(int i)
|
|
{
|
|
if (i < 0 || TextureAssets.Background[i].State != null)
|
|
return;
|
|
Main.Assets.Request<Texture2D>(TextureAssets.Background[i].Name, (AssetRequestMode) 1);
|
|
Main.backgroundWidth[i] = TextureAssets.Background[i].Width();
|
|
Main.backgroundHeight[i] = TextureAssets.Background[i].Height();
|
|
switch (i)
|
|
{
|
|
case 219:
|
|
case 220:
|
|
case 221:
|
|
case 235:
|
|
case 271:
|
|
case 272:
|
|
case 273:
|
|
case 281:
|
|
Main.backgroundWidth[i] /= 2;
|
|
Main.backgroundHeight[i] /= 2;
|
|
break;
|
|
}
|
|
}
|
|
|
|
public void LoadItem(int i)
|
|
{
|
|
if (TextureAssets.Item[i].State != null)
|
|
return;
|
|
Main.Assets.Request<Texture2D>(TextureAssets.Item[i].Name, (AssetRequestMode) 1);
|
|
}
|
|
|
|
public void LoadNPC(int i)
|
|
{
|
|
if (TextureAssets.Npc[i].State != null)
|
|
return;
|
|
Main.Assets.Request<Texture2D>(TextureAssets.Npc[i].Name, (AssetRequestMode) 1);
|
|
}
|
|
|
|
public void LoadProjectile(int i)
|
|
{
|
|
if (TextureAssets.Projectile[i].State != null)
|
|
return;
|
|
Main.Assets.Request<Texture2D>(TextureAssets.Projectile[i].Name, (AssetRequestMode) 1);
|
|
}
|
|
|
|
public void LoadGore(int i)
|
|
{
|
|
if (TextureAssets.Gore[i].State != null)
|
|
return;
|
|
Main.Assets.Request<Texture2D>(TextureAssets.Gore[i].Name, (AssetRequestMode) 1);
|
|
}
|
|
|
|
public void LoadWall(int i)
|
|
{
|
|
if (TextureAssets.Wall[i].State != null)
|
|
return;
|
|
Main.Assets.Request<Texture2D>(TextureAssets.Wall[i].Name, (AssetRequestMode) 1);
|
|
}
|
|
|
|
public void LoadTiles(int i)
|
|
{
|
|
if (TextureAssets.Tile[i].State != null)
|
|
return;
|
|
Main.Assets.Request<Texture2D>(TextureAssets.Tile[i].Name, (AssetRequestMode) 1);
|
|
}
|
|
|
|
public void LoadItemFlames(int i)
|
|
{
|
|
if (TextureAssets.ItemFlame[i].State != null)
|
|
return;
|
|
try
|
|
{
|
|
Main.Assets.Request<Texture2D>(TextureAssets.ItemFlame[i].Name, (AssetRequestMode) 1);
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
}
|
|
|
|
public void LoadWings(int i)
|
|
{
|
|
if (TextureAssets.Wings[i].State != null)
|
|
return;
|
|
Main.Assets.Request<Texture2D>(TextureAssets.Wings[i].Name, (AssetRequestMode) 1);
|
|
}
|
|
|
|
public void LoadHair(int i)
|
|
{
|
|
if (TextureAssets.PlayerHair[i].State != null)
|
|
return;
|
|
Main.Assets.Request<Texture2D>(TextureAssets.PlayerHair[i].Name, (AssetRequestMode) 1);
|
|
Main.Assets.Request<Texture2D>(TextureAssets.PlayerHairAlt[i].Name, (AssetRequestMode) 1);
|
|
}
|
|
|
|
public void LoadArmorHead(int i)
|
|
{
|
|
if (TextureAssets.ArmorHead[i].State != null)
|
|
return;
|
|
Main.Assets.Request<Texture2D>(TextureAssets.ArmorHead[i].Name, (AssetRequestMode) 1);
|
|
}
|
|
|
|
public void LoadArmorBody(int i)
|
|
{
|
|
if (ArmorIDs.Body.Sets.UsesNewFramingCode[i])
|
|
{
|
|
if (TextureAssets.ArmorBodyComposite[i].State != null)
|
|
return;
|
|
Main.Assets.Request<Texture2D>(TextureAssets.ArmorBodyComposite[i].Name, (AssetRequestMode) 1);
|
|
}
|
|
else
|
|
{
|
|
if (TextureAssets.ArmorBody[i].State != null)
|
|
return;
|
|
Main.Assets.Request<Texture2D>(TextureAssets.FemaleBody[i].Name, (AssetRequestMode) 1);
|
|
Main.Assets.Request<Texture2D>(TextureAssets.ArmorBody[i].Name, (AssetRequestMode) 1);
|
|
Main.Assets.Request<Texture2D>(TextureAssets.ArmorArm[i].Name, (AssetRequestMode) 1);
|
|
}
|
|
}
|
|
|
|
public void LoadArmorLegs(int i)
|
|
{
|
|
if (TextureAssets.ArmorLeg[i].State != null)
|
|
return;
|
|
Main.Assets.Request<Texture2D>(TextureAssets.ArmorLeg[i].Name, (AssetRequestMode) 1);
|
|
}
|
|
|
|
public void LoadAccHandsOn(int i)
|
|
{
|
|
if (TextureAssets.AccHandsOn[i].State == null)
|
|
Main.Assets.Request<Texture2D>(TextureAssets.AccHandsOn[i].Name, (AssetRequestMode) 1);
|
|
if (!ArmorIDs.HandOn.Sets.UsesNewFramingCode[i] || TextureAssets.AccHandsOnComposite[i].State != null)
|
|
return;
|
|
Main.Assets.Request<Texture2D>(TextureAssets.AccHandsOnComposite[i].Name, (AssetRequestMode) 1);
|
|
}
|
|
|
|
public void LoadAccHandsOff(int i)
|
|
{
|
|
if (TextureAssets.AccHandsOff[i].State == null)
|
|
Main.Assets.Request<Texture2D>(TextureAssets.AccHandsOff[i].Name, (AssetRequestMode) 1);
|
|
if (!ArmorIDs.HandOff.Sets.UsesNewFramingCode[i] || TextureAssets.AccHandsOffComposite[i].State != null)
|
|
return;
|
|
Main.Assets.Request<Texture2D>(TextureAssets.AccHandsOffComposite[i].Name, (AssetRequestMode) 1);
|
|
}
|
|
|
|
public void LoadAccBack(int i)
|
|
{
|
|
if (TextureAssets.AccBack[i].State != null)
|
|
return;
|
|
Main.Assets.Request<Texture2D>(TextureAssets.AccBack[i].Name, (AssetRequestMode) 1);
|
|
}
|
|
|
|
public void LoadAccFront(int i)
|
|
{
|
|
if (TextureAssets.AccFront[i].State != null)
|
|
return;
|
|
Main.Assets.Request<Texture2D>(TextureAssets.AccFront[i].Name, (AssetRequestMode) 1);
|
|
}
|
|
|
|
public void LoadAccShoes(int i)
|
|
{
|
|
if (TextureAssets.AccShoes[i].State != null)
|
|
return;
|
|
Main.Assets.Request<Texture2D>(TextureAssets.AccShoes[i].Name, (AssetRequestMode) 1);
|
|
}
|
|
|
|
public void LoadAccWaist(int i)
|
|
{
|
|
if (TextureAssets.AccWaist[i].State != null)
|
|
return;
|
|
Main.Assets.Request<Texture2D>(TextureAssets.AccWaist[i].Name, (AssetRequestMode) 1);
|
|
}
|
|
|
|
public void LoadAccShield(int i)
|
|
{
|
|
if (TextureAssets.AccShield[i].State != null)
|
|
return;
|
|
Main.Assets.Request<Texture2D>(TextureAssets.AccShield[i].Name, (AssetRequestMode) 1);
|
|
}
|
|
|
|
public void LoadAccNeck(int i)
|
|
{
|
|
if (TextureAssets.AccNeck[i].State != null)
|
|
return;
|
|
Main.Assets.Request<Texture2D>(TextureAssets.AccNeck[i].Name, (AssetRequestMode) 1);
|
|
}
|
|
|
|
public void LoadAccFace(int i)
|
|
{
|
|
if (TextureAssets.AccFace[i].State != null)
|
|
return;
|
|
Main.Assets.Request<Texture2D>(TextureAssets.AccFace[i].Name, (AssetRequestMode) 1);
|
|
}
|
|
|
|
public void LoadAccBalloon(int i)
|
|
{
|
|
if (TextureAssets.AccBalloon[i].State != null)
|
|
return;
|
|
Main.Assets.Request<Texture2D>(TextureAssets.AccBalloon[i].Name, (AssetRequestMode) 1);
|
|
}
|
|
|
|
public void LoadFlameRing()
|
|
{
|
|
if (TextureAssets.FlameRing.State != null)
|
|
return;
|
|
Main.Assets.Request<Texture2D>(TextureAssets.FlameRing.Name, (AssetRequestMode) 1);
|
|
}
|
|
|
|
protected void DrawSurfaceBG()
|
|
{
|
|
Microsoft.Xna.Framework.Color surfaceBackgroundsBase = Main.ColorOfSurfaceBackgroundsBase;
|
|
int num1 = 30;
|
|
if (Main.gameMenu)
|
|
num1 = 0;
|
|
if (WorldGen.drunkWorldGen)
|
|
num1 = -180;
|
|
float num2 = (float) Main.worldSurface;
|
|
if ((double) num2 == 0.0)
|
|
num2 = 1f;
|
|
Vector2 screenPosition = Main.screenPosition;
|
|
double num3 = (double) Main.screenPosition.Y + (double) (Main.screenHeight / 2) - 600.0;
|
|
double num4 = -(double) MathHelper.Lerp((float) ((num3 - (double) this.screenOff / 2.0) / ((double) num2 * 16.0)), 1f, 0.0f);
|
|
double backgroundTopMagicNumber = (-num3 + (double) this.screenOff / 2.0) / ((double) num2 * 16.0);
|
|
float bgGlobalScaleMultiplier = 2f;
|
|
int num5 = 0;
|
|
float num6 = SkyManager.Instance.ProcessCloudAlpha() * Main.atmo;
|
|
if (!Main.mapFullscreen && (double) Main.screenPosition.Y < Main.worldSurface * 16.0 + 16.0)
|
|
{
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.cloud[index].active && (double) Main.cloud[index].scale < 1.0)
|
|
{
|
|
Microsoft.Xna.Framework.Color color = Main.cloud[index].cloudColor(Main.ColorOfTheSkies);
|
|
float num7 = Main.cloud[index].scale * 0.8f;
|
|
float num8 = (float) (((double) Main.cloud[index].scale + 1.0) / 2.0 * 0.899999976158142);
|
|
color.R = (byte) ((double) color.R * (double) num7);
|
|
color.G = (byte) ((double) color.G * (double) num8);
|
|
float num9 = Main.cloud[index].position.Y * ((float) Main.screenHeight / 600f);
|
|
float num10 = Main.cloud[index].position.Y + (float) (int) (backgroundTopMagicNumber * 750.0 + 830.0) + (float) (int) this.scAdj + (float) num5;
|
|
Main.spriteBatch.Draw(TextureAssets.Cloud[Main.cloud[index].type].Value, new Vector2(Main.cloud[index].position.X + (float) TextureAssets.Cloud[Main.cloud[index].type].Width() * 0.5f, num10 + (float) TextureAssets.Cloud[Main.cloud[index].type].Height() * 0.5f), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Cloud[Main.cloud[index].type].Width(), TextureAssets.Cloud[Main.cloud[index].type].Height())), color * num6, Main.cloud[index].rotation, new Vector2((float) TextureAssets.Cloud[Main.cloud[index].type].Width() * 0.5f, (float) TextureAssets.Cloud[Main.cloud[index].type].Height() * 0.5f), Main.cloud[index].scale, Main.cloud[index].spriteDir, 0.0f);
|
|
}
|
|
}
|
|
}
|
|
if (Main.invasionType == 4 && !SkyManager.Instance["Martian"].IsActive())
|
|
SkyManager.Instance.Activate("Martian", new Vector2());
|
|
else if (Main.invasionType != 4 && SkyManager.Instance["Martian"].IsActive())
|
|
SkyManager.Instance.Deactivate("Martian");
|
|
SkyManager.Instance.ResetDepthTracker();
|
|
this.bgParallax = 0.15;
|
|
int num11 = -180;
|
|
bool flag = true;
|
|
int num12 = 0;
|
|
if (Main.gameMenu)
|
|
num12 -= num11;
|
|
int pushBGTopHack = num12 + num1;
|
|
if (!WorldGen.drunkWorldGen && !Main.mapFullscreen && (double) Main.screenPosition.Y / 16.0 <= Main.worldSurface + 10.0)
|
|
{
|
|
if (Main.BackgroundEnabled)
|
|
{
|
|
if ((double) Main.cloudBGActive > 0.0)
|
|
{
|
|
Main.cloudBGAlpha += 0.0005f * (float) Main.dayRate;
|
|
if ((double) Main.cloudBGAlpha > 1.0)
|
|
Main.cloudBGAlpha = 1f;
|
|
}
|
|
else
|
|
{
|
|
Main.cloudBGAlpha -= 0.0005f * (float) Main.dayRate;
|
|
if ((double) Main.cloudBGAlpha < 0.0)
|
|
Main.cloudBGAlpha = 0.0f;
|
|
}
|
|
if ((double) Main.cloudBGAlpha > 0.0)
|
|
{
|
|
this.LoadBackground(Main.cloudBG[0]);
|
|
this.LoadBackground(Main.cloudBG[1]);
|
|
float num13 = Main.cloudBGAlpha;
|
|
if ((double) num13 > 1.0)
|
|
num13 = 1f;
|
|
Main.bgScale = 1.65f;
|
|
this.bgParallax = 0.0900000035762787;
|
|
if (this.IsActive && !Main.gamePaused)
|
|
Main.cloudBGX[0] += (float) ((double) Main.windSpeedCurrent * this.bgParallax * 9.0) * (float) Main.dayRate;
|
|
if ((double) Main.cloudBGX[0] > (double) Main.backgroundWidth[Main.cloudBG[0]] * (double) Main.bgScale)
|
|
Main.cloudBGX[0] -= (float) Main.backgroundWidth[Main.cloudBG[0]] * Main.bgScale;
|
|
if ((double) Main.cloudBGX[0] < (double) -Main.backgroundWidth[Main.cloudBG[0]] * (double) Main.bgScale)
|
|
Main.cloudBGX[0] += (float) Main.backgroundWidth[Main.cloudBG[0]] * Main.bgScale;
|
|
float num14 = (float) Main.backgroundWidth[Main.cloudBG[0]] * Main.bgScale;
|
|
this.bgTopY = (int) (backgroundTopMagicNumber * 900.0 + 600.0) + (int) this.scAdj + pushBGTopHack;
|
|
if (Main.gameMenu)
|
|
this.bgTopY = pushBGTopHack - 150;
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) Main.screenPosition.X * this.bgParallax, (double) num14) - (double) num14 / 2.0 - (double) num14);
|
|
this.bgStartX += (int) Main.cloudBGX[0];
|
|
this.bgLoops = Main.screenWidth / (int) num14 + 2 + 2;
|
|
Main.ColorOfSurfaceBackgroundsModified = surfaceBackgroundsBase * num13;
|
|
SkyManager.Instance.DrawToDepth(Main.spriteBatch, 1f / (float) this.bgParallax);
|
|
for (int index = 0; index < this.bgLoops; ++index)
|
|
Main.spriteBatch.Draw(TextureAssets.Background[Main.cloudBG[0]].Value, new Vector2((float) this.bgStartX + num14 * (float) index, (float) this.bgTopY), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, Main.backgroundWidth[Main.cloudBG[0]], Main.backgroundHeight[Main.cloudBG[0]])), Main.ColorOfSurfaceBackgroundsModified * num6, 0.0f, new Vector2(), Main.bgScale, SpriteEffects.None, 0.0f);
|
|
float num15 = Main.cloudBGAlpha * 1.5f;
|
|
if ((double) num15 > 1.0)
|
|
num15 = 1f;
|
|
Main.ColorOfSurfaceBackgroundsModified = surfaceBackgroundsBase * num15;
|
|
Main.bgScale = 1.85f;
|
|
this.bgParallax = 0.12;
|
|
if (this.IsActive && !Main.gamePaused)
|
|
Main.cloudBGX[1] += (float) ((double) Main.windSpeedCurrent * this.bgParallax * 9.0) * (float) Main.dayRate;
|
|
if ((double) Main.cloudBGX[1] > (double) Main.backgroundWidth[Main.cloudBG[1]] * (double) Main.bgScale)
|
|
Main.cloudBGX[1] -= (float) Main.backgroundWidth[Main.cloudBG[1]] * Main.bgScale;
|
|
if ((double) Main.cloudBGX[1] < (double) -Main.backgroundWidth[Main.cloudBG[1]] * (double) Main.bgScale)
|
|
Main.cloudBGX[1] += (float) Main.backgroundWidth[Main.cloudBG[1]] * Main.bgScale;
|
|
float num16 = (float) Main.backgroundWidth[Main.cloudBG[1]] * Main.bgScale;
|
|
this.bgTopY = (int) (backgroundTopMagicNumber * 1100.0 + 750.0) + (int) this.scAdj + pushBGTopHack;
|
|
if (Main.gameMenu)
|
|
this.bgTopY = pushBGTopHack - 50;
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) Main.screenPosition.X * this.bgParallax, (double) num16) - (double) num16 / 2.0 - (double) num16);
|
|
this.bgStartX += (int) Main.cloudBGX[1];
|
|
this.bgLoops = Main.screenWidth / (int) num16 + 2 + 2;
|
|
SkyManager.Instance.DrawToDepth(Main.spriteBatch, 1f / (float) this.bgParallax);
|
|
for (int index = 0; index < this.bgLoops; ++index)
|
|
Main.spriteBatch.Draw(TextureAssets.Background[Main.cloudBG[1]].Value, new Vector2((float) this.bgStartX + num16 * (float) index, (float) this.bgTopY), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, Main.backgroundWidth[Main.cloudBG[1]], Main.backgroundHeight[Main.cloudBG[1]])), Main.ColorOfSurfaceBackgroundsModified * num6, 0.0f, new Vector2(), Main.bgScale, SpriteEffects.None, 0.0f);
|
|
}
|
|
this.DrawSurfaceBG_BackMountainsStep1(backgroundTopMagicNumber, bgGlobalScaleMultiplier, pushBGTopHack);
|
|
}
|
|
this.cTop = (float) (this.bgTopY - 50);
|
|
if ((double) Main.screenPosition.Y < Main.worldSurface * 16.0 + 16.0)
|
|
{
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.cloud[index].active && (double) Main.cloud[index].scale < 1.15 && (double) Main.cloud[index].scale >= 1.0)
|
|
{
|
|
Microsoft.Xna.Framework.Color color = Main.cloud[index].cloudColor(Main.ColorOfTheSkies);
|
|
if ((double) Main.atmo < 1.0)
|
|
color *= Main.atmo;
|
|
float num17 = Main.cloud[index].position.Y * ((float) Main.screenHeight / 600f);
|
|
float num18 = (float) (((double) Main.screenPosition.Y / 16.0 - 24.0) / Main.worldSurface);
|
|
if ((double) num18 < 0.0)
|
|
num18 = 0.0f;
|
|
float num19;
|
|
if ((double) num18 > 1.0)
|
|
num19 = 1f;
|
|
if (Main.gameMenu)
|
|
num19 = 1f;
|
|
Main.spriteBatch.Draw(TextureAssets.Cloud[Main.cloud[index].type].Value, new Vector2(Main.cloud[index].position.X + (float) TextureAssets.Cloud[Main.cloud[index].type].Width() * 0.5f, (float) ((double) num17 + (double) TextureAssets.Cloud[Main.cloud[index].type].Height() * 0.5 + (double) this.cTop + 200.0)), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Cloud[Main.cloud[index].type].Width(), TextureAssets.Cloud[Main.cloud[index].type].Height())), color * num6, Main.cloud[index].rotation, new Vector2((float) TextureAssets.Cloud[Main.cloud[index].type].Width() * 0.5f, (float) TextureAssets.Cloud[Main.cloud[index].type].Height() * 0.5f), Main.cloud[index].scale, Main.cloud[index].spriteDir, 0.0f);
|
|
}
|
|
}
|
|
}
|
|
if (Main.SceneMetrics.HolyTileCount > 0 && Main.BackgroundEnabled)
|
|
{
|
|
this.bgParallax = 0.17;
|
|
Main.bgScale = 1.1f;
|
|
this.bgTopY = (int) (backgroundTopMagicNumber * 1400.0 + 900.0) + (int) this.scAdj + pushBGTopHack;
|
|
this.SetBackgroundOffsets(18, backgroundTopMagicNumber, pushBGTopHack);
|
|
Main.bgScale *= bgGlobalScaleMultiplier;
|
|
Main.bgWidthScaled = (int) (2100.0 * (double) Main.bgScale * 1.05);
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) Main.screenPosition.X * this.bgParallax, (double) Main.bgWidthScaled) - (double) (Main.bgWidthScaled / 2));
|
|
this.bgLoops = Main.screenWidth / Main.bgWidthScaled + 2;
|
|
if (Main.gameMenu)
|
|
{
|
|
this.bgTopY = 230 + pushBGTopHack;
|
|
this.bgStartX -= 500;
|
|
}
|
|
SkyManager.Instance.DrawToDepth(Main.spriteBatch, 1f / (float) this.bgParallax);
|
|
Microsoft.Xna.Framework.Color color = surfaceBackgroundsBase;
|
|
float num20 = (float) (Main.SceneMetrics.HolyTileCount - SceneMetrics.HallowTileThreshold) / (float) (SceneMetrics.HallowTileMax - SceneMetrics.HallowTileThreshold);
|
|
if ((double) num20 > 0.5)
|
|
num20 = 0.5f;
|
|
else if ((double) num20 < 0.0)
|
|
num20 = 0.0f;
|
|
color.R = (byte) ((double) color.R * (double) num20);
|
|
color.G = (byte) ((double) color.G * (double) num20);
|
|
color.B = (byte) ((double) color.B * (double) num20);
|
|
color.A = (byte) ((double) color.A * (double) num20 * 0.800000011920929);
|
|
if ((double) Main.screenPosition.Y < Main.worldSurface * 16.0 + 16.0)
|
|
{
|
|
this.LoadBackground(18);
|
|
this.LoadBackground(19);
|
|
for (int index = 0; index < this.bgLoops; ++index)
|
|
{
|
|
Main.spriteBatch.Draw(TextureAssets.Background[18].Value, new Vector2((float) (this.bgStartX + Main.bgWidthScaled * index), (float) this.bgTopY), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, Main.backgroundWidth[18], Main.backgroundHeight[18])), color, 0.0f, new Vector2(), Main.bgScale, SpriteEffects.None, 0.0f);
|
|
Main.spriteBatch.Draw(TextureAssets.Background[19].Value, new Vector2((float) (this.bgStartX + Main.bgWidthScaled * index + 1900), (float) (this.bgTopY + 100)), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, Main.backgroundWidth[19], Main.backgroundHeight[19])), color, 0.0f, new Vector2(), Main.bgScale * 0.9f, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
}
|
|
if (Main.treeMntBGSet1[1] > -1)
|
|
{
|
|
this.LoadBackground(Main.treeMntBGSet1[1]);
|
|
this.bgParallax = 0.2;
|
|
Main.bgScale = 1.15f;
|
|
Main.bgScale *= bgGlobalScaleMultiplier;
|
|
int num21 = Main.backgroundWidth[Main.treeMntBGSet1[1]];
|
|
if (num21 == 0)
|
|
num21 = 1;
|
|
Main.bgWidthScaled = (int) ((double) num21 * (double) Main.bgScale);
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) Main.screenPosition.X * this.bgParallax, (double) Main.bgWidthScaled) - (double) (Main.bgWidthScaled / 2));
|
|
this.bgLoops = Main.screenWidth / Main.bgWidthScaled + 2;
|
|
if (Main.treeMntBGSet1[1] == 172)
|
|
++this.bgLoops;
|
|
this.bgTopY = (int) (backgroundTopMagicNumber * 1400.0 + 1260.0) + (int) this.scAdj + pushBGTopHack;
|
|
}
|
|
if (Main.BackgroundEnabled)
|
|
this.DrawSurfaceBG_BackMountainsStep2(pushBGTopHack);
|
|
this.cTop = (float) ((double) this.bgTopY * 1.00999999046326 - 150.0);
|
|
if ((double) Main.screenPosition.Y < Main.worldSurface * 16.0 + 16.0)
|
|
{
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.cloud[index].active && (double) Main.cloud[index].scale >= 1.14999997615814)
|
|
{
|
|
Microsoft.Xna.Framework.Color color = Main.cloud[index].cloudColor(Main.ColorOfTheSkies);
|
|
if ((double) Main.atmo < 1.0)
|
|
color *= Main.atmo;
|
|
float num22 = (float) ((double) Main.cloud[index].position.Y * ((double) Main.screenHeight / 600.0) - 100.0);
|
|
float num23 = (float) (((double) Main.screenPosition.Y / 16.0 - 24.0) / Main.worldSurface);
|
|
if ((double) num23 < 0.0)
|
|
num23 = 0.0f;
|
|
float num24;
|
|
if ((double) num23 > 1.0)
|
|
num24 = 1f;
|
|
if (Main.gameMenu)
|
|
num24 = 1f;
|
|
Main.spriteBatch.Draw(TextureAssets.Cloud[Main.cloud[index].type].Value, new Vector2(Main.cloud[index].position.X + (float) TextureAssets.Cloud[Main.cloud[index].type].Width() * 0.5f, num22 + (float) TextureAssets.Cloud[Main.cloud[index].type].Height() * 0.5f + this.cTop), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Cloud[Main.cloud[index].type].Width(), TextureAssets.Cloud[Main.cloud[index].type].Height())), color * num6, Main.cloud[index].rotation, new Vector2((float) TextureAssets.Cloud[Main.cloud[index].type].Width() * 0.5f, (float) TextureAssets.Cloud[Main.cloud[index].type].Height() * 0.5f), Main.cloud[index].scale, Main.cloud[index].spriteDir, 0.0f);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (flag)
|
|
pushBGTopHack += num11;
|
|
if (!Main.mapFullscreen)
|
|
{
|
|
for (int index = 0; index < Main.bgAlphaFrontLayer.Length; ++index)
|
|
{
|
|
if (Main.BackgroundEnabled)
|
|
{
|
|
Main.ColorOfSurfaceBackgroundsModified = surfaceBackgroundsBase * Main.bgAlphaFrontLayer[index];
|
|
if ((double) Main.bgAlphaFrontLayer[index] > 0.0 && index == 0)
|
|
{
|
|
this.DrawSurfaceBG_Forest(backgroundTopMagicNumber, bgGlobalScaleMultiplier, pushBGTopHack, Main.treeBGSet1);
|
|
this.DrawSurfaceBG_DrawChangeOverlay(0);
|
|
}
|
|
if ((double) Main.bgAlphaFrontLayer[index] > 0.0 && index == 10)
|
|
{
|
|
this.DrawSurfaceBG_Forest(backgroundTopMagicNumber, bgGlobalScaleMultiplier, pushBGTopHack, Main.treeBGSet2);
|
|
this.DrawSurfaceBG_DrawChangeOverlay(1);
|
|
}
|
|
if ((double) Main.bgAlphaFrontLayer[index] > 0.0 && index == 11)
|
|
{
|
|
this.DrawSurfaceBG_Forest(backgroundTopMagicNumber, bgGlobalScaleMultiplier, pushBGTopHack, Main.treeBGSet3);
|
|
this.DrawSurfaceBG_DrawChangeOverlay(2);
|
|
}
|
|
if ((double) Main.bgAlphaFrontLayer[index] > 0.0 && index == 12)
|
|
{
|
|
this.DrawSurfaceBG_Forest(backgroundTopMagicNumber, bgGlobalScaleMultiplier, pushBGTopHack, Main.treeBGSet4);
|
|
this.DrawSurfaceBG_DrawChangeOverlay(3);
|
|
}
|
|
if ((double) Main.bgAlphaFrontLayer[index] > 0.0 && index == 1)
|
|
{
|
|
int[] corruptBg = Main.corruptBG;
|
|
this.DrawSurfaceBG_Corrupt(backgroundTopMagicNumber, bgGlobalScaleMultiplier, pushBGTopHack, corruptBg);
|
|
this.DrawSurfaceBG_DrawChangeOverlay(4);
|
|
}
|
|
if ((double) Main.bgAlphaFrontLayer[index] > 0.0 && index == 2)
|
|
{
|
|
int[] desertBg = Main.desertBG;
|
|
this.DrawSurfaceBG_Desert(backgroundTopMagicNumber, bgGlobalScaleMultiplier, pushBGTopHack, desertBg);
|
|
this.DrawSurfaceBG_DrawChangeOverlay(9);
|
|
}
|
|
if ((double) Main.bgAlphaFrontLayer[index] > 0.0 && index == 3)
|
|
{
|
|
int[] jungleBg = Main.jungleBG;
|
|
this.DrawSurfaceBG_Jungle(backgroundTopMagicNumber, bgGlobalScaleMultiplier, pushBGTopHack, jungleBg);
|
|
this.DrawSurfaceBG_DrawChangeOverlay(5);
|
|
}
|
|
if ((double) Main.bgAlphaFrontLayer[index] > 0.0 && index == 4)
|
|
this.DrawSurfaceBG_DrawChangeOverlay(10);
|
|
if ((double) Main.bgAlphaFrontLayer[index] > 0.0 && index == 5)
|
|
{
|
|
this.DrawSurfaceBG_GoodEvilDesert(backgroundTopMagicNumber, bgGlobalScaleMultiplier, pushBGTopHack);
|
|
this.DrawSurfaceBG_DrawChangeOverlay(9);
|
|
}
|
|
if ((double) Main.bgAlphaFrontLayer[index] > 0.0 && index == 6)
|
|
{
|
|
int[] hallowBg = Main.hallowBG;
|
|
this.DrawSurfaceBG_Hallow(backgroundTopMagicNumber, bgGlobalScaleMultiplier, pushBGTopHack, hallowBg);
|
|
this.DrawSurfaceBG_DrawChangeOverlay(7);
|
|
}
|
|
if ((double) Main.bgAlphaFrontLayer[index] > 0.0 && index == 7)
|
|
{
|
|
int[] snowBg = Main.snowBG;
|
|
this.DrawSurfaceBG_Snow(backgroundTopMagicNumber, bgGlobalScaleMultiplier, pushBGTopHack, snowBg);
|
|
this.DrawSurfaceBG_DrawChangeOverlay(6);
|
|
}
|
|
if ((double) Main.bgAlphaFrontLayer[index] > 0.0 && index == 8)
|
|
{
|
|
int[] crimsonBg = Main.crimsonBG;
|
|
this.DrawSurfaceBG_Crimson(backgroundTopMagicNumber, bgGlobalScaleMultiplier, pushBGTopHack, crimsonBg);
|
|
this.DrawSurfaceBG_DrawChangeOverlay(8);
|
|
}
|
|
if ((double) Main.bgAlphaFrontLayer[index] > 0.0 && index == 9)
|
|
{
|
|
int[] mushroomBg = Main.mushroomBG;
|
|
this.DrawSurfaceBG_Mushroom(backgroundTopMagicNumber, bgGlobalScaleMultiplier, pushBGTopHack, mushroomBg);
|
|
this.DrawSurfaceBG_DrawChangeOverlay(11);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (flag)
|
|
{
|
|
int num25 = pushBGTopHack - num11;
|
|
}
|
|
float fogPower = Main.DrawSurfaceBG_GetFogPower();
|
|
if (!Main.mapFullscreen && (double) fogPower > 0.0 && !Main.gameMenu && (double) Main.screenPosition.Y < Main.worldSurface * 16.0 + 16.0)
|
|
{
|
|
this.bgParallax = 0.1;
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) Main.screenPosition.X * this.bgParallax, (double) Main.backgroundWidth[Main.background]) - (double) (Main.backgroundWidth[Main.background] / 2));
|
|
this.bgLoops = Main.screenWidth / Main.backgroundWidth[Main.background] + 2;
|
|
this.bgStartY = 0;
|
|
this.bgLoopsY = 0;
|
|
this.bgTopY = (int) (-(double) Main.screenPosition.Y / (Main.worldSurface * 16.0 - 600.0) * 200.0);
|
|
Texture2D texture = TextureAssets.Background[49].Value;
|
|
for (int index = 0; index < this.bgLoops; ++index)
|
|
{
|
|
this.bgStartX = 0;
|
|
Microsoft.Xna.Framework.Color color = Main.ColorOfTheSkies * fogPower * Main.atmo;
|
|
int height = Math.Max(Main.screenHeight + 210, texture.Height);
|
|
Main.spriteBatch.Draw(texture, new Microsoft.Xna.Framework.Rectangle(this.bgStartX + texture.Width * index, this.bgTopY, texture.Width, height), color);
|
|
}
|
|
}
|
|
if (Main.mapFullscreen)
|
|
return;
|
|
SkyManager.Instance.DrawRemainingDepth(Main.spriteBatch);
|
|
}
|
|
|
|
private static float DrawSurfaceBG_GetFogPower() => Math.Max(Main.cloudAlpha, Main.GraveyardVisualIntensity * 0.92f);
|
|
|
|
private void DrawSurfaceBG_DrawBackMountainsLayer(int bgTextureIndex)
|
|
{
|
|
if (bgTextureIndex < 0)
|
|
return;
|
|
this.LoadBackground(bgTextureIndex);
|
|
int layerYoffset = this.DrawSurfaceBG_GetLayerYOffset(bgTextureIndex);
|
|
this.bgTopY += layerYoffset;
|
|
for (int index = 0; index < this.bgLoops; ++index)
|
|
Main.spriteBatch.Draw(TextureAssets.Background[bgTextureIndex].Value, new Vector2((float) (this.bgStartX + Main.bgWidthScaled * index), (float) this.bgTopY), this.GetBackgroundRect(bgTextureIndex), Main.ColorOfSurfaceBackgroundsModified, 0.0f, new Vector2(), Main.bgScale, SpriteEffects.None, 0.0f);
|
|
this.bgTopY -= layerYoffset;
|
|
}
|
|
|
|
private int DrawSurfaceBG_GetLayerYOffset(int bgTextureIndex)
|
|
{
|
|
switch (bgTextureIndex)
|
|
{
|
|
case 59:
|
|
return -550;
|
|
case 93:
|
|
case 168:
|
|
case 169:
|
|
case 170:
|
|
return -50;
|
|
case 171:
|
|
return -100;
|
|
case 172:
|
|
return 130;
|
|
case 176:
|
|
return -760;
|
|
case 177:
|
|
return -200;
|
|
case 179:
|
|
return -100;
|
|
case 180:
|
|
case 181:
|
|
case 182:
|
|
case 183:
|
|
return -350;
|
|
case 246:
|
|
return -150;
|
|
case 247:
|
|
return -150;
|
|
case 263:
|
|
return -700;
|
|
case 269:
|
|
return -100;
|
|
case 270:
|
|
return -50;
|
|
case 271:
|
|
return -300;
|
|
case 272:
|
|
return -380;
|
|
case 277:
|
|
return -260;
|
|
case 278:
|
|
return -120;
|
|
case 280:
|
|
return -170;
|
|
case 281:
|
|
return -300;
|
|
case 283:
|
|
return -800;
|
|
default:
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
private float GetForestToForestBackgroundLerperValue() => (float) ((double) (Main.GlobalTimeWrappedHourly * 1.570796f).ToRotationVector2().X * 0.5 + 0.5);
|
|
|
|
private void DrawSurfaceBG_BackMountainsStep1(
|
|
double backgroundTopMagicNumber,
|
|
float bgGlobalScaleMultiplier,
|
|
int pushBGTopHack)
|
|
{
|
|
Microsoft.Xna.Framework.Color surfaceBackgroundsBase = Main.ColorOfSurfaceBackgroundsBase;
|
|
Main.bgScale = 1f;
|
|
this.bgTopY = (int) (backgroundTopMagicNumber * 1300.0 + 1090.0) + (int) this.scAdj + pushBGTopHack;
|
|
Main.bgScale *= bgGlobalScaleMultiplier;
|
|
this.bgParallax = 0.15;
|
|
Main.bgWidthScaled = (int) (1024.0 * (double) Main.bgScale);
|
|
SkyManager.Instance.DrawToDepth(Main.spriteBatch, 1f / (float) this.bgParallax);
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) Main.screenPosition.X * this.bgParallax, (double) Main.bgWidthScaled) - (double) (Main.bgWidthScaled / 2));
|
|
if (Main.bgWidthScaled == 0)
|
|
Main.bgWidthScaled = 1024;
|
|
this.bgLoops = Main.screenWidth / Main.bgWidthScaled + 2;
|
|
if (Main.gameMenu)
|
|
this.bgTopY = 100 + pushBGTopHack;
|
|
if ((double) Main.screenPosition.Y >= Main.worldSurface * 16.0 + 16.0)
|
|
return;
|
|
if ((double) Main.bgAlphaFarBackLayer[0] > 0.0)
|
|
{
|
|
Main.ColorOfSurfaceBackgroundsModified = surfaceBackgroundsBase * Main.bgAlphaFarBackLayer[0];
|
|
this.DrawSurfaceBG_DrawBackMountainsLayer(Main.treeMntBGSet1[0]);
|
|
}
|
|
if ((double) Main.bgAlphaFarBackLayer[10] > 0.0)
|
|
{
|
|
Main.ColorOfSurfaceBackgroundsModified = surfaceBackgroundsBase * Main.bgAlphaFarBackLayer[10];
|
|
this.DrawSurfaceBG_DrawBackMountainsLayer(Main.treeMntBGSet2[0]);
|
|
}
|
|
if ((double) Main.bgAlphaFarBackLayer[11] > 0.0)
|
|
{
|
|
Main.ColorOfSurfaceBackgroundsModified = surfaceBackgroundsBase * Main.bgAlphaFarBackLayer[11];
|
|
this.DrawSurfaceBG_DrawBackMountainsLayer(Main.treeMntBGSet3[0]);
|
|
}
|
|
if ((double) Main.bgAlphaFarBackLayer[12] > 0.0)
|
|
{
|
|
Main.ColorOfSurfaceBackgroundsModified = surfaceBackgroundsBase * Main.bgAlphaFarBackLayer[12];
|
|
this.DrawSurfaceBG_DrawBackMountainsLayer(Main.treeMntBGSet4[0]);
|
|
}
|
|
if ((double) Main.bgAlphaFarBackLayer[1] > 0.0)
|
|
{
|
|
Main.ColorOfSurfaceBackgroundsModified = surfaceBackgroundsBase * Main.bgAlphaFarBackLayer[1];
|
|
if (WorldGen.desertBG != 4)
|
|
this.DrawSurfaceBG_DrawBackMountainsLayer(23);
|
|
}
|
|
if ((double) Main.bgAlphaFarBackLayer[2] > 0.0)
|
|
{
|
|
Main.ColorOfSurfaceBackgroundsModified = surfaceBackgroundsBase * Main.bgAlphaFarBackLayer[2];
|
|
this.DrawSurfaceBG_DrawBackMountainsLayer(24);
|
|
}
|
|
if ((double) Main.bgAlphaFarBackLayer[4] > 0.0)
|
|
{
|
|
Main.ColorOfSurfaceBackgroundsModified = surfaceBackgroundsBase * Main.bgAlphaFarBackLayer[4];
|
|
this.DrawSurfaceBG_DrawBackMountainsLayer(Main.snowMntBG[0]);
|
|
}
|
|
if ((double) Main.bgAlphaFarBackLayer[5] > 0.0)
|
|
{
|
|
Main.ColorOfSurfaceBackgroundsModified = surfaceBackgroundsBase * Main.bgAlphaFarBackLayer[5];
|
|
if (WorldGen.crimsonBG != 5)
|
|
this.DrawSurfaceBG_DrawBackMountainsLayer(24);
|
|
}
|
|
if ((double) Main.bgAlphaFarBackLayer[6] > 0.0 && WorldGen.hallowBG == 3)
|
|
{
|
|
Main.ColorOfSurfaceBackgroundsModified = surfaceBackgroundsBase * Main.bgAlphaFarBackLayer[6];
|
|
this.DrawSurfaceBG_DrawBackMountainsLayer(246);
|
|
}
|
|
SkyManager.Instance.DrawToDepth(Main.spriteBatch, 5f);
|
|
}
|
|
|
|
private void DrawSurfaceBG_BackMountainsStep2(int pushBGTopHack)
|
|
{
|
|
if (Main.gameMenu)
|
|
{
|
|
this.bgTopY = 230 + pushBGTopHack;
|
|
this.bgStartX -= 500;
|
|
}
|
|
Microsoft.Xna.Framework.Color surfaceBackgroundsBase = Main.ColorOfSurfaceBackgroundsBase;
|
|
this.UpdateOceanWaterLineForAmbience();
|
|
SkyManager.Instance.DrawToDepth(Main.spriteBatch, 1f / (float) this.bgParallax);
|
|
if ((double) Main.screenPosition.Y >= Main.worldSurface * 16.0 + 16.0)
|
|
return;
|
|
if ((double) Main.bgAlphaFarBackLayer[0] > 0.0)
|
|
{
|
|
Main.ColorOfSurfaceBackgroundsModified = surfaceBackgroundsBase * Main.bgAlphaFarBackLayer[0];
|
|
if (Main.treeMntBGSet1[1] > -1)
|
|
this.DrawSurfaceBG_DrawBackMountainsLayer(Main.treeMntBGSet1[1]);
|
|
}
|
|
if ((double) Main.bgAlphaFarBackLayer[1] > 0.0)
|
|
{
|
|
Main.ColorOfSurfaceBackgroundsModified = surfaceBackgroundsBase * Main.bgAlphaFarBackLayer[1];
|
|
if (WorldGen.desertBG != 4)
|
|
this.DrawSurfaceBG_DrawBackMountainsLayer(22);
|
|
}
|
|
if ((double) Main.bgAlphaFarBackLayer[2] > 0.0)
|
|
{
|
|
Main.ColorOfSurfaceBackgroundsModified = surfaceBackgroundsBase * Main.bgAlphaFarBackLayer[2];
|
|
this.DrawSurfaceBG_DrawBackMountainsLayer(25);
|
|
}
|
|
if ((double) Main.bgAlphaFarBackLayer[3] > 0.0)
|
|
{
|
|
Main.ColorOfSurfaceBackgroundsModified = surfaceBackgroundsBase * Main.bgAlphaFarBackLayer[3];
|
|
this.DrawSurfaceBG_DrawBackMountainsLayer(Main.oceanBG);
|
|
}
|
|
if ((double) Main.bgAlphaFarBackLayer[4] > 0.0)
|
|
{
|
|
Main.ColorOfSurfaceBackgroundsModified = surfaceBackgroundsBase * Main.bgAlphaFarBackLayer[4];
|
|
this.DrawSurfaceBG_DrawBackMountainsLayer(Main.snowMntBG[1]);
|
|
}
|
|
if ((double) Main.bgAlphaFarBackLayer[5] > 0.0)
|
|
{
|
|
Main.ColorOfSurfaceBackgroundsModified = surfaceBackgroundsBase * Main.bgAlphaFarBackLayer[5];
|
|
if (WorldGen.crimsonBG != 5)
|
|
this.DrawSurfaceBG_DrawBackMountainsLayer(42);
|
|
}
|
|
if ((double) Main.bgAlphaFarBackLayer[6] > 0.0 && WorldGen.hallowBG == 3)
|
|
{
|
|
Main.ColorOfSurfaceBackgroundsModified = surfaceBackgroundsBase * Main.bgAlphaFarBackLayer[6];
|
|
this.DrawSurfaceBG_DrawBackMountainsLayer(247);
|
|
}
|
|
if ((double) Main.bgAlphaFarBackLayer[10] > 0.0)
|
|
{
|
|
Main.ColorOfSurfaceBackgroundsModified = surfaceBackgroundsBase * Main.bgAlphaFarBackLayer[10];
|
|
if (Main.treeMntBGSet2[1] > -1)
|
|
this.DrawSurfaceBG_DrawBackMountainsLayer(Main.treeMntBGSet2[1]);
|
|
}
|
|
if ((double) Main.bgAlphaFarBackLayer[11] > 0.0)
|
|
{
|
|
Main.ColorOfSurfaceBackgroundsModified = surfaceBackgroundsBase * Main.bgAlphaFarBackLayer[11];
|
|
if (Main.treeMntBGSet3[1] > -1)
|
|
this.DrawSurfaceBG_DrawBackMountainsLayer(Main.treeMntBGSet3[1]);
|
|
}
|
|
if ((double) Main.bgAlphaFarBackLayer[12] <= 0.0)
|
|
return;
|
|
Main.ColorOfSurfaceBackgroundsModified = surfaceBackgroundsBase * Main.bgAlphaFarBackLayer[12];
|
|
if (Main.treeMntBGSet4[1] <= -1)
|
|
return;
|
|
this.DrawSurfaceBG_DrawBackMountainsLayer(Main.treeMntBGSet4[1]);
|
|
}
|
|
|
|
private void UpdateOceanWaterLineForAmbience()
|
|
{
|
|
int layerYoffset = this.DrawSurfaceBG_GetLayerYOffset(Main.oceanBG);
|
|
int num = 0;
|
|
switch (Main.oceanBG)
|
|
{
|
|
case 28:
|
|
case 110:
|
|
case 111:
|
|
case 209:
|
|
case 210:
|
|
num = 102;
|
|
break;
|
|
case 283:
|
|
num = 124;
|
|
break;
|
|
}
|
|
float yScreenPosition = (float) (this.bgTopY + layerYoffset) + (float) num * Main.bgScale;
|
|
AmbientSkyDrawCache.Instance.SetOceanLineInfo(yScreenPosition, Main.bgAlphaFarBackLayer[3]);
|
|
}
|
|
|
|
private void DrawSurfaceBG_Mushroom(
|
|
double backgroundTopMagicNumber,
|
|
float bgGlobalScaleMultiplier,
|
|
int pushBGTopHack,
|
|
int[] bgTexIndexes)
|
|
{
|
|
Vector3 vector3_1 = new Vector3(0.1f, 0.15f, 0.3f);
|
|
Vector3 vector3_2 = new Vector3(0.1f, 0.175f, 0.3f);
|
|
Vector3 vector3_3 = new Vector3(0.125f, 0.2f, 0.3f);
|
|
float num1 = 0.5f;
|
|
float num2 = 0.625f;
|
|
float num3 = 0.75f;
|
|
Vector3 vector3_4 = vector3_1 * 3f;
|
|
Vector3 vector3_5 = vector3_2 * 3f;
|
|
Vector3 vector3_6 = vector3_3 * 3f;
|
|
float num4 = (float) Main.ColorOfSurfaceBackgroundsModified.A / (float) byte.MaxValue;
|
|
Microsoft.Xna.Framework.Color backgroundsModified = Main.ColorOfSurfaceBackgroundsModified;
|
|
float num5 = (float) Main.rand.Next(28, 42) * (1f / 1000f) + (float) (270 - (int) Main.mouseTextColor) / 5000f;
|
|
float x1 = vector3_4.X;
|
|
float num6 = vector3_4.Y + num5 / 2f;
|
|
float num7 = vector3_4.Z + num5;
|
|
float num8 = x1 * (float) byte.MaxValue;
|
|
float num9 = num6 * (float) byte.MaxValue;
|
|
float num10 = num7 * (float) byte.MaxValue;
|
|
float num11 = num8 * (num1 * num4);
|
|
float num12 = num9 * (num1 * num4);
|
|
float num13 = num10 * (num1 * num4);
|
|
if ((double) num11 > (double) byte.MaxValue)
|
|
num11 = (float) byte.MaxValue;
|
|
if ((double) num12 > (double) byte.MaxValue)
|
|
num12 = (float) byte.MaxValue;
|
|
if ((double) num13 > (double) byte.MaxValue)
|
|
num13 = (float) byte.MaxValue;
|
|
if ((double) num11 > (double) backgroundsModified.R)
|
|
backgroundsModified.R = (byte) num11;
|
|
if ((double) num12 > (double) backgroundsModified.G)
|
|
backgroundsModified.G = (byte) num12;
|
|
if ((double) num13 > (double) backgroundsModified.B)
|
|
backgroundsModified.B = (byte) num13;
|
|
Main.bgScale = 1.25f;
|
|
Main.bgScale *= bgGlobalScaleMultiplier;
|
|
this.LoadBackground(bgTexIndexes[0]);
|
|
Main.bgWidthScaled = (int) ((double) Main.backgroundWidth[bgTexIndexes[0]] * (double) Main.bgScale);
|
|
this.bgParallax = 0.4;
|
|
this.SetBackgroundOffsets(bgTexIndexes[0], backgroundTopMagicNumber, pushBGTopHack);
|
|
SkyManager.Instance.DrawToDepth(Main.spriteBatch, 1f / (float) this.bgParallax);
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) Main.screenPosition.X * this.bgParallax, (double) Main.bgWidthScaled) - (double) (Main.bgWidthScaled / 2));
|
|
this.bgTopY = (int) (backgroundTopMagicNumber * 1800.0 + 1400.0) + (int) this.scAdj + pushBGTopHack;
|
|
this.SetBackgroundOffsets(bgTexIndexes[0], backgroundTopMagicNumber, pushBGTopHack);
|
|
if (Main.gameMenu)
|
|
this.bgTopY = 320 + pushBGTopHack;
|
|
if (Main.bgWidthScaled != 0)
|
|
this.bgLoops = Main.screenWidth / Main.bgWidthScaled + 2;
|
|
if (TextureAssets.Background[bgTexIndexes[0]].Value == null)
|
|
return;
|
|
if ((double) Main.screenPosition.Y < Main.worldSurface * 16.0 + 16.0)
|
|
{
|
|
for (int index = 0; index < this.bgLoops; ++index)
|
|
Main.spriteBatch.Draw(TextureAssets.Background[bgTexIndexes[0]].Value, new Vector2((float) (this.bgStartX + Main.bgWidthScaled * index), (float) this.bgTopY), this.GetBackgroundRect(bgTexIndexes[0]), backgroundsModified, 0.0f, new Vector2(), Main.bgScale, SpriteEffects.None, 0.0f);
|
|
}
|
|
backgroundsModified = Main.ColorOfSurfaceBackgroundsModified;
|
|
float num14 = (float) Main.rand.Next(28, 42) * (1f / 1000f) + (float) (270 - (int) Main.mouseTextColor) / 5000f;
|
|
float x2 = vector3_5.X;
|
|
float num15 = vector3_5.Y + num14 / 2f;
|
|
float num16 = vector3_5.Z + num14;
|
|
float num17 = x2 * (float) byte.MaxValue;
|
|
float num18 = num15 * (float) byte.MaxValue;
|
|
float num19 = num16 * (float) byte.MaxValue;
|
|
float num20 = num17 * (num2 * num4);
|
|
float num21 = num18 * (num2 * num4);
|
|
float num22 = num19 * (num2 * num4);
|
|
if ((double) num20 > (double) byte.MaxValue)
|
|
num20 = (float) byte.MaxValue;
|
|
if ((double) num21 > (double) byte.MaxValue)
|
|
num21 = (float) byte.MaxValue;
|
|
if ((double) num22 > (double) byte.MaxValue)
|
|
num22 = (float) byte.MaxValue;
|
|
if ((double) num20 > (double) backgroundsModified.R)
|
|
backgroundsModified.R = (byte) num20;
|
|
if ((double) num21 > (double) backgroundsModified.G)
|
|
backgroundsModified.G = (byte) num21;
|
|
if ((double) num22 > (double) backgroundsModified.B)
|
|
backgroundsModified.B = (byte) num22;
|
|
Main.bgScale = 1.32f;
|
|
Main.bgScale *= bgGlobalScaleMultiplier;
|
|
this.LoadBackground(bgTexIndexes[1]);
|
|
Main.bgWidthScaled = (int) ((double) Main.backgroundWidth[bgTexIndexes[1]] * (double) Main.bgScale);
|
|
this.bgParallax = 0.43;
|
|
this.SetBackgroundOffsets(bgTexIndexes[1], backgroundTopMagicNumber, pushBGTopHack);
|
|
SkyManager.Instance.DrawToDepth(Main.spriteBatch, 1f / (float) this.bgParallax);
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) Main.screenPosition.X * this.bgParallax, (double) Main.bgWidthScaled) - (double) (Main.bgWidthScaled / 2));
|
|
this.bgTopY = (int) (backgroundTopMagicNumber * 1950.0 + 1675.0) + (int) this.scAdj + pushBGTopHack;
|
|
this.SetBackgroundOffsets(bgTexIndexes[1], backgroundTopMagicNumber, pushBGTopHack);
|
|
if (Main.gameMenu)
|
|
{
|
|
this.bgTopY = 400 + pushBGTopHack;
|
|
this.bgStartX -= 80;
|
|
}
|
|
if (Main.bgWidthScaled == 0)
|
|
return;
|
|
this.bgLoops = Main.screenWidth / Main.bgWidthScaled + 2;
|
|
if ((double) Main.screenPosition.Y < Main.worldSurface * 16.0 + 16.0)
|
|
{
|
|
for (int index = 0; index < this.bgLoops; ++index)
|
|
Main.spriteBatch.Draw(TextureAssets.Background[bgTexIndexes[1]].Value, new Vector2((float) (this.bgStartX + Main.bgWidthScaled * index), (float) this.bgTopY), this.GetBackgroundRect(bgTexIndexes[1]), backgroundsModified, 0.0f, new Vector2(), Main.bgScale, SpriteEffects.None, 0.0f);
|
|
}
|
|
backgroundsModified = Main.ColorOfSurfaceBackgroundsModified;
|
|
float num23 = (float) Main.rand.Next(28, 42) * (1f / 1000f) + (float) (270 - (int) Main.mouseTextColor) / 3000f;
|
|
float x3 = vector3_6.X;
|
|
float num24 = vector3_6.Y + num23 / 2f;
|
|
float num25 = vector3_6.Z + num23;
|
|
float num26 = x3 * ((float) byte.MaxValue * num4 * num3);
|
|
float num27 = num24 * ((float) byte.MaxValue * num4 * num3);
|
|
float num28 = num25 * ((float) byte.MaxValue * num4 * num3);
|
|
if ((double) num26 > (double) byte.MaxValue)
|
|
num26 = (float) byte.MaxValue;
|
|
if ((double) num27 > (double) byte.MaxValue)
|
|
num27 = (float) byte.MaxValue;
|
|
if ((double) num28 > (double) byte.MaxValue)
|
|
num28 = (float) byte.MaxValue;
|
|
if ((double) num26 > (double) backgroundsModified.R)
|
|
backgroundsModified.R = (byte) num26;
|
|
if ((double) num27 > (double) backgroundsModified.G)
|
|
backgroundsModified.G = (byte) num27;
|
|
if ((double) num28 > (double) backgroundsModified.B)
|
|
backgroundsModified.B = (byte) num28;
|
|
Main.bgScale = 1.36f;
|
|
Main.bgScale *= bgGlobalScaleMultiplier;
|
|
this.LoadBackground(bgTexIndexes[2]);
|
|
Main.bgWidthScaled = (int) ((double) Main.backgroundWidth[bgTexIndexes[2]] * (double) Main.bgScale);
|
|
this.bgParallax = 0.49;
|
|
this.SetBackgroundOffsets(bgTexIndexes[2], backgroundTopMagicNumber, pushBGTopHack);
|
|
SkyManager.Instance.DrawToDepth(Main.spriteBatch, 1f / (float) this.bgParallax);
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) Main.screenPosition.X * this.bgParallax, (double) Main.bgWidthScaled) - (double) (Main.bgWidthScaled / 2));
|
|
this.bgTopY = (int) (backgroundTopMagicNumber * 2100.0 + 1950.0) + (int) this.scAdj + pushBGTopHack;
|
|
this.SetBackgroundOffsets(bgTexIndexes[2], backgroundTopMagicNumber, pushBGTopHack);
|
|
if (Main.gameMenu)
|
|
{
|
|
this.bgTopY = 480 + pushBGTopHack;
|
|
this.bgStartX -= 120;
|
|
}
|
|
if (Main.bgWidthScaled == 0)
|
|
return;
|
|
this.bgLoops = Main.screenWidth / Main.bgWidthScaled + 2;
|
|
if ((double) Main.screenPosition.Y < Main.worldSurface * 16.0 + 16.0)
|
|
{
|
|
for (int index = 0; index < this.bgLoops; ++index)
|
|
Main.spriteBatch.Draw(TextureAssets.Background[bgTexIndexes[2]].Value, new Vector2((float) (this.bgStartX + Main.bgWidthScaled * index), (float) this.bgTopY), this.GetBackgroundRect(bgTexIndexes[2]), backgroundsModified, 0.0f, new Vector2(), Main.bgScale, SpriteEffects.None, 0.0f);
|
|
}
|
|
SkyManager.Instance.DrawToDepth(Main.spriteBatch, 1f);
|
|
}
|
|
|
|
private void DrawSurfaceBG_Crimson(
|
|
double backgroundTopMagicNumber,
|
|
float bgGlobalScaleMultiplier,
|
|
int pushBGTopHack,
|
|
int[] bgTexIndexes)
|
|
{
|
|
if (bgTexIndexes[0] > -1)
|
|
{
|
|
Main.bgScale = 1.25f;
|
|
this.bgParallax = 0.4;
|
|
this.bgTopY = (int) (backgroundTopMagicNumber * 1800.0 + 1500.0) + (int) this.scAdj + pushBGTopHack;
|
|
this.SetBackgroundOffsets(bgTexIndexes[0], backgroundTopMagicNumber, pushBGTopHack);
|
|
Main.bgScale *= bgGlobalScaleMultiplier;
|
|
this.LoadBackground(bgTexIndexes[0]);
|
|
Main.bgWidthScaled = (int) ((double) Main.backgroundWidth[bgTexIndexes[0]] * (double) Main.bgScale);
|
|
SkyManager.Instance.DrawToDepth(Main.spriteBatch, 1f / (float) this.bgParallax);
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) Main.screenPosition.X * this.bgParallax, (double) Main.bgWidthScaled) - (double) (Main.bgWidthScaled / 2));
|
|
if (bgTexIndexes[0] == 105)
|
|
this.bgTopY += 50;
|
|
if (bgTexIndexes[0] == 174)
|
|
this.bgTopY -= 350;
|
|
if (Main.gameMenu)
|
|
this.bgTopY = 320 + pushBGTopHack;
|
|
this.bgLoops = Main.screenWidth / Main.bgWidthScaled + 2;
|
|
if ((double) Main.screenPosition.Y < Main.worldSurface * 16.0 + 16.0)
|
|
{
|
|
for (int index = 0; index < this.bgLoops; ++index)
|
|
Main.spriteBatch.Draw(TextureAssets.Background[bgTexIndexes[0]].Value, new Vector2((float) (this.bgStartX + Main.bgWidthScaled * index), (float) this.bgTopY), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, Main.backgroundWidth[bgTexIndexes[0]], Main.backgroundHeight[bgTexIndexes[0]])), Main.ColorOfSurfaceBackgroundsModified, 0.0f, new Vector2(), Main.bgScale, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
if (bgTexIndexes[1] > -1)
|
|
{
|
|
Main.bgScale = 1.31f;
|
|
this.bgParallax = 0.43;
|
|
this.bgTopY = (int) (backgroundTopMagicNumber * 1950.0 + 1750.0) + (int) this.scAdj + pushBGTopHack;
|
|
this.SetBackgroundOffsets(bgTexIndexes[1], backgroundTopMagicNumber, pushBGTopHack);
|
|
Main.bgScale *= bgGlobalScaleMultiplier;
|
|
this.LoadBackground(bgTexIndexes[1]);
|
|
Main.bgWidthScaled = (int) ((double) Main.backgroundWidth[bgTexIndexes[1]] * (double) Main.bgScale);
|
|
SkyManager.Instance.DrawToDepth(Main.spriteBatch, 1f / (float) this.bgParallax);
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) Main.screenPosition.X * this.bgParallax, (double) Main.bgWidthScaled) - (double) (Main.bgWidthScaled / 2));
|
|
if (Main.gameMenu)
|
|
{
|
|
this.bgTopY = 400 + pushBGTopHack;
|
|
this.bgStartX -= 80;
|
|
}
|
|
this.bgLoops = Main.screenWidth / Main.bgWidthScaled + 2;
|
|
if ((double) Main.screenPosition.Y < Main.worldSurface * 16.0 + 16.0)
|
|
{
|
|
for (int index = 0; index < this.bgLoops; ++index)
|
|
Main.spriteBatch.Draw(TextureAssets.Background[bgTexIndexes[1]].Value, new Vector2((float) (this.bgStartX + Main.bgWidthScaled * index), (float) this.bgTopY), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, Main.backgroundWidth[bgTexIndexes[1]], Main.backgroundHeight[bgTexIndexes[1]])), Main.ColorOfSurfaceBackgroundsModified, 0.0f, new Vector2(), Main.bgScale, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
Main.bgScale = 1.34f;
|
|
this.bgParallax = 0.49;
|
|
this.bgTopY = (int) (backgroundTopMagicNumber * 2100.0 + 2000.0) + (int) this.scAdj + pushBGTopHack;
|
|
this.SetBackgroundOffsets(bgTexIndexes[2], backgroundTopMagicNumber, pushBGTopHack);
|
|
Main.bgScale *= bgGlobalScaleMultiplier;
|
|
this.LoadBackground(bgTexIndexes[2]);
|
|
Main.bgWidthScaled = (int) ((double) Main.backgroundWidth[bgTexIndexes[2]] * (double) Main.bgScale);
|
|
SkyManager.Instance.DrawToDepth(Main.spriteBatch, 1f / (float) this.bgParallax);
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) Main.screenPosition.X * this.bgParallax, (double) Main.bgWidthScaled) - (double) (Main.bgWidthScaled / 2));
|
|
if (Main.gameMenu)
|
|
{
|
|
this.bgTopY = 480 + pushBGTopHack;
|
|
this.bgStartX -= 120;
|
|
}
|
|
if (bgTexIndexes[2] == 175)
|
|
{
|
|
this.bgStartX -= 1000;
|
|
this.bgTopY -= 400;
|
|
}
|
|
this.bgLoops = Main.screenWidth / Main.bgWidthScaled + 2;
|
|
if ((double) Main.screenPosition.Y >= Main.worldSurface * 16.0 + 16.0)
|
|
return;
|
|
for (int index = 0; index < this.bgLoops; ++index)
|
|
Main.spriteBatch.Draw(TextureAssets.Background[bgTexIndexes[2]].Value, new Vector2((float) (this.bgStartX + Main.bgWidthScaled * index), (float) this.bgTopY), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, Main.backgroundWidth[bgTexIndexes[2]], Main.backgroundHeight[bgTexIndexes[2]])), Main.ColorOfSurfaceBackgroundsModified, 0.0f, new Vector2(), Main.bgScale, SpriteEffects.None, 0.0f);
|
|
}
|
|
|
|
private void DrawSurfaceBG_Snow(
|
|
double backgroundTopMagicNumber,
|
|
float bgGlobalScaleMultiplier,
|
|
int pushBGTopHack,
|
|
int[] bgTexIndexes)
|
|
{
|
|
if (bgTexIndexes[0] >= 0)
|
|
{
|
|
Main.bgScale = 1.25f;
|
|
this.bgParallax = 0.4;
|
|
this.bgTopY = (int) (backgroundTopMagicNumber * 1800.0 + 1500.0) + (int) this.scAdj + pushBGTopHack;
|
|
this.SetBackgroundOffsets(bgTexIndexes[0], backgroundTopMagicNumber, pushBGTopHack);
|
|
Main.bgScale *= bgGlobalScaleMultiplier;
|
|
this.LoadBackground(bgTexIndexes[0]);
|
|
Main.bgWidthScaled = (int) ((double) Main.backgroundWidth[bgTexIndexes[0]] * (double) Main.bgScale);
|
|
SkyManager.Instance.DrawToDepth(Main.spriteBatch, 1f / (float) this.bgParallax);
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) Main.screenPosition.X * this.bgParallax, (double) Main.bgWidthScaled) - (double) (Main.bgWidthScaled / 2));
|
|
if (Main.gameMenu)
|
|
this.bgTopY = 320 + pushBGTopHack;
|
|
this.bgTopY += this.DrawSurfaceBG_GetLayerYOffset(bgTexIndexes[0]);
|
|
this.bgLoops = Main.screenWidth / Main.bgWidthScaled + 2;
|
|
if ((double) Main.screenPosition.Y < Main.worldSurface * 16.0 + 16.0)
|
|
{
|
|
for (int index = 0; index < this.bgLoops; ++index)
|
|
Main.spriteBatch.Draw(TextureAssets.Background[bgTexIndexes[0]].Value, new Vector2((float) (this.bgStartX + Main.bgWidthScaled * index), (float) this.bgTopY), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, Main.backgroundWidth[bgTexIndexes[0]], Main.backgroundHeight[bgTexIndexes[0]])), Main.ColorOfSurfaceBackgroundsModified, 0.0f, new Vector2(), Main.bgScale, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
if (bgTexIndexes[1] >= 0)
|
|
{
|
|
Main.bgScale = 1.31f;
|
|
this.bgParallax = 0.43;
|
|
this.bgTopY = (int) (backgroundTopMagicNumber * 1950.0 + 1750.0) + (int) this.scAdj + pushBGTopHack;
|
|
this.SetBackgroundOffsets(bgTexIndexes[1], backgroundTopMagicNumber, pushBGTopHack);
|
|
Main.bgScale *= bgGlobalScaleMultiplier;
|
|
this.LoadBackground(bgTexIndexes[1]);
|
|
Main.bgWidthScaled = (int) ((double) Main.backgroundWidth[bgTexIndexes[1]] * (double) Main.bgScale);
|
|
SkyManager.Instance.DrawToDepth(Main.spriteBatch, 1f / (float) this.bgParallax);
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) Main.screenPosition.X * this.bgParallax, (double) Main.bgWidthScaled) - (double) (Main.bgWidthScaled / 2));
|
|
if (Main.gameMenu)
|
|
{
|
|
this.bgTopY = 400 + pushBGTopHack;
|
|
this.bgStartX -= 80;
|
|
}
|
|
this.bgTopY += this.DrawSurfaceBG_GetLayerYOffset(bgTexIndexes[1]);
|
|
this.bgLoops = Main.screenWidth / Main.bgWidthScaled + 2;
|
|
if ((double) Main.screenPosition.Y < Main.worldSurface * 16.0 + 16.0)
|
|
{
|
|
for (int index = 0; index < this.bgLoops; ++index)
|
|
Main.spriteBatch.Draw(TextureAssets.Background[bgTexIndexes[1]].Value, new Vector2((float) (this.bgStartX + Main.bgWidthScaled * index), (float) this.bgTopY), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, Main.backgroundWidth[bgTexIndexes[1]], Main.backgroundHeight[bgTexIndexes[1]])), Main.ColorOfSurfaceBackgroundsModified, 0.0f, new Vector2(), Main.bgScale, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
if (bgTexIndexes[2] < 0)
|
|
return;
|
|
Main.bgScale = 1.34f;
|
|
this.bgParallax = 0.49;
|
|
this.bgTopY = (int) (backgroundTopMagicNumber * 2100.0 + 2000.0) + (int) this.scAdj + pushBGTopHack;
|
|
this.SetBackgroundOffsets(bgTexIndexes[2], backgroundTopMagicNumber, pushBGTopHack);
|
|
Main.bgScale *= bgGlobalScaleMultiplier;
|
|
this.LoadBackground(bgTexIndexes[2]);
|
|
Main.bgWidthScaled = (int) ((double) Main.backgroundWidth[bgTexIndexes[2]] * (double) Main.bgScale);
|
|
SkyManager.Instance.DrawToDepth(Main.spriteBatch, 1f / (float) this.bgParallax);
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) Main.screenPosition.X * this.bgParallax, (double) Main.bgWidthScaled) - (double) (Main.bgWidthScaled / 2));
|
|
if (Main.gameMenu)
|
|
{
|
|
this.bgTopY = 480 + pushBGTopHack;
|
|
this.bgStartX -= 120;
|
|
}
|
|
this.bgTopY += this.DrawSurfaceBG_GetLayerYOffset(bgTexIndexes[2]);
|
|
this.bgLoops = Main.screenWidth / Main.bgWidthScaled + 2;
|
|
if ((double) Main.screenPosition.Y >= Main.worldSurface * 16.0 + 16.0)
|
|
return;
|
|
for (int index = 0; index < this.bgLoops; ++index)
|
|
Main.spriteBatch.Draw(TextureAssets.Background[bgTexIndexes[2]].Value, new Vector2((float) (this.bgStartX + Main.bgWidthScaled * index), (float) this.bgTopY), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, Main.backgroundWidth[bgTexIndexes[2]], Main.backgroundHeight[bgTexIndexes[2]])), Main.ColorOfSurfaceBackgroundsModified, 0.0f, new Vector2(), Main.bgScale, SpriteEffects.None, 0.0f);
|
|
}
|
|
|
|
private void SetBackgroundOffsets(
|
|
int backgroundID,
|
|
double backgroundTopMagicNumber,
|
|
int pushBGTopHack)
|
|
{
|
|
int num1 = 0;
|
|
int num2 = 0;
|
|
switch (backgroundID)
|
|
{
|
|
case 18:
|
|
if (WorldGen.hallowBG == 3)
|
|
{
|
|
this.bgParallax = 0.17;
|
|
Main.bgScale = 1.1f;
|
|
num1 = 1400;
|
|
num2 = 1100;
|
|
break;
|
|
}
|
|
break;
|
|
case 207:
|
|
this.bgParallax = 0.32;
|
|
break;
|
|
case 219:
|
|
this.bgParallax = 0.25;
|
|
break;
|
|
case 220:
|
|
this.bgParallax = 0.34;
|
|
break;
|
|
case 221:
|
|
this.bgParallax = 0.43;
|
|
break;
|
|
case 222:
|
|
num1 = 1800;
|
|
num2 = 1400;
|
|
break;
|
|
case 223:
|
|
num1 = 2150;
|
|
num2 = 1850;
|
|
break;
|
|
case 224:
|
|
num1 = 2500;
|
|
num2 = 2400;
|
|
break;
|
|
case 234:
|
|
this.bgParallax = 0.23;
|
|
num1 = 1700;
|
|
num2 = 1150;
|
|
break;
|
|
case 235:
|
|
this.bgParallax = 0.33;
|
|
num1 = 1950;
|
|
num2 = 1550;
|
|
break;
|
|
case 236:
|
|
this.bgParallax = 0.41;
|
|
num1 = 2100;
|
|
num2 = 2000;
|
|
break;
|
|
case 237:
|
|
num1 = 1800;
|
|
num2 = 1500;
|
|
break;
|
|
case 238:
|
|
num1 = 1950;
|
|
num2 = 1500;
|
|
break;
|
|
case 239:
|
|
num1 = 2100;
|
|
num2 = 1900;
|
|
break;
|
|
case 240:
|
|
Main.bgScale = 1.15f;
|
|
this.bgParallax = 0.3;
|
|
num1 = 1800;
|
|
num2 = 1500;
|
|
break;
|
|
case 241:
|
|
Main.bgScale = 1.21f;
|
|
this.bgParallax = 0.43;
|
|
num1 = 1950;
|
|
num2 = 1300;
|
|
break;
|
|
case 242:
|
|
Main.bgScale = 1.34f;
|
|
this.bgParallax = 0.49;
|
|
num1 = 2100;
|
|
num2 = 1400;
|
|
break;
|
|
case 243:
|
|
Main.bgScale = 1.15f;
|
|
this.bgParallax = 0.25;
|
|
num1 = 1800;
|
|
num2 = 1400;
|
|
break;
|
|
case 244:
|
|
Main.bgScale = 1.21f;
|
|
this.bgParallax = 0.35;
|
|
num1 = 1950;
|
|
num2 = 1550;
|
|
break;
|
|
case 245:
|
|
Main.bgScale = 1.24f;
|
|
this.bgParallax = 0.45;
|
|
num1 = 2100;
|
|
num2 = 1650;
|
|
break;
|
|
case 248:
|
|
Main.bgScale = 1.3f;
|
|
this.bgParallax = 0.37;
|
|
num1 = 1800;
|
|
num2 = 1100;
|
|
break;
|
|
case 249:
|
|
Main.bgScale = 1.4f;
|
|
this.bgParallax = 0.43;
|
|
num1 = 1950;
|
|
num2 = 1200;
|
|
break;
|
|
case 250:
|
|
Main.bgScale = 1.7f;
|
|
this.bgParallax = 0.49;
|
|
num1 = 2000;
|
|
num2 = 1000;
|
|
break;
|
|
case (int) byte.MaxValue:
|
|
Main.bgScale = 1.15f;
|
|
this.bgParallax = 0.25;
|
|
num1 = 1800;
|
|
num2 = 1450;
|
|
break;
|
|
case 256:
|
|
Main.bgScale = 1.21f;
|
|
this.bgParallax = 0.32;
|
|
num1 = 1950;
|
|
num2 = 1550;
|
|
break;
|
|
case 257:
|
|
Main.bgScale = 1.34f;
|
|
this.bgParallax = 0.4;
|
|
num1 = 2100;
|
|
num2 = 1550;
|
|
break;
|
|
case 258:
|
|
Main.bgScale = 1.25f;
|
|
this.bgParallax = 0.23;
|
|
num1 = 1800;
|
|
num2 = 850;
|
|
break;
|
|
case 259:
|
|
Main.bgScale = 1.31f;
|
|
this.bgParallax = 0.33;
|
|
num1 = 1950;
|
|
num2 = 1500;
|
|
break;
|
|
case 260:
|
|
Main.bgScale = 1.34f;
|
|
this.bgParallax = 0.4;
|
|
num1 = 2100;
|
|
num2 = 1650;
|
|
break;
|
|
case 261:
|
|
this.bgParallax = 0.27;
|
|
break;
|
|
case 262:
|
|
this.bgParallax = 0.4;
|
|
break;
|
|
case 263:
|
|
Main.bgScale = 1.25f;
|
|
this.bgParallax = 0.23;
|
|
num1 = 1800;
|
|
num2 = 1450;
|
|
break;
|
|
case 264:
|
|
Main.bgScale = 1.31f;
|
|
this.bgParallax = 0.33;
|
|
num1 = 1950;
|
|
num2 = 1700;
|
|
break;
|
|
case 265:
|
|
Main.bgScale = 1.34f;
|
|
this.bgParallax = 0.4;
|
|
num1 = 2100;
|
|
num2 = 2000;
|
|
break;
|
|
case 266:
|
|
Main.bgScale = 1.31f;
|
|
this.bgParallax = 0.33;
|
|
num1 = 1950;
|
|
num2 = 1600;
|
|
break;
|
|
case 267:
|
|
Main.bgScale = 1.25f;
|
|
this.bgParallax = 0.23;
|
|
num1 = 1700;
|
|
num2 = 1300;
|
|
break;
|
|
case 268:
|
|
Main.bgScale = 1.34f;
|
|
this.bgParallax = 0.41;
|
|
num1 = 2100;
|
|
num2 = 1850;
|
|
break;
|
|
case 273:
|
|
this.bgParallax = 0.490000009536743;
|
|
num1 = 2100;
|
|
num2 = 1560;
|
|
break;
|
|
case 279:
|
|
Main.bgScale = 2.5f;
|
|
this.bgParallax = 0.349999994039536;
|
|
num1 = 1850;
|
|
num2 = 1750;
|
|
break;
|
|
case 282:
|
|
Main.bgScale = 2.6f;
|
|
this.bgParallax = 0.25;
|
|
num1 = 1800;
|
|
num2 = 1340;
|
|
break;
|
|
case 284:
|
|
this.bgParallax = 0.23;
|
|
num1 = 1600;
|
|
num2 = 900;
|
|
break;
|
|
case 285:
|
|
this.bgParallax = 0.36;
|
|
num1 = 1900;
|
|
num2 = 960;
|
|
break;
|
|
case 286:
|
|
this.bgParallax = 0.42;
|
|
num1 = 2100;
|
|
num2 = 1200;
|
|
break;
|
|
case 287:
|
|
this.bgParallax = 0.21;
|
|
num1 = 1700;
|
|
num2 = 1560;
|
|
break;
|
|
case 288:
|
|
this.bgParallax = 0.33;
|
|
num1 = 1950;
|
|
num2 = 1730;
|
|
break;
|
|
case 289:
|
|
this.bgParallax = 0.41;
|
|
num1 = 2100;
|
|
num2 = 1400;
|
|
break;
|
|
}
|
|
if (num1 == 0 && num2 == 0)
|
|
return;
|
|
this.bgTopY = (int) (backgroundTopMagicNumber * (double) num1 + (double) num2) + (int) this.scAdj + pushBGTopHack;
|
|
}
|
|
|
|
private void DrawSurfaceBG_Hallow(
|
|
double backgroundTopMagicNumber,
|
|
float bgGlobalScaleMultiplier,
|
|
int pushBGTopHack,
|
|
int[] bgTexIndexes)
|
|
{
|
|
if (bgTexIndexes[0] > 0)
|
|
{
|
|
Main.bgScale = 1.25f;
|
|
this.bgParallax = 0.4;
|
|
this.bgTopY = (int) (backgroundTopMagicNumber * 1800.0 + 1500.0) + (int) this.scAdj + pushBGTopHack;
|
|
this.SetBackgroundOffsets(bgTexIndexes[0], backgroundTopMagicNumber, pushBGTopHack);
|
|
Main.bgScale *= bgGlobalScaleMultiplier;
|
|
this.LoadBackground(bgTexIndexes[0]);
|
|
Main.bgWidthScaled = (int) ((double) Main.backgroundWidth[bgTexIndexes[0]] * (double) Main.bgScale);
|
|
SkyManager.Instance.DrawToDepth(Main.spriteBatch, 1.2f / (float) this.bgParallax);
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) Main.screenPosition.X * this.bgParallax, (double) Main.bgWidthScaled) - (double) (Main.bgWidthScaled / 2));
|
|
if (Main.gameMenu)
|
|
this.bgTopY = 320 + pushBGTopHack;
|
|
this.bgLoops = Main.screenWidth / Main.bgWidthScaled + 2;
|
|
if ((double) Main.screenPosition.Y < Main.worldSurface * 16.0 + 16.0)
|
|
{
|
|
for (int index = 0; index < this.bgLoops; ++index)
|
|
Main.spriteBatch.Draw(TextureAssets.Background[bgTexIndexes[0]].Value, new Vector2((float) (this.bgStartX + Main.bgWidthScaled * index), (float) this.bgTopY), this.GetBackgroundRect(bgTexIndexes[0]), Main.ColorOfSurfaceBackgroundsModified, 0.0f, new Vector2(), Main.bgScale, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
if (bgTexIndexes[1] > 0)
|
|
{
|
|
Main.bgScale = 1.31f;
|
|
this.bgParallax = 0.43;
|
|
this.bgTopY = (int) (backgroundTopMagicNumber * 1950.0 + 1750.0) + (int) this.scAdj + pushBGTopHack;
|
|
this.SetBackgroundOffsets(bgTexIndexes[1], backgroundTopMagicNumber, pushBGTopHack);
|
|
Main.bgScale *= bgGlobalScaleMultiplier;
|
|
this.LoadBackground(bgTexIndexes[1]);
|
|
Main.bgWidthScaled = (int) ((double) Main.backgroundWidth[bgTexIndexes[1]] * (double) Main.bgScale);
|
|
SkyManager.Instance.DrawToDepth(Main.spriteBatch, 1f / (float) this.bgParallax);
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) Main.screenPosition.X * this.bgParallax, (double) Main.bgWidthScaled) - (double) (Main.bgWidthScaled / 2));
|
|
if (Main.gameMenu)
|
|
{
|
|
this.bgTopY = 400 + pushBGTopHack;
|
|
this.bgStartX -= 80;
|
|
}
|
|
this.bgLoops = Main.screenWidth / Main.bgWidthScaled + 2;
|
|
if ((double) Main.screenPosition.Y < Main.worldSurface * 16.0 + 16.0)
|
|
{
|
|
for (int index = 0; index < this.bgLoops; ++index)
|
|
Main.spriteBatch.Draw(TextureAssets.Background[bgTexIndexes[1]].Value, new Vector2((float) (this.bgStartX + Main.bgWidthScaled * index), (float) this.bgTopY), this.GetBackgroundRect(bgTexIndexes[1]), Main.ColorOfSurfaceBackgroundsModified, 0.0f, new Vector2(), Main.bgScale, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
if (bgTexIndexes[2] <= 0)
|
|
return;
|
|
Main.bgScale = 1.34f;
|
|
this.bgParallax = 0.49;
|
|
this.bgTopY = (int) (backgroundTopMagicNumber * 2100.0 + 2000.0) + (int) this.scAdj + pushBGTopHack;
|
|
this.SetBackgroundOffsets(bgTexIndexes[2], backgroundTopMagicNumber, pushBGTopHack);
|
|
Main.bgScale *= bgGlobalScaleMultiplier;
|
|
this.LoadBackground(bgTexIndexes[2]);
|
|
Main.bgWidthScaled = (int) ((double) Main.backgroundWidth[bgTexIndexes[2]] * (double) Main.bgScale);
|
|
SkyManager.Instance.DrawToDepth(Main.spriteBatch, 1f / (float) this.bgParallax);
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) Main.screenPosition.X * this.bgParallax, (double) Main.bgWidthScaled) - (double) (Main.bgWidthScaled / 2));
|
|
if (Main.gameMenu)
|
|
{
|
|
this.bgTopY = 480 + pushBGTopHack;
|
|
this.bgStartX -= 120;
|
|
}
|
|
this.bgLoops = Main.screenWidth / Main.bgWidthScaled + 2;
|
|
if ((double) Main.screenPosition.Y >= Main.worldSurface * 16.0 + 16.0)
|
|
return;
|
|
for (int index = 0; index < this.bgLoops; ++index)
|
|
Main.spriteBatch.Draw(TextureAssets.Background[bgTexIndexes[2]].Value, new Vector2((float) (this.bgStartX + Main.bgWidthScaled * index), (float) this.bgTopY), this.GetBackgroundRect(bgTexIndexes[2]), Main.ColorOfSurfaceBackgroundsModified, 0.0f, new Vector2(), Main.bgScale, SpriteEffects.None, 0.0f);
|
|
}
|
|
|
|
private void DrawSurfaceBG_GoodEvilDesert(
|
|
double backgroundTopMagicNumber,
|
|
float bgGlobalScaleMultiplier,
|
|
int pushBGTopHack)
|
|
{
|
|
this.LoadBackground(26);
|
|
Main.bgScale = 1.25f;
|
|
Main.bgScale *= bgGlobalScaleMultiplier;
|
|
Main.bgWidthScaled = (int) ((double) Main.backgroundWidth[26] * (double) Main.bgScale);
|
|
this.bgParallax = 0.37;
|
|
SkyManager.Instance.DrawToDepth(Main.spriteBatch, 1f / (float) this.bgParallax);
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) Main.screenPosition.X * this.bgParallax, (double) Main.bgWidthScaled) - (double) (Main.bgWidthScaled / 2));
|
|
this.bgTopY = (int) (backgroundTopMagicNumber * 1800.0 + 1750.0) + (int) this.scAdj + pushBGTopHack;
|
|
if (Main.gameMenu)
|
|
this.bgTopY = 320 + pushBGTopHack;
|
|
this.bgLoops = Main.screenWidth / Main.bgWidthScaled + 2;
|
|
if ((double) Main.screenPosition.Y < Main.worldSurface * 16.0 + 16.0)
|
|
{
|
|
for (int index = 0; index < this.bgLoops; ++index)
|
|
Main.spriteBatch.Draw(TextureAssets.Background[26].Value, new Vector2((float) (this.bgStartX + Main.bgWidthScaled * index), (float) this.bgTopY), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, Main.backgroundWidth[26], Main.backgroundHeight[26])), Main.ColorOfSurfaceBackgroundsModified, 0.0f, new Vector2(), Main.bgScale, SpriteEffects.None, 0.0f);
|
|
}
|
|
Main.bgScale = 1.34f;
|
|
Main.bgScale *= bgGlobalScaleMultiplier;
|
|
this.LoadBackground(27);
|
|
Main.bgWidthScaled = (int) ((double) Main.backgroundWidth[27] * (double) Main.bgScale);
|
|
this.bgParallax = 0.49;
|
|
SkyManager.Instance.DrawToDepth(Main.spriteBatch, 1f / (float) this.bgParallax);
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) Main.screenPosition.X * this.bgParallax, (double) Main.bgWidthScaled) - (double) (Main.bgWidthScaled / 2));
|
|
this.bgTopY = (int) (backgroundTopMagicNumber * 2100.0 + 2150.0) + (int) this.scAdj + pushBGTopHack;
|
|
if (Main.gameMenu)
|
|
{
|
|
this.bgTopY = 480 + pushBGTopHack;
|
|
this.bgStartX -= 120;
|
|
}
|
|
this.bgLoops = Main.screenWidth / Main.bgWidthScaled + 2;
|
|
if ((double) Main.screenPosition.Y >= Main.worldSurface * 16.0 + 16.0)
|
|
return;
|
|
for (int index = 0; index < this.bgLoops; ++index)
|
|
Main.spriteBatch.Draw(TextureAssets.Background[27].Value, new Vector2((float) (this.bgStartX + Main.bgWidthScaled * index), (float) this.bgTopY), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, Main.backgroundWidth[27], Main.backgroundHeight[27])), Main.ColorOfSurfaceBackgroundsModified, 0.0f, new Vector2(), Main.bgScale, SpriteEffects.None, 0.0f);
|
|
}
|
|
|
|
private void DrawSurfaceBG_Jungle(
|
|
double backgroundTopMagicNumber,
|
|
float bgGlobalScaleMultiplier,
|
|
int pushBGTopHack,
|
|
int[] bgTexIndexes)
|
|
{
|
|
this.LoadBackground(bgTexIndexes[0]);
|
|
Main.bgScale = 1.25f;
|
|
Main.bgScale *= bgGlobalScaleMultiplier;
|
|
Main.bgWidthScaled = (int) ((double) Main.backgroundWidth[bgTexIndexes[0]] * (double) Main.bgScale);
|
|
this.bgParallax = 0.4;
|
|
this.SetBackgroundOffsets(bgTexIndexes[0], backgroundTopMagicNumber, pushBGTopHack);
|
|
SkyManager.Instance.DrawToDepth(Main.spriteBatch, 1f / (float) this.bgParallax);
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) Main.screenPosition.X * this.bgParallax, (double) Main.bgWidthScaled) - (double) (Main.bgWidthScaled / 2));
|
|
this.bgTopY = (int) (backgroundTopMagicNumber * 1800.0 + 1660.0) + (int) this.scAdj + pushBGTopHack;
|
|
this.SetBackgroundOffsets(bgTexIndexes[0], backgroundTopMagicNumber, pushBGTopHack);
|
|
if (Main.gameMenu)
|
|
this.bgTopY = 320 + pushBGTopHack;
|
|
if (bgTexIndexes[0] == 59)
|
|
this.bgTopY -= 200;
|
|
this.bgTopY += this.DrawSurfaceBG_GetLayerYOffset(bgTexIndexes[0]);
|
|
this.bgLoops = Main.screenWidth / Main.bgWidthScaled + 2;
|
|
if ((double) Main.screenPosition.Y < Main.worldSurface * 16.0 + 16.0)
|
|
{
|
|
for (int index = 0; index < this.bgLoops; ++index)
|
|
Main.spriteBatch.Draw(TextureAssets.Background[bgTexIndexes[0]].Value, new Vector2((float) (this.bgStartX + Main.bgWidthScaled * index), (float) this.bgTopY), this.GetBackgroundRect(bgTexIndexes[0]), Main.ColorOfSurfaceBackgroundsModified, 0.0f, new Vector2(), Main.bgScale, SpriteEffects.None, 0.0f);
|
|
}
|
|
this.LoadBackground(bgTexIndexes[1]);
|
|
Main.bgScale = 1.31f;
|
|
Main.bgScale *= bgGlobalScaleMultiplier;
|
|
Main.bgWidthScaled = (int) ((double) Main.backgroundWidth[bgTexIndexes[1]] * (double) Main.bgScale);
|
|
this.bgParallax = 0.43;
|
|
this.SetBackgroundOffsets(bgTexIndexes[1], backgroundTopMagicNumber, pushBGTopHack);
|
|
SkyManager.Instance.DrawToDepth(Main.spriteBatch, 1f / (float) this.bgParallax);
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) Main.screenPosition.X * this.bgParallax, (double) Main.bgWidthScaled) - (double) (Main.bgWidthScaled / 2));
|
|
this.bgTopY = (int) (backgroundTopMagicNumber * 1950.0 + 1840.0) + (int) this.scAdj + pushBGTopHack;
|
|
this.SetBackgroundOffsets(bgTexIndexes[1], backgroundTopMagicNumber, pushBGTopHack);
|
|
if (Main.gameMenu)
|
|
{
|
|
this.bgTopY = 400 + pushBGTopHack;
|
|
this.bgStartX -= 80;
|
|
}
|
|
if (bgTexIndexes[1] == 60)
|
|
this.bgTopY -= 175;
|
|
this.bgTopY += this.DrawSurfaceBG_GetLayerYOffset(bgTexIndexes[1]);
|
|
this.bgLoops = Main.screenWidth / Main.bgWidthScaled + 2;
|
|
if ((double) Main.screenPosition.Y < Main.worldSurface * 16.0 + 16.0)
|
|
{
|
|
for (int index = 0; index < this.bgLoops; ++index)
|
|
Main.spriteBatch.Draw(TextureAssets.Background[bgTexIndexes[1]].Value, new Vector2((float) (this.bgStartX + Main.bgWidthScaled * index), (float) this.bgTopY), this.GetBackgroundRect(bgTexIndexes[1]), Main.ColorOfSurfaceBackgroundsModified, 0.0f, new Vector2(), Main.bgScale, SpriteEffects.FlipHorizontally, 0.0f);
|
|
}
|
|
Main.bgScale = 1.34f;
|
|
Main.bgScale *= bgGlobalScaleMultiplier;
|
|
this.LoadBackground(bgTexIndexes[2]);
|
|
Main.bgWidthScaled = (int) ((double) Main.backgroundWidth[bgTexIndexes[2]] * (double) Main.bgScale);
|
|
this.bgParallax = 0.49;
|
|
this.SetBackgroundOffsets(bgTexIndexes[2], backgroundTopMagicNumber, pushBGTopHack);
|
|
SkyManager.Instance.DrawToDepth(Main.spriteBatch, 1f / (float) this.bgParallax);
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) Main.screenPosition.X * this.bgParallax, (double) Main.bgWidthScaled) - (double) (Main.bgWidthScaled / 2));
|
|
this.bgTopY = (int) (backgroundTopMagicNumber * 2100.0 + 2060.0) + (int) this.scAdj + pushBGTopHack;
|
|
this.SetBackgroundOffsets(bgTexIndexes[2], backgroundTopMagicNumber, pushBGTopHack);
|
|
if (Main.gameMenu)
|
|
{
|
|
this.bgTopY = 480 + pushBGTopHack;
|
|
this.bgStartX -= 120;
|
|
}
|
|
if (bgTexIndexes[2] == 61)
|
|
this.bgTopY -= 150;
|
|
this.bgTopY += this.DrawSurfaceBG_GetLayerYOffset(bgTexIndexes[2]);
|
|
this.bgLoops = Main.screenWidth / Main.bgWidthScaled + 2;
|
|
if ((double) Main.screenPosition.Y >= Main.worldSurface * 16.0 + 16.0)
|
|
return;
|
|
for (int index = 0; index < this.bgLoops; ++index)
|
|
Main.spriteBatch.Draw(TextureAssets.Background[bgTexIndexes[2]].Value, new Vector2((float) (this.bgStartX + Main.bgWidthScaled * index), (float) this.bgTopY), this.GetBackgroundRect(bgTexIndexes[2]), Main.ColorOfSurfaceBackgroundsModified, 0.0f, new Vector2(), Main.bgScale, SpriteEffects.None, 0.0f);
|
|
}
|
|
|
|
private void DrawSurfaceBG_Desert(
|
|
double backgroundTopMagicNumber,
|
|
float bgGlobalScaleMultiplier,
|
|
int pushBGTopHack,
|
|
int[] bgTexIndexes)
|
|
{
|
|
if (bgTexIndexes[0] > 0)
|
|
{
|
|
Main.bgScale = 1.25f;
|
|
this.bgParallax = 0.37;
|
|
this.bgTopY = (int) (backgroundTopMagicNumber * 1800.0 + 1750.0) + (int) this.scAdj + pushBGTopHack;
|
|
this.SetBackgroundOffsets(bgTexIndexes[0], backgroundTopMagicNumber, pushBGTopHack);
|
|
this.LoadBackground(bgTexIndexes[0]);
|
|
Main.bgScale *= bgGlobalScaleMultiplier;
|
|
float num = (float) Main.backgroundWidth[bgTexIndexes[0]] * Main.bgScale;
|
|
SkyManager.Instance.DrawToDepth(Main.spriteBatch, 1f / (float) this.bgParallax);
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) Main.screenPosition.X * this.bgParallax, (double) num) - (double) num / 2.0);
|
|
if (Main.gameMenu)
|
|
this.bgTopY = 320 + pushBGTopHack;
|
|
this.bgLoops = Main.screenWidth / (int) num + 2;
|
|
if ((double) Main.screenPosition.Y < Main.worldSurface * 16.0 + 16.0)
|
|
{
|
|
for (int index = 0; index < this.bgLoops; ++index)
|
|
Main.spriteBatch.Draw(TextureAssets.Background[bgTexIndexes[0]].Value, new Vector2((float) this.bgStartX + num * (float) index, (float) this.bgTopY), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, Main.backgroundWidth[bgTexIndexes[0]], Main.backgroundHeight[bgTexIndexes[0]])), Main.ColorOfSurfaceBackgroundsModified, 0.0f, new Vector2(), Main.bgScale, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
if (bgTexIndexes[1] > 0)
|
|
{
|
|
Main.bgScale = 1.34f;
|
|
this.bgParallax = 0.49;
|
|
this.bgTopY = (int) (backgroundTopMagicNumber * 2100.0 + 2150.0) + (int) this.scAdj + pushBGTopHack;
|
|
this.SetBackgroundOffsets(bgTexIndexes[1], backgroundTopMagicNumber, pushBGTopHack);
|
|
Main.bgScale *= bgGlobalScaleMultiplier;
|
|
this.LoadBackground(bgTexIndexes[1]);
|
|
Main.bgWidthScaled = (int) ((double) Main.backgroundWidth[bgTexIndexes[1]] * (double) Main.bgScale);
|
|
SkyManager.Instance.DrawToDepth(Main.spriteBatch, 1f / (float) this.bgParallax);
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) Main.screenPosition.X * this.bgParallax, (double) Main.bgWidthScaled) - (double) (Main.bgWidthScaled / 2));
|
|
if (Main.gameMenu)
|
|
{
|
|
this.bgTopY = 480 + pushBGTopHack;
|
|
this.bgStartX -= 120;
|
|
}
|
|
this.bgLoops = Main.screenWidth / Main.bgWidthScaled + 2;
|
|
if ((double) Main.screenPosition.Y < Main.worldSurface * 16.0 + 16.0)
|
|
{
|
|
for (int index = 0; index < this.bgLoops; ++index)
|
|
Main.spriteBatch.Draw(TextureAssets.Background[bgTexIndexes[1]].Value, new Vector2((float) (this.bgStartX + Main.bgWidthScaled * index), (float) this.bgTopY), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, Main.backgroundWidth[bgTexIndexes[1]], Main.backgroundHeight[bgTexIndexes[1]])), Main.ColorOfSurfaceBackgroundsModified, 0.0f, new Vector2(), Main.bgScale, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
if (bgTexIndexes[2] <= 0)
|
|
return;
|
|
Main.bgScale = 1.34f;
|
|
this.bgParallax = 0.49;
|
|
this.bgTopY = (int) (backgroundTopMagicNumber * 2100.0 + 2150.0) + (int) this.scAdj + pushBGTopHack;
|
|
this.SetBackgroundOffsets(bgTexIndexes[2], backgroundTopMagicNumber, pushBGTopHack);
|
|
Main.bgScale *= bgGlobalScaleMultiplier;
|
|
this.LoadBackground(bgTexIndexes[2]);
|
|
Main.bgWidthScaled = (int) ((double) Main.backgroundWidth[bgTexIndexes[2]] * (double) Main.bgScale);
|
|
SkyManager.Instance.DrawToDepth(Main.spriteBatch, 1f / (float) this.bgParallax);
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) Main.screenPosition.X * this.bgParallax, (double) Main.bgWidthScaled) - (double) (Main.bgWidthScaled / 2));
|
|
if (Main.gameMenu)
|
|
{
|
|
this.bgTopY = 480 + pushBGTopHack;
|
|
this.bgStartX -= 120;
|
|
}
|
|
this.bgLoops = Main.screenWidth / Main.bgWidthScaled + 2;
|
|
if ((double) Main.screenPosition.Y >= Main.worldSurface * 16.0 + 16.0)
|
|
return;
|
|
for (int index = 0; index < this.bgLoops; ++index)
|
|
Main.spriteBatch.Draw(TextureAssets.Background[bgTexIndexes[2]].Value, new Vector2((float) (this.bgStartX + Main.bgWidthScaled * index), (float) this.bgTopY), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, Main.backgroundWidth[bgTexIndexes[2]], Main.backgroundHeight[bgTexIndexes[2]])), Main.ColorOfSurfaceBackgroundsModified, 0.0f, new Vector2(), Main.bgScale, SpriteEffects.None, 0.0f);
|
|
}
|
|
|
|
private void DrawSurfaceBG_DrawChangeOverlay(int backgroundAreaId)
|
|
{
|
|
Texture2D texture = TextureAssets.MagicPixel.Value;
|
|
Microsoft.Xna.Framework.Color color = Microsoft.Xna.Framework.Color.Black * WorldGen.BackgroundsCache.GetFlashPower(backgroundAreaId);
|
|
Main.spriteBatch.Draw(texture, new Microsoft.Xna.Framework.Rectangle(0, 0, Main.screenWidth, Main.screenHeight), color);
|
|
}
|
|
|
|
private void DrawSurfaceBG_Corrupt(
|
|
double backgroundTopMagicNumber,
|
|
float bgGlobalScaleMultiplier,
|
|
int pushBGTopHack,
|
|
int[] bgTexIndexes)
|
|
{
|
|
Main.bgScale = 1.25f;
|
|
this.bgParallax = 0.4;
|
|
this.bgTopY = (int) (backgroundTopMagicNumber * 1800.0 + 1500.0) + (int) this.scAdj + pushBGTopHack;
|
|
this.SetBackgroundOffsets(bgTexIndexes[0], backgroundTopMagicNumber, pushBGTopHack);
|
|
Main.bgScale *= bgGlobalScaleMultiplier;
|
|
this.LoadBackground(bgTexIndexes[0]);
|
|
if (Main.backgroundWidth[bgTexIndexes[0]] == 0 || Main.backgroundHeight[bgTexIndexes[0]] == 0)
|
|
return;
|
|
Main.bgWidthScaled = (int) ((double) Main.backgroundWidth[bgTexIndexes[0]] * (double) Main.bgScale);
|
|
SkyManager.Instance.DrawToDepth(Main.spriteBatch, 1f / (float) this.bgParallax);
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) Main.screenPosition.X * this.bgParallax, (double) Main.bgWidthScaled) - (double) (Main.bgWidthScaled / 2));
|
|
if (Main.gameMenu)
|
|
this.bgTopY = 320 + pushBGTopHack;
|
|
if (bgTexIndexes[0] == 56)
|
|
this.bgTopY -= 100;
|
|
this.bgLoops = Main.screenWidth / Main.bgWidthScaled + 2;
|
|
if ((double) Main.screenPosition.Y < Main.worldSurface * 16.0 + 16.0)
|
|
{
|
|
for (int index = 0; index < this.bgLoops; ++index)
|
|
Main.spriteBatch.Draw(TextureAssets.Background[bgTexIndexes[0]].Value, new Vector2((float) (this.bgStartX + Main.bgWidthScaled * index), (float) this.bgTopY), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, Main.backgroundWidth[bgTexIndexes[0]], Main.backgroundHeight[bgTexIndexes[0]])), Main.ColorOfSurfaceBackgroundsModified, 0.0f, new Vector2(), Main.bgScale, SpriteEffects.None, 0.0f);
|
|
}
|
|
Main.bgScale = 1.31f;
|
|
this.bgParallax = 0.43;
|
|
this.bgTopY = (int) (backgroundTopMagicNumber * 1950.0 + 1750.0) + (int) this.scAdj + pushBGTopHack;
|
|
this.SetBackgroundOffsets(bgTexIndexes[1], backgroundTopMagicNumber, pushBGTopHack);
|
|
Main.bgScale *= bgGlobalScaleMultiplier;
|
|
this.LoadBackground(bgTexIndexes[1]);
|
|
Main.bgWidthScaled = (int) ((double) Main.backgroundWidth[bgTexIndexes[1]] * (double) Main.bgScale);
|
|
SkyManager.Instance.DrawToDepth(Main.spriteBatch, 1f / (float) this.bgParallax);
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) Main.screenPosition.X * this.bgParallax, (double) Main.bgWidthScaled) - (double) (Main.bgWidthScaled / 2));
|
|
if (Main.gameMenu)
|
|
{
|
|
this.bgTopY = 400 + pushBGTopHack;
|
|
this.bgStartX -= 80;
|
|
}
|
|
if (bgTexIndexes[0] == 56)
|
|
this.bgTopY -= 100;
|
|
if (Main.bgWidthScaled == 0)
|
|
Main.bgWidthScaled = 1;
|
|
this.bgLoops = Main.screenWidth / Main.bgWidthScaled + 2;
|
|
if ((double) Main.screenPosition.Y < Main.worldSurface * 16.0 + 16.0)
|
|
{
|
|
try
|
|
{
|
|
Texture2D texture = TextureAssets.Background[bgTexIndexes[1]].Value;
|
|
if (texture != null)
|
|
{
|
|
for (int index = 0; index < this.bgLoops; ++index)
|
|
Main.spriteBatch.Draw(texture, new Vector2((float) (this.bgStartX + Main.bgWidthScaled * index), (float) this.bgTopY), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, Main.backgroundWidth[bgTexIndexes[1]], Main.backgroundHeight[bgTexIndexes[1]])), Main.ColorOfSurfaceBackgroundsModified, 0.0f, new Vector2(), Main.bgScale, SpriteEffects.FlipHorizontally, 0.0f);
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
this.LoadBackground(bgTexIndexes[1]);
|
|
}
|
|
}
|
|
Main.bgScale = 1.34f;
|
|
this.bgParallax = 0.49;
|
|
this.bgTopY = (int) (backgroundTopMagicNumber * 2100.0 + 2000.0) + (int) this.scAdj + pushBGTopHack;
|
|
this.SetBackgroundOffsets(bgTexIndexes[2], backgroundTopMagicNumber, pushBGTopHack);
|
|
Main.bgScale *= bgGlobalScaleMultiplier;
|
|
this.LoadBackground(bgTexIndexes[2]);
|
|
Main.bgWidthScaled = (int) ((double) Main.backgroundWidth[bgTexIndexes[2]] * (double) Main.bgScale);
|
|
if (Main.bgWidthScaled == 0)
|
|
Main.bgWidthScaled = 150;
|
|
SkyManager.Instance.DrawToDepth(Main.spriteBatch, 1f / (float) this.bgParallax);
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) Main.screenPosition.X * this.bgParallax, (double) Main.bgWidthScaled) - (double) (Main.bgWidthScaled / 2));
|
|
if (Main.gameMenu)
|
|
{
|
|
this.bgTopY = 480 + pushBGTopHack;
|
|
this.bgStartX -= 120;
|
|
}
|
|
if (bgTexIndexes[0] == 56)
|
|
this.bgTopY -= 100;
|
|
this.bgLoops = Main.screenWidth / Main.bgWidthScaled + 2;
|
|
if ((double) Main.screenPosition.Y >= Main.worldSurface * 16.0 + 16.0)
|
|
return;
|
|
for (int index = 0; index < this.bgLoops; ++index)
|
|
Main.spriteBatch.Draw(TextureAssets.Background[bgTexIndexes[2]].Value, new Vector2((float) (this.bgStartX + Main.bgWidthScaled * index), (float) this.bgTopY), new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, Main.backgroundWidth[bgTexIndexes[2]], Main.backgroundHeight[bgTexIndexes[2]])), Main.ColorOfSurfaceBackgroundsModified, 0.0f, new Vector2(), Main.bgScale, SpriteEffects.None, 0.0f);
|
|
}
|
|
|
|
private Microsoft.Xna.Framework.Rectangle? GetBackgroundRect(int backgroundTextureIndex)
|
|
{
|
|
Microsoft.Xna.Framework.Rectangle rectangle1 = new Microsoft.Xna.Framework.Rectangle(0, 0, 1, 1);
|
|
switch (backgroundTextureIndex)
|
|
{
|
|
case 219:
|
|
case 220:
|
|
case 221:
|
|
case 271:
|
|
case 272:
|
|
case 273:
|
|
int num1 = (int) (this.GetBackgroundCounter() / 15U) % 4;
|
|
Microsoft.Xna.Framework.Rectangle rectangle2 = TextureAssets.Background[backgroundTextureIndex].Frame(2, 2, num1 % 2, num1 / 2);
|
|
rectangle2.Inflate(0, -2);
|
|
return new Microsoft.Xna.Framework.Rectangle?(rectangle2);
|
|
case 235:
|
|
int num2 = (int) (this.GetBackgroundCounter() / 20U) % 4;
|
|
Microsoft.Xna.Framework.Rectangle rectangle3 = TextureAssets.Background[backgroundTextureIndex].Frame(2, 2, num2 % 2, num2 / 2);
|
|
rectangle3.Inflate(0, -2);
|
|
return new Microsoft.Xna.Framework.Rectangle?(rectangle3);
|
|
case 281:
|
|
int num3 = (int) (this.GetBackgroundCounter() / 5U) % 4;
|
|
Microsoft.Xna.Framework.Rectangle rectangle4 = TextureAssets.Background[backgroundTextureIndex].Frame(2, 2, num3 % 2, num3 / 2);
|
|
rectangle4.Inflate(0, -2);
|
|
return new Microsoft.Xna.Framework.Rectangle?(rectangle4);
|
|
default:
|
|
return new Microsoft.Xna.Framework.Rectangle?();
|
|
}
|
|
}
|
|
|
|
private uint GetBackgroundCounter() => !Main.gameMenu ? Main.GameUpdateCount : (uint) ((double) Main.GlobalTimeWrappedHourly * 40.0);
|
|
|
|
private void DrawSurfaceBG_Forest(
|
|
double backgroundTopMagicNumber,
|
|
float bgGlobalScaleMultiplier,
|
|
int pushBGTopHack,
|
|
int[] bgTexIndexes)
|
|
{
|
|
Main.bgScale = 1.25f;
|
|
this.bgParallax = 0.4;
|
|
this.bgTopY = (int) (backgroundTopMagicNumber * 1800.0 + 1500.0) + (int) this.scAdj + pushBGTopHack;
|
|
if (bgTexIndexes[0] == 91)
|
|
{
|
|
this.bgParallax = 0.270000010728836;
|
|
Main.bgScale = 1.2f;
|
|
}
|
|
if (bgTexIndexes[0] == 173)
|
|
{
|
|
this.bgParallax = 0.25;
|
|
Main.bgScale = 1.3f;
|
|
}
|
|
if (bgTexIndexes[0] == 178)
|
|
{
|
|
this.bgParallax = 0.300000011920929;
|
|
Main.bgScale = 1.2f;
|
|
}
|
|
if (bgTexIndexes[0] == 184)
|
|
{
|
|
this.bgParallax = 0.25;
|
|
Main.bgScale = 1.2f;
|
|
}
|
|
if (bgTexIndexes[0] == 282)
|
|
Main.bgScale = 1.4f;
|
|
this.SetBackgroundOffsets(bgTexIndexes[0], backgroundTopMagicNumber, pushBGTopHack);
|
|
Main.bgScale *= bgGlobalScaleMultiplier;
|
|
SkyManager.Instance.DrawToDepth(Main.spriteBatch, 1f / (float) this.bgParallax);
|
|
if (bgTexIndexes[0] >= 0)
|
|
{
|
|
this.SetBackgroundOffsets(bgTexIndexes[0], backgroundTopMagicNumber, pushBGTopHack);
|
|
this.LoadBackground(bgTexIndexes[0]);
|
|
Main.bgWidthScaled = (int) ((double) Main.backgroundWidth[bgTexIndexes[0]] * (double) Main.bgScale);
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) Main.screenPosition.X * this.bgParallax, (double) Main.bgWidthScaled) - (double) (Main.bgWidthScaled / 2));
|
|
if (bgTexIndexes[0] == 91)
|
|
this.bgTopY = (int) (backgroundTopMagicNumber * 1600.0 + 1400.0) + (int) this.scAdj + pushBGTopHack;
|
|
if (bgTexIndexes[0] == 173)
|
|
this.bgTopY = (int) (backgroundTopMagicNumber * 1600.0 + 1400.0) + (int) this.scAdj + pushBGTopHack;
|
|
if (bgTexIndexes[0] == 184)
|
|
this.bgTopY = (int) (backgroundTopMagicNumber * 1600.0 + 1400.0) + (int) this.scAdj + pushBGTopHack;
|
|
if (Main.gameMenu)
|
|
this.bgTopY = 320 + pushBGTopHack;
|
|
if (bgTexIndexes[0] == 50)
|
|
this.bgTopY -= 50;
|
|
if (bgTexIndexes[0] == 53)
|
|
this.bgTopY -= 100;
|
|
if (bgTexIndexes[0] == 91)
|
|
this.bgTopY += 200;
|
|
if (bgTexIndexes[0] == 173)
|
|
this.bgTopY += 200;
|
|
if (bgTexIndexes[0] == 178)
|
|
this.bgTopY += 75;
|
|
this.bgLoops = Main.screenWidth / Main.bgWidthScaled + 2;
|
|
if ((double) Main.screenPosition.Y < Main.worldSurface * 16.0 + 16.0)
|
|
{
|
|
for (int index = 0; index < this.bgLoops; ++index)
|
|
{
|
|
if (bgTexIndexes[0] != -1)
|
|
{
|
|
Asset<Texture2D> asset = TextureAssets.Background[bgTexIndexes[0]];
|
|
if (bgTexIndexes[0] == 173)
|
|
{
|
|
int i = 251 + (int) (this.GetBackgroundCounter() / 10U) % 4;
|
|
this.LoadBackground(i);
|
|
asset = TextureAssets.Background[i];
|
|
}
|
|
if (asset.Value != null)
|
|
Main.spriteBatch.Draw(asset.Value, new Vector2((float) (this.bgStartX + Main.bgWidthScaled * index), (float) this.bgTopY), this.GetBackgroundRect(bgTexIndexes[0]), Main.ColorOfSurfaceBackgroundsModified, 0.0f, new Vector2(), Main.bgScale, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (bgTexIndexes[1] >= 0)
|
|
{
|
|
this.LoadBackground(bgTexIndexes[1]);
|
|
Main.bgScale = 1.31f;
|
|
Main.bgScale *= bgGlobalScaleMultiplier;
|
|
Main.bgWidthScaled = (int) ((double) Main.backgroundWidth[bgTexIndexes[1]] * (double) Main.bgScale);
|
|
if (Main.bgWidthScaled == 0)
|
|
Main.bgWidthScaled = 1;
|
|
this.bgParallax = 0.43;
|
|
this.SetBackgroundOffsets(bgTexIndexes[1], backgroundTopMagicNumber, pushBGTopHack);
|
|
SkyManager.Instance.DrawToDepth(Main.spriteBatch, 1f / (float) this.bgParallax);
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) Main.screenPosition.X * this.bgParallax, (double) Main.bgWidthScaled) - (double) (Main.bgWidthScaled / 2));
|
|
this.bgTopY = (int) (backgroundTopMagicNumber * 1950.0 + 1750.0) + (int) this.scAdj + pushBGTopHack;
|
|
if (Main.gameMenu)
|
|
{
|
|
this.bgTopY = 400 + pushBGTopHack;
|
|
this.bgStartX -= 80;
|
|
}
|
|
if (bgTexIndexes[1] == 51)
|
|
this.bgTopY -= 50;
|
|
if (bgTexIndexes[1] == 54)
|
|
this.bgTopY -= 100;
|
|
this.bgLoops = Main.screenWidth / Main.bgWidthScaled + 2;
|
|
if ((double) Main.screenPosition.Y < Main.worldSurface * 16.0 + 16.0)
|
|
{
|
|
for (int index = 0; index < this.bgLoops; ++index)
|
|
Main.spriteBatch.Draw(TextureAssets.Background[bgTexIndexes[1]].Value, new Vector2((float) (this.bgStartX + Main.bgWidthScaled * index), (float) this.bgTopY), this.GetBackgroundRect(bgTexIndexes[1]), Main.ColorOfSurfaceBackgroundsModified, 0.0f, new Vector2(), Main.bgScale, SpriteEffects.FlipHorizontally, 0.0f);
|
|
}
|
|
}
|
|
if (bgTexIndexes[2] < 0)
|
|
return;
|
|
this.LoadBackground(bgTexIndexes[2]);
|
|
Main.bgScale = 1.34f;
|
|
Main.bgScale *= bgGlobalScaleMultiplier;
|
|
this.bgParallax = 0.49;
|
|
this.SetBackgroundOffsets(bgTexIndexes[2], backgroundTopMagicNumber, pushBGTopHack);
|
|
SkyManager.Instance.DrawToDepth(Main.spriteBatch, 1f / (float) this.bgParallax);
|
|
if (bgTexIndexes[0] == 91)
|
|
{
|
|
Main.bgScale = 1.3f;
|
|
Main.bgScale *= bgGlobalScaleMultiplier;
|
|
this.bgParallax = 0.42;
|
|
}
|
|
if (bgTexIndexes[2] < 0 && WorldGen.drunkWorldGen)
|
|
return;
|
|
Main.bgWidthScaled = (int) ((double) Main.backgroundWidth[bgTexIndexes[2]] * (double) Main.bgScale);
|
|
if (Main.bgWidthScaled == 0)
|
|
Main.bgWidthScaled = 1;
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) Main.screenPosition.X * this.bgParallax, (double) Main.bgWidthScaled) - (double) (Main.bgWidthScaled / 2));
|
|
this.bgTopY = (int) (backgroundTopMagicNumber * 2100.0 + 2000.0) + (int) this.scAdj + pushBGTopHack;
|
|
if (Main.gameMenu)
|
|
{
|
|
this.bgTopY = 480 + pushBGTopHack;
|
|
this.bgStartX -= 120;
|
|
}
|
|
if (bgTexIndexes[2] == 52)
|
|
this.bgTopY -= 50;
|
|
if (bgTexIndexes[2] == 55)
|
|
this.bgTopY -= 100;
|
|
if (bgTexIndexes[2] == 92)
|
|
this.bgTopY += 150;
|
|
this.bgLoops = Main.screenWidth / Main.bgWidthScaled + 2;
|
|
if ((double) Main.screenPosition.Y >= Main.worldSurface * 16.0 + 16.0)
|
|
return;
|
|
for (int index = 0; index < this.bgLoops; ++index)
|
|
Main.spriteBatch.Draw(TextureAssets.Background[bgTexIndexes[2]].Value, new Vector2((float) (this.bgStartX + Main.bgWidthScaled * index), (float) this.bgTopY), this.GetBackgroundRect(bgTexIndexes[2]), Main.ColorOfSurfaceBackgroundsModified, 0.0f, new Vector2(), Main.bgScale, SpriteEffects.None, 0.0f);
|
|
}
|
|
|
|
private void DrawBackgroundBlackFill()
|
|
{
|
|
float num1 = (float) (Main.worldSurface + 2.0) * 16f - Main.screenPosition.Y;
|
|
float num2 = (float) ((double) Main.maxTilesY * 16.0 - 2880.0 - ((double) Main.screenPosition.Y + (double) Main.screenHeight));
|
|
float num3 = MathHelper.Clamp(num1, 0.0f, (float) Main.screenHeight);
|
|
float num4 = MathHelper.Clamp(num2, 0.0f, (float) Main.screenHeight);
|
|
if ((double) num4 - (double) num3 <= 0.0)
|
|
return;
|
|
Main.spriteBatch.Draw(TextureAssets.BlackTile.Value, new Microsoft.Xna.Framework.Rectangle(0, (int) num3, Main.screenWidth, (int) ((double) num4 - (double) num3)), Microsoft.Xna.Framework.Color.Black);
|
|
}
|
|
|
|
public void DrawTileCracks(int crackType, HitTile hitter)
|
|
{
|
|
Vector2 vector2 = new Vector2((float) Main.offScreenRange, (float) Main.offScreenRange);
|
|
if (Main.drawToScreen)
|
|
vector2 = Vector2.Zero;
|
|
for (int index = 0; index < hitter.data.Length; ++index)
|
|
{
|
|
if (hitter.data[index].type == crackType)
|
|
{
|
|
int damage = hitter.data[index].damage;
|
|
if (damage >= 20)
|
|
{
|
|
int x = hitter.data[index].X;
|
|
int y = hitter.data[index].Y;
|
|
if (WorldGen.InWorld(x, y))
|
|
{
|
|
bool flag1 = Main.tile[x, y] != null;
|
|
if (flag1 && crackType == 1)
|
|
flag1 = flag1 && Main.tile[x, y].active();
|
|
if (flag1 && crackType == 2)
|
|
flag1 = flag1 && Main.tile[x, y].wall > (ushort) 0;
|
|
if (flag1)
|
|
{
|
|
bool flag2 = false;
|
|
bool flag3 = false;
|
|
if (Main.tile[x, y].type == (ushort) 10)
|
|
flag2 = false;
|
|
else if (Main.tileSolid[(int) Main.tile[x, y].type] && !Main.tileSolidTop[(int) Main.tile[x, y].type])
|
|
flag2 = true;
|
|
else if (WorldGen.IsTreeType((int) Main.tile[x, y].type))
|
|
{
|
|
flag3 = true;
|
|
int num1 = (int) Main.tile[x, y].frameX / 22;
|
|
int num2 = (int) Main.tile[x, y].frameY / 22;
|
|
if (num2 < 9)
|
|
flag2 = (num1 != 1 && num1 != 2 || num2 < 6 || num2 > 8) && (num1 != 3 || num2 > 2) && (num1 != 4 || num2 < 3 || num2 > 5) && (num1 != 5 || num2 < 6 || num2 > 8);
|
|
}
|
|
else if (Main.tile[x, y].type == (ushort) 72)
|
|
{
|
|
flag3 = true;
|
|
if (Main.tile[x, y].frameX <= (short) 34)
|
|
flag2 = true;
|
|
}
|
|
if (flag2 && Main.tile[x, y].slope() == (byte) 0 && !Main.tile[x, y].halfBrick())
|
|
{
|
|
int num = 0;
|
|
if (damage >= 80)
|
|
num = 3;
|
|
else if (damage >= 60)
|
|
num = 2;
|
|
else if (damage >= 40)
|
|
num = 1;
|
|
else if (damage >= 20)
|
|
num = 0;
|
|
Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.Rectangle(hitter.data[index].crackStyle * 18, num * 18, 16, 16);
|
|
if (flag3)
|
|
rectangle.X = (4 + hitter.data[index].crackStyle / 2) * 18;
|
|
Main.spriteBatch.Draw(TextureAssets.TileCrack.Value, new Vector2((float) (x * 16 - (int) Main.screenPosition.X), (float) (y * 16 - (int) Main.screenPosition.Y)) + vector2, new Microsoft.Xna.Framework.Rectangle?(rectangle), Lighting.GetColor(x, y), 0.0f, new Vector2(), 1f, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private static void CheckMonoliths()
|
|
{
|
|
bool flag = Main.player[Main.myPlayer].ZoneTowerVortex || Main.player[Main.myPlayer].ZoneTowerNebula || Main.player[Main.myPlayer].ZoneTowerStardust || Main.player[Main.myPlayer].ZoneTowerSolar;
|
|
for (int index = 0; index < Main.MonolithFilterNames.Length; ++index)
|
|
{
|
|
if (!flag && index == Main.SceneMetrics.ActiveMonolithType)
|
|
{
|
|
if (!Terraria.Graphics.Effects.Filters.Scene[Main.MonolithFilterNames[Main.SceneMetrics.ActiveMonolithType]].IsActive())
|
|
Terraria.Graphics.Effects.Filters.Scene.Activate(Main.MonolithFilterNames[Main.SceneMetrics.ActiveMonolithType], new Vector2());
|
|
if (!SkyManager.Instance[Main.MonolithSkyNames[index]].IsActive())
|
|
SkyManager.Instance.Activate(Main.MonolithSkyNames[index], new Vector2());
|
|
}
|
|
else
|
|
{
|
|
if (Terraria.Graphics.Effects.Filters.Scene[Main.MonolithFilterNames[index]].IsActive())
|
|
Terraria.Graphics.Effects.Filters.Scene.Deactivate(Main.MonolithFilterNames[index]);
|
|
if (SkyManager.Instance[Main.MonolithSkyNames[index]].IsActive())
|
|
SkyManager.Instance.Deactivate(Main.MonolithSkyNames[index]);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static bool IsGraphicsDeviceAvailable => !Main.instance.GraphicsDevice.IsDisposed && Main.instance.GraphicsDevice.GraphicsDeviceStatus == GraphicsDeviceStatus.Normal;
|
|
|
|
private void GraphicsDeviceLost(object sender, EventArgs evt)
|
|
{
|
|
}
|
|
|
|
protected override void Draw(GameTime gameTime)
|
|
{
|
|
if (this._isDrawingOrUpdating || !Main.IsGraphicsDeviceAvailable)
|
|
return;
|
|
this._isDrawingOrUpdating = true;
|
|
this.EnsureRenderTargetContent();
|
|
this.DoDraw(gameTime);
|
|
if (Main.OnPostDraw != null)
|
|
Main.OnPostDraw(gameTime);
|
|
Main.Assets.TransferCompletedAssets();
|
|
this._isDrawingOrUpdating = false;
|
|
}
|
|
|
|
private void DoDraw(GameTime gameTime)
|
|
{
|
|
Stopwatch stopwatch1 = new Stopwatch();
|
|
stopwatch1.Start();
|
|
if (Main.showSplash)
|
|
{
|
|
this.DrawSplash(gameTime);
|
|
TimeLogger.SplashDrawTime(stopwatch1.Elapsed.TotalMilliseconds);
|
|
TimeLogger.EndDrawFrame();
|
|
}
|
|
else
|
|
{
|
|
if (Main._drawCycleCounter == 0UL)
|
|
Main.TileFrameSeed = Utils.RandomNextSeed(Main.TileFrameSeed);
|
|
Main._drawCycleCounter = (Main._drawCycleCounter + 1UL) % 5UL;
|
|
Main.MenuUI.IsVisible = Main.gameMenu && Main.menuMode == 888;
|
|
Main.InGameUI.IsVisible = !Main.gameMenu && Main.InGameUI.CurrentState != null;
|
|
PlayerInput.UpdateMainMouse();
|
|
this.RefreshPlayerDrawOrder();
|
|
CaptureManager.Instance.DrawTick();
|
|
TimeLogger.NewDrawFrame();
|
|
if (!Main.gameMenu)
|
|
this.TilesRenderer.PreparePaintForTilesOnScreen();
|
|
for (int index = 0; index < Main.ContentThatNeedsRenderTargets.Count; ++index)
|
|
Main.ContentThatNeedsRenderTargets[index].PrepareRenderTarget(this.GraphicsDevice, Main.spriteBatch);
|
|
this.TilePaintSystem.PrepareAllRequests();
|
|
TimeLogger.DetailedDrawTime(0);
|
|
if (Main.loadMap)
|
|
{
|
|
Main.refreshMap = false;
|
|
this.DrawToMap();
|
|
TimeLogger.DetailedDrawTime(1);
|
|
}
|
|
Main.drawToScreen = Lighting.UpdateEveryFrame;
|
|
if (Main.drawToScreen && Main.targetSet)
|
|
this.ReleaseTargets();
|
|
if (!Main.drawToScreen && !Main.targetSet)
|
|
this.InitTargets();
|
|
++Main.fpsCount;
|
|
if (!this.IsActive)
|
|
Main.maxQ = true;
|
|
this.UpdateDisplaySettings();
|
|
if (Main.OnPreDraw != null)
|
|
Main.OnPreDraw(gameTime);
|
|
++Main.drawsCountedForFPS;
|
|
Main.screenLastPosition = Main.screenPosition;
|
|
if (Main.stackSplit == 0)
|
|
{
|
|
Main.stackCounter = 0;
|
|
Main.stackDelay = 7;
|
|
Main.superFastStack = 0;
|
|
}
|
|
else
|
|
{
|
|
++Main.stackCounter;
|
|
int num;
|
|
switch (Main.stackDelay)
|
|
{
|
|
case 3:
|
|
num = 10;
|
|
break;
|
|
case 4:
|
|
num = 15;
|
|
break;
|
|
case 5:
|
|
num = 20;
|
|
break;
|
|
case 6:
|
|
num = 25;
|
|
break;
|
|
case 7:
|
|
num = 30;
|
|
break;
|
|
default:
|
|
num = 5;
|
|
break;
|
|
}
|
|
if (Main.stackCounter >= num)
|
|
{
|
|
--Main.stackDelay;
|
|
if (Main.stackDelay < 2)
|
|
{
|
|
Main.stackDelay = 2;
|
|
++Main.superFastStack;
|
|
}
|
|
Main.stackCounter = 0;
|
|
}
|
|
}
|
|
if (Main.myPlayer >= 0)
|
|
{
|
|
Main.player[Main.myPlayer].lastMouseInterface = Main.player[Main.myPlayer].mouseInterface;
|
|
Main.player[Main.myPlayer].mouseInterface = false;
|
|
}
|
|
if (Main.mapTime > 0)
|
|
--Main.mapTime;
|
|
if (Main.gameMenu)
|
|
Main.mapTime = Main.mapTimeMax;
|
|
Main.HoverItem = new Item();
|
|
Main.DoDraw_UpdateCameraPosition();
|
|
Main.CheckMonoliths();
|
|
Main.sunCircle += 0.01f;
|
|
if ((double) Main.sunCircle > 6.285)
|
|
Main.sunCircle -= 6.285f;
|
|
TimeLogger.DetailedDrawReset();
|
|
if (!Main.gameMenu)
|
|
{
|
|
this.waterfallManager.FindWaterfalls();
|
|
TimeLogger.DetailedDrawTime(2);
|
|
if (Main.renderNow)
|
|
{
|
|
Main.screenLastPosition = Main.screenPosition;
|
|
Main.renderNow = false;
|
|
Main.renderCount = 99;
|
|
this.Draw(gameTime);
|
|
Lighting.LightTiles(this.firstTileX, this.lastTileX, this.firstTileY, this.lastTileY);
|
|
Lighting.LightTiles(this.firstTileX, this.lastTileX, this.firstTileY, this.lastTileY);
|
|
this.RenderTiles();
|
|
Main.sceneTilePos.X = Main.screenPosition.X - (float) Main.offScreenRange;
|
|
Main.sceneTilePos.Y = Main.screenPosition.Y - (float) Main.offScreenRange;
|
|
this.RenderBackground();
|
|
Main.sceneBackgroundPos.X = Main.screenPosition.X - (float) Main.offScreenRange;
|
|
Main.sceneBackgroundPos.Y = Main.screenPosition.Y - (float) Main.offScreenRange;
|
|
this.RenderWalls();
|
|
Main.sceneWallPos.X = Main.screenPosition.X - (float) Main.offScreenRange;
|
|
Main.sceneWallPos.Y = Main.screenPosition.Y - (float) Main.offScreenRange;
|
|
this.RenderTiles2();
|
|
Main.sceneTile2Pos.X = Main.screenPosition.X - (float) Main.offScreenRange;
|
|
Main.sceneTile2Pos.Y = Main.screenPosition.Y - (float) Main.offScreenRange;
|
|
this.RenderWater();
|
|
Main.sceneWaterPos.X = Main.screenPosition.X - (float) Main.offScreenRange;
|
|
Main.sceneWaterPos.Y = Main.screenPosition.Y - (float) Main.offScreenRange;
|
|
Main.renderCount = 99;
|
|
}
|
|
else
|
|
{
|
|
if (Main.renderCount == 3)
|
|
{
|
|
this.RenderTiles();
|
|
Main.sceneTilePos.X = Main.screenPosition.X - (float) Main.offScreenRange;
|
|
Main.sceneTilePos.Y = Main.screenPosition.Y - (float) Main.offScreenRange;
|
|
}
|
|
if (Main.renderCount == 3)
|
|
{
|
|
this.RenderTiles2();
|
|
Main.sceneTile2Pos.X = Main.screenPosition.X - (float) Main.offScreenRange;
|
|
Main.sceneTile2Pos.Y = Main.screenPosition.Y - (float) Main.offScreenRange;
|
|
}
|
|
if (Main.renderCount == 3)
|
|
{
|
|
this.RenderWalls();
|
|
Main.sceneWallPos.X = Main.screenPosition.X - (float) Main.offScreenRange;
|
|
Main.sceneWallPos.Y = Main.screenPosition.Y - (float) Main.offScreenRange;
|
|
}
|
|
if (Main.renderCount == 2)
|
|
{
|
|
this.RenderBackground();
|
|
Main.sceneBackgroundPos.X = Main.screenPosition.X - (float) Main.offScreenRange;
|
|
Main.sceneBackgroundPos.Y = Main.screenPosition.Y - (float) Main.offScreenRange;
|
|
}
|
|
if (Main.renderCount == 1)
|
|
{
|
|
this.RenderWater();
|
|
Main.sceneWaterPos.X = Main.screenPosition.X - (float) Main.offScreenRange;
|
|
Main.sceneWaterPos.Y = Main.screenPosition.Y - (float) Main.offScreenRange;
|
|
}
|
|
}
|
|
if (Main.render && !Main.gameMenu)
|
|
{
|
|
if ((double) Math.Abs(Main.sceneTilePos.X - (Main.screenPosition.X - (float) Main.offScreenRange)) > (double) Main.offScreenRange || (double) Math.Abs(Main.sceneTilePos.Y - (Main.screenPosition.Y - (float) Main.offScreenRange)) > (double) Main.offScreenRange)
|
|
{
|
|
this.RenderTiles();
|
|
Main.sceneTilePos.X = Main.screenPosition.X - (float) Main.offScreenRange;
|
|
Main.sceneTilePos.Y = Main.screenPosition.Y - (float) Main.offScreenRange;
|
|
}
|
|
if ((double) Math.Abs(Main.sceneTile2Pos.X - (Main.screenPosition.X - (float) Main.offScreenRange)) > (double) Main.offScreenRange || (double) Math.Abs(Main.sceneTile2Pos.Y - (Main.screenPosition.Y - (float) Main.offScreenRange)) > (double) Main.offScreenRange)
|
|
{
|
|
this.RenderTiles2();
|
|
Main.sceneTile2Pos.X = Main.screenPosition.X - (float) Main.offScreenRange;
|
|
Main.sceneTile2Pos.Y = Main.screenPosition.Y - (float) Main.offScreenRange;
|
|
}
|
|
if ((double) Math.Abs(Main.sceneBackgroundPos.X - (Main.screenPosition.X - (float) Main.offScreenRange)) > (double) Main.offScreenRange || (double) Math.Abs(Main.sceneBackgroundPos.Y - (Main.screenPosition.Y - (float) Main.offScreenRange)) > (double) Main.offScreenRange)
|
|
{
|
|
this.RenderBackground();
|
|
Main.sceneBackgroundPos.X = Main.screenPosition.X - (float) Main.offScreenRange;
|
|
Main.sceneBackgroundPos.Y = Main.screenPosition.Y - (float) Main.offScreenRange;
|
|
}
|
|
if ((double) Math.Abs(Main.sceneWallPos.X - (Main.screenPosition.X - (float) Main.offScreenRange)) > (double) Main.offScreenRange || (double) Math.Abs(Main.sceneWallPos.Y - (Main.screenPosition.Y - (float) Main.offScreenRange)) > (double) Main.offScreenRange)
|
|
{
|
|
this.RenderWalls();
|
|
Main.sceneWallPos.X = Main.screenPosition.X - (float) Main.offScreenRange;
|
|
Main.sceneWallPos.Y = Main.screenPosition.Y - (float) Main.offScreenRange;
|
|
}
|
|
if ((double) Math.Abs(Main.sceneWaterPos.X - (Main.screenPosition.X - (float) Main.offScreenRange)) > (double) Main.offScreenRange || (double) Math.Abs(Main.sceneWaterPos.Y - (Main.screenPosition.Y - (float) Main.offScreenRange)) > (double) Main.offScreenRange)
|
|
{
|
|
this.RenderWater();
|
|
Main.sceneWaterPos.X = Main.screenPosition.X - (float) Main.offScreenRange;
|
|
Main.sceneWaterPos.Y = Main.screenPosition.Y - (float) Main.offScreenRange;
|
|
}
|
|
}
|
|
}
|
|
if (!Main.loadMap)
|
|
{
|
|
if (!Main.gameMenu)
|
|
{
|
|
TimeLogger.DetailedDrawReset();
|
|
Stopwatch stopwatch2 = new Stopwatch();
|
|
stopwatch2.Start();
|
|
int num = 0;
|
|
int x;
|
|
int y;
|
|
while (stopwatch2.ElapsedMilliseconds < 5L && Main.sectionManager.GetNextMapDraw(Main.player[Main.myPlayer].position, out x, out y))
|
|
{
|
|
this.DrawToMap_Section(x, y);
|
|
++num;
|
|
}
|
|
TimeLogger.DetailedDrawTime(3);
|
|
}
|
|
if (Main.updateMap)
|
|
{
|
|
if (this.IsActive || Main.netMode == 1)
|
|
{
|
|
if (Main.refreshMap)
|
|
{
|
|
Main.refreshMap = false;
|
|
Main.sectionManager.ClearMapDraw();
|
|
}
|
|
this.DrawToMap();
|
|
Main.updateMap = false;
|
|
}
|
|
else if (MapHelper.numUpdateTile > 0)
|
|
this.DrawToMap();
|
|
TimeLogger.DetailedDrawTime(4);
|
|
}
|
|
}
|
|
this.bgParallax = 0.1;
|
|
this.bgStartX = (int) (-Math.IEEERemainder((double) Main.screenPosition.X * this.bgParallax, (double) Main.backgroundWidth[Main.background]) - (double) (Main.backgroundWidth[Main.background] / 2));
|
|
this.bgLoops = Main.screenWidth / Main.backgroundWidth[Main.background] + 2;
|
|
this.bgStartY = 0;
|
|
this.bgLoopsY = 0;
|
|
this.bgTopY = (int) (-(double) Main.screenPosition.Y / (Main.worldSurface * 16.0 - 600.0) * 200.0);
|
|
if (Main.gameMenu || Main.netMode == 2)
|
|
this.bgTopY = -200;
|
|
float num1 = 0.0005f * (float) Main.dayRate;
|
|
if (Main.gameMenu)
|
|
num1 *= 20f;
|
|
if (Main.raining)
|
|
{
|
|
if ((double) Main.cloudAlpha > (double) Main.maxRaining)
|
|
{
|
|
Main.cloudAlpha -= num1;
|
|
if ((double) Main.cloudAlpha < (double) Main.maxRaining)
|
|
Main.cloudAlpha = Main.maxRaining;
|
|
}
|
|
else if ((double) Main.cloudAlpha < (double) Main.maxRaining)
|
|
{
|
|
Main.cloudAlpha += num1;
|
|
if ((double) Main.cloudAlpha > (double) Main.maxRaining)
|
|
Main.cloudAlpha = Main.maxRaining;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Main.cloudAlpha -= num1;
|
|
if ((double) Main.cloudAlpha < 0.0)
|
|
Main.cloudAlpha = 0.0f;
|
|
}
|
|
if (Main.gameMenu || Main.netMode == 2)
|
|
{
|
|
Main.bgDelay = 1000;
|
|
Main.SceneMetrics.EvilTileCount = (int) ((double) Main.bgAlphaFrontLayer[1] * (double) SceneMetrics.CorruptionTileMax);
|
|
}
|
|
Microsoft.Xna.Framework.Color moonColor = Microsoft.Xna.Framework.Color.White;
|
|
Microsoft.Xna.Framework.Color sunColor = Microsoft.Xna.Framework.Color.White;
|
|
float num2 = (float) (Main.SceneMetrics.MushroomTileCount / SceneMetrics.MushroomTileMax);
|
|
float tempMushroomInfluence = Main.SmoothedMushroomLightInfluence;
|
|
if ((double) num2 > 0.0)
|
|
{
|
|
double num3 = (double) num2;
|
|
if (num3 > (double) tempMushroomInfluence)
|
|
tempMushroomInfluence += 0.01f;
|
|
if (num3 < (double) tempMushroomInfluence)
|
|
tempMushroomInfluence -= 0.01f;
|
|
}
|
|
else
|
|
tempMushroomInfluence -= 0.02f;
|
|
if ((double) tempMushroomInfluence < 0.0)
|
|
tempMushroomInfluence = 0.0f;
|
|
if ((double) tempMushroomInfluence > 1.0)
|
|
tempMushroomInfluence = 1f;
|
|
Main.SmoothedMushroomLightInfluence = tempMushroomInfluence;
|
|
Main.SetBackColor(new Main.InfoToSetBackColor()
|
|
{
|
|
isInGameMenuOrIsServer = Main.gameMenu || Main.netMode == 2,
|
|
CorruptionBiomeInfluence = (float) Main.SceneMetrics.EvilTileCount / (float) SceneMetrics.CorruptionTileMax,
|
|
CrimsonBiomeInfluence = (float) Main.SceneMetrics.BloodTileCount / (float) SceneMetrics.CrimsonTileMax,
|
|
JungleBiomeInfluence = (float) Main.SceneMetrics.JungleTileCount / (float) SceneMetrics.JungleTileMax,
|
|
MushroomBiomeInfluence = Main.SmoothedMushroomLightInfluence,
|
|
GraveyardInfluence = Main.GraveyardVisualIntensity,
|
|
BloodMoonActive = Main.bloodMoon || Main.SceneMetrics.BloodMoonMonolith,
|
|
LanternNightActive = LanternNight.LanternsUp
|
|
}, out sunColor, out moonColor);
|
|
if (Main.gameMenu || Main.netMode == 2)
|
|
this.bgTopY = 0;
|
|
Main.ApplyColorOfTheSkiesToTiles();
|
|
Main.UpdateAtmosphereTransparencyToSkyColor();
|
|
this.GraphicsDevice.Clear(Microsoft.Xna.Framework.Color.Black);
|
|
base.Draw(gameTime);
|
|
float val2_1 = (float) Main.screenWidth / Main.MinimumZoomComparerX;
|
|
float val2_2 = (float) Main.screenHeight / Main.MinimumZoomComparerY;
|
|
Main.ForcedMinimumZoom = Math.Max(Math.Max(1f, val2_1), val2_2);
|
|
Main.GameViewMatrix.Effects = Main.gameMenu || (double) Main.player[Main.myPlayer].gravDir == 1.0 ? SpriteEffects.None : SpriteEffects.FlipVertically;
|
|
Main.BackgroundViewMatrix.Effects = Main.GameViewMatrix.Effects;
|
|
Main.BackgroundViewMatrix.Zoom = new Vector2(Main.ForcedMinimumZoom);
|
|
Main.GameViewMatrix.Zoom = new Vector2(Main.ForcedMinimumZoom * MathHelper.Clamp(Main.GameZoomTarget, 1f, 2f));
|
|
Main.Rasterizer = Main.gameMenu || (double) Main.player[Main.myPlayer].gravDir == 1.0 ? RasterizerState.CullCounterClockwise : RasterizerState.CullClockwise;
|
|
bool flag = !Main.drawToScreen && Main.netMode != 2 && !Main.gameMenu && !Main.mapFullscreen && Lighting.NotRetro && Terraria.Graphics.Effects.Filters.Scene.CanCapture();
|
|
if (flag)
|
|
Terraria.Graphics.Effects.Filters.Scene.BeginCapture(Main.screenTarget, Microsoft.Xna.Framework.Color.Black);
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, Main.DefaultSamplerState, DepthStencilState.None, Main.Rasterizer, (Effect) null, Main.BackgroundViewMatrix.TransformationMatrix);
|
|
TimeLogger.DetailedDrawReset();
|
|
if (!Main.mapFullscreen)
|
|
{
|
|
this.unityMouseOver = false;
|
|
if ((double) Main.screenPosition.Y < Main.worldSurface * 16.0 + 16.0)
|
|
{
|
|
Asset<Texture2D> asset = TextureAssets.Background[Main.background];
|
|
Microsoft.Xna.Framework.Rectangle destinationRectangle = new Microsoft.Xna.Framework.Rectangle(this.bgStartX, this.bgTopY, asset.Width(), Math.Max(Main.screenHeight, asset.Height()));
|
|
if (destinationRectangle.Bottom < asset.Height())
|
|
{
|
|
int num4 = asset.Height() - destinationRectangle.Bottom;
|
|
destinationRectangle.Height += num4;
|
|
}
|
|
for (int index = 0; index < this.bgLoops; ++index)
|
|
{
|
|
destinationRectangle.X = this.bgStartX + asset.Width() * index;
|
|
Main.spriteBatch.Draw(asset.Value, destinationRectangle, Main.ColorOfTheSkies);
|
|
}
|
|
TimeLogger.DetailedDrawTime(6);
|
|
}
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, Main.DefaultSamplerState, DepthStencilState.None, Main.Rasterizer, (Effect) null, Main.BackgroundViewMatrix.EffectMatrix);
|
|
Main.SceneArea sceneArea = new Main.SceneArea()
|
|
{
|
|
bgTopY = this.bgTopY,
|
|
totalHeight = (float) Main.screenHeight,
|
|
totalWidth = (float) Main.screenWidth,
|
|
SceneLocalScreenPositionOffset = Vector2.Zero
|
|
};
|
|
this.DrawStarsInBackground(sceneArea);
|
|
if ((double) Main.screenPosition.Y / 16.0 < Main.worldSurface + 2.0)
|
|
this.DrawSunAndMoon(sceneArea, moonColor, sunColor, tempMushroomInfluence);
|
|
TimeLogger.DetailedDrawTime(7);
|
|
}
|
|
Overlays.Scene.Draw(Main.spriteBatch, RenderLayers.Sky);
|
|
Main.spriteBatch.End();
|
|
Vector2 screenPosition = Main.screenPosition;
|
|
int screenWidth = Main.screenWidth;
|
|
int screenHeight = Main.screenHeight;
|
|
Main.screenWidth = (int) ((double) Main.screenWidth / (double) Main.BackgroundViewMatrix.Zoom.X);
|
|
Main.screenHeight = (int) ((double) Main.screenHeight / (double) Main.BackgroundViewMatrix.Zoom.Y);
|
|
Main.screenPosition += Main.BackgroundViewMatrix.Translation;
|
|
Matrix transformationMatrix = Main.BackgroundViewMatrix.TransformationMatrix;
|
|
transformationMatrix.Translation -= Main.BackgroundViewMatrix.ZoomMatrix.Translation * new Vector3(1f, Main.BackgroundViewMatrix.Effects.HasFlag((Enum) SpriteEffects.FlipVertically) ? -1f : 1f, 1f);
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.LinearClamp, DepthStencilState.None, Main.Rasterizer, (Effect) null, transformationMatrix);
|
|
this.DrawBG();
|
|
Main.screenWidth = screenWidth;
|
|
Main.screenHeight = screenHeight;
|
|
Main.screenPosition = screenPosition;
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.LinearClamp, DepthStencilState.None, Main.Rasterizer, (Effect) null, Main.GameViewMatrix.TransformationMatrix);
|
|
this.DrawBackgroundBlackFill();
|
|
Main.spriteBatch.End();
|
|
Overlays.Scene.Draw(Main.spriteBatch, RenderLayers.Landscape);
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.LinearClamp, DepthStencilState.None, Main.Rasterizer, (Effect) null, Main.UIScaleMatrix);
|
|
if (Main.gameMenu || Main.netMode == 2)
|
|
{
|
|
Main.spriteBatch.End();
|
|
Microsoft.Xna.Framework.Point screenSizeCache;
|
|
Microsoft.Xna.Framework.Point screenSizeCacheAfterScaling;
|
|
this.PreDrawMenu(out screenSizeCache, out screenSizeCacheAfterScaling);
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.LinearClamp, DepthStencilState.None, Main.Rasterizer, (Effect) null, Main.UIScaleMatrix);
|
|
this.DrawMenu(gameTime);
|
|
Main.PostDrawMenu(screenSizeCache, screenSizeCacheAfterScaling);
|
|
TimeLogger.MenuDrawTime(stopwatch1.Elapsed.TotalMilliseconds);
|
|
TimeLogger.EndDrawFrame();
|
|
}
|
|
else
|
|
{
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, Main.DefaultSamplerState, DepthStencilState.None, Main.Rasterizer, (Effect) null, Main.Transform);
|
|
this.DoLightTiles();
|
|
TimeLogger.DetailedDrawReset();
|
|
if (Main.mapFullscreen)
|
|
{
|
|
if (Main.player[Main.myPlayer].talkNPC >= 0 || Main.player[Main.myPlayer].sign >= 0 || Main.playerInventory && !CaptureManager.Instance.Active)
|
|
Main.player[Main.myPlayer].ToggleInv();
|
|
this.DrawMap(gameTime);
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, Main.SamplerStateForCursor, (DepthStencilState) null, (RasterizerState) null, (Effect) null, Main.UIScaleMatrix);
|
|
PlayerInput.SetZoom_UI();
|
|
this.DrawFPS();
|
|
this.DrawPlayerChat();
|
|
Main.DrawPendingMouseText();
|
|
Main.DrawCursor(Main.DrawThickCursor());
|
|
PlayerInput.SetZoom_Unscaled();
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, Main.DefaultSamplerState, (DepthStencilState) null, (RasterizerState) null, (Effect) null);
|
|
TimeLogger.MapDrawTime(stopwatch1.Elapsed.TotalMilliseconds);
|
|
TimeLogger.EndDrawFrame();
|
|
PlayerInput.SetDesiredZoomContext(ZoomContext.Unscaled);
|
|
CaptureManager.Instance.Update();
|
|
if (CaptureManager.Instance.Active)
|
|
CaptureManager.Instance.Draw(Main.spriteBatch);
|
|
Main.spriteBatch.End();
|
|
if (Main.mouseLeft)
|
|
Main.mouseLeftRelease = false;
|
|
else
|
|
Main.mouseLeftRelease = true;
|
|
}
|
|
else
|
|
{
|
|
Overlays.Scene.Draw(Main.spriteBatch, RenderLayers.InWorldUI);
|
|
Microsoft.Xna.Framework.Color white = Microsoft.Xna.Framework.Color.White;
|
|
if (Main.drawToScreen)
|
|
{
|
|
this.DrawWaters(true);
|
|
}
|
|
else
|
|
{
|
|
Main.spriteBatch.Draw((Texture2D) this.backWaterTarget, Main.sceneBackgroundPos - Main.screenPosition, Microsoft.Xna.Framework.Color.White);
|
|
TimeLogger.DetailedDrawTime(11);
|
|
}
|
|
Overlays.Scene.Draw(Main.spriteBatch, RenderLayers.BackgroundWater);
|
|
float x = (Main.sceneBackgroundPos.X - Main.screenPosition.X + (float) Main.offScreenRange) * Main.caveParallax - (float) Main.offScreenRange;
|
|
if (Main.drawToScreen)
|
|
{
|
|
Main.tileBatch.Begin();
|
|
this.DrawBackground();
|
|
Main.tileBatch.End();
|
|
}
|
|
else
|
|
{
|
|
Main.spriteBatch.Draw((Texture2D) this.backgroundTarget, new Vector2(x, Main.sceneBackgroundPos.Y - Main.screenPosition.Y), Microsoft.Xna.Framework.Color.White);
|
|
TimeLogger.DetailedDrawTime(12);
|
|
}
|
|
Overlays.Scene.Draw(Main.spriteBatch, RenderLayers.Background);
|
|
ScreenDarkness.DrawBack(Main.spriteBatch);
|
|
++Main.magmaBGFrameCounter;
|
|
if (Main.magmaBGFrameCounter >= 8)
|
|
{
|
|
Main.magmaBGFrameCounter = 0;
|
|
++Main.magmaBGFrame;
|
|
if (Main.magmaBGFrame >= 3)
|
|
Main.magmaBGFrame = 0;
|
|
}
|
|
this.DoDraw_WallsTilesNPCs();
|
|
Overlays.Scene.Draw(Main.spriteBatch, RenderLayers.TilesAndNPCs);
|
|
if (!Main.mapFullscreen)
|
|
{
|
|
if (Main.mapStyle == 2)
|
|
{
|
|
try
|
|
{
|
|
this.DrawMap(gameTime);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (Main.ignoreErrors)
|
|
TimeLogger.DrawException(ex);
|
|
else
|
|
throw;
|
|
}
|
|
}
|
|
}
|
|
TimeLogger.DetailedDrawReset();
|
|
Main.spriteBatch.End();
|
|
TimeLogger.DetailedDrawTime(35);
|
|
Main.HasInteractibleObjectThatIsNotATile = false;
|
|
this.SortDrawCacheWorms();
|
|
this.DrawSuperSpecialProjectiles(this.DrawCacheFirstFractals);
|
|
this.DrawCachedProjs(this.DrawCacheProjsBehindProjectiles);
|
|
this.DrawProjectiles();
|
|
Main.spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, Main.DefaultSamplerState, DepthStencilState.None, Main.Rasterizer, (Effect) null, Main.Transform);
|
|
Main.ParticleSystem_World_BehindPlayers.Settings.AnchorPosition = -Main.screenPosition;
|
|
Main.ParticleSystem_World_BehindPlayers.Draw(Main.spriteBatch);
|
|
Main.spriteBatch.End();
|
|
this.DrawPlayers_AfterProjectiles();
|
|
this.DrawCachedProjs(this.DrawCacheProjsOverPlayers);
|
|
Main.spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, Main.DefaultSamplerState, DepthStencilState.None, Main.Rasterizer, (Effect) null, Main.Transform);
|
|
Main.ParticleSystem_World_OverPlayers.Settings.AnchorPosition = -Main.screenPosition;
|
|
Main.ParticleSystem_World_OverPlayers.Draw(Main.spriteBatch);
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, Main.DefaultSamplerState, DepthStencilState.None, Main.Rasterizer, (Effect) null, Main.Transform);
|
|
this.DrawCachedNPCs(this.DrawCacheNPCsOverPlayers, false);
|
|
if (!Main.gamePaused)
|
|
{
|
|
Main.essScale += (float) Main.essDir * 0.01f;
|
|
if ((double) Main.essScale > 1.0)
|
|
{
|
|
Main.essDir = -1;
|
|
Main.essScale = 1f;
|
|
}
|
|
if ((double) Main.essScale < 0.7)
|
|
{
|
|
Main.essDir = 1;
|
|
Main.essScale = 0.7f;
|
|
}
|
|
}
|
|
this.DrawItems();
|
|
TimeLogger.DetailedDrawTime(22);
|
|
this.DrawRain();
|
|
if (Main.ignoreErrors)
|
|
{
|
|
try
|
|
{
|
|
this.DrawGore();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
TimeLogger.DrawException(ex);
|
|
}
|
|
}
|
|
else
|
|
this.DrawGore();
|
|
Main.spriteBatch.End();
|
|
this.DrawDust();
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, Main.DefaultSamplerState, DepthStencilState.None, Main.Rasterizer, (Effect) null, Main.Transform);
|
|
Overlays.Scene.Draw(Main.spriteBatch, RenderLayers.Entities);
|
|
if (Main.drawToScreen)
|
|
{
|
|
this.DrawWaters();
|
|
if (WiresUI.Settings.DrawWires)
|
|
this.DrawWires();
|
|
}
|
|
else
|
|
{
|
|
Main.spriteBatch.Draw((Texture2D) Main.waterTarget, Main.sceneWaterPos - Main.screenPosition, Microsoft.Xna.Framework.Color.White);
|
|
if (WiresUI.Settings.DrawWires)
|
|
this.DrawWires();
|
|
TimeLogger.DetailedDrawTime(26);
|
|
}
|
|
Overlays.Scene.Draw(Main.spriteBatch, RenderLayers.ForegroundWater);
|
|
this.DrawCachedProjs(this.DrawCacheProjsOverWiresUI, false);
|
|
this.DrawInfernoRings();
|
|
ScreenDarkness.DrawFront(Main.spriteBatch);
|
|
MoonlordDeathDrama.DrawWhite(Main.spriteBatch);
|
|
ScreenObstruction.Draw(Main.spriteBatch);
|
|
TimeLogger.DetailedDrawReset();
|
|
Main.spriteBatch.End();
|
|
Overlays.Scene.Draw(Main.spriteBatch, RenderLayers.All);
|
|
if (flag)
|
|
Terraria.Graphics.Effects.Filters.Scene.EndCapture((RenderTarget2D) null, Main.screenTarget, Main.screenTargetSwap, Microsoft.Xna.Framework.Color.Black);
|
|
TimeLogger.DetailedDrawTime(36);
|
|
if (!Main.hideUI)
|
|
{
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, Main.DefaultSamplerState, (DepthStencilState) null, (RasterizerState) null, (Effect) null, Main.UIScaleMatrix);
|
|
TimeLogger.DetailedDrawReset();
|
|
this.DrawPlayerChatBubbles();
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, Main.DefaultSamplerState, (DepthStencilState) null, (RasterizerState) null, (Effect) null, Main.GameViewMatrix.ZoomMatrix);
|
|
float targetScale = CombatText.TargetScale;
|
|
for (int index1 = 0; index1 < 100; ++index1)
|
|
{
|
|
if (Main.combatText[index1].active)
|
|
{
|
|
int index2 = 0;
|
|
if (Main.combatText[index1].crit)
|
|
index2 = 1;
|
|
Vector2 vector2_1 = FontAssets.CombatText[index2].Value.MeasureString(Main.combatText[index1].text);
|
|
Vector2 vector2_2 = new Vector2(vector2_1.X * 0.5f, vector2_1.Y * 0.5f);
|
|
float num5 = Main.combatText[index1].scale / targetScale;
|
|
float r = (float) Main.combatText[index1].color.R;
|
|
float g = (float) Main.combatText[index1].color.G;
|
|
float b = (float) Main.combatText[index1].color.B;
|
|
float a = (float) Main.combatText[index1].color.A;
|
|
float num6 = r * (float) ((double) num5 * (double) Main.combatText[index1].alpha * 0.300000011920929);
|
|
float num7 = b * (float) ((double) num5 * (double) Main.combatText[index1].alpha * 0.300000011920929);
|
|
float num8 = g * (float) ((double) num5 * (double) Main.combatText[index1].alpha * 0.300000011920929);
|
|
float num9 = a * (num5 * Main.combatText[index1].alpha);
|
|
Microsoft.Xna.Framework.Color color = new Microsoft.Xna.Framework.Color((int) num6, (int) num8, (int) num7, (int) num9);
|
|
for (int index3 = 0; index3 < 5; ++index3)
|
|
{
|
|
float num10 = 0.0f;
|
|
float num11 = 0.0f;
|
|
if (index3 == 0)
|
|
num10 -= targetScale;
|
|
else if (index3 == 1)
|
|
num10 += targetScale;
|
|
else if (index3 == 2)
|
|
num11 -= targetScale;
|
|
else if (index3 == 3)
|
|
{
|
|
num11 += targetScale;
|
|
}
|
|
else
|
|
{
|
|
float num12 = (float) Main.combatText[index1].color.R * num5 * Main.combatText[index1].alpha;
|
|
float num13 = (float) Main.combatText[index1].color.B * num5 * Main.combatText[index1].alpha;
|
|
float num14 = (float) Main.combatText[index1].color.G * num5 * Main.combatText[index1].alpha;
|
|
float num15 = (float) Main.combatText[index1].color.A * num5 * Main.combatText[index1].alpha;
|
|
color = new Microsoft.Xna.Framework.Color((int) num12, (int) num14, (int) num13, (int) num15);
|
|
}
|
|
if ((double) Main.player[Main.myPlayer].gravDir == -1.0)
|
|
{
|
|
float num16 = Main.combatText[index1].position.Y - Main.screenPosition.Y;
|
|
float num17 = (float) Main.screenHeight - num16;
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.CombatText[index2].Value, Main.combatText[index1].text, new Vector2(Main.combatText[index1].position.X - Main.screenPosition.X + num10 + vector2_2.X, num17 + num11 + vector2_2.Y), color, Main.combatText[index1].rotation, vector2_2, Main.combatText[index1].scale, SpriteEffects.None, 0.0f);
|
|
}
|
|
else
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.CombatText[index2].Value, Main.combatText[index1].text, new Vector2(Main.combatText[index1].position.X - Main.screenPosition.X + num10 + vector2_2.X, Main.combatText[index1].position.Y - Main.screenPosition.Y + num11 + vector2_2.Y), color, Main.combatText[index1].rotation, vector2_2, Main.combatText[index1].scale, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
}
|
|
float num18 = PopupText.TargetScale;
|
|
if ((double) num18 == 0.0)
|
|
num18 = 1f;
|
|
for (int index4 = 0; index4 < 20; ++index4)
|
|
{
|
|
if (Main.popupText[index4].active)
|
|
{
|
|
string str = Main.popupText[index4].name;
|
|
if (Main.popupText[index4].stack > 1)
|
|
str = str + " (" + (object) Main.popupText[index4].stack + ")";
|
|
Vector2 vector2_3 = FontAssets.MouseText.Value.MeasureString(str);
|
|
Vector2 vector2_4 = new Vector2(vector2_3.X * 0.5f, vector2_3.Y * 0.5f);
|
|
float num19 = Main.popupText[index4].scale / num18;
|
|
int num20 = (int) ((double) byte.MaxValue - (double) byte.MaxValue * (double) num19);
|
|
float r = (float) Main.popupText[index4].color.R;
|
|
float g = (float) Main.popupText[index4].color.G;
|
|
float b = (float) Main.popupText[index4].color.B;
|
|
float a = (float) Main.popupText[index4].color.A;
|
|
float num21 = r * (float) ((double) num19 * (double) Main.popupText[index4].alpha * 0.300000011920929);
|
|
float num22 = b * (float) ((double) num19 * (double) Main.popupText[index4].alpha * 0.300000011920929);
|
|
float num23 = g * (float) ((double) num19 * (double) Main.popupText[index4].alpha * 0.300000011920929);
|
|
float t = a * (num19 * Main.popupText[index4].alpha);
|
|
Microsoft.Xna.Framework.Color color1 = new Microsoft.Xna.Framework.Color((int) num21, (int) num23, (int) num22, (int) t);
|
|
Microsoft.Xna.Framework.Color color2 = Microsoft.Xna.Framework.Color.Black;
|
|
float num24 = 1f;
|
|
Texture2D texture2D = (Texture2D) null;
|
|
switch (Main.popupText[index4].context)
|
|
{
|
|
case PopupTextContext.ItemPickupToVoidContainer:
|
|
color2 = new Microsoft.Xna.Framework.Color((int) sbyte.MaxValue, 20, (int) byte.MaxValue) * 0.4f;
|
|
num24 = 0.8f;
|
|
break;
|
|
case PopupTextContext.SonarAlert:
|
|
color2 = Microsoft.Xna.Framework.Color.Blue * 0.4f;
|
|
if (Main.popupText[index4].npcNetID != 0)
|
|
color2 = Microsoft.Xna.Framework.Color.Red * 0.4f;
|
|
num24 = 1f;
|
|
break;
|
|
}
|
|
float num25 = (float) num20 / (float) byte.MaxValue;
|
|
for (int index5 = 0; index5 < 5; ++index5)
|
|
{
|
|
color1 = color2;
|
|
float num26 = 0.0f;
|
|
float num27 = 0.0f;
|
|
if (index5 == 0)
|
|
num26 -= num18 * 2f;
|
|
else if (index5 == 1)
|
|
num26 += num18 * 2f;
|
|
else if (index5 == 2)
|
|
num27 -= num18 * 2f;
|
|
else if (index5 == 3)
|
|
num27 += num18 * 2f;
|
|
else
|
|
color1 = Main.popupText[index4].color * num19 * Main.popupText[index4].alpha * num24;
|
|
if (index5 < 4)
|
|
{
|
|
t = (float) Main.popupText[index4].color.A * num19 * Main.popupText[index4].alpha;
|
|
color1 = new Microsoft.Xna.Framework.Color(0, 0, 0, (int) t);
|
|
}
|
|
if (color2 != Microsoft.Xna.Framework.Color.Black && index5 < 4)
|
|
{
|
|
num26 *= (float) (1.29999995231628 + 1.29999995231628 * (double) num25);
|
|
num27 *= (float) (1.29999995231628 + 1.29999995231628 * (double) num25);
|
|
}
|
|
float num28 = Main.popupText[index4].position.Y - Main.screenPosition.Y + num27;
|
|
if ((double) Main.player[Main.myPlayer].gravDir == -1.0)
|
|
num28 = (float) Main.screenHeight - num28;
|
|
if (color2 != Microsoft.Xna.Framework.Color.Black && index5 < 4)
|
|
{
|
|
Microsoft.Xna.Framework.Color color3 = color2;
|
|
color3.A = (byte) MathHelper.Lerp(60f, (float) sbyte.MaxValue, Utils.GetLerpValue(0.0f, (float) byte.MaxValue, t, true));
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.MouseText.Value, str, new Vector2(Main.popupText[index4].position.X - Main.screenPosition.X + num26 + vector2_4.X, num28 + vector2_4.Y), Microsoft.Xna.Framework.Color.Lerp(color1, color3, 0.5f), Main.popupText[index4].rotation, vector2_4, Main.popupText[index4].scale, SpriteEffects.None, 0.0f);
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.MouseText.Value, str, new Vector2(Main.popupText[index4].position.X - Main.screenPosition.X + num26 + vector2_4.X, num28 + vector2_4.Y), color3, Main.popupText[index4].rotation, vector2_4, Main.popupText[index4].scale, SpriteEffects.None, 0.0f);
|
|
}
|
|
else
|
|
DynamicSpriteFontExtensionMethods.DrawString(Main.spriteBatch, FontAssets.MouseText.Value, str, new Vector2(Main.popupText[index4].position.X - Main.screenPosition.X + num26 + vector2_4.X, num28 + vector2_4.Y), color1, Main.popupText[index4].rotation, vector2_4, Main.popupText[index4].scale, SpriteEffects.None, 0.0f);
|
|
if (texture2D != null)
|
|
{
|
|
float scale = (float) ((1.29999995231628 - (double) num25) * (double) Main.popupText[index4].scale * 0.699999988079071);
|
|
Vector2 vector2_5 = new Vector2(Main.popupText[index4].position.X - Main.screenPosition.X + num26 + vector2_4.X, num28 + vector2_4.Y);
|
|
Microsoft.Xna.Framework.Color color4 = color2 * 0.6f;
|
|
if (index5 == 4)
|
|
color4 = Microsoft.Xna.Framework.Color.White * 0.6f;
|
|
color4.A = (byte) ((double) color4.A * 0.5);
|
|
int num29 = 25;
|
|
Main.spriteBatch.Draw(texture2D, vector2_5 + new Vector2((float) ((double) vector2_4.X * -0.5 - (double) num29 - (double) texture2D.Size().X / 2.0), 0.0f), new Microsoft.Xna.Framework.Rectangle?(), color4 * Main.popupText[index4].scale, 0.0f, texture2D.Size() / 2f, scale, SpriteEffects.None, 0.0f);
|
|
Main.spriteBatch.Draw(texture2D, vector2_5 + new Vector2((float) ((double) vector2_4.X * 0.5 + (double) num29 + (double) texture2D.Size().X / 2.0), 0.0f), new Microsoft.Xna.Framework.Rectangle?(), color4 * Main.popupText[index4].scale, 0.0f, texture2D.Size() / 2f, scale, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
PlayerInput.SetZoom_UI();
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, Main.DefaultSamplerState, (DepthStencilState) null, (RasterizerState) null, (Effect) null, Main.UIScaleMatrix);
|
|
Main.DrawNetplayStatusText();
|
|
this.DrawFPS();
|
|
Main.spriteBatch.End();
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, Main.DefaultSamplerState, (DepthStencilState) null, (RasterizerState) null, (Effect) null, Main.GameViewMatrix.ZoomMatrix);
|
|
PlayerInput.SetZoom_World();
|
|
if (Main.BlackFadeIn > 0)
|
|
{
|
|
if (Main.BlackFadeIn < 0)
|
|
Main.BlackFadeIn = 0;
|
|
int a = Main.BlackFadeIn;
|
|
if (a > (int) byte.MaxValue)
|
|
a = (int) byte.MaxValue;
|
|
Main.BlackFadeIn -= 25;
|
|
Main.spriteBatch.Draw(TextureAssets.SplashTexture16x9.Value, new Microsoft.Xna.Framework.Rectangle(0, 0, Main.screenWidth, Main.screenHeight), new Microsoft.Xna.Framework.Color(0, 0, 0, a));
|
|
}
|
|
Main.spriteBatch.End();
|
|
if (!Main.mapFullscreen)
|
|
{
|
|
if (Main.ignoreErrors)
|
|
{
|
|
try
|
|
{
|
|
this.DrawInterface(gameTime);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
TimeLogger.DrawException(ex);
|
|
}
|
|
}
|
|
else
|
|
this.DrawInterface(gameTime);
|
|
}
|
|
TimeLogger.DetailedDrawTime(27);
|
|
}
|
|
else
|
|
Main.maxQ = true;
|
|
TimeLogger.DetailedDrawTime(37);
|
|
Main.mouseLeftRelease = !Main.mouseLeft;
|
|
Main.mouseRightRelease = !Main.mouseRight;
|
|
if (!PlayerInput.Triggers.Current.MouseRight && !PlayerInput.Triggers.Current.MouseLeft && !Main.preventStackSplitReset)
|
|
Main.stackSplit = 0;
|
|
if (Main.stackSplit > 0)
|
|
{
|
|
--Main.stackSplit;
|
|
if (Main.stackSplit == 0)
|
|
Main.preventStackSplitReset = false;
|
|
}
|
|
TimeLogger.RenderTime(Main.renderCount, stopwatch1.Elapsed.TotalMilliseconds);
|
|
TimeLogger.EndDrawFrame();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private static void DoDraw_UpdateCameraPosition()
|
|
{
|
|
Vector3 vector3 = Vector3.One / new Vector3(1f, 1f, 1f);
|
|
if ((Main.gameMenu ? 0 : (Main.netMode != 2 ? 1 : 0)) == 0)
|
|
return;
|
|
int num1 = 21;
|
|
if ((double) Main.cameraX != 0.0 && !Main.player[Main.myPlayer].pulley)
|
|
Main.cameraX = 0.0f;
|
|
if ((double) Main.cameraX > 0.0)
|
|
{
|
|
--Main.cameraX;
|
|
if ((double) Main.cameraX < 0.0)
|
|
Main.cameraX = 0.0f;
|
|
}
|
|
if ((double) Main.cameraX < 0.0)
|
|
{
|
|
++Main.cameraX;
|
|
if ((double) Main.cameraX > 0.0)
|
|
Main.cameraX = 0.0f;
|
|
}
|
|
Vector2 screenPosition = Main.screenPosition;
|
|
Main.screenPosition.X = (float) ((double) Main.player[Main.myPlayer].position.X + (double) Main.player[Main.myPlayer].width * 0.5 - (double) Main.screenWidth * 0.5 * (double) vector3.X) + Main.cameraX;
|
|
Main.screenPosition.Y = (float) ((double) Main.player[Main.myPlayer].position.Y + (double) Main.player[Main.myPlayer].height - (double) num1 - (double) Main.screenHeight * 0.5 * (double) vector3.Y) + Main.player[Main.myPlayer].gfxOffY;
|
|
Vector2 vector2_1 = Vector2.Zero;
|
|
float num2 = 0.0f;
|
|
float num3 = 0.0f;
|
|
float max = 36f;
|
|
bool flag = false;
|
|
if ((Main.player[Main.myPlayer].noThrow <= 0 && !Main.player[Main.myPlayer].lastMouseInterface || !(Main.CurrentPan == Vector2.Zero)) && !Main.player[Main.myPlayer].dead)
|
|
{
|
|
if (Main.LocalGolfState != null && (Main.LocalGolfState.ShouldCameraTrackBallLastKnownLocation || Main.LocalGolfState.IsTrackingBall))
|
|
{
|
|
if (Main.LocalGolfState.IsTrackingBall)
|
|
{
|
|
Projectile lastHitBall = Main.LocalGolfState.GetLastHitBall();
|
|
Vector2 vector2_2 = lastHitBall.Center - Main.LocalPlayer.Center;
|
|
if ((double) lastHitBall.velocity.Length() > 20.0)
|
|
max *= 2f;
|
|
vector2_1 = Main.CurrentPan * 0.87f + vector2_2 * 0.13f;
|
|
flag = true;
|
|
}
|
|
else if (Main.LocalGolfState.ShouldCameraTrackBallLastKnownLocation)
|
|
{
|
|
Vector2? lastBallLocation = Main.LocalGolfState.GetLastBallLocation();
|
|
if (lastBallLocation.HasValue)
|
|
{
|
|
Vector2 vector2_3 = lastBallLocation.Value - Main.LocalPlayer.Center;
|
|
vector2_1 = Main.CurrentPan * 0.87f + vector2_3 * 0.13f;
|
|
flag = true;
|
|
}
|
|
}
|
|
}
|
|
else if (PlayerInput.UsingGamepad)
|
|
{
|
|
Player player = Main.player[Main.myPlayer];
|
|
if ((double) PlayerInput.GamepadThumbstickRight.Length() != 0.0 || !Main.SmartCursorEnabled)
|
|
{
|
|
float num4 = -1f;
|
|
if (player.inventory[player.selectedItem].type == 1254 && player.scope)
|
|
num4 = 0.8f;
|
|
else if (player.inventory[player.selectedItem].type == 1254)
|
|
num4 = 0.6666667f;
|
|
else if (player.inventory[player.selectedItem].type == 1299)
|
|
num4 = 0.6666667f;
|
|
else if (player.scope)
|
|
num4 = 0.5f;
|
|
Vector2 vector2_4 = (Main.MouseScreen - new Vector2((float) Main.screenWidth, (float) Main.screenHeight) / 2f) / (new Vector2((float) Main.screenWidth, (float) Main.screenHeight) / 2f);
|
|
max = 48f;
|
|
if (vector2_4 != Vector2.Zero && (double) num4 != -1.0)
|
|
{
|
|
Vector2 vector2_5 = new Vector2((float) Main.screenWidth, (float) Main.screenHeight) * 0.5f * vector2_4 * num4;
|
|
vector2_1.X = vector2_5.X;
|
|
vector2_1.Y = vector2_5.Y;
|
|
flag = true;
|
|
}
|
|
}
|
|
}
|
|
else if (Main.player[Main.myPlayer].inventory[Main.player[Main.myPlayer].selectedItem].type == 1254 && Main.player[Main.myPlayer].scope && Main.mouseRight)
|
|
{
|
|
int num5 = Main.mouseX;
|
|
int num6 = Main.mouseY;
|
|
if (num5 > Main.screenWidth)
|
|
num5 = Main.screenWidth;
|
|
if (num5 < 0)
|
|
num5 = 0;
|
|
if (num6 > Main.screenHeight)
|
|
num6 = Main.screenHeight;
|
|
if (num6 < 0)
|
|
num6 = 0;
|
|
vector2_1.X = (float) (num5 - Main.screenWidth / 2) / 1.25f;
|
|
vector2_1.Y = (float) (num6 - Main.screenHeight / 2) / 1.25f;
|
|
flag = true;
|
|
}
|
|
else if (Main.player[Main.myPlayer].inventory[Main.player[Main.myPlayer].selectedItem].type == 1254 && Main.mouseRight)
|
|
{
|
|
int num7 = Main.mouseX;
|
|
int num8 = Main.mouseY;
|
|
if (num7 > Main.screenWidth)
|
|
num7 = Main.screenWidth;
|
|
if (num7 < 0)
|
|
num7 = 0;
|
|
if (num8 > Main.screenHeight)
|
|
num8 = Main.screenHeight;
|
|
if (num8 < 0)
|
|
num8 = 0;
|
|
vector2_1.X = (float) (num7 - Main.screenWidth / 2) / 1.5f;
|
|
vector2_1.Y = (float) (num8 - Main.screenHeight / 2) / 1.5f;
|
|
flag = true;
|
|
}
|
|
else if (Main.player[Main.myPlayer].inventory[Main.player[Main.myPlayer].selectedItem].type == 1299 && Main.player[Main.myPlayer].selectedItem != 58)
|
|
{
|
|
int num9 = Main.mouseX;
|
|
int num10 = Main.mouseY;
|
|
if (num9 > Main.screenWidth)
|
|
num9 = Main.screenWidth;
|
|
if (num9 < 0)
|
|
num9 = 0;
|
|
if (num10 > Main.screenHeight)
|
|
num10 = Main.screenHeight;
|
|
if (num10 < 0)
|
|
num10 = 0;
|
|
vector2_1.X = (float) (num9 - Main.screenWidth / 2) / 1.5f;
|
|
vector2_1.Y = (float) (num10 - Main.screenHeight / 2) / 1.5f;
|
|
flag = true;
|
|
}
|
|
else if (Main.player[Main.myPlayer].scope && Main.mouseRight)
|
|
{
|
|
int num11 = Main.mouseX;
|
|
int num12 = Main.mouseY;
|
|
if (num11 > Main.screenWidth)
|
|
num11 = Main.screenWidth;
|
|
if (num11 < 0)
|
|
num11 = 0;
|
|
if (num12 > Main.screenHeight)
|
|
num12 = Main.screenHeight;
|
|
if (num12 < 0)
|
|
num12 = 0;
|
|
vector2_1.X = (float) (num11 - Main.screenWidth / 2) / 2f;
|
|
vector2_1.Y = (float) (num12 - Main.screenHeight / 2) / 2f;
|
|
flag = true;
|
|
}
|
|
}
|
|
if (float.IsNaN(Main.CurrentPan.X))
|
|
Main.CurrentPan.X = 0.0f;
|
|
if (float.IsNaN(Main.CurrentPan.Y))
|
|
Main.CurrentPan.Y = 0.0f;
|
|
Vector2 vector2_6 = vector2_1 - Main.CurrentPan;
|
|
float num13 = vector2_6.Length();
|
|
float amount = 1f;
|
|
if ((double) num3 > (double) num2 + 9.99999974737875E-05)
|
|
amount = MathHelper.Clamp((float) (((double) num13 - (double) num2) / ((double) num3 - (double) num2)), 0.0f, 1f);
|
|
float num14 = MathHelper.Clamp(MathHelper.SmoothStep(0.0f, num13, amount), 0.0f, max);
|
|
if (vector2_1 == Vector2.Zero && !flag)
|
|
{
|
|
if ((double) Math.Abs(vector2_6.X) >= (double) (Main.screenWidth / 2) || (double) Math.Abs(vector2_6.Y) >= (double) (Main.screenHeight / 2))
|
|
{
|
|
Main.renderNow = true;
|
|
Main.CurrentPan *= 0.9f;
|
|
}
|
|
else if ((double) num14 > 9.99999974737875E-05)
|
|
Main.CurrentPan += Vector2.Normalize(vector2_6) * num14;
|
|
}
|
|
else if ((double) num14 > 9.99999974737875E-05)
|
|
Main.CurrentPan += Vector2.Normalize(vector2_6) * num14;
|
|
Main.screenPosition.X += Main.CurrentPan.X;
|
|
Main.screenPosition.Y += Main.CurrentPan.Y * Main.player[Main.myPlayer].gravDir;
|
|
if ((double) Main.cameraLerp > 0.0)
|
|
{
|
|
if ((double) Vector2.Distance(screenPosition, Main.screenPosition) - (double) Main.player[Main.myPlayer].velocity.Length() < 0.25 || Main.cameraGamePadLerp && !PlayerInput.UsingGamepad)
|
|
{
|
|
Main.cameraLerp = 0.0f;
|
|
Main.cameraGamePadLerp = false;
|
|
}
|
|
else
|
|
Main.screenPosition = Vector2.Lerp(screenPosition, Main.screenPosition, Main.cameraLerp);
|
|
}
|
|
Main.screenPosition.X = (float) (int) Main.screenPosition.X;
|
|
Main.screenPosition.Y = (float) (int) Main.screenPosition.Y;
|
|
Main.ClampScreenPositionToWorld();
|
|
}
|
|
|
|
private void DrawSunAndMoon(
|
|
Main.SceneArea sceneArea,
|
|
Microsoft.Xna.Framework.Color moonColor,
|
|
Microsoft.Xna.Framework.Color sunColor,
|
|
float tempMushroomInfluence)
|
|
{
|
|
Texture2D texture2D1 = TextureAssets.Sun.Value;
|
|
int index = Main.moonType;
|
|
if (!TextureAssets.Moon.IndexInRange<Asset<Texture2D>>(index))
|
|
index = Utils.Clamp<int>(index, 0, 8);
|
|
Texture2D texture2D2 = TextureAssets.Moon[index].Value;
|
|
int bgTopY = sceneArea.bgTopY;
|
|
int num1 = (int) (Main.time / 54000.0 * ((double) sceneArea.totalWidth + (double) (texture2D1.Width * 2))) - texture2D1.Width;
|
|
int num2 = 0;
|
|
float num3 = 1f;
|
|
float rotation1 = (float) (Main.time / 54000.0 * 2.0 - 7.30000019073486);
|
|
int num4 = (int) (Main.time / 32400.0 * ((double) sceneArea.totalWidth + (double) (texture2D2.Width * 2))) - texture2D2.Width;
|
|
int num5 = 0;
|
|
float num6 = 1f;
|
|
float rotation2 = (float) (Main.time / 32400.0 * 2.0 - 7.30000019073486);
|
|
if (Main.dayTime)
|
|
{
|
|
double num7;
|
|
if (Main.time < 27000.0)
|
|
{
|
|
num7 = Math.Pow(1.0 - Main.time / 54000.0 * 2.0, 2.0);
|
|
num2 = (int) ((double) bgTopY + num7 * 250.0 + 180.0);
|
|
}
|
|
else
|
|
{
|
|
num7 = Math.Pow((Main.time / 54000.0 - 0.5) * 2.0, 2.0);
|
|
num2 = (int) ((double) bgTopY + num7 * 250.0 + 180.0);
|
|
}
|
|
num3 = (float) (1.2 - num7 * 0.4);
|
|
}
|
|
else
|
|
{
|
|
double num8;
|
|
if (Main.time < 16200.0)
|
|
{
|
|
num8 = Math.Pow(1.0 - Main.time / 32400.0 * 2.0, 2.0);
|
|
num5 = (int) ((double) bgTopY + num8 * 250.0 + 180.0);
|
|
}
|
|
else
|
|
{
|
|
num8 = Math.Pow((Main.time / 32400.0 - 0.5) * 2.0, 2.0);
|
|
num5 = (int) ((double) bgTopY + num8 * 250.0 + 180.0);
|
|
}
|
|
num6 = (float) (1.2 - num8 * 0.4);
|
|
}
|
|
float scale1 = num3 * Main.ForcedMinimumZoom;
|
|
float scale2 = num6 * Main.ForcedMinimumZoom;
|
|
if (Main.dayTime)
|
|
{
|
|
scale1 *= 1.1f;
|
|
float num9 = 1f - tempMushroomInfluence - Main.cloudAlpha * 1.5f * Main.atmo;
|
|
if ((double) num9 < 0.0)
|
|
num9 = 0.0f;
|
|
Microsoft.Xna.Framework.Color color1 = new Microsoft.Xna.Framework.Color((int) (byte) ((double) byte.MaxValue * (double) num9), (int) (byte) ((double) sunColor.G * (double) num9), (int) (byte) ((double) sunColor.B * (double) num9), (int) (byte) ((double) byte.MaxValue * (double) num9));
|
|
Microsoft.Xna.Framework.Color color2 = new Microsoft.Xna.Framework.Color((int) (byte) ((double) sunColor.R * (double) num9), (int) (byte) ((double) sunColor.G * (double) num9), (int) (byte) ((double) sunColor.B * (double) num9), (int) (byte) ((double) sunColor.B * (double) num9));
|
|
bool flag = false;
|
|
if (Main.eclipse)
|
|
{
|
|
texture2D1 = TextureAssets.Sun3.Value;
|
|
flag = true;
|
|
}
|
|
else if (!Main.gameMenu && Main.player[Main.myPlayer].head == 12)
|
|
{
|
|
texture2D1 = TextureAssets.Sun2.Value;
|
|
flag = true;
|
|
}
|
|
if (flag)
|
|
color2 = new Microsoft.Xna.Framework.Color((int) (byte) ((double) sunColor.R * (double) num9), (int) (byte) ((double) sunColor.G * (double) num9), (int) (byte) ((double) sunColor.B * (double) num9), (int) (byte) ((double) ((int) sunColor.B - 60) * (double) num9));
|
|
Vector2 origin = texture2D1.Size() / 2f;
|
|
Vector2 position = new Vector2((float) num1, (float) (num2 + (int) Main.sunModY)) + sceneArea.SceneLocalScreenPositionOffset;
|
|
Main.spriteBatch.Draw(texture2D1, position, new Microsoft.Xna.Framework.Rectangle?(), color1, rotation1, origin, scale1, SpriteEffects.None, 0.0f);
|
|
Main.spriteBatch.Draw(texture2D1, position, new Microsoft.Xna.Framework.Rectangle?(), color2, rotation1, origin, scale1, SpriteEffects.None, 0.0f);
|
|
}
|
|
if (!Main.dayTime)
|
|
{
|
|
float num10 = (float) (1.0 - (double) Main.cloudAlpha * 1.5 * (double) Main.atmo);
|
|
if ((double) num10 < 0.0)
|
|
num10 = 0.0f;
|
|
moonColor *= num10;
|
|
Vector2 position = new Vector2((float) num4, (float) (num5 + (int) Main.moonModY)) + sceneArea.SceneLocalScreenPositionOffset;
|
|
if (WorldGen.drunkWorldGen)
|
|
Main.spriteBatch.Draw(TextureAssets.SmileyMoon.Value, position, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.SmileyMoon.Width(), TextureAssets.SmileyMoon.Height())), moonColor, (float) ((double) rotation2 / 2.0 + 3.14159274101257), new Vector2((float) (TextureAssets.SmileyMoon.Width() / 2), (float) (TextureAssets.SmileyMoon.Width() / 2)), scale2, SpriteEffects.None, 0.0f);
|
|
else if (Main.pumpkinMoon)
|
|
Main.spriteBatch.Draw(TextureAssets.PumpkinMoon.Value, position, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, TextureAssets.PumpkinMoon.Width() * Main.moonPhase, TextureAssets.PumpkinMoon.Width(), TextureAssets.PumpkinMoon.Width())), moonColor, rotation2, new Vector2((float) (TextureAssets.PumpkinMoon.Width() / 2), (float) (TextureAssets.PumpkinMoon.Width() / 2)), scale2, SpriteEffects.None, 0.0f);
|
|
else if (Main.snowMoon)
|
|
Main.spriteBatch.Draw(TextureAssets.SnowMoon.Value, position, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, TextureAssets.SnowMoon.Width() * Main.moonPhase, TextureAssets.SnowMoon.Width(), TextureAssets.SnowMoon.Width())), moonColor, rotation2, new Vector2((float) (TextureAssets.SnowMoon.Width() / 2), (float) (TextureAssets.SnowMoon.Width() / 2)), scale2, SpriteEffects.None, 0.0f);
|
|
else
|
|
Main.spriteBatch.Draw(TextureAssets.Moon[index].Value, position, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, TextureAssets.Moon[index].Width() * Main.moonPhase, TextureAssets.Moon[index].Width(), TextureAssets.Moon[index].Width())), moonColor, rotation2, new Vector2((float) (TextureAssets.Moon[index].Width() / 2), (float) (TextureAssets.Moon[index].Width() / 2)), scale2, SpriteEffects.None, 0.0f);
|
|
}
|
|
Microsoft.Xna.Framework.Rectangle rectangle1 = !Main.dayTime ? new Microsoft.Xna.Framework.Rectangle((int) ((double) num4 - (double) TextureAssets.Moon[index].Width() * 0.5 * (double) scale2), (int) ((double) num5 - (double) TextureAssets.Moon[index].Width() * 0.5 * (double) scale2 + (double) Main.moonModY), (int) ((double) TextureAssets.Moon[index].Width() * (double) scale2), (int) ((double) TextureAssets.Moon[index].Width() * (double) scale2)) : new Microsoft.Xna.Framework.Rectangle((int) ((double) num1 - (double) TextureAssets.Sun.Width() * 0.5 * (double) scale1), (int) ((double) num2 - (double) TextureAssets.Sun.Height() * 0.5 * (double) scale1 + (double) Main.sunModY), (int) ((double) TextureAssets.Sun.Width() * (double) scale1), (int) ((double) TextureAssets.Sun.Width() * (double) scale1));
|
|
rectangle1.Offset((int) sceneArea.SceneLocalScreenPositionOffset.X, (int) sceneArea.SceneLocalScreenPositionOffset.Y);
|
|
Microsoft.Xna.Framework.Rectangle rectangle2 = new Microsoft.Xna.Framework.Rectangle(Main.mouseX, Main.mouseY, 1, 1);
|
|
Main.sunModY = (short) ((double) Main.sunModY * 0.999);
|
|
Main.moonModY = (short) ((double) Main.moonModY * 0.999);
|
|
if ((!Main.gameMenu ? 0 : (Main.netMode != 1 ? 1 : 0)) == 0)
|
|
return;
|
|
if (rectangle2.Intersects(rectangle1) || Main.alreadyGrabbingSunOrMoon)
|
|
Main.player[Main.myPlayer].mouseInterface = true;
|
|
if (Main.mouseLeft && Main.hasFocus)
|
|
{
|
|
if (!rectangle2.Intersects(rectangle1) && !Main.alreadyGrabbingSunOrMoon)
|
|
return;
|
|
if (Main.dayTime)
|
|
{
|
|
Main.time = 54000.0 * ((double) (Main.mouseX + TextureAssets.Sun.Width()) / ((double) Main.screenWidth + (double) (TextureAssets.Sun.Width() * 2)));
|
|
Main.sunModY = (short) (Main.mouseY - num2);
|
|
if (Main.time > 53990.0)
|
|
Main.time = 53990.0;
|
|
}
|
|
else
|
|
{
|
|
Main.time = 32400.0 * ((double) (Main.mouseX + TextureAssets.Moon[index].Width()) / ((double) Main.screenWidth + (double) (TextureAssets.Moon[index].Width() * 2)));
|
|
Main.moonModY = (short) (Main.mouseY - num5);
|
|
if (Main.time > 32390.0)
|
|
Main.time = 32390.0;
|
|
}
|
|
if (Main.time < 10.0)
|
|
Main.time = 10.0;
|
|
Main.alreadyGrabbingSunOrMoon = true;
|
|
}
|
|
else
|
|
Main.alreadyGrabbingSunOrMoon = false;
|
|
}
|
|
|
|
private void DrawStarsInBackground(Main.SceneArea sceneArea)
|
|
{
|
|
if (Main.netMode == 2 || (double) Main.screenPosition.Y >= Main.worldSurface * 16.0 + 16.0)
|
|
return;
|
|
float num1 = 1f;
|
|
if ((double) Main.GraveyardVisualIntensity > 0.0)
|
|
{
|
|
float num2 = (float) (1.0 - (double) Main.GraveyardVisualIntensity * 1.39999997615814);
|
|
if ((double) num2 <= 0.0)
|
|
return;
|
|
num1 *= num2;
|
|
}
|
|
Microsoft.Xna.Framework.Color colorOfTheSkies = Main.ColorOfTheSkies;
|
|
if ((double) byte.MaxValue * (1.0 - (double) Main.cloudAlpha * (double) Main.atmo) - (double) colorOfTheSkies.R - 25.0 <= 0.0)
|
|
return;
|
|
for (int index1 = 0; index1 < Main.numStars; ++index1)
|
|
{
|
|
Star star = Main.star[index1];
|
|
if (star != null && !star.hidden)
|
|
{
|
|
Microsoft.Xna.Framework.Color color1 = new Microsoft.Xna.Framework.Color();
|
|
float num3 = 1f - star.fadeIn;
|
|
int num4 = (int) ((double) ((int) byte.MaxValue - (int) colorOfTheSkies.R - 100) * (double) star.twinkle * (double) num3);
|
|
int num5 = (int) ((double) ((int) byte.MaxValue - (int) colorOfTheSkies.G - 100) * (double) star.twinkle * (double) num3);
|
|
int num6 = (int) ((double) ((int) byte.MaxValue - (int) colorOfTheSkies.B - 100) * (double) star.twinkle * (double) num3);
|
|
int num7 = (num4 + num6 + num5) / 3;
|
|
if (num7 > 0)
|
|
{
|
|
int num8 = (int) ((double) num7 * 1.4);
|
|
if (num8 > (int) byte.MaxValue)
|
|
num8 = (int) byte.MaxValue;
|
|
int num9 = num8;
|
|
int num10 = num8;
|
|
color1.R = (byte) num8;
|
|
color1.G = (byte) num9;
|
|
color1.B = (byte) num10;
|
|
color1 *= num1;
|
|
Vector2 position = new Vector2(star.position.X / 1920f, star.position.Y / 1200f) * new Vector2(sceneArea.totalWidth, sceneArea.totalHeight) + new Vector2(0.0f, (float) sceneArea.bgTopY) + sceneArea.SceneLocalScreenPositionOffset;
|
|
Texture2D texture2D = TextureAssets.Star[star.type].Value;
|
|
Vector2 origin = texture2D.Size() / 2f;
|
|
if (star.falling)
|
|
{
|
|
star.fadeIn = 0.0f;
|
|
int num11 = star.fallTime;
|
|
float num12 = 30f;
|
|
if ((double) num11 > (double) num12)
|
|
num11 = (int) num12;
|
|
for (int index2 = 1; index2 < num11; ++index2)
|
|
{
|
|
Vector2 vector2 = star.fallSpeed * (float) index2 * 0.4f;
|
|
float num13 = star.scale * (float) (1.0 - (double) index2 * 1.0 / (double) num12);
|
|
Microsoft.Xna.Framework.Color color2 = color1;
|
|
double rotation = (double) star.rotation;
|
|
Microsoft.Xna.Framework.Color color3 = color2 * (float) (1.0 - (double) index2 * 1.0 / (double) num12);
|
|
Main.spriteBatch.Draw(texture2D, position - vector2, new Microsoft.Xna.Framework.Rectangle?(), color3, star.rotation, origin, num13 * star.twinkle * Main.ForcedMinimumZoom, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
Main.spriteBatch.Draw(texture2D, position, new Microsoft.Xna.Framework.Rectangle?(), color1, star.rotation, origin, star.scale * star.twinkle * Main.ForcedMinimumZoom, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private static void ApplyColorOfTheSkiesToTiles()
|
|
{
|
|
Microsoft.Xna.Framework.Color colorOfTheSkies = Main.ColorOfTheSkies;
|
|
Main.tileColor.A = byte.MaxValue;
|
|
Main.tileColor.R = (byte) (((int) colorOfTheSkies.R + (int) colorOfTheSkies.G + (int) colorOfTheSkies.B + (int) colorOfTheSkies.R * 7) / 10);
|
|
Main.tileColor.G = (byte) (((int) colorOfTheSkies.R + (int) colorOfTheSkies.G + (int) colorOfTheSkies.B + (int) colorOfTheSkies.G * 7) / 10);
|
|
Main.tileColor.B = (byte) (((int) colorOfTheSkies.R + (int) colorOfTheSkies.G + (int) colorOfTheSkies.B + (int) colorOfTheSkies.B * 7) / 10);
|
|
Main.tileColor = SkyManager.Instance.ProcessTileColor(Main.tileColor);
|
|
}
|
|
|
|
private static void UpdateAtmosphereTransparencyToSkyColor()
|
|
{
|
|
float num1 = (float) (Main.maxTilesX / 4200);
|
|
float num2 = num1 * num1;
|
|
Main.atmo = (float) ((((double) Main.screenPosition.Y + (double) (Main.screenHeight / 2)) / 16.0 - (65.0 + 10.0 * (double) num2)) / (Main.worldSurface / 5.0));
|
|
if ((double) Main.atmo < 0.0)
|
|
Main.atmo = 0.0f;
|
|
if ((double) Main.atmo > 1.0)
|
|
Main.atmo = 1f;
|
|
if (Main.gameMenu || Main.netMode == 2)
|
|
Main.atmo = 1f;
|
|
Microsoft.Xna.Framework.Color color = Main.ColorOfTheSkies;
|
|
color.R = (byte) ((double) color.R * (double) Main.atmo);
|
|
color.G = (byte) ((double) color.G * (double) Main.atmo);
|
|
color.B = (byte) ((double) color.B * (double) Main.atmo);
|
|
if ((double) Main.atmo <= 0.01)
|
|
color = Microsoft.Xna.Framework.Color.Transparent;
|
|
Main.ColorOfTheSkies = color;
|
|
}
|
|
|
|
private void Debug_PrettifyMap()
|
|
{
|
|
}
|
|
|
|
private static void DrawNetplayStatusText()
|
|
{
|
|
if (Main.netMode != 1 || string.IsNullOrWhiteSpace(Netplay.Connection.StatusText))
|
|
return;
|
|
string text = Netplay.Connection.StatusText;
|
|
if (!Netplay.Connection.HideStatusTextPercent)
|
|
text = text + ": " + (object) (int) ((double) Netplay.Connection.StatusCount / (double) Netplay.Connection.StatusMax * 100.0) + "%";
|
|
if (Main._netplayStatusTextSnippets == null || Main._oldNetplayStatusText != text)
|
|
{
|
|
Main._netplayStatusTextSnippets = ChatManager.ParseMessage(text, Microsoft.Xna.Framework.Color.White).ToArray();
|
|
Main._oldNetplayStatusText = text;
|
|
}
|
|
Vector2 position = new Vector2((float) (628.0 - (double) ChatManager.GetStringSize(FontAssets.MouseText.Value, Main._netplayStatusTextSnippets, Vector2.One).X * 0.5) + (float) (Main.screenWidth - 800), 84f);
|
|
int hoveredSnippet;
|
|
if (Netplay.Connection.StatusTextHasShadows)
|
|
ChatManager.DrawColorCodedStringWithShadow(Main.spriteBatch, FontAssets.MouseText.Value, Main._netplayStatusTextSnippets, position, 0.0f, Vector2.Zero, Vector2.One, out hoveredSnippet);
|
|
else
|
|
ChatManager.DrawColorCodedString(Main.spriteBatch, FontAssets.MouseText.Value, Main._netplayStatusTextSnippets, position, new Microsoft.Xna.Framework.Color((int) Main.mouseTextColor, (int) Main.mouseTextColor, (int) Main.mouseTextColor, (int) Main.mouseTextColor), 0.0f, Vector2.Zero, Vector2.One, out hoveredSnippet, -1f);
|
|
}
|
|
|
|
private void DrawPlayerChatBubbles()
|
|
{
|
|
for (int index = 0; index < (int) byte.MaxValue; ++index)
|
|
{
|
|
if (Main.player[index].active && Main.player[index].chatOverhead.timeLeft > 0 && !Main.player[index].dead)
|
|
{
|
|
Vector2 messageSize = Main.player[index].chatOverhead.messageSize;
|
|
Vector2 screenPosition = Main.player[index].Top.ToScreenPosition();
|
|
screenPosition.Y -= messageSize.Y + 2f;
|
|
if ((double) Main.player[Main.myPlayer].gravDir == -1.0)
|
|
screenPosition.Y += 2f;
|
|
screenPosition.X -= messageSize.X / 2f;
|
|
screenPosition.Y += Main.player[index].gfxOffY;
|
|
Vector2 position = screenPosition.Floor();
|
|
int hoveredSnippet = 0;
|
|
ChatManager.DrawColorCodedStringWithShadow(Main.spriteBatch, FontAssets.MouseText.Value, Main.player[index].chatOverhead.snippets, position, 0.0f, Main.player[index].chatOverhead.color, Vector2.Zero, Vector2.One, out hoveredSnippet);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void DrawRainInMenu()
|
|
{
|
|
bool isActive = this.IsActive;
|
|
Microsoft.Xna.Framework.Rectangle[] rectangleArray = new Microsoft.Xna.Framework.Rectangle[6];
|
|
for (int index = 0; index < rectangleArray.Length; ++index)
|
|
rectangleArray[index] = new Microsoft.Xna.Framework.Rectangle(index * 4, 0, 2, 40);
|
|
Microsoft.Xna.Framework.Color color = Main.ColorOfTheSkies * 0.85f;
|
|
for (int index = 0; index < Main.maxRain; ++index)
|
|
{
|
|
if (Main.rain[index].active)
|
|
{
|
|
Rain rain = Main.rain[index];
|
|
Main.spriteBatch.Draw(TextureAssets.Rain.Value, rain.position - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(rectangleArray[(int) rain.type]), color, rain.rotation, Vector2.Zero, rain.scale, SpriteEffects.None, 0.0f);
|
|
if (isActive)
|
|
rain.Update();
|
|
}
|
|
}
|
|
}
|
|
|
|
private void DoDraw_WallsTilesNPCs()
|
|
{
|
|
try
|
|
{
|
|
this.CacheNPCDraws();
|
|
this.CacheProjDraws();
|
|
this.DrawCachedNPCs(this.DrawCacheNPCsMoonMoon, true);
|
|
this.DoDraw_WallsAndBlacks();
|
|
this.DrawWoF();
|
|
this.DrawBackGore();
|
|
MoonlordDeathDrama.DrawPieces(Main.spriteBatch);
|
|
MoonlordDeathDrama.DrawExplosions(Main.spriteBatch);
|
|
this.DrawCachedNPCs(this.DrawCacheNPCsBehindNonSolidTiles, true);
|
|
this.DoDraw_Tiles_NonSolid();
|
|
this.DoDraw_Waterfalls();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
TimeLogger.DrawException(ex);
|
|
}
|
|
Main.spriteBatch.End();
|
|
try
|
|
{
|
|
int num = Main.player[Main.myPlayer].detectCreature ? 1 : 0;
|
|
if (num == 0)
|
|
this.DoDraw_DrawNPCsBehindTiles();
|
|
this.DoDraw_Tiles_Solid();
|
|
if (num != 0)
|
|
this.DoDraw_DrawNPCsBehindTiles();
|
|
this.DrawPlayers_BehindNPCs();
|
|
this.DoDraw_DrawNPCsOverTiles();
|
|
TimeLogger.DetailedDrawReset();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
TimeLogger.DrawException(ex);
|
|
}
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, Main.DefaultSamplerState, DepthStencilState.None, Main.Rasterizer, (Effect) null, Main.Transform);
|
|
}
|
|
|
|
private void DoDraw_Waterfalls()
|
|
{
|
|
this.waterfallManager.Draw(Main.spriteBatch);
|
|
TimeLogger.DetailedDrawTime(16);
|
|
}
|
|
|
|
private void DoDraw_Tiles_Solid()
|
|
{
|
|
this.TilesRenderer.PreDrawTiles(true, !Main.drawToScreen, false);
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, Main.DefaultSamplerState, DepthStencilState.None, Main.Rasterizer, (Effect) null, Main.Transform);
|
|
try
|
|
{
|
|
if (Main.drawToScreen)
|
|
{
|
|
this.DrawTiles(true, !Main.drawToScreen, false);
|
|
}
|
|
else
|
|
{
|
|
Main.spriteBatch.Draw((Texture2D) this.tileTarget, Main.sceneTilePos - Main.screenPosition, Microsoft.Xna.Framework.Color.White);
|
|
TimeLogger.DetailedDrawTime(17);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
TimeLogger.DrawException(ex);
|
|
}
|
|
Main.spriteBatch.End();
|
|
this.DrawTileEntities(true, !Main.drawToScreen, false);
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, Main.DefaultSamplerState, DepthStencilState.None, Main.Rasterizer, (Effect) null, Main.Transform);
|
|
try
|
|
{
|
|
Main.player[Main.myPlayer].hitReplace.DrawFreshAnimations(Main.spriteBatch);
|
|
Main.player[Main.myPlayer].hitTile.DrawFreshAnimations(Main.spriteBatch);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
TimeLogger.DrawException(ex);
|
|
}
|
|
Main.spriteBatch.End();
|
|
}
|
|
|
|
private void DoDraw_Tiles_NonSolid()
|
|
{
|
|
this.TilesRenderer.PreDrawTiles(false, !Main.drawToScreen, false);
|
|
if (Main.drawToScreen)
|
|
{
|
|
this.DrawTiles(false, !Main.drawToScreen, false);
|
|
TimeLogger.DetailedDrawReset();
|
|
}
|
|
else
|
|
{
|
|
Main.spriteBatch.Draw((Texture2D) this.tile2Target, Main.sceneTile2Pos - Main.screenPosition, Microsoft.Xna.Framework.Color.White);
|
|
TimeLogger.DetailedDrawTime(15);
|
|
}
|
|
Main.spriteBatch.End();
|
|
try
|
|
{
|
|
this.DrawTileEntities(false, !Main.drawToScreen, false);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
TimeLogger.DrawException(ex);
|
|
}
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, Main.DefaultSamplerState, DepthStencilState.None, Main.Rasterizer, (Effect) null, Main.Transform);
|
|
}
|
|
|
|
private void DoDraw_DrawNPCsOverTiles()
|
|
{
|
|
this.DrawCachedProjs(this.DrawCacheProjsBehindNPCs);
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, Main.DefaultSamplerState, DepthStencilState.None, Main.Rasterizer, (Effect) null, Main.Transform);
|
|
try
|
|
{
|
|
this.DrawNPCs();
|
|
this.DrawCachedNPCs(this.DrawCacheNPCProjectiles, false);
|
|
TimeLogger.DetailedDrawTime(19);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
TimeLogger.DrawException(ex);
|
|
}
|
|
Main.spriteBatch.End();
|
|
}
|
|
|
|
private void DoDraw_DrawNPCsBehindTiles()
|
|
{
|
|
this.DrawCachedProjs(this.DrawCacheProjsBehindNPCsAndTiles);
|
|
Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, Main.DefaultSamplerState, DepthStencilState.None, Main.Rasterizer, (Effect) null, Main.Transform);
|
|
try
|
|
{
|
|
this.DrawNPCs(true);
|
|
TimeLogger.DetailedDrawTime(18);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
TimeLogger.DrawException(ex);
|
|
}
|
|
Main.spriteBatch.End();
|
|
}
|
|
|
|
private void DrawBackGore()
|
|
{
|
|
if (!Main.drawBackGore)
|
|
return;
|
|
Main.drawBackGore = false;
|
|
if (Main.ignoreErrors)
|
|
{
|
|
try
|
|
{
|
|
this.DrawGoreBehind();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
TimeLogger.DrawException(ex);
|
|
}
|
|
}
|
|
else
|
|
this.DrawGoreBehind();
|
|
}
|
|
|
|
private void DoDraw_WallsAndBlacks()
|
|
{
|
|
if (Main.drawToScreen)
|
|
{
|
|
this.DrawBlack();
|
|
Main.tileBatch.Begin();
|
|
this.DrawWalls();
|
|
Main.tileBatch.End();
|
|
}
|
|
else
|
|
{
|
|
Main.spriteBatch.Draw((Texture2D) this.blackTarget, Main.sceneTilePos - Main.screenPosition, Microsoft.Xna.Framework.Color.White);
|
|
TimeLogger.DetailedDrawTime(13);
|
|
Main.spriteBatch.Draw((Texture2D) this.wallTarget, Main.sceneWallPos - Main.screenPosition, Microsoft.Xna.Framework.Color.White);
|
|
TimeLogger.DetailedDrawTime(14);
|
|
}
|
|
Overlays.Scene.Draw(Main.spriteBatch, RenderLayers.Walls);
|
|
}
|
|
|
|
private static void SetBackColor(
|
|
Main.InfoToSetBackColor info,
|
|
out Microsoft.Xna.Framework.Color sunColor,
|
|
out Microsoft.Xna.Framework.Color moonColor)
|
|
{
|
|
double time = Main.time;
|
|
Microsoft.Xna.Framework.Color white = Microsoft.Xna.Framework.Color.White;
|
|
sunColor = Microsoft.Xna.Framework.Color.White;
|
|
moonColor = Microsoft.Xna.Framework.Color.White;
|
|
int num1 = info.isInGameMenuOrIsServer ? 1 : 0;
|
|
if (Main.dayTime)
|
|
{
|
|
if (time < 13500.0)
|
|
{
|
|
float num2 = (float) (time / 13500.0);
|
|
sunColor.R = (byte) ((double) num2 * 200.0 + 55.0);
|
|
sunColor.G = (byte) ((double) num2 * 180.0 + 75.0);
|
|
sunColor.B = (byte) ((double) num2 * 250.0 + 5.0);
|
|
white.R = (byte) ((double) num2 * 230.0 + 25.0);
|
|
white.G = (byte) ((double) num2 * 220.0 + 35.0);
|
|
white.B = (byte) ((double) num2 * 220.0 + 35.0);
|
|
}
|
|
if (time > 45900.0)
|
|
{
|
|
float num3 = (float) (1.0 - (time / 54000.0 - 0.85) * (20.0 / 3.0));
|
|
sunColor.R = (byte) ((double) num3 * 120.0 + 55.0);
|
|
sunColor.G = (byte) ((double) num3 * 100.0 + 25.0);
|
|
sunColor.B = (byte) ((double) num3 * 120.0 + 55.0);
|
|
white.R = (byte) ((double) num3 * 200.0 + 35.0);
|
|
white.G = (byte) ((double) num3 * 85.0 + 35.0);
|
|
white.B = (byte) ((double) num3 * 135.0 + 35.0);
|
|
}
|
|
else if (time > 37800.0)
|
|
{
|
|
float num4 = (float) (1.0 - (time / 54000.0 - 0.7) * (20.0 / 3.0));
|
|
sunColor.R = (byte) ((double) num4 * 80.0 + 175.0);
|
|
sunColor.G = (byte) ((double) num4 * 130.0 + 125.0);
|
|
sunColor.B = (byte) ((double) num4 * 100.0 + 155.0);
|
|
white.R = (byte) ((double) num4 * 20.0 + 235.0);
|
|
white.G = (byte) ((double) num4 * 135.0 + 120.0);
|
|
white.B = (byte) ((double) num4 * 85.0 + 170.0);
|
|
}
|
|
}
|
|
if (!Main.dayTime)
|
|
{
|
|
if (info.BloodMoonActive)
|
|
{
|
|
if (time < 16200.0)
|
|
{
|
|
float num5 = (float) (1.0 - time / 16200.0);
|
|
moonColor.R = (byte) ((double) num5 * 10.0 + 205.0);
|
|
moonColor.G = (byte) ((double) num5 * 170.0 + 55.0);
|
|
moonColor.B = (byte) ((double) num5 * 200.0 + 55.0);
|
|
white.R = (byte) (40.0 - (double) num5 * 40.0 + 35.0);
|
|
white.G = (byte) ((double) num5 * 20.0 + 15.0);
|
|
white.B = (byte) ((double) num5 * 20.0 + 15.0);
|
|
}
|
|
else if (time >= 16200.0)
|
|
{
|
|
float num6 = (float) ((time / 32400.0 - 0.5) * 2.0);
|
|
moonColor.R = (byte) ((double) num6 * 50.0 + 205.0);
|
|
moonColor.G = (byte) ((double) num6 * 100.0 + 155.0);
|
|
moonColor.B = (byte) ((double) num6 * 100.0 + 155.0);
|
|
moonColor.R = (byte) ((double) num6 * 10.0 + 205.0);
|
|
moonColor.G = (byte) ((double) num6 * 170.0 + 55.0);
|
|
moonColor.B = (byte) ((double) num6 * 200.0 + 55.0);
|
|
white.R = (byte) (40.0 - (double) num6 * 40.0 + 35.0);
|
|
white.G = (byte) ((double) num6 * 20.0 + 15.0);
|
|
white.B = (byte) ((double) num6 * 20.0 + 15.0);
|
|
}
|
|
}
|
|
else if (time < 16200.0)
|
|
{
|
|
float num7 = (float) (1.0 - time / 16200.0);
|
|
moonColor.R = (byte) ((double) num7 * 10.0 + 205.0);
|
|
moonColor.G = (byte) ((double) num7 * 70.0 + 155.0);
|
|
moonColor.B = (byte) ((double) num7 * 100.0 + 155.0);
|
|
white.R = (byte) ((double) num7 * 30.0 + 5.0);
|
|
white.G = (byte) ((double) num7 * 30.0 + 5.0);
|
|
white.B = (byte) ((double) num7 * 30.0 + 5.0);
|
|
}
|
|
else if (time >= 16200.0)
|
|
{
|
|
float num8 = (float) ((time / 32400.0 - 0.5) * 2.0);
|
|
moonColor.R = (byte) ((double) num8 * 50.0 + 205.0);
|
|
moonColor.G = (byte) ((double) num8 * 100.0 + 155.0);
|
|
moonColor.B = (byte) ((double) num8 * 100.0 + 155.0);
|
|
white.R = (byte) ((double) num8 * 20.0 + 5.0);
|
|
white.G = (byte) ((double) num8 * 30.0 + 5.0);
|
|
white.B = (byte) ((double) num8 * 30.0 + 5.0);
|
|
}
|
|
}
|
|
if ((double) Main.cloudAlpha > 0.0)
|
|
{
|
|
float num9 = (float) (1.0 - (double) Main.cloudAlpha * 0.899999976158142 * (double) Main.atmo);
|
|
white.R = (byte) ((double) white.R * (double) num9);
|
|
white.G = (byte) ((double) white.G * (double) num9);
|
|
white.B = (byte) ((double) white.B * (double) num9);
|
|
}
|
|
if ((double) info.GraveyardInfluence > 0.0)
|
|
{
|
|
float num10 = (float) (1.0 - (double) info.GraveyardInfluence * 0.600000023841858);
|
|
white.R = (byte) ((double) white.R * (double) num10);
|
|
white.G = (byte) ((double) white.G * (double) num10);
|
|
white.B = (byte) ((double) white.B * (double) num10);
|
|
}
|
|
if (num1 != 0 && !Main.dayTime)
|
|
{
|
|
white.R = (byte) 35;
|
|
white.G = (byte) 35;
|
|
white.B = (byte) 35;
|
|
}
|
|
if ((double) info.CorruptionBiomeInfluence > 0.0)
|
|
{
|
|
float num11 = info.CorruptionBiomeInfluence;
|
|
if ((double) num11 > 1.0)
|
|
num11 = 1f;
|
|
int r1 = (int) white.R;
|
|
int g1 = (int) white.G;
|
|
int b1 = (int) white.B;
|
|
int num12 = r1 - (int) (90.0 * (double) num11 * ((double) white.R / (double) byte.MaxValue));
|
|
int num13 = g1 - (int) (140.0 * (double) num11 * ((double) white.G / (double) byte.MaxValue));
|
|
int num14 = b1 - (int) (70.0 * (double) num11 * ((double) white.B / (double) byte.MaxValue));
|
|
if (num12 < 15)
|
|
num12 = 15;
|
|
if (num13 < 15)
|
|
num13 = 15;
|
|
if (num14 < 15)
|
|
num14 = 15;
|
|
white.R = (byte) num12;
|
|
white.G = (byte) num13;
|
|
white.B = (byte) num14;
|
|
int r2 = (int) sunColor.R;
|
|
int g2 = (int) sunColor.G;
|
|
int b2 = (int) sunColor.B;
|
|
int num15 = r2 - (int) (100.0 * (double) num11 * ((double) sunColor.R / (double) byte.MaxValue));
|
|
int num16 = g2 - (int) (100.0 * (double) num11 * ((double) sunColor.G / (double) byte.MaxValue));
|
|
int num17 = b2 - (int) (0.0 * (double) num11 * ((double) sunColor.B / (double) byte.MaxValue));
|
|
if (num15 < 15)
|
|
num15 = 15;
|
|
if (num16 < 15)
|
|
num16 = 15;
|
|
if (num17 < 15)
|
|
num17 = 15;
|
|
sunColor.R = (byte) num15;
|
|
sunColor.G = (byte) num16;
|
|
sunColor.B = (byte) num17;
|
|
}
|
|
if ((double) info.CrimsonBiomeInfluence > 0.0)
|
|
{
|
|
float num18 = info.CrimsonBiomeInfluence;
|
|
if ((double) num18 > 1.0)
|
|
num18 = 1f;
|
|
int r = (int) white.R;
|
|
int g3 = (int) white.G;
|
|
int b3 = (int) white.B;
|
|
int num19 = r - (int) (40.0 * (double) num18 * ((double) white.G / (double) byte.MaxValue));
|
|
int num20 = g3 - (int) (110.0 * (double) num18 * ((double) white.G / (double) byte.MaxValue));
|
|
int num21 = b3 - (int) (140.0 * (double) num18 * ((double) white.B / (double) byte.MaxValue));
|
|
if (num19 < 15)
|
|
num19 = 15;
|
|
if (num20 < 15)
|
|
num20 = 15;
|
|
if (num21 < 15)
|
|
num21 = 15;
|
|
white.R = (byte) num19;
|
|
white.G = (byte) num20;
|
|
white.B = (byte) num21;
|
|
int num22 = (int) sunColor.R;
|
|
int g4 = (int) sunColor.G;
|
|
int b4 = (int) sunColor.B;
|
|
int num23 = g4 - (int) (90.0 * (double) num18 * ((double) sunColor.G / (double) byte.MaxValue));
|
|
int num24 = b4 - (int) (110.0 * (double) num18 * ((double) sunColor.B / (double) byte.MaxValue));
|
|
if (num22 < 15)
|
|
num22 = 15;
|
|
if (num23 < 15)
|
|
num23 = 15;
|
|
if (num24 < 15)
|
|
num24 = 15;
|
|
sunColor.R = (byte) num22;
|
|
sunColor.G = (byte) num23;
|
|
sunColor.B = (byte) num24;
|
|
}
|
|
if ((double) info.JungleBiomeInfluence > 0.0)
|
|
{
|
|
float num25 = info.JungleBiomeInfluence;
|
|
if ((double) num25 > 1.0)
|
|
num25 = 1f;
|
|
int r3 = (int) white.R;
|
|
int num26 = (int) white.G;
|
|
int b5 = (int) white.B;
|
|
int num27 = r3 - (int) (40.0 * (double) num25 * ((double) white.R / (double) byte.MaxValue));
|
|
int num28 = b5 - (int) (70.0 * (double) num25 * ((double) white.B / (double) byte.MaxValue));
|
|
if (num26 > (int) byte.MaxValue)
|
|
num26 = (int) byte.MaxValue;
|
|
if (num26 < 15)
|
|
num26 = 15;
|
|
if (num27 > (int) byte.MaxValue)
|
|
num27 = (int) byte.MaxValue;
|
|
if (num27 < 15)
|
|
num27 = 15;
|
|
if (num28 < 15)
|
|
num28 = 15;
|
|
white.R = (byte) num27;
|
|
white.G = (byte) num26;
|
|
white.B = (byte) num28;
|
|
int r4 = (int) sunColor.R;
|
|
int num29 = (int) sunColor.G;
|
|
int b6 = (int) sunColor.B;
|
|
int num30 = r4 - (int) (30.0 * (double) num25 * ((double) sunColor.R / (double) byte.MaxValue));
|
|
int num31 = b6 - (int) (10.0 * (double) num25 * ((double) sunColor.B / (double) byte.MaxValue));
|
|
if (num30 < 15)
|
|
num30 = 15;
|
|
if (num29 < 15)
|
|
num29 = 15;
|
|
if (num31 < 15)
|
|
num31 = 15;
|
|
sunColor.R = (byte) num30;
|
|
sunColor.G = (byte) num29;
|
|
sunColor.B = (byte) num31;
|
|
}
|
|
if ((double) info.MushroomBiomeInfluence > 0.0)
|
|
{
|
|
float mushroomBiomeInfluence = info.MushroomBiomeInfluence;
|
|
int r5 = (int) white.R;
|
|
int g5 = (int) white.G;
|
|
int b7 = (int) white.B;
|
|
int num32 = g5 - (int) (250.0 * (double) mushroomBiomeInfluence * ((double) white.G / (double) byte.MaxValue));
|
|
int num33 = r5 - (int) (250.0 * (double) mushroomBiomeInfluence * ((double) white.R / (double) byte.MaxValue));
|
|
int num34 = b7 - (int) (250.0 * (double) mushroomBiomeInfluence * ((double) white.B / (double) byte.MaxValue));
|
|
if (num32 < 15)
|
|
num32 = 15;
|
|
if (num33 < 15)
|
|
num33 = 15;
|
|
if (num34 < 15)
|
|
num34 = 15;
|
|
white.R = (byte) num33;
|
|
white.G = (byte) num32;
|
|
white.B = (byte) num34;
|
|
int r6 = (int) sunColor.R;
|
|
int g6 = (int) sunColor.G;
|
|
int b8 = (int) sunColor.B;
|
|
int num35 = g6 - (int) (10.0 * (double) mushroomBiomeInfluence * ((double) sunColor.G / (double) byte.MaxValue));
|
|
int num36 = r6 - (int) (30.0 * (double) mushroomBiomeInfluence * ((double) sunColor.R / (double) byte.MaxValue));
|
|
int num37 = b8 - (int) (10.0 * (double) mushroomBiomeInfluence * ((double) sunColor.B / (double) byte.MaxValue));
|
|
if (num36 < 15)
|
|
num36 = 15;
|
|
if (num35 < 15)
|
|
num35 = 15;
|
|
if (num37 < 15)
|
|
num37 = 15;
|
|
sunColor.R = (byte) num36;
|
|
sunColor.G = (byte) num35;
|
|
sunColor.B = (byte) num37;
|
|
int r7 = (int) moonColor.R;
|
|
int g7 = (int) moonColor.G;
|
|
int b9 = (int) moonColor.B;
|
|
int num38 = g7 - (int) (140.0 * (double) mushroomBiomeInfluence * ((double) moonColor.R / (double) byte.MaxValue));
|
|
int num39 = r7 - (int) (170.0 * (double) mushroomBiomeInfluence * ((double) moonColor.G / (double) byte.MaxValue));
|
|
int num40 = b9 - (int) (190.0 * (double) mushroomBiomeInfluence * ((double) moonColor.B / (double) byte.MaxValue));
|
|
if (num39 < 15)
|
|
num39 = 15;
|
|
if (num38 < 15)
|
|
num38 = 15;
|
|
if (num40 < 15)
|
|
num40 = 15;
|
|
moonColor.R = (byte) num39;
|
|
moonColor.G = (byte) num38;
|
|
moonColor.B = (byte) num40;
|
|
}
|
|
byte num41 = 15;
|
|
switch (Main.GetMoonPhase())
|
|
{
|
|
case MoonPhase.Full:
|
|
num41 = (byte) 19;
|
|
break;
|
|
case MoonPhase.ThreeQuartersAtLeft:
|
|
case MoonPhase.ThreeQuartersAtRight:
|
|
num41 = (byte) 17;
|
|
break;
|
|
case MoonPhase.HalfAtLeft:
|
|
case MoonPhase.HalfAtRight:
|
|
num41 = (byte) 15;
|
|
break;
|
|
case MoonPhase.QuarterAtLeft:
|
|
case MoonPhase.QuarterAtRight:
|
|
num41 = (byte) 13;
|
|
break;
|
|
case MoonPhase.Empty:
|
|
num41 = (byte) 11;
|
|
break;
|
|
}
|
|
if ((int) white.R < (int) num41)
|
|
white.R = num41;
|
|
if ((int) white.G < (int) num41)
|
|
white.G = num41;
|
|
if ((int) white.B < (int) num41)
|
|
white.B = num41;
|
|
if (info.BloodMoonActive)
|
|
{
|
|
if (white.R < (byte) 25)
|
|
white.R = (byte) 25;
|
|
if (white.G < (byte) 25)
|
|
white.G = (byte) 25;
|
|
if (white.B < (byte) 25)
|
|
white.B = (byte) 25;
|
|
}
|
|
if (Main.eclipse && Main.dayTime)
|
|
{
|
|
float num42 = 1242f;
|
|
Main.eclipseLight = (float) time / num42;
|
|
if ((double) Main.eclipseLight > 1.0)
|
|
Main.eclipseLight = 1f;
|
|
}
|
|
else if ((double) Main.eclipseLight > 0.0)
|
|
{
|
|
Main.eclipseLight -= 0.01f;
|
|
if ((double) Main.eclipseLight < 0.0)
|
|
Main.eclipseLight = 0.0f;
|
|
}
|
|
if ((double) Main.eclipseLight > 0.0)
|
|
{
|
|
float num43 = (float) (1.0 - 0.925000011920929 * (double) Main.eclipseLight);
|
|
float num44 = (float) (1.0 - 0.959999978542328 * (double) Main.eclipseLight);
|
|
float num45 = (float) (1.0 - 1.0 * (double) Main.eclipseLight);
|
|
int num46 = (int) ((double) white.R * (double) num43);
|
|
int num47 = (int) ((double) white.G * (double) num44);
|
|
int num48 = (int) ((double) white.B * (double) num45);
|
|
white.R = (byte) num46;
|
|
white.G = (byte) num47;
|
|
white.B = (byte) num48;
|
|
sunColor.R = byte.MaxValue;
|
|
sunColor.G = (byte) 127;
|
|
sunColor.B = (byte) 67;
|
|
if (white.R < (byte) 20)
|
|
white.R = (byte) 20;
|
|
if (white.G < (byte) 10)
|
|
white.G = (byte) 10;
|
|
if (!Lighting.NotRetro)
|
|
{
|
|
if (white.R < (byte) 20)
|
|
white.R = (byte) 20;
|
|
if (white.G < (byte) 14)
|
|
white.G = (byte) 14;
|
|
if (white.B < (byte) 6)
|
|
white.B = (byte) 6;
|
|
}
|
|
}
|
|
if ((double) Main.lightning > 0.0)
|
|
{
|
|
float num49 = (float) white.R / (float) byte.MaxValue;
|
|
float num50 = (float) white.G / (float) byte.MaxValue;
|
|
float num51 = (float) white.B / (float) byte.MaxValue;
|
|
float num52 = MathHelper.Lerp(num49, 1f, Main.lightning);
|
|
float num53 = MathHelper.Lerp(num50, 1f, Main.lightning);
|
|
float num54 = MathHelper.Lerp(num51, 1f, Main.lightning);
|
|
white.R = (byte) ((double) num52 * (double) byte.MaxValue);
|
|
white.G = (byte) ((double) num53 * (double) byte.MaxValue);
|
|
white.B = (byte) ((double) num54 * (double) byte.MaxValue);
|
|
}
|
|
if (!info.BloodMoonActive)
|
|
moonColor = Microsoft.Xna.Framework.Color.White;
|
|
Main.ColorOfTheSkies = white;
|
|
}
|
|
|
|
private void DoLightTiles()
|
|
{
|
|
Vector2 vector2_1 = Main.Camera.ScaledPosition;
|
|
Vector2 vector2_2 = Main.Camera.ScaledSize;
|
|
if (!Lighting.UsingNewLighting)
|
|
{
|
|
vector2_1 = Main.Camera.UnscaledPosition;
|
|
vector2_2 = Main.Camera.UnscaledSize;
|
|
}
|
|
this.firstTileX = (int) Math.Floor((double) vector2_1.X / 16.0) - 1;
|
|
this.lastTileX = (int) Math.Floor(((double) vector2_1.X + (double) vector2_2.X) / 16.0) + 2;
|
|
this.firstTileY = (int) Math.Floor((double) vector2_1.Y / 16.0) - 1;
|
|
this.lastTileY = (int) Math.Floor(((double) vector2_1.Y + (double) vector2_2.Y) / 16.0) + 2;
|
|
if (Main.drawSkip)
|
|
return;
|
|
Lighting.LightTiles(this.firstTileX, this.lastTileX, this.firstTileY, this.lastTileY);
|
|
}
|
|
|
|
private static void ClampScreenPositionToWorld()
|
|
{
|
|
Vector2 input1 = new Vector2(Main.leftWorld + 656f, Main.topWorld + 656f) - Main.GameViewMatrix.Translation;
|
|
Vector2 input2 = new Vector2((float) ((double) Main.rightWorld - (double) Main.screenWidth / (double) Main.GameViewMatrix.Zoom.X - 672.0), (float) ((double) Main.bottomWorld - (double) Main.screenHeight / (double) Main.GameViewMatrix.Zoom.Y - 672.0)) - Main.GameViewMatrix.Translation;
|
|
Vector2 min = Utils.Round(input1);
|
|
Vector2 max = Utils.Round(input2);
|
|
Main.screenPosition = Vector2.Clamp(Main.screenPosition, min, max);
|
|
}
|
|
|
|
private void DrawBG()
|
|
{
|
|
float num1 = (float) Math.Min(PlayerInput.RealScreenHeight, Main.LogicCheckScreenHeight);
|
|
float num2 = (float) ((double) Main.screenPosition.Y + (double) (Main.screenHeight / 2) - (double) num1 / 2.0);
|
|
this.scAdj = (float) (Main.worldSurface * 16.0) / (num2 + num1);
|
|
float num3 = (float) ((double) Main.maxTilesY * 0.150000005960464 * 16.0) - num2;
|
|
if ((double) num3 < 0.0)
|
|
num3 = 0.0f;
|
|
float num4 = num3 * 0.00025f;
|
|
this.scAdj *= 0.45f - num4 * num4;
|
|
if (Main.maxTilesY <= 1200)
|
|
this.scAdj *= -500f;
|
|
else if (Main.maxTilesY <= 1800)
|
|
this.scAdj *= -300f;
|
|
else
|
|
this.scAdj *= -150f;
|
|
this.screenOff = (float) Main.screenHeight - 600f;
|
|
this.bgTopY = (int) ((-(double) Main.screenPosition.Y + (double) this.screenOff / 2.0) / (Main.worldSurface * 16.0) * 1200.0 + 1190.0) + (int) this.scAdj;
|
|
this.cTop = (float) (this.bgTopY - 50);
|
|
if (Main.resetClouds)
|
|
{
|
|
Cloud.resetClouds();
|
|
Main.resetClouds = false;
|
|
}
|
|
Main.bgScale = 1f;
|
|
Main.bgWidthScaled = (int) ((double) Main.backgroundWidth[Main.treeMntBGSet1[0]] * (double) Main.bgScale);
|
|
Main.ColorOfSurfaceBackgroundsModified = Main.ColorOfTheSkies;
|
|
Main.ColorOfSurfaceBackgroundsBase = Main.ColorOfTheSkies;
|
|
int num5 = Main.GetPreferredBGStyleForPlayer();
|
|
int num6 = 30;
|
|
Main.backgroundLayerTransitionSpeed = 0.05f;
|
|
if (num5 == 0)
|
|
num6 = 60;
|
|
if (Main.bgDelay < 0)
|
|
++Main.bgDelay;
|
|
else if (num5 != Main.bgStyle)
|
|
{
|
|
++Main.bgDelay;
|
|
if (Main.bgDelay > num6)
|
|
{
|
|
Main.bgDelay = -60;
|
|
Main.bgStyle = num5;
|
|
if (num5 == 0)
|
|
Main.bgDelay = 0;
|
|
}
|
|
}
|
|
else if (Main.bgDelay > 0)
|
|
--Main.bgDelay;
|
|
if (Main.gameMenu)
|
|
{
|
|
Main.backgroundLayerTransitionSpeed = 0.02f;
|
|
Main.bgStyle = Main.dayTime ? 0 : 1;
|
|
num5 = Main.bgStyle;
|
|
if (WorldGen.drunkWorldGen)
|
|
Main.bgStyle = 9;
|
|
}
|
|
if (Main.instantBGTransitionCounter > 0)
|
|
{
|
|
--Main.instantBGTransitionCounter;
|
|
Main.bgStyle = num5;
|
|
Main.backgroundLayerTransitionSpeed = 1f;
|
|
}
|
|
this.UpdateBGVisibility_BackLayer(new int?(), new float?());
|
|
this.UpdateBGVisibility_FrontLayer(new int?(), new float?());
|
|
try
|
|
{
|
|
this.DrawSurfaceBG();
|
|
if (Main.BackgroundEnabled)
|
|
this.DrawUnderworldBackground(false);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (!Main.ignoreErrors)
|
|
throw ex;
|
|
TimeLogger.DrawException(ex);
|
|
}
|
|
TimeLogger.DetailedDrawTime(8);
|
|
}
|
|
|
|
private void UpdateBGVisibility_FrontLayer(
|
|
int? targetBiomeOverride,
|
|
float? transitionAmountOverride)
|
|
{
|
|
int bgStyle = Main.bgStyle;
|
|
if (targetBiomeOverride.HasValue)
|
|
bgStyle = targetBiomeOverride.Value;
|
|
float layerTransitionSpeed = Main.backgroundLayerTransitionSpeed;
|
|
if (transitionAmountOverride.HasValue)
|
|
layerTransitionSpeed = transitionAmountOverride.Value;
|
|
for (int index = 0; index < Main.bgAlphaFrontLayer.Length; ++index)
|
|
{
|
|
if (bgStyle == index)
|
|
{
|
|
Main.bgAlphaFrontLayer[index] += layerTransitionSpeed;
|
|
if ((double) Main.bgAlphaFrontLayer[index] > 1.0)
|
|
Main.bgAlphaFrontLayer[index] = 1f;
|
|
}
|
|
else
|
|
{
|
|
Main.bgAlphaFrontLayer[index] -= layerTransitionSpeed;
|
|
if ((double) Main.bgAlphaFrontLayer[index] < 0.0)
|
|
Main.bgAlphaFrontLayer[index] = 0.0f;
|
|
}
|
|
}
|
|
}
|
|
|
|
private void UpdateBGVisibility_BackLayer(
|
|
int? targetBiomeOverride,
|
|
float? transitionAmountOverride)
|
|
{
|
|
int bgStyle = Main.bgStyle;
|
|
if (targetBiomeOverride.HasValue)
|
|
bgStyle = targetBiomeOverride.Value;
|
|
double layerTransitionSpeed = (double) Main.backgroundLayerTransitionSpeed;
|
|
if (transitionAmountOverride.HasValue)
|
|
{
|
|
double num = (double) transitionAmountOverride.Value;
|
|
}
|
|
switch (bgStyle)
|
|
{
|
|
case 1:
|
|
case 5:
|
|
this.DrawBG_ModifyBGFarBackLayerAlpha(2, transitionAmountOverride: transitionAmountOverride);
|
|
break;
|
|
case 2:
|
|
this.DrawBG_ModifyBGFarBackLayerAlpha(1, transitionAmountOverride: transitionAmountOverride);
|
|
break;
|
|
case 3:
|
|
if (WorldGen.jungleBG == 5)
|
|
{
|
|
this.DrawBG_ModifyBGFarBackLayerAlpha(13, transitionAmountOverride: transitionAmountOverride);
|
|
break;
|
|
}
|
|
this.DrawBG_ModifyBGFarBackLayerAlpha(0, transitionAmountOverride: transitionAmountOverride);
|
|
break;
|
|
case 4:
|
|
this.DrawBG_ModifyBGFarBackLayerAlpha(3, transitionAmountOverride: transitionAmountOverride);
|
|
break;
|
|
case 6:
|
|
if (WorldGen.hallowBG == 3)
|
|
{
|
|
this.DrawBG_ModifyBGFarBackLayerAlpha(6, transitionAmountOverride: transitionAmountOverride);
|
|
break;
|
|
}
|
|
this.DrawBG_ModifyBGFarBackLayerAlpha(2, transitionAmountOverride: transitionAmountOverride);
|
|
break;
|
|
case 7:
|
|
this.DrawBG_ModifyBGFarBackLayerAlpha(4, transitionAmountOverride: transitionAmountOverride);
|
|
break;
|
|
case 8:
|
|
this.DrawBG_ModifyBGFarBackLayerAlpha(5, transitionAmountOverride: transitionAmountOverride);
|
|
break;
|
|
case 9:
|
|
this.DrawBG_ModifyBGFarBackLayerAlpha(0, new int?(6), transitionAmountOverride);
|
|
break;
|
|
case 10:
|
|
case 11:
|
|
case 12:
|
|
this.DrawBG_ModifyBGFarBackLayerAlpha(bgStyle, transitionAmountOverride: transitionAmountOverride);
|
|
break;
|
|
default:
|
|
this.DrawBG_ModifyBGFarBackLayerAlpha(0, transitionAmountOverride: transitionAmountOverride);
|
|
break;
|
|
}
|
|
}
|
|
|
|
public static int GetPreferredBGStyleForPlayer()
|
|
{
|
|
int bgStyle = Main.bgStyle;
|
|
int num1 = (int) (((double) Main.screenPosition.X + (double) (Main.screenWidth / 2)) / 16.0);
|
|
int num2;
|
|
if (WorldGen.oceanDepths((int) ((double) Main.screenPosition.X + (double) (Main.screenWidth / 2)) / 16, (int) ((double) Main.screenPosition.Y + (double) (Main.screenHeight / 2)) / 16))
|
|
num2 = !Main.player[Main.myPlayer].ZoneHallow ? (!Main.player[Main.myPlayer].ZoneCorrupt ? (!Main.player[Main.myPlayer].ZoneCrimson ? (Main.SceneMetrics.HoneyBlockCount <= 400 ? 4 : 3) : 8) : (Main.SceneMetrics.BloodTileCount <= Main.SceneMetrics.EvilTileCount ? 1 : 8)) : 6;
|
|
else if (Main.player[Main.myPlayer].ZoneGlowshroom)
|
|
num2 = 9;
|
|
else if (Main.player[Main.myPlayer].ZoneDesert)
|
|
num2 = !Main.player[Main.myPlayer].ZoneCorrupt ? (!Main.player[Main.myPlayer].ZoneCrimson ? (!Main.player[Main.myPlayer].ZoneHallow ? 2 : 5) : 5) : 5;
|
|
else if (Main.player[Main.myPlayer].ZoneHallow)
|
|
num2 = 6;
|
|
else if (Main.player[Main.myPlayer].ZoneCorrupt)
|
|
num2 = Main.SceneMetrics.BloodTileCount <= Main.SceneMetrics.EvilTileCount ? 1 : 8;
|
|
else if (Main.player[Main.myPlayer].ZoneCrimson)
|
|
num2 = 8;
|
|
else if (Main.player[Main.myPlayer].ZoneJungle)
|
|
num2 = 3;
|
|
else if (Main.player[Main.myPlayer].ZoneSnow)
|
|
{
|
|
num2 = 7;
|
|
}
|
|
else
|
|
{
|
|
num2 = 0;
|
|
if (num1 >= Main.treeX[0])
|
|
{
|
|
if (WorldGen.treeBG1 != WorldGen.treeBG2 && num1 < Main.treeX[1])
|
|
num2 = 10;
|
|
else if (WorldGen.treeBG1 != WorldGen.treeBG3 && num1 < Main.treeX[2])
|
|
num2 = 11;
|
|
else if (WorldGen.treeBG1 != WorldGen.treeBG4)
|
|
num2 = 12;
|
|
}
|
|
}
|
|
return num2;
|
|
}
|
|
|
|
private void DrawBG_ModifyBGFarBackLayerAlpha(
|
|
int desiredBG,
|
|
int? desiredBG2 = null,
|
|
float? transitionAmountOverride = null)
|
|
{
|
|
float layerTransitionSpeed = Main.backgroundLayerTransitionSpeed;
|
|
if (transitionAmountOverride.HasValue)
|
|
layerTransitionSpeed = transitionAmountOverride.Value;
|
|
for (int index = 0; index < Main.bgAlphaFarBackLayer.Length; ++index)
|
|
{
|
|
int num1 = desiredBG == index ? 1 : 0;
|
|
int num2;
|
|
if (desiredBG2.HasValue)
|
|
{
|
|
int? nullable = desiredBG2;
|
|
int num3 = index;
|
|
num2 = nullable.GetValueOrDefault() == num3 & nullable.HasValue ? 1 : 0;
|
|
}
|
|
else
|
|
num2 = 0;
|
|
bool flag = (num1 | num2) != 0;
|
|
Main.bgAlphaFarBackLayer[index] = MathHelper.Clamp(Main.bgAlphaFarBackLayer[index] + (flag ? layerTransitionSpeed : -layerTransitionSpeed), 0.0f, 1f);
|
|
}
|
|
}
|
|
|
|
public void DrawInfernoRings()
|
|
{
|
|
for (int index1 = 0; index1 < (int) byte.MaxValue; ++index1)
|
|
{
|
|
if (Main.player[index1].active && !Main.player[index1].outOfRange && Main.player[index1].inferno && !Main.player[index1].dead)
|
|
{
|
|
this.LoadFlameRing();
|
|
float num1 = 0.1f;
|
|
float num2 = 0.9f;
|
|
if (!Main.gamePaused && this.IsActive)
|
|
Main.player[index1].flameRingScale += 0.004f;
|
|
float flameRingScale;
|
|
if ((double) Main.player[index1].flameRingScale < 1.0)
|
|
{
|
|
flameRingScale = Main.player[index1].flameRingScale;
|
|
}
|
|
else
|
|
{
|
|
Main.player[index1].flameRingScale = 0.8f;
|
|
flameRingScale = Main.player[index1].flameRingScale;
|
|
}
|
|
if (!Main.gamePaused && this.IsActive)
|
|
Main.player[index1].flameRingRot += 0.05f;
|
|
if ((double) Main.player[index1].flameRingRot > 6.28318548202515)
|
|
Main.player[index1].flameRingRot -= 6.283185f;
|
|
if ((double) Main.player[index1].flameRingRot < -6.28318548202515)
|
|
Main.player[index1].flameRingRot += 6.283185f;
|
|
for (int index2 = 0; index2 < 3; ++index2)
|
|
{
|
|
float scale = flameRingScale + num1 * (float) index2;
|
|
if ((double) scale > 1.0)
|
|
scale -= num1 * 2f;
|
|
float num3 = MathHelper.Lerp(0.8f, 0.0f, Math.Abs(scale - num2) * 10f);
|
|
Main.spriteBatch.Draw(TextureAssets.FlameRing.Value, Main.player[index1].Center - Main.screenPosition, new Microsoft.Xna.Framework.Rectangle?(new Microsoft.Xna.Framework.Rectangle(0, 400 * index2, 400, 400)), new Microsoft.Xna.Framework.Color(num3, num3, num3, num3 / 2f), Main.player[index1].flameRingRot + 1.047198f * (float) index2, new Vector2(200f, 200f), scale, SpriteEffects.None, 0.0f);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private static void UpdateInvasion()
|
|
{
|
|
if (Main.invasionType <= 0)
|
|
return;
|
|
if (Main.invasionSize <= 0)
|
|
{
|
|
switch (Main.invasionType)
|
|
{
|
|
case 1:
|
|
NPC.SetEventFlagCleared(ref NPC.downedGoblins, 0);
|
|
if (Main.netMode == 2)
|
|
NetMessage.SendData(7);
|
|
AchievementsHelper.NotifyProgressionEvent(10);
|
|
break;
|
|
case 2:
|
|
NPC.SetEventFlagCleared(ref NPC.downedFrost, 1);
|
|
AchievementsHelper.NotifyProgressionEvent(12);
|
|
break;
|
|
case 3:
|
|
NPC.SetEventFlagCleared(ref NPC.downedPirates, 2);
|
|
AchievementsHelper.NotifyProgressionEvent(11);
|
|
break;
|
|
case 4:
|
|
NPC.SetEventFlagCleared(ref NPC.downedMartians, 3);
|
|
AchievementsHelper.NotifyProgressionEvent(13);
|
|
break;
|
|
}
|
|
Main.InvasionWarning();
|
|
Main.invasionType = 0;
|
|
Main.invasionDelay = 0;
|
|
}
|
|
if (Main.invasionX == (double) Main.spawnTileX)
|
|
return;
|
|
float dayRate = (float) Main.dayRate;
|
|
if (Main.invasionX > (double) Main.spawnTileX)
|
|
{
|
|
Main.invasionX -= (double) dayRate;
|
|
if (Main.invasionX <= (double) Main.spawnTileX)
|
|
{
|
|
Main.invasionX = (double) Main.spawnTileX;
|
|
Main.InvasionWarning();
|
|
}
|
|
else if ((double) dayRate > 0.0)
|
|
--Main.invasionWarn;
|
|
}
|
|
else if (Main.invasionX < (double) Main.spawnTileX)
|
|
{
|
|
Main.invasionX += (double) dayRate;
|
|
if (Main.invasionX >= (double) Main.spawnTileX)
|
|
{
|
|
Main.invasionX = (double) Main.spawnTileX;
|
|
Main.InvasionWarning();
|
|
}
|
|
else if ((double) dayRate > 0.0)
|
|
--Main.invasionWarn;
|
|
}
|
|
if (Main.invasionWarn > 0)
|
|
return;
|
|
Main.invasionWarn = 3600;
|
|
Main.InvasionWarning();
|
|
}
|
|
|
|
private static void InvasionWarning()
|
|
{
|
|
LocalizedText empty = LocalizedText.Empty;
|
|
LocalizedText localizedText;
|
|
if (Main.invasionSize <= 0)
|
|
{
|
|
switch (Main.invasionType)
|
|
{
|
|
case 2:
|
|
localizedText = Lang.misc[4];
|
|
break;
|
|
case 3:
|
|
localizedText = Lang.misc[24];
|
|
break;
|
|
case 4:
|
|
localizedText = Lang.misc[42];
|
|
break;
|
|
default:
|
|
localizedText = empty = Lang.misc[0];
|
|
break;
|
|
}
|
|
}
|
|
else if (Main.invasionX < (double) Main.spawnTileX)
|
|
{
|
|
switch (Main.invasionType)
|
|
{
|
|
case 2:
|
|
localizedText = Lang.misc[5];
|
|
break;
|
|
case 3:
|
|
localizedText = Lang.misc[25];
|
|
break;
|
|
case 4:
|
|
localizedText = LocalizedText.Empty;
|
|
break;
|
|
default:
|
|
localizedText = empty = Lang.misc[1];
|
|
break;
|
|
}
|
|
}
|
|
else if (Main.invasionX > (double) Main.spawnTileX)
|
|
{
|
|
switch (Main.invasionType)
|
|
{
|
|
case 2:
|
|
localizedText = Lang.misc[6];
|
|
break;
|
|
case 3:
|
|
localizedText = Lang.misc[26];
|
|
break;
|
|
case 4:
|
|
localizedText = LocalizedText.Empty;
|
|
break;
|
|
default:
|
|
localizedText = empty = Lang.misc[2];
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (Main.invasionType)
|
|
{
|
|
case 2:
|
|
localizedText = Lang.misc[7];
|
|
break;
|
|
case 3:
|
|
localizedText = Lang.misc[27];
|
|
break;
|
|
case 4:
|
|
localizedText = Lang.misc[41];
|
|
break;
|
|
default:
|
|
localizedText = empty = Lang.misc[3];
|
|
break;
|
|
}
|
|
}
|
|
switch (Main.netMode)
|
|
{
|
|
case 0:
|
|
Main.NewText(localizedText.ToString(), (byte) 175, (byte) 75);
|
|
break;
|
|
case 2:
|
|
if (!(localizedText.Value != ""))
|
|
break;
|
|
ChatHelper.BroadcastChatMessage(NetworkText.FromKey(localizedText.Key), new Microsoft.Xna.Framework.Color(175, 75, (int) byte.MaxValue));
|
|
break;
|
|
}
|
|
}
|
|
|
|
public static bool CanStartInvasion(int type = 1, bool ignoreDelay = false)
|
|
{
|
|
if (Main.invasionType != 0 || Main.invasionDelay != 0 && !ignoreDelay)
|
|
return false;
|
|
int num = 0;
|
|
for (int index = 0; index < (int) byte.MaxValue; ++index)
|
|
{
|
|
if (Main.player[index].active && Main.player[index].statLifeMax >= 200)
|
|
++num;
|
|
}
|
|
return num > 0;
|
|
}
|
|
|
|
public static void StartInvasion(int type = 1)
|
|
{
|
|
if (Main.invasionType != 0 && Main.invasionSize == 0)
|
|
Main.invasionType = 0;
|
|
if (Main.invasionType != 0)
|
|
return;
|
|
int num = 0;
|
|
for (int index = 0; index < (int) byte.MaxValue; ++index)
|
|
{
|
|
if (Main.player[index].active && Main.player[index].statLifeMax >= 200)
|
|
++num;
|
|
}
|
|
if (num <= 0)
|
|
return;
|
|
Main.invasionType = type;
|
|
Main.invasionSize = 80 + 40 * num;
|
|
if (type == 3)
|
|
Main.invasionSize += 40 + 20 * num;
|
|
if (type == 4)
|
|
Main.invasionSize = 160 + 40 * num;
|
|
Main.invasionSizeStart = Main.invasionSize;
|
|
Main.invasionProgress = 0;
|
|
Main.invasionProgressIcon = type + 3;
|
|
Main.invasionProgressWave = 0;
|
|
Main.invasionProgressMax = Main.invasionSizeStart;
|
|
Main.invasionWarn = 0;
|
|
if (type == 4)
|
|
{
|
|
Main.invasionX = (double) (Main.spawnTileX - 1);
|
|
Main.invasionWarn = 2;
|
|
}
|
|
else if (Main.rand.Next(2) == 0)
|
|
Main.invasionX = 0.0;
|
|
else
|
|
Main.invasionX = (double) Main.maxTilesX;
|
|
}
|
|
|
|
public static void FakeLoadInvasionStart()
|
|
{
|
|
int num1 = 0;
|
|
int num2 = 0;
|
|
switch (Main.invasionType)
|
|
{
|
|
case 1:
|
|
case 2:
|
|
num1 = 80;
|
|
num2 = 40;
|
|
break;
|
|
case 3:
|
|
num1 = 120;
|
|
num2 = 60;
|
|
break;
|
|
case 4:
|
|
num1 = 160;
|
|
num2 = 40;
|
|
break;
|
|
}
|
|
int num3 = (int) Math.Ceiling((double) (Main.invasionSize - num1) / (double) num2);
|
|
Main.invasionSizeStart = num1;
|
|
if (num3 <= 0)
|
|
return;
|
|
Main.invasionSizeStart += num3 * num2;
|
|
}
|
|
|
|
private static void UpdateClient()
|
|
{
|
|
if (Main.myPlayer == (int) byte.MaxValue)
|
|
Netplay.Disconnect = true;
|
|
++Main.netPlayCounter;
|
|
if (Main.netPlayCounter > 3600)
|
|
Main.netPlayCounter = 0;
|
|
if (Main.netPlayCounter % 420 == 0)
|
|
NetMessage.SendData(13, number: Main.myPlayer);
|
|
if (Main.netPlayCounter % 900 == 0)
|
|
{
|
|
NetMessage.SendData(36, number: Main.myPlayer);
|
|
NetMessage.SendData(16, number: Main.myPlayer);
|
|
NetMessage.SendData(40, number: Main.myPlayer);
|
|
}
|
|
if (Netplay.Connection.IsActive)
|
|
{
|
|
++Netplay.Connection.TimeOutTimer;
|
|
if (!Main.stopTimeOuts && Netplay.Connection.TimeOutTimer > 7200)
|
|
{
|
|
Main.statusText = Lang.inter[43].Value;
|
|
Netplay.Disconnect = true;
|
|
}
|
|
}
|
|
for (int whoAmI = 0; whoAmI < 400; ++whoAmI)
|
|
{
|
|
if (Main.item[whoAmI].active && Main.item[whoAmI].playerIndexTheItemIsReservedFor == Main.myPlayer)
|
|
Main.item[whoAmI].FindOwner(whoAmI);
|
|
}
|
|
}
|
|
|
|
private static void UpdateServer()
|
|
{
|
|
++Main.netPlayCounter;
|
|
if (Main.netPlayCounter % 3600 == 0)
|
|
{
|
|
NetMessage.SendData(7);
|
|
Main.netPlayCounter = 0;
|
|
}
|
|
for (int index = 0; index < Main.maxNetPlayers; ++index)
|
|
{
|
|
if (Main.player[index].active && Netplay.Clients[index].IsActive)
|
|
Netplay.Clients[index].SpamUpdate();
|
|
}
|
|
if (Math.IEEERemainder((double) Main.netPlayCounter, 900.0) == 0.0)
|
|
{
|
|
bool flag = true;
|
|
int number = Main.lastItemUpdate;
|
|
int num = 0;
|
|
while (flag)
|
|
{
|
|
++number;
|
|
if (number >= 400)
|
|
number = 0;
|
|
++num;
|
|
if (!Main.item[number].active || Main.item[number].playerIndexTheItemIsReservedFor == (int) byte.MaxValue)
|
|
NetMessage.SendData(21, number: number);
|
|
if (num >= Main.maxItemUpdates || number == Main.lastItemUpdate)
|
|
flag = false;
|
|
}
|
|
Main.lastItemUpdate = number;
|
|
}
|
|
for (int whoAmI = 0; whoAmI < 400; ++whoAmI)
|
|
{
|
|
Item obj = Main.item[whoAmI];
|
|
if (obj.active && (obj.playerIndexTheItemIsReservedFor == (int) byte.MaxValue || !Main.player[obj.playerIndexTheItemIsReservedFor].active))
|
|
obj.FindOwner(whoAmI);
|
|
}
|
|
for (int playerIndex = 0; playerIndex < (int) byte.MaxValue; ++playerIndex)
|
|
{
|
|
if (Netplay.Clients[playerIndex].IsActive)
|
|
{
|
|
++Netplay.Clients[playerIndex].TimeOutTimer;
|
|
if (Netplay.Clients[playerIndex].State == 0)
|
|
Netplay.Clients[playerIndex].TimeOutTimer += 3;
|
|
if (!Main.stopTimeOuts && Netplay.Clients[playerIndex].TimeOutTimer > 7200)
|
|
{
|
|
Netplay.Clients[playerIndex].PendingTermination = true;
|
|
Netplay.Clients[playerIndex].PendingTerminationApproved = true;
|
|
}
|
|
}
|
|
if (Main.player[playerIndex].active)
|
|
RemoteClient.CheckSection(playerIndex, Main.player[playerIndex].position);
|
|
}
|
|
}
|
|
|
|
public static void NewText(string newText, byte R = 255, byte G = 255, byte B = 255)
|
|
{
|
|
Main.chatMonitor.NewText(newText, R, G, B);
|
|
SoundEngine.PlaySound(12);
|
|
}
|
|
|
|
public static void NewTextMultiline(string text, bool force = false, Microsoft.Xna.Framework.Color c = default (Microsoft.Xna.Framework.Color), int WidthLimit = -1)
|
|
{
|
|
Main.chatMonitor.NewTextMultiline(text, force, c, WidthLimit);
|
|
SoundEngine.PlaySound(12);
|
|
}
|
|
|
|
public static void StopRain()
|
|
{
|
|
Main.rainTime = 0;
|
|
Main.raining = false;
|
|
Main.maxRaining = 0.0f;
|
|
}
|
|
|
|
public static void StartRain()
|
|
{
|
|
int maxValue1 = 86400;
|
|
int maxValue2 = maxValue1 / 24;
|
|
int num1 = Main.rand.Next(maxValue2 * 8, maxValue1);
|
|
if (Main.rand.Next(3) == 0)
|
|
num1 += Main.rand.Next(0, maxValue2);
|
|
if (Main.rand.Next(4) == 0)
|
|
num1 += Main.rand.Next(0, maxValue2 * 2);
|
|
if (Main.rand.Next(5) == 0)
|
|
num1 += Main.rand.Next(0, maxValue2 * 2);
|
|
if (Main.rand.Next(6) == 0)
|
|
num1 += Main.rand.Next(0, maxValue2 * 3);
|
|
if (Main.rand.Next(7) == 0)
|
|
num1 += Main.rand.Next(0, maxValue2 * 4);
|
|
if (Main.rand.Next(8) == 0)
|
|
num1 += Main.rand.Next(0, maxValue2 * 5);
|
|
float num2 = 1f;
|
|
if (Main.rand.Next(2) == 0)
|
|
num2 += 0.05f;
|
|
if (Main.rand.Next(3) == 0)
|
|
num2 += 0.1f;
|
|
if (Main.rand.Next(4) == 0)
|
|
num2 += 0.15f;
|
|
if (Main.rand.Next(5) == 0)
|
|
num2 += 0.2f;
|
|
Main.rainTime = (int) ((double) num1 * (double) num2);
|
|
Main.ChangeRain();
|
|
Main.raining = true;
|
|
}
|
|
|
|
private static void ChangeRain()
|
|
{
|
|
float maxRaining = Main.maxRaining;
|
|
Main.maxRaining = (double) Main.cloudBGActive >= 1.0 || (double) Main.numClouds > 150.0 ? (Main.rand.Next(3) != 0 ? (float) Main.rand.Next(40, 91) * 0.01f : (float) Main.rand.Next(20, 91) * 0.01f) : ((double) Main.numClouds <= 100.0 ? (Main.rand.Next(3) != 0 ? (float) Main.rand.Next(5, 31) * 0.01f : (float) Main.rand.Next(5, 41) * 0.01f) : (Main.rand.Next(3) != 0 ? (float) Main.rand.Next(20, 61) * 0.01f : (float) Main.rand.Next(10, 71) * 0.01f));
|
|
}
|
|
|
|
public static void StartSlimeRain(bool announce = true)
|
|
{
|
|
if (Main.slimeRain)
|
|
return;
|
|
if (Main.netMode == 1)
|
|
{
|
|
Main.slimeRainTime = 54000.0;
|
|
Main.slimeRain = true;
|
|
SkyManager.Instance.Activate("Slime", new Vector2());
|
|
}
|
|
else
|
|
{
|
|
if (Main.raining)
|
|
return;
|
|
if (Main.slimeRainTime <= 0.0)
|
|
Main.slimeRainTime = (double) Main.rand.Next(32400, 54000);
|
|
Main.slimeRain = true;
|
|
Main.slimeRainKillCount = 0;
|
|
if (Main.netMode == 0)
|
|
{
|
|
SkyManager.Instance.Activate("Slime", new Vector2());
|
|
if (!announce)
|
|
return;
|
|
Main.slimeWarningTime = Main.slimeWarningDelay;
|
|
}
|
|
else
|
|
{
|
|
if (!announce)
|
|
return;
|
|
Main.slimeWarningTime = Main.slimeWarningDelay;
|
|
NetMessage.SendData(7);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void StopSlimeRain(bool announce = true)
|
|
{
|
|
if (!Main.slimeRain)
|
|
return;
|
|
if (Main.netMode == 1)
|
|
{
|
|
Main.slimeRainTime = 0.0;
|
|
Main.slimeRain = false;
|
|
SkyManager.Instance.Deactivate("Slime");
|
|
}
|
|
else
|
|
{
|
|
int num1 = 86400 * 7;
|
|
if (Main.hardMode)
|
|
{
|
|
int num2 = num1 * 2;
|
|
}
|
|
Main.slimeRainTime = (double) (-Main.rand.Next(3024, 6048) * 100);
|
|
Main.slimeRain = false;
|
|
if (Main.netMode == 0)
|
|
{
|
|
if (announce)
|
|
Main.slimeWarningTime = Main.slimeWarningDelay;
|
|
SkyManager.Instance.Deactivate("Slime");
|
|
}
|
|
else
|
|
{
|
|
if (!announce)
|
|
return;
|
|
Main.slimeWarningTime = Main.slimeWarningDelay;
|
|
NetMessage.SendData(7);
|
|
}
|
|
}
|
|
}
|
|
|
|
private static void UpdateTime()
|
|
{
|
|
if (LanternNight.LanternsUp)
|
|
{
|
|
Main.cloudBGActive = 0.0f;
|
|
if (Main.numClouds > 30)
|
|
Main.numClouds = 30;
|
|
}
|
|
if (Main.ladyBugRainBoost > 0)
|
|
Main.ladyBugRainBoost -= Main.dayRate;
|
|
if (Main.pumpkinMoon)
|
|
{
|
|
Main.bloodMoon = false;
|
|
Main.snowMoon = false;
|
|
}
|
|
if (Main.snowMoon)
|
|
Main.bloodMoon = false;
|
|
if (Main.netMode != 1 && !Main.gameMenu || Main.netMode == 2)
|
|
{
|
|
if (Main.slimeRainTime > 0.0)
|
|
{
|
|
Main.slimeRainTime -= (double) Main.dayRate;
|
|
if (Main.slimeRainTime <= 0.0)
|
|
Main.StopSlimeRain();
|
|
}
|
|
else if (Main.slimeRainTime < 0.0)
|
|
{
|
|
Main.slimeRainTime += (double) Main.dayRate;
|
|
if (Main.slimeRainTime > 0.0)
|
|
Main.slimeRainTime = 0.0;
|
|
}
|
|
if (Main.raining)
|
|
{
|
|
if (!CreativePowerManager.Instance.GetPower<CreativePowers.FreezeRainPower>().Enabled)
|
|
{
|
|
if (LanternNight.LanternsUp)
|
|
{
|
|
Main.StopRain();
|
|
}
|
|
else
|
|
{
|
|
Main.rainTime -= Main.dayRate;
|
|
if (Main.dayRate > 0)
|
|
{
|
|
int num = 86400 / Main.dayRate / 24;
|
|
if (Main.rainTime <= 0)
|
|
Main.StopRain();
|
|
else if (Main.rand.Next(num * 2) == 0)
|
|
Main.ChangeRain();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if (!Main.slimeRain && !LanternNight.LanternsUp && !LanternNight.NextNightIsLanternNight)
|
|
{
|
|
int maxValue1 = 86400 / (Main.dayRate != 0 ? Main.dayRate : 1);
|
|
if (!CreativePowerManager.Instance.GetPower<CreativePowers.FreezeRainPower>().Enabled)
|
|
{
|
|
if (Main.rand.Next((int) ((double) maxValue1 * 5.75)) == 0)
|
|
Main.StartRain();
|
|
else if ((double) Main.cloudBGActive >= 1.0 && Main.rand.Next((int) ((double) maxValue1 * 4.25)) == 0)
|
|
Main.StartRain();
|
|
else if (Main.ladyBugRainBoost > 0 && Main.rand.Next(maxValue1) == 0)
|
|
Main.StartRain();
|
|
}
|
|
if (!Main.raining && !NPC.BusyWithAnyInvasionOfSorts())
|
|
{
|
|
int maxValue2 = (int) (1728000.0 / (double) Main.dayRate);
|
|
if (!NPC.downedSlimeKing)
|
|
maxValue2 /= 2;
|
|
if (Main.hardMode)
|
|
maxValue2 = (int) ((double) maxValue2 * 1.5);
|
|
bool flag = false;
|
|
for (int index = 0; index < (int) byte.MaxValue; ++index)
|
|
{
|
|
if (Main.player[index].active && Main.player[index].statLifeMax > 140 && Main.player[index].statDefense > 8)
|
|
flag = true;
|
|
}
|
|
if (!flag)
|
|
maxValue2 *= 5;
|
|
if (Main.dayRate > 0 && maxValue2 > 0 && (flag || Main.expertMode) && Main.rand.Next(maxValue2) == 0)
|
|
Main.StartSlimeRain();
|
|
}
|
|
}
|
|
}
|
|
if ((double) Main.maxRaining != (double) Main.oldMaxRaining)
|
|
{
|
|
if (Main.netMode == 2)
|
|
NetMessage.SendData(7);
|
|
Main.oldMaxRaining = Main.maxRaining;
|
|
}
|
|
Main.UpdateTimeRate();
|
|
Main.time += (double) Main.dayRate;
|
|
CultistRitual.UpdateTime();
|
|
BirthdayParty.UpdateTime();
|
|
LanternNight.UpdateTime();
|
|
Sandstorm.UpdateTime();
|
|
DD2Event.UpdateTime();
|
|
WorldGen.mysticLogsEvent.UpdateTime();
|
|
Main.PylonSystem.Update();
|
|
if (NPC.MoonLordCountdown > 0)
|
|
{
|
|
float intensity = MathHelper.Clamp((float) Math.Sin((double) NPC.MoonLordCountdown / 60.0 * 0.5) * 2f, 0.0f, 1f) * (float) (0.75 - 0.5 * ((double) NPC.MoonLordCountdown / 3600.0));
|
|
if (!Terraria.Graphics.Effects.Filters.Scene["MoonLordShake"].IsActive())
|
|
Terraria.Graphics.Effects.Filters.Scene.Activate("MoonLordShake", Main.player[Main.myPlayer].position);
|
|
Terraria.Graphics.Effects.Filters.Scene["MoonLordShake"].GetShader().UseIntensity(intensity);
|
|
}
|
|
else if (Terraria.Graphics.Effects.Filters.Scene["MoonLordShake"].IsActive())
|
|
Terraria.Graphics.Effects.Filters.Scene.Deactivate("MoonLordShake");
|
|
if (NPC.MoonLordCountdown > 0)
|
|
{
|
|
--NPC.MoonLordCountdown;
|
|
if (NPC.MoonLordCountdown <= 0 && Main.netMode != 1)
|
|
NPC.SpawnOnPlayer((int) Player.FindClosest(new Vector2((float) (Main.maxTilesX / 2), (float) Main.worldSurface / 2f) * 16f, 0, 0), 398);
|
|
}
|
|
if (NPC.taxCollector && Main.netMode != 2 && !Main.gameMenu)
|
|
{
|
|
Main.player[Main.myPlayer].taxTimer += Main.dayRate;
|
|
if (Main.player[Main.myPlayer].taxTimer >= Player.taxRate)
|
|
{
|
|
Main.player[Main.myPlayer].taxTimer -= Player.taxRate;
|
|
Main.player[Main.myPlayer].CollectTaxes();
|
|
}
|
|
}
|
|
if (Main.netMode != 1)
|
|
Main.UpdateSlimeRainWarning();
|
|
if (Main.netMode != 1)
|
|
{
|
|
if (NPC.travelNPC)
|
|
{
|
|
if (!Main.dayTime || Main.time > 48600.0)
|
|
WorldGen.UnspawnTravelNPC();
|
|
}
|
|
else if (!Main.fastForwardTime && Main.dayTime && Main.time < 27000.0)
|
|
{
|
|
int maxValue = (int) (27000.0 / (double) Main.dayRate) * 4;
|
|
if (Main.rand.Next(maxValue) == 0)
|
|
{
|
|
int num = 0;
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active && Main.npc[index].townNPC && Main.npc[index].type != 37 && Main.npc[index].type != 453)
|
|
++num;
|
|
}
|
|
if (num >= 2)
|
|
WorldGen.SpawnTravelNPC();
|
|
}
|
|
}
|
|
NPC.travelNPC = false;
|
|
}
|
|
bool start = Main.ShouldNormalEventsBeAbleToStart();
|
|
if (!Main.dayTime)
|
|
{
|
|
Main.eclipse = false;
|
|
if (!Main.fastForwardTime && !start)
|
|
{
|
|
if (WorldGen.spawnEye && Main.netMode != 1 && Main.time > 4860.0)
|
|
{
|
|
for (int plr = 0; plr < (int) byte.MaxValue; ++plr)
|
|
{
|
|
if (Main.player[plr].active && !Main.player[plr].dead && (double) Main.player[plr].position.Y < Main.worldSurface * 16.0)
|
|
{
|
|
NPC.SpawnOnPlayer(plr, 4);
|
|
WorldGen.spawnEye = false;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (WorldGen.spawnHardBoss > 0 && Main.netMode != 1 && Main.time > 4860.0)
|
|
{
|
|
bool flag = false;
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active && Main.npc[index].boss)
|
|
flag = true;
|
|
}
|
|
if (!flag)
|
|
{
|
|
for (int plr = 0; plr < (int) byte.MaxValue; ++plr)
|
|
{
|
|
if (Main.player[plr].active && !Main.player[plr].dead && (double) Main.player[plr].position.Y < Main.worldSurface * 16.0)
|
|
{
|
|
switch (WorldGen.spawnHardBoss)
|
|
{
|
|
case 1:
|
|
NPC.SpawnOnPlayer(plr, 134);
|
|
goto label_102;
|
|
case 2:
|
|
NPC.SpawnOnPlayer(plr, 125);
|
|
NPC.SpawnOnPlayer(plr, 126);
|
|
goto label_102;
|
|
case 3:
|
|
NPC.SpawnOnPlayer(plr, (int) sbyte.MaxValue);
|
|
goto label_102;
|
|
default:
|
|
goto label_102;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
label_102:
|
|
WorldGen.spawnHardBoss = 0;
|
|
}
|
|
}
|
|
if (Main.time > 32400.0)
|
|
Main.UpdateTime_StartDay(ref start);
|
|
Main.HandleMeteorFall();
|
|
}
|
|
else
|
|
{
|
|
WorldGen.spawnHardBoss = 0;
|
|
WorldGen.spawnEye = false;
|
|
Main.bloodMoon = false;
|
|
Main.stopMoonEvent();
|
|
if (Main.time > 54000.0)
|
|
Main.UpdateTime_StartNight(ref start);
|
|
Main.UpdateTime_SpawnTownNPCs();
|
|
}
|
|
}
|
|
|
|
public static void SkipToTime(int timeToSet, bool setIsDayTime)
|
|
{
|
|
double time = Main.time;
|
|
int num = Main.dayTime ? 1 : 0;
|
|
while (setIsDayTime != Main.dayTime)
|
|
{
|
|
bool start = Main.ShouldNormalEventsBeAbleToStart();
|
|
if (Main.dayTime)
|
|
Main.UpdateTime_StartNight(ref start);
|
|
else
|
|
Main.UpdateTime_StartDay(ref start);
|
|
}
|
|
Main.time = (double) timeToSet;
|
|
if (Main.netMode != 2)
|
|
return;
|
|
NetMessage.TrySendData(7);
|
|
}
|
|
|
|
public static bool ShouldNormalEventsBeAbleToStart() => NPC.LunarApocalypseIsUp || NPC.AnyNPCs(398) || NPC.MoonLordCountdown > 0 || LanternNight.LanternsUp;
|
|
|
|
public static void UpdateTime_StartNight(ref bool stopEvents)
|
|
{
|
|
NPC.ResetBadgerHatTime();
|
|
NPC.freeCake = false;
|
|
Star.NightSetup();
|
|
NPC.setFireFlyChance();
|
|
BirthdayParty.CheckNight();
|
|
LanternNight.CheckNight();
|
|
WorldGen.mysticLogsEvent.StartNight();
|
|
WorldGen.prioritizedTownNPCType = 0;
|
|
Main.checkForSpawns = 0;
|
|
if (Main.rand.Next(50) == 0 && Main.netMode != 1 && NPC.downedBoss2)
|
|
WorldGen.spawnMeteor = true;
|
|
if (LanternNight.LanternsUp)
|
|
stopEvents = true;
|
|
if (Main.eclipse && Main.netMode != 1)
|
|
AchievementsHelper.NotifyProgressionEvent(3);
|
|
Main.eclipse = false;
|
|
if (Main.netMode != 1)
|
|
AchievementsHelper.NotifyProgressionEvent(0);
|
|
if (!Main.fastForwardTime && !stopEvents)
|
|
{
|
|
if (!NPC.downedBoss1 && Main.netMode != 1)
|
|
{
|
|
bool flag = false;
|
|
for (int index = 0; index < (int) byte.MaxValue; ++index)
|
|
{
|
|
if (Main.player[index].active && Main.player[index].statLifeMax >= 200 && Main.player[index].statDefense > 10)
|
|
{
|
|
flag = true;
|
|
break;
|
|
}
|
|
}
|
|
if (flag && Main.rand.Next(3) == 0)
|
|
{
|
|
int num = 0;
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active && Main.npc[index].townNPC)
|
|
++num;
|
|
}
|
|
if (num >= 4)
|
|
{
|
|
WorldGen.spawnEye = true;
|
|
switch (Main.netMode)
|
|
{
|
|
case 0:
|
|
Main.NewText(Lang.misc[9].Value, (byte) 50, B: (byte) 130);
|
|
break;
|
|
case 2:
|
|
ChatHelper.BroadcastChatMessage(Lang.misc[9].ToNetworkText(), new Microsoft.Xna.Framework.Color(50, (int) byte.MaxValue, 130));
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (Main.netMode != 1 && !Main.pumpkinMoon && !DD2Event.Ongoing && !Main.snowMoon && WorldGen.altarCount > 0 && Main.hardMode && !WorldGen.spawnEye && Main.rand.Next(10) == 0)
|
|
{
|
|
bool flag = false;
|
|
for (int index = 0; index < 200; ++index)
|
|
{
|
|
if (Main.npc[index].active && Main.npc[index].boss)
|
|
flag = true;
|
|
}
|
|
if (!flag && (!NPC.downedMechBoss1 || !NPC.downedMechBoss2 || !NPC.downedMechBoss3))
|
|
{
|
|
for (int index = 0; index < 1000; ++index)
|
|
{
|
|
int num = Main.rand.Next(3) + 1;
|
|
if (num == 1 && !NPC.downedMechBoss1)
|
|
{
|
|
WorldGen.spawnHardBoss = num;
|
|
switch (Main.netMode)
|
|
{
|
|
case 0:
|
|
Main.NewText(Lang.misc[28].Value, (byte) 50, B: (byte) 130);
|
|
goto label_47;
|
|
case 2:
|
|
ChatHelper.BroadcastChatMessage(Lang.misc[28].ToNetworkText(), new Microsoft.Xna.Framework.Color(50, (int) byte.MaxValue, 130));
|
|
goto label_47;
|
|
default:
|
|
goto label_47;
|
|
}
|
|
}
|
|
else if (num == 2 && !NPC.downedMechBoss2)
|
|
{
|
|
WorldGen.spawnHardBoss = num;
|
|
switch (Main.netMode)
|
|
{
|
|
case 0:
|
|
Main.NewText(Lang.misc[29].Value, (byte) 50, B: (byte) 130);
|
|
goto label_47;
|
|
case 2:
|
|
ChatHelper.BroadcastChatMessage(Lang.misc[29].ToNetworkText(), new Microsoft.Xna.Framework.Color(50, (int) byte.MaxValue, 130));
|
|
goto label_47;
|
|
default:
|
|
goto label_47;
|
|
}
|
|
}
|
|
else if (num == 3 && !NPC.downedMechBoss3)
|
|
{
|
|
WorldGen.spawnHardBoss = num;
|
|
switch (Main.netMode)
|
|
{
|
|
case 0:
|
|
Main.NewText(Lang.misc[30].Value, (byte) 50, B: (byte) 130);
|
|
goto label_47;
|
|
case 2:
|
|
ChatHelper.BroadcastChatMessage(Lang.misc[30].ToNetworkText(), new Microsoft.Xna.Framework.Color(50, (int) byte.MaxValue, 130));
|
|
goto label_47;
|
|
default:
|
|
goto label_47;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
label_47:
|
|
if (!WorldGen.spawnEye && Main.moonPhase != 4 && Main.rand.Next(9) == 0 && Main.netMode != 1)
|
|
{
|
|
for (int index = 0; index < (int) byte.MaxValue; ++index)
|
|
{
|
|
if (Main.player[index].active && Main.player[index].statLifeMax > 120)
|
|
{
|
|
Main.bloodMoon = true;
|
|
break;
|
|
}
|
|
}
|
|
if (Main.bloodMoon)
|
|
{
|
|
AchievementsHelper.NotifyProgressionEvent(4);
|
|
switch (Main.netMode)
|
|
{
|
|
case 0:
|
|
Main.NewText(Lang.misc[8].Value, (byte) 50, B: (byte) 130);
|
|
break;
|
|
case 2:
|
|
ChatHelper.BroadcastChatMessage(Lang.misc[8].ToNetworkText(), new Microsoft.Xna.Framework.Color(50, (int) byte.MaxValue, 130));
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
Main.time = 0.0;
|
|
Main.dayTime = false;
|
|
if (Main.netMode != 2)
|
|
return;
|
|
NetMessage.SendData(7);
|
|
}
|
|
|
|
public static void UpdateTime_StartDay(ref bool stopEvents)
|
|
{
|
|
WorldGen.numTreeShakes = 0;
|
|
if (Main.fastForwardTime)
|
|
{
|
|
Main.fastForwardTime = false;
|
|
Main.UpdateTimeRate();
|
|
}
|
|
Main.AnglerQuestSwap();
|
|
BirthdayParty.CheckMorning();
|
|
LanternNight.CheckMorning();
|
|
if (Main.invasionDelay > 0)
|
|
--Main.invasionDelay;
|
|
WorldGen.prioritizedTownNPCType = 0;
|
|
Main.checkForSpawns = 0;
|
|
Main.time = 0.0;
|
|
if (Main.bloodMoon && Main.netMode != 1)
|
|
AchievementsHelper.NotifyProgressionEvent(5);
|
|
Main.bloodMoon = false;
|
|
Main.CheckForMoonEventsStartingTemporarySeasons();
|
|
Main.checkXMas();
|
|
Main.checkHalloween();
|
|
Main.stopMoonEvent();
|
|
Main.dayTime = true;
|
|
if (Main.sundialCooldown > 0)
|
|
--Main.sundialCooldown;
|
|
++Main.moonPhase;
|
|
if (Main.moonPhase >= 8)
|
|
Main.moonPhase = 0;
|
|
if (Main.drunkWorld && Main.netMode != 1)
|
|
WorldGen.crimson = !WorldGen.crimson;
|
|
if (Main.netMode == 2)
|
|
NetMessage.SendData(7);
|
|
if (Main.netMode == 1)
|
|
return;
|
|
AchievementsHelper.NotifyProgressionEvent(1);
|
|
if (stopEvents)
|
|
return;
|
|
if (Main.hardMode && NPC.downedMechBossAny && Main.rand.Next(20) == 0)
|
|
{
|
|
Main.eclipse = true;
|
|
AchievementsHelper.NotifyProgressionEvent(2);
|
|
if (Main.eclipse)
|
|
{
|
|
if (Main.netMode == 0)
|
|
Main.NewText(Lang.misc[20].Value, (byte) 50, B: (byte) 130);
|
|
else if (Main.netMode == 2)
|
|
ChatHelper.BroadcastChatMessage(Lang.misc[20].ToNetworkText(), new Microsoft.Xna.Framework.Color(50, (int) byte.MaxValue, 130));
|
|
}
|
|
if (Main.netMode != 2)
|
|
return;
|
|
NetMessage.SendData(7);
|
|
}
|
|
else
|
|
{
|
|
if (Main.snowMoon || Main.pumpkinMoon || DD2Event.Ongoing)
|
|
return;
|
|
if (WorldGen.shadowOrbSmashed)
|
|
{
|
|
if (!NPC.downedGoblins)
|
|
{
|
|
if (Main.rand.Next(3) == 0)
|
|
Main.StartInvasion();
|
|
}
|
|
else if (Main.hardMode && Main.rand.Next(60) == 0 || !Main.hardMode && Main.rand.Next(30) == 0)
|
|
Main.StartInvasion();
|
|
}
|
|
if (Main.invasionType != 0 || !Main.hardMode || WorldGen.altarCount <= 0 || (!NPC.downedPirates || Main.rand.Next(60) != 0) && (NPC.downedPirates || Main.rand.Next(30) != 0))
|
|
return;
|
|
Main.StartInvasion(3);
|
|
}
|
|
}
|
|
|
|
private static void HandleMeteorFall()
|
|
{
|
|
if (Main.netMode != 1 && WorldGen.spawnMeteor)
|
|
{
|
|
if (Main.time < 15000.0)
|
|
{
|
|
Main._canShowMeteorFall = true;
|
|
}
|
|
else
|
|
{
|
|
if (Main._canShowMeteorFall && Main.time <= 16200.0)
|
|
Main.AmbienceServer.ForceEntitySpawn(new AmbienceServer.AmbienceSpawnInfo()
|
|
{
|
|
skyEntityType = SkyEntityType.Meteor,
|
|
targetPlayer = -1
|
|
});
|
|
Main._canShowMeteorFall = false;
|
|
}
|
|
}
|
|
if (Main.time <= 16200.0 || !WorldGen.spawnMeteor)
|
|
return;
|
|
WorldGen.spawnMeteor = false;
|
|
WorldGen.dropMeteor();
|
|
}
|
|
|
|
private static void UpdateSlimeRainWarning()
|
|
{
|
|
if (Main.slimeWarningTime <= 0)
|
|
return;
|
|
--Main.slimeWarningTime;
|
|
if (Main.slimeWarningTime > 0)
|
|
return;
|
|
if (Main.netMode == 0)
|
|
{
|
|
if (Main.slimeRainTime > 0.0)
|
|
Main.NewText(Lang.gen[74].Value, (byte) 50, B: (byte) 130);
|
|
else
|
|
Main.NewText(Lang.gen[75].Value, (byte) 50, B: (byte) 130);
|
|
}
|
|
else if (Main.slimeRainTime > 0.0)
|
|
ChatHelper.BroadcastChatMessage(NetworkText.FromKey(Lang.gen[74].Key), new Microsoft.Xna.Framework.Color(50, (int) byte.MaxValue, 130));
|
|
else
|
|
ChatHelper.BroadcastChatMessage(NetworkText.FromKey(Lang.gen[75].Key), new Microsoft.Xna.Framework.Color(50, (int) byte.MaxValue, 130));
|
|
}
|
|
|
|
public static BestiaryUnlockProgressReport GetBestiaryProgressReport()
|
|
{
|
|
float num1 = 0.0f;
|
|
int num2 = 0;
|
|
List<BestiaryEntry> entries = Main.BestiaryDB.Entries;
|
|
for (int index = 0; index < entries.Count; ++index)
|
|
{
|
|
int num3 = entries[index].UIInfoProvider.GetEntryUICollectionInfo().UnlockState > BestiaryEntryUnlockState.NotKnownAtAll_0 ? 1 : 0;
|
|
++num2;
|
|
num1 += (float) num3;
|
|
}
|
|
return new BestiaryUnlockProgressReport()
|
|
{
|
|
EntriesTotal = num2,
|
|
CompletionAmountTotal = num1
|
|
};
|
|
}
|
|
|
|
private static void UpdateTime_SpawnTownNPCs()
|
|
{
|
|
int worldUpdateRate = WorldGen.GetWorldUpdateRate();
|
|
if (Main.netMode == 1 || worldUpdateRate <= 0)
|
|
return;
|
|
++Main.checkForSpawns;
|
|
if (Main.checkForSpawns < 7200 / worldUpdateRate)
|
|
return;
|
|
Main.checkForSpawns = 0;
|
|
int num1 = 0;
|
|
for (int index = 0; index < (int) byte.MaxValue; ++index)
|
|
{
|
|
if (Main.player[index].active)
|
|
++num1;
|
|
}
|
|
for (int index = 0; index < 663; ++index)
|
|
Main.townNPCCanSpawn[index] = false;
|
|
WorldGen.prioritizedTownNPCType = 0;
|
|
int num2 = 0;
|
|
int num3 = 0;
|
|
int num4 = 0;
|
|
int num5 = 0;
|
|
int num6 = 0;
|
|
int num7 = 0;
|
|
int num8 = 0;
|
|
int num9 = 0;
|
|
int num10 = 0;
|
|
int num11 = 0;
|
|
int num12 = 0;
|
|
int num13 = 0;
|
|
int num14 = 0;
|
|
int num15 = 0;
|
|
int num16 = 0;
|
|
int num17 = 0;
|
|
int num18 = 0;
|
|
int num19 = 0;
|
|
int num20 = 0;
|
|
int num21 = 0;
|
|
int num22 = 0;
|
|
int num23 = 0;
|
|
int num24 = 0;
|
|
int num25 = 0;
|
|
int num26 = 0;
|
|
int num27 = 0;
|
|
int num28 = 0;
|
|
int num29 = 0;
|
|
int num30 = 0;
|
|
int num31 = 0;
|
|
for (int npc = 0; npc < 200; ++npc)
|
|
{
|
|
if (Main.npc[npc].active && Main.npc[npc].townNPC)
|
|
{
|
|
if (Main.npc[npc].type != 368 && Main.npc[npc].type != 37 && Main.npc[npc].type != 453 && !Main.npc[npc].homeless)
|
|
WorldGen.QuickFindHome(npc);
|
|
if (Main.npc[npc].type == 37)
|
|
++num7;
|
|
if (Main.npc[npc].type == 17)
|
|
++num2;
|
|
if (Main.npc[npc].type == 18)
|
|
++num3;
|
|
if (Main.npc[npc].type == 19)
|
|
++num5;
|
|
if (Main.npc[npc].type == 20)
|
|
++num4;
|
|
if (Main.npc[npc].type == 22)
|
|
++num6;
|
|
if (Main.npc[npc].type == 38)
|
|
++num8;
|
|
if (Main.npc[npc].type == 54)
|
|
++num9;
|
|
if (Main.npc[npc].type == 107)
|
|
++num11;
|
|
if (Main.npc[npc].type == 108)
|
|
++num10;
|
|
if (Main.npc[npc].type == 124)
|
|
++num12;
|
|
if (Main.npc[npc].type == 142)
|
|
++num13;
|
|
if (Main.npc[npc].type == 160)
|
|
++num14;
|
|
if (Main.npc[npc].type == 178)
|
|
++num15;
|
|
if (Main.npc[npc].type == 207)
|
|
++num16;
|
|
if (Main.npc[npc].type == 208)
|
|
++num17;
|
|
if (Main.npc[npc].type == 209)
|
|
++num18;
|
|
if (Main.npc[npc].type == 227)
|
|
++num19;
|
|
if (Main.npc[npc].type == 228)
|
|
++num20;
|
|
if (Main.npc[npc].type == 229)
|
|
++num21;
|
|
if (Main.npc[npc].type == 353)
|
|
++num22;
|
|
if (Main.npc[npc].type == 369)
|
|
++num23;
|
|
if (Main.npc[npc].type == 441)
|
|
++num24;
|
|
if (Main.npc[npc].type == 550)
|
|
++num25;
|
|
if (Main.npc[npc].type == 588)
|
|
++num26;
|
|
if (Main.npc[npc].type == 633)
|
|
++num27;
|
|
if (Main.npc[npc].type == 637)
|
|
++num28;
|
|
if (Main.npc[npc].type == 638)
|
|
++num29;
|
|
if (Main.npc[npc].type == 656)
|
|
++num30;
|
|
++num31;
|
|
}
|
|
}
|
|
if (WorldGen.prioritizedTownNPCType != 0)
|
|
return;
|
|
int num32 = 0;
|
|
bool flag1 = false;
|
|
int num33 = 0;
|
|
bool flag2 = false;
|
|
bool flag3 = false;
|
|
bool flag4 = false;
|
|
BestiaryUnlockProgressReport bestiaryProgressReport = Main.GetBestiaryProgressReport();
|
|
for (int index1 = 0; index1 < (int) byte.MaxValue; ++index1)
|
|
{
|
|
if (Main.player[index1].active)
|
|
{
|
|
for (int index2 = 0; index2 < 58; ++index2)
|
|
{
|
|
if (Main.player[index1].inventory[index2] != null && Main.player[index1].inventory[index2].stack > 0)
|
|
{
|
|
if (num32 < 2000000000)
|
|
{
|
|
if (Main.player[index1].inventory[index2].type == 71)
|
|
num32 += Main.player[index1].inventory[index2].stack;
|
|
if (Main.player[index1].inventory[index2].type == 72)
|
|
num32 += Main.player[index1].inventory[index2].stack * 100;
|
|
if (Main.player[index1].inventory[index2].type == 73)
|
|
num32 += Main.player[index1].inventory[index2].stack * 10000;
|
|
if (Main.player[index1].inventory[index2].type == 74)
|
|
num32 += Main.player[index1].inventory[index2].stack * 1000000;
|
|
}
|
|
if (Main.player[index1].inventory[index2].ammo == AmmoID.Bullet || Main.player[index1].inventory[index2].useAmmo == AmmoID.Bullet)
|
|
flag2 = true;
|
|
if (ItemID.Sets.ItemsThatCountAsBombsForDemolitionistToSpawn[Main.player[index1].inventory[index2].type])
|
|
flag3 = true;
|
|
if (Main.player[index1].inventory[index2].dye > (byte) 0 || Main.player[index1].inventory[index2].type >= 1107 && Main.player[index1].inventory[index2].type <= 1120 || Main.player[index1].inventory[index2].type >= 3385 && Main.player[index1].inventory[index2].type <= 3388)
|
|
flag4 = true;
|
|
}
|
|
}
|
|
int num34 = Main.player[index1].statLifeMax / 20;
|
|
if (num34 > 5)
|
|
flag1 = true;
|
|
num33 += num34;
|
|
if (!flag4)
|
|
{
|
|
for (int index3 = 0; index3 < 3; ++index3)
|
|
{
|
|
if (Main.player[index1].dye[index3] != null && Main.player[index1].dye[index3].stack > 0 && Main.player[index1].dye[index3].dye > (byte) 0)
|
|
flag4 = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (!NPC.downedBoss3 && num7 == 0)
|
|
{
|
|
int index = NPC.NewNPC(Main.dungeonX * 16 + 8, Main.dungeonY * 16, 37);
|
|
Main.npc[index].homeless = false;
|
|
Main.npc[index].homeTileX = Main.dungeonX;
|
|
Main.npc[index].homeTileY = Main.dungeonY;
|
|
}
|
|
bool flag5 = false;
|
|
if (Main.rand.Next(40) == 0)
|
|
flag5 = true;
|
|
if (num6 < 1)
|
|
Main.townNPCCanSpawn[22] = true;
|
|
if ((double) num32 > 5000.0 && num2 < 1)
|
|
Main.townNPCCanSpawn[17] = true;
|
|
if (flag1 && num3 < 1 && num2 > 0)
|
|
Main.townNPCCanSpawn[18] = true;
|
|
if (flag2 && num5 < 1)
|
|
Main.townNPCCanSpawn[19] = true;
|
|
if ((NPC.downedBoss1 || NPC.downedBoss2 || NPC.downedBoss3) && num4 < 1)
|
|
Main.townNPCCanSpawn[20] = true;
|
|
if (flag3 && num2 > 0 && num8 < 1)
|
|
Main.townNPCCanSpawn[38] = true;
|
|
if (NPC.savedStylist && num22 < 1)
|
|
Main.townNPCCanSpawn[353] = true;
|
|
if (NPC.savedAngler && num23 < 1)
|
|
Main.townNPCCanSpawn[369] = true;
|
|
if (NPC.downedBoss3 && num9 < 1)
|
|
Main.townNPCCanSpawn[54] = true;
|
|
if (NPC.savedGoblin && num11 < 1)
|
|
Main.townNPCCanSpawn[107] = true;
|
|
if (NPC.savedTaxCollector && num24 < 1)
|
|
Main.townNPCCanSpawn[441] = true;
|
|
if (NPC.savedWizard && num10 < 1)
|
|
Main.townNPCCanSpawn[108] = true;
|
|
if (NPC.savedMech && num12 < 1)
|
|
Main.townNPCCanSpawn[124] = true;
|
|
if (NPC.downedFrost && num13 < 1 && Main.xMas)
|
|
Main.townNPCCanSpawn[142] = true;
|
|
if (NPC.downedMechBossAny && num15 < 1)
|
|
Main.townNPCCanSpawn[178] = true;
|
|
if (flag4 && num16 < 1 && num31 >= 4)
|
|
Main.townNPCCanSpawn[207] = true;
|
|
if (NPC.downedQueenBee && num20 < 1)
|
|
Main.townNPCCanSpawn[228] = true;
|
|
if (NPC.downedPirates && num21 < 1)
|
|
Main.townNPCCanSpawn[229] = true;
|
|
if (num14 < 1 && Main.hardMode)
|
|
Main.townNPCCanSpawn[160] = true;
|
|
if (Main.hardMode && NPC.downedPlantBoss && num18 < 1)
|
|
Main.townNPCCanSpawn[209] = true;
|
|
if (num31 >= 8 && num19 < 1)
|
|
Main.townNPCCanSpawn[227] = true;
|
|
if (flag5 && num17 < 1 && num31 >= 14)
|
|
Main.townNPCCanSpawn[208] = true;
|
|
if (NPC.savedBartender && num25 < 1)
|
|
Main.townNPCCanSpawn[550] = true;
|
|
if (NPC.savedGolfer && num26 < 1)
|
|
Main.townNPCCanSpawn[588] = true;
|
|
if ((double) bestiaryProgressReport.CompletionPercent >= 0.100000001490116 && num27 < 1)
|
|
Main.townNPCCanSpawn[633] = true;
|
|
if (NPC.boughtCat && num28 < 1)
|
|
Main.townNPCCanSpawn[637] = true;
|
|
if (NPC.boughtDog && num29 < 1)
|
|
Main.townNPCCanSpawn[638] = true;
|
|
if (NPC.boughtBunny && num30 < 1)
|
|
Main.townNPCCanSpawn[656] = true;
|
|
int num35 = WorldGen.prioritizedTownNPCType;
|
|
if (num35 == 0 && NPC.boughtCat && num28 < 1)
|
|
num35 = 637;
|
|
if (num35 == 0 && NPC.boughtDog && num29 < 1)
|
|
num35 = 638;
|
|
if (num35 == 0 && NPC.boughtBunny && num30 < 1)
|
|
num35 = 656;
|
|
if (num35 == 0 && num6 < 1)
|
|
num35 = 22;
|
|
if (num35 == 0 && (double) num32 > 5000.0 && num2 < 1)
|
|
num35 = 17;
|
|
if (num35 == 0 & flag1 && num3 < 1 && num2 > 0)
|
|
num35 = 18;
|
|
if (num35 == 0 & flag2 && num5 < 1)
|
|
num35 = 19;
|
|
if (num35 == 0 && NPC.savedGoblin && num11 < 1)
|
|
num35 = 107;
|
|
if (num35 == 0 && NPC.savedTaxCollector && num24 < 1)
|
|
num35 = 441;
|
|
if (num35 == 0 && NPC.savedWizard && num10 < 1)
|
|
num35 = 108;
|
|
if (num35 == 0 && Main.hardMode && num14 < 1)
|
|
num35 = 160;
|
|
if (num35 == 0 && (NPC.downedBoss1 || NPC.downedBoss2 || NPC.downedBoss3) && num4 < 1)
|
|
num35 = 20;
|
|
if (num35 == 0 & flag3 && num2 > 0 && num8 < 1)
|
|
num35 = 38;
|
|
if (num35 == 0 && NPC.downedQueenBee && num20 < 1)
|
|
num35 = 228;
|
|
if (num35 == 0 && NPC.downedMechBossAny && num15 < 1)
|
|
num35 = 178;
|
|
if (num35 == 0 && NPC.savedMech && num12 < 1)
|
|
num35 = 124;
|
|
if (num35 == 0 && NPC.savedAngler && num23 < 1)
|
|
num35 = 369;
|
|
if (num35 == 0 && Main.hardMode && NPC.downedPlantBoss && num18 < 1)
|
|
num35 = 209;
|
|
if (num35 == 0 && NPC.downedPirates && num21 < 1)
|
|
num35 = 229;
|
|
if (num35 == 0 && NPC.downedBoss3 && num9 < 1)
|
|
num35 = 54;
|
|
if (num35 == 0 && NPC.savedStylist && num22 < 1)
|
|
num35 = 353;
|
|
if (((num35 != 0 ? 0 : (num31 >= 4 ? 1 : 0)) & (flag4 ? 1 : 0)) != 0 && num16 < 1)
|
|
num35 = 207;
|
|
if (num35 == 0 && num31 >= 8 && num19 < 1)
|
|
num35 = 227;
|
|
if (num35 == 0 & flag5 && num31 >= 14 && num17 < 1)
|
|
num35 = 208;
|
|
if (num35 == 0 && NPC.downedFrost && num13 < 1 && Main.xMas)
|
|
num35 = 142;
|
|
if (num35 == 0 && NPC.savedBartender && num25 < 1)
|
|
num35 = 550;
|
|
if (num35 == 0 && NPC.savedGolfer && num26 < 1)
|
|
num35 = 588;
|
|
if (num35 == 0 && (double) bestiaryProgressReport.CompletionPercent >= 0.100000001490116 && num27 < 1)
|
|
num35 = 633;
|
|
WorldGen.prioritizedTownNPCType = num35;
|
|
}
|
|
|
|
public static int DamageVar(float dmg, float luck = 0.0f)
|
|
{
|
|
float num1 = dmg * (float) (1.0 + (double) Main.rand.Next(-15, 16) * 0.00999999977648258);
|
|
if ((double) luck > 0.0)
|
|
{
|
|
if ((double) Main.rand.NextFloat() < (double) luck)
|
|
{
|
|
float num2 = dmg * (float) (1.0 + (double) Main.rand.Next(-15, 16) * 0.00999999977648258);
|
|
if ((double) num2 > (double) num1)
|
|
num1 = num2;
|
|
}
|
|
}
|
|
else if ((double) luck < 0.0 && (double) Main.rand.NextFloat() < -(double) luck)
|
|
{
|
|
float num3 = dmg * (float) (1.0 + (double) Main.rand.Next(-15, 16) * 0.00999999977648258);
|
|
if ((double) num3 < (double) num1)
|
|
num1 = num3;
|
|
}
|
|
return (int) Math.Round((double) num1);
|
|
}
|
|
|
|
public static double CalculateDamageNPCsTake(int Damage, int Defense)
|
|
{
|
|
double num = (double) Damage - (double) Defense * 0.5;
|
|
if (num < 1.0)
|
|
num = 1.0;
|
|
return num;
|
|
}
|
|
|
|
public static double CalculateDamagePlayersTakeInPVP(int Damage, int Defense)
|
|
{
|
|
double num = (double) Damage - (double) Defense * 0.5;
|
|
if (num < 1.0)
|
|
num = 1.0;
|
|
return num;
|
|
}
|
|
|
|
public static double CalculateDamagePlayersTake(int Damage, int Defense)
|
|
{
|
|
double num = (double) Damage - (double) Defense * 0.5;
|
|
if (Main.masterMode)
|
|
num = (double) (Damage - Defense);
|
|
else if (Main.expertMode)
|
|
num = (double) Damage - (double) Defense * 0.75;
|
|
if (num < 1.0)
|
|
num = 1.0;
|
|
return num;
|
|
}
|
|
|
|
public void OnTileChangeEvent(int x, int y, int count, TileChangeType eventType)
|
|
{
|
|
switch (eventType)
|
|
{
|
|
case TileChangeType.LavaWater:
|
|
SoundEngine.PlaySound(SoundID.LiquidsWaterLava, x * 16 + count * 8, y * 16 + count * 8);
|
|
break;
|
|
case TileChangeType.HoneyWater:
|
|
SoundEngine.PlaySound(SoundID.LiquidsHoneyWater, x * 16 + count * 8, y * 16 + count * 8);
|
|
break;
|
|
case TileChangeType.HoneyLava:
|
|
SoundEngine.PlaySound(SoundID.LiquidsHoneyLava, x * 16 + count * 8, y * 16 + count * 8);
|
|
break;
|
|
}
|
|
}
|
|
|
|
public static void ClearPendingPlayerSelectCallbacks() => Main._pendingCharacterSelect = (Main.OnPlayerSelected) null;
|
|
|
|
public static void SelectPlayer(PlayerFileData data)
|
|
{
|
|
if (Main._pendingCharacterSelect != null)
|
|
{
|
|
Main._pendingCharacterSelect(data);
|
|
Main._pendingCharacterSelect = (Main.OnPlayerSelected) null;
|
|
}
|
|
else if (Main.menuMultiplayer)
|
|
{
|
|
Main.ServerSideCharacter = false;
|
|
data.SetAsActive();
|
|
SoundEngine.PlaySound(10);
|
|
if (Main.autoJoin)
|
|
{
|
|
if (Netplay.SetRemoteIP(Main.getIP))
|
|
{
|
|
Main.menuMode = 10;
|
|
Netplay.StartTcpClient();
|
|
}
|
|
Main.autoJoin = false;
|
|
}
|
|
else if (Main.menuServer)
|
|
{
|
|
Main.LoadWorlds();
|
|
Main.menuMode = 6;
|
|
}
|
|
else
|
|
{
|
|
Main.menuMode = 13;
|
|
Main.clrInput();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Main.ServerSideCharacter = false;
|
|
Main.myPlayer = 0;
|
|
data.SetAsActive();
|
|
Main.player[Main.myPlayer].position = Vector2.Zero;
|
|
Main.LoadWorlds();
|
|
SoundEngine.PlaySound(10);
|
|
Main.menuMode = 6;
|
|
}
|
|
}
|
|
|
|
public static void ToggleFullScreen() => Main.SetFullScreen(!Main.graphics.IsFullScreen);
|
|
|
|
public static void SetFullScreen(bool fullscreen) => Main.SetDisplayMode(Main.PendingResolutionWidth, Main.PendingResolutionHeight, fullscreen);
|
|
|
|
public static void SetResolution(int width, int height) => Main.SetDisplayMode(width, height, Main.graphics.IsFullScreen);
|
|
|
|
public static void SetDisplayMode(int width, int height, bool fullscreen)
|
|
{
|
|
Main.screenMaximized = ((Form) Control.FromHandle(Main.instance.Window.Handle)).WindowState == FormWindowState.Maximized;
|
|
if (Main.screenBorderless && Main.screenMaximized && !Main.graphics.IsFullScreen)
|
|
{
|
|
Main.screenMaximized = false;
|
|
((Form) Control.FromHandle(Main.instance.Window.Handle)).WindowState = FormWindowState.Normal;
|
|
}
|
|
Form form = (Form) Control.FromHandle(Main.instance.Window.Handle);
|
|
bool flag1 = form.FormBorderStyle == FormBorderStyle.None;
|
|
bool flag2 = false;
|
|
int num1;
|
|
int num2;
|
|
if (((Main.screenBorderless || Main.screenMaximized ? 1 : (Main.graphics.IsFullScreen ? 1 : 0)) | (fullscreen ? 1 : 0)) != 0)
|
|
{
|
|
form.MinimumSize = new Size(0, 0);
|
|
if (!fullscreen)
|
|
Main.SetDisplayModeAsBorderless(ref width, ref height, form);
|
|
if (width > Main.maxScreenW)
|
|
{
|
|
double num3 = (double) height / (double) width;
|
|
width = Main.maxScreenW;
|
|
double num4 = (double) width;
|
|
height = (int) (num3 * num4);
|
|
}
|
|
if (height > Main.maxScreenH)
|
|
{
|
|
double num5 = (double) width / (double) height;
|
|
height = Main.maxScreenH;
|
|
double num6 = (double) height;
|
|
width = (int) (num5 * num6);
|
|
}
|
|
PlayerInput.RawMouseScale = new Vector2((float) width / (float) Main.instance.Window.ClientBounds.Width, (float) height / (float) Main.instance.Window.ClientBounds.Height);
|
|
if (!Main.graphics.IsFullScreen)
|
|
{
|
|
num1 = Math.Max(Main.graphics.PreferredBackBufferWidth, Main.graphics.GraphicsDevice.Viewport.Width);
|
|
num2 = Math.Max(Main.graphics.PreferredBackBufferHeight, Main.graphics.GraphicsDevice.Viewport.Height);
|
|
if (num1 != Main.graphics.PreferredBackBufferWidth || num2 != Main.graphics.PreferredBackBufferHeight)
|
|
flag2 = true;
|
|
}
|
|
else
|
|
{
|
|
num1 = Main.graphics.PreferredBackBufferWidth;
|
|
num2 = Main.graphics.PreferredBackBufferHeight;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
PlayerInput.RawMouseScale = Vector2.One;
|
|
form.MinimumSize = new Size(Main.minScreenW, Main.minScreenH);
|
|
if (flag1)
|
|
{
|
|
width = Main.displayWidth[0];
|
|
height = Main.displayHeight[0];
|
|
}
|
|
width = Math.Min(width, Main.maxScreenW);
|
|
height = Math.Min(height, Main.maxScreenH);
|
|
Viewport viewport = Main.graphics.GraphicsDevice.Viewport;
|
|
num1 = viewport.Width;
|
|
viewport = Main.graphics.GraphicsDevice.Viewport;
|
|
num2 = viewport.Height;
|
|
int preferredBackBufferWidth = Main.graphics.PreferredBackBufferWidth;
|
|
viewport = Main.graphics.GraphicsDevice.Viewport;
|
|
int width1 = viewport.Width;
|
|
int num7;
|
|
if (preferredBackBufferWidth == width1)
|
|
{
|
|
int backBufferHeight = Main.graphics.PreferredBackBufferHeight;
|
|
viewport = Main.graphics.GraphicsDevice.Viewport;
|
|
int height1 = viewport.Height;
|
|
num7 = backBufferHeight != height1 ? 1 : 0;
|
|
}
|
|
else
|
|
num7 = 1;
|
|
flag2 = num7 != 0;
|
|
}
|
|
if (!fullscreen && !flag2)
|
|
{
|
|
Size clientSize = form.ClientSize;
|
|
if (clientSize.Width < Main.graphics.PreferredBackBufferWidth)
|
|
{
|
|
clientSize = form.ClientSize;
|
|
width = clientSize.Width;
|
|
flag2 = true;
|
|
}
|
|
clientSize = form.ClientSize;
|
|
if (clientSize.Height < Main.graphics.PreferredBackBufferHeight)
|
|
{
|
|
clientSize = form.ClientSize;
|
|
height = clientSize.Height;
|
|
flag2 = true;
|
|
}
|
|
}
|
|
width &= 2147483646;
|
|
height &= 2147483646;
|
|
width = Math.Max(width, Main.minScreenW);
|
|
height = Math.Max(height, Main.minScreenH);
|
|
if (Main.graphics.IsFullScreen != fullscreen)
|
|
{
|
|
Main.graphics.PreferredBackBufferWidth = width;
|
|
Main.graphics.PreferredBackBufferHeight = height;
|
|
Main.graphics.ApplyChanges();
|
|
Main.graphics.ToggleFullScreen();
|
|
}
|
|
if (((width != num1 ? 1 : (height != num2 ? 1 : 0)) | (flag2 ? 1 : 0)) != 0)
|
|
{
|
|
Main.mapTime = 0;
|
|
if (Main.gamePaused)
|
|
Main.renderNow = true;
|
|
Main.screenWidth = width;
|
|
Main.screenHeight = height;
|
|
Main.graphics.PreferredBackBufferWidth = Main.screenWidth;
|
|
Main.graphics.PreferredBackBufferHeight = Main.screenHeight;
|
|
Main.graphics.ApplyChanges();
|
|
PlayerInput.CacheOriginalScreenDimensions();
|
|
Main.FixUIScale();
|
|
if (Main.OnResolutionChanged != null)
|
|
Main.OnResolutionChanged(new Vector2((float) Main.screenWidth, (float) Main.screenHeight));
|
|
Main.PendingResolutionWidth = Main.screenWidth;
|
|
Main.PendingResolutionHeight = Main.screenHeight;
|
|
PlayerInput.CacheOriginalScreenDimensions();
|
|
if (!fullscreen)
|
|
{
|
|
if (Main.screenBorderless)
|
|
{
|
|
Main.ApplyBorderlessResolution(form);
|
|
form.FormBorderStyle = FormBorderStyle.None;
|
|
}
|
|
else
|
|
form.FormBorderStyle = FormBorderStyle.Sizable;
|
|
form.SendToBack();
|
|
form.BringToFront();
|
|
}
|
|
Lighting.Initialize();
|
|
if (!Main.drawToScreen)
|
|
Main.instance.InitTargets();
|
|
UserInterface.ActiveInstance.Recalculate();
|
|
Main.instance._needsMenuUIRecalculation = true;
|
|
Console.WriteLine(Language.GetTextValue("Misc.ResolutionChanged", (object) width, (object) height));
|
|
Main.chatMonitor.OnResolutionChange();
|
|
}
|
|
if (Main.graphics.SynchronizeWithVerticalRetrace)
|
|
return;
|
|
Main.graphics.SynchronizeWithVerticalRetrace = true;
|
|
Main.graphics.ApplyChanges();
|
|
}
|
|
|
|
public static void FixUIScale() => Main.UIScale = Main.UIScaleWanted;
|
|
|
|
public void FullscreenStartup()
|
|
{
|
|
Main.startFullscreen = false;
|
|
int preferredBackBufferWidth = Main.graphics.PreferredBackBufferWidth;
|
|
int backBufferHeight = Main.graphics.PreferredBackBufferHeight;
|
|
Main.Configuration.Get<int>("DisplayWidth", ref preferredBackBufferWidth);
|
|
Main.Configuration.Get<int>("DisplayHeight", ref backBufferHeight);
|
|
Main.SetDisplayMode(preferredBackBufferWidth, backBufferHeight, true);
|
|
}
|
|
|
|
public void UpdateDisplaySettings()
|
|
{
|
|
if (Main.startFullscreen)
|
|
this.FullscreenStartup();
|
|
Main.SetResolution(this.GraphicsDevice.Viewport.Width, this.GraphicsDevice.Viewport.Height);
|
|
}
|
|
|
|
public static void OpenPlayerSelect(Main.OnPlayerSelected method)
|
|
{
|
|
if (Main.gameMenu && (Main.menuMode == 10 || Main.menuMode == 14) || WorldGen.gen)
|
|
return;
|
|
if (!Main.gameMenu)
|
|
{
|
|
WorldGen.SaveAndQuit((Action) (() =>
|
|
{
|
|
Main.menuMode = 888;
|
|
Main._blockFancyUIWhileLoading = true;
|
|
Main.LoadPlayers();
|
|
Main.MenuUI.SetState((UIState) Main._characterSelectMenu);
|
|
Main._blockFancyUIWhileLoading = false;
|
|
Main._pendingCharacterSelect = method;
|
|
}));
|
|
}
|
|
else
|
|
{
|
|
Main.menuMode = 888;
|
|
Main._blockFancyUIWhileLoading = true;
|
|
Main.LoadPlayers();
|
|
Main.MenuUI.SetState((UIState) Main._characterSelectMenu);
|
|
Main._blockFancyUIWhileLoading = false;
|
|
Main._pendingCharacterSelect = method;
|
|
}
|
|
}
|
|
|
|
public static void SwitchNetMode(int mode)
|
|
{
|
|
if (mode < 0 || mode > 2)
|
|
return;
|
|
Main._targetNetMode = mode;
|
|
Main._hasPendingNetmodeChange = true;
|
|
}
|
|
|
|
public static void WeGameRequireExitGame() => Main._WeGameReqExit = true;
|
|
|
|
public delegate void OnPlayerSelected(PlayerFileData player);
|
|
|
|
public static class CurrentFrameFlags
|
|
{
|
|
public static int ActivePlayersCount;
|
|
public static int SleepingPlayersCount;
|
|
public static bool AnyActiveBossNPC;
|
|
public static bool HadAnActiveInteractibleProjectile;
|
|
}
|
|
|
|
public enum WorldPreparationState
|
|
{
|
|
AwaitingData,
|
|
ProcessingData,
|
|
Ready,
|
|
}
|
|
|
|
internal static class NativeMethods
|
|
{
|
|
public const uint ES_CONTINUOUS = 2147483648;
|
|
public const uint ES_SYSTEM_REQUIRED = 1;
|
|
|
|
[DllImport("kernel32.dll")]
|
|
public static extern uint SetThreadExecutionState(uint esFlags);
|
|
}
|
|
|
|
private struct MouseTextCache
|
|
{
|
|
public bool noOverride;
|
|
public bool isValid;
|
|
public string cursorText;
|
|
public int rare;
|
|
public byte diff;
|
|
public int X;
|
|
public int Y;
|
|
public int hackedScreenWidth;
|
|
public int hackedScreenHeight;
|
|
public string buffTooltip;
|
|
}
|
|
|
|
protected class TextDisplayCache
|
|
{
|
|
private string _originalText;
|
|
private int _lastScreenWidth;
|
|
private int _lastScreenHeight;
|
|
|
|
public string[] TextLines { get; private set; }
|
|
|
|
public int AmountOfLines { get; private set; }
|
|
|
|
public void PrepareCache(string text)
|
|
{
|
|
if ((0 | (Main.screenWidth != this._lastScreenWidth ? 1 : 0) | (Main.screenHeight != this._lastScreenHeight ? 1 : 0) | (this._originalText != text ? 1 : 0)) == 0)
|
|
return;
|
|
this._lastScreenWidth = Main.screenWidth;
|
|
this._lastScreenHeight = Main.screenHeight;
|
|
this._originalText = text;
|
|
int lineAmount;
|
|
this.TextLines = Utils.WordwrapString(Main.npcChatText, FontAssets.MouseText.Value, 460, 10, out lineAmount);
|
|
this.AmountOfLines = lineAmount;
|
|
}
|
|
}
|
|
|
|
public struct SceneArea
|
|
{
|
|
public Vector2 SceneLocalScreenPositionOffset;
|
|
public float totalWidth;
|
|
public float totalHeight;
|
|
public int bgTopY;
|
|
}
|
|
|
|
public struct InfoToSetBackColor
|
|
{
|
|
public bool isInGameMenuOrIsServer;
|
|
public float CorruptionBiomeInfluence;
|
|
public float CrimsonBiomeInfluence;
|
|
public float JungleBiomeInfluence;
|
|
public float MushroomBiomeInfluence;
|
|
public float GraveyardInfluence;
|
|
public bool BloodMoonActive;
|
|
public bool LanternNightActive;
|
|
}
|
|
}
|
|
}
|