diff --git a/arena_test.go b/arena_test.go index 2d9b476..481bad9 100644 --- a/arena_test.go +++ b/arena_test.go @@ -154,7 +154,7 @@ func TestArenaMatchFlow(t *testing.T) { // Check endgame and match end. mainArena.matchStartTime = time.Now(). Add(-time.Duration(mainArena.matchTiming.AutoDurationSec+mainArena.matchTiming.PauseDurationSec+ - mainArena.matchTiming.TeleopDurationSec-mainArena.matchTiming.EndgameTimeLeftSec) * time.Second) + mainArena.matchTiming.TeleopDurationSec-mainArena.matchTiming.EndgameTimeLeftSec) * time.Second) mainArena.Update() assert.Equal(t, ENDGAME_PERIOD, mainArena.MatchState) assert.Equal(t, false, mainArena.AllianceStations["B3"].DsConn.Auto) diff --git a/db/migrations/20140524160241_CreateEventSettings.sql b/db/migrations/20140524160241_CreateEventSettings.sql index 5dfa342..7ea6355 100644 --- a/db/migrations/20140524160241_CreateEventSettings.sql +++ b/db/migrations/20140524160241_CreateEventSettings.sql @@ -8,8 +8,6 @@ CREATE TABLE event_settings ( selectionround2order VARCHAR(1), selectionround3order VARCHAR(1), teaminfodownloadenabled bool, - redgoallightsaddress VARCHAR(255), - bluegoallightsaddress VARCHAR(255), tbapublishingenabled bool, tbaeventcode VARCHAR(16), tbasecretid VARCHAR(255), @@ -23,7 +21,12 @@ CREATE TABLE event_settings ( bandwidthmonitoringenabled bool, tbadownloadenabled bool, adminpassword VARCHAR(255), - readerpassword VARCHAR(255) + readerpassword VARCHAR(255), + redgoallightsaddress VARCHAR(255), + reddefenselightsaddress VARCHAR(255), + bluegoallightsaddress VARCHAR(255), + bluedefenselightsaddress VARCHAR(255), + initialtowerstrength int ); -- +goose Down diff --git a/event_settings.go b/event_settings.go index 0f8c482..b8621cd 100644 --- a/event_settings.go +++ b/event_settings.go @@ -14,8 +14,6 @@ type EventSettings struct { SelectionRound2Order string SelectionRound3Order string TBADownloadEnabled bool - RedGoalLightsAddress string - BlueGoalLightsAddress string TbaPublishingEnabled bool TbaEventCode string TbaSecretId string @@ -29,6 +27,11 @@ type EventSettings struct { BandwidthMonitoringEnabled bool AdminPassword string ReaderPassword string + RedGoalLightsAddress string + RedDefenseLightsAddress string + BlueGoalLightsAddress string + BlueDefenseLightsAddress string + InitialTowerStrength int } const eventSettingsId = 0 @@ -45,6 +48,10 @@ func (database *Database) GetEventSettings() (*EventSettings, error) { eventSettings.SelectionRound2Order = "L" eventSettings.SelectionRound3Order = "" eventSettings.TBADownloadEnabled = true + + // Game-specific default settings. + eventSettings.InitialTowerStrength = 10 + err = database.eventSettingsMap.Insert(eventSettings) if err != nil { return nil, err diff --git a/event_settings_test.go b/event_settings_test.go index cff2b96..2ef4fb5 100644 --- a/event_settings_test.go +++ b/event_settings_test.go @@ -18,8 +18,8 @@ func TestEventSettingsReadWrite(t *testing.T) { eventSettings, err := db.GetEventSettings() assert.Nil(t, err) assert.Equal(t, EventSettings{Id: 0, Name: "Untitled Event", Code: "UE", DisplayBackgroundColor: "#00ff00", - NumElimAlliances: 8, SelectionRound2Order: "L", SelectionRound3Order: "", - TBADownloadEnabled: true}, *eventSettings) + NumElimAlliances: 8, SelectionRound2Order: "L", SelectionRound3Order: "", TBADownloadEnabled: true, + InitialTowerStrength: 10}, *eventSettings) eventSettings.Name = "Chezy Champs" eventSettings.Code = "cc" diff --git a/setup_settings.go b/setup_settings.go index bcb62c2..2175943 100644 --- a/setup_settings.go +++ b/setup_settings.go @@ -51,8 +51,6 @@ func SettingsPostHandler(w http.ResponseWriter, r *http.Request) { eventSettings.SelectionRound2Order = r.PostFormValue("selectionRound2Order") eventSettings.SelectionRound3Order = r.PostFormValue("selectionRound3Order") eventSettings.TBADownloadEnabled = r.PostFormValue("TBADownloadEnabled") == "on" - eventSettings.RedGoalLightsAddress = r.PostFormValue("redGoalLightsAddress") - eventSettings.BlueGoalLightsAddress = r.PostFormValue("blueGoalLightsAddress") eventSettings.TbaPublishingEnabled = r.PostFormValue("tbaPublishingEnabled") == "on" eventSettings.TbaEventCode = r.PostFormValue("tbaEventCode") eventSettings.TbaSecretId = r.PostFormValue("tbaSecretId") @@ -66,6 +64,18 @@ func SettingsPostHandler(w http.ResponseWriter, r *http.Request) { eventSettings.BandwidthMonitoringEnabled = r.PostFormValue("bandwidthMonitoringEnabled") == "on" eventSettings.AdminPassword = r.PostFormValue("adminPassword") eventSettings.ReaderPassword = r.PostFormValue("readerPassword") + eventSettings.RedGoalLightsAddress = r.PostFormValue("redGoalLightsAddress") + eventSettings.RedDefenseLightsAddress = r.PostFormValue("redDefenseLightsAddress") + eventSettings.BlueGoalLightsAddress = r.PostFormValue("blueGoalLightsAddress") + eventSettings.BlueDefenseLightsAddress = r.PostFormValue("blueDefenseLightsAddress") + + initialTowerStrength, _ := strconv.Atoi(r.PostFormValue("initialTowerStrength")) + if initialTowerStrength < 1 { + renderSettings(w, r, "Initial tower strength must be at least 1.") + return + } + eventSettings.InitialTowerStrength = initialTowerStrength + err := db.SaveEventSettings(eventSettings) if err != nil { handleWebErr(w, err) diff --git a/setup_settings_test.go b/setup_settings_test.go index 92dbeb5..2e2c927 100644 --- a/setup_settings_test.go +++ b/setup_settings_test.go @@ -33,7 +33,8 @@ func TestSetupSettings(t *testing.T) { // Change the settings and check the response. recorder = postHttpResponse("/setup/settings", "name=Chezy Champs&code=CC&displayBackgroundColor=#ff00ff&"+ - "numElimAlliances=16&tbaPublishingEnabled=on&tbaEventCode=2014cc&tbaSecretId=secretId&tbaSecret=tbasec") + "numElimAlliances=16&tbaPublishingEnabled=on&tbaEventCode=2014cc&tbaSecretId=secretId&tbaSecret=tbasec&"+ + "initialTowerStrength=9001") assert.Equal(t, 302, recorder.Code) recorder = getHttpResponse("/setup/settings") assert.Contains(t, recorder.Body.String(), "Chezy Champs") @@ -44,6 +45,7 @@ func TestSetupSettings(t *testing.T) { assert.Contains(t, recorder.Body.String(), "2014cc") assert.Contains(t, recorder.Body.String(), "secretId") assert.Contains(t, recorder.Body.String(), "tbasec") + assert.Contains(t, recorder.Body.String(), "9001") } func TestSetupSettingsInvalidValues(t *testing.T) { diff --git a/templates/setup_settings.html b/templates/setup_settings.html index f8a7af6..80c26c5 100644 --- a/templates/setup_settings.html +++ b/templates/setup_settings.html @@ -146,19 +146,6 @@
+ +