Skip to content

Commit

Permalink
Adding colors to overlay
Browse files Browse the repository at this point in the history
  • Loading branch information
shivas committed Sep 11, 2022
1 parent 434e2f3 commit eea1a8b
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 31 deletions.
14 changes: 7 additions & 7 deletions cmd/abyss-blackbox/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ func main() {
)
defer overlayManager.Close()

overlayManager.ChangeProperty(overlay.Status, "Recorder on standby")
overlayManager.ChangeProperty(overlay.Status, "Recorder on standby", &overlay.YellowColor)

// combatlog reader init
clr := combatlog.NewReader(currentSettings.EVEGameLogsFolder)
Expand Down Expand Up @@ -140,12 +140,12 @@ func main() {
recorder.Start(checkedChars)
}

overlayManager.ChangeProperty(overlay.Autoupload, fmt.Sprintf("Autoupload enabled: %t", armw.AutoUploadCheckbox.Checked()))
overlayManager.ChangeProperty(overlay.Autoupload, fmt.Sprintf("Autoupload enabled: %t", armw.AutoUploadCheckbox.Checked()), &overlay.CyanColor)

if currentSettings.AbyssTypeOverride {
overlayManager.ChangeProperty(overlay.Override, fmt.Sprintf("Abyss type override: %s", tierOverrideToString(currentSettings)))
overlayManager.ChangeProperty(overlay.Override, fmt.Sprintf("Abyss type override: %s", tierOverrideToString(currentSettings)), &overlay.SecondaryColor)
} else {
overlayManager.ChangeProperty(overlay.Override, "Abyss type detection: heuristics")
overlayManager.ChangeProperty(overlay.Override, "Abyss type detection: heuristics", &overlay.CyanColor)
}

_ = armw.MainWindow.Menu().Actions().At(0).SetVisible(false)
Expand All @@ -171,7 +171,7 @@ func main() {
walk.MsgBox(armw.MainWindow, "Record uploading error", uploadErr.Error(), walk.MsgBoxIconWarning)
} else {
notificationChannel <- NotificationMessage{Title: "Record uploaded successfully", Message: uploadFile}
overlayManager.ChangeProperty(overlay.TODO, "Record uploaded successfully")
overlayManager.ChangeProperty(overlay.TODO, "Record uploaded successfully", &overlay.GreenColor)
}
}(filename, char.CharacterToken)
}
Expand All @@ -185,8 +185,8 @@ func main() {
_ = armw.Toolbar.Actions().At(3).SetEnabled(true)
_ = armw.RecordingButton.SetText("Start recording")

overlayManager.ChangeProperty(overlay.Status, "Recorder on standby")
overlayManager.ChangeProperty(overlay.Weather, "")
overlayManager.ChangeProperty(overlay.Status, "Recorder on standby", &overlay.YellowColor)
overlayManager.ChangeProperty(overlay.Weather, "", nil)
}
}

Expand Down
24 changes: 12 additions & 12 deletions cmd/abyss-blackbox/recorder.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ func (r *Recorder) GetWeatherStrengthListener(strength int) func() {
defer r.mutex.Unlock()
r.weatherStrength = strength
r.notificationChannel <- NotificationMessage{Title: "Abyssal.Space recorder", Message: fmt.Sprintf("Weather strength set to: %d%%", strength)}
r.overlay.ChangeProperty(overlay.Weather, fmt.Sprintf("Weather strength set to: %d%%", strength))
r.overlay.ChangeProperty(overlay.Weather, fmt.Sprintf("Weather strength set to: %d%%", strength), &overlay.GreenColor)
}
}

