diagnostic tool fixes

This commit is contained in:
2024-04-22 13:52:17 +03:00
parent 4f18b6db18
commit dc2e6ea2b5
20 changed files with 178 additions and 160 deletions

View File

@ -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
}
}

View File

@ -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())
}
}

View File

@ -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) {

View File

@ -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"
}
}

View File

@ -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,
}
}