prefabs broken

This commit is contained in:
2019-11-11 03:13:37 +03:00
parent ef2577741f
commit 4b631142f7
3 changed files with 40 additions and 15 deletions

View File

@ -1,6 +1,7 @@
package mapgens
import (
"fmt"
"lab.zaar.be/thefish/alchemyst-go/engine/gamemap"
"lab.zaar.be/thefish/alchemyst-go/engine/types"
"lab.zaar.be/thefish/alchemyst-go/util"
@ -37,10 +38,15 @@ var fges = map[int]types.RectFill{
},
}
func DefaultGen(l *gamemap.Level) (*gamemap.Level, []*gamemap.Room) {
func DefaultGen(ctx util.ClientCtx,l *gamemap.Level) (*gamemap.Level, []*gamemap.Room) {
rng := util.NewRNG()
//load prefabs
//pfLoader := gamemap.NewPrefabLoader(ctx)
//pfRooms := pfLoader.PrefabRoomsList()
//fill with walls
for i := 0; i < l.W; i ++ {
for j := 0; j < l.H; j++ {
@ -51,20 +57,27 @@ func DefaultGen(l *gamemap.Level) (*gamemap.Level, []*gamemap.Room) {
rooms := make([]*gamemap.Room, 0)
for i := 0; i < maxrooms; i++ {
var failed = false
failed := false
var fillage types.RectFill
fillage = fges[rng.GetWeightedEntity(map[int]int{1: 10, 2: 1})]
newRoom := gamemap.NewRandomRectRoom(
rng,
rng.Range(minRoomSize, maxRoomSize),
rng.Range(minRoomSize, maxRoomSize),
fillage,
)
var newRoom *gamemap.Room
//if rng.Range(0, 5) > 3 {
newRoom = gamemap.NewRandomRectRoom(
rng,
rng.Range(minRoomSize, maxRoomSize),
rng.Range(minRoomSize, maxRoomSize),
fillage,
)
//} else {
// prefab
// newRoom = &pfRooms[0]
//}
where := types.Coords{
rng.Range(1, l.W -2 - newRoom.W),
rng.Range(1, l.H - 2 - newRoom.H),
}
newRoom.MoveToCoords(where)
for _, otherRoom := range rooms {
if otherRoom.Intersects(newRoom.Rect) {
@ -77,7 +90,6 @@ func DefaultGen(l *gamemap.Level) (*gamemap.Level, []*gamemap.Room) {
rooms = append(rooms, newRoom)
}
newRoom.BlitToLevel(l, where)
//addStairs(rooms)
//itemize(rooms)
}
@ -87,7 +99,12 @@ func DefaultGen(l *gamemap.Level) (*gamemap.Level, []*gamemap.Room) {
//refine it to minimum spanning tree
//connect accordingly
for _, room := range rooms {
err := room.BlitToLevel(l)
if err != nil {
fmt.Printf("err: %v", err)
}
}
for idx, room := range rooms {
if idx > 0 {