mirror of
https://gitlab.com/Syroot/Worms.git
synced 2025-04-11 03:40:05 +03:00
109 lines
3.7 KiB
C#
109 lines
3.7 KiB
C#
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Text;
|
|
using Syroot.IO;
|
|
using Syroot.Worms.Core;
|
|
|
|
namespace Syroot.Worms.Gen2.Worms2
|
|
{
|
|
/// <summary>
|
|
/// Represents the list of teams stored in ST1 files.
|
|
/// Used by W2. S. https://worms2d.info/Worms_2_team_file.
|
|
/// </summary>
|
|
public class TeamContainer : ILoadableFile, ISaveableFile
|
|
{
|
|
// ---- CONSTRUCTORS & DESTRUCTOR ------------------------------------------------------------------------------
|
|
|
|
/// <summary>
|
|
/// Initializes a new instance of the <see cref="TeamContainer"/> class.
|
|
/// </summary>
|
|
public TeamContainer()
|
|
{
|
|
Teams = new List<Team>();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Initializes a new instance of the <see cref="TeamContainer"/> class, loading the data from the given
|
|
/// <see cref="Stream"/>.
|
|
/// </summary>
|
|
/// <param name="stream">The <see cref="Stream"/> to load the data from.</param>
|
|
public TeamContainer(Stream stream)
|
|
{
|
|
Load(stream);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Initializes a new instance of the <see cref="TeamContainer"/> class, loading the data from the given file.
|
|
/// </summary>
|
|
/// <param name="fileName">The name of the file to load the data from.</param>
|
|
public TeamContainer(string fileName)
|
|
{
|
|
Load(fileName);
|
|
}
|
|
|
|
// ---- PROPERTIES ---------------------------------------------------------------------------------------------
|
|
|
|
/// <summary>
|
|
/// Gets or sets the list of <see cref="Team"/> instances stored.
|
|
/// </summary>
|
|
public List<Team> Teams { get; set; }
|
|
|
|
// ---- METHODS (PUBLIC) ---------------------------------------------------------------------------------------
|
|
|
|
/// <summary>
|
|
/// Loads the data from the given <see cref="Stream"/>.
|
|
/// </summary>
|
|
/// <param name="stream">The <see cref="Stream"/> to load the data from.</param>
|
|
public void Load(Stream stream)
|
|
{
|
|
using (BinaryDataReader reader = new BinaryDataReader(stream, Encoding.ASCII, true))
|
|
{
|
|
Teams = new List<Team>();
|
|
while (!reader.EndOfStream)
|
|
{
|
|
Teams.Add(reader.Load<Team>());
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Loads the data from the given file.
|
|
/// </summary>
|
|
/// <param name="fileName">The name of the file to load the data from.</param>
|
|
public void Load(string fileName)
|
|
{
|
|
using (FileStream stream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read))
|
|
{
|
|
Load(stream);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Saves the data into the given <paramref name="stream"/>.
|
|
/// </summary>
|
|
/// <param name="stream">The <see cref="Stream"/> to save the data to.</param>
|
|
public void Save(Stream stream)
|
|
{
|
|
using (BinaryDataWriter writer = new BinaryDataWriter(stream, Encoding.ASCII))
|
|
{
|
|
foreach (Team team in Teams)
|
|
{
|
|
team.Save(writer.BaseStream);
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Saves the data in the given file.
|
|
/// </summary>
|
|
/// <param name="fileName">The name of the file to save the data in.</param>
|
|
public void Save(string fileName)
|
|
{
|
|
using (FileStream stream = new FileStream(fileName, FileMode.Create, FileAccess.Write, FileShare.None))
|
|
{
|
|
Save(stream);
|
|
}
|
|
}
|
|
}
|
|
}
|