mirror of
https://github.com/KillzXGaming/Switch-Toolbox
synced 2024-11-30 00:10:36 +00:00
Add BCLYT support. Some ram usage optmization for bflyt editor
This commit is contained in:
parent
0f587d2624
commit
e4cb00c237
23 changed files with 1605 additions and 98 deletions
|
@ -148,6 +148,8 @@ namespace FirstPlugin
|
||||||
//For saving
|
//For saving
|
||||||
public List<SectionBase> Sections = new List<SectionBase>();
|
public List<SectionBase> Sections = new List<SectionBase>();
|
||||||
|
|
||||||
|
private string UnknownString;
|
||||||
|
|
||||||
public void Read(FileReader reader, PTCL ptcl)
|
public void Read(FileReader reader, PTCL ptcl)
|
||||||
{
|
{
|
||||||
uint Position = (uint)reader.Position; //Offsets are relative to this
|
uint Position = (uint)reader.Position; //Offsets are relative to this
|
||||||
|
@ -174,6 +176,7 @@ namespace FirstPlugin
|
||||||
BlockOffset = reader.ReadUInt16();
|
BlockOffset = reader.ReadUInt16();
|
||||||
uint padding2 = reader.ReadUInt32();
|
uint padding2 = reader.ReadUInt32();
|
||||||
uint FileSize = reader.ReadUInt32();
|
uint FileSize = reader.ReadUInt32();
|
||||||
|
|
||||||
reader.Seek(Position + BlockOffset, SeekOrigin.Begin);
|
reader.Seek(Position + BlockOffset, SeekOrigin.Begin);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -85,6 +85,8 @@ namespace LayoutBXLYT
|
||||||
serializerSettings.ComparerForKeySorting = null;
|
serializerSettings.ComparerForKeySorting = null;
|
||||||
serializerSettings.RegisterTagMapping("Header", typeof(Header));
|
serializerSettings.RegisterTagMapping("Header", typeof(Header));
|
||||||
|
|
||||||
|
return FLYT.ToXml(header);
|
||||||
|
|
||||||
var serializer = new Serializer(serializerSettings);
|
var serializer = new Serializer(serializerSettings);
|
||||||
string yaml = serializer.Serialize(header, typeof(Header));
|
string yaml = serializer.Serialize(header, typeof(Header));
|
||||||
return yaml;
|
return yaml;
|
||||||
|
@ -100,18 +102,18 @@ namespace LayoutBXLYT
|
||||||
{
|
{
|
||||||
LayoutEditor editor = new LayoutEditor();
|
LayoutEditor editor = new LayoutEditor();
|
||||||
editor.Dock = DockStyle.Fill;
|
editor.Dock = DockStyle.Fill;
|
||||||
editor.LoadBflyt(header, FileName);
|
editor.LoadBxlyt(header, FileName);
|
||||||
return editor;
|
return editor;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void FillEditor(Form control) {
|
public void FillEditor(Form control) {
|
||||||
((LayoutEditor)control).LoadBflyt(header, FileName);
|
((LayoutEditor)control).LoadBxlyt(header, FileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Header header;
|
public Header header;
|
||||||
public void Load(System.IO.Stream stream)
|
public void Load(System.IO.Stream stream)
|
||||||
{
|
{
|
||||||
CanSave = false;
|
CanSave = true;
|
||||||
|
|
||||||
header = new Header();
|
header = new Header();
|
||||||
header.Read(new FileReader(stream), this);
|
header.Read(new FileReader(stream), this);
|
||||||
|
@ -195,12 +197,14 @@ namespace LayoutBXLYT
|
||||||
if (Utils.GetExtension(file.FileName) == ".bntx")
|
if (Utils.GetExtension(file.FileName) == ".bntx")
|
||||||
{
|
{
|
||||||
BNTX bntx = (BNTX)file.OpenFile();
|
BNTX bntx = (BNTX)file.OpenFile();
|
||||||
|
file.FileFormat = bntx;
|
||||||
foreach (var tex in bntx.Textures)
|
foreach (var tex in bntx.Textures)
|
||||||
textures.Add(tex.Key, tex.Value);
|
textures.Add(tex.Key, tex.Value);
|
||||||
}
|
}
|
||||||
else if (Utils.GetExtension(file.FileName) == ".bflim")
|
else if (Utils.GetExtension(file.FileName) == ".bflim")
|
||||||
{
|
{
|
||||||
BFLIM bflim = (BFLIM)file.OpenFile();
|
BFLIM bflim = (BFLIM)file.OpenFile();
|
||||||
|
file.FileFormat = bflim;
|
||||||
textures.Add(bflim.FileName, bflim);
|
textures.Add(bflim.FileName, bflim);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -222,11 +226,6 @@ namespace LayoutBXLYT
|
||||||
//https://github.com/FuryBaguette/SwitchLayoutEditor/tree/master/SwitchThemesCommon
|
//https://github.com/FuryBaguette/SwitchLayoutEditor/tree/master/SwitchThemesCommon
|
||||||
public class Header : BxlytHeader, IDisposable
|
public class Header : BxlytHeader, IDisposable
|
||||||
{
|
{
|
||||||
public string FileName
|
|
||||||
{
|
|
||||||
get { return FileInfo.FileName; }
|
|
||||||
}
|
|
||||||
|
|
||||||
private const string Magic = "FLYT";
|
private const string Magic = "FLYT";
|
||||||
|
|
||||||
private ushort ByteOrderMark;
|
private ushort ByteOrderMark;
|
||||||
|
@ -239,6 +238,13 @@ namespace LayoutBXLYT
|
||||||
// private List<SectionCommon> Sections;
|
// private List<SectionCommon> Sections;
|
||||||
// public List<PAN1> Panes = new List<PAN1>();
|
// public List<PAN1> Panes = new List<PAN1>();
|
||||||
|
|
||||||
|
public int TotalPaneCount()
|
||||||
|
{
|
||||||
|
int panes = GetPanes().Count;
|
||||||
|
int grpPanes = GetGroupPanes().Count;
|
||||||
|
return panes + grpPanes;
|
||||||
|
}
|
||||||
|
|
||||||
public override List<string> Textures
|
public override List<string> Textures
|
||||||
{
|
{
|
||||||
get { return TextureList.Textures; }
|
get { return TextureList.Textures; }
|
||||||
|
@ -249,6 +255,34 @@ namespace LayoutBXLYT
|
||||||
get { return ((BFLYT)FileInfo).GetTextures(); }
|
get { return ((BFLYT)FileInfo).GetTextures(); }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<PAN1> GetPanes()
|
||||||
|
{
|
||||||
|
List<PAN1> panes = new List<PAN1>();
|
||||||
|
GetPaneChildren(panes, (PAN1)RootPane);
|
||||||
|
return panes;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<GRP1> GetGroupPanes()
|
||||||
|
{
|
||||||
|
List<GRP1> panes = new List<GRP1>();
|
||||||
|
GetGroupChildren(panes, (GRP1)RootGroup);
|
||||||
|
return panes;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void GetPaneChildren(List<PAN1> panes, PAN1 root)
|
||||||
|
{
|
||||||
|
panes.Add(root);
|
||||||
|
foreach (var pane in root.Childern)
|
||||||
|
GetPaneChildren(panes, (PAN1)pane);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void GetGroupChildren(List<GRP1> panes, GRP1 root)
|
||||||
|
{
|
||||||
|
panes.Add(root);
|
||||||
|
foreach (var pane in root.Childern)
|
||||||
|
GetGroupChildren(panes, (GRP1)pane);
|
||||||
|
}
|
||||||
|
|
||||||
public void Read(FileReader reader, BFLYT bflyt)
|
public void Read(FileReader reader, BFLYT bflyt)
|
||||||
{
|
{
|
||||||
LayoutInfo = new LYT1();
|
LayoutInfo = new LYT1();
|
||||||
|
@ -276,6 +310,9 @@ namespace LayoutBXLYT
|
||||||
BasePane currentPane = null;
|
BasePane currentPane = null;
|
||||||
BasePane parentPane = null;
|
BasePane parentPane = null;
|
||||||
|
|
||||||
|
BasePane currentGroupPane = null;
|
||||||
|
BasePane parentGroupPane = null;
|
||||||
|
|
||||||
reader.SeekBegin(HeaderSize);
|
reader.SeekBegin(HeaderSize);
|
||||||
for (int i = 0; i < sectionCount; i++)
|
for (int i = 0; i < sectionCount; i++)
|
||||||
{
|
{
|
||||||
|
@ -358,10 +395,16 @@ namespace LayoutBXLYT
|
||||||
setGroupRoot = true;
|
setGroupRoot = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SetPane(groupPanel, parentGroupPane);
|
||||||
|
currentGroupPane = groupPanel;
|
||||||
break;
|
break;
|
||||||
case "grs1":
|
case "grs1":
|
||||||
|
if (currentGroupPane != null)
|
||||||
|
parentGroupPane = currentGroupPane;
|
||||||
break;
|
break;
|
||||||
case "gre1":
|
case "gre1":
|
||||||
|
currentGroupPane = parentGroupPane;
|
||||||
|
parentGroupPane = currentGroupPane.Parent;
|
||||||
break;
|
break;
|
||||||
case "usd1":
|
case "usd1":
|
||||||
break;
|
break;
|
||||||
|
@ -430,6 +473,8 @@ namespace LayoutBXLYT
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string Text { get; set; }
|
||||||
|
|
||||||
public OriginX HorizontalAlignment
|
public OriginX HorizontalAlignment
|
||||||
{
|
{
|
||||||
get { return (OriginX)((TextAlignment >> 2) & 0x3); }
|
get { return (OriginX)((TextAlignment >> 2) & 0x3); }
|
||||||
|
@ -515,10 +560,17 @@ namespace LayoutBXLYT
|
||||||
ShadowForeColor = STColor8.FromBytes(reader.ReadBytes(4));
|
ShadowForeColor = STColor8.FromBytes(reader.ReadBytes(4));
|
||||||
ShadowBackColor = STColor8.FromBytes(reader.ReadBytes(4));
|
ShadowBackColor = STColor8.FromBytes(reader.ReadBytes(4));
|
||||||
ShadowItalic = reader.ReadSingle();
|
ShadowItalic = reader.ReadSingle();
|
||||||
|
|
||||||
|
if (RestrictedTextLengthEnabled)
|
||||||
|
Text = reader.ReadString(MaxTextLength);
|
||||||
|
else
|
||||||
|
Text = reader.ReadString(TextLength);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Write(FileWriter writer, BxlytHeader header)
|
public override void Write(FileWriter writer, BxlytHeader header)
|
||||||
{
|
{
|
||||||
|
long pos = writer.Position;
|
||||||
|
|
||||||
base.Write(writer, header);
|
base.Write(writer, header);
|
||||||
writer.Write(TextLength);
|
writer.Write(TextLength);
|
||||||
writer.Write(MaxTextLength);
|
writer.Write(MaxTextLength);
|
||||||
|
@ -529,6 +581,7 @@ namespace LayoutBXLYT
|
||||||
writer.Write(_flags);
|
writer.Write(_flags);
|
||||||
writer.Seek(1);
|
writer.Seek(1);
|
||||||
writer.Write(ItalicTilt);
|
writer.Write(ItalicTilt);
|
||||||
|
long _ofsTextPos = writer.Position;
|
||||||
writer.Write(0); //text offset
|
writer.Write(0); //text offset
|
||||||
writer.Write(FontForeColor.ToBytes());
|
writer.Write(FontForeColor.ToBytes());
|
||||||
writer.Write(FontBackColor.ToBytes());
|
writer.Write(FontBackColor.ToBytes());
|
||||||
|
@ -540,6 +593,12 @@ namespace LayoutBXLYT
|
||||||
writer.Write(ShadowForeColor.ToBytes());
|
writer.Write(ShadowForeColor.ToBytes());
|
||||||
writer.Write(ShadowBackColor.ToBytes());
|
writer.Write(ShadowBackColor.ToBytes());
|
||||||
writer.Write(ShadowItalic);
|
writer.Write(ShadowItalic);
|
||||||
|
|
||||||
|
writer.WriteUint32Offset(_ofsTextPos, pos);
|
||||||
|
if (RestrictedTextLengthEnabled)
|
||||||
|
writer.WriteString(Text, MaxTextLength);
|
||||||
|
else
|
||||||
|
writer.WriteString(Text, TextLength);
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum BorderType : byte
|
public enum BorderType : byte
|
||||||
|
@ -565,14 +624,60 @@ namespace LayoutBXLYT
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ushort StretchLeft;
|
||||||
|
public ushort StretchRight;
|
||||||
|
public ushort StretchTop;
|
||||||
|
public ushort StretchBottm;
|
||||||
|
public ushort FrameElementLeft;
|
||||||
|
public ushort FrameElementRight;
|
||||||
|
public ushort FrameElementTop;
|
||||||
|
public ushort FrameElementBottm;
|
||||||
|
public byte FrameCount;
|
||||||
|
private byte _flag;
|
||||||
|
|
||||||
public WND1(FileReader reader) : base(reader)
|
public WND1(FileReader reader) : base(reader)
|
||||||
{
|
{
|
||||||
|
long pos = reader.Position;
|
||||||
|
|
||||||
|
StretchLeft = reader.ReadUInt16();
|
||||||
|
StretchRight = reader.ReadUInt16();
|
||||||
|
StretchTop = reader.ReadUInt16();
|
||||||
|
StretchBottm = reader.ReadUInt16();
|
||||||
|
FrameElementLeft = reader.ReadUInt16();
|
||||||
|
FrameElementRight = reader.ReadUInt16();
|
||||||
|
FrameElementTop = reader.ReadUInt16();
|
||||||
|
FrameElementBottm = reader.ReadUInt16();
|
||||||
|
FrameCount = reader.ReadByte();
|
||||||
|
_flag = reader.ReadByte();
|
||||||
|
reader.ReadUInt16();//padding
|
||||||
|
uint contentOffset = reader.ReadUInt32();
|
||||||
|
uint frameOffsetTbl = reader.ReadUInt32();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Write(FileWriter writer, BxlytHeader header)
|
public override void Write(FileWriter writer, BxlytHeader header)
|
||||||
{
|
{
|
||||||
|
long pos = writer.Position;
|
||||||
|
|
||||||
base.Write(writer, header);
|
base.Write(writer, header);
|
||||||
|
writer.Write(StretchLeft);
|
||||||
|
writer.Write(StretchRight);
|
||||||
|
writer.Write(StretchTop);
|
||||||
|
writer.Write(StretchBottm);
|
||||||
|
writer.Write(FrameElementLeft);
|
||||||
|
writer.Write(FrameElementRight);
|
||||||
|
writer.Write(FrameElementTop);
|
||||||
|
writer.Write(FrameElementBottm);
|
||||||
|
writer.Write(FrameCount);
|
||||||
|
writer.Write(_flag);
|
||||||
|
writer.Seek(2);
|
||||||
|
|
||||||
|
long _ofsContentPos = writer.Position;
|
||||||
|
writer.Write(0);
|
||||||
|
writer.Write(0);
|
||||||
|
|
||||||
|
writer.WriteUint32Offset(_ofsContentPos, pos);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -799,7 +904,7 @@ namespace LayoutBXLYT
|
||||||
}
|
}
|
||||||
|
|
||||||
public byte Alpha { get; set; }
|
public byte Alpha { get; set; }
|
||||||
public byte Unknown { get; set; }
|
public byte PaneMagFlags { get; set; }
|
||||||
|
|
||||||
public string UserDataInfo { get; set; }
|
public string UserDataInfo { get; set; }
|
||||||
|
|
||||||
|
@ -813,7 +918,7 @@ namespace LayoutBXLYT
|
||||||
_flags1 = reader.ReadByte();
|
_flags1 = reader.ReadByte();
|
||||||
_flags2 = reader.ReadByte();
|
_flags2 = reader.ReadByte();
|
||||||
Alpha = reader.ReadByte();
|
Alpha = reader.ReadByte();
|
||||||
Unknown = reader.ReadByte();
|
PaneMagFlags = reader.ReadByte();
|
||||||
Name = reader.ReadString(0x18).Replace("\0", string.Empty);
|
Name = reader.ReadString(0x18).Replace("\0", string.Empty);
|
||||||
UserDataInfo = reader.ReadString(0x8).Replace("\0", string.Empty);
|
UserDataInfo = reader.ReadString(0x8).Replace("\0", string.Empty);
|
||||||
Translate = reader.ReadVec3SY();
|
Translate = reader.ReadVec3SY();
|
||||||
|
@ -828,7 +933,7 @@ namespace LayoutBXLYT
|
||||||
writer.Write(_flags1);
|
writer.Write(_flags1);
|
||||||
writer.Write(_flags2);
|
writer.Write(_flags2);
|
||||||
writer.Write(Alpha);
|
writer.Write(Alpha);
|
||||||
writer.Write(Unknown);
|
writer.Write(PaneMagFlags);
|
||||||
writer.WriteString(Name, 0x18);
|
writer.WriteString(Name, 0x18);
|
||||||
writer.WriteString(UserDataInfo, 0x8);
|
writer.WriteString(UserDataInfo, 0x8);
|
||||||
writer.Write(Translate);
|
writer.Write(Translate);
|
18
File_Format_Library/FileFormats/Layout/CAFE/FLYT.cs
Normal file
18
File_Format_Library/FileFormats/Layout/CAFE/FLYT.cs
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Xml;
|
||||||
|
using System.Xml.Serialization;
|
||||||
|
|
||||||
|
namespace LayoutBXLYT
|
||||||
|
{
|
||||||
|
public class FLYT
|
||||||
|
{
|
||||||
|
public static string ToXml(BFLYT.Header header)
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
1121
File_Format_Library/FileFormats/Layout/CTR/BCLYT.cs
Normal file
1121
File_Format_Library/FileFormats/Layout/CTR/BCLYT.cs
Normal file
File diff suppressed because it is too large
Load diff
|
@ -10,11 +10,6 @@ using WeifenLuo.WinFormsUI.Docking;
|
||||||
|
|
||||||
namespace LayoutBXLYT
|
namespace LayoutBXLYT
|
||||||
{
|
{
|
||||||
public class LayoutDocked : DockContent
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public class BasePane : SectionCommon
|
public class BasePane : SectionCommon
|
||||||
{
|
{
|
||||||
public bool DisplayInEditor { get; set; } = true;
|
public bool DisplayInEditor { get; set; } = true;
|
||||||
|
@ -41,6 +36,13 @@ namespace LayoutBXLYT
|
||||||
get { return Childern.Count > 0; }
|
get { return Childern.Count > 0; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public BasePane()
|
||||||
|
{
|
||||||
|
originX = OriginX.Center;
|
||||||
|
originY = OriginY.Center;
|
||||||
|
ParentOriginX = OriginX.Center;
|
||||||
|
ParentOriginY = OriginY.Center;
|
||||||
|
}
|
||||||
|
|
||||||
public CustomRectangle CreateRectangle()
|
public CustomRectangle CreateRectangle()
|
||||||
{
|
{
|
||||||
|
@ -117,6 +119,11 @@ namespace LayoutBXLYT
|
||||||
|
|
||||||
public class BxlytHeader : IDisposable
|
public class BxlytHeader : IDisposable
|
||||||
{
|
{
|
||||||
|
public string FileName
|
||||||
|
{
|
||||||
|
get { return FileInfo.FileName; }
|
||||||
|
}
|
||||||
|
|
||||||
internal IFileFormat FileInfo;
|
internal IFileFormat FileInfo;
|
||||||
|
|
||||||
public BasePane RootPane { get; set; }
|
public BasePane RootPane { get; set; }
|
||||||
|
@ -200,4 +207,9 @@ namespace LayoutBXLYT
|
||||||
BottomPoint = bottom;
|
BottomPoint = bottom;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class LayoutDocked : DockContent
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -277,7 +277,7 @@ namespace FirstPlugin
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
if (Textures.Any(item => item.Value.RenderableTex.GLInitialized == false))
|
if (Textures.Any(item => item.Value.RenderableTex == null || item.Value.RenderableTex.GLInitialized == false))
|
||||||
return false;
|
return false;
|
||||||
else
|
else
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -293,6 +293,8 @@
|
||||||
<Compile Include="FileFormats\Font\BFTTF.cs" />
|
<Compile Include="FileFormats\Font\BFTTF.cs" />
|
||||||
<Compile Include="FileFormats\HyruleWarriors\G1M\G1M.cs" />
|
<Compile Include="FileFormats\HyruleWarriors\G1M\G1M.cs" />
|
||||||
<Compile Include="FileFormats\HyruleWarriors\LINKDATA.cs" />
|
<Compile Include="FileFormats\HyruleWarriors\LINKDATA.cs" />
|
||||||
|
<Compile Include="FileFormats\Layout\CTR\BCLYT.cs" />
|
||||||
|
<Compile Include="FileFormats\Layout\CAFE\FLYT.cs" />
|
||||||
<Compile Include="FileFormats\Layout\PaneTreeWrapper.cs" />
|
<Compile Include="FileFormats\Layout\PaneTreeWrapper.cs" />
|
||||||
<Compile Include="FileFormats\Layout\Common.cs" />
|
<Compile Include="FileFormats\Layout\Common.cs" />
|
||||||
<Compile Include="FileFormats\Message\MSBP.cs" />
|
<Compile Include="FileFormats\Message\MSBP.cs" />
|
||||||
|
@ -322,25 +324,31 @@
|
||||||
<DependentUpon>FileSelector.cs</DependentUpon>
|
<DependentUpon>FileSelector.cs</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="GUI\BFLYT\LayoutHierarchy.cs">
|
<Compile Include="GUI\BFLYT\LayoutHierarchy.cs">
|
||||||
<SubType>UserControl</SubType>
|
<SubType>Form</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="GUI\BFLYT\LayoutHierarchy.Designer.cs">
|
<Compile Include="GUI\BFLYT\LayoutHierarchy.Designer.cs">
|
||||||
<DependentUpon>LayoutHierarchy.cs</DependentUpon>
|
<DependentUpon>LayoutHierarchy.cs</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="GUI\BFLYT\LayoutProperties.cs">
|
<Compile Include="GUI\BFLYT\LayoutProperties.cs">
|
||||||
<SubType>UserControl</SubType>
|
<SubType>Form</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="GUI\BFLYT\LayoutProperties.Designer.cs">
|
<Compile Include="GUI\BFLYT\LayoutProperties.Designer.cs">
|
||||||
<DependentUpon>LayoutProperties.cs</DependentUpon>
|
<DependentUpon>LayoutProperties.cs</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="GUI\BFLYT\LayoutTextDocked.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="GUI\BFLYT\LayoutTextDocked.Designer.cs">
|
||||||
|
<DependentUpon>LayoutTextDocked.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
<Compile Include="GUI\BFLYT\LayoutTextureList.cs">
|
<Compile Include="GUI\BFLYT\LayoutTextureList.cs">
|
||||||
<SubType>UserControl</SubType>
|
<SubType>Form</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="GUI\BFLYT\LayoutTextureList.Designer.cs">
|
<Compile Include="GUI\BFLYT\LayoutTextureList.Designer.cs">
|
||||||
<DependentUpon>LayoutTextureList.cs</DependentUpon>
|
<DependentUpon>LayoutTextureList.cs</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="GUI\BFLYT\LayoutViewer.cs">
|
<Compile Include="GUI\BFLYT\LayoutViewer.cs">
|
||||||
<SubType>UserControl</SubType>
|
<SubType>Form</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="GUI\BFLYT\LayoutViewer.Designer.cs">
|
<Compile Include="GUI\BFLYT\LayoutViewer.Designer.cs">
|
||||||
<DependentUpon>LayoutViewer.cs</DependentUpon>
|
<DependentUpon>LayoutViewer.cs</DependentUpon>
|
||||||
|
@ -388,8 +396,8 @@
|
||||||
<Compile Include="FileFormats\Shader\SHARCFBNX.cs" />
|
<Compile Include="FileFormats\Shader\SHARCFBNX.cs" />
|
||||||
<Compile Include="FileFormats\Texture\BCLIM.cs" />
|
<Compile Include="FileFormats\Texture\BCLIM.cs" />
|
||||||
<Compile Include="FileFormats\Texture\BFLIM.cs" />
|
<Compile Include="FileFormats\Texture\BFLIM.cs" />
|
||||||
<Compile Include="FileFormats\Layout\BFLAN.cs" />
|
<Compile Include="FileFormats\Layout\CAFE\BFLAN.cs" />
|
||||||
<Compile Include="FileFormats\Layout\BFLYT.cs" />
|
<Compile Include="FileFormats\Layout\CAFE\BFLYT.cs" />
|
||||||
<Compile Include="FileFormats\BFRES\Bfres Structs\CurveHelper.cs" />
|
<Compile Include="FileFormats\BFRES\Bfres Structs\CurveHelper.cs" />
|
||||||
<Compile Include="FileFormats\BFRES\BFRES.cs" />
|
<Compile Include="FileFormats\BFRES\BFRES.cs" />
|
||||||
<Compile Include="FileFormats\Texture\NUT.cs" />
|
<Compile Include="FileFormats\Texture\NUT.cs" />
|
||||||
|
|
|
@ -24,18 +24,18 @@ namespace LayoutBXLYT
|
||||||
listViewCustom1.MultiSelect = true;
|
listViewCustom1.MultiSelect = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<BFLYT> SelectedLayouts()
|
public List<IFileFormat> SelectedLayouts()
|
||||||
{
|
{
|
||||||
List<BFLYT> layouts = new List<BFLYT>();
|
List<IFileFormat> layouts = new List<IFileFormat>();
|
||||||
foreach (ListViewItem item in listViewCustom1.SelectedItems)
|
foreach (ListViewItem item in listViewCustom1.SelectedItems)
|
||||||
layouts.Add((BFLYT)item.Tag);
|
layouts.Add((IFileFormat)item.Tag);
|
||||||
|
|
||||||
listViewCustom1.Items.Clear();
|
listViewCustom1.Items.Clear();
|
||||||
|
|
||||||
return layouts;
|
return layouts;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void LoadLayoutFiles(List<BFLYT> layoutFiles)
|
public void LoadLayoutFiles(List<IFileFormat> layoutFiles)
|
||||||
{
|
{
|
||||||
listViewCustom1.BeginUpdate();
|
listViewCustom1.BeginUpdate();
|
||||||
foreach (var file in layoutFiles)
|
foreach (var file in layoutFiles)
|
||||||
|
|
|
@ -36,11 +36,12 @@
|
||||||
this.toolStripButton1 = new System.Windows.Forms.ToolStripButton();
|
this.toolStripButton1 = new System.Windows.Forms.ToolStripButton();
|
||||||
this.stMenuStrip1 = new Toolbox.Library.Forms.STMenuStrip();
|
this.stMenuStrip1 = new Toolbox.Library.Forms.STMenuStrip();
|
||||||
this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.clearWorkspaceToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
this.clearWorkspaceToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.editToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
this.editToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.viewToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
this.viewToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.textureListToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
this.textureListToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
this.textConverterToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.backColorDisplay)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.backColorDisplay)).BeginInit();
|
||||||
this.stToolStrip1.SuspendLayout();
|
this.stToolStrip1.SuspendLayout();
|
||||||
this.stMenuStrip1.SuspendLayout();
|
this.stMenuStrip1.SuspendLayout();
|
||||||
|
@ -118,10 +119,17 @@
|
||||||
this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
|
this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
|
||||||
this.fileToolStripMenuItem.Text = "File";
|
this.fileToolStripMenuItem.Text = "File";
|
||||||
//
|
//
|
||||||
|
// openToolStripMenuItem
|
||||||
|
//
|
||||||
|
this.openToolStripMenuItem.Name = "openToolStripMenuItem";
|
||||||
|
this.openToolStripMenuItem.Size = new System.Drawing.Size(127, 22);
|
||||||
|
this.openToolStripMenuItem.Text = "Open";
|
||||||
|
this.openToolStripMenuItem.Click += new System.EventHandler(this.openToolStripMenuItem_Click);
|
||||||
|
//
|
||||||
// clearWorkspaceToolStripMenuItem
|
// clearWorkspaceToolStripMenuItem
|
||||||
//
|
//
|
||||||
this.clearWorkspaceToolStripMenuItem.Name = "clearWorkspaceToolStripMenuItem";
|
this.clearWorkspaceToolStripMenuItem.Name = "clearWorkspaceToolStripMenuItem";
|
||||||
this.clearWorkspaceToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
|
this.clearWorkspaceToolStripMenuItem.Size = new System.Drawing.Size(127, 22);
|
||||||
this.clearWorkspaceToolStripMenuItem.Text = "Clear Files";
|
this.clearWorkspaceToolStripMenuItem.Text = "Clear Files";
|
||||||
this.clearWorkspaceToolStripMenuItem.Click += new System.EventHandler(this.clearWorkspaceToolStripMenuItem_Click);
|
this.clearWorkspaceToolStripMenuItem.Click += new System.EventHandler(this.clearWorkspaceToolStripMenuItem_Click);
|
||||||
//
|
//
|
||||||
|
@ -134,7 +142,8 @@
|
||||||
// viewToolStripMenuItem
|
// viewToolStripMenuItem
|
||||||
//
|
//
|
||||||
this.viewToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
this.viewToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
this.textureListToolStripMenuItem});
|
this.textureListToolStripMenuItem,
|
||||||
|
this.textConverterToolStripMenuItem});
|
||||||
this.viewToolStripMenuItem.Name = "viewToolStripMenuItem";
|
this.viewToolStripMenuItem.Name = "viewToolStripMenuItem";
|
||||||
this.viewToolStripMenuItem.Size = new System.Drawing.Size(44, 20);
|
this.viewToolStripMenuItem.Size = new System.Drawing.Size(44, 20);
|
||||||
this.viewToolStripMenuItem.Text = "View";
|
this.viewToolStripMenuItem.Text = "View";
|
||||||
|
@ -142,16 +151,16 @@
|
||||||
// textureListToolStripMenuItem
|
// textureListToolStripMenuItem
|
||||||
//
|
//
|
||||||
this.textureListToolStripMenuItem.Name = "textureListToolStripMenuItem";
|
this.textureListToolStripMenuItem.Name = "textureListToolStripMenuItem";
|
||||||
this.textureListToolStripMenuItem.Size = new System.Drawing.Size(133, 22);
|
this.textureListToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
|
||||||
this.textureListToolStripMenuItem.Text = "Texture List";
|
this.textureListToolStripMenuItem.Text = "Texture List";
|
||||||
this.textureListToolStripMenuItem.Click += new System.EventHandler(this.textureListToolStripMenuItem_Click);
|
this.textureListToolStripMenuItem.Click += new System.EventHandler(this.textureListToolStripMenuItem_Click);
|
||||||
//
|
//
|
||||||
// openToolStripMenuItem
|
// textConverterToolStripMenuItem
|
||||||
//
|
//
|
||||||
this.openToolStripMenuItem.Name = "openToolStripMenuItem";
|
this.textConverterToolStripMenuItem.Name = "textConverterToolStripMenuItem";
|
||||||
this.openToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
|
this.textConverterToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
|
||||||
this.openToolStripMenuItem.Text = "Open";
|
this.textConverterToolStripMenuItem.Text = "Text Converter";
|
||||||
this.openToolStripMenuItem.Click += new System.EventHandler(this.openToolStripMenuItem_Click);
|
this.textConverterToolStripMenuItem.Click += new System.EventHandler(this.textConverterToolStripMenuItem_Click);
|
||||||
//
|
//
|
||||||
// LayoutEditor
|
// LayoutEditor
|
||||||
//
|
//
|
||||||
|
@ -193,5 +202,6 @@
|
||||||
private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
|
private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
|
||||||
private System.Windows.Forms.ToolStripMenuItem clearWorkspaceToolStripMenuItem;
|
private System.Windows.Forms.ToolStripMenuItem clearWorkspaceToolStripMenuItem;
|
||||||
private System.Windows.Forms.ToolStripMenuItem openToolStripMenuItem;
|
private System.Windows.Forms.ToolStripMenuItem openToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem textConverterToolStripMenuItem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,8 @@ namespace LayoutBXLYT
|
||||||
{
|
{
|
||||||
public partial class LayoutEditor : Form
|
public partial class LayoutEditor : Form
|
||||||
{
|
{
|
||||||
|
private Dictionary<string, STGenericTexture> Textures;
|
||||||
|
|
||||||
public List<BxlytHeader> LayoutFiles = new List<BxlytHeader>();
|
public List<BxlytHeader> LayoutFiles = new List<BxlytHeader>();
|
||||||
|
|
||||||
private BxlytHeader ActiveLayout;
|
private BxlytHeader ActiveLayout;
|
||||||
|
@ -35,6 +37,8 @@ namespace LayoutBXLYT
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
||||||
|
Textures = new Dictionary<string, STGenericTexture>();
|
||||||
|
|
||||||
var theme = new VS2015DarkTheme();
|
var theme = new VS2015DarkTheme();
|
||||||
this.dockPanel1.Theme = theme;
|
this.dockPanel1.Theme = theme;
|
||||||
this.dockPanel1.BackColor = FormThemes.BaseTheme.FormBackColor;
|
this.dockPanel1.BackColor = FormThemes.BaseTheme.FormBackColor;
|
||||||
|
@ -53,14 +57,15 @@ namespace LayoutBXLYT
|
||||||
private LayoutHierarchy LayoutHierarchy;
|
private LayoutHierarchy LayoutHierarchy;
|
||||||
private LayoutTextureList LayoutTextureList;
|
private LayoutTextureList LayoutTextureList;
|
||||||
private LayoutProperties LayoutProperties;
|
private LayoutProperties LayoutProperties;
|
||||||
|
private LayoutTextDocked TextConverter;
|
||||||
|
|
||||||
private bool isLoaded = false;
|
private bool isLoaded = false;
|
||||||
public void LoadBflyt(BFLYT.Header header, string fileName)
|
public void LoadBxlyt(BxlytHeader header, string fileName)
|
||||||
{
|
{
|
||||||
LayoutFiles.Add(header);
|
LayoutFiles.Add(header);
|
||||||
ActiveLayout = header;
|
ActiveLayout = header;
|
||||||
|
|
||||||
LayoutViewer Viewport = new LayoutViewer(header);
|
LayoutViewer Viewport = new LayoutViewer(header, Textures);
|
||||||
Viewport.Dock = DockStyle.Fill;
|
Viewport.Dock = DockStyle.Fill;
|
||||||
Viewport.Show(dockPanel1, DockState.Document);
|
Viewport.Show(dockPanel1, DockState.Document);
|
||||||
Viewport.DockHandler.AllowEndUserDocking = false;
|
Viewport.DockHandler.AllowEndUserDocking = false;
|
||||||
|
@ -89,6 +94,8 @@ namespace LayoutBXLYT
|
||||||
LayoutTextureList.Reset();
|
LayoutTextureList.Reset();
|
||||||
if (LayoutProperties != null)
|
if (LayoutProperties != null)
|
||||||
LayoutProperties.Reset();
|
LayoutProperties.Reset();
|
||||||
|
if (TextConverter != null)
|
||||||
|
TextConverter.Reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ReloadEditors(BxlytHeader activeLayout)
|
private void ReloadEditors(BxlytHeader activeLayout)
|
||||||
|
@ -101,6 +108,11 @@ namespace LayoutBXLYT
|
||||||
LayoutHierarchy.LoadLayout(activeLayout, ObjectSelected);
|
LayoutHierarchy.LoadLayout(activeLayout, ObjectSelected);
|
||||||
if (LayoutTextureList != null)
|
if (LayoutTextureList != null)
|
||||||
LayoutTextureList.LoadTextures(activeLayout);
|
LayoutTextureList.LoadTextures(activeLayout);
|
||||||
|
if (TextConverter != null)
|
||||||
|
{
|
||||||
|
if (ActiveLayout.FileInfo is BFLYT)
|
||||||
|
TextConverter.LoadLayout((BFLYT)ActiveLayout.FileInfo);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnObjectChanged(object sender, EventArgs e)
|
private void OnObjectChanged(object sender, EventArgs e)
|
||||||
|
@ -277,7 +289,9 @@ namespace LayoutBXLYT
|
||||||
if (file == null) return;
|
if (file == null) return;
|
||||||
|
|
||||||
if (file is BFLYT)
|
if (file is BFLYT)
|
||||||
LoadBflyt(((BFLYT)file).header, file.FileName);
|
LoadBxlyt(((BFLYT)file).header, file.FileName);
|
||||||
|
else if (file is BCLYT)
|
||||||
|
LoadBxlyt(((BCLYT)file).header, file.FileName);
|
||||||
else if (file is IArchiveFile)
|
else if (file is IArchiveFile)
|
||||||
{
|
{
|
||||||
var layouts = SearchLayoutFiles((IArchiveFile)file);
|
var layouts = SearchLayoutFiles((IArchiveFile)file);
|
||||||
|
@ -289,13 +303,19 @@ namespace LayoutBXLYT
|
||||||
{
|
{
|
||||||
foreach (var layout in form.SelectedLayouts())
|
foreach (var layout in form.SelectedLayouts())
|
||||||
{
|
{
|
||||||
LoadBflyt(layout.header, file.FileName);
|
if (layout is BFLYT)
|
||||||
|
LoadBxlyt(((BFLYT)layout).header, file.FileName);
|
||||||
|
if (layout is BCLYT)
|
||||||
|
LoadBxlyt(((BCLYT)layout).header, file.FileName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (layouts.Count > 0)
|
else if (layouts.Count > 0)
|
||||||
{
|
{
|
||||||
LoadBflyt(layouts[0].header, file.FileName);
|
if (layouts[0] is BFLYT)
|
||||||
|
LoadBxlyt(((BFLYT)layouts[0]).header, file.FileName);
|
||||||
|
if (layouts[0] is BCLYT)
|
||||||
|
LoadBxlyt(((BCLYT)layouts[0]).header, file.FileName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (file is BFLAN)
|
else if (file is BFLAN)
|
||||||
|
@ -308,19 +328,24 @@ namespace LayoutBXLYT
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<BFLYT> SearchLayoutFiles(IArchiveFile archiveFile)
|
private List<IFileFormat> SearchLayoutFiles(IArchiveFile archiveFile)
|
||||||
{
|
{
|
||||||
List<BFLYT> layouts = new List<BFLYT>();
|
List<IFileFormat> layouts = new List<IFileFormat>();
|
||||||
|
|
||||||
foreach (var file in archiveFile.Files)
|
foreach (var file in archiveFile.Files)
|
||||||
{
|
{
|
||||||
var fileFormat = STFileLoader.OpenFileFormat(file.FileName,
|
var fileFormat = STFileLoader.OpenFileFormat(file.FileName,
|
||||||
new Type[] { typeof(BFLYT), typeof(SARC) }, file.FileData);
|
new Type[] { typeof(BFLYT), typeof(BCLYT), typeof(SARC) }, file.FileData);
|
||||||
|
|
||||||
if (fileFormat is BFLYT)
|
if (fileFormat is BFLYT)
|
||||||
{
|
{
|
||||||
fileFormat.IFileInfo.ArchiveParent = archiveFile;
|
fileFormat.IFileInfo.ArchiveParent = archiveFile;
|
||||||
layouts.Add((BFLYT)fileFormat);
|
layouts.Add(fileFormat);
|
||||||
|
}
|
||||||
|
else if (fileFormat is BCLYT)
|
||||||
|
{
|
||||||
|
fileFormat.IFileInfo.ArchiveParent = archiveFile;
|
||||||
|
layouts.Add(fileFormat);
|
||||||
}
|
}
|
||||||
else if (Utils.GetExtension(file.FileName) == ".bntx")
|
else if (Utils.GetExtension(file.FileName) == ".bntx")
|
||||||
{
|
{
|
||||||
|
@ -374,5 +399,15 @@ namespace LayoutBXLYT
|
||||||
OpenFile(filename);
|
OpenFile(filename);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void textConverterToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (ActiveLayout.FileInfo is BFLYT)
|
||||||
|
{
|
||||||
|
TextConverter = new LayoutTextDocked();
|
||||||
|
TextConverter.LoadLayout((BFLYT)ActiveLayout.FileInfo);
|
||||||
|
TextConverter.Show(dockPanel1, DockState.DockLeft);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,15 +34,15 @@ namespace LayoutBXLYT
|
||||||
|
|
||||||
private bool isLoaded = false;
|
private bool isLoaded = false;
|
||||||
private EventHandler OnProperySelected;
|
private EventHandler OnProperySelected;
|
||||||
public void LoadLayout(BxlytHeader bflyt, EventHandler onPropertySelected)
|
public void LoadLayout(BxlytHeader bxlyt, EventHandler onPropertySelected)
|
||||||
{
|
{
|
||||||
isLoaded = false;
|
isLoaded = false;
|
||||||
OnProperySelected = onPropertySelected;
|
OnProperySelected = onPropertySelected;
|
||||||
|
|
||||||
treeView1.Nodes.Clear();
|
treeView1.Nodes.Clear();
|
||||||
|
|
||||||
LoadPane(bflyt.RootGroup);
|
LoadPane(bxlyt.RootGroup);
|
||||||
LoadPane(bflyt.RootPane);
|
LoadPane(bxlyt.RootPane);
|
||||||
|
|
||||||
isLoaded = true;
|
isLoaded = true;
|
||||||
}
|
}
|
||||||
|
@ -64,6 +64,9 @@ namespace LayoutBXLYT
|
||||||
if (pane is BFLYT.WND1) imageKey = "WindowPane";
|
if (pane is BFLYT.WND1) imageKey = "WindowPane";
|
||||||
else if (pane is BFLYT.PIC1) imageKey = "PicturePane";
|
else if (pane is BFLYT.PIC1) imageKey = "PicturePane";
|
||||||
else if (pane is BFLYT.BND1) imageKey = "BoundryPane";
|
else if (pane is BFLYT.BND1) imageKey = "BoundryPane";
|
||||||
|
else if (pane is BCLYT.WND1) imageKey = "WindowPane";
|
||||||
|
else if (pane is BCLYT.BND1) imageKey = "BoundryPane";
|
||||||
|
else if (pane is BCLYT.PIC1) imageKey = "PicturePane";
|
||||||
else imageKey = "NullPane";
|
else imageKey = "NullPane";
|
||||||
|
|
||||||
paneNode.ImageKey = imageKey;
|
paneNode.ImageKey = imageKey;
|
||||||
|
|
|
@ -28,32 +28,32 @@
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
this.stTabControl1 = new FlatTabControl.FlatTabControl();
|
this.stPropertyGrid1 = new Toolbox.Library.Forms.STPropertyGrid();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
// stTabControl1
|
// stPropertyGrid1
|
||||||
//
|
//
|
||||||
this.stTabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
|
this.stPropertyGrid1.AutoScroll = true;
|
||||||
this.stTabControl1.Location = new System.Drawing.Point(0, 0);
|
this.stPropertyGrid1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
this.stTabControl1.myBackColor = System.Drawing.Color.Empty;
|
this.stPropertyGrid1.Location = new System.Drawing.Point(0, 0);
|
||||||
this.stTabControl1.Name = "stTabControl1";
|
this.stPropertyGrid1.Name = "stPropertyGrid1";
|
||||||
this.stTabControl1.SelectedIndex = 0;
|
this.stPropertyGrid1.ShowHintDisplay = true;
|
||||||
this.stTabControl1.Size = new System.Drawing.Size(368, 338);
|
this.stPropertyGrid1.Size = new System.Drawing.Size(352, 299);
|
||||||
this.stTabControl1.TabIndex = 0;
|
this.stPropertyGrid1.TabIndex = 0;
|
||||||
//
|
//
|
||||||
// LayoutProperties
|
// LayoutProperties
|
||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.Controls.Add(this.stTabControl1);
|
this.ClientSize = new System.Drawing.Size(352, 299);
|
||||||
|
this.Controls.Add(this.stPropertyGrid1);
|
||||||
this.Name = "LayoutProperties";
|
this.Name = "LayoutProperties";
|
||||||
this.Size = new System.Drawing.Size(368, 338);
|
|
||||||
this.ResumeLayout(false);
|
this.ResumeLayout(false);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
private FlatTabControl.FlatTabControl stTabControl1;
|
private Toolbox.Library.Forms.STPropertyGrid stPropertyGrid1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,37 +16,36 @@ namespace LayoutBXLYT
|
||||||
public LayoutProperties()
|
public LayoutProperties()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
||||||
stTabControl1.myBackColor = FormThemes.BaseTheme.FormBackColor;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Reset()
|
public void Reset()
|
||||||
{
|
{
|
||||||
stTabControl1.Controls.Clear();
|
stPropertyGrid1.LoadProperty(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void LoadProperties(BasePane prop, Action propChanged)
|
public void LoadProperties(BasePane prop, Action propChanged)
|
||||||
{
|
{
|
||||||
stTabControl1.Controls.Clear();
|
LoadPropertyTab("Pane", prop, propChanged);
|
||||||
|
|
||||||
if (prop is BFLYT.PIC1)
|
|
||||||
{
|
|
||||||
LoadPropertyTab("Pane", prop, propChanged);
|
|
||||||
LoadPropertyTab("Materials", ((BFLYT.PIC1)prop).GetMaterial(), propChanged);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
LoadPropertyTab("Pane", prop, propChanged);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void LoadPropertyTab(string text, object prop, Action propChanged)
|
private void LoadPropertyTab(string text, object prop, Action propChanged)
|
||||||
{
|
{
|
||||||
TabPage page = new TabPage();
|
DoubleBufferedTabPage page = new DoubleBufferedTabPage();
|
||||||
|
page.Enabled = false;
|
||||||
page.Text = text;
|
page.Text = text;
|
||||||
var propGrid = new STPropertyGrid();
|
stPropertyGrid1.LoadProperty(prop, propChanged);
|
||||||
propGrid.Dock = DockStyle.Fill;
|
}
|
||||||
propGrid.LoadProperty(prop, propChanged);
|
|
||||||
page.Controls.Add(propGrid);
|
class DoubleBufferedTabPage : System.Windows.Forms.TabPage
|
||||||
stTabControl1.Controls.Add(page);
|
{
|
||||||
|
public DoubleBufferedTabPage()
|
||||||
|
{
|
||||||
|
this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.DoubleBuffer, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void stTabControl1_TabIndexChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
37
File_Format_Library/GUI/BFLYT/LayoutTextDocked.Designer.cs
generated
Normal file
37
File_Format_Library/GUI/BFLYT/LayoutTextDocked.Designer.cs
generated
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
namespace LayoutBXLYT
|
||||||
|
{
|
||||||
|
partial class LayoutTextDocked
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Required designer variable.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clean up any resources being used.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Component Designer generated code
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Required method for Designer support - do not modify
|
||||||
|
/// the contents of this method with the code editor.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
components = new System.ComponentModel.Container();
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
36
File_Format_Library/GUI/BFLYT/LayoutTextDocked.cs
Normal file
36
File_Format_Library/GUI/BFLYT/LayoutTextDocked.cs
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Data;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
using Toolbox.Library.Forms;
|
||||||
|
|
||||||
|
namespace LayoutBXLYT
|
||||||
|
{
|
||||||
|
public partial class LayoutTextDocked : LayoutDocked
|
||||||
|
{
|
||||||
|
TextEditor editor;
|
||||||
|
public LayoutTextDocked()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
|
||||||
|
editor = new TextEditor();
|
||||||
|
editor.Dock = DockStyle.Fill;
|
||||||
|
Controls.Add(editor);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Reset()
|
||||||
|
{
|
||||||
|
editor.FillEditor("");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void LoadLayout(BFLYT bflyt)
|
||||||
|
{
|
||||||
|
editor.FillEditor(bflyt.ConvertToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -31,17 +31,22 @@ namespace LayoutBXLYT
|
||||||
|
|
||||||
public BxlytHeader LayoutFile;
|
public BxlytHeader LayoutFile;
|
||||||
|
|
||||||
private static Dictionary<string, STGenericTexture> Textures;
|
private Dictionary<string, STGenericTexture> Textures;
|
||||||
|
|
||||||
public LayoutViewer(BFLYT.Header bflyt)
|
public LayoutViewer(BxlytHeader bxlyt, Dictionary<string, STGenericTexture> textures)
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
LayoutFile = bflyt;
|
LayoutFile = bxlyt;
|
||||||
Text = bflyt.FileName;
|
Text = bxlyt.FileName;
|
||||||
|
|
||||||
Textures = new Dictionary<string, STGenericTexture>();
|
Textures = textures;
|
||||||
if (bflyt.TextureList.Textures.Count > 0)
|
if (bxlyt.Textures.Count > 0)
|
||||||
Textures = ((BFLYT)bflyt.FileInfo).GetTextures();
|
{
|
||||||
|
if (bxlyt.FileInfo is BFLYT)
|
||||||
|
Textures = ((BFLYT)bxlyt.FileInfo).GetTextures();
|
||||||
|
else if (bxlyt.FileInfo is BCLYT)
|
||||||
|
Textures = ((BCLYT)bxlyt.FileInfo).GetTextures();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnFormClosing(FormClosingEventArgs e)
|
protected override void OnFormClosing(FormClosingEventArgs e)
|
||||||
|
@ -115,8 +120,12 @@ namespace LayoutBXLYT
|
||||||
{
|
{
|
||||||
if (pane is BFLYT.PIC1)
|
if (pane is BFLYT.PIC1)
|
||||||
DrawPicturePane((BFLYT.PIC1)pane);
|
DrawPicturePane((BFLYT.PIC1)pane);
|
||||||
|
else if (pane is BCLYT.PIC1)
|
||||||
|
DrawDefaultPane((BCLYT.PIC1)pane);
|
||||||
else if (pane is BFLYT.PAN1)
|
else if (pane is BFLYT.PAN1)
|
||||||
DrawDefaultPane((BFLYT.PAN1)pane);
|
DrawDefaultPane((BFLYT.PAN1)pane);
|
||||||
|
else if (pane is BCLYT.PAN1)
|
||||||
|
DrawDefaultPane((BCLYT.PAN1)pane);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
isRoot = false;
|
isRoot = false;
|
||||||
|
@ -164,7 +173,7 @@ namespace LayoutBXLYT
|
||||||
GL.PopMatrix();
|
GL.PopMatrix();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DrawDefaultPane(BFLYT.PAN1 pane)
|
private void DrawDefaultPane(BasePane pane)
|
||||||
{
|
{
|
||||||
Vector2[] TexCoords = new Vector2[] {
|
Vector2[] TexCoords = new Vector2[] {
|
||||||
new Vector2(1,1),
|
new Vector2(1,1),
|
||||||
|
@ -187,6 +196,47 @@ namespace LayoutBXLYT
|
||||||
DrawRectangle(pane.CreateRectangle(), TexCoords, Colors);
|
DrawRectangle(pane.CreateRectangle(), TexCoords, Colors);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void DrawPicturePane(BCLYT.PIC1 pane)
|
||||||
|
{
|
||||||
|
Vector2[] TexCoords = new Vector2[] {
|
||||||
|
new Vector2(1,1),
|
||||||
|
new Vector2(0,1),
|
||||||
|
new Vector2(0,0),
|
||||||
|
new Vector2(1,0)
|
||||||
|
};
|
||||||
|
|
||||||
|
Color[] Colors = new Color[] {
|
||||||
|
pane.ColorTopLeft.Color,
|
||||||
|
pane.ColorTopRight.Color,
|
||||||
|
pane.ColorBottomRight.Color,
|
||||||
|
pane.ColorBottomLeft.Color,
|
||||||
|
};
|
||||||
|
|
||||||
|
GL.Enable(EnableCap.Texture2D);
|
||||||
|
|
||||||
|
if (pane.TexCoords.Length > 0)
|
||||||
|
{
|
||||||
|
var mat = pane.GetMaterial();
|
||||||
|
string textureMap0 = "";
|
||||||
|
if (mat.TextureMaps.Count > 0)
|
||||||
|
textureMap0 = mat.GetTexture(0);
|
||||||
|
|
||||||
|
// if (Textures.ContainsKey(textureMap0))
|
||||||
|
// BindGLTexture(mat.TextureMaps[0], Textures[textureMap0]);
|
||||||
|
|
||||||
|
TexCoords = new Vector2[] {
|
||||||
|
pane.TexCoords[0].TopLeft.ToTKVector2(),
|
||||||
|
pane.TexCoords[0].TopRight.ToTKVector2(),
|
||||||
|
pane.TexCoords[0].BottomRight.ToTKVector2(),
|
||||||
|
pane.TexCoords[0].BottomLeft.ToTKVector2(),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
DrawRectangle(pane.CreateRectangle(), TexCoords, Colors, false);
|
||||||
|
|
||||||
|
GL.BindTexture(TextureTarget.Texture2D, 0);
|
||||||
|
}
|
||||||
|
|
||||||
private void DrawPicturePane(BFLYT.PIC1 pane)
|
private void DrawPicturePane(BFLYT.PIC1 pane)
|
||||||
{
|
{
|
||||||
Vector2[] TexCoords = new Vector2[] {
|
Vector2[] TexCoords = new Vector2[] {
|
||||||
|
@ -473,6 +523,18 @@ namespace LayoutBXLYT
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected override void OnClosed(EventArgs e)
|
||||||
|
{
|
||||||
|
foreach (var tex in LayoutFile.Textures)
|
||||||
|
{
|
||||||
|
if (Textures.ContainsKey(tex))
|
||||||
|
{
|
||||||
|
Textures[tex].DisposeRenderable();
|
||||||
|
Textures.Remove(tex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected override void OnMouseWheel(MouseEventArgs e)
|
protected override void OnMouseWheel(MouseEventArgs e)
|
||||||
{
|
{
|
||||||
base.OnMouseWheel(e);
|
base.OnMouseWheel(e);
|
||||||
|
|
|
@ -367,6 +367,7 @@ namespace FirstPlugin
|
||||||
Formats.Add(typeof(CMB));
|
Formats.Add(typeof(CMB));
|
||||||
Formats.Add(typeof(G1T));
|
Formats.Add(typeof(G1T));
|
||||||
Formats.Add(typeof(LayoutBXLYT.BFLYT));
|
Formats.Add(typeof(LayoutBXLYT.BFLYT));
|
||||||
|
Formats.Add(typeof(LayoutBXLYT.BCLYT));
|
||||||
Formats.Add(typeof(ZSI));
|
Formats.Add(typeof(ZSI));
|
||||||
Formats.Add(typeof(IGZ_TEX));
|
Formats.Add(typeof(IGZ_TEX));
|
||||||
Formats.Add(typeof(MOD));
|
Formats.Add(typeof(MOD));
|
||||||
|
|
|
@ -399,18 +399,6 @@ namespace FlatTabControl
|
||||||
|
|
||||||
private void FlatTabControl_SelectedIndexChanged(object sender, EventArgs e)
|
private void FlatTabControl_SelectedIndexChanged(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
foreach (TabPage tpCheck in TabPages)
|
|
||||||
{
|
|
||||||
tpCheck.BackColor = FormThemes.BaseTheme.TabPageInactive;
|
|
||||||
tpCheck.ForeColor = FormThemes.BaseTheme.DisabledItemColor;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (SelectedTab != null)
|
|
||||||
{
|
|
||||||
SelectedTab.BackColor = FormThemes.BaseTheme.TabPageActive;
|
|
||||||
SelectedTab.ForeColor = FormThemes.BaseTheme.TextForeColor;
|
|
||||||
}
|
|
||||||
|
|
||||||
UpdateUpDown();
|
UpdateUpDown();
|
||||||
Invalidate(); // we need to update border and background colors
|
Invalidate(); // we need to update border and background colors
|
||||||
}
|
}
|
||||||
|
|
|
@ -281,6 +281,35 @@ namespace Toolbox.Library.IO
|
||||||
return ReadString(BinaryStringFormat.ZeroTerminated, encoding);
|
return ReadString(BinaryStringFormat.ZeroTerminated, encoding);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public STColor8[] ReadColor8sRGBA(int count)
|
||||||
|
{
|
||||||
|
STColor8[] colors = new STColor8[count];
|
||||||
|
for (int i = 0; i < count; i++)
|
||||||
|
colors[i] = STColor8.FromBytes(ReadBytes(4));
|
||||||
|
|
||||||
|
return colors;
|
||||||
|
}
|
||||||
|
|
||||||
|
public STColor8 ReadColor8RGBA()
|
||||||
|
{
|
||||||
|
return STColor8.FromBytes(ReadBytes(4));
|
||||||
|
}
|
||||||
|
|
||||||
|
public STColor[] ReadColorsRGBA(int count)
|
||||||
|
{
|
||||||
|
STColor[] colors = new STColor[count];
|
||||||
|
for (int i = 0; i < count; i++)
|
||||||
|
colors[i] = STColor.FromFloats(ReadSingles(4));
|
||||||
|
|
||||||
|
return colors;
|
||||||
|
}
|
||||||
|
|
||||||
|
public STColor ReadColorRGBA()
|
||||||
|
{
|
||||||
|
return STColor.FromFloats(ReadSingles(4));
|
||||||
|
}
|
||||||
|
|
||||||
public static byte[] DeflateZLIB(byte[] i)
|
public static byte[] DeflateZLIB(byte[] i)
|
||||||
{
|
{
|
||||||
MemoryStream output = new MemoryStream();
|
MemoryStream output = new MemoryStream();
|
||||||
|
|
|
@ -58,6 +58,12 @@ namespace Toolbox.Library.IO
|
||||||
Write(color.ToBytes());
|
Write(color.ToBytes());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void Write(STColor8[] colors)
|
||||||
|
{
|
||||||
|
foreach (var color in colors)
|
||||||
|
Write(color.ToBytes());
|
||||||
|
}
|
||||||
|
|
||||||
public void WriteStruct<T>(T item) => Write(item.StructToBytes(ByteOrder == ByteOrder.BigEndian));
|
public void WriteStruct<T>(T item) => Write(item.StructToBytes(ByteOrder == ByteOrder.BigEndian));
|
||||||
|
|
||||||
public void WriteSignature(string value)
|
public void WriteSignature(string value)
|
||||||
|
|
|
@ -45,7 +45,16 @@ namespace Toolbox.Library
|
||||||
col.G = color[1] / 255f;
|
col.G = color[1] / 255f;
|
||||||
col.B = color[2] / 255f;
|
col.B = color[2] / 255f;
|
||||||
col.A = color[3] / 255f;
|
col.A = color[3] / 255f;
|
||||||
|
return col;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static STColor FromFloats(float[] color)
|
||||||
|
{
|
||||||
|
STColor col = new STColor();
|
||||||
|
col.R = color[0];
|
||||||
|
col.G = color[1];
|
||||||
|
col.B = color[2];
|
||||||
|
col.A = color[3];
|
||||||
return col;
|
return col;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -31,6 +31,31 @@ namespace Toolbox.Library.IO
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Type CheckFileFormatType(string FileName, Type[] FileTypes, byte[] data = null)
|
||||||
|
{
|
||||||
|
//Todo. Create a compression list like IFileFormat to decompress via an Identiy method
|
||||||
|
data = CheckCompression(FileName, data);
|
||||||
|
|
||||||
|
Stream stream;
|
||||||
|
if (data != null)
|
||||||
|
stream = new MemoryStream(data);
|
||||||
|
else
|
||||||
|
stream = File.OpenRead(FileName);
|
||||||
|
|
||||||
|
foreach (IFileFormat fileFormat in FileManager.GetFileFormats())
|
||||||
|
{
|
||||||
|
fileFormat.FileName = Path.GetFileName(FileName);
|
||||||
|
|
||||||
|
foreach (Type type in FileTypes)
|
||||||
|
{
|
||||||
|
if (fileFormat.Identify(stream) && fileFormat.GetType() == type)
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return typeof(IFileFormat);
|
||||||
|
}
|
||||||
|
|
||||||
public static IFileFormat OpenFileFormat(string FileName, Type[] FileTypes, byte[] data = null)
|
public static IFileFormat OpenFileFormat(string FileName, Type[] FileTypes, byte[] data = null)
|
||||||
{
|
{
|
||||||
//Todo. Create a compression list like IFileFormat to decompress via an Identiy method
|
//Todo. Create a compression list like IFileFormat to decompress via an Identiy method
|
||||||
|
|
Loading…
Reference in a new issue