private void AddWorldData(On.Terraria.GameContent.UI.Elements.UIWorldListItem.orig_ctor orig, UIWorldListItem self, WorldFileData data, int snapPointIndex) { orig(self, data, snapPointIndex); string path = data.Path.Replace(".wld", ".twld"); TagCompound tag; try { byte[] buf = FileUtilities.ReadAllBytes(path, data.IsCloudSave); tag = TagIO.FromStream(new MemoryStream(buf), true); } catch { tag = null; } TagCompound tag2 = tag?.GetList <TagCompound>("modData").FirstOrDefault(k => k.GetString("mod") == "StarlightRiver" && k.GetString("name") == "StarlightWorld"); TagCompound tag3 = tag2?.Get <TagCompound>("data"); worldDataCache.Add(self, tag3); }
private void VoidIcon(On.Terraria.GameContent.UI.Elements.UIWorldListItem.orig_DrawSelf orig, UIWorldListItem self, SpriteBatch spriteBatch) { orig(self, spriteBatch); Vector2 pos = self.GetDimensions().ToRectangle().TopRight(); float chungosity = 0; if (worldDataCache.TryGetValue(self, out var tag3) && tag3 != null) { chungosity = tag3.GetFloat("Chungus"); } Texture2D tex = ModContent.GetTexture("StarlightRiver/Assets/GUI/ChungusMeter"); Texture2D tex2 = ModContent.GetTexture("StarlightRiver/Assets/GUI/ChungusMeterFill"); spriteBatch.Draw(tex, pos + new Vector2(-122, 6), Color.White); spriteBatch.Draw(tex2, pos + new Vector2(-108, 10), new Rectangle(0, 0, (int)(tex2.Width * chungosity), tex2.Height), Color.White); spriteBatch.Draw(Main.magicPixel, new Rectangle((int)pos.X - 108 + (int)(tex2.Width * chungosity), (int)pos.Y + 10, 2, 10), Color.White); Rectangle rect = new Rectangle((int)pos.X - 122, (int)pos.Y + 6, tex.Width, tex.Height); if (rect.Contains(Main.MouseScreen.ToPoint())) { Utils.DrawBorderString(spriteBatch, "Chungosity: " + (int)(chungosity * 100) + "%", self.GetDimensions().Position() + new Vector2(110, 70), Color.White); } }
private static void MouseOverBlack(On.Terraria.GameContent.UI.Elements.UIWorldListItem.orig_MouseOver orig, UIWorldListItem self, UIMouseEvent evt) { orig(self, evt); if (File.Exists(Path.ChangeExtension(((WorldFileData)FanIdeasMod.TMLAssembly.GetType("Terraria.GameContent.UI.Elements.UIWorldListItem").GetField("_data", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(self)).Path, ".fwim"))) { self.BackgroundColor = new Color(35, 35, 35); self.BorderColor = new Color(60, 60, 60); } }
private static void ConstructorBlack(On.Terraria.GameContent.UI.Elements.UIWorldListItem.orig_ctor orig, UIWorldListItem self, WorldFileData data, int snapPointIndex) { orig(self, data, snapPointIndex); if (File.Exists(Path.ChangeExtension(data.Path, ".fwim"))) { self.BackgroundColor = new Color(25, 25, 25); self.BorderColor = new Color(50, 50, 50); } }
private static void Menu_UICWorldListItem(On.Terraria.GameContent.UI.Elements.UIWorldListItem.orig_DrawSelf orig, UIWorldListItem self, SpriteBatch spriteBatch) { orig(self, spriteBatch); int floors = -1; if (SGAmodData.TryGetValue(self, out var tag3) && tag3 != null) { Vector2 pos = self.GetDimensions().ToRectangle().TopRight(); Vector2 pos2 = self.GetDimensions().ToRectangle().BottomRight(); bool darknessUnlocked = false; bool cheat = false; if (tag3.ContainsKey("highestDimDungeonFloor")) { floors = tag3.GetByte("highestDimDungeonFloor"); } if (tag3.ContainsKey("darknessVision")) { darknessUnlocked = tag3.GetBool("darknessVision"); } if (tag3.ContainsKey("cheating")) { cheat = tag3.GetBool("cheating"); } Vector2 lenn = Vector2.Zero; if (floors > 0) { string text = "Floors completed: " + (floors < 0 ? "None" : "" + (int)floors); lenn = new Vector2(-Main.fontMouseText.MeasureString(text).X - 8, 5); Utils.DrawBorderString(spriteBatch, text, pos + new Vector2(-Main.fontMouseText.MeasureString(text).X - 8, 5), Color.DeepSkyBlue); } if (cheat) { Utils.DrawBorderString(spriteBatch, "CHEAT", pos + new Vector2(-Main.fontMouseText.MeasureString("CHEAT").X - 8, 5) + new Vector2(lenn.X, 0), Color.Red); } if (darknessUnlocked) { Texture2D DarknessText = ModContent.GetTexture("SGAmod/Items/WatchersOfNull"); spriteBatch.Draw(DarknessText, pos2 - new Vector2(self.IsFavorite ? 24 : 48, 16), new Rectangle(0, 0, DarknessText.Width, DarknessText.Height / 13), Color.White, 0, new Vector2(DarknessText.Width, DarknessText.Height / 13) / 2f, 1f, SpriteEffects.None, 0f); } } }
private static void CtorModWorlData(On.Terraria.GameContent.UI.Elements.UIWorldListItem.orig_ctor orig, UIWorldListItem self, WorldFileData data, int snapPointIndex) { orig(self, data, snapPointIndex); if (!SGAConfigClient.Instance.PlayerWorldData) { return; } string path = data.Path.Replace(".wld", ".twld"); TagCompound tag; try { byte[] buffer = FileUtilities.ReadAllBytes(path, data.IsCloudSave); tag = TagIO.FromStream(new MemoryStream(buffer), true); } catch { tag = null; } TagCompound tag2 = tag?.GetList <TagCompound>("modData").FirstOrDefault(testby => testby.GetString("mod") == "SGAmod" && testby.GetString("name") == "SGAWorld"); TagCompound tag3 = tag2?.Get <TagCompound>("data"); SGAmodData.Add(self, tag3); }