diff --git a/field/arena.go b/field/arena.go index 586c974..05cc20c 100755 --- a/field/arena.go +++ b/field/arena.go @@ -181,7 +181,14 @@ func (arena *Arena) CreatePlayoffBracket() error { return err } if len(alliances) > 0 { - arena.PlayoffBracket, err = bracket.NewSingleEliminationBracket(len(alliances)) + switch arena.EventSettings.ElimType { + case "single": + arena.PlayoffBracket, err = bracket.NewSingleEliminationBracket(len(alliances)) + case "double": + arena.PlayoffBracket, err = bracket.NewDoubleEliminationBracket(len(alliances)) + default: + err = fmt.Errorf("Invalid playoff type: %v", arena.EventSettings.ElimType) + } if err != nil { return err } diff --git a/model/event_settings.go b/model/event_settings.go index fd82514..24bf097 100755 --- a/model/event_settings.go +++ b/model/event_settings.go @@ -10,6 +10,7 @@ import "github.com/Team254/cheesy-arena-lite/game" type EventSettings struct { Id int `db:"id"` Name string + ElimType string NumElimAlliances int SelectionRound2Order string SelectionRound3Order string @@ -52,6 +53,7 @@ func (database *Database) GetEventSettings() (*EventSettings, error) { // Database record doesn't exist yet; create it now. eventSettings := EventSettings{ Name: "Untitled Event", + ElimType: "single", NumElimAlliances: 8, SelectionRound2Order: "L", SelectionRound3Order: "", diff --git a/model/event_settings_test.go b/model/event_settings_test.go index 30ec45c..f4d393e 100644 --- a/model/event_settings_test.go +++ b/model/event_settings_test.go @@ -14,10 +14,27 @@ func TestEventSettingsReadWrite(t *testing.T) { eventSettings, err := db.GetEventSettings() assert.Nil(t, err) - assert.Equal(t, EventSettings{Id: 1, 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}, *eventSettings) + assert.Equal( + t, + EventSettings{ + Id: 1, + Name: "Untitled Event", + ElimType: "single", + NumElimAlliances: 8, + SelectionRound2Order: "L", + SelectionRound3Order: "", + TBADownloadEnabled: true, + ApTeamChannel: 157, + ApAdminChannel: 0, + ApAdminWpaKey: "1234Five", + WarmupDurationSec: 0, + AutoDurationSec: 15, + PauseDurationSec: 2, + TeleopDurationSec: 135, + WarningRemainingDurationSec: 30, + }, + *eventSettings, + ) eventSettings.Name = "Chezy Champs" eventSettings.NumElimAlliances = 6 diff --git a/templates/setup_settings.html b/templates/setup_settings.html index 6219e37..b6deb90 100755 --- a/templates/setup_settings.html +++ b/templates/setup_settings.html @@ -24,10 +24,30 @@ +