You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

77 lines
2.1 KiB
C#

using System;
using System.Collections.Generic;
using DotNetCTFDumper.Utils;
using static DotNetCTFDumper.MMFParser.EXE.ChunkList;
namespace DotNetCTFDumper.MMFParser.EXE.Loaders
{
public class GlobalValues : ChunkLoader
{
public List<float> Items = new List<float>();
public GlobalValues(Chunk chunk) : base(chunk) { }
public override void Print(bool ext)
{
}
public override string[] GetReadableData()
{
throw new NotImplementedException();
}
public override void Read()
{
var numberOfItems = Reader.ReadUInt16();
var templist = new List<ByteReader>();
for (int i = 0; i < numberOfItems; i++)
{
templist.Add(new ByteReader(Reader.ReadBytes(4)));
}
foreach (var item in templist)
{
var globalType = Reader.ReadSByte();
float newGlobal = 0f;
if((Constants.ValueType)globalType==Constants.ValueType.Float)
{
newGlobal = item.ReadSingle();
}
else if ((Constants.ValueType)globalType == Constants.ValueType.Int)
{
newGlobal = item.ReadInt32();
}
else
{
throw new Exception("unknown global type");
}
Items.Add(newGlobal);
}
}
}
public class GlobalStrings : ChunkLoader
{
public List<string> Items = new List<string>();
public GlobalStrings(Chunk chunk) : base(chunk) { }
public override void Print(bool ext)
{
}
public override string[] GetReadableData()
{
throw new NotImplementedException();
}
public override void Read()
{
var count = Reader.ReadUInt32();
for (int i = 0; i < count; i++)
{
Items.Add(Reader.ReadAscii());
}
}
}
}