memleak fixed, colordance on deque
This commit is contained in:
@ -1,7 +1,7 @@
|
||||
package gamemap
|
||||
|
||||
import (
|
||||
"container/ring"
|
||||
"github.com/gammazero/deque"
|
||||
"lab.zaar.be/thefish/alchemyst-go/util"
|
||||
)
|
||||
import blt "lab.zaar.be/thefish/bearlibterminal"
|
||||
@ -10,19 +10,28 @@ type ColorHolder interface {
|
||||
GetColor() uint32
|
||||
}
|
||||
|
||||
type cdeque struct {
|
||||
deque.Deque
|
||||
}
|
||||
|
||||
func (c *cdeque) Next() uint8 {
|
||||
c.Rotate(1)
|
||||
return c.Front().(uint8)
|
||||
}
|
||||
|
||||
type DanceColorHolder struct {
|
||||
A uint8
|
||||
R *ring.Ring
|
||||
G *ring.Ring
|
||||
B *ring.Ring
|
||||
R *cdeque
|
||||
G *cdeque
|
||||
B *cdeque
|
||||
}
|
||||
|
||||
func (chd *DanceColorHolder) GetColor() uint32 {
|
||||
return blt.ColorFromARGB(
|
||||
chd.A,
|
||||
chd.R.Next().Value.(uint8),
|
||||
chd.G.Next().Value.(uint8),
|
||||
chd.B.Next().Value.(uint8),
|
||||
chd.R.Next(),
|
||||
chd.G.Next(),
|
||||
chd.B.Next(),
|
||||
)
|
||||
}
|
||||
|
||||
@ -68,13 +77,33 @@ type Tile struct {
|
||||
Visible bool
|
||||
}
|
||||
|
||||
func singleColorRing(colorValue uint8) *ring.Ring {
|
||||
r := ring.New(1)
|
||||
r.Next().Value = colorValue
|
||||
return r
|
||||
func (t *Tile) GetChar() string {
|
||||
return t.Char
|
||||
}
|
||||
|
||||
func fillColorRing(colorValue uint8, minGlow, maxGlow, step int) *ring.Ring {
|
||||
func (t *Tile) GetRawColor() uint32 {
|
||||
if t.Visible {
|
||||
return t.Appearance.ColorSet.Fg.GetColor()
|
||||
} else {
|
||||
return t.Appearance.ColorSet.DarkFg.GetColor()
|
||||
}
|
||||
}
|
||||
|
||||
func (t *Tile) GetRawBgColor() uint32 {
|
||||
if t.Visible {
|
||||
return t.Appearance.ColorSet.Bg.GetColor()
|
||||
} else {
|
||||
return t.Appearance.ColorSet.DarkBg.GetColor()
|
||||
}
|
||||
}
|
||||
|
||||
func singleColorRing(colorValue uint8) *cdeque {
|
||||
c := &cdeque{}
|
||||
c.PushBack(colorValue)
|
||||
return c
|
||||
}
|
||||
|
||||
func fillColorRing(colorValue uint8, minGlow, maxGlow, step int) *cdeque {
|
||||
q := make([]uint8, 0)
|
||||
color := int(colorValue)
|
||||
for color < maxGlow {
|
||||
@ -88,19 +117,11 @@ func fillColorRing(colorValue uint8, minGlow, maxGlow, step int) *ring.Ring {
|
||||
// color = crng.Range(1, step+minGlow)
|
||||
//}
|
||||
|
||||
r := ring.New(len(q))
|
||||
c := &cdeque{}
|
||||
for _, v := range q {
|
||||
r.Next().Value = v
|
||||
c.PushBack(uint8(v))
|
||||
}
|
||||
return r
|
||||
}
|
||||
|
||||
func colordance(colorValue uint8, minGlow, maxGlow, step int) uint8 {
|
||||
color := crng.Range(0, step) + int(colorValue)
|
||||
if color > maxGlow {
|
||||
color = crng.Range(0, step) + minGlow
|
||||
}
|
||||
return uint8(color)
|
||||
return c
|
||||
}
|
||||
|
||||
func NewWall() *Tile {
|
||||
@ -164,14 +185,6 @@ func NewWaterTile() *Tile {
|
||||
fillColorRing(19, 0, 15, 2),
|
||||
fillColorRing(70, 120, 220, 12),
|
||||
},
|
||||
//Bg: func() uint32 {
|
||||
// return blt.ColorFromARGB(
|
||||
// 255,
|
||||
// ch.R,
|
||||
// colordance(ch.G, 0, 15, 2),
|
||||
// colordance(ch.B, 120, 220, 12),
|
||||
// )
|
||||
//},
|
||||
DarkFg: &PlainColorHolder{255, 30, 20, 50 },
|
||||
DarkBg: &PlainColorHolder{255, 7, 7, 30},
|
||||
},
|
||||
@ -199,37 +212,9 @@ func NewDeepWaterTile() *Tile {
|
||||
fillColorRing(2,2,42,4),
|
||||
fillColorRing(154, 150, 229, 12),
|
||||
},
|
||||
//Bg: func() uint32 {
|
||||
// return blt.ColorFromARGB(
|
||||
// 255,
|
||||
// ch.R,
|
||||
// colordance(ch.G, 2, 42, 4),
|
||||
// colordance(ch.B, 180, 229, 12),
|
||||
// )
|
||||
//},
|
||||
DarkFg: &PlainColorHolder{255, 30, 20, 50},
|
||||
DarkBg: &PlainColorHolder{255, 7, 7, 30},
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func (t *Tile) GetChar() string {
|
||||
return t.Char
|
||||
}
|
||||
|
||||
func (t *Tile) GetRawColor() uint32 {
|
||||
if !t.Visible {
|
||||
return t.Appearance.ColorSet.Fg.GetColor()
|
||||
} else {
|
||||
return t.Appearance.ColorSet.DarkFg.GetColor()
|
||||
}
|
||||
}
|
||||
|
||||
func (t *Tile) GetRawBgColor() uint32 {
|
||||
if !t.Visible {
|
||||
return t.Appearance.ColorSet.Bg.GetColor()
|
||||
} else {
|
||||
return t.Appearance.ColorSet.DarkBg.GetColor()
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user