Compare commits
3 Commits
dcb7b0da02
...
93493c2af7
| Author | SHA1 | Date | |
|---|---|---|---|
| 93493c2af7 | |||
| 54b774cade | |||
| 74c43fc8c6 |
@@ -1,5 +1,9 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
)
|
||||||
|
|
||||||
func AssignExtraRooms(rooms []RoomFolder, roomsPerNight int) {
|
func AssignExtraRooms(rooms []RoomFolder, roomsPerNight int) {
|
||||||
latestnight := 0
|
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)
|
roomIni, err := loadIni(meta, room)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return RoomIni{}, fmt.Errorf("ERROR: error loading ini from %s: %+v", path, err)
|
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")
|
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
|
return RoomIni{}, err
|
||||||
} else {
|
} else {
|
||||||
roomini.size = val
|
roomini.size = val
|
||||||
}
|
}
|
||||||
|
|
||||||
if val, err := loatFloat(room, "speed", 1); err != nil {
|
if val, err := loadFloat(room, "speed", 1); err != nil {
|
||||||
return RoomIni{}, err
|
return RoomIni{}, err
|
||||||
} else {
|
} else {
|
||||||
roomini.speed = val
|
roomini.speed = val
|
||||||
}
|
}
|
||||||
|
|
||||||
if val, err := loatFloat(room, "fov", 55); err != nil {
|
if val, err := loadFloat(room, "fov", 55); err != nil {
|
||||||
return RoomIni{}, err
|
return RoomIni{}, err
|
||||||
} else {
|
} else {
|
||||||
roomini.fov = val
|
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
|
return RoomIni{}, err
|
||||||
} else {
|
} else {
|
||||||
roomini.textureRepeat = val
|
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
|
return RoomIni{}, err
|
||||||
} else {
|
} else {
|
||||||
roomini.roomHeight = val
|
roomini.roomHeight = val
|
||||||
@@ -159,13 +163,13 @@ func loadIni(meta *ini.Section, room *ini.Section) (RoomIni, error) {
|
|||||||
roomini.fogColor = val
|
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
|
return RoomIni{}, err
|
||||||
} else {
|
} else {
|
||||||
roomini.fogEnd = val
|
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
|
return RoomIni{}, err
|
||||||
} else {
|
} else {
|
||||||
roomini.miniSpeed = val
|
roomini.miniSpeed = val
|
||||||
@@ -187,7 +191,7 @@ func loadInt(sec *ini.Section, key string, def int) (int, error) {
|
|||||||
return valint, nil
|
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)
|
val, err := sec.GetKey(key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return def, nil
|
return def, nil
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import "flag"
|
import (
|
||||||
|
"flag"
|
||||||
|
"log"
|
||||||
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
if err := mainErr(); err != nil {
|
if err := mainErr(); err != nil {
|
||||||
@@ -23,6 +26,12 @@ func mainErr() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
err = CheckDuplicateRooms(roomFolders)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Error in room assigmnents: %v", err)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
AssignExtraRooms(roomFolders, *roomPerNight)
|
AssignExtraRooms(roomFolders, *roomPerNight)
|
||||||
|
|
||||||
// only deletes DATA/NIGHT_* folders and the CF.ini file
|
// 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 := image.NewRGBA(image.Rectangle{image.Point{0, 0}, image.Point{1, 1}})
|
||||||
transparent.Set(0, 0, color.RGBA{0xff, 0xff, 0xff, 0x01})
|
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 {
|
for _, imagename := range extraRequiredImages {
|
||||||
imagepath := path.Join(roomoutpath, imagename+".png")
|
imagepath := path.Join(roomoutpath, imagename+".png")
|
||||||
|
|
||||||
@@ -161,9 +167,13 @@ func copyFolder(roomFolder RoomFolder, outpath string) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
if strings.ToUpper(imagename) == "MINI" {
|
||||||
|
png.Encode(f, transparentminifig)
|
||||||
|
} else {
|
||||||
png.Encode(f, transparent)
|
png.Encode(f, transparent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if len(extraRequiredAudio) > 0 {
|
if len(extraRequiredAudio) > 0 {
|
||||||
log.Printf("INFO: necessary optional audios will use a silent file: %v", extraRequiredAudio)
|
log.Printf("INFO: necessary optional audios will use a silent file: %v", extraRequiredAudio)
|
||||||
|
|||||||
Reference in New Issue
Block a user