public static void Player_Warped(object sender, WarpedEventArgs e) { if (!Config.EnableMod) { return; } ModActions.DeactivateMod(); MapActions.UpdateCurrentMap(false); }
public static void Display_RenderedWorld(object sender, RenderedWorldEventArgs e) { if (!Config.EnableMod || !ModEntry.modActive) { return; } if (Game1.activeClickableMenu != null) { ModEntry.modActive = false; return; } Vector2 mouseTile = Game1.currentCursorTile; Vector2 mouseTilePos = mouseTile * Game1.tileSize - new Vector2(Game1.viewport.X, Game1.viewport.Y); if (ModEntry.copiedTileLoc.X > -1) { foreach (var kvp in ModEntry.currentTileDict) { int offset = kvp.Key.Equals("Front") ? (16 * Game1.pixelZoom) : 0; float layerDepth = (ModEntry.copiedTileLoc.Y * (16 * Game1.pixelZoom) + 16 * Game1.pixelZoom + offset) / 10000f; Tile tile = kvp.Value; if (tile == null) { continue; } var xRect = tile.TileSheet.GetTileImageBounds(tile.TileIndex); Rectangle sourceRectangle = new Rectangle(xRect.X, xRect.Y, xRect.Width, xRect.Height); Texture2D texture2D = null; try { Helper.Reflection.GetField <Dictionary <TileSheet, Texture2D> >(Game1.mapDisplayDevice, "m_tileSheetTextures", true)?.GetValue()?.TryGetValue(tile.TileSheet, out texture2D); } catch { Helper.Reflection.GetField <Dictionary <TileSheet, Texture2D> >(Game1.mapDisplayDevice, "m_tileSheetTextures2", false)?.GetValue()?.TryGetValue(tile.TileSheet, out texture2D); } if (texture2D != null) { e.SpriteBatch.Draw(texture2D, mouseTilePos, sourceRectangle, Color.White, 0f, Vector2.Zero, Layer.zoom, SpriteEffects.None, layerDepth); } } e.SpriteBatch.Draw(ModEntry.copiedTexture, mouseTilePos, Color.White); } else if (MapActions.MapHasTile(mouseTile)) { e.SpriteBatch.Draw(ModEntry.existsTexture, mouseTilePos, Color.White); } else { e.SpriteBatch.Draw(ModEntry.activeTexture, mouseTilePos, Color.White); } }
public static void PasteCurrentTile() { if (!Utility.isOnScreen(Game1.currentCursorTile * Game1.tileSize, Game1.tileSize)) { return; } string mapName = Game1.player.currentLocation.mapPath.Value.Replace("Maps\\", ""); MapActions.SaveMapTile(mapName, Game1.currentCursorTile, new TileLayers(ModEntry.currentTileDict)); ModEntry.cleanMaps.Remove(mapName); MapActions.UpdateCurrentMap(false); ModEntry.pastedTileLoc = Game1.currentCursorTile; Game1.playSound(ModEntry.Config.PasteSound); ModEntry.SMonitor.Log($"Pasted tile to {Game1.currentCursorTile}"); }
public static void Input_ButtonPressed(object sender, ButtonPressedEventArgs e) { if (!Config.EnableMod || !Context.IsPlayerFree) { ModActions.DeactivateMod(); return; } if (e.Button == Config.ToggleButton) { Helper.Input.Suppress(e.Button); ModEntry.modActive = !ModEntry.modActive; ModEntry.copiedTileLoc = new Vector2(-1, -1); ModEntry.currentTileDict.Clear(); Monitor.Log($"Toggled mod: {ModEntry.modActive}"); if (ModEntry.modActive) { ModActions.ShowMessage(string.Format(Helper.Translation.Get("mod-active"), Config.ToggleButton)); } else { ModActions.ShowMessage(string.Format(Helper.Translation.Get("mod-inactive"), Config.ToggleButton)); } } else if (ModEntry.modActive && e.Button == Config.CopyButton) { Helper.Input.Suppress(e.Button); TileActions.CopyCurrentTile(); } else if (ModEntry.modActive && ModEntry.copiedTileLoc.X > -1 && e.Button == Config.PasteButton && ModEntry.pastedTileLoc != Game1.currentCursorTile) { Helper.Input.Suppress(e.Button); TileActions.PasteCurrentTile(); } else if (ModEntry.modActive && e.Button == Config.RevertButton && MapActions.MapHasTile(Game1.currentCursorTile)) { Helper.Input.Suppress(e.Button); TileActions.RevertCurrentTile(); } else if (ModEntry.modActive && e.Button == SButton.Escape) { Helper.Input.Suppress(e.Button); if (ModEntry.copiedTileLoc.X > -1) { ModEntry.copiedTileLoc = new Vector2(-1, -1); ModEntry.pastedTileLoc = new Vector2(-1, -1); ModEntry.currentLayer = 0; ModEntry.currentTileDict.Clear(); } else { ModActions.DeactivateMod(); } } else if (ModEntry.modActive && e.Button == Config.RefreshButton) { Helper.Input.Suppress(e.Button); ModEntry.cleanMaps.Clear(); MapActions.GetMapCollectionData(); MapActions.UpdateCurrentMap(true); } else if (ModEntry.modActive && e.Button == Config.ScrollUpButton) { Helper.Input.Suppress(e.Button); ModActions.SwitchTile(true); } else if (ModEntry.modActive && e.Button == Config.ScrollDownButton) { Helper.Input.Suppress(e.Button); ModActions.SwitchTile(false); } }
public static void GameLoop_UpdateTicked(object sender, UpdateTickedEventArgs e) { if (ModEntry.modActive && (Helper.Input.IsDown(Config.PasteButton) || Helper.Input.IsSuppressed(Config.PasteButton)) && ModEntry.pastedTileLoc.X > -1 && ModEntry.pastedTileLoc != Game1.currentCursorTile) { TileActions.PasteCurrentTile(); } else if (ModEntry.modActive && (Helper.Input.IsDown(Config.RevertButton) || Helper.Input.IsSuppressed(Config.RevertButton)) && MapActions.MapHasTile(Game1.currentCursorTile)) { TileActions.RevertCurrentTile(); } }
public static void GameLoop_SaveLoaded(object sender, SaveLoadedEventArgs e) { MapActions.GetMapCollectionData(); }
public static void RevertCurrentTile() { ModEntry.pastedTileLoc = new Vector2(-1, -1); MapActions.SaveMapTile(Game1.player.currentLocation.mapPath.Value.Replace("Maps\\", ""), Game1.currentCursorTile, null); MapActions.UpdateCurrentMap(true); }