[Fix] Code visual

This commit is contained in:
2026-02-28 19:25:26 +07:00
parent bee20fd1f8
commit e24b30743b
39 changed files with 2611 additions and 2687 deletions
+82 -83
View File
@@ -5,104 +5,103 @@ using YachtDice.Dice;
namespace YachtDice.Game
{
public sealed class DiceManager : MonoBehaviour
{
[SerializeField] private List<DiceRoller> diceRollers = new();
public event Action OnAllDiceSettled;
public event Action<int, int> OnDieSettled;
public int DiceCount => diceRollers.Count;
private bool[] locked;
private int[] currentValues;
private int pendingCount;
private void Awake()
public class DiceManager : MonoBehaviour
{
int count = diceRollers.Count;
locked = new bool[count];
currentValues = new int[count];
}
[SerializeField] private List<DiceRoller> diceRollers = new();
public bool IsLocked(int index) => locked[index];
public event Action OnAllDiceSettled;
public event Action<int, int> OnDieSettled;
public void ToggleLock(int index)
{
locked[index] = !locked[index];
}
public int DiceCount => diceRollers.Count;
public void SetLocked(int index, bool isLocked)
{
locked[index] = isLocked;
}
private bool[] locked;
private int[] currentValues;
private int pendingCount;
public void UnlockAll()
{
for (int i = 0; i < locked.Length; i++) locked[i] = false;
}
public void RollUnlocked()
{
for (int i = 0; i < diceRollers.Count; i++)
if (diceRollers[i].IsRolling) return;
pendingCount = 0;
for (int i = 0; i < diceRollers.Count; i++)
private void Awake()
{
if (locked[i]) continue;
pendingCount++;
int capturedIndex = i;
void Handler(int value)
{
diceRollers[capturedIndex].OnRollFinished -= Handler;
currentValues[capturedIndex] = value;
OnDieSettled?.Invoke(capturedIndex, value);
pendingCount--;
if (pendingCount <= 0)
OnAllDiceSettled?.Invoke();
}
diceRollers[i].OnRollFinished += Handler;
diceRollers[i].Roll();
int count = diceRollers.Count;
locked = new bool[count];
currentValues = new int[count];
}
if (pendingCount == 0)
OnAllDiceSettled?.Invoke();
}
public bool IsLocked(int index) => locked[index];
public int[] GetCurrentValues()
{
int[] copy = new int[currentValues.Length];
Array.Copy(currentValues, copy, currentValues.Length);
return copy;
}
public void ToggleLock(int index)
{
locked[index] = !locked[index];
}
public int GetValue(int index) => currentValues[index];
public void SetLocked(int index, bool isLocked)
{
locked[index] = isLocked;
}
public bool IsAnyRolling
{
get
public void UnlockAll()
{
for (int i = 0; i < locked.Length; i++) locked[i] = false;
}
public void RollUnlocked()
{
for (int i = 0; i < diceRollers.Count; i++)
if (diceRollers[i].IsRolling) return true;
return false;
}
}
if (diceRollers[i].IsRolling) return;
public void ReadAllValues()
{
for (int i = 0; i < diceRollers.Count; i++)
pendingCount = 0;
for (int i = 0; i < diceRollers.Count; i++)
{
if (locked[i]) continue;
pendingCount++;
int capturedIndex = i;
void Handler(int value)
{
diceRollers[capturedIndex].OnRollFinished -= Handler;
currentValues[capturedIndex] = value;
OnDieSettled?.Invoke(capturedIndex, value);
pendingCount--;
if (pendingCount <= 0)
OnAllDiceSettled?.Invoke();
}
diceRollers[i].OnRollFinished += Handler;
diceRollers[i].Roll();
}
if (pendingCount == 0)
OnAllDiceSettled?.Invoke();
}
public int[] GetCurrentValues()
{
var diceComponent = diceRollers[i].GetComponent<Dice>();
if (diceComponent != null && diceComponent.TryGetTopValue(out int val))
currentValues[i] = val;
int[] copy = new int[currentValues.Length];
Array.Copy(currentValues, copy, currentValues.Length);
return copy;
}
public int GetValue(int index) => currentValues[index];
public bool IsAnyRolling
{
get
{
for (int i = 0; i < diceRollers.Count; i++)
if (diceRollers[i].IsRolling) return true;
return false;
}
}
public void ReadAllValues()
{
for (int i = 0; i < diceRollers.Count; i++)
{
var diceComponent = diceRollers[i].GetComponent<Dice.Dice>();
if (diceComponent != null && diceComponent.TryGetTopValue(out int val))
currentValues[i] = val;
}
}
}
}
}