Exemple #1
0
        private void DrawRaceEntry(RaceMaterialEntry rme)
        {
            for (int var = 1; var <= rme.VariantCount; var++)
            {
                ImGui.Text(rme.VariantCount > 1 ? $"{rme.Race} {rme.Sex} (v{var:D4})" : $"{rme.Race} {rme.Sex}");
                ImGui.NextColumn();

                switch (rme.Type)
                {
                case MaterialSkinType.GameOverride:
                    DrawClanEntry(rme.FirstClan.ToString(), $"Game Override to {(RaceSexId)rme.OverrideRaceSexID}", MaterialPathHandler.BuildBodyMaterialPath(rme.OverrideRaceSexID, 1, var, "_a.mtrl"));
                    ImGui.NextColumn();
                    DrawClanEntry(rme.SecondClan.ToString(), $"Game Override to {(RaceSexId)rme.OverrideRaceSexID}", MaterialPathHandler.BuildBodyMaterialPath(rme.OverrideRaceSexID, 1, var, "_a.mtrl"));
                    break;

                case MaterialSkinType.GameRaceVariant:
                    DrawClanEntry(rme.FirstClan.ToString(), $"Game Race Variant", MaterialPathHandler.BuildBodyMaterialPath(rme.FirstClanRaceSexID, 1, var, "_a.mtrl"));
                    ImGui.NextColumn();
                    DrawClanEntry(rme.SecondClan.ToString(), $"Game Race Variant", MaterialPathHandler.BuildBodyMaterialPath(rme.FirstClanRaceSexID, 1, var, "_a.mtrl"));
                    break;

                case MaterialSkinType.GameRaceClanVariant:
                    DrawClanEntry(rme.FirstClan.ToString(), $"Game Race+Clan Variant", MaterialPathHandler.BuildBodyMaterialPath(rme.FirstClanRaceSexID, 1, var, "_a.mtrl"));
                    ImGui.NextColumn();
                    DrawClanEntry(rme.SecondClan.ToString(), $"Game Race+Clan Variant", MaterialPathHandler.BuildBodyMaterialPath(rme.SecondClanRaceSexID, rme.FirstClanRaceSexID == rme.SecondClanRaceSexID ? 101 : 1, var, "_a.mtrl"));
                    break;

                case MaterialSkinType.RaceVariant:
                    DrawClanEntry(rme.FirstClan.ToString(), $"New Race Variant", MaterialPathHandler.BuildBodyMaterialPath(rme.FirstClanRaceSexID, 1, var, "_a.mtrl"));
                    ImGui.NextColumn();
                    DrawClanEntry(rme.SecondClan.ToString(), $"New Race Variant", MaterialPathHandler.BuildBodyMaterialPath(rme.FirstClanRaceSexID, 1, var, "_a.mtrl"));
                    break;

                case MaterialSkinType.RaceClanVariant:
                    DrawClanEntry(rme.FirstClan.ToString(), $"New Race+Clan Variant", MaterialPathHandler.BuildBodyMaterialPath(rme.FirstClanRaceSexID, 1, var, "_a.mtrl"));
                    ImGui.NextColumn();
                    DrawClanEntry(rme.SecondClan.ToString(), $"New Race+Clan Variant", MaterialPathHandler.BuildBodyMaterialPath(rme.SecondClanRaceSexID, rme.FirstClanRaceSexID == rme.SecondClanRaceSexID ? 101 : 1, var, "_a.mtrl"));
                    break;
                }

                ImGui.Separator();
            }
        }
Exemple #2
0
        public RaceMaterialEntry CreateRaceMaterialEntry(ushort firstClanRaceSexID, ushort secondClanRaceSexID, bool hasGameRaceClanVariant, Race race, Sex sex, Clan firstClan, Clan secondClan, byte variantCount)
        {
            var rme = new RaceMaterialEntry();

            rme.FirstClanRaceSexID  = firstClanRaceSexID;
            rme.SecondClanRaceSexID = secondClanRaceSexID;
            rme.OverrideRaceSexID   = GetMaterialRaceSexIdOverride(firstClanRaceSexID);
            rme.Race         = race;
            rme.Sex          = sex;
            rme.FirstClan    = firstClan;
            rme.SecondClan   = secondClan;
            rme.VariantCount = variantCount;

            string firstClanVariant  = BuildBodyMaterialPath(firstClanRaceSexID, 1, 1, "_a.mtrl");
            string secondClanVariant = BuildBodyMaterialPath(secondClanRaceSexID, firstClanRaceSexID == secondClanRaceSexID ? 101 : 1, 1, "_a.mtrl");

            bool hasRaceVariant     = _plugin.PluginInterface.Data.FileExists(firstClanVariant);
            bool hasRaceClanVariant = _plugin.PluginInterface.Data.FileExists(secondClanVariant) && hasRaceVariant;
            bool hasGameRaceVariant = (firstClanRaceSexID == rme.OverrideRaceSexID);

            if (hasGameRaceClanVariant)
            {
                rme.Type = MaterialSkinType.GameRaceClanVariant; // aura, highlander/midlander
            }
            else if (hasRaceClanVariant)
            {
                rme.Type = MaterialSkinType.RaceClanVariant; // player added
            }
            else if (hasGameRaceVariant)
            {
                rme.Type = MaterialSkinType.GameRaceVariant; // lalafell, hrothgar, viera
            }
            else if (hasRaceVariant)
            {
                rme.Type = MaterialSkinType.RaceVariant; // player added
            }
            else
            {
                rme.Type = MaterialSkinType.GameOverride; // elezen, miqo'te
            }
            return(rme);
        }