Compare commits
3 Commits
dcb7b0da02
...
93493c2af7
| Author | SHA1 | Date | |
|---|---|---|---|
| 93493c2af7 | |||
| 54b774cade | |||
| 74c43fc8c6 |
@@ -1,5 +1,9 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
)
|
||||
|
||||
func AssignExtraRooms(rooms []RoomFolder, roomsPerNight int) {
|
||||
latestnight := 0
|
||||
|
||||
@@ -27,3 +31,33 @@ func AssignExtraRooms(rooms []RoomFolder, roomsPerNight int) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func CheckDuplicateRooms(rooms []RoomFolder) error {
|
||||
maxnight := 0
|
||||
maxroom := 0
|
||||
|
||||
for _, r := range rooms {
|
||||
if r.Cfg.night > maxnight {
|
||||
maxnight = r.Cfg.night
|
||||
}
|
||||
if r.Cfg.room > maxroom {
|
||||
maxroom = r.Cfg.room
|
||||
}
|
||||
}
|
||||
|
||||
assignments := make([][]string, maxnight)
|
||||
for night := range maxnight {
|
||||
assignments[night] = make([]string, maxroom)
|
||||
}
|
||||
|
||||
for _, r := range rooms {
|
||||
if r.Cfg.night > 0 && r.Cfg.room > 0 {
|
||||
if assignments[r.Cfg.night-1][r.Cfg.room-1] != "" {
|
||||
return fmt.Errorf("duplicate room assignment for Room %d Night %d: %s, %s", r.Cfg.night, r.Cfg.room, assignments[r.Cfg.night][r.Cfg.room], r.Path)
|
||||
}
|
||||
assignments[r.Cfg.night-1][r.Cfg.room-1] = r.Path
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -90,6 +90,10 @@ func ReadIni(path string) (RoomIni, error) {
|
||||
}
|
||||
}
|
||||
|
||||
if room == nil {
|
||||
room = meta
|
||||
}
|
||||
|
||||
roomIni, err := loadIni(meta, room)
|
||||
if err != nil {
|
||||
return RoomIni{}, fmt.Errorf("ERROR: error loading ini from %s: %+v", path, err)
|
||||
@@ -117,31 +121,31 @@ func loadIni(meta *ini.Section, room *ini.Section) (RoomIni, error) {
|
||||
return RoomIni{}, fmt.Errorf("night is set but room is not set")
|
||||
}
|
||||
|
||||
if val, err := loatFloat(room, "size", 1); err != nil {
|
||||
if val, err := loadFloat(room, "size", 1); err != nil {
|
||||
return RoomIni{}, err
|
||||
} else {
|
||||
roomini.size = val
|
||||
}
|
||||
|
||||
if val, err := loatFloat(room, "speed", 1); err != nil {
|
||||
if val, err := loadFloat(room, "speed", 1); err != nil {
|
||||
return RoomIni{}, err
|
||||
} else {
|
||||
roomini.speed = val
|
||||
}
|
||||
|
||||
if val, err := loatFloat(room, "fov", 55); err != nil {
|
||||
if val, err := loadFloat(room, "fov", 55); err != nil {
|
||||
return RoomIni{}, err
|
||||
} else {
|
||||
roomini.fov = val
|
||||
}
|
||||
|
||||
if val, err := loatFloat(room, "texture_repeat", 3); err != nil {
|
||||
if val, err := loadFloat(room, "texture_repeat", 3); err != nil {
|
||||
return RoomIni{}, err
|
||||
} else {
|
||||
roomini.textureRepeat = val
|
||||
}
|
||||
|
||||
if val, err := loatFloat(room, "room_height", 350); err != nil {
|
||||
if val, err := loadFloat(room, "room_height", 350); err != nil {
|
||||
return RoomIni{}, err
|
||||
} else {
|
||||
roomini.roomHeight = val
|
||||
@@ -159,13 +163,13 @@ func loadIni(meta *ini.Section, room *ini.Section) (RoomIni, error) {
|
||||
roomini.fogColor = val
|
||||
}
|
||||
|
||||
if val, err := loatFloat(room, "fog_end", -1); err != nil {
|
||||
if val, err := loadFloat(room, "fog_end", -1); err != nil {
|
||||
return RoomIni{}, err
|
||||
} else {
|
||||
roomini.fogEnd = val
|
||||
}
|
||||
|
||||
if val, err := loatFloat(room, "mini_speed", 1); err != nil {
|
||||
if val, err := loadFloat(room, "mini_speed", 1); err != nil {
|
||||
return RoomIni{}, err
|
||||
} else {
|
||||
roomini.miniSpeed = val
|
||||
@@ -187,7 +191,7 @@ func loadInt(sec *ini.Section, key string, def int) (int, error) {
|
||||
return valint, nil
|
||||
}
|
||||
|
||||
func loatFloat(sec *ini.Section, key string, def float64) (float64, error) {
|
||||
func loadFloat(sec *ini.Section, key string, def float64) (float64, error) {
|
||||
val, err := sec.GetKey(key)
|
||||
if err != nil {
|
||||
return def, nil
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package main
|
||||
|
||||
import "flag"
|
||||
import (
|
||||
"flag"
|
||||
"log"
|
||||
)
|
||||
|
||||
func main() {
|
||||
if err := mainErr(); err != nil {
|
||||
@@ -23,6 +26,12 @@ func mainErr() error {
|
||||
return err
|
||||
}
|
||||
|
||||
err = CheckDuplicateRooms(roomFolders)
|
||||
if err != nil {
|
||||
log.Printf("Error in room assigmnents: %v", err)
|
||||
return nil
|
||||
}
|
||||
|
||||
AssignExtraRooms(roomFolders, *roomPerNight)
|
||||
|
||||
// only deletes DATA/NIGHT_* folders and the CF.ini file
|
||||
|
||||
@@ -154,6 +154,12 @@ func copyFolder(roomFolder RoomFolder, outpath string) error {
|
||||
transparent := image.NewRGBA(image.Rectangle{image.Point{0, 0}, image.Point{1, 1}})
|
||||
transparent.Set(0, 0, color.RGBA{0xff, 0xff, 0xff, 0x01})
|
||||
|
||||
transparentminifig := image.NewRGBA(image.Rectangle{image.Point{0, 0}, image.Point{4, 1}})
|
||||
transparentminifig.Set(0, 0, color.RGBA{0xff, 0xff, 0xff, 0x01})
|
||||
transparentminifig.Set(1, 0, color.RGBA{0xff, 0xff, 0xff, 0x01})
|
||||
transparentminifig.Set(2, 0, color.RGBA{0xff, 0xff, 0xff, 0x01})
|
||||
transparentminifig.Set(3, 0, color.RGBA{0xff, 0xff, 0xff, 0x01})
|
||||
|
||||
for _, imagename := range extraRequiredImages {
|
||||
imagepath := path.Join(roomoutpath, imagename+".png")
|
||||
|
||||
@@ -161,7 +167,11 @@ func copyFolder(roomFolder RoomFolder, outpath string) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
png.Encode(f, transparent)
|
||||
if strings.ToUpper(imagename) == "MINI" {
|
||||
png.Encode(f, transparentminifig)
|
||||
} else {
|
||||
png.Encode(f, transparent)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user