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,
teleopdurationsec int,
warningremainingdurationsec int,
habdockingthreshold int
stage1capacity int,
stage2capacity int,
stage3capacity int
);
-- +goose Down

View File

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

View File

@@ -38,7 +38,9 @@ type EventSettings struct {
PauseDurationSec int
TeleopDurationSec int
WarningRemainingDurationSec int
HabDockingThreshold int
Stage1Capacity int
Stage2Capacity int
Stage3Capacity int
}
const eventSettingsId = 0
@@ -62,7 +64,9 @@ func (database *Database) GetEventSettings() (*EventSettings, error) {
eventSettings.PauseDurationSec = game.MatchTiming.PauseDurationSec
eventSettings.TeleopDurationSec = game.MatchTiming.TeleopDurationSec
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)
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",
SelectionRound3Order: "", TBADownloadEnabled: true, ApTeamChannel: 157, ApAdminChannel: 0,
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.NumElimAlliances = 6

View File

@@ -243,12 +243,6 @@
</fieldset>
<fieldset>
<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">
<label class="col-lg-5 control-label">Autonomous Period Duration (seconds)</label>
<div class="col-lg-7">
@@ -274,6 +268,24 @@
value="{{.WarningRemainingDurationSec}}">
</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>
<div class="form-group">
<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.TeleopDurationSec, _ = strconv.Atoi(r.PostFormValue("teleopDurationSec"))
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 {
web.renderSettings(w, r, "Cannot use same channel for both access points.")