mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/PCK-Studio.git
synced 2026-05-30 17:06:41 +00:00
Core - Add LevelRules class
This commit is contained in:
@@ -5,6 +5,7 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using OMI.Formats.GameRule;
|
||||
using PckStudio.Core.GameRule;
|
||||
using PckStudio.Core.Interfaces;
|
||||
|
||||
namespace PckStudio.Core.DLC
|
||||
@@ -42,14 +43,7 @@ namespace PckStudio.Core.DLC
|
||||
new GameRuleFile.BoolParameter("flatworld", false),
|
||||
new GameRuleFile.IntParameter("texturePackId", Identifier)
|
||||
);
|
||||
_gameRule.AddRule("LevelRules")
|
||||
.AddRule("UpdatePlayer",
|
||||
new GameRuleFile.FloatParameter("yRot", 0f),
|
||||
new GameRuleFile.FloatParameter("xRot", 0f),
|
||||
new GameRuleFile.IntParameter("spawnX", 0),
|
||||
new GameRuleFile.IntParameter("spawnY", 0),
|
||||
new GameRuleFile.IntParameter("spawnZ", 0)
|
||||
);
|
||||
_gameRule.AddRule(LevelRules.Default);
|
||||
}
|
||||
|
||||
public IDLCPackage GetSkinPackage() => _skinPackage;
|
||||
|
||||
@@ -11,6 +11,7 @@ namespace PckStudio.Core.GameRule
|
||||
{
|
||||
private List<AbstractGameRule> _gameRules = new List<AbstractGameRule>();
|
||||
protected void AddRule(AbstractGameRule gameRule) => _gameRules.Add(gameRule);
|
||||
protected void AddRules(IEnumerable<AbstractGameRule> gameRules) => _gameRules.AddRange(gameRules);
|
||||
|
||||
protected abstract GameRuleFile.GameRule GetGameRule();
|
||||
public static implicit operator GameRuleFile.GameRule(AbstractGameRule abstractGameRule)
|
||||
|
||||
31
PckStudio.Core/GameRule/LevelRules.cs
Normal file
31
PckStudio.Core/GameRule/LevelRules.cs
Normal file
@@ -0,0 +1,31 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Numerics;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using OMI.Formats.GameRule;
|
||||
|
||||
namespace PckStudio.Core.GameRule
|
||||
{
|
||||
internal sealed class LevelRules : AbstractGameRule
|
||||
{
|
||||
private readonly GameRuleFile.GameRuleParameter[] _parameters;
|
||||
|
||||
public static LevelRules Default { get; } = new LevelRules([new UpdatePlayer(Vector3.Zero, Vector2.Zero)]);
|
||||
public static LevelRules GetLevelRules(MiniGameId miniGame) => new LevelRules(Enumerable.Empty<AbstractGameRule>(), new GameRuleFile.IntParameter("ruleType", (int)miniGame));
|
||||
|
||||
public LevelRules(IEnumerable<AbstractGameRule> gameRules, params GameRuleFile.GameRuleParameter[] parameters)
|
||||
{
|
||||
AddRules(gameRules);
|
||||
_parameters = parameters;
|
||||
}
|
||||
|
||||
protected override GameRuleFile.GameRule GetGameRule()
|
||||
{
|
||||
var gameRule = new GameRuleFile.GameRule("LevelRules");
|
||||
gameRule.AddParameters(_parameters);
|
||||
return gameRule;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -40,7 +40,7 @@ namespace PckStudio.Core
|
||||
new GameRuleFile.IntParameter("mapSize", (int)mapSize),
|
||||
new GameRuleFile.IntParameter("themeId", 0)
|
||||
);
|
||||
LevelRules = Grf.AddRule("LevelRules", [new GameRuleFile.IntParameter("ruleType", (int)miniGame)]);
|
||||
LevelRules = Grf.AddRule(GameRule.LevelRules.GetLevelRules(miniGame));
|
||||
|
||||
World = world;
|
||||
}
|
||||
|
||||
@@ -102,6 +102,7 @@
|
||||
<Compile Include="GameConstants.cs" />
|
||||
<Compile Include="GameRule\AbstractGameRule.cs" />
|
||||
<Compile Include="GameRule\DistributeItems.cs" />
|
||||
<Compile Include="GameRule\LevelRules.cs" />
|
||||
<Compile Include="GameRule\NamedArea.cs" />
|
||||
<Compile Include="GameRule\OnGameStartSpawnPositions.cs" />
|
||||
<Compile Include="GameRule\OnInitialiseWorld.cs" />
|
||||
|
||||
2
Vendor/OMI-Lib
vendored
2
Vendor/OMI-Lib
vendored
Submodule Vendor/OMI-Lib updated: cc67b280e8...87fcc15776
Reference in New Issue
Block a user