API 4 updates

This commit is contained in:
Ottermandias 2021-08-27 15:06:58 +02:00
parent 86417ed74f
commit f10280d15d
31 changed files with 359 additions and 367 deletions

View file

@ -1,6 +1,6 @@
using System;
using System.Runtime.InteropServices;
using Dalamud.Game.ClientState.Actors.Types;
using Dalamud.Game.ClientState.Objects.Types;
using Penumbra.GameData.Enums;
namespace Glamourer.Customization
@ -150,10 +150,10 @@ namespace Glamourer.Customization
}
}
public void Read(Actor actor)
public void Read(Character actor)
=> Read(actor.Address + CustomizationOffset);
public ActorCustomization(Actor actor)
public ActorCustomization(Character actor)
: this()
{
Read(actor.Address + CustomizationOffset);

View file

@ -1,4 +1,5 @@
using Dalamud.Plugin;
using Dalamud.Data;
using Dalamud.Plugin;
namespace Glamourer
{
@ -7,9 +8,9 @@ namespace Glamourer
public readonly Lumina.Data.FileResource File;
public readonly uint[] RgbaColors;
public CmpFile(DalamudPluginInterface pi)
public CmpFile(DataManager gameData)
{
File = pi.Data.GetFile("chara/xls/charamake/human.cmp");
File = gameData.GetFile("chara/xls/charamake/human.cmp")!;
RgbaColors = new uint[File.Data.Length >> 2];
for (var i = 0; i < File.Data.Length; i += 4)
{

View file

@ -1,4 +1,6 @@
using System.Collections.Generic;
using Dalamud;
using Dalamud.Data;
using Dalamud.Plugin;
using Penumbra.GameData.Enums;
@ -11,9 +13,9 @@ namespace Glamourer.Customization
private CustomizationManager()
{ }
public static ICustomizationManager Create(DalamudPluginInterface pi)
public static ICustomizationManager Create(DalamudPluginInterface pi, DataManager gameData, ClientLanguage language)
{
_options ??= new CustomizationOptions(pi);
_options ??= new CustomizationOptions(pi, gameData, language);
return new CustomizationManager();
}

View file

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using Dalamud;
using Dalamud.Data;
using Dalamud.Plugin;
using Glamourer.Util;
using Lumina.Data;
@ -50,7 +51,7 @@ namespace Glamourer.Customization
private Customization[] GetHairStyles(SubRace race, Gender gender)
{
var row = _hairSheet.GetRow(((uint) race - 1) * 2 - 1 + (uint) gender);
var row = _hairSheet.GetRow(((uint) race - 1) * 2 - 1 + (uint) gender)!;
var hairList = new List<Customization>(row.Unknown30);
for (var i = 0; i < row.Unknown30; ++i)
{
@ -129,7 +130,7 @@ namespace Glamourer.Customization
private CustomizationSet GetSet(SubRace race, Gender gender)
{
var (skin, hair) = GetColors(race, gender);
var row = _listSheet.GetRow(((uint) race - 1) * 2 - 1 + (uint) gender);
var row = _listSheet.GetRow(((uint) race - 1) * 2 - 1 + (uint) gender)!;
var set = new CustomizationSet(race, gender)
{
HairStyles = race.ToRace() == Race.Hrothgar ? HrothgarFaces(row) : GetHairStyles(race, gender),
@ -211,7 +212,7 @@ namespace Glamourer.Customization
return textRow?.Text.ToString() ?? c.ToDefaultName();
}).ToArray();
set._types = ((CustomizationId[]) Enum.GetValues(typeof(CustomizationId))).Select(c =>
set.Types = ((CustomizationId[]) Enum.GetValues(typeof(CustomizationId))).Select(c =>
{
if (c == CustomizationId.HighlightColor)
return CharaMakeParams.MenuType.ColorPicker;
@ -255,21 +256,21 @@ namespace Glamourer.Customization
_ => Language.English,
};
internal CustomizationOptions(DalamudPluginInterface pi)
internal CustomizationOptions(DalamudPluginInterface pi, DataManager gameData, ClientLanguage language)
{
_cmpFile = new CmpFile(pi);
_customizeSheet = pi.Data.GetExcelSheet<CharaMakeCustomize>();
_lobby = pi.Data.GetExcelSheet<Lobby>();
var tmp = pi.Data.Excel.GetType()!.GetMethod("GetSheet", BindingFlags.Instance | BindingFlags.NonPublic)!
.MakeGenericMethod(typeof(CharaMakeParams))!.Invoke(pi.Data.Excel, new object?[]
_cmpFile = new CmpFile(gameData);
_customizeSheet = gameData.GetExcelSheet<CharaMakeCustomize>()!;
_lobby = gameData.GetExcelSheet<Lobby>()!;
var tmp = gameData.Excel.GetType()!.GetMethod("GetSheet", BindingFlags.Instance | BindingFlags.NonPublic)!
.MakeGenericMethod(typeof(CharaMakeParams))!.Invoke(gameData.Excel, new object?[]
{
"charamaketype",
FromClientLanguage(pi.ClientState.ClientLanguage),
FromClientLanguage(language),
null,
}) as ExcelSheet<CharaMakeParams>;
_listSheet = tmp!;
_hairSheet = pi.Data.GetExcelSheet<HairMakeType>();
SetNames(pi);
_hairSheet = gameData.GetExcelSheet<HairMakeType>()!;
SetNames(gameData);
_highlightPicker = CreateColorPicker(CustomizationId.HighlightColor, 256, 192);
_lipColorPickerDark = CreateColorPicker(CustomizationId.LipColor, 512, 96);
@ -279,7 +280,7 @@ namespace Glamourer.Customization
_facePaintColorPickerLight = CreateColorPicker(CustomizationId.FacePaintColor, 1152, 96, true);
_tattooColorPicker = CreateColorPicker(CustomizationId.TattooColor, 0, 192);
_icons = new IconStorage(pi, _list.Length * 50);
_icons = new IconStorage(pi, gameData, _list.Length * 50);
foreach (var race in Clans)
{
foreach (var gender in Genders)
@ -287,9 +288,9 @@ namespace Glamourer.Customization
}
}
public void SetNames(DalamudPluginInterface pi)
private void SetNames(DataManager gameData)
{
var subRace = pi.Data.GetExcelSheet<Tribe>();
var subRace = gameData.GetExcelSheet<Tribe>()!;
_names[(int) CustomName.Clan] = _lobby.GetRow(102)?.Text ?? "Clan";
_names[(int) CustomName.Gender] = _lobby.GetRow(103)?.Text ?? "Gender";
_names[(int) CustomName.Reverse] = _lobby.GetRow(2135)?.Text ?? "Reverse";

View file

@ -69,7 +69,7 @@ namespace Glamourer.Customization
public IReadOnlyList<Customization> LipColorsLight { get; internal set; } = null!;
public IReadOnlyList<Customization> LipColorsDark { get; internal set; } = null!;
public IReadOnlyList<CharaMakeParams.MenuType> _types { get; internal set; } = null!;
public IReadOnlyList<CharaMakeParams.MenuType> Types { get; internal set; } = null!;
public string Option(CustomizationId id)
=> OptionName[(int) id];
@ -154,7 +154,7 @@ namespace Glamourer.Customization
}
public CharaMakeParams.MenuType Type(CustomizationId id)
=> _types[(int) id];
=> Types[(int) id];
public int Count(CustomizationId id)