public static void Save(BinaryWriter writer, SavedAnimGoal goal) { // TODO: This should use a hard coded translation table to protect against changes in the enum ordinals writer.WriteInt32((int)goal.Type); writer.WriteFrozenObjRef(goal.Self); writer.WriteFrozenObjRef(goal.Target); writer.WriteFrozenObjRef(goal.Block); writer.WriteFrozenObjRef(goal.Scratch); writer.WriteFrozenObjRef(goal.Parent); writer.WriteTileLocation(goal.TargetTile); writer.WriteTileLocation(goal.Range); writer.WriteInt32(goal.AnimId); writer.WriteInt32(goal.AnimIdPrevious); writer.WriteInt32(goal.AnimData); writer.WriteInt32(goal.SpellData); writer.WriteInt32(goal.SkillData); writer.WriteInt32(goal.FlagsData); writer.WriteInt32(goal.ScratchVal1); writer.WriteInt32(goal.ScratchVal2); writer.WriteInt32(goal.ScratchVal3); writer.WriteInt32(goal.ScratchVal4); writer.WriteInt32(goal.ScratchVal5); writer.WriteInt32(goal.ScratchVal6); writer.WriteInt32(goal.SoundHandle); // I believe one will always be written as -1, while the other is transient data writer.WriteInt32(goal.SoundStreamId); writer.WriteInt32(goal.SoundStreamId2); }
public static SavedAnimGoal Load(BinaryReader reader) { var result = new SavedAnimGoal(); var goalTypeId = reader.ReadInt32(); // TODO: This should use a hard coded translation table to protect against changes in the enum ordinals result.Type = (AnimGoalType)goalTypeId; // Load goal parameters result.Self = reader.ReadFrozenObjRef(); result.Target = reader.ReadFrozenObjRef(); result.Block = reader.ReadFrozenObjRef(); result.Scratch = reader.ReadFrozenObjRef(); result.Parent = reader.ReadFrozenObjRef(); result.TargetTile = reader.ReadTileLocation(); result.Range = reader.ReadTileLocation(); result.AnimId = reader.ReadInt32(); result.AnimIdPrevious = reader.ReadInt32(); result.AnimData = reader.ReadInt32(); result.SpellData = reader.ReadInt32(); result.SkillData = reader.ReadInt32(); result.FlagsData = reader.ReadInt32(); result.ScratchVal1 = reader.ReadInt32(); result.ScratchVal2 = reader.ReadInt32(); result.ScratchVal3 = reader.ReadInt32(); result.ScratchVal4 = reader.ReadInt32(); result.ScratchVal5 = reader.ReadInt32(); result.ScratchVal6 = reader.ReadInt32(); result.SoundHandle = reader.ReadInt32(); // I believe one will always be written as -1, while the other is transient data result.SoundStreamId = reader.ReadInt32(); result.SoundStreamId2 = reader.ReadInt32(); return(result); }