diagnostic tool fixes
This commit is contained in:
@ -1,6 +1,8 @@
|
||||
package gamemap
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"lab.zaar.be/thefish/alchemyst-go/engine/ecs"
|
||||
"lab.zaar.be/thefish/alchemyst-go/engine/types"
|
||||
"lab.zaar.be/thefish/alchemyst-go/util/appctx"
|
||||
@ -28,7 +30,7 @@ func (l *Level) GetTileNbs (coords types.Coords) []*Tile {
|
||||
result := make([]*Tile,0)
|
||||
for i := coords.X-1; i < coords.X+1; i++ {
|
||||
for j := coords.Y-1; j < coords.Y+1; j++ {
|
||||
nbc := types.Coords{i,j}
|
||||
nbc := types.Coords{X: i,Y: j}
|
||||
if l.InBounds(nbc){
|
||||
if nbc == coords {
|
||||
continue
|
||||
@ -66,14 +68,14 @@ func (l *Level) Put (x, y int, tileFunc interface{}) {
|
||||
if tile == nil {
|
||||
appctx.Logger().Fatal().Msgf("Got non-tile type to put into level: %v", tile)
|
||||
}
|
||||
if l.InBounds(types.Coords{x, y}) {
|
||||
if l.InBounds(types.Coords{X: x, Y: y}) {
|
||||
l.Tiles[y*l.W+x] = tile
|
||||
}
|
||||
}
|
||||
|
||||
func NewLevel(branch string, depth int) *Level {
|
||||
l := &Level{
|
||||
Name: branch + string(depth),
|
||||
Name: fmt.Sprintf(branch, depth),
|
||||
Depth: depth,
|
||||
Rect: types.NewRect(0,0, mapWidth, mapHeight),
|
||||
}
|
||||
@ -84,13 +86,13 @@ func NewLevel(branch string, depth int) *Level {
|
||||
}
|
||||
|
||||
func (l *Level) SetAllInvisible() {
|
||||
for idx, _ := range l.Tiles {
|
||||
for idx := range l.Tiles {
|
||||
l.Tiles[idx].Visible = false
|
||||
}
|
||||
}
|
||||
|
||||
func (l *Level) SetAllVisible() {
|
||||
for idx, _ := range l.Tiles {
|
||||
for idx := range l.Tiles {
|
||||
l.Tiles[idx].Visible = true
|
||||
}
|
||||
}
|
||||
|
@ -13,7 +13,7 @@ var maxRoomSize = 22
|
||||
var maxrooms = 100
|
||||
|
||||
var fges = map[int]types.RectFill{
|
||||
1: types.RectFill{
|
||||
1: {
|
||||
Top: gamemap.NewWall,
|
||||
Bottom: gamemap.NewWall,
|
||||
Left: gamemap.NewWall,
|
||||
@ -25,7 +25,7 @@ var fges = map[int]types.RectFill{
|
||||
Body: gamemap.NewFloor,
|
||||
},
|
||||
|
||||
2: types.RectFill{
|
||||
2: {
|
||||
Top: gamemap.NewWaterTile,
|
||||
Bottom: gamemap.NewWaterTile,
|
||||
Left: gamemap.NewWaterTile,
|
||||
@ -53,7 +53,14 @@ func GetRandomRoomList(rng *util.RNG, l *gamemap.Level, maxRooms, minRoomSize, m
|
||||
|
||||
|
||||
var newRoom = gamemap.Room{}
|
||||
if !prefabUsed || rng.Range(0, 5) > 3 {
|
||||
if prefabUsed && rng.Range(0, 5) <= 3 {
|
||||
newRoom = gamemap.NewRandomRectRoom(
|
||||
rng,
|
||||
rng.Range(minRoomSize, maxRoomSize),
|
||||
rng.Range(minRoomSize, maxRoomSize),
|
||||
fillage,
|
||||
)
|
||||
} else {
|
||||
//if prefabUsed {
|
||||
//prefab
|
||||
prefabUsed = true
|
||||
@ -67,20 +74,14 @@ func GetRandomRoomList(rng *util.RNG, l *gamemap.Level, maxRooms, minRoomSize, m
|
||||
Mobs: r.Mobs,
|
||||
Connectors: make([]types.Coords,0),
|
||||
}
|
||||
for _, coord := range r.Connectors {
|
||||
newRoom.Connectors = append(newRoom.Connectors, coord)
|
||||
}
|
||||
} else {
|
||||
newRoom = gamemap.NewRandomRectRoom(
|
||||
rng,
|
||||
rng.Range(minRoomSize, maxRoomSize),
|
||||
rng.Range(minRoomSize, maxRoomSize),
|
||||
fillage,
|
||||
)
|
||||
newRoom.Connectors = append(newRoom.Connectors, r.Connectors...)
|
||||
// for _, coord := range r.Connectors {
|
||||
// newRoom.Connectors = append(newRoom.Connectors, coord)
|
||||
// }
|
||||
}
|
||||
where := types.Coords{
|
||||
rng.Range(1, l.W-2-newRoom.W),
|
||||
rng.Range(1, l.H-2-newRoom.H),
|
||||
X: rng.Range(1, l.W-2-newRoom.W),
|
||||
Y: rng.Range(1, l.H-2-newRoom.H),
|
||||
}
|
||||
|
||||
newRoom.MoveToCoords(where)
|
||||
@ -172,7 +173,7 @@ func DigHTunnel(l *gamemap.Level, x1, x2, y int) {
|
||||
finish = x1
|
||||
}
|
||||
for i := start; i <= finish; i++ {
|
||||
if l.InBounds(types.Coords{i, y}) {
|
||||
if l.InBounds(types.Coords{X: i, Y: y}) {
|
||||
l.MakePassByXY(i, y, gamemap.NewFloor())
|
||||
//l.Tiles[i][y] = gamemap.NewFloor()
|
||||
}
|
||||
@ -189,7 +190,7 @@ func DigVTunnel(l *gamemap.Level, y1, y2, x int) {
|
||||
finish = y1
|
||||
}
|
||||
for i := start; i <= finish; i++ {
|
||||
if l.InBounds(types.Coords{x, i}) {
|
||||
if l.InBounds(types.Coords{X: x, Y: i}) {
|
||||
l.MakePassByXY(x, i, gamemap.NewFloor())
|
||||
}
|
||||
}
|
||||
|
@ -2,7 +2,8 @@ package gamemap
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
|
||||
"lab.zaar.be/thefish/alchemyst-go/engine/items"
|
||||
"lab.zaar.be/thefish/alchemyst-go/engine/mob"
|
||||
"lab.zaar.be/thefish/alchemyst-go/engine/types"
|
||||
@ -29,7 +30,7 @@ type PrefabRecord struct {
|
||||
}
|
||||
|
||||
func LoadPrefabFile(filename string) (*PrefabFile, error) {
|
||||
data, err := ioutil.ReadFile(filename)
|
||||
data, err := os.ReadFile(filename)
|
||||
if err!= nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -62,6 +63,8 @@ func (pfbl PrefabLoader) PrefabRoomsList() []Room {
|
||||
|
||||
for _, rawPrefab := range file.Prefabs {
|
||||
|
||||
appctx.Logger().Debug().Msgf("adding %s", rawPrefab.name)
|
||||
|
||||
for k,v := range rawPrefab.TileLegend {
|
||||
currentTileLegend[k] = v
|
||||
}
|
||||
@ -73,8 +76,8 @@ func (pfbl PrefabLoader) PrefabRoomsList() []Room {
|
||||
}
|
||||
|
||||
room := Room{
|
||||
Rect:types.Rect{0, 0, rawPrefab.Size.X, rawPrefab.Size.Y},
|
||||
Center: types.Coords{rawPrefab.Size.X / 2, rawPrefab.Size.Y / 2}, //fixme
|
||||
Rect:types.Rect{X: 0, Y: 0, W: rawPrefab.Size.X, H: rawPrefab.Size.Y},
|
||||
Center: types.Coords{X: rawPrefab.Size.X / 2, Y: rawPrefab.Size.Y / 2}, //fixme
|
||||
Geometry: make([]func()*Tile, rawPrefab.Size.X*rawPrefab.Size.Y),
|
||||
Mobs: make([]mob.Mob, rawPrefab.Size.X*rawPrefab.Size.Y),
|
||||
Items: make([]items.Carried, rawPrefab.Size.X*rawPrefab.Size.Y),
|
||||
@ -99,7 +102,7 @@ func (pfbl PrefabLoader) PrefabRoomsList() []Room {
|
||||
}
|
||||
if shortName == "connector" {
|
||||
f = NewWall
|
||||
room.Connectors = append(room.Connectors, types.Coords{i,j})
|
||||
room.Connectors = append(room.Connectors, types.Coords{X: i,Y: j})
|
||||
} else {
|
||||
f, ok = TileTypeMap[shortName]
|
||||
if (!ok) {
|
||||
|
@ -3,12 +3,13 @@ package gamemap
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"lab.zaar.be/thefish/alchemyst-go/engine/items"
|
||||
"lab.zaar.be/thefish/alchemyst-go/engine/mob"
|
||||
"lab.zaar.be/thefish/alchemyst-go/engine/types"
|
||||
"lab.zaar.be/thefish/alchemyst-go/util"
|
||||
"lab.zaar.be/thefish/alchemyst-go/util/appctx"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var invalidBlit = errors.New("trying to blit on existing good tile")
|
||||
@ -27,7 +28,7 @@ func (r *Room) Put (x, y int, tileFunc interface{}) {
|
||||
if tf == nil {
|
||||
return //fixme error
|
||||
}
|
||||
if r.InBounds(types.Coords{x, y}) {
|
||||
if r.InBounds(types.Coords{X: x, Y: y}) {
|
||||
r.Geometry[x+y*r.W] = tf
|
||||
}
|
||||
}
|
||||
@ -39,7 +40,7 @@ func (room *Room) BlitToLevel(l *Level) error {
|
||||
for j := 0; j < room.H; j++ {
|
||||
|
||||
for i := 0; i < room.W; i++ {
|
||||
mapCoords := types.Coords{room.X + i, room.Y + j}
|
||||
mapCoords := types.Coords{X: room.X + i, Y: room.Y + j}
|
||||
underlyingTile := l.GetTile(mapCoords)
|
||||
|
||||
tileFunc := room.Geometry[i+j*room.W]
|
||||
@ -85,17 +86,17 @@ func NewRandomRectRoom(rng *util.RNG, w, h int, fillage types.RectFill) Room {
|
||||
w,
|
||||
h,
|
||||
),
|
||||
Center: types.Coords{w / 2, h /2 },
|
||||
Center: types.Coords{X: w / 2, Y: h /2 },
|
||||
Geometry: make([]func()*Tile, w*h),
|
||||
}
|
||||
newRoom.Blit(fillage, &newRoom)
|
||||
//add connectors
|
||||
newRoom.Connectors = append(
|
||||
newRoom.Connectors,
|
||||
types.Coords{rng.Range(1, w - 2), 1},
|
||||
types.Coords{rng.Range(1, w - 2), h -2},
|
||||
types.Coords{1, rng.Range(1, h - 2)},
|
||||
types.Coords{w - 2, rng.Range(1, h - 2)},
|
||||
types.Coords{X: rng.Range(1, w - 2), Y: 1},
|
||||
types.Coords{X: rng.Range(1, w - 2), Y: h -2},
|
||||
types.Coords{X: 1, Y: rng.Range(1, h - 2)},
|
||||
types.Coords{X: w - 2, Y: rng.Range(1, h - 2)},
|
||||
)
|
||||
return newRoom
|
||||
}
|
||||
@ -104,7 +105,7 @@ func (r *Room) String() string {
|
||||
return strings.Join([]string{
|
||||
"room: ",
|
||||
"\t" + fmt.Sprintf(" rect: X: %d, Y: %d, maxX: %d, maxY: %d", r.Rect.X, r.Rect.Y, r.Rect.W + r.X - 1, r.Rect.H + r.Y - 1),
|
||||
"\t" + fmt.Sprintf(" center:", r.Center.X, r.Center.Y),
|
||||
"\t" + fmt.Sprintf(" center: %d, %d", r.Center.X, r.Center.Y),
|
||||
"\t" + fmt.Sprintf(" Connectors: %v", r.Connectors),
|
||||
},"\n") + "\n"
|
||||
}
|
||||
}
|
||||
|
@ -37,21 +37,22 @@ func (t *Tile) GetRawBgColor() uint32 {
|
||||
|
||||
func NewWall() *Tile {
|
||||
return &Tile{
|
||||
Appearance: &Appearance{
|
||||
Glyph: &PlainGlyphHolder{Glyph: "#"},
|
||||
ColorSet: TileColorSet{
|
||||
Fg: &PlainColorHolder{A: 255, R: 130, G: 110, B: 150},
|
||||
Bg: &PlainColorHolder{A: 255, R: 172, G: 170, B: 173},
|
||||
DarkFg: &PlainColorHolder{A: 255, R: 20, G: 20, B: 68},
|
||||
DarkBg: &PlainColorHolder{A: 255, R: 7, G: 7, B: 30},
|
||||
},
|
||||
},
|
||||
Name: "Wall",
|
||||
Description: "A dull rock wall",
|
||||
BlocksPass: true,
|
||||
BlocksSight: true,
|
||||
Explored: false,
|
||||
MustDraw: false,
|
||||
Appearance: &Appearance{
|
||||
Glyph: &PlainGlyphHolder{"#"},
|
||||
ColorSet: TileColorSet{
|
||||
Fg: &PlainColorHolder{255, 130, 110, 150},
|
||||
Bg: &PlainColorHolder{255, 172, 170, 173},
|
||||
DarkFg: &PlainColorHolder{255, 20, 20, 68},
|
||||
DarkBg: &PlainColorHolder{255, 7, 7, 30},
|
||||
},
|
||||
},
|
||||
Visible: false,
|
||||
}
|
||||
}
|
||||
|
||||
@ -64,18 +65,18 @@ func NewDecoratedWall() *Tile {
|
||||
Explored: false,
|
||||
MustDraw: false,
|
||||
Appearance: &Appearance{
|
||||
Glyph: &PlainGlyphHolder{"#"},
|
||||
Glyph: &PlainGlyphHolder{Glyph: "#"},
|
||||
ColorSet: TileColorSet{
|
||||
Fg: &PlainColorHolder{255, 130, 110, 150},
|
||||
Fg: &PlainColorHolder{A: 255, R: 130, G: 110, B: 150},
|
||||
//Bg: &PlainColorHolder{255, 172, 170, 173},
|
||||
Bg: &DanceColorHolder{
|
||||
255,
|
||||
DeviatedColorRing(172, -15, 10),
|
||||
DeviatedColorRing(170, -5, 15),
|
||||
DeviatedColorRing(173, -10, 10),
|
||||
A: 255,
|
||||
R: DeviatedColorRing(172, -15, 10),
|
||||
G: DeviatedColorRing(170, -5, 15),
|
||||
B: DeviatedColorRing(173, -10, 10),
|
||||
},
|
||||
DarkFg: &PlainColorHolder{255, 20, 20, 68},
|
||||
DarkBg: &PlainColorHolder{255, 7, 7, 30},
|
||||
DarkFg: &PlainColorHolder{A: 255, R: 20, G: 20, B: 68},
|
||||
DarkBg: &PlainColorHolder{A: 255, R: 7, G: 7, B: 30},
|
||||
},
|
||||
},
|
||||
}
|
||||
@ -90,12 +91,12 @@ func NewFloor() *Tile {
|
||||
Explored: false,
|
||||
MustDraw: false,
|
||||
Appearance: &Appearance{
|
||||
Glyph: &PlainGlyphHolder{"."},
|
||||
Glyph: &PlainGlyphHolder{Glyph: "."},
|
||||
ColorSet: TileColorSet{
|
||||
Fg: &PlainColorHolder{255, 220, 220, 250},
|
||||
Bg: &PlainColorHolder{255, 19, 19, 70},
|
||||
DarkFg: &PlainColorHolder{255, 30, 20, 50},
|
||||
DarkBg: &PlainColorHolder{255, 7, 7, 30},
|
||||
Fg: &PlainColorHolder{A: 255, R: 220, G: 220, B: 250},
|
||||
Bg: &PlainColorHolder{A: 255, R: 19, G: 19, B: 70},
|
||||
DarkFg: &PlainColorHolder{A: 255, R: 30, G: 20, B: 50},
|
||||
DarkBg: &PlainColorHolder{A: 255, R: 7, G: 7, B: 30},
|
||||
},
|
||||
},
|
||||
}
|
||||
@ -111,17 +112,17 @@ func NewWaterTile() *Tile {
|
||||
Explored: false,
|
||||
MustDraw: true, //fixme debug
|
||||
Appearance: &Appearance{
|
||||
Glyph: &PlainGlyphHolder{" "},
|
||||
Glyph: &PlainGlyphHolder{Glyph: " "},
|
||||
ColorSet: TileColorSet{
|
||||
Fg: &PlainColorHolder{255, 220, 220, 250},
|
||||
Fg: &PlainColorHolder{A: 255, R: 220, G: 220, B: 250},
|
||||
Bg: &DanceColorHolder{
|
||||
255,
|
||||
SingleColorRing(5),
|
||||
FillColorRing(2, 2, 42, 4),
|
||||
FillColorRing(154, 150, 229, 12),
|
||||
A: 255,
|
||||
R: SingleColorRing(5),
|
||||
G: FillColorRing(2, 2, 42, 4),
|
||||
B: FillColorRing(154, 150, 229, 12),
|
||||
},
|
||||
DarkFg: &PlainColorHolder{255, 30, 20, 50},
|
||||
DarkBg: &PlainColorHolder{255, 7, 7, 30},
|
||||
DarkFg: &PlainColorHolder{A: 255, R: 30, G: 20, B: 50},
|
||||
DarkBg: &PlainColorHolder{A: 255, R: 7, G: 7, B: 30},
|
||||
},
|
||||
},
|
||||
|
||||
@ -131,27 +132,21 @@ func NewWaterTile() *Tile {
|
||||
func NewDeepWaterTile() *Tile {
|
||||
//ch := &ColorHolder{5, 2, 154}
|
||||
return &Tile{
|
||||
Appearance: &Appearance{
|
||||
Glyph: &PlainGlyphHolder{Glyph: " "},
|
||||
ColorSet: TileColorSet{
|
||||
Fg: &PlainColorHolder{A: 255, R: 220, G: 220, B: 250},
|
||||
Bg: &DanceColorHolder{A: 255, R: SingleColorRing(19), G: FillColorRing(19, 0, 15, 2), B: FillColorRing(127, 120, 176, 12)},
|
||||
DarkFg: &PlainColorHolder{A: 255, R: 30, G: 20, B: 50},
|
||||
DarkBg: &PlainColorHolder{A: 255, R: 7, G: 7, B: 30},
|
||||
},
|
||||
},
|
||||
Name: "Deep Water",
|
||||
Description: "Deep water",
|
||||
BlocksPass: false,
|
||||
BlocksSight: false,
|
||||
Explored: false,
|
||||
MustDraw: true, //fixme debug
|
||||
|
||||
Appearance: &Appearance{
|
||||
Glyph: &PlainGlyphHolder{" "},
|
||||
ColorSet: TileColorSet{
|
||||
Fg: &PlainColorHolder{255, 220, 220, 250},
|
||||
Bg: &DanceColorHolder{
|
||||
255,
|
||||
SingleColorRing(19),
|
||||
FillColorRing(19, 0, 15, 2),
|
||||
FillColorRing(127, 120, 176, 12),
|
||||
},
|
||||
DarkFg: &PlainColorHolder{255, 30, 20, 50},
|
||||
DarkBg: &PlainColorHolder{255, 7, 7, 30},
|
||||
},
|
||||
},
|
||||
|
||||
MustDraw: true,
|
||||
Visible: false,
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user