Adjustable Chat

版本 v0.0.1·更新於 2026-03-26

Resize and reposition your chat panel — it finally obeys you!

模組介紹 作者原文

Outward Adjustable Chat

Resize and reposition your chat panel — it finally obeys you!

Overview

Outward Adjustable Chat gives you complete control over your in-game

chat panel. Stuck in the corner with no way to move it? Forced to use

a tiny chat window that ruins your immersion? Those days are over —

now you can drag your chat anywhere on screen, resize it to fit your

needs, and your settings travel with your character across saves.

Features

  • Drag to Reposition — Click and drag anywhere on non-interactive areas of the chat panel to move it wherever you want
  • Resize with Style — Pull the golden handle in the bottom-right corner to resize the panel freely
  • Persistent Settings — Your position and size are saved automatically with each character save
  • Smart Sprite Handling — Uses Sliced image type so the panel background stays crisp and unstretched when resized

Technical Details

XML Data Storage

Chat panel settings are stored per-character in XML format. Each character maintains their own panel configuration that follows them across save/load cycles.

File Location: BepInEx/config/gymmed.Mods_Communicator/Adjust_Chat/{characterUID}/ChatPanelState.xml

Data Structure:

  • DisplaySize — The size of the "Display" child element (x, y)
  • PositionOffset — The screen position of the "Chat - Panel" parent element (x, y)
  • BackgroundSize — The size of the background element (x, y)

Load Flow:

  • Harmony patch intercepts CharacterSaveInstanceHolder.ApplyLoadedSaveToChar()
  • XML file is loaded and stored as pending state
  • When ChatPanel.StartInit() completes, the component's Start() method applies the saved values
  • Position is applied to the parent "Chat - Panel" RectTransform, size to the child "Display" RectTransform

Save Flow:

  • Harmony patch intercepts SaveInstance.Save()
  • Current position is read from the "Chat - Panel" parent RectTransform
  • Current size is read from the "Display" child RectTransform
  • Data is serialized to XML using System.Xml.Serialization

Sprite Styling

The mod enhances the chat panel's visual quality using Unity's built-in image handling:

  • Trigger: SideLoader's SL.OnSceneLoaded event calls ChatPanelStyler.ApplyToAllCharacters() for each active character
  • Problem: The original sprite (tex_men_backgroundChat) stretches when the panel is resized, causing blurry/pixelated edges
  • Solution: Uses UnityEngine.Sprite.Create() with custom border parameters (14px for sides, 58px for bottom) to create a styled sprite
  • Result: Sets UnityEngine.UI.Image.type = Image.Type.Sliced so the corners remain sharp and borders intact during resize
  • Optimization: The styled sprite is created once and cached for reuse across all characters

Drag & Resize Implementation

  • Dragging: Uses Unity's native EventTrigger system (PointerDown, Drag, PointerUp events) rather than polling in Update()
  • Resizing: Creates a 10x10 golden-colored handle at the bottom-right corner of the "Display" element
  • Position Tracking: Position is saved from the "Chat - Panel" parent (not the child "Display") to ensure absolute screen positioning

How to set up

To manually set up, do the following

  • Create the directory: Outward\BepInEx\plugins\OutwardAdjustableChat\.
  • Extract the archive into any directory(recommend empty).
  • Move the contents of the plugins\ directory from the archive into the BepInEx\plugins\OutwardAdjustableChat\ directory you created.
  • It should look like Outward\BepInEx\plugins\OutwardAdjustableChat\OutwardAdjustableChat.dll

Launch the game.

If you liked the mod leave a star on GitHub it's free

安裝與使用 安裝:BepInEx 外掛

  1. 本站下載的壓縮包就是模組本體,通常是 BepInEx 外掛(解壓後得到 .dll 或外掛資料夾)。
  2. 建議流程:用社群模組管理器(如 r2modman)選中本遊戲後匯入該模組,管理器會自動裝好 BepInEx 前置並處理依賴。
  3. 手動流程:先在遊戲目錄裝好 BepInEx 載入器,再把解壓出的 .dll 或外掛資料夾放進 BepInEx/plugins/。
  4. 啟動遊戲,BepInEx 控制台會列印載入日誌;確認這個模組出現在日誌裡即為安裝成功。

帶「前置依賴」的模組需要一併安裝,否則不會載入。功能開關通常在遊戲內或外掛自帶的設定檔裡調整。

前置依賴

下面這些內容需要先安裝,否則該模組不會生效:

sinai-dev-SideLoaderBepInEx-BepInExPack_Outward

檔案與校驗

檔案名稱
Adjustable_Chat-0.0.1.zip
檔案大小
148.9 KiB