Skip to content
This repository was archived by the owner on Sep 24, 2022. It is now read-only.

Commit 81dace4

Browse files
yijia-ccYijia Chen
andauthored
Refactor power level feature (#59)
Co-authored-by: Yijia Chen <[email protected]>
1 parent 9663426 commit 81dace4

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

71 files changed

+4399
-4370
lines changed

.dockerignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
*.sketch
22
*.md
33
/build
4+
*.md

.drone.yml

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,14 @@ name: default
55
steps:
66
- name: test
77
pull: if-not-exists
8-
image: harbor.internal.teamyapp.com/internal/candy-client:latest
8+
image: harbor.internal.teamyapp.com/internal/candy-ui-test:latest
99
commands:
1010
- go mod download
11-
- go test ./...
11+
- xvfb-run go test ./...
12+
trigger:
13+
branch:
14+
- master
15+
event:
16+
- pull_request
1217
image_pull_secrets:
13-
- dockerconfig
18+
- dockerconfig

.editorconfig

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,6 @@ root = true
77
[*]
88
end_of_line = lf
99
insert_final_newline = true
10-
indent_style = space
10+
indent_style = tab
1111
indent_size = 4
1212
charset = utf-8
13-
14-
# Tab indentation (no size specified)
15-
[Makefile]
16-
indent_style = tab

Dockerfile-test

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
FROM harbor.internal.teamyapp.com/internal/candy-client
2+
3+
# Configure virtual display inside Docker for GLFW
4+
RUN apt install -y xvfb

assets/assets.go

Lines changed: 69 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -1,101 +1,101 @@
11
package assets
22

33
import (
4-
"image"
5-
_ "image/jpeg"
6-
_ "image/png"
7-
"os"
8-
"path/filepath"
9-
"strings"
4+
"image"
5+
_ "image/jpeg"
6+
_ "image/png"
7+
"os"
8+
"path/filepath"
9+
"strings"
1010

11-
"candy/audio"
11+
"candy/audio"
1212
)
1313

1414
var imageExtensions = map[string]struct{}{"jpg": {}, "png": {}}
1515
var audioExtensions = map[string]struct{}{"mp3": {}, "wav": {}}
1616

1717
type Assets struct {
18-
imageMap map[string]image.Image
19-
audioMap map[string]audio.Audio
18+
imageMap map[string]image.Image
19+
audioMap map[string]audio.Audio
2020
}
2121

2222
func (a Assets) GetImage(imageName string) image.Image {
23-
return a.imageMap[convertPath(imageName)]
23+
return a.imageMap[convertPath(imageName)]
2424
}
2525

2626
func (a Assets) GetAudio(audioName string) audio.Audio {
27-
return a.audioMap[convertPath(audioName)]
27+
return a.audioMap[convertPath(audioName)]
2828
}
2929

3030
func convertPath(path string) string {
31-
parts := strings.Split(path, "/")
32-
return filepath.Join(parts...)
31+
parts := strings.Split(path, "/")
32+
return filepath.Join(parts...)
3333
}
3434

3535
func LoadAssets(assetRootDir string) (Assets, error) {
36-
imageAssets, err := loadImages(assetRootDir)
37-
if err != nil {
38-
return Assets{}, err
39-
}
40-
audioAssets, err := loadAudios(assetRootDir)
41-
return Assets{
42-
imageMap: imageAssets,
43-
audioMap: audioAssets,
44-
}, err
36+
imageAssets, err := loadImages(assetRootDir)
37+
if err != nil {
38+
return Assets{}, err
39+
}
40+
audioAssets, err := loadAudios(assetRootDir)
41+
return Assets{
42+
imageMap: imageAssets,
43+
audioMap: audioAssets,
44+
}, err
4545
}
4646

4747
func loadAudios(assetRootDir string) (map[string]audio.Audio, error) {
48-
audioAssets := make(map[string]audio.Audio)
49-
err := lisFiles(assetRootDir, func(path string, ext string, rel string) error {
50-
if _, ok := audioExtensions[ext]; !ok {
51-
return nil
52-
}
53-
file, err := os.Open(path)
54-
if err != nil {
55-
return err
56-
}
57-
bp, err := audio.NewAudio(file, ext)
58-
if err != nil {
59-
return err
60-
}
61-
audioAssets[rel] = bp
62-
return nil
63-
})
64-
return audioAssets, err
48+
audioAssets := make(map[string]audio.Audio)
49+
err := lisFiles(assetRootDir, func(path string, ext string, rel string) error {
50+
if _, ok := audioExtensions[ext]; !ok {
51+
return nil
52+
}
53+
file, err := os.Open(path)
54+
if err != nil {
55+
return err
56+
}
57+
bp, err := audio.NewAudio(file, ext)
58+
if err != nil {
59+
return err
60+
}
61+
audioAssets[rel] = bp
62+
return nil
63+
})
64+
return audioAssets, err
6565
}
6666

6767
func loadImages(assetRootDir string) (map[string]image.Image, error) {
68-
imageAssets := make(map[string]image.Image)
69-
err := lisFiles(assetRootDir, func(path string, ext string, rel string) error {
70-
if _, ok := imageExtensions[ext]; !ok {
71-
return nil
72-
}
73-
file, err := os.Open(path)
74-
defer file.Close()
75-
if err != nil {
76-
return err
77-
}
78-
img, _, err := image.Decode(file)
79-
if err != nil {
80-
return err
81-
}
82-
imageAssets[rel] = img
83-
return nil
84-
})
85-
return imageAssets, err
68+
imageAssets := make(map[string]image.Image)
69+
err := lisFiles(assetRootDir, func(path string, ext string, rel string) error {
70+
if _, ok := imageExtensions[ext]; !ok {
71+
return nil
72+
}
73+
file, err := os.Open(path)
74+
defer file.Close()
75+
if err != nil {
76+
return err
77+
}
78+
img, _, err := image.Decode(file)
79+
if err != nil {
80+
return err
81+
}
82+
imageAssets[rel] = img
83+
return nil
84+
})
85+
return imageAssets, err
8686
}
8787

8888
func lisFiles(rootDir string, processFile func(path string, ext string, rel string) error) error {
89-
return filepath.Walk(rootDir, func(path string, info os.FileInfo, err error) error {
90-
if info.IsDir() {
91-
return nil
92-
}
93-
parts := strings.Split(info.Name(), ".")
94-
if len(parts) == 0 {
95-
return nil
96-
}
97-
ext := parts[len(parts)-1]
98-
rel, err := filepath.Rel(rootDir, path)
99-
return processFile(path, ext, rel)
100-
})
89+
return filepath.Walk(rootDir, func(path string, info os.FileInfo, err error) error {
90+
if info.IsDir() {
91+
return nil
92+
}
93+
parts := strings.Split(info.Name(), ".")
94+
if len(parts) == 0 {
95+
return nil
96+
}
97+
ext := parts[len(parts)-1]
98+
rel, err := filepath.Rel(rootDir, path)
99+
return processFile(path, ext, rel)
100+
})
101101
}

audio/audio.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
package audio
22

33
import (
4-
"os"
4+
"os"
55
)
66

77
type Audio interface {
8-
Play()
9-
Stop()
8+
Play()
9+
Stop()
1010
}
1111

1212
func NewAudio(file *os.File, extension string) (Audio, error) {
13-
return newBeep(file, extension)
13+
return newBeep(file, extension)
1414
}

audio/beep.go

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
package audio
22

33
import (
4-
"os"
5-
"time"
4+
"os"
5+
"time"
66

7-
"github.com/faiface/beep"
8-
"github.com/faiface/beep/mp3"
9-
"github.com/faiface/beep/speaker"
10-
"github.com/faiface/beep/wav"
7+
"github.com/faiface/beep"
8+
"github.com/faiface/beep/mp3"
9+
"github.com/faiface/beep/speaker"
10+
"github.com/faiface/beep/wav"
1111
)
1212

1313
const mp3Extension = "mp3"
@@ -16,39 +16,39 @@ const wavExtension = "wav"
1616
type audioDecoder = func(f *os.File) (s beep.StreamSeekCloser, format beep.Format, err error)
1717

1818
var beepDecoders = map[string]audioDecoder{
19-
mp3Extension: func(f *os.File) (s beep.StreamSeekCloser, format beep.Format, err error) {
20-
return mp3.Decode(f)
21-
},
22-
wavExtension: func(f *os.File) (s beep.StreamSeekCloser, format beep.Format, err error) {
23-
return wav.Decode(f)
24-
}}
19+
mp3Extension: func(f *os.File) (s beep.StreamSeekCloser, format beep.Format, err error) {
20+
return mp3.Decode(f)
21+
},
22+
wavExtension: func(f *os.File) (s beep.StreamSeekCloser, format beep.Format, err error) {
23+
return wav.Decode(f)
24+
}}
2525

