refactor: TileRegistry replaces parallel tile/view collections
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user