canvasX method for determining the width of the loaded level
This commit is contained in:
parent
1fabcfb3f4
commit
62d4c7771a
|
@ -18,7 +18,7 @@ var cmdServer = &cobra.Command{
|
||||||
Long: `Runs Gosl as a server
|
Long: `Runs Gosl as a server
|
||||||
|
|
||||||
[TODO:]
|
[TODO:]
|
||||||
gosl.json for configuration (Port/Adress, Level)
|
gosl.json for configuration (Port/Address, Level)
|
||||||
`,
|
`,
|
||||||
// Run:
|
// Run:
|
||||||
}
|
}
|
||||||
|
@ -30,14 +30,15 @@ type goslClient struct {
|
||||||
h int
|
h int
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* GLOBAL SERVER STATE */
|
||||||
var (
|
var (
|
||||||
LevelFile string
|
LevelFile string
|
||||||
World *data.Level
|
level *data.Level
|
||||||
ServerPort int
|
ServerPort int
|
||||||
|
TotalWidth int = 0
|
||||||
|
clients map[int]goslClient = make(map[int]goslClient)
|
||||||
|
clientKeys []int = make([]int, 100)
|
||||||
)
|
)
|
||||||
var TotalWidth int = 0
|
|
||||||
var clients map[int]goslClient = make(map[int]goslClient)
|
|
||||||
var clientKeys []int = make([]int, 100)
|
|
||||||
|
|
||||||
func handleConn(conn *net.TCPConn) {
|
func handleConn(conn *net.TCPConn) {
|
||||||
var hs data.Handshake
|
var hs data.Handshake
|
||||||
|
@ -53,14 +54,14 @@ func handleConn(conn *net.TCPConn) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func serveClients() {
|
func serveClients() {
|
||||||
World = data.LoadLevel(LevelFile)
|
level = data.LoadLevel(LevelFile)
|
||||||
|
log.Println("canvas X:", canvasX())
|
||||||
fCounter := 0
|
fCounter := 0
|
||||||
for { // while true
|
for { // while true
|
||||||
for _, k := range clientKeys {
|
for _, k := range clientKeys {
|
||||||
id, client := k, clients[k]
|
id, client := k, clients[k]
|
||||||
if id > 0 {
|
if id > 0 {
|
||||||
oFrame := World.GetFrame(0, client.w, fCounter)
|
oFrame := level.GetFrame(0, client.w, fCounter)
|
||||||
|
|
||||||
enc := gob.NewEncoder(client.con)
|
enc := gob.NewEncoder(client.con)
|
||||||
err := enc.Encode(oFrame)
|
err := enc.Encode(oFrame)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -79,7 +80,7 @@ func serveClients() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fCounter++
|
fCounter++
|
||||||
time.Sleep(time.Second / time.Duration(World.FPS))
|
time.Sleep(time.Second / time.Duration(level.FPS))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -109,3 +110,13 @@ func init() {
|
||||||
cmdServer.Flags().StringVarP(&LevelFile, "level", "l", "default.lvl", "Use specific levelfile")
|
cmdServer.Flags().StringVarP(&LevelFile, "level", "l", "default.lvl", "Use specific levelfile")
|
||||||
cmdServer.Flags().IntVarP(&ServerPort, "port", "p", 8090, "Run server on this port")
|
cmdServer.Flags().IntVarP(&ServerPort, "port", "p", 8090, "Run server on this port")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func canvasX() (x int) {
|
||||||
|
x = 0
|
||||||
|
for _, k := range clientKeys {
|
||||||
|
_, client := k, clients[k]
|
||||||
|
x += client.w
|
||||||
|
}
|
||||||
|
x += level.Width()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
|
@ -72,6 +72,23 @@ func (lvl *Level) Height() int {
|
||||||
return max
|
return max
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (lvl *Level) Width() (max int) {
|
||||||
|
max = 0
|
||||||
|
for _, lay := range lvl.Layers {
|
||||||
|
// lay is of type map[int]([][]rune)
|
||||||
|
for _, fra := range lay.Frames {
|
||||||
|
// fra is of type [][]rune
|
||||||
|
for _, fra2 := range fra {
|
||||||
|
// fra2 is of type []rune
|
||||||
|
if len(fra2) > max {
|
||||||
|
max = len(fra2)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func (lvl *Level) GetFrame(off, w, frame int) (ret *Frame) {
|
func (lvl *Level) GetFrame(off, w, frame int) (ret *Frame) {
|
||||||
//log.Println(ret)
|
//log.Println(ret)
|
||||||
h := lvl.Height()
|
h := lvl.Height()
|
||||||
|
|
Loading…
Reference in New Issue
Block a user