2626
var _ Audio = (*Beep)(nil)
2727

2828
type Beep struct {
29-
streamer beep.StreamSeekCloser
30-
format beep.Format
29+
streamer beep.StreamSeekCloser
30+
format beep.Format
3131
}
3232

3333
func (b Beep) Play() {
34-
err := speaker.Init(b.format.SampleRate, b.format.SampleRate.N(time.Second/10))
35-
if err != nil {
36-
return
37-
}
38-
speaker.Play(b.streamer)
34+
err := speaker.Init(b.format.SampleRate, b.format.SampleRate.N(time.Second/10))
35+
if err != nil {
36+
return
37+
}
38+
speaker.Play(b.streamer)
3939
}
4040

4141
func (b Beep) Stop() {
42-
b.streamer.Close()
42+
b.streamer.Close()
4343
}
4444

4545
func newBeep(file *os.File, extension string) (Beep, error) {
46-
streamer, format, err := beepDecoders[extension](file)
47-
if err != nil {
48-
return Beep{}, err
49-
}
50-
return Beep{
51-
streamer: streamer,
52-
format: format,
53-
}, nil
46+
streamer, format, err := beepDecoders[extension](file)
47+
if err != nil {
48+
return Beep{}, err
49+
}
50+
return Beep{
51+
streamer: streamer,
52+
format: format,
53+
}, nil
5454
}

0 commit comments

Comments
 (0)