main
1package main
2
3import (
4 "fmt"
5 "strings"
6 "time"
7)
8
9const (
10 _nerdGold = '$'
11 _nerdStone = ''
12 _nerdLumber = ''
13 _nerdTime = ''
14)
15
16func (b *Building) Format() string {
17 if b.Upgrade == nil {
18 return fmt.Sprintf("%12s [% 2d]",
19 b.Name, b.Level)
20 }
21 if b.Status != "" {
22 return fmt.Sprintf("%12s [% 2d] .. %s %c %s",
23 b.Name, b.Level, b.Status,
24 _nerdTime, b.Upgrade.Time.String())
25 }
26 return fmt.Sprintf("%12s [% 2d] .. %c% 4d %c% 4d %c% 4d %c %s",
27 b.Name, b.Level,
28 _nerdGold, b.Upgrade.Gold,
29 _nerdStone, b.Upgrade.Stone,
30 _nerdLumber, b.Upgrade.Lumber,
31 _nerdTime, b.Upgrade.Time.String())
32}
33
34func (ic *islandClient) FormatResources() string {
35 return ic.Resources.String()
36 //return fmt.Sprintf("%c% 4d %c% 4d %c% 4d",
37 // _nerdGold, ic.Resources.Gold,
38 // _nerdStone, ic.Resources.Stone,
39 // _nerdLumber, ic.Resources.Lumber)
40}
41
42func (ic *islandClient) FormatProduction() string {
43 return ic.Production.String() + " /hour"
44 //return fmt.Sprintf("%c% 4d %c% 4d %c% 4d /hour",
45 // _nerdGold, ic.Production.Gold,
46 // _nerdStone, ic.Production.Stone,
47 // _nerdLumber, ic.Production.Lumber)
48}
49
50func (ic *islandClient) FortressUpgrading() (bool, time.Duration) {
51 for _, b := range ic.Buildings {
52 if b.Status != "" {
53 return true, b.Upgrade.Time
54 }
55 }
56 return false, 0
57}
58
59func (ic *islandClient) FormatFortressStatus() string {
60 status := "idle"
61 for _, b := range ic.Buildings {
62 if b.Status != "" {
63 status = b.Format()
64 }
65 }
66 return status
67}
68
69func (ic *islandClient) Format() string {
70 out := strings.Builder{}
71 out.WriteString("user: " + ic.User + "\n")
72 out.WriteString(fmt.Sprintf("server: %d\n", ic.Server))
73 out.WriteString(fmt.Sprintf("resources:\t %s\n", ic.FormatResources()))
74 out.WriteString(fmt.Sprintf("production:\t %s\n", ic.FormatProduction()))
75 out.WriteString("buildings:\n")
76
77 for i := 1; i <= 10; i++ {
78 if b, ok := ic.Buildings[fmt.Sprintf("b%d", i)]; ok {
79 out.WriteString("\t" + b.Format() + "\n")
80 }
81 }
82 return out.String()
83}
84
85func (ic *islandClient) Status() string {
86 return fmt.Sprintf("%s - %s", ic.FormatResources(), ic.FormatFortressStatus())
87}