Add hand-placed 12x12 icon set
This commit is contained in:
7 files changed
+1641
No files matched your search
+412
@@ -0,0 +1,412 @@
|
|||||||
|
// Package icon holds hand-placed 12×12 sprites.
|
||||||
|
package icon
|
||||||
|
|
||||||
|
import "git.zacharyzhang.com/ZacharyZhang-NY/8bitMyGoUI/pixel"
|
||||||
|
|
||||||
|
var (
|
||||||
|
Check = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
............
|
||||||
|
.........##.
|
||||||
|
........###.
|
||||||
|
.......###..
|
||||||
|
.##...###...
|
||||||
|
.###.###....
|
||||||
|
..#####.....
|
||||||
|
...###......
|
||||||
|
....#.......
|
||||||
|
............
|
||||||
|
............`)
|
||||||
|
Close = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
.##......##.
|
||||||
|
.###....###.
|
||||||
|
..###..###..
|
||||||
|
...######...
|
||||||
|
....####....
|
||||||
|
....####....
|
||||||
|
...######...
|
||||||
|
..###..###..
|
||||||
|
.###....###.
|
||||||
|
.##......##.
|
||||||
|
............`)
|
||||||
|
Plus = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
............
|
||||||
|
.....##.....
|
||||||
|
.....##.....
|
||||||
|
.....##.....
|
||||||
|
..########..
|
||||||
|
..########..
|
||||||
|
.....##.....
|
||||||
|
.....##.....
|
||||||
|
.....##.....
|
||||||
|
............
|
||||||
|
............`)
|
||||||
|
Minus = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
............
|
||||||
|
............
|
||||||
|
............
|
||||||
|
............
|
||||||
|
..########..
|
||||||
|
..########..
|
||||||
|
............
|
||||||
|
............
|
||||||
|
............
|
||||||
|
............
|
||||||
|
............`)
|
||||||
|
ArrowLeft = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
............
|
||||||
|
.....#......
|
||||||
|
....##......
|
||||||
|
...###......
|
||||||
|
..#########.
|
||||||
|
..#########.
|
||||||
|
...###......
|
||||||
|
....##......
|
||||||
|
.....#......
|
||||||
|
............
|
||||||
|
............`)
|
||||||
|
ArrowRight = ArrowLeft.Mirror()
|
||||||
|
ArrowUp = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
.....##.....
|
||||||
|
....####....
|
||||||
|
...######...
|
||||||
|
..########..
|
||||||
|
.....##.....
|
||||||
|
.....##.....
|
||||||
|
.....##.....
|
||||||
|
.....##.....
|
||||||
|
.....##.....
|
||||||
|
.....##.....
|
||||||
|
............`)
|
||||||
|
ArrowDown = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
.....##.....
|
||||||
|
.....##.....
|
||||||
|
.....##.....
|
||||||
|
.....##.....
|
||||||
|
.....##.....
|
||||||
|
.....##.....
|
||||||
|
..########..
|
||||||
|
...######...
|
||||||
|
....####....
|
||||||
|
.....##.....
|
||||||
|
............`)
|
||||||
|
ChevronLeft = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
............
|
||||||
|
......##....
|
||||||
|
.....##.....
|
||||||
|
....##......
|
||||||
|
...##.......
|
||||||
|
...##.......
|
||||||
|
....##......
|
||||||
|
.....##.....
|
||||||
|
......##....
|
||||||
|
............
|
||||||
|
............`)
|
||||||
|
ChevronRight = ChevronLeft.Mirror()
|
||||||
|
ChevronUp = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
............
|
||||||
|
............
|
||||||
|
............
|
||||||
|
.....##.....
|
||||||
|
....####....
|
||||||
|
...##..##...
|
||||||
|
..##....##..
|
||||||
|
.##......##.
|
||||||
|
............
|
||||||
|
............
|
||||||
|
............`)
|
||||||
|
ChevronDown = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
............
|
||||||
|
............
|
||||||
|
.##......##.
|
||||||
|
..##....##..
|
||||||
|
...##..##...
|
||||||
|
....####....
|
||||||
|
.....##.....
|
||||||
|
............
|
||||||
|
............
|
||||||
|
............
|
||||||
|
............`)
|
||||||
|
TriangleRight = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
...#........
|
||||||
|
...##.......
|
||||||
|
...###......
|
||||||
|
...####.....
|
||||||
|
...#####....
|
||||||
|
...#####....
|
||||||
|
...####.....
|
||||||
|
...###......
|
||||||
|
...##.......
|
||||||
|
...#........
|
||||||
|
............`)
|
||||||
|
TriangleDown = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
............
|
||||||
|
............
|
||||||
|
.##########.
|
||||||
|
..########..
|
||||||
|
...######...
|
||||||
|
....####....
|
||||||
|
.....##.....
|
||||||
|
............
|
||||||
|
............
|
||||||
|
............
|
||||||
|
............`)
|
||||||
|
Menu = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
............
|
||||||
|
.##########.
|
||||||
|
.##########.
|
||||||
|
............
|
||||||
|
.##########.
|
||||||
|
.##########.
|
||||||
|
............
|
||||||
|
.##########.
|
||||||
|
.##########.
|
||||||
|
............
|
||||||
|
............`)
|
||||||
|
More = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
............
|
||||||
|
............
|
||||||
|
............
|
||||||
|
............
|
||||||
|
.##..##..##.
|
||||||
|
.##..##..##.
|
||||||
|
............
|
||||||
|
............
|
||||||
|
............
|
||||||
|
............
|
||||||
|
............`)
|
||||||
|
Search = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
..####......
|
||||||
|
.#....#.....
|
||||||
|
#......#....
|
||||||
|
#......#....
|
||||||
|
#......#....
|
||||||
|
#......#....
|
||||||
|
.#....#.....
|
||||||
|
..######....
|
||||||
|
.......###..
|
||||||
|
........###.
|
||||||
|
.........##.`)
|
||||||
|
Settings = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
.....##.....
|
||||||
|
..#.####.#..
|
||||||
|
..########..
|
||||||
|
...##..##...
|
||||||
|
.###....###.
|
||||||
|
.###....###.
|
||||||
|
...##..##...
|
||||||
|
..########..
|
||||||
|
..#.####.#..
|
||||||
|
.....##.....
|
||||||
|
............`)
|
||||||
|
Edit = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
........##..
|
||||||
|
.......####.
|
||||||
|
......#.###.
|
||||||
|
.....#.#.#..
|
||||||
|
....#.#.#...
|
||||||
|
...#.#.#....
|
||||||
|
..#.#.#.....
|
||||||
|
.#.#.#......
|
||||||
|
.##.#.......
|
||||||
|
.###........
|
||||||
|
............`)
|
||||||
|
Trash = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
....####....
|
||||||
|
.##########.
|
||||||
|
.##########.
|
||||||
|
..#......#..
|
||||||
|
..#.#..#.#..
|
||||||
|
..#.#..#.#..
|
||||||
|
..#.#..#.#..
|
||||||
|
..#.#..#.#..
|
||||||
|
..#......#..
|
||||||
|
..########..
|
||||||
|
............`)
|
||||||
|
Copy = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
.#######....
|
||||||
|
.#.....#....
|
||||||
|
.#..#######.
|
||||||
|
.#..#.....#.
|
||||||
|
.#..#.....#.
|
||||||
|
.####.....#.
|
||||||
|
....#.....#.
|
||||||
|
....#.....#.
|
||||||
|
....#######.
|
||||||
|
............
|
||||||
|
............`)
|
||||||
|
Clipboard = pixel.MustSprite(`
|
||||||
|
....####....
|
||||||
|
.###.##.###.
|
||||||
|
.#........#.
|
||||||
|
.#.######.#.
|
||||||
|
.#........#.
|
||||||
|
.#.######.#.
|
||||||
|
.#........#.
|
||||||
|
.#.####...#.
|
||||||
|
.#........#.
|
||||||
|
.#........#.
|
||||||
|
.##########.
|
||||||
|
............`)
|
||||||
|
Save = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
.#########..
|
||||||
|
.#..####.##.
|
||||||
|
.#..####..#.
|
||||||
|
.#........#.
|
||||||
|
.##########.
|
||||||
|
.#........#.
|
||||||
|
.#.######.#.
|
||||||
|
.#.######.#.
|
||||||
|
.#........#.
|
||||||
|
.##########.
|
||||||
|
............`)
|
||||||
|
Download = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
.....##.....
|
||||||
|
.....##.....
|
||||||
|
.....##.....
|
||||||
|
..########..
|
||||||
|
...######...
|
||||||
|
....####....
|
||||||
|
.....##.....
|
||||||
|
............
|
||||||
|
.#........#.
|
||||||
|
.##########.
|
||||||
|
............`)
|
||||||
|
Upload = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
.....##.....
|
||||||
|
....####....
|
||||||
|
...######...
|
||||||
|
..########..
|
||||||
|
.....##.....
|
||||||
|
.....##.....
|
||||||
|
.....##.....
|
||||||
|
............
|
||||||
|
.#........#.
|
||||||
|
.##########.
|
||||||
|
............`)
|
||||||
|
Refresh = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
...######...
|
||||||
|
..##....##..
|
||||||
|
.##......#.#
|
||||||
|
.#........##
|
||||||
|
.#.......###
|
||||||
|
.#..........
|
||||||
|
.##.........
|
||||||
|
..##....##..
|
||||||
|
...######...
|
||||||
|
............
|
||||||
|
............`)
|
||||||
|
Link = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
.......###..
|
||||||
|
......#...#.
|
||||||
|
......#...#.
|
||||||
|
....#..#.#..
|
||||||
|
.....#.#....
|
||||||
|
....#.#.....
|
||||||
|
..#.#..#....
|
||||||
|
.#...#......
|
||||||
|
.#...#......
|
||||||
|
..###.......
|
||||||
|
............`)
|
||||||
|
Filter = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
.##########.
|
||||||
|
.##########.
|
||||||
|
..########..
|
||||||
|
...######...
|
||||||
|
....####....
|
||||||
|
....####....
|
||||||
|
....####....
|
||||||
|
....####....
|
||||||
|
....###.....
|
||||||
|
....##......
|
||||||
|
............`)
|
||||||
|
Sort = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
...#........
|
||||||
|
..###.......
|
||||||
|
.#####......
|
||||||
|
...#........
|
||||||
|
...#....#...
|
||||||
|
...#....#...
|
||||||
|
...#....#...
|
||||||
|
........#...
|
||||||
|
......#####.
|
||||||
|
.......###..
|
||||||
|
........#...`)
|
||||||
|
Send = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
.##.........
|
||||||
|
.#.##.......
|
||||||
|
.#...##.....
|
||||||
|
.#.....##...
|
||||||
|
.#.......##.
|
||||||
|
.#.....##...
|
||||||
|
.#..###.....
|
||||||
|
.#.#........
|
||||||
|
.##.........
|
||||||
|
............
|
||||||
|
............`)
|
||||||
|
Power = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
.....##.....
|
||||||
|
..#..##..#..
|
||||||
|
.##..##..##.
|
||||||
|
.#...##...#.
|
||||||
|
.#........#.
|
||||||
|
.#........#.
|
||||||
|
.#........#.
|
||||||
|
.##......##.
|
||||||
|
..########..
|
||||||
|
...######...
|
||||||
|
............`)
|
||||||
|
Grid = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
.###.###.###
|
||||||
|
.###.###.###
|
||||||
|
.###.###.###
|
||||||
|
............
|
||||||
|
.###.###.###
|
||||||
|
.###.###.###
|
||||||
|
.###.###.###
|
||||||
|
............
|
||||||
|
.###.###.###
|
||||||
|
.###.###.###
|
||||||
|
.###.###.###`)
|
||||||
|
List = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
............
|
||||||
|
.##.#######.
|
||||||
|
.##.#######.
|
||||||
|
............
|
||||||
|
.##.#######.
|
||||||
|
.##.#######.
|
||||||
|
............
|
||||||
|
.##.#######.
|
||||||
|
.##.#######.
|
||||||
|
............
|
||||||
|
............`)
|
||||||
|
)
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
package icon
|
||||||
|
|
||||||
|
import "git.zacharyzhang.com/ZacharyZhang-NY/8bitMyGoUI/pixel"
|
||||||
|
|
||||||
|
type Named struct {
|
||||||
|
Name string
|
||||||
|
Sprite *pixel.Sprite
|
||||||
|
}
|
||||||
|
|
||||||
|
// All lists every icon by name, for galleries and tests.
|
||||||
|
var All = []Named{
|
||||||
|
{"check", Check}, {"close", Close}, {"plus", Plus}, {"minus", Minus},
|
||||||
|
{"arrow-left", ArrowLeft}, {"arrow-right", ArrowRight}, {"arrow-up", ArrowUp}, {"arrow-down", ArrowDown},
|
||||||
|
{"chevron-left", ChevronLeft}, {"chevron-right", ChevronRight}, {"chevron-up", ChevronUp}, {"chevron-down", ChevronDown},
|
||||||
|
{"triangle-right", TriangleRight}, {"triangle-down", TriangleDown}, {"menu", Menu}, {"more", More},
|
||||||
|
{"search", Search}, {"settings", Settings}, {"edit", Edit}, {"trash", Trash},
|
||||||
|
{"copy", Copy}, {"clipboard", Clipboard}, {"save", Save}, {"download", Download},
|
||||||
|
{"upload", Upload}, {"refresh", Refresh}, {"link", Link}, {"filter", Filter},
|
||||||
|
{"sort", Sort}, {"send", Send}, {"power", Power}, {"grid", Grid}, {"list", List},
|
||||||
|
{"home", Home}, {"user", User}, {"users", Users}, {"bell", Bell},
|
||||||
|
{"mail", Mail}, {"mail-open", MailOpen}, {"chat", Chat}, {"folder", Folder},
|
||||||
|
{"folder-open", FolderOpen}, {"file", File}, {"file-text", FileText}, {"image", Image},
|
||||||
|
{"music", Music}, {"video", Video}, {"code", Code}, {"terminal", Terminal},
|
||||||
|
{"bug", Bug}, {"lock", Lock}, {"unlock", Unlock}, {"key", Key},
|
||||||
|
{"eye", Eye}, {"eye-off", EyeOff}, {"calendar", Calendar}, {"clock", Clock},
|
||||||
|
{"hourglass", Hourglass}, {"camera", Camera}, {"mic", Mic}, {"phone", Phone},
|
||||||
|
{"map", Map}, {"flag", Flag}, {"pin", Pin}, {"globe", Globe},
|
||||||
|
{"book", Book}, {"cart", Cart}, {"tag", Tag}, {"gift", Gift},
|
||||||
|
{"robot", Robot}, {"branch", Branch}, {"wifi", Wifi}, {"battery", Battery}, {"gamepad", Gamepad},
|
||||||
|
{"info", Info}, {"warning", Warning}, {"error", Error}, {"question", Question},
|
||||||
|
{"heart", Heart}, {"heart-empty", HeartEmpty}, {"star", Star}, {"star-empty", StarEmpty},
|
||||||
|
{"sparkle", Sparkle}, {"volume", Volume}, {"mute", Mute}, {"play", Play},
|
||||||
|
{"pause", Pause}, {"stop", Stop}, {"next", Next}, {"prev", Prev},
|
||||||
|
{"coin", Coin}, {"gem", Gem}, {"potion", Potion}, {"sword", Sword},
|
||||||
|
{"shield", Shield}, {"chest", Chest}, {"crown", Crown}, {"trophy", Trophy},
|
||||||
|
{"skull", Skull}, {"scroll", Scroll}, {"flame", Flame}, {"drop", Drop},
|
||||||
|
{"leaf", Leaf}, {"flower", Flower}, {"sun", Sun}, {"moon", Moon},
|
||||||
|
{"cloud", Cloud}, {"snowflake", Snowflake}, {"bolt", Bolt}, {"palette", Palette},
|
||||||
|
}
|
||||||
@@ -0,0 +1,176 @@
|
|||||||
|
package icon_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"go/ast"
|
||||||
|
"go/parser"
|
||||||
|
"go/token"
|
||||||
|
"path/filepath"
|
||||||
|
"regexp"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/egoist/mygo/ui"
|
||||||
|
|
||||||
|
"git.zacharyzhang.com/ZacharyZhang-NY/8bitMyGoUI/icon"
|
||||||
|
"git.zacharyzhang.com/ZacharyZhang-NY/8bitMyGoUI/pixel"
|
||||||
|
)
|
||||||
|
|
||||||
|
type decl struct {
|
||||||
|
file string
|
||||||
|
expr ast.Expr
|
||||||
|
}
|
||||||
|
|
||||||
|
var upper = regexp.MustCompile(`([a-z])([A-Z])`)
|
||||||
|
|
||||||
|
func kebab(s string) string { return strings.ToLower(upper.ReplaceAllString(s, "$1-$2")) }
|
||||||
|
|
||||||
|
// decls maps each icon's kebab name to its source.
|
||||||
|
func decls(t *testing.T) map[string]decl {
|
||||||
|
files, _ := filepath.Glob("*.go")
|
||||||
|
out := map[string]decl{}
|
||||||
|
for _, f := range files {
|
||||||
|
if strings.HasSuffix(f, "_test.go") || f == "icon.go" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
file, err := parser.ParseFile(token.NewFileSet(), f, nil, 0)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
for _, d := range file.Decls {
|
||||||
|
if g, ok := d.(*ast.GenDecl); ok && g.Tok == token.VAR {
|
||||||
|
for _, sp := range g.Specs {
|
||||||
|
v := sp.(*ast.ValueSpec)
|
||||||
|
for i, n := range v.Names {
|
||||||
|
out[kebab(n.Name)] = decl{f, v.Values[i]}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// build rebuilds an icon from its declared art.
|
||||||
|
func build(t *testing.T, ds map[string]decl, name string) *pixel.Sprite {
|
||||||
|
call, ok := ds[name].expr.(*ast.CallExpr)
|
||||||
|
if !ok {
|
||||||
|
t.Fatalf("%s is not a sprite call", name)
|
||||||
|
}
|
||||||
|
sel := call.Fun.(*ast.SelectorExpr)
|
||||||
|
switch sel.Sel.Name {
|
||||||
|
case "MustSprite":
|
||||||
|
art, err := strconv.Unquote(call.Args[0].(*ast.BasicLit).Value)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
return pixel.MustSprite(art)
|
||||||
|
case "Mirror":
|
||||||
|
return build(t, ds, kebab(sel.X.(*ast.Ident).Name)).Mirror()
|
||||||
|
}
|
||||||
|
t.Fatalf("%s built by %s", name, sel.Sel.Name)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func render(sp *pixel.Sprite, ink pixel.Slot) []byte {
|
||||||
|
return ui.Render(func(c *ui.Context) {
|
||||||
|
pixel.Use(c, pixel.Settings{Palette: pixel.SummerDay, Dot: 1})
|
||||||
|
pixel.Icon(c, sp, pixel.IconOptions{Slot: ink})
|
||||||
|
}, 12, 12, 1).Pix
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestEveryIconIsListedWithItsArt(t *testing.T) {
|
||||||
|
ds := decls(t)
|
||||||
|
listed := map[string]bool{}
|
||||||
|
for _, n := range icon.All {
|
||||||
|
if listed[n.Name] {
|
||||||
|
t.Errorf("icon %q listed twice", n.Name)
|
||||||
|
}
|
||||||
|
listed[n.Name] = true
|
||||||
|
if _, ok := ds[n.Name]; !ok {
|
||||||
|
t.Fatalf("listed icon %q has no declaration", n.Name)
|
||||||
|
}
|
||||||
|
if string(render(n.Sprite, pixel.Magic)) != string(render(build(t, ds, n.Name), pixel.Magic)) {
|
||||||
|
t.Errorf("icon %q is bound to another icon's art", n.Name)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for name := range ds {
|
||||||
|
if !listed[name] {
|
||||||
|
t.Errorf("icon %q missing from All", name)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if len(icon.All) < 100 {
|
||||||
|
t.Fatalf("%d icons, want at least 100", len(icon.All))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestOneBitIconsTakeTheInk(t *testing.T) {
|
||||||
|
ds := decls(t)
|
||||||
|
back, ink := pixel.SummerDay.C(pixel.Back), pixel.SummerDay.C(pixel.Magic)
|
||||||
|
for _, n := range icon.All {
|
||||||
|
if ds[n.Name].file == "items.go" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
pix, drawn := render(n.Sprite, pixel.Magic), 0
|
||||||
|
for i := 0; i < len(pix); i += 4 {
|
||||||
|
switch {
|
||||||
|
case pix[i] == back.R && pix[i+1] == back.G && pix[i+2] == back.B:
|
||||||
|
case pix[i] == ink.R && pix[i+1] == ink.G && pix[i+2] == ink.B:
|
||||||
|
drawn++
|
||||||
|
default:
|
||||||
|
t.Fatalf("%s draws a color other than the ink", n.Name)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if drawn == 0 {
|
||||||
|
t.Fatalf("%s draws nothing in the ink", n.Name)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestIconsAreDistinctTwelveByTwelve(t *testing.T) {
|
||||||
|
seen := map[string]string{}
|
||||||
|
for _, n := range icon.All {
|
||||||
|
if n.Sprite.W != 12 || n.Sprite.H != 12 || n.Sprite.Frames() != 1 {
|
||||||
|
t.Fatalf("%s is %d×%d with %d frames", n.Name, n.Sprite.W, n.Sprite.H, n.Sprite.Frames())
|
||||||
|
}
|
||||||
|
pix, back, drawn := render(n.Sprite, pixel.Ink), pixel.SummerDay.C(pixel.Back), 0
|
||||||
|
for i := 0; i < len(pix); i += 4 {
|
||||||
|
if pix[i] != back.R || pix[i+1] != back.G || pix[i+2] != back.B {
|
||||||
|
drawn++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if drawn == 0 {
|
||||||
|
t.Fatalf("%s draws nothing", n.Name)
|
||||||
|
}
|
||||||
|
key := string(pix)
|
||||||
|
if other, ok := seen[key]; ok {
|
||||||
|
t.Fatalf("%s and %s are the same picture", n.Name, other)
|
||||||
|
}
|
||||||
|
seen[key] = n.Name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestItemsAreOutlined(t *testing.T) {
|
||||||
|
for name, d := range decls(t) {
|
||||||
|
if d.file != "items.go" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
art, _ := strconv.Unquote(d.expr.(*ast.CallExpr).Args[0].(*ast.BasicLit).Value)
|
||||||
|
var rows []string
|
||||||
|
for _, r := range strings.Split(strings.TrimSpace(art), "\n") {
|
||||||
|
rows = append(rows, strings.TrimSpace(r))
|
||||||
|
}
|
||||||
|
for y, row := range rows {
|
||||||
|
for x := range len(row) {
|
||||||
|
if strings.IndexByte(".e#", row[x]) >= 0 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
for _, n := range [][2]int{{x + 1, y}, {x - 1, y}, {x, y + 1}, {x, y - 1}} {
|
||||||
|
if n[0] < 0 || n[1] < 0 || n[0] >= len(row) || n[1] >= len(rows) || rows[n[1]][n[0]] == '.' {
|
||||||
|
t.Fatalf("%s: dot %d,%d touches the outside without an Edge outline", name, x, y)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+267
@@ -0,0 +1,267 @@
|
|||||||
|
package icon
|
||||||
|
|
||||||
|
import "git.zacharyzhang.com/ZacharyZhang-NY/8bitMyGoUI/pixel"
|
||||||
|
|
||||||
|
// Items keep their own colors; '#' still takes the ink.
|
||||||
|
var (
|
||||||
|
Coin = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
...eeeeee...
|
||||||
|
..eyyyyyye..
|
||||||
|
.eyllyyyyye.
|
||||||
|
.eylyyeyyye.
|
||||||
|
.eylyyeyyse.
|
||||||
|
.eyyyyeyyse.
|
||||||
|
.eyyyyeyyse.
|
||||||
|
.eyyyyyyyse.
|
||||||
|
..essssssse.
|
||||||
|
...eeeeeee..
|
||||||
|
............`)
|
||||||
|
Gem = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
....eeee....
|
||||||
|
...elllcee..
|
||||||
|
..elcccccse.
|
||||||
|
.eeeeeeeeee.
|
||||||
|
.elcccccsse.
|
||||||
|
..elcccsse..
|
||||||
|
...elcsse...
|
||||||
|
....else....
|
||||||
|
.....ee.....
|
||||||
|
............
|
||||||
|
............`)
|
||||||
|
Potion = pixel.MustSprite(`
|
||||||
|
....eeee....
|
||||||
|
....eeee....
|
||||||
|
....elne....
|
||||||
|
....elne....
|
||||||
|
...ellnne...
|
||||||
|
..elrrrrre..
|
||||||
|
.elrrrrrrre.
|
||||||
|
.elrrrrrrre.
|
||||||
|
.errrrrrrse.
|
||||||
|
.errrrrrsse.
|
||||||
|
..essssssse.
|
||||||
|
...eeeeeee..`)
|
||||||
|
Sword = pixel.MustSprite(`
|
||||||
|
.........eee
|
||||||
|
........elle
|
||||||
|
.......elle.
|
||||||
|
......elle..
|
||||||
|
.....elle...
|
||||||
|
.ee.elle....
|
||||||
|
.eyelle.....
|
||||||
|
..eyle......
|
||||||
|
..eyye......
|
||||||
|
.eyeeye.....
|
||||||
|
eye..e......
|
||||||
|
ee..........`)
|
||||||
|
Shield = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
.eeeeeeeeee.
|
||||||
|
.elllaaaase.
|
||||||
|
.ellaaaaase.
|
||||||
|
.elaaaaaase.
|
||||||
|
.elaaaaaase.
|
||||||
|
.elaaaaaase.
|
||||||
|
..elaaaase..
|
||||||
|
..elaaaase..
|
||||||
|
...elaase...
|
||||||
|
....esse....
|
||||||
|
.....ee.....`)
|
||||||
|
Chest = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
..eeeeeeee..
|
||||||
|
.esslsslsse.
|
||||||
|
.esssssssse.
|
||||||
|
.eeeeyyeeee.
|
||||||
|
.essseyesse.
|
||||||
|
.essseeesse.
|
||||||
|
.esssssssse.
|
||||||
|
.esssssssse.
|
||||||
|
.eeeeeeeeee.
|
||||||
|
............
|
||||||
|
............`)
|
||||||
|
Crown = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
............
|
||||||
|
.e...ee...e.
|
||||||
|
.ee..ee..ee.
|
||||||
|
.eye.ee.eye.
|
||||||
|
.eyyeyyeyye.
|
||||||
|
.eyyyyyyyye.
|
||||||
|
.eylyryylye.
|
||||||
|
.eyyyyyyyye.
|
||||||
|
.essssssse.e
|
||||||
|
..eeeeeeee..
|
||||||
|
............`)
|
||||||
|
Trophy = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
.eeeeeeeeee.
|
||||||
|
eyelyyyyyeye
|
||||||
|
eyelyyyyyeee
|
||||||
|
.eelyyyyyee.
|
||||||
|
..elyyyyse..
|
||||||
|
...eyyyse...
|
||||||
|
....eyye....
|
||||||
|
.....ee.....
|
||||||
|
....eyyee...
|
||||||
|
..eesssssee.
|
||||||
|
..eeeeeeee..`)
|
||||||
|
Skull = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
...eeeeeee..
|
||||||
|
..ellllllse.
|
||||||
|
.elllllllse.
|
||||||
|
.ellkklkkse.
|
||||||
|
.ellkklkkse.
|
||||||
|
.elllllllse.
|
||||||
|
..elleelse..
|
||||||
|
...elllse...
|
||||||
|
...eleeee...
|
||||||
|
....eeee....
|
||||||
|
............`)
|
||||||
|
Scroll = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
.eeeeeeeeee.
|
||||||
|
elllllllllle
|
||||||
|
.eeeeeeeeeee
|
||||||
|
.elllllllle.
|
||||||
|
.elseeeslle.
|
||||||
|
.elllllllle.
|
||||||
|
.elseeeelle.
|
||||||
|
.elllllllle.
|
||||||
|
.eeeeeeeeeee
|
||||||
|
elllllllllle
|
||||||
|
.eeeeeeeeee.`)
|
||||||
|
Flame = pixel.MustSprite(`
|
||||||
|
.....e......
|
||||||
|
....ere.....
|
||||||
|
....erre....
|
||||||
|
...erryre...
|
||||||
|
..erryyyre..
|
||||||
|
..eryyyyre..
|
||||||
|
.erryylyyre.
|
||||||
|
.eryylllyre.
|
||||||
|
.eryylllyre.
|
||||||
|
..eryylyre..
|
||||||
|
...eeeeee...
|
||||||
|
............`)
|
||||||
|
Drop = pixel.MustSprite(`
|
||||||
|
.....ee.....
|
||||||
|
.....ee.....
|
||||||
|
....ecce....
|
||||||
|
....ecce....
|
||||||
|
...elcccee..
|
||||||
|
..elcccccse.
|
||||||
|
..elcccccse.
|
||||||
|
..eccccccse.
|
||||||
|
..ecccccsse.
|
||||||
|
...essssse..
|
||||||
|
....eeeee...
|
||||||
|
............`)
|
||||||
|
Leaf = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
.......eeee.
|
||||||
|
.....eegggge
|
||||||
|
....egglggge
|
||||||
|
...egglgggse
|
||||||
|
..egglgggse.
|
||||||
|
..eglgggse..
|
||||||
|
.eglgggse...
|
||||||
|
.eggggsee...
|
||||||
|
.eeeeee.....
|
||||||
|
.e..........
|
||||||
|
e...........`)
|
||||||
|
Flower = pixel.MustSprite(`
|
||||||
|
.....ee.....
|
||||||
|
....emme....
|
||||||
|
..eemmmmee..
|
||||||
|
.emmeeeemme.
|
||||||
|
emmmeyyemmme
|
||||||
|
emmmeyyemmme
|
||||||
|
.emmeeeemme.
|
||||||
|
..eemmmmee..
|
||||||
|
....emme....
|
||||||
|
....ege.....
|
||||||
|
....egge....
|
||||||
|
....eee.....`)
|
||||||
|
Sun = pixel.MustSprite(`
|
||||||
|
.....ee.....
|
||||||
|
.e...ee...e.
|
||||||
|
..e......e..
|
||||||
|
....eeee....
|
||||||
|
...eyyyye...
|
||||||
|
eeeyylyyyeee
|
||||||
|
eeeylyyyyeee
|
||||||
|
...eyyyye...
|
||||||
|
....eeee....
|
||||||
|
..e......e..
|
||||||
|
.e...ee...e.
|
||||||
|
.....ee.....`)
|
||||||
|
Moon = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
....eeee....
|
||||||
|
...eyyye....
|
||||||
|
..eyyee.....
|
||||||
|
.eyye.......
|
||||||
|
.eyye.......
|
||||||
|
.eyye.......
|
||||||
|
.eyyye......
|
||||||
|
..eyyyeeee..
|
||||||
|
...eyyyyye..
|
||||||
|
....eeeee...
|
||||||
|
............`)
|
||||||
|
Cloud = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
............
|
||||||
|
....eeee....
|
||||||
|
...elllle...
|
||||||
|
.eeellllee..
|
||||||
|
ellllllllle.
|
||||||
|
elllllllllse
|
||||||
|
ellllllllsse
|
||||||
|
.esssssssse.
|
||||||
|
..eeeeeeee..
|
||||||
|
............
|
||||||
|
............`)
|
||||||
|
Snowflake = pixel.MustSprite(`
|
||||||
|
.....ee.....
|
||||||
|
..e.ecce.e..
|
||||||
|
.eceecceece.
|
||||||
|
..ececcece..
|
||||||
|
.eeecccceee.
|
||||||
|
ecccclccccce
|
||||||
|
eccccclcccce
|
||||||
|
.eeecccceee.
|
||||||
|
..ececcece..
|
||||||
|
.eceecceece.
|
||||||
|
..e.ecce.e..
|
||||||
|
.....ee.....`)
|
||||||
|
Bolt = pixel.MustSprite(`
|
||||||
|
......eeee..
|
||||||
|
.....eyyye..
|
||||||
|
....eyyye...
|
||||||
|
...eyyye....
|
||||||
|
..eyyyyeeee.
|
||||||
|
..eeeyyyyye.
|
||||||
|
....eyyyye..
|
||||||
|
...eyyyee...
|
||||||
|
..eyyee.....
|
||||||
|
..eye.......
|
||||||
|
.eee........
|
||||||
|
............`)
|
||||||
|
Palette = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
...eeeeee...
|
||||||
|
..elllllle..
|
||||||
|
.elreleglle.
|
||||||
|
.ellllllclle
|
||||||
|
.elmelleelle
|
||||||
|
.ellllleeele
|
||||||
|
.ellyelle.e.
|
||||||
|
..elllle....
|
||||||
|
...eeee.....
|
||||||
|
............
|
||||||
|
............`)
|
||||||
|
)
|
||||||
+292
@@ -0,0 +1,292 @@
|
|||||||
|
package icon
|
||||||
|
|
||||||
|
import "git.zacharyzhang.com/ZacharyZhang-NY/8bitMyGoUI/pixel"
|
||||||
|
|
||||||
|
var (
|
||||||
|
Home = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
.....##.....
|
||||||
|
....####....
|
||||||
|
...##..##...
|
||||||
|
..##....##..
|
||||||
|
.##......##.
|
||||||
|
..#......#..
|
||||||
|
..#.###..#..
|
||||||
|
..#.#.#..#..
|
||||||
|
..#.#.#..#..
|
||||||
|
..########..
|
||||||
|
............`)
|
||||||
|
User = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
....####....
|
||||||
|
...######...
|
||||||
|
...######...
|
||||||
|
...######...
|
||||||
|
....####....
|
||||||
|
............
|
||||||
|
..########..
|
||||||
|
.##########.
|
||||||
|
.##########.
|
||||||
|
.##########.
|
||||||
|
............`)
|
||||||
|
Users = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
.......###..
|
||||||
|
..###.#####.
|
||||||
|
.#####.###..
|
||||||
|
.#####......
|
||||||
|
..###.#####.
|
||||||
|
.....#######
|
||||||
|
.#####......
|
||||||
|
#######.....
|
||||||
|
#######.....
|
||||||
|
............
|
||||||
|
............`)
|
||||||
|
Bell = pixel.MustSprite(`
|
||||||
|
.....##.....
|
||||||
|
....####....
|
||||||
|
...#....#...
|
||||||
|
..#......#..
|
||||||
|
..#......#..
|
||||||
|
..#......#..
|
||||||
|
..#......#..
|
||||||
|
.#........#.
|
||||||
|
.##########.
|
||||||
|
............
|
||||||
|
....####....
|
||||||
|
.....##.....`)
|
||||||
|
Mail = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
............
|
||||||
|
.##########.
|
||||||
|
.##......##.
|
||||||
|
.#.#....#.#.
|
||||||
|
.#..#..#..#.
|
||||||
|
.#...##...#.
|
||||||
|
.#........#.
|
||||||
|
.#........#.
|
||||||
|
.##########.
|
||||||
|
............
|
||||||
|
............`)
|
||||||
|
MailOpen = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
.....##.....
|
||||||
|
...##..##...
|
||||||
|
.##......##.
|
||||||
|
.##......##.
|
||||||
|
.#.#....#.#.
|
||||||
|
.#..#..#..#.
|
||||||
|
.#...##...#.
|
||||||
|
.#........#.
|
||||||
|
.##########.
|
||||||
|
............
|
||||||
|
............`)
|
||||||
|
Chat = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
.##########.
|
||||||
|
.#........#.
|
||||||
|
.#.######.#.
|
||||||
|
.#........#.
|
||||||
|
.#.####...#.
|
||||||
|
.#........#.
|
||||||
|
.####.#####.
|
||||||
|
....###.....
|
||||||
|
....##......
|
||||||
|
....#.......
|
||||||
|
............`)
|
||||||
|
Folder = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
............
|
||||||
|
.####.......
|
||||||
|
.#..#######.
|
||||||
|
.##########.
|
||||||
|
.#........#.
|
||||||
|
.#........#.
|
||||||
|
.#........#.
|
||||||
|
.#........#.
|
||||||
|
.##########.
|
||||||
|
............
|
||||||
|
............`)
|
||||||
|
FolderOpen = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
............
|
||||||
|
.####.......
|
||||||
|
.#..#####...
|
||||||
|
.#......#...
|
||||||
|
.#.#########
|
||||||
|
.#.#.......#
|
||||||
|
.##.......#.
|
||||||
|
.##......#..
|
||||||
|
.#########..
|
||||||
|
............
|
||||||
|
............`)
|
||||||
|
File = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
..######....
|
||||||
|
..#....##...
|
||||||
|
..#....#.#..
|
||||||
|
..#....####.
|
||||||
|
..#.......#.
|
||||||
|
..#.......#.
|
||||||
|
..#.......#.
|
||||||
|
..#.......#.
|
||||||
|
..#.......#.
|
||||||
|
..#########.
|
||||||
|
............`)
|
||||||
|
FileText = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
..######....
|
||||||
|
..#....##...
|
||||||
|
..#....#.#..
|
||||||
|
..#....####.
|
||||||
|
..#.#####.#.
|
||||||
|
..#.......#.
|
||||||
|
..#.#####.#.
|
||||||
|
..#.......#.
|
||||||
|
..#.###...#.
|
||||||
|
..#########.
|
||||||
|
............`)
|
||||||
|
Image = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
.##########.
|
||||||
|
.#........#.
|
||||||
|
.#.##.....#.
|
||||||
|
.#.##.....#.
|
||||||
|
.#.....#..#.
|
||||||
|
.#....###.#.
|
||||||
|
.#.#.#####.#
|
||||||
|
.#######.#.#
|
||||||
|
.#........#.
|
||||||
|
.##########.
|
||||||
|
............`)
|
||||||
|
Music = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
....#######.
|
||||||
|
....#.....#.
|
||||||
|
....#######.
|
||||||
|
....#.....#.
|
||||||
|
....#.....#.
|
||||||
|
....#.....#.
|
||||||
|
..###...###.
|
||||||
|
.####..####.
|
||||||
|
.####..####.
|
||||||
|
..##....##..
|
||||||
|
............`)
|
||||||
|
Video = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
............
|
||||||
|
.#######....
|
||||||
|
.#.....#..#.
|
||||||
|
.#.....#.##.
|
||||||
|
.#.....####.
|
||||||
|
.#.....####.
|
||||||
|
.#.....#.##.
|
||||||
|
.#.....#..#.
|
||||||
|
.#######....
|
||||||
|
............
|
||||||
|
............`)
|
||||||
|
Code = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
............
|
||||||
|
...#....#...
|
||||||
|
..##....##..
|
||||||
|
.##..#...##.
|
||||||
|
##...#....##
|
||||||
|
##..#.....##
|
||||||
|
.##.#....##.
|
||||||
|
..##....##..
|
||||||
|
...#....#...
|
||||||
|
............
|
||||||
|
............`)
|
||||||
|
Terminal = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
.##########.
|
||||||
|
.#........#.
|
||||||
|
.#.#......#.
|
||||||
|
.#..#.....#.
|
||||||
|
.#...#....#.
|
||||||
|
.#..#.....#.
|
||||||
|
.#.#..###.#.
|
||||||
|
.#........#.
|
||||||
|
.##########.
|
||||||
|
............
|
||||||
|
............`)
|
||||||
|
Bug = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
..#......#..
|
||||||
|
...#.##.#...
|
||||||
|
....####....
|
||||||
|
.#.######.#.
|
||||||
|
..########..
|
||||||
|
.####..####.
|
||||||
|
..########..
|
||||||
|
.#.######.#.
|
||||||
|
...######...
|
||||||
|
..#..##..#..
|
||||||
|
............`)
|
||||||
|
Lock = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
....####....
|
||||||
|
...#....#...
|
||||||
|
...#....#...
|
||||||
|
...#....#...
|
||||||
|
..########..
|
||||||
|
..########..
|
||||||
|
..###..###..
|
||||||
|
..###..###..
|
||||||
|
..########..
|
||||||
|
..########..
|
||||||
|
............`)
|
||||||
|
Unlock = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
....####....
|
||||||
|
...#....#...
|
||||||
|
...#........
|
||||||
|
...#........
|
||||||
|
..########..
|
||||||
|
..########..
|
||||||
|
..###..###..
|
||||||
|
..###..###..
|
||||||
|
..########..
|
||||||
|
..########..
|
||||||
|
............`)
|
||||||
|
Key = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
..####......
|
||||||
|
.#....#.....
|
||||||
|
.#....#.....
|
||||||
|
.#....#.....
|
||||||
|
..####......
|
||||||
|
...##.......
|
||||||
|
...######...
|
||||||
|
...##.......
|
||||||
|
...####.....
|
||||||
|
...##.......
|
||||||
|
............`)
|
||||||
|
Eye = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
............
|
||||||
|
....####....
|
||||||
|
..##....##..
|
||||||
|
.#...##...#.
|
||||||
|
#...####...#
|
||||||
|
#...####...#
|
||||||
|
.#...##...#.
|
||||||
|
..##....##..
|
||||||
|
....####....
|
||||||
|
............
|
||||||
|
............`)
|
||||||
|
EyeOff = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
.#..........
|
||||||
|
..#.####....
|
||||||
|
..##....##..
|
||||||
|
.#..###...#.
|
||||||
|
#...####...#
|
||||||
|
#...####...#
|
||||||
|
.#...###..#.
|
||||||
|
..##....##..
|
||||||
|
....####.#..
|
||||||
|
..........#.
|
||||||
|
............`)
|
||||||
|
)
|
||||||
+202
@@ -0,0 +1,202 @@
|
|||||||
|
package icon
|
||||||
|
|
||||||
|
import "git.zacharyzhang.com/ZacharyZhang-NY/8bitMyGoUI/pixel"
|
||||||
|
|
||||||
|
var (
|
||||||
|
Info = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
...######...
|
||||||
|
..#......#..
|
||||||
|
.#...##...#.
|
||||||
|
.#........#.
|
||||||
|
.#...##...#.
|
||||||
|
.#...##...#.
|
||||||
|
.#...##...#.
|
||||||
|
.#...##...#.
|
||||||
|
..#......#..
|
||||||
|
...######...
|
||||||
|
............`)
|
||||||
|
Warning = pixel.MustSprite(`
|
||||||
|
.....##.....
|
||||||
|
.....##.....
|
||||||
|
....#..#....
|
||||||
|
....####....
|
||||||
|
...#.##.#...
|
||||||
|
...#.##.#...
|
||||||
|
..#..##..#..
|
||||||
|
..#..##..#..
|
||||||
|
.#........#.
|
||||||
|
.#...##...#.
|
||||||
|
############
|
||||||
|
............`)
|
||||||
|
Error = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
...######...
|
||||||
|
..#......#..
|
||||||
|
.#.#....#.#.
|
||||||
|
.#..#..#..#.
|
||||||
|
.#...##...#.
|
||||||
|
.#...##...#.
|
||||||
|
.#..#..#..#.
|
||||||
|
.#.#....#.#.
|
||||||
|
..#......#..
|
||||||
|
...######...
|
||||||
|
............`)
|
||||||
|
Question = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
...######...
|
||||||
|
..##....##..
|
||||||
|
..##....##..
|
||||||
|
........##..
|
||||||
|
.......##...
|
||||||
|
.....##.....
|
||||||
|
.....##.....
|
||||||
|
............
|
||||||
|
.....##.....
|
||||||
|
.....##.....
|
||||||
|
............`)
|
||||||
|
Heart = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
............
|
||||||
|
..###..###..
|
||||||
|
.#####.####.
|
||||||
|
.##########.
|
||||||
|
.##########.
|
||||||
|
..########..
|
||||||
|
...######...
|
||||||
|
....####....
|
||||||
|
.....##.....
|
||||||
|
............
|
||||||
|
............`)
|
||||||
|
HeartEmpty = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
............
|
||||||
|
..###..###..
|
||||||
|
.#...#.#..#.
|
||||||
|
.#........#.
|
||||||
|
.#........#.
|
||||||
|
..#......#..
|
||||||
|
...#....#...
|
||||||
|
....#..#....
|
||||||
|
.....##.....
|
||||||
|
............
|
||||||
|
............`)
|
||||||
|
Star = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
.....##.....
|
||||||
|
.....##.....
|
||||||
|
....####....
|
||||||
|
############
|
||||||
|
.##########.
|
||||||
|
..########..
|
||||||
|
..########..
|
||||||
|
.####..####.
|
||||||
|
.###....###.
|
||||||
|
.#........#.
|
||||||
|
............`)
|
||||||
|
StarEmpty = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
.....##.....
|
||||||
|
.....##.....
|
||||||
|
....#..#....
|
||||||
|
#####..#####
|
||||||
|
.#........#.
|
||||||
|
..#......#..
|
||||||
|
..#......#..
|
||||||
|
.#...##...#.
|
||||||
|
.#.##..##.#.
|
||||||
|
.##......##.
|
||||||
|
............`)
|
||||||
|
Sparkle = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
.....#......
|
||||||
|
.....#......
|
||||||
|
....###.....
|
||||||
|
.##########.
|
||||||
|
....###.....
|
||||||
|
.....#...#..
|
||||||
|
.....#..###.
|
||||||
|
.........#..
|
||||||
|
.#..........
|
||||||
|
###.........
|
||||||
|
.#..........`)
|
||||||
|
Volume = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
.....#......
|
||||||
|
....##...#..
|
||||||
|
.####..#..#.
|
||||||
|
.###....#.#.
|
||||||
|
.###..#.#.#.
|
||||||
|
.###..#.#.#.
|
||||||
|
.###....#.#.
|
||||||
|
.####..#..#.
|
||||||
|
....##...#..
|
||||||
|
.....#......
|
||||||
|
............`)
|
||||||
|
Mute = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
.....#......
|
||||||
|
....##......
|
||||||
|
.####.......
|
||||||
|
.###...#...#
|
||||||
|
.###....#.#.
|
||||||
|
.###.....#..
|
||||||
|
.###....#.#.
|
||||||
|
.####..#...#
|
||||||
|
....##......
|
||||||
|
.....#......
|
||||||
|
............`)
|
||||||
|
Play = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
..#.........
|
||||||
|
..###.......
|
||||||
|
..#####.....
|
||||||
|
..#######...
|
||||||
|
..#########.
|
||||||
|
..#########.
|
||||||
|
..#######...
|
||||||
|
..#####.....
|
||||||
|
..###.......
|
||||||
|
..#.........
|
||||||
|
............`)
|
||||||
|
Pause = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
..###..###..
|
||||||
|
..###..###..
|
||||||
|
..###..###..
|
||||||
|
..###..###..
|
||||||
|
..###..###..
|
||||||
|
..###..###..
|
||||||
|
..###..###..
|
||||||
|
..###..###..
|
||||||
|
..###..###..
|
||||||
|
..###..###..
|
||||||
|
............`)
|
||||||
|
Stop = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
............
|
||||||
|
..########..
|
||||||
|
..########..
|
||||||
|
..########..
|
||||||
|
..########..
|
||||||
|
..########..
|
||||||
|
..########..
|
||||||
|
..########..
|
||||||
|
..########..
|
||||||
|
............
|
||||||
|
............`)
|
||||||
|
Next = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
............
|
||||||
|
.#...#....##
|
||||||
|
.##..##...##
|
||||||
|
.###.###..##
|
||||||
|
.########.##
|
||||||
|
.########.##
|
||||||
|
.###.###..##
|
||||||
|
.##..##...##
|
||||||
|
.#...#....##
|
||||||
|
............
|
||||||
|
............`)
|
||||||
|
Prev = Next.Mirror()
|
||||||
|
)
|
||||||
+253
@@ -0,0 +1,253 @@
|
|||||||
|
package icon
|
||||||
|
|
||||||
|
import "git.zacharyzhang.com/ZacharyZhang-NY/8bitMyGoUI/pixel"
|
||||||
|
|
||||||
|
var (
|
||||||
|
Calendar = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
..#.....#...
|
||||||
|
.##########.
|
||||||
|
.##########.
|
||||||
|
.#........#.
|
||||||
|
.#.#.#.#..#.
|
||||||
|
.#........#.
|
||||||
|
.#.#.#.#..#.
|
||||||
|
.#........#.
|
||||||
|
.##########.
|
||||||
|
............
|
||||||
|
............`)
|
||||||
|
Clock = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
...######...
|
||||||
|
..#......#..
|
||||||
|
.#...#....#.
|
||||||
|
.#...#....#.
|
||||||
|
.#...#....#.
|
||||||
|
.#...####.#.
|
||||||
|
.#........#.
|
||||||
|
.#........#.
|
||||||
|
..#......#..
|
||||||
|
...######...
|
||||||
|
............`)
|
||||||
|
Hourglass = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
.##########.
|
||||||
|
..#......#..
|
||||||
|
..#.####.#..
|
||||||
|
...#.##.#...
|
||||||
|
....#..#....
|
||||||
|
....#..#....
|
||||||
|
...#....#...
|
||||||
|
..#..##..#..
|
||||||
|
..#.####.#..
|
||||||
|
.##########.
|
||||||
|
............`)
|
||||||
|
Camera = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
............
|
||||||
|
....###.....
|
||||||
|
.##########.
|
||||||
|
.#........#.
|
||||||
|
.#...##...#.
|
||||||
|
.#..#..#..#.
|
||||||
|
.#..#..#..#.
|
||||||
|
.#...##...#.
|
||||||
|
.##########.
|
||||||
|
............
|
||||||
|
............`)
|
||||||
|
Mic = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
....####....
|
||||||
|
....####....
|
||||||
|
....####....
|
||||||
|
....####....
|
||||||
|
.#..####..#.
|
||||||
|
.#..####..#.
|
||||||
|
..#......#..
|
||||||
|
...######...
|
||||||
|
.....##.....
|
||||||
|
...######...
|
||||||
|
............`)
|
||||||
|
Phone = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
..##........
|
||||||
|
.####.......
|
||||||
|
.###........
|
||||||
|
.##.........
|
||||||
|
.##.........
|
||||||
|
.##.........
|
||||||
|
..##........
|
||||||
|
...##..###..
|
||||||
|
....######..
|
||||||
|
......###...
|
||||||
|
............`)
|
||||||
|
Map = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
.##..##..##.
|
||||||
|
.#.##..##.#.
|
||||||
|
.#..#..#..#.
|
||||||
|
.#..#..#..#.
|
||||||
|
.#..#..#..#.
|
||||||
|
.#..#..#..#.
|
||||||
|
.#..#..#..#.
|
||||||
|
.#.##..##.#.
|
||||||
|
.##..##..##.
|
||||||
|
............
|
||||||
|
............`)
|
||||||
|
Flag = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
.#..........
|
||||||
|
.#######....
|
||||||
|
.########...
|
||||||
|
.#########..
|
||||||
|
.########...
|
||||||
|
.#######....
|
||||||
|
.#..........
|
||||||
|
.#..........
|
||||||
|
.#..........
|
||||||
|
.#..........
|
||||||
|
............`)
|
||||||
|
Pin = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
....####....
|
||||||
|
...######...
|
||||||
|
..###..###..
|
||||||
|
..###..###..
|
||||||
|
..########..
|
||||||
|
...######...
|
||||||
|
...######...
|
||||||
|
....####....
|
||||||
|
....####....
|
||||||
|
.....##.....
|
||||||
|
............`)
|
||||||
|
Globe = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
...######...
|
||||||
|
..#..#.#.#..
|
||||||
|
.#..#...#.#.
|
||||||
|
.##########.
|
||||||
|
.#..#...#.#.
|
||||||
|
.#..#...#.#.
|
||||||
|
.##########.
|
||||||
|
.#..#...#.#.
|
||||||
|
..#..#.#.#..
|
||||||
|
...######...
|
||||||
|
............`)
|
||||||
|
Book = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
.####..####.
|
||||||
|
.#...##...#.
|
||||||
|
.#...##...#.
|
||||||
|
.#...##...#.
|
||||||
|
.#...##...#.
|
||||||
|
.#...##...#.
|
||||||
|
.#...##...#.
|
||||||
|
.####..####.
|
||||||
|
.....##.....
|
||||||
|
............
|
||||||
|
............`)
|
||||||
|
Cart = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
##..........
|
||||||
|
.#..........
|
||||||
|
.##########.
|
||||||
|
..#.......#.
|
||||||
|
..#......#..
|
||||||
|
..########..
|
||||||
|
..#.........
|
||||||
|
..#########.
|
||||||
|
...##...##..
|
||||||
|
...##...##..
|
||||||
|
............`)
|
||||||
|
Tag = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
.#####......
|
||||||
|
.#...##.....
|
||||||
|
.#.#..##....
|
||||||
|
.#.....##...
|
||||||
|
.##.....##..
|
||||||
|
..##.....##.
|
||||||
|
...##...##..
|
||||||
|
....##.##...
|
||||||
|
.....###....
|
||||||
|
......#.....
|
||||||
|
............`)
|
||||||
|
Gift = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
...##..##...
|
||||||
|
..#..##..#..
|
||||||
|
.##########.
|
||||||
|
.#....#...#.
|
||||||
|
.##########.
|
||||||
|
..#...#..#..
|
||||||
|
..#...#..#..
|
||||||
|
..#...#..#..
|
||||||
|
..#...#..#..
|
||||||
|
..########..
|
||||||
|
............`)
|
||||||
|
Robot = pixel.MustSprite(`
|
||||||
|
.....#......
|
||||||
|
.....#......
|
||||||
|
..########..
|
||||||
|
.#........#.
|
||||||
|
.#.##..##.#.
|
||||||
|
.#.##..##.#.
|
||||||
|
.#........#.
|
||||||
|
.#..####..#.
|
||||||
|
..########..
|
||||||
|
...#....#...
|
||||||
|
..###..###..
|
||||||
|
............`)
|
||||||
|
Branch = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
.###....###.
|
||||||
|
.#.#....#.#.
|
||||||
|
.###....###.
|
||||||
|
..#......#..
|
||||||
|
..#.....#...
|
||||||
|
..#...##....
|
||||||
|
..#.##......
|
||||||
|
..##........
|
||||||
|
.###........
|
||||||
|
.#.#........
|
||||||
|
.###........`)
|
||||||
|
Wifi = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
............
|
||||||
|
..########..
|
||||||
|
.#........#.
|
||||||
|
#..######..#
|
||||||
|
..#......#..
|
||||||
|
.#..####..#.
|
||||||
|
...#....#...
|
||||||
|
.....##.....
|
||||||
|
.....##.....
|
||||||
|
............
|
||||||
|
............`)
|
||||||
|
Battery = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
............
|
||||||
|
............
|
||||||
|
.#########..
|
||||||
|
.#.......##.
|
||||||
|
.#.###...##.
|
||||||
|
.#.###...##.
|
||||||
|
.#.......##.
|
||||||
|
.#########..
|
||||||
|
............
|
||||||
|
............
|
||||||
|
............`)
|
||||||
|
Gamepad = pixel.MustSprite(`
|
||||||
|
............
|
||||||
|
............
|
||||||
|
..########..
|
||||||
|
.#........#.
|
||||||
|
#..#....#..#
|
||||||
|
#.###..#.#.#
|
||||||
|
#..#....#..#
|
||||||
|
#....##....#
|
||||||
|
#...#..#...#
|
||||||
|
.###....###.
|
||||||
|
............
|
||||||
|
............`)
|
||||||
|
)
|
||||||
Reference in new issue
Block a user