main
Raw Download raw file
 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}