Add display components 041-065; move Icon into display; QR via rsc.io/qr
This commit is contained in:
41 files changed
+2152
-44
No files matched your search
@@ -0,0 +1,74 @@
|
||||
package display
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/egoist/mygo/ui"
|
||||
|
||||
"git.zacharyzhang.com/ZacharyZhang-NY/8bitMyGoUI/pixel"
|
||||
)
|
||||
|
||||
type Rarity uint8
|
||||
|
||||
const (
|
||||
Common Rarity = iota
|
||||
Uncommon
|
||||
Rare
|
||||
Epic
|
||||
Legendary
|
||||
)
|
||||
|
||||
func (r Rarity) slot() pixel.Slot {
|
||||
if r > Legendary {
|
||||
panic(fmt.Sprintf("display: unknown Rarity %d", r))
|
||||
}
|
||||
return [...]pixel.Slot{pixel.Faint, pixel.Good, pixel.Info, pixel.Magic, pixel.Warn}[r]
|
||||
}
|
||||
|
||||
func (r Rarity) name(k pixel.Kit) string {
|
||||
return k.Msg([...]string{"common", "uncommon", "rare", "epic", "legendary"}[r])
|
||||
}
|
||||
|
||||
var (
|
||||
gem = pixel.MustSprite(`
|
||||
...eeeee...
|
||||
..e#l#l#e..
|
||||
.e##l#l##e.
|
||||
eeeeeeeeeee
|
||||
e#ll###ss#e
|
||||
.e#l###s#e.
|
||||
..e#l#s#e..
|
||||
...e#s#e...
|
||||
....e#e....
|
||||
.....e.....
|
||||
`)
|
||||
glint = pixel.MustSprite(`
|
||||
..#..
|
||||
..#..
|
||||
##.##
|
||||
..#..
|
||||
..#..
|
||||
|
||||
.....
|
||||
..#..
|
||||
.#.#.
|
||||
..#..
|
||||
.....
|
||||
`)
|
||||
)
|
||||
|
||||
type GemOptions struct {
|
||||
Scale int
|
||||
}
|
||||
|
||||
// Gem is a cut gem by rarity, sparkling in steps.
|
||||
func Gem(c *ui.Context, r Rarity, o GemOptions) *ui.Element {
|
||||
k, sc := pixel.K(c), scale(o.Scale)
|
||||
ink := r.slot()
|
||||
return art(c, k, r.name(k), (gem.W+3)*sc, (gem.H+2)*sc, func(g pixel.Canvas) {
|
||||
g.Sprite(0, 2*sc, gem, 0, ink, sc)
|
||||
if f := g.Step(4) % 4; f < 2 {
|
||||
g.Sprite(gem.W*sc-2*sc, 0, glint, f, pixel.Lit, sc)
|
||||
}
|
||||
})
|
||||
}
|
||||
Reference in new issue
Block a user