Convert default textures into Go code
|
@ -0,0 +1,15 @@
|
||||||
|
00000000: 8950 4e47 0d0a 1a0a 0000 000d 4948 4452 .PNG........IHDR
|
||||||
|
00000010: 0000 0010 0000 0010 0806 0000 001f f3ff ................
|
||||||
|
00000020: 6100 0000 0173 5247 4200 aece 1ce9 0000 a....sRGB.......
|
||||||
|
00000030: 0006 624b 4744 008b 00b9 00f9 319b b5db ..bKGD......1...
|
||||||
|
00000040: 0000 0009 7048 5973 0000 0b13 0000 0b13 ....pHYs........
|
||||||
|
00000050: 0100 9a9c 1800 0000 0774 494d 4507 e102 .........tIME...
|
||||||
|
00000060: 090e 371e 7692 ce30 0000 000c 6954 5874 ..7.v..0....iTXt
|
||||||
|
00000070: 436f 6d6d 656e 7400 0000 0000 bcae b299 Comment.........
|
||||||
|
00000080: 0000 0049 4944 4154 38cb 63e8 def9 f33f ...IIDAT8.c....?
|
||||||
|
00000090: 0310 904b 5304 c086 50c5 249a bae0 3f10 ...KS...P.$...?.
|
||||||
|
000000a0: d0cf 05ff 9100 ba0b 9069 a25c 458c 46bc .........i.\E.F.
|
||||||
|
000000b0: 2ec0 6600 0329 8145 8c01 282e 20c7 00ac ..f..).E..(. ...
|
||||||
|
000000c0: ae20 c50b 4324 2512 6f12 9934 00f0 bce0 . ..C$%.o..4....
|
||||||
|
000000d0: 8954 1981 2400 0000 0049 454e 44ae 4260 .T..$....IEND.B`
|
||||||
|
000000e0: 82 .
|
|
@ -36,10 +36,7 @@ func connectContent(conn net.Conn, name, userName string) (*contentConn, error)
|
||||||
userName: userName,
|
userName: userName,
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := cc.readDefaultTextures(); err != nil {
|
cc.addDefaultTextures()
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
go handleContent(cc)
|
go handleContent(cc)
|
||||||
return cc, nil
|
return cc, nil
|
||||||
}
|
}
|
||||||
|
|
34
content.go
|
@ -1,13 +1,10 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"crypto/sha1"
|
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
"errors"
|
"errors"
|
||||||
"log"
|
"log"
|
||||||
"net"
|
"net"
|
||||||
"os"
|
|
||||||
"path/filepath"
|
|
||||||
"regexp"
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
@ -18,6 +15,8 @@ import (
|
||||||
"github.com/anon55555/mt/rudp"
|
"github.com/anon55555/mt/rudp"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
//go:generate go run gen_textures.go
|
||||||
|
|
||||||
var b64 = base64.StdEncoding
|
var b64 = base64.StdEncoding
|
||||||
|
|
||||||
type mediaFile struct {
|
type mediaFile struct {
|
||||||
|
@ -63,33 +62,8 @@ func (cc *contentConn) setState(state clientState) {
|
||||||
|
|
||||||
func (cc *contentConn) done() <-chan struct{} { return cc.doneCh }
|
func (cc *contentConn) done() <-chan struct{} { return cc.doneCh }
|
||||||
|
|
||||||
func (cc *contentConn) readDefaultTextures() error {
|
func (cc *contentConn) addDefaultTextures() {
|
||||||
executable, err := os.Executable()
|
cc.media = defaultTextures // auto generated variable, see gen_textures.go
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
path := filepath.Dir(executable) + "/textures"
|
|
||||||
files, err := os.ReadDir(path)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, file := range files {
|
|
||||||
data, err := os.ReadFile(path + "/" + file.Name())
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
sum := sha1.Sum(data)
|
|
||||||
cc.media = append(cc.media, mediaFile{
|
|
||||||
name: file.Name(),
|
|
||||||
base64SHA1: b64.EncodeToString(sum[:]),
|
|
||||||
data: data,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cc *contentConn) log(dir string, v ...interface{}) {
|
func (cc *contentConn) log(dir string, v ...interface{}) {
|
||||||
|
|
|
@ -0,0 +1,62 @@
|
||||||
|
//go:build ignore
|
||||||
|
// +build ignore
|
||||||
|
|
||||||
|
// This program generates default_textures.go. It can be invoked
|
||||||
|
// by running go generate
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"crypto/sha1"
|
||||||
|
"encoding/base64"
|
||||||
|
"encoding/hex"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
var b64 = base64.StdEncoding
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
f, err := os.OpenFile("default_textures.go", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
defer f.Close()
|
||||||
|
|
||||||
|
f.WriteString("package main\n")
|
||||||
|
f.WriteString("\n")
|
||||||
|
f.WriteString("var defaultTextures = []mediaFile{\n")
|
||||||
|
|
||||||
|
dir, err := os.ReadDir("textures")
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, file := range dir {
|
||||||
|
name := file.Name()
|
||||||
|
data, err := os.ReadFile("textures/" + name)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
sum := sha1.Sum(data)
|
||||||
|
|
||||||
|
f.WriteString("\tmediaFile{\n")
|
||||||
|
f.WriteString("\t\tname: \"" + name + "\",\n")
|
||||||
|
f.WriteString("\t\tbase64SHA1: \"" + b64.EncodeToString(sum[:]) + "\",\n")
|
||||||
|
f.WriteString("\t\tdata: []byte{")
|
||||||
|
|
||||||
|
var strs []string
|
||||||
|
for _, b := range data {
|
||||||
|
strs = append(strs, "0x"+hex.EncodeToString([]byte{b}))
|
||||||
|
}
|
||||||
|
|
||||||
|
f.WriteString(strings.Join(strs, ", ") + "},\n")
|
||||||
|
f.WriteString("\t},\n")
|
||||||
|
}
|
||||||
|
|
||||||
|
f.WriteString("}\n")
|
||||||
|
}
|
After Width: | Height: | Size: 225 B |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 95 B |
After Width: | Height: | Size: 142 B |
After Width: | Height: | Size: 68 B |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 147 B |
After Width: | Height: | Size: 182 B |
After Width: | Height: | Size: 201 B |
After Width: | Height: | Size: 210 B |
After Width: | Height: | Size: 173 B |
After Width: | Height: | Size: 191 B |
After Width: | Height: | Size: 873 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 288 B |
After Width: | Height: | Size: 436 B |
After Width: | Height: | Size: 766 B |
After Width: | Height: | Size: 708 B |
After Width: | Height: | Size: 255 B |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 908 B |
After Width: | Height: | Size: 971 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 144 B |
After Width: | Height: | Size: 255 B |
After Width: | Height: | Size: 68 B |
After Width: | Height: | Size: 234 B |
After Width: | Height: | Size: 331 B |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 2.5 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 580 B |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 124 B |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 420 B |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 714 B |
After Width: | Height: | Size: 586 B |
After Width: | Height: | Size: 178 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 449 B |
After Width: | Height: | Size: 142 B |
After Width: | Height: | Size: 140 B |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 763 B |
After Width: | Height: | Size: 714 B |
After Width: | Height: | Size: 413 B |
After Width: | Height: | Size: 354 B |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 227 B |
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 916 B |
After Width: | Height: | Size: 273 B |
After Width: | Height: | Size: 713 B |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 385 B |
After Width: | Height: | Size: 251 B |
After Width: | Height: | Size: 244 B |
After Width: | Height: | Size: 245 B |
After Width: | Height: | Size: 213 B |
After Width: | Height: | Size: 492 B |
After Width: | Height: | Size: 202 B |
After Width: | Height: | Size: 912 B |
After Width: | Height: | Size: 4.3 KiB |
After Width: | Height: | Size: 292 B |
After Width: | Height: | Size: 193 B |
After Width: | Height: | Size: 254 B |
After Width: | Height: | Size: 126 B |
After Width: | Height: | Size: 1.3 KiB |