using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Toolbox.Library;
using FirstPlugin;
using LayoutBXLYT.Cafe;
namespace LayoutBXLYT
{
///
/// A mapper which applies hard coded panes to the proper place
///
public class LayoutCustomPaneMapper
{
private bool Loaded = false;
//MK8 character select
public void LoadMK8DCharaSelect(Dictionary textures, BxlytHeader header)
{
var archive = header.FileInfo.IFileInfo.ArchiveParent;
if (archive == null || !header.PaneLookup.ContainsKey("L_Chara_00"))
return;
if (!Loaded)
{
var parentArchive = ((IFileFormat)archive).IFileInfo.ArchiveParent;
if (parentArchive == null) return;
foreach (var files in parentArchive.Files)
{
if (files.FileName.Contains("mn_L_CharaIcon_00"))
{
var charIconSzs = (IArchiveFile)files.OpenFile();
foreach (var file in charIconSzs.Files)
{
if (Utils.GetExtension(file.FileName) == ".bntx")
{
var bntx = (BNTX)file.OpenFile();
foreach (var tex in bntx.Textures)
if (!textures.ContainsKey(tex.Key))
{
Console.WriteLine("Adding icon " + tex.Key);
textures.Add(tex.Key, tex.Value);
}
Loaded = true;
}
}
}
}
}
//Map to all icons
for (int i = 0; i < 42; i++)
{
Console.WriteLine($"L_Chara_{i.ToString("00")}");
if (!header.PaneLookup.ContainsKey($"L_Chara_{i.ToString("00")}"))
continue;
var partPane = (Cafe.BFLYT.PRT1)header.PaneLookup[$"L_Chara_{i.ToString("00")}"];
var charPane = partPane.GetExternalPane();
if (charPane == null) return;
var iconPane = charPane.SearchPane("P_Chara_00");
if (iconPane == null) return;
var mat = ((BFLYT.PIC1)iconPane).Material;
string textureName = "Mario";
switch (i)
{
case 0: textureName = "Mario"; break;
case 1: textureName = "Luigi"; break;
case 2: textureName = "Peach"; break;
case 3: textureName = "Daisy"; break;
case 4: textureName = "Rosetta"; break;
case 5: textureName = "TanukiMario"; break;
case 6: textureName = "CatPeach"; break;
case 7: textureName = "Yoshi00"; break;
case 8: textureName = "Kinopio"; break; //Toad
case 9: textureName = "Nokonoko"; break; //Koopa
case 10: textureName = "Heyho00"; break;
case 11: textureName = "Jugemu"; break;
case 12: textureName = "Kinopico"; break; //Toadette
case 13: textureName = "KingTeresa"; break;
case 14: textureName = "BbMario"; break;
case 15: textureName = "BbLuigi"; break;
case 16: textureName = "BbPeach"; break;
case 17: textureName = "BbDaisy"; break;
case 18: textureName = "BbRosetta"; break;
case 19: textureName = "MetalMario"; break;
case 20: textureName = "PGoldPeach"; break;
case 21: textureName = "Wario"; break;
case 22: textureName = "Waluigi"; break;
case 23: textureName = "DK"; break;
case 24: textureName = "Koopa"; break; //Bowser
case 25: textureName = "Karon"; break;
case 26: textureName = "KoopaJr"; break;
case 27: textureName = "HoneKoopa"; break;
case 28: textureName = "Lemmy"; break;
case 29: textureName = "Larry"; break;
case 30: textureName = "Wendy"; break;
case 31: textureName = "Ludwig"; break;
case 32: textureName = "Iggy"; break;
case 33: textureName = "Roy"; break;
case 34: textureName = "Morton"; break;
case 35: textureName = "SplatoonGirl00"; break;
case 36: textureName = "SplatoonBoy00"; break;
case 37: textureName = "Link"; break;
case 38: textureName = "AnimalBoyA"; break;
case 39: textureName = "AnimalGirlA"; break;
case 40: textureName = "Shizue"; break;
case 41: textureName = "MiiAmiibo"; break;
}
textureName = $"tc_Chara_{textureName}^l";
if (!mat.animController.TexturePatterns.ContainsKey(LTPTarget.Image1))
mat.animController.TexturePatterns.Add(LTPTarget.Image1, textureName);
else
mat.animController.TexturePatterns[LTPTarget.Image1] = textureName;
}
}
}
}