mirror of
https://github.com/Team254/cheesy-arena-lite.git
synced 2026-03-09 13:46:44 -04:00
Custom match times
This commit is contained in:
12
db/migrations/20191218083501_AddMatchTimes.sql
Normal file
12
db/migrations/20191218083501_AddMatchTimes.sql
Normal 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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user