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,
|
||||
}
|
||||
|
||||
if err := cc.readDefaultTextures(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
cc.addDefaultTextures()
|
||||
go handleContent(cc)
|
||||
return cc, nil
|
||||
}
|
||||
|
|
34
content.go
|
@ -1,13 +1,10 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"crypto/sha1"
|
||||
"encoding/base64"
|
||||
"errors"
|
||||
"log"
|
||||
"net"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"regexp"
|
||||
"strings"
|
||||
"sync"
|
||||
|
@ -18,6 +15,8 @@ import (
|
|||
"github.com/anon55555/mt/rudp"
|
||||
)
|
||||
|
||||
//go:generate go run gen_textures.go
|
||||
|
||||
var b64 = base64.StdEncoding
|
||||
|
||||
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) readDefaultTextures() error {
|
||||
executable, err := os.Executable()
|
||||
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) addDefaultTextures() {
|
||||
cc.media = defaultTextures // auto generated variable, see gen_textures.go
|
||||
}
|
||||
|
||||
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 |