Expand All @@ -108,17 +108,17 @@ func (r *Recorder) StartLoop() {
switch r.state {
case RecorderAwaitingInitialLoot:
r.notificationChannel <- NotificationMessage{Title: "Abyssal.Space recording started...", Message: "Initial cargo received, awaiting cargo after fillament activation"}
r.overlay.ChangeProperty(overlay.TODO, "Activate fillament. Record loot after!")
r.overlay.ChangeProperty(overlay.Status, "Recording...")
r.overlay.ChangeProperty(overlay.TODO, "Activate fillament. Record loot after!", &overlay.RedColor)
r.overlay.ChangeProperty(overlay.Status, "Recording...", &overlay.GreenColor)
r.state = RecorderRunning
r.lootRecords = append(r.lootRecords, &encoding.LootRecord{Frame: 0, Loot: lootSnapshot})
case RecorderRunning:
r.notificationChannel <- NotificationMessage{Title: "Abyssal.Space recorder", Message: "Loot captured from clipboard!"}
r.overlay.ChangeProperty(overlay.Status, "Recording...")
r.overlay.ChangeProperty(overlay.TODO, "Loot captured from clipboard!")
r.overlay.ChangeProperty(overlay.Status, "Recording...", &overlay.GreenColor)
r.overlay.ChangeProperty(overlay.TODO, "Loot captured from clipboard!", &overlay.YellowColor)
go func() {
time.Sleep(5 * time.Second)
r.overlay.ChangeProperty(overlay.TODO, "")
r.overlay.ChangeProperty(overlay.TODO, "", nil)
}()

lr := &encoding.LootRecord{Frame: int32(len(r.frames) - 1), Loot: lootSnapshot}
Expand All @@ -139,7 +139,7 @@ func (r *Recorder) StartLoop() {

if r.weatherStrength == 0 && (len(r.frames)%180 == 0) { // remind every 3 minutes skipping initial frame
r.notificationChannel <- NotificationMessage{"Reminder", "Please record weather strength!"}
r.overlay.ChangeProperty(overlay.Weather, "Please record weather strength!")
r.overlay.ChangeProperty(overlay.Weather, "Please record weather strength!", &overlay.SecondaryColor)
}
}
r.mutex.Unlock()
Expand Down Expand Up @@ -194,9 +194,9 @@ func (r *Recorder) Start(characters []string) {
r.weatherStrength = 0
r.state = RecorderAwaitingInitialLoot
r.notificationChannel <- NotificationMessage{Title: "Recording starting...", Message: "CTRL+A, CTRL+C your inventory"}
r.overlay.ChangeProperty(overlay.Status, "Recording starting")
r.overlay.ChangeProperty(overlay.Weather, "TODO: Record weather strength")
r.overlay.ChangeProperty(overlay.TODO, "TODO: CTRL+A, CTRL+C your inventory")
r.overlay.ChangeProperty(overlay.Status, "Recording starting", &overlay.CyanColor)
r.overlay.ChangeProperty(overlay.Weather, "TODO: Record weather strength", nil)
r.overlay.ChangeProperty(overlay.TODO, "TODO: CTRL+A, CTRL+C your inventory", nil)
}

// Stop stops recording and writes .abyss file if frames captured
Expand Down Expand Up @@ -244,8 +244,8 @@ func (r *Recorder) Stop(fm *fittings.FittingsManager) (string, error) {

defer func() {
r.notificationChannel <- NotificationMessage{Title: "Abyss recorder", Message: fmt.Sprintf("Abyss run successfully recorded to file: %s", r.recordingName)}
r.overlay.ChangeProperty(overlay.TODO, "Abyss run successfully recorded to file")
r.overlay.ChangeProperty(overlay.Status, "Recorder on standby")
r.overlay.ChangeProperty(overlay.TODO, "Abyss run successfully recorded to file", &overlay.GreenColor)
r.overlay.ChangeProperty(overlay.Status, "Recorder on standby", &overlay.YellowColor)
}()

defer func() {
Expand Down
13 changes: 7 additions & 6 deletions internal/overlay/overlay.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@ const (
)

type stateItem struct {
text string
text string
color *walk.Color
}

type overlayState struct {
Expand All @@ -64,11 +65,11 @@ func New(c *OverlayConfig, captureConfig *config.CaptureConfig) *Overlay {
captureConfig: captureConfig,
overlayState: &overlayState{
items: map[WidgetProperty]stateItem{
Status: {text: "status text"},
Status: {text: "status text", color: &YellowColor},
Weather: {text: ""},
TODO: {text: "Long text message can be here"},
Override: {text: "Manual override text"},
Autoupload: {text: "Autoupload status"},
Override: {text: "Manual override text", color: &CyanColor},
Autoupload: {text: "Autoupload status", color: &CyanColor},
},
},
}
Expand All @@ -82,10 +83,10 @@ func (o *Overlay) ToggleOverlay() {
}
}

func (o *Overlay) ChangeProperty(prop WidgetProperty, text string) {
func (o *Overlay) ChangeProperty(prop WidgetProperty, text string, color *walk.Color) {
o.overlayState.Lock()

o.overlayState.items[prop] = stateItem{text: text}
o.overlayState.items[prop] = stateItem{text: text, color: color}

o.overlayState.Unlock()

Expand Down
28 changes: 22 additions & 6 deletions internal/overlay/overlay_window.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,13 @@ import (
. "github.com/lxn/walk/declarative"
)

var PrimaryColor walk.Color = walk.RGB(194, 176, 226)
var SecondaryColor walk.Color = walk.RGB(239, 108, 0)
var GreenColor walk.Color = walk.RGB(76, 175, 80)
var YellowColor walk.Color = walk.RGB(223, 235, 37)
var CyanColor walk.Color = walk.RGB(0, 137, 123)
var RedColor walk.Color = walk.RGB(255, 47, 0)

type OverlayDialog struct {
Dialog *walk.Dialog
Widget *walk.CustomWidget
Expand Down Expand Up @@ -71,7 +78,7 @@ func (o *OverlayDialog) drawStuff(canvas *walk.Canvas, updateBounds walk.Rectang
}
defer headerFont.Dispose()

if err = canvas.DrawTextPixels("abyssal.space telemetry overlay", headerFont, o.config.Color, bounds, walk.TextWordbreak); err != nil {
if err = canvas.DrawTextPixels("abyssal.space telemetry overlay", headerFont, PrimaryColor, bounds, walk.TextWordbreak); err != nil {
return err
}

Expand All @@ -83,29 +90,38 @@ func (o *OverlayDialog) drawStuff(canvas *walk.Canvas, updateBounds walk.Rectang
}
defer font.Dispose()

if err := canvas.DrawTextPixels(o.state.items[Status].text, font, o.config.Color, bounds, walk.TextWordbreak); err != nil {
if err := canvas.DrawTextPixels(o.state.items[Status].text, font, lineColor(o.state.items[Status], o.config.Color), bounds, walk.TextWordbreak); err != nil {
return err
}

bounds.Y += o.config.FontSize + 8
if err := canvas.DrawTextPixels(o.state.items[Weather].text, font, o.config.Color, bounds, walk.TextWordbreak); err != nil {
if err := canvas.DrawTextPixels(o.state.items[Weather].text, font, lineColor(o.state.items[Weather], o.config.Color), bounds, walk.TextWordbreak); err != nil {
return err
}

bounds.Y += o.config.FontSize + 6
if err := canvas.DrawTextPixels(o.state.items[TODO].text, font, o.config.Color, bounds, walk.TextWordbreak); err != nil {
if err := canvas.DrawTextPixels(o.state.items[TODO].text, font, lineColor(o.state.items[TODO], o.config.Color), bounds, walk.TextWordbreak); err != nil {
return err
}

bounds.Y += o.config.FontSize + 10
if err := canvas.DrawTextPixels(o.state.items[Override].text, font, o.config.Color, bounds, walk.TextWordbreak); err != nil {
if err := canvas.DrawTextPixels(o.state.items[Override].text, font, lineColor(o.state.items[Override], o.config.Color), bounds, walk.TextWordbreak); err != nil {
return err
}

bounds.Y += o.config.FontSize + 6
if err := canvas.DrawTextPixels(o.state.items[Autoupload].text, font, o.config.Color, bounds, walk.TextWordbreak); err != nil {
if err := canvas.DrawTextPixels(o.state.items[Autoupload].text, font, lineColor(o.state.items[Autoupload], o.config.Color), bounds, walk.TextWordbreak); err != nil {
return err
}

return nil
}

func lineColor(s stateItem, defaultColor walk.Color) (color walk.Color) {
color = defaultColor
if s.color != nil {
color = *s.color
}

return
}

0 comments on commit eea1a8b

Please sign in to comment.