mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/PCK-Studio.git
synced 2026-06-21 17:15:39 +00:00
Move BehaviourFile processing to OMI lib
This commit is contained in:
@@ -1,31 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace PckStudio.Classes.FileTypes
|
||||
{
|
||||
public class BehaviourFile
|
||||
{
|
||||
public List<RiderPositionOverride> entries { get; } = new List<RiderPositionOverride>();
|
||||
public class RiderPositionOverride
|
||||
{
|
||||
public string name;
|
||||
public List<PositionOverride> overrides { get; }
|
||||
|
||||
public RiderPositionOverride(string name)
|
||||
{
|
||||
this.name = name;
|
||||
overrides = new List<PositionOverride>();
|
||||
}
|
||||
|
||||
public class PositionOverride
|
||||
{
|
||||
public bool EntityIsTamed;
|
||||
public bool EntityHasSaddle;
|
||||
public float x, y, z;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,53 +0,0 @@
|
||||
using PckStudio.Classes.FileTypes;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace PckStudio.Classes.IO.Behaviour
|
||||
{
|
||||
public class BehavioursReader : StreamDataReader<BehaviourFile>
|
||||
{
|
||||
public static BehaviourFile Read(Stream stream)
|
||||
{
|
||||
return new BehavioursReader().ReadFromStream(stream);
|
||||
}
|
||||
|
||||
protected BehavioursReader() : base(false) // Doesn't seem that Behaviours uses little endian
|
||||
{
|
||||
}
|
||||
|
||||
protected override BehaviourFile ReadFromStream(Stream stream)
|
||||
{
|
||||
BehaviourFile behaviourFile = new BehaviourFile();
|
||||
_ = ReadInt(stream);
|
||||
int riderPosOverrideCount = ReadInt(stream);
|
||||
for (int i = 0; i < riderPosOverrideCount; i++)
|
||||
{
|
||||
string name = ReadString(stream);
|
||||
var riderPositionOverride = new BehaviourFile.RiderPositionOverride(name);
|
||||
int posOverideCount = ReadInt(stream);
|
||||
for (; 0 < posOverideCount; posOverideCount--)
|
||||
{
|
||||
var posOverride = new BehaviourFile.RiderPositionOverride.PositionOverride();
|
||||
posOverride.EntityIsTamed = ReadBool(stream);
|
||||
posOverride.EntityHasSaddle = ReadBool(stream);
|
||||
posOverride.x = ReadFloat(stream);
|
||||
posOverride.y = ReadFloat(stream);
|
||||
posOverride.z = ReadFloat(stream);
|
||||
riderPositionOverride.overrides.Add(posOverride);
|
||||
}
|
||||
behaviourFile.entries.Add(riderPositionOverride);
|
||||
}
|
||||
return behaviourFile;
|
||||
}
|
||||
|
||||
private string ReadString(Stream stream)
|
||||
{
|
||||
short length = ReadShort(stream);
|
||||
return ReadString(stream, length, Encoding.ASCII);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,47 +0,0 @@
|
||||
using PckStudio.Classes.FileTypes;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
|
||||
namespace PckStudio.Classes.IO.Behaviour
|
||||
{
|
||||
internal class BehavioursWriter : StreamDataWriter
|
||||
{
|
||||
private BehaviourFile behaviourFile;
|
||||
|
||||
public static void Write(Stream stream, BehaviourFile file)
|
||||
{
|
||||
new BehavioursWriter(file).WriteToStream(stream);
|
||||
}
|
||||
|
||||
public BehavioursWriter(BehaviourFile file) : base(false)
|
||||
{
|
||||
behaviourFile = file;
|
||||
}
|
||||
|
||||
protected override void WriteToStream(Stream stream)
|
||||
{
|
||||
WriteInt(stream, 0);
|
||||
WriteInt(stream, behaviourFile.entries.Count);
|
||||
foreach (var entry in behaviourFile.entries)
|
||||
{
|
||||
WriteString(stream, entry.name);
|
||||
WriteInt(stream, entry.overrides.Count);
|
||||
foreach(var posOverride in entry.overrides)
|
||||
{
|
||||
WriteBool(stream, posOverride.EntityIsTamed);
|
||||
WriteBool(stream, posOverride.EntityHasSaddle);
|
||||
WriteFloat(stream, posOverride.x);
|
||||
WriteFloat(stream, posOverride.y);
|
||||
WriteFloat(stream, posOverride.z);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void WriteString(Stream stream, string s)
|
||||
{
|
||||
WriteShort(stream, (short)s.Length);
|
||||
WriteString(stream, s, Encoding.ASCII);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -7,9 +7,10 @@ using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
using MetroFramework.Forms;
|
||||
using PckStudio.Classes.FileTypes;
|
||||
using PckStudio.Classes.IO.Behaviour;
|
||||
using PckStudio.Forms.Additional_Popups.EntityForms;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using OMI.Formats.Behaviour;
|
||||
using OMI.Workers.Behaviour;
|
||||
|
||||
namespace PckStudio.Forms.Editor
|
||||
{
|
||||
@@ -62,7 +63,8 @@ namespace PckStudio.Forms.Editor
|
||||
|
||||
using (var stream = new MemoryStream(file.Data))
|
||||
{
|
||||
behaviourFile = BehavioursReader.Read(stream);
|
||||
var reader = new BehavioursReader();
|
||||
behaviourFile = reader.FromStream(stream);
|
||||
}
|
||||
|
||||
treeView1.ImageList = new ImageList();
|
||||
@@ -267,7 +269,8 @@ namespace PckStudio.Forms.Editor
|
||||
}
|
||||
}
|
||||
|
||||
BehavioursWriter.Write(stream, behaviourFile);
|
||||
var writer = new BehavioursWriter(behaviourFile);
|
||||
writer.WriteToStream(stream);
|
||||
_file.SetData(stream.ToArray());
|
||||
}
|
||||
DialogResult = DialogResult.OK;
|
||||
|
||||
@@ -5,8 +5,9 @@ using System.IO;
|
||||
|
||||
using PckStudio.Properties;
|
||||
using PckStudio.Classes.FileTypes;
|
||||
using PckStudio.Classes.IO.Behaviour;
|
||||
using PckStudio.Classes.Extentions;
|
||||
using OMI.Formats.Behaviour;
|
||||
using OMI.Workers.Behaviour;
|
||||
|
||||
namespace PckStudio.Forms.Utilities
|
||||
{
|
||||
@@ -23,7 +24,8 @@ namespace PckStudio.Forms.Utilities
|
||||
|
||||
using (var stream = new MemoryStream())
|
||||
{
|
||||
BehavioursWriter.Write(stream, new BehaviourFile());
|
||||
var writer = new BehavioursWriter(new BehaviourFile());
|
||||
writer.WriteToStream(stream);
|
||||
file.SetData(stream.ToArray());
|
||||
}
|
||||
|
||||
|
||||
@@ -171,15 +171,12 @@
|
||||
<Compile Include="Classes\API\PCKCenter\PCKCollectionsLocal.cs" />
|
||||
<Compile Include="Classes\API\PCKCenter\SaveLocalJSON.cs" />
|
||||
<Compile Include="Classes\FileTypes\MaterialsFile.cs" />
|
||||
<Compile Include="Classes\FileTypes\BehaviourFile.cs" />
|
||||
<Compile Include="Classes\FileTypes\CSMBFile.cs" />
|
||||
<Compile Include="Classes\FileTypes\ModelFile.cs" />
|
||||
<Compile Include="Classes\FileTypes\PCKAudioFile.cs" />
|
||||
<Compile Include="Classes\FileTypes\Binka.cs" />
|
||||
<Compile Include="Classes\FileTypes\CSM.cs" />
|
||||
<Compile Include="Classes\FileTypes\GRFFile.cs" />
|
||||
<Compile Include="Classes\IO\Behaviour\BehavioursReader.cs" />
|
||||
<Compile Include="Classes\IO\Behaviour\BehavioursWriter.cs" />
|
||||
<Compile Include="Classes\IO\CSMB\CSMBFileReader.cs" />
|
||||
<Compile Include="Classes\IO\CSMB\CSMBFileWriter.cs" />
|
||||
<Compile Include="Classes\IO\Materials\MaterialsReader.cs" />
|
||||
|
||||
2
Vendor/OMI-Lib
vendored
2
Vendor/OMI-Lib
vendored
Submodule Vendor/OMI-Lib updated: 67da631de8...e2fa983abc
Reference in New Issue
Block a user