refactor: TileRegistry replaces parallel tile/view collections

This commit is contained in:
2026-05-14 01:12:47 +02:00
parent 34a329ad02
commit 49c9a7904d
6 changed files with 136 additions and 85 deletions

View File

@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Core.Ports;
using UnityEngine;
using Random = System.Random;
@@ -25,7 +26,7 @@ namespace Core.Domain
public event Action OnSpawnNpc;
public event Action<PowerUpType, string> OnSpawnPowerUp;
private readonly List<Tile> _tiles;
private readonly IReadOnlyList<Tile> _tiles;
private readonly IPersistenceService _persistenceService;
private readonly Random _rng = new();
private int _playerFloorIndex = 0;
@@ -40,7 +41,7 @@ namespace Core.Domain
public int ComboMultiplier { get; private set; } = 1;
public event Action<int> OnComboUpdated;
public GameSession(List<Tile> tiles, IPersistenceService persistenceService)
public GameSession(IReadOnlyList<Tile> tiles, IPersistenceService persistenceService)
{
_tiles = tiles;
_persistenceService = persistenceService;
@@ -124,15 +125,12 @@ namespace Core.Domain
private void SpawnNextOrb()
{
var validTiles = _tiles.FindAll(t =>
var validTiles = _tiles.Where(t =>
t.CurrentState == TileState.Stable &&
t.Floor == _playerFloorIndex
);
t.Floor == _playerFloorIndex).ToList();
if (validTiles.Count == 0)
{
validTiles = _tiles.FindAll(t => t.CurrentState == TileState.Stable);
}
validTiles = _tiles.Where(t => t.CurrentState == TileState.Stable).ToList();
if (validTiles.Count == 0)
{
@@ -173,15 +171,12 @@ namespace Core.Domain
private void SpawnRandomPowerUp()
{
var validTiles = _tiles.FindAll(t =>
t.CurrentState == TileState.Stable &&
t.Floor == _playerFloorIndex
);
var validTiles = _tiles.Where(t =>
t.CurrentState == TileState.Stable &&
t.Floor == _playerFloorIndex).ToList();
if (validTiles.Count == 0)
{
validTiles = _tiles.FindAll(t => t.CurrentState == TileState.Stable);
}
validTiles = _tiles.Where(t => t.CurrentState == TileState.Stable).ToList();
if (validTiles.Count == 0) return;