Custom match times

This commit is contained in:
Ken Schenke
2019-12-18 16:27:45 -06:00
parent ddc5ff6733
commit 76ca5a4dcd
8 changed files with 41 additions and 25 deletions

View File

@@ -0,0 +1,12 @@
-- +goose Up
-- +goose StatementBegin
ALTER TABLE event_settings ADD durationauto int;
ALTER TABLE event_settings ADD durationteleop int;
UPDATE event_settings SET durationauto = 15, durationteleop = 135;
-- +goose StatementEnd
-- +goose Down
-- +goose StatementBegin
ALTER TABLE event_settings DROP durationauto;
ALTER TABLE event_settings DROP durationteleop;
-- +goose StatementEnd

View File

@@ -401,7 +401,7 @@ func (arena *Arena) Update() {
case AutoPeriod:
auto = true
enabled = true
if matchTimeSec >= float64(game.MatchTiming.WarmupDurationSec+game.MatchTiming.AutoDurationSec) {
if matchTimeSec >= float64(game.MatchTiming.WarmupDurationSec+arena.EventSettings.DurationAuto) {
auto = false
sendDsPacket = true
if game.MatchTiming.PauseDurationSec > 0 {
@@ -415,7 +415,7 @@ func (arena *Arena) Update() {
case PausePeriod:
auto = false
enabled = false
if matchTimeSec >= float64(game.MatchTiming.WarmupDurationSec+game.MatchTiming.AutoDurationSec+
if matchTimeSec >= float64(game.MatchTiming.WarmupDurationSec+arena.EventSettings.DurationAuto+
game.MatchTiming.PauseDurationSec) {
arena.MatchState = TeleopPeriod
auto = false
@@ -425,8 +425,8 @@ func (arena *Arena) Update() {
case TeleopPeriod:
auto = false
enabled = true
if matchTimeSec >= float64(game.MatchTiming.WarmupDurationSec+game.MatchTiming.AutoDurationSec+
game.MatchTiming.PauseDurationSec+game.MatchTiming.TeleopDurationSec) {
if matchTimeSec >= float64(game.MatchTiming.WarmupDurationSec+arena.EventSettings.DurationAuto+
game.MatchTiming.PauseDurationSec+arena.EventSettings.DurationTeleop) {
arena.MatchState = PostMatch
auto = false
enabled = false

View File

@@ -148,6 +148,8 @@ func (arena *Arena) generateMatchTimeMessage() interface{} {
}
func (arena *Arena) generateMatchTimingMessage() interface{} {
game.MatchTiming.TeleopDurationSec = arena.EventSettings.DurationTeleop
game.MatchTiming.AutoDurationSec = arena.EventSettings.DurationAuto
return &game.MatchTiming
}

View File

@@ -223,15 +223,15 @@ func (dsConn *DriverStationConnection) encodeControlPacket(arena *Arena) [22]byt
case TimeoutActive:
fallthrough
case PostTimeout:
matchSecondsRemaining = game.MatchTiming.AutoDurationSec
matchSecondsRemaining = arena.EventSettings.DurationAuto
case StartMatch:
fallthrough
case AutoPeriod:
matchSecondsRemaining = game.MatchTiming.AutoDurationSec - int(arena.MatchTimeSec())
matchSecondsRemaining = arena.EventSettings.DurationAuto - int(arena.MatchTimeSec())
case PausePeriod:
matchSecondsRemaining = game.MatchTiming.TeleopDurationSec
matchSecondsRemaining = arena.EventSettings.DurationTeleop
case TeleopPeriod:
matchSecondsRemaining = game.MatchTiming.AutoDurationSec + game.MatchTiming.TeleopDurationSec +
matchSecondsRemaining = arena.EventSettings.DurationAuto + arena.EventSettings.DurationTeleop +
game.MatchTiming.PauseDurationSec - int(arena.MatchTimeSec())
default:
matchSecondsRemaining = 0

View File

@@ -5,26 +5,10 @@
package game
import "time"
var MatchTiming = struct {
WarmupDurationSec int
AutoDurationSec int
PauseDurationSec int
TeleopDurationSec int
TimeoutDurationSec int
}{0, 15, 0, 135, 0}
func GetAutoEndTime(matchStartTime time.Time) time.Time {
return matchStartTime.Add(time.Duration(MatchTiming.WarmupDurationSec+MatchTiming.AutoDurationSec) * time.Second)
}
func GetTeleopStartTime(matchStartTime time.Time) time.Time {
return matchStartTime.Add(time.Duration(MatchTiming.WarmupDurationSec+MatchTiming.AutoDurationSec+
MatchTiming.PauseDurationSec) * time.Second)
}
func GetMatchEndTime(matchStartTime time.Time) time.Time {
return matchStartTime.Add(time.Duration(MatchTiming.WarmupDurationSec+MatchTiming.AutoDurationSec+
MatchTiming.PauseDurationSec+MatchTiming.TeleopDurationSec) * time.Second)
}
}{0, 0, 0, 0, 0}

View File

@@ -9,6 +9,8 @@ type EventSettings struct {
Id int
Name string
NumElimAlliances int
DurationAuto int
DurationTeleop int
SelectionRound2Order string
SelectionRound3Order string
TBADownloadEnabled bool
@@ -43,6 +45,8 @@ func (database *Database) GetEventSettings() (*EventSettings, error) {
// Database record doesn't exist yet; create it now.
eventSettings.Name = "Untitled Event"
eventSettings.NumElimAlliances = 8
eventSettings.DurationAuto = 15
eventSettings.DurationTeleop = 135
eventSettings.SelectionRound2Order = "L"
eventSettings.SelectionRound3Order = ""
eventSettings.TBADownloadEnabled = true

View File

@@ -30,6 +30,18 @@
<input type="text" class="form-control" name="numElimAlliances" value="{{.NumElimAlliances}}">
</div>
</div>
<div class="form-group">
<label class="col-lg-5 control-label">Autonomous Duration (secs)</label>
<div class="col-lg-7">
<input type="text" class="form-control" name="durationAuto" value="{{.DurationAuto}}">
</div>
</div>
<div class="form-group">
<label class="col-lg-5 control-label">Teleop Duration (secs)</label>
<div class="col-lg-7">
<input type="text" class="form-control" name="durationTeleop" value="{{.DurationTeleop}}">
</div>
</div>
<div class="form-group">
<label class="col-lg-5 control-label">Round 2 Selection Order</label>
<div class="col-lg-7">

View File

@@ -48,6 +48,8 @@ func (web *Web) settingsPostHandler(w http.ResponseWriter, r *http.Request) {
}
eventSettings.NumElimAlliances = numAlliances
eventSettings.DurationAuto, _ = strconv.Atoi(r.PostFormValue("durationAuto"))
eventSettings.DurationTeleop, _ = strconv.Atoi(r.PostFormValue("durationTeleop"))
eventSettings.SelectionRound2Order = r.PostFormValue("selectionRound2Order")
eventSettings.SelectionRound3Order = r.PostFormValue("selectionRound3Order")
eventSettings.TBADownloadEnabled = r.PostFormValue("TBADownloadEnabled") == "on"