Развитие гоночек

This commit is contained in:
ThomasCharester committed 2026-02-06 10:30:50 +03:00
1 parent ec60c47652
commit b54083521f
532 files changed
+16091 -28231

No files matched your search

+52
View File
@@ -0,0 +1,52 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Code.Example.Race.Track;
using Code.Infrastructure.EventBus;
namespace Code.Example.Race
{
public class RaceScores : IRacerPassedCheckpointHandler, IDisposable
{
private Dictionary<int, int> _scores = new();
private EventBus _eventBus;
public RaceScores(EventBus eventBus)
{
_eventBus = eventBus;
_eventBus.Subscribe(this);
}
public void SubscribeRacer(int racer)
{
_scores.Add(racer, 0);
}
public void ChangeScore(int racer, int additionalScore)
{
_scores[racer] += additionalScore;
_eventBus.RaiseEvent<IScoreChangedHandle>(x=> x.ScoreChanged(racer,additionalScore, GetScores()));
}
public void UnsubscribeRacer(int racer)
{
_scores.Remove(racer);
}
public List<KeyValuePair<int, int>> GetScores()
{
return _scores.OrderByDescending(x => x.Value).ToList();
}
public void OnRacerPassedCheckpoint(Racer.AI.Racer racer) => ChangeScore(racer.Id,1);
public void Dispose()
{
_eventBus.Unsubscribe(this);
}
}
public interface IScoreChangedHandle : IGlobalSubscriber
{
void ScoreChanged(int racer, int additionalScore, List<KeyValuePair<int, int>> scores);
}
}