M8: progression, items, bankarta och sparfil
All checks were successful
release / build-release (push) Successful in 1m46s
All checks were successful
release / build-release (push) Successful in 1m46s
- internal/progress: katalog (skills.json 12 noder, items.json 25 items) med validering; XP/nivåer (150·n(n+1)/2) och skillpoäng; skillträd med krav och kostnad; items per plats med buffar, genvägar (JR Pass, kartor, powerbank) och färgton; banresultat och upplåsning (huvudbanor i ordning, sidospår efter föräldern); 33 %-regeln som test - internal/save: versionerad JSON med kunskap, plånbok, debuffar, progression och pågående bana + seed; atomisk skrivning; migrering; ~/.config/metro-puzzle-jp/save.json resp. %AppData% - sim: RunOptions får Extra/FogRadius/Landmarks/FreeGates/RevealAll/ InfiniteBattery; luck påverkar trängselzonen; Fog.RevealAll och extra landmärken - game: bankarta i spelbrädesstil ersätter menyn (⟳ återupptar med sparad seed), skillträd (T), garderob (I), butik i kiosken (B), XP/nivå/items/ upplåsningar på resultatet, spelaren tonas av skins; autospar vid banstart, efter banan och vid köp; flaggor -save/-nosave - level: kind/order/parent/rewards/shop; ny sidobana 002b Kabukicho som belönar skinnet Kimono; 001 belönar Salaryman-skinnet; butikssortiment på 002/003 - tools/shots: demo-sparfil (build/, aldrig den riktiga), bilder av karta, skills, garderob och butik; alla körningar med -nosave - docs/README/wiki uppdaterade Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
@@ -9,10 +9,11 @@ const FogRadius = 3
|
||||
// Fog håller reda på vilka rutor spelaren har sett i den här omgången.
|
||||
// Minikartan ritar bara sedda rutor plus riktmärken som alltid syns.
|
||||
type Fog struct {
|
||||
w, h int
|
||||
seen []bool
|
||||
Radius int
|
||||
count int
|
||||
w, h int
|
||||
seen []bool
|
||||
Radius int
|
||||
count int
|
||||
ExtraLandmarks bool // toaletter, kiosker och automater syns alltid (skillen Lokalkännedom)
|
||||
}
|
||||
|
||||
// NewFog skapar en tom dimma för banan.
|
||||
@@ -83,7 +84,25 @@ func Landmark(l *level.Level, p level.Point) bool {
|
||||
|
||||
// Visible rapporterar om rutan ska ritas på minikartan.
|
||||
func (f *Fog) Visible(l *level.Level, p level.Point) bool {
|
||||
return f.Seen(p) || Landmark(l, p)
|
||||
if f.Seen(p) || Landmark(l, p) {
|
||||
return true
|
||||
}
|
||||
if f.ExtraLandmarks {
|
||||
switch l.At(p.X, p.Y) {
|
||||
case level.Toilet, level.Kiosk, level.TicketMachine:
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// RevealAll avslöjar hela banan (kartan köpt som item).
|
||||
func (f *Fog) RevealAll(l *level.Level) {
|
||||
for y := 0; y < l.Height(); y++ {
|
||||
for x := 0; x < l.Width(); x++ {
|
||||
f.mark(level.Point{X: x, Y: y})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Count är antalet sedda rutor (inkl. väggar).
|
||||
|
||||
Reference in New Issue
Block a user