M9: navigeringslägen, linjenät och terminal
All checks were successful
release / build-release (push) Successful in 1m34s
All checks were successful
release / build-release (push) Successful in 1m34s
internal/nav med resources/data/network.json (76 stationer, 11 linjer, Yamanote som ringlinje). Tåg bedöms från lineId + terminus mot banans station/to: rätt, fel håll, för långt bort (fler än 12 stationer) eller ingen trafik; correct räknas ut för nätkopplade banor, 1-4 rätta tåg. Tågresan visar linjens riktiga stationer. Nya förlustorsaker "Fel håll" och "För långt bort". Listläge (nästa tåg nere till vänster) och skyltläge (+50 % poäng) växlas med N på bankartan och sparas; -mode. Terminalen: biljettautomaten visar linjetavlan på nätbanor. Perronger P p Q q R r. Bana 006 Ikebukuro med fyra perronger. Banorna 001-005 kopplade till nätet. Skript: waitover och pick calm; poängraden radbryts; skärmdumpar uppdaterade. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
@@ -34,23 +34,42 @@ func NewRide(seed rng.Seed, dest string, fillers []string, stops int, correctTra
|
||||
f := append([]string(nil), fillers...)
|
||||
r.shuffle(len(f), func(i, j int) { f[i], f[j] = f[j], f[i] })
|
||||
stops = max(2, stops)
|
||||
crowd = max(0, min(2, crowd))
|
||||
sec := RideStopSec(crowd)
|
||||
g := &Ride{StopSec: sec, Timer: sec, GotOff: -1, Dest: -1, Crowd: crowd}
|
||||
di := -1
|
||||
if correctTrain {
|
||||
g.Dest = 1 + r.intn(stops-1)
|
||||
di = 1 + r.intn(stops-1)
|
||||
}
|
||||
var names []string
|
||||
for i := 0; i < stops; i++ {
|
||||
switch {
|
||||
case i == g.Dest:
|
||||
g.Stops = append(g.Stops, dest)
|
||||
case i == di:
|
||||
names = append(names, dest)
|
||||
case len(f) > 0:
|
||||
g.Stops = append(g.Stops, f[0])
|
||||
names = append(names, f[0])
|
||||
f = f[1:]
|
||||
default:
|
||||
g.Stops = append(g.Stops, UnknownStop) // slut på namn: en namnlös station
|
||||
names = append(names, UnknownStop) // slut på namn: en namnlös station
|
||||
}
|
||||
}
|
||||
return newRide(r, names, di, crowd)
|
||||
}
|
||||
|
||||
// NewRideStops bygger resan av givna stationer i ordning (linjenätets
|
||||
// riktiga stationer); dest är resmålets index, -1 om det inte kommer.
|
||||
func NewRideStops(seed rng.Seed, stops []string, dest int, crowd int) *Ride {
|
||||
r := newRand(seed, "ride")
|
||||
if len(stops) < 2 {
|
||||
stops = append(append([]string(nil), stops...), UnknownStop, UnknownStop)[:2]
|
||||
}
|
||||
if dest >= len(stops) {
|
||||
dest = -1
|
||||
}
|
||||
return newRide(r, append([]string(nil), stops...), dest, crowd)
|
||||
}
|
||||
|
||||
func newRide(r *randSrc, stops []string, dest int, crowd int) *Ride {
|
||||
crowd = max(0, min(2, crowd))
|
||||
sec := RideStopSec(crowd)
|
||||
g := &Ride{StopSec: sec, Timer: sec, GotOff: -1, Dest: dest, Crowd: crowd, Stops: stops}
|
||||
g.WantsOut = make([]bool, len(g.Stops))
|
||||
chance := [...]float64{0, 0.4, 0.7}[crowd]
|
||||
for i := range g.Stops {
|
||||
|
||||
Reference in New Issue
Block a user