aboutsummaryrefslogtreecommitdiff
path: root/connect.go
blob: 7dfe277b95772aa66229a8ce702f0bfa747319c9 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package proxy

import (
	"net"

	"github.com/anon55555/mt"
)

func connect(conn net.Conn, name string, cc *ClientConn) *ServerConn {
	cc.mu.RLock()
	if cc.srv != nil {
		cc.Log("<->", "already connected to server")
		cc.mu.RUnlock()
		return nil
	}
	cc.mu.RUnlock()

	sc := &ServerConn{
		Peer:             mt.Connect(conn),
		initCh:           make(chan struct{}),
		clt:              cc,
		name:             name,
		aos:              make(map[mt.AOID]struct{}),
		particleSpawners: make(map[mt.ParticleSpawnerID]struct{}),
		sounds:           make(map[mt.SoundID]struct{}),
		huds:             make(map[mt.HUDID]mt.HUDType),
		playerList:       make(map[string]struct{}),
	}
	sc.Log("-->", "connect")

	cc.mu.Lock()
	cc.srv = sc
	cc.mu.Unlock()

	go handleSrv(sc)
	return sc
}

func connectContent(conn net.Conn, name, userName string) (*contentConn, error) {
	cc := &contentConn{
		Peer:     mt.Connect(conn),
		doneCh:   make(chan struct{}),
		name:     name,
		userName: userName,
	}

	cc.addDefaultTextures()
	go handleContent(cc)
	return cc, nil
}