Fix content handling

master
HimbeerserverDE 2021-08-28 11:44:54 +02:00
parent 11ee71e7d2
commit e0e39bfb95
No known key found for this signature in database
GPG Key ID: 1A651504791E6A8B
2 changed files with 69 additions and 6 deletions

View File

@ -156,7 +156,6 @@ func handleContent(cc *contentConn) {
cc.nodeDefs = append(cc.nodeDefs, def)
}
case *mt.ToCltAnnounceMedia:
// ToDo: OOB media support
var filenames []string
for _, f := range cmd.Files {
@ -255,9 +254,18 @@ func muxItemDefs(conns []*contentConn) ([]mt.ItemDef, []struct{ Alias, Orig stri
go func() {
<-cc.done()
for _, def := range cc.itemDefs {
def.Name = cc.name + "_" + def.Name
if def.Name == "" {
def.Name = cc.name + "_hand"
} else {
def.Name = cc.name + "_" + def.Name
}
def.InvImg = mt.Texture(cc.name) + "_" + def.InvImg
def.WieldImg = mt.Texture(cc.name) + "_" + def.WieldImg
def.Palette = mt.Texture(cc.name) + "_" + def.Palette
def.InvOverlay = mt.Texture(cc.name) + "_" + def.InvOverlay
def.WieldOverlay = mt.Texture(cc.name) + "_" + def.WieldOverlay
itemDefs = append(itemDefs, def)
// ToDo: Hand mux
}
for _, alias := range cc.aliases {
@ -302,6 +310,23 @@ func muxNodeDefs(conns []*contentConn) (nodeDefs []mt.NodeDef, p0Map param0Map,
def.Param0 = param0
def.Name = cc.name + "_" + def.Name
def.Mesh = cc.name + "_" + def.Mesh
for k, v := range def.Tiles {
def.Tiles[k].Texture = mt.Texture(cc.name) + "_" + v.Texture
}
for k, v := range def.OverlayTiles {
def.OverlayTiles[k].Texture = mt.Texture(cc.name) + "_" + v.Texture
}
for k, v := range def.SpecialTiles {
def.SpecialTiles[k].Texture = mt.Texture(cc.name) + "_" + v.Texture
}
def.Palette = mt.Texture(cc.name) + "_" + def.Palette
for k, v := range def.ConnectTo {
def.ConnectTo[k] = p0Map[cc.name][v]
}
def.FootstepSnd.Name = cc.name + "_" + def.FootstepSnd.Name
def.DiggingSnd.Name = cc.name + "_" + def.DiggingSnd.Name
def.DugSnd.Name = cc.name + "_" + def.DugSnd.Name
nodeDefs = append(nodeDefs, def)
param0++

44
main.go
View File

@ -38,7 +38,7 @@ func main() {
l := listen(pc)
defer l.close()
log.Print("{←|⇶} listening on ", l.addr())
log.Print("{←|⇶} listen ", l.addr())
clts := make(map[*clientConn]struct{})
var mu sync.Mutex
@ -87,8 +87,46 @@ func main() {
go func() {
<-cc.init()
cc.log("<->", "handshake completed")
// ToDo: establish serverConn
// and start handler goroutines
if len(conf.Servers) == 0 {
cc.log("<--", "no servers")
ack, _ := cc.SendCmd(&mt.ToCltDisco{
Reason: mt.Custom,
Custom: "No servers are configured.",
})
<-ack
cc.Close()
return
}
addr, err := net.ResolveUDPAddr("udp", conf.Servers[0].Addr)
if err != nil {
cc.log("<--", "address resolution fail")
ack, _ := cc.SendCmd(&mt.ToCltDisco{
Reason: mt.Custom,
Custom: "Server address resolution failed.",
})
<-ack
cc.Close()
return
}
conn, err := net.DialUDP("udp", nil, addr)
if err != nil {
cc.log("<--", "connection fail")
ack, _ := cc.SendCmd(&mt.ToCltDisco{
Reason: mt.Custom,
Custom: "Server connection failed.",
})
<-ack
cc.Close()
return
}
sc := connect(conn)
sc.clt = cc
cc.srv = sc
sc.log("-->", "connect")
}()
}
}