• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

orion-ecs / keen-eye / 30134259809

24 Jul 2026 11:37PM UTC coverage: 63.876% (-0.9%) from 64.782%
30134259809

Pull #1255

github

web-flow
Merge ceba7d2f5 into 073a2682b
Pull Request #1255: feat(samples): Add NOVAFALL Phase C — floor personalities, Flashover, Adrenaline Save, modes, persistence, TestBridge

8871 of 13117 branches covered (67.63%)

Branch coverage included in aggregate %.

305 of 852 new or added lines in 23 files covered. (35.8%)

6 existing lines in 4 files now uncovered.

52559 of 83053 relevant lines covered (63.28%)

1.0 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

86.96
/samples/KeenEyes.Sample.NovaFall/Systems/ScoreSystem.cs
1
namespace KeenEyes.Sample.NovaFall;
2

3
/// <summary>
4
/// Accumulates score continuously — meters fallen multiplied by the current heat
5
/// tier's multiplier — plus flat bonuses for grazes and Floor Smashes.
6
/// </summary>
7
/// <remarks>
8
/// Score integrates per frame from the depth delta, so the multiplier active
9
/// <em>while</em> each meter is fallen is what counts — stoking heat early
10
/// compounds for the whole run. Bonuses are read from the same
11
/// <see cref="FrameEvents"/> the heat system consumes; because events are only
12
/// cleared at the start of the next frame, every consumer sees them exactly once.
13
/// </remarks>
14
public sealed class ScoreSystem : SystemBase
15
{
16
    /// <inheritdoc />
17
    public override void Update(float deltaTime)
18
    {
19
        if (World.GetSingleton<GameState>().Phase != GamePhase.Playing)
1✔
20
        {
21
            return;
×
22
        }
23

24
        ref var score = ref World.GetSingleton<ScoreState>();
1✔
25
        var depth = World.GetSingleton<ScrollState>().Depth;
1✔
26
        var tier = World.GetSingleton<HeatState>().Tier;
1✔
27
        var settings = World.GetSingleton<RunConfig>().Settings;
1✔
28
        ref readonly var events = ref World.GetSingleton<FrameEvents>();
1✔
29

30
        // In Ember Garden heat drives visuals only — the multiplier stays x1.
31
        var multiplier = settings.HeatAffectsScore ? HeatSystem.MultiplierForTier(tier) : 1;
1✔
32

33
        var metersThisFrame = depth - score.LastDepth;
1✔
34
        if (metersThisFrame > 0f)
1✔
35
        {
36
            score.Score += metersThisFrame * multiplier;
1✔
37
        }
38

39
        score.LastDepth = depth;
1✔
40

41
        // Flat event bonuses: near-misses, Floor Smashes, and the Surge Sweep.
42
        score.Score += events.Grazes * Tuning.GrazeScoreBonus;
1✔
43
        if (events.Smashed)
1✔
44
        {
45
            score.Score += Tuning.SmashScoreBonus;
×
46
        }
47

48
        if (events.SurgeSweepAwarded)
1✔
49
        {
NEW
50
            score.Score += Tuning.SurgeSweepBonus;
×
51
        }
52
    }
1✔
53
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc