mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/PCK-Studio.git
synced 2026-05-23 21:54:32 +00:00
38 lines
1.3 KiB
C#
38 lines
1.3 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using OMI.Formats.GameRule;
|
|
|
|
namespace PckStudio.Core.GameRule
|
|
{
|
|
public abstract class AbstractGameRule
|
|
{
|
|
private List<AbstractGameRule> _gameRules = new List<AbstractGameRule>();
|
|
public void AddRule(AbstractGameRule gameRule) => _gameRules.Add(gameRule);
|
|
public void AddRules(IEnumerable<AbstractGameRule> gameRules) => _gameRules.AddRange(gameRules);
|
|
|
|
protected abstract GameRuleFile.GameRule GetGameRule();
|
|
private GameRuleFile.GameRule InternalGetGameRule()
|
|
{
|
|
IEnumerable<GameRuleFile.GameRule> a = _gameRules.Select(agr => agr.InternalGetGameRule());
|
|
GameRuleFile.GameRule gameRule = GetGameRule();
|
|
gameRule.AddRules(a);
|
|
return gameRule;
|
|
}
|
|
|
|
public static implicit operator GameRuleFile.GameRule(AbstractGameRule abstractGameRule)
|
|
{
|
|
return abstractGameRule.InternalGetGameRule();
|
|
}
|
|
|
|
public static implicit operator GameRuleFile(AbstractGameRule abstractGameRule)
|
|
{
|
|
var grf = new GameRuleFile();
|
|
grf.AddGameRules(abstractGameRule._gameRules.Select(agr => agr.InternalGetGameRule()));
|
|
return grf;
|
|
}
|
|
}
|
|
}
|