Make Stage 1-3 capacity configurable in settings.

This commit is contained in:
Patrick Fairbank
2020-03-20 22:29:25 -07:00
parent a9c160ad6a
commit 938145109c
6 changed files with 35 additions and 13 deletions

View File

@@ -31,7 +31,9 @@ CREATE TABLE event_settings (
pausedurationsec int, pausedurationsec int,
teleopdurationsec int, teleopdurationsec int,
warningremainingdurationsec int, warningremainingdurationsec int,
habdockingthreshold int stage1capacity int,
stage2capacity int,
stage3capacity int
); );
-- +goose Down -- +goose Down

View File

@@ -158,8 +158,9 @@ func (arena *Arena) LoadSettings() error {
game.UpdateMatchSounds() game.UpdateMatchSounds()
arena.MatchTimingNotifier.Notify() arena.MatchTimingNotifier.Notify()
// TODO(pat): Customize 2020 scoring settings here. game.StageCapacities[game.Stage1] = settings.Stage1Capacity
//game.HabDockingThreshold = settings.HabDockingThreshold game.StageCapacities[game.Stage2] = settings.Stage2Capacity
game.StageCapacities[game.Stage3] = settings.Stage3Capacity
return nil return nil
} }

View File

@@ -38,7 +38,9 @@ type EventSettings struct {
PauseDurationSec int PauseDurationSec int
TeleopDurationSec int TeleopDurationSec int
WarningRemainingDurationSec int WarningRemainingDurationSec int
HabDockingThreshold int Stage1Capacity int
Stage2Capacity int
Stage3Capacity int
} }
const eventSettingsId = 0 const eventSettingsId = 0
@@ -62,7 +64,9 @@ func (database *Database) GetEventSettings() (*EventSettings, error) {
eventSettings.PauseDurationSec = game.MatchTiming.PauseDurationSec eventSettings.PauseDurationSec = game.MatchTiming.PauseDurationSec
eventSettings.TeleopDurationSec = game.MatchTiming.TeleopDurationSec eventSettings.TeleopDurationSec = game.MatchTiming.TeleopDurationSec
eventSettings.WarningRemainingDurationSec = game.MatchTiming.WarningRemainingDurationSec eventSettings.WarningRemainingDurationSec = game.MatchTiming.WarningRemainingDurationSec
eventSettings.HabDockingThreshold = 15 eventSettings.Stage1Capacity = game.StageCapacities[game.Stage1]
eventSettings.Stage2Capacity = game.StageCapacities[game.Stage2]
eventSettings.Stage3Capacity = game.StageCapacities[game.Stage3]
err = database.eventSettingsMap.Insert(eventSettings) err = database.eventSettingsMap.Insert(eventSettings)
if err != nil { if err != nil {

View File

@@ -16,7 +16,8 @@ func TestEventSettingsReadWrite(t *testing.T) {
assert.Equal(t, EventSettings{Id: 0, Name: "Untitled Event", NumElimAlliances: 8, SelectionRound2Order: "L", assert.Equal(t, EventSettings{Id: 0, Name: "Untitled Event", NumElimAlliances: 8, SelectionRound2Order: "L",
SelectionRound3Order: "", TBADownloadEnabled: true, ApTeamChannel: 157, ApAdminChannel: 0, SelectionRound3Order: "", TBADownloadEnabled: true, ApTeamChannel: 157, ApAdminChannel: 0,
ApAdminWpaKey: "1234Five", WarmupDurationSec: 0, AutoDurationSec: 15, PauseDurationSec: 2, ApAdminWpaKey: "1234Five", WarmupDurationSec: 0, AutoDurationSec: 15, PauseDurationSec: 2,
TeleopDurationSec: 135, WarningRemainingDurationSec: 30, HabDockingThreshold: 15}, *eventSettings) TeleopDurationSec: 135, WarningRemainingDurationSec: 30, Stage1Capacity: 9, Stage2Capacity: 20,
Stage3Capacity: 20}, *eventSettings)
eventSettings.Name = "Chezy Champs" eventSettings.Name = "Chezy Champs"
eventSettings.NumElimAlliances = 6 eventSettings.NumElimAlliances = 6

View File

@@ -243,12 +243,6 @@
</fieldset> </fieldset>
<fieldset> <fieldset>
<legend>Game-Specific</legend> <legend>Game-Specific</legend>
<div class="form-group">
<label class="col-lg-5 control-label">Hab Docking RP Threshold</label>
<div class="col-lg-7">
<input type="text" class="form-control" name="habDockingThreshold" value="{{.HabDockingThreshold}}">
</div>
</div>
<div class="form-group"> <div class="form-group">
<label class="col-lg-5 control-label">Autonomous Period Duration (seconds)</label> <label class="col-lg-5 control-label">Autonomous Period Duration (seconds)</label>
<div class="col-lg-7"> <div class="col-lg-7">
@@ -274,6 +268,24 @@
value="{{.WarningRemainingDurationSec}}"> value="{{.WarningRemainingDurationSec}}">
</div> </div>
</div> </div>
<div class="form-group">
<label class="col-lg-5 control-label">Stage 1 Capacity</label>
<div class="col-lg-7">
<input type="text" class="form-control" name="stage1Capacity" value="{{.Stage1Capacity}}">
</div>
</div>
<div class="form-group">
<label class="col-lg-5 control-label">Stage 2 Capacity</label>
<div class="col-lg-7">
<input type="text" class="form-control" name="stage2Capacity" value="{{.Stage2Capacity}}">
</div>
</div>
<div class="form-group">
<label class="col-lg-5 control-label">Stage 3 Capacity</label>
<div class="col-lg-7">
<input type="text" class="form-control" name="stage3Capacity" value="{{.Stage3Capacity}}">
</div>
</div>
</fieldset> </fieldset>
<div class="form-group"> <div class="form-group">
<div class="col-lg-7 col-lg-offset-5"> <div class="col-lg-7 col-lg-offset-5">

View File

@@ -75,7 +75,9 @@ func (web *Web) settingsPostHandler(w http.ResponseWriter, r *http.Request) {
eventSettings.PauseDurationSec, _ = strconv.Atoi(r.PostFormValue("pauseDurationSec")) eventSettings.PauseDurationSec, _ = strconv.Atoi(r.PostFormValue("pauseDurationSec"))
eventSettings.TeleopDurationSec, _ = strconv.Atoi(r.PostFormValue("teleopDurationSec")) eventSettings.TeleopDurationSec, _ = strconv.Atoi(r.PostFormValue("teleopDurationSec"))
eventSettings.WarningRemainingDurationSec, _ = strconv.Atoi(r.PostFormValue("warningRemainingDurationSec")) eventSettings.WarningRemainingDurationSec, _ = strconv.Atoi(r.PostFormValue("warningRemainingDurationSec"))
eventSettings.HabDockingThreshold, _ = strconv.Atoi(r.PostFormValue("habDockingThreshold")) eventSettings.Stage1Capacity, _ = strconv.Atoi(r.PostFormValue("stage1Capacity"))
eventSettings.Stage2Capacity, _ = strconv.Atoi(r.PostFormValue("stage2Capacity"))
eventSettings.Stage3Capacity, _ = strconv.Atoi(r.PostFormValue("stage3Capacity"))
if eventSettings.Ap2TeamChannel != 0 && eventSettings.Ap2TeamChannel == eventSettings.ApTeamChannel { if eventSettings.Ap2TeamChannel != 0 && eventSettings.Ap2TeamChannel == eventSettings.ApTeamChannel {
web.renderSettings(w, r, "Cannot use same channel for both access points.") web.renderSettings(w, r, "Cannot use same channel for both access points.")