Подробные изменения: - Расширен основной gameplay loop: джетпак, новые платформы, оборудование, враги, прогрессия сложности и ограничения взаимодействий игрока. - Добавлены Bootstrap-сервисы запуска приложения, защита, фокус окна, управление курсором и настройки сервисов через DI. - Добавлена COM-интеграция с технической схемой Input System, обработкой кнопок/ADC, подсветкой и консольной диагностикой. - Добавлен отдельный debug/logging модуль с каналами, обработчиками консоли и файловым выводом. - Добавлены asmdef, link.xml, EditMode/PlayMode тесты и обновлена дорожная карта проекта. Проверки: - dotnet build .\\DanroJump.Runtime.csproj --no-restore - dotnet build .\\DanroJump.Tests.EditMode.csproj --no-restore - dotnet build .\\DanroJump.Tests.PlayMode.csproj --no-restore
72 lines
2.2 KiB
C#
72 lines
2.2 KiB
C#
using System.Collections.Generic;
|
|
using DanroJump.Gameplay;
|
|
using NUnit.Framework;
|
|
using UnityEngine;
|
|
|
|
namespace DanroJump.Tests.EditMode
|
|
{
|
|
public sealed class WeightedPrefabOptionTests
|
|
{
|
|
private readonly List<GameObject> createdObjects = new();
|
|
|
|
[TearDown]
|
|
public void TearDown()
|
|
{
|
|
foreach (var createdObject in createdObjects)
|
|
{
|
|
if (createdObject != null)
|
|
{
|
|
Object.DestroyImmediate(createdObject);
|
|
}
|
|
}
|
|
|
|
createdObjects.Clear();
|
|
}
|
|
|
|
[Test]
|
|
public void TrySelect_IgnoresNullAndZeroWeightOptions()
|
|
{
|
|
var selectablePrefab = CreateGameObject("Selectable");
|
|
var options = new[]
|
|
{
|
|
TestObjectFactory.CreateWeightedPrefabOption(null, 100f),
|
|
TestObjectFactory.CreateWeightedPrefabOption(CreateGameObject("Zero"), 0f),
|
|
TestObjectFactory.CreateWeightedPrefabOption(selectablePrefab, 1f),
|
|
};
|
|
|
|
var selected = WeightedPrefabOption.TrySelect(options, new System.Random(123), out var prefab);
|
|
|
|
Assert.That(selected, Is.True);
|
|
Assert.That(prefab, Is.SameAs(selectablePrefab));
|
|
}
|
|
|
|
[Test]
|
|
public void TrySelect_RespectsPrefabFilter()
|
|
{
|
|
var blocked = CreateGameObject("Blocked");
|
|
var allowed = CreateGameObject("Allowed");
|
|
var options = new[]
|
|
{
|
|
TestObjectFactory.CreateWeightedPrefabOption(blocked, 100f),
|
|
TestObjectFactory.CreateWeightedPrefabOption(allowed, 1f),
|
|
};
|
|
|
|
var selected = WeightedPrefabOption.TrySelect(
|
|
options,
|
|
new System.Random(123),
|
|
prefab => prefab == allowed,
|
|
out var prefab);
|
|
|
|
Assert.That(selected, Is.True);
|
|
Assert.That(prefab, Is.SameAs(allowed));
|
|
}
|
|
|
|
private GameObject CreateGameObject(string name)
|
|
{
|
|
var gameObject = new GameObject(name);
|
|
createdObjects.Add(gameObject);
|
|
return gameObject;
|
|
}
|
|
}
|
|
}
|