diff --git a/ByteEdu.Com/Gophers/bin/Gopher.exe b/ByteEdu.Com/Gophers/bin/Gopher.exe
new file mode 100644
index 00000000..cf49681e
Binary files /dev/null and b/ByteEdu.Com/Gophers/bin/Gopher.exe differ
diff --git a/ByteEdu.Com/Gophers/bin/linux_amd64/Gopher b/ByteEdu.Com/Gophers/bin/linux_amd64/Gopher
new file mode 100644
index 00000000..d6af2872
Binary files /dev/null and b/ByteEdu.Com/Gophers/bin/linux_amd64/Gopher differ
diff --git a/ByteEdu.Com/Gophers/src/Gopher/Gopher.exe b/ByteEdu.Com/Gophers/src/Gopher/Gopher.exe
new file mode 100644
index 00000000..c7c67bda
Binary files /dev/null and b/ByteEdu.Com/Gophers/src/Gopher/Gopher.exe differ
diff --git a/ByteEdu.Com/Gophers/src/Gopher/tmain.go b/ByteEdu.Com/Gophers/src/Gopher/tmain.go
new file mode 100644
index 00000000..b425c4ab
--- /dev/null
+++ b/ByteEdu.Com/Gophers/src/Gopher/tmain.go
@@ -0,0 +1,181 @@
+package main
+
+import (
+ "Proto_Go"
+ "fmt"
+ "net/http"
+ "sort"
+ "strconv"
+)
+
+// http://127.0.0.1:8891/ByteEdu_Gophers?Protocol=1&Protocol2=1&Itype=1&LoginName=ByteEdu.Com&LoginPW=ByteEdu.Com
+
+//------------------------------------------------------------------------------
+// 保存玩家登陆、注册的协议
+type PlayerData struct {
+ OpenID string
+ LoginName string
+ LoginPW string
+ Lev string // 职位
+ Score int
+}
+
+type ByteEduList []PlayerData
+
+func (this ByteEduList) Len() int {
+ return len(this)
+}
+
+func (this ByteEduList) Less(i, j int) bool {
+ return this[i].Score < this[j].Score
+}
+
+func (this ByteEduList) Swap(i, j int) {
+ this[i], this[j] = this[j], this[i]
+}
+
+//------------------------------------------------------------------------------
+
+var (
+ strport string = "8891"
+ PlayerDataG map[string]*PlayerData
+)
+
+func init() {
+ // 初始化 map
+ PlayerDataG = make(map[string]*PlayerData)
+ return
+}
+
+func main() {
+
+ http.HandleFunc("/ByteEdu_Gophers", IndexHandler)
+ http.ListenAndServe(":"+strport, nil)
+}
+
+func IndexHandler(w http.ResponseWriter, req *http.Request) {
+
+ if req.Method == "GET" {
+ w.Header().Set("Access-Control-Allow-Origin", "*")
+ req.ParseForm()
+ defer func() {
+ if err := recover(); err != nil {
+ fmt.Println("%s", err)
+ req.Body.Close()
+ return
+ }
+ }()
+
+ Protocol, bProtocol := req.Form["Protocol"]
+ Protocol2, bProtocol2 := req.Form["Protocol2"]
+ Itype, bItype := req.Form["Itype"]
+
+ if bProtocol && bProtocol2 && bItype {
+ if Protocol[0] == strconv.Itoa(Proto.ProtoGopher) {
+ switch Protocol2[0] {
+ case strconv.Itoa(Proto.C2S_PlayerLoginProto2):
+
+ LoginName, _ := req.Form["LoginName"]
+ LoginPW, _ := req.Form["LoginPW"]
+ strItype := Itype[0]
+ if strItype == "1" { // 注册
+ //1. 用户名要脏字过滤
+ //2. 判断用户是否注册过
+ _, ok := PlayerDataG[LoginName[0]]
+ if ok {
+ fmt.Fprintln(w, "已经注册过!")
+ return
+ } else {
+ data := &PlayerData{
+ OpenID: LoginName[0],
+ LoginName: LoginName[0],
+ LoginPW: LoginPW[0],
+ Lev: "军师", // 职位
+ }
+ // 保存
+ PlayerDataG[LoginName[0]] = data
+ fmt.Fprintln(w, "注册成功")
+ return
+ }
+ return
+ } else if strItype == "2" { // 登陆
+ _, ok := PlayerDataG[LoginName[0]]
+ if ok {
+ fmt.Fprintln(w, "登陆成功!")
+
+ return
+ } else {
+ fmt.Fprintln(w, "用户名或密码错误!")
+ return
+ }
+ }
+
+ fmt.Fprintln(w, "类型错误")
+ //------------------------------------------------------
+ return
+ case strconv.Itoa(Proto.C2S_GetRankProto2):
+ // 排行协议
+ LoginName, bLoginName := req.Form["LoginName"]
+ Score, bScore := req.Form["Score"]
+ if bLoginName && bScore {
+ v, ok := PlayerDataG[LoginName[0]]
+ iscore, _ := strconv.Atoi(Score[0])
+ // 一:数据的保存
+ if ok {
+ // 1. 保存的数据是否小于当前数据
+ if v.Score < iscore {
+ data := &PlayerData{
+ OpenID: LoginName[0],
+ LoginName: LoginName[0],
+ LoginPW: v.LoginPW,
+ Lev: v.Lev, // 职位
+ Score: iscore,
+ }
+ // 保存
+ PlayerDataG[LoginName[0]] = data
+ }
+ } else {
+ // 内存不存在的情况下保存
+ data := &PlayerData{
+ OpenID: LoginName[0],
+ LoginName: LoginName[0],
+ Lev: "军师",
+ Score: iscore,
+ }
+ // 保存
+ PlayerDataG[LoginName[0]] = data
+ }
+ // 二:排行
+ // 1. map ---> slice
+ playerdata := make([]PlayerData, len(PlayerDataG)+1)
+ i := 0
+ for _, v := range PlayerDataG {
+ i++
+ var data PlayerData
+ data.OpenID = v.OpenID
+ data.LoginName = v.LoginName
+ data.LoginPW = v.LoginPW
+ data.Lev = v.Lev
+ data.Score = v.Score
+ playerdata[i] = data
+ }
+ //2. Sort
+ sort.Sort(ByteEduList(playerdata))
+
+ // 三:返回数据给客户端
+ fmt.Fprintln(w, playerdata)
+ return
+ }
+ return
+ default:
+ fmt.Fprintln(w, "88902")
+ return
+ }
+ }
+ fmt.Fprintln(w, "88904")
+ return
+ }
+ fmt.Fprintln(w, "88901")
+ return
+ }
+}
diff --git a/ByteEdu.Com/Gophers/src/Proto_Go/Error.go b/ByteEdu.Com/Gophers/src/Proto_Go/Error.go
new file mode 100644
index 00000000..904778e7
--- /dev/null
+++ b/ByteEdu.Com/Gophers/src/Proto_Go/Error.go
@@ -0,0 +1,3 @@
+package Proto
+
+// 错误码
diff --git a/ByteEdu.Com/Gophers/src/Proto_Go/Proto.go b/ByteEdu.Com/Gophers/src/Proto_Go/Proto.go
new file mode 100644
index 00000000..cca5b287
--- /dev/null
+++ b/ByteEdu.Com/Gophers/src/Proto_Go/Proto.go
@@ -0,0 +1,66 @@
+package Proto
+
+/*
+ 主协议
+*/
+const (
+ ProtoINIT = iota
+ ProtoGopher // ProtoGopher == 1 地鼠的协议
+
+)
+
+// 排行的结构
+type STRank struct {
+ Rank int
+ LoginName string
+}
+
+//------------------------------------------------------------------------------
+
+/*
+ 子协议
+*/
+const (
+ Proto2INIT = iota // 初始化
+ C2S_PlayerLoginProto2 // C2S_PlayerLoginProto2 == 1 用户登录协议
+ S2C_PlayerLoginProto2 // S2C_PlayerLoginProto2 == 2
+
+ C2S_GetRankProto2 // C2S_GetRankProto2 == 3 主动拉取排行
+ S2C_GetRankProto2 // S2C_GetRankProto2 == 4
+
+)
+
+//------------------------------------------------------------------------------
+// 主动拉取排行
+type C2S_GetRank struct {
+ Protocol int
+ Protocol2 int
+ LoginName string
+ Score int
+ Token string
+}
+
+type S2C_GetRank struct {
+ Protocol int
+ Protocol2 int
+ MapRank map[int]*STRank // 取前10名
+}
+
+//------------------------------------------------------------------------------
+// 用户登录或者注册
+type C2S_PlayerLogin struct {
+ Protocol int
+ Protocol2 int
+ Itype int // 1:表示注册,2:表示登录
+ LoginName string
+ LoginPW string
+}
+
+type S2C_PlayerLogin struct {
+ Protocol int
+ Protocol2 int
+ Token string
+ OpenID string
+}
+
+//------------------------------------------------------------------------------
diff --git "a/ByteEdu.Com/Go\350\257\255\350\250\200\346\212\275\345\245\226/src/binge/tmain.go" "b/ByteEdu.Com/Go\350\257\255\350\250\200\346\212\275\345\245\226/src/binge/tmain.go"
new file mode 100644
index 00000000..e5a523c4
--- /dev/null
+++ "b/ByteEdu.Com/Go\350\257\255\350\250\200\346\212\275\345\245\226/src/binge/tmain.go"
@@ -0,0 +1,36 @@
+// 初始化牌型
+func InitDSQ(data1 []int) [4][4]int {
+
+ data, erdata, j, k := data1, [4][4]int{}, 0, 0
+
+ for i := 0; i < Proto2.Mouse*2; i++ {
+ icount := util.RandInterval_LollipopGo(0, int32(len(data))-1)
+ //fmt.Println("随机数:", icount)
+ if len(data) == 1 {
+ erdata[3][3] = data[0]
+ } else {
+ //------------------------------------------------------------------
+ if int(icount) < len(data) {
+ erdata[j][k] = data[icount]
+ k++
+ if k%4 == 0 {
+ j++
+ k = 0
+ }
+ data = append(data[:icount], data[icount+1:]...)
+ } else {
+ erdata[j][k] = data[icount]
+ k++
+ if k%4 == 0 {
+ j++
+ k = 0
+ }
+ data = data[:icount-1]
+ }
+ //------------------------------------------------------------------
+ }
+ //fmt.Println("生成的数据", erdata)
+ }
+
+ return erdata
+}
\ No newline at end of file
diff --git "a/ByteEdu.Com/Go\350\257\255\350\250\200\346\212\275\345\245\226/src/draw/ByteEdu.txt" "b/ByteEdu.Com/Go\350\257\255\350\250\200\346\212\275\345\245\226/src/draw/ByteEdu.txt"
new file mode 100644
index 00000000..89172e59
--- /dev/null
+++ "b/ByteEdu.Com/Go\350\257\255\350\250\200\346\212\275\345\245\226/src/draw/ByteEdu.txt"
@@ -0,0 +1,4 @@
+ByteEdu教育平台抽奖 结果
+恭喜:Sixah,获得一等奖!
+恭喜:右哼哼,获得一等奖!
+恭喜:baobaoxiaoxuan,获得一等奖!恭喜:baobaoxiaoxuan,获得一等奖!
diff --git "a/ByteEdu.Com/Go\350\257\255\350\250\200\346\212\275\345\245\226/src/draw/Rand.go" "b/ByteEdu.Com/Go\350\257\255\350\250\200\346\212\275\345\245\226/src/draw/Rand.go"
new file mode 100644
index 00000000..4807d4b7
--- /dev/null
+++ "b/ByteEdu.Com/Go\350\257\255\350\250\200\346\212\275\345\245\226/src/draw/Rand.go"
@@ -0,0 +1,96 @@
+package main
+
+import (
+ "math/rand"
+ "time"
+)
+
+/*
+ 作者:彬哥
+ 来自:LollipopGo游戏服务器架构
+*/
+
+func init() {
+ rand.Seed(time.Now().UnixNano())
+}
+
+func RandGroup_LollipopGo(p ...uint32) int {
+ if p == nil {
+ panic("args not found")
+ }
+
+ r := make([]uint32, len(p))
+ for i := 0; i < len(p); i++ {
+ if i == 0 {
+ r[0] = p[0]
+ } else {
+ r[i] = r[i-1] + p[i]
+ }
+ }
+
+ rl := r[len(r)-1]
+ if rl == 0 {
+ return 0
+ }
+
+ rn := uint32(rand.Int63n(int64(rl)))
+ for i := 0; i < len(r); i++ {
+ if rn < r[i] {
+ return i
+ }
+ }
+
+ panic("bug")
+}
+
+func RandInterval_LollipopGo(b1, b2 int32) int32 {
+ if b1 == b2 {
+ return b1
+ }
+
+ min, max := int64(b1), int64(b2)
+ if min > max {
+ min, max = max, min
+ }
+ return int32(rand.Int63n(max-min+1) + min)
+}
+
+func RandIntervalN_LollipopGo(b1, b2 int32, n uint32) []int32 {
+ if b1 == b2 {
+ return []int32{b1}
+ }
+
+ min, max := int64(b1), int64(b2)
+ if min > max {
+ min, max = max, min
+ }
+ l := max - min + 1
+ if int64(n) > l {
+ n = uint32(l)
+ }
+
+ r := make([]int32, n)
+ m := make(map[int32]int32)
+ for i := uint32(0); i < n; i++ {
+ v := int32(rand.Int63n(l) + min)
+
+ if mv, ok := m[v]; ok {
+ r[i] = mv
+ } else {
+ r[i] = v
+ }
+
+ lv := int32(l - 1 + min)
+ if v != lv {
+ if mv, ok := m[lv]; ok {
+ m[v] = mv
+ } else {
+ m[v] = lv
+ }
+ }
+
+ l--
+ }
+
+ return r
+}
diff --git "a/ByteEdu.Com/Go\350\257\255\350\250\200\346\212\275\345\245\226/src/draw/ReadCSV.go" "b/ByteEdu.Com/Go\350\257\255\350\250\200\346\212\275\345\245\226/src/draw/ReadCSV.go"
new file mode 100644
index 00000000..9b0fc291
--- /dev/null
+++ "b/ByteEdu.Com/Go\350\257\255\350\250\200\346\212\275\345\245\226/src/draw/ReadCSV.go"
@@ -0,0 +1,57 @@
+package main
+
+import (
+ "encoding/csv"
+ "fmt"
+ "io/ioutil"
+ "strconv"
+ "strings"
+)
+
+/*
+ 作者:彬哥
+ 来自:LollipopGo游戏服务器架构
+*/
+
+// 结构信息
+type ByteEdu struct {
+ ID string
+ Name string
+}
+
+// 保存到数据的结构
+var G_ByteEdu map[int]*ByteEdu
+
+func init() {
+ // 初始化 map
+ G_ByteEdu = make(map[int]*ByteEdu)
+ // 读取配置表数据
+ ReadCsv_BaoMingData_Fun()
+}
+
+// 读取报名人的信息
+func ReadCsv_BaoMingData_Fun() bool {
+ fileName := "ByteEdu.csv"
+ fileName = "./csv/" + fileName
+ cntb, err := ioutil.ReadFile(fileName)
+ if err != nil {
+ panic("读取配置文件出错!")
+ return false
+ }
+ // 读取文件数据
+ r2 := csv.NewReader(strings.NewReader(string(cntb)))
+ ss, _ := r2.ReadAll()
+ sz := len(ss)
+ for i := 1; i < sz; i++ {
+ Infotmp := new(ByteEdu)
+ Infotmp.ID = ss[i][0]
+ Infotmp.Name = ss[i][1]
+ iid, err := strconv.Atoi(Infotmp.ID)
+ if err != nil {
+ continue
+ }
+ G_ByteEdu[iid] = Infotmp
+ }
+ fmt.Println("抽奖名单:", G_ByteEdu)
+ return true
+}
diff --git "a/ByteEdu.Com/Go\350\257\255\350\250\200\346\212\275\345\245\226/src/draw/WriteFile.go" "b/ByteEdu.Com/Go\350\257\255\350\250\200\346\212\275\345\245\226/src/draw/WriteFile.go"
new file mode 100644
index 00000000..7a0b6aa0
--- /dev/null
+++ "b/ByteEdu.Com/Go\350\257\255\350\250\200\346\212\275\345\245\226/src/draw/WriteFile.go"
@@ -0,0 +1,28 @@
+package main
+
+import (
+ "fmt"
+ "os"
+)
+
+/*
+ 作者:彬哥
+ 来自:LollipopGo游戏服务器架构
+*/
+
+func WriteFileData(data string) {
+
+ f, err := os.OpenFile("ByteEdu.txt", os.O_APPEND|os.O_WRONLY, 0644)
+ if err != nil {
+ fmt.Println(err)
+ f.Close()
+ return
+ }
+ fmt.Fprintln(f, data)
+
+ err = f.Close()
+ if err != nil {
+ fmt.Println(err)
+ return
+ }
+}
diff --git "a/ByteEdu.Com/Go\350\257\255\350\250\200\346\212\275\345\245\226/src/draw/csv/ByteEdu.csv" "b/ByteEdu.Com/Go\350\257\255\350\250\200\346\212\275\345\245\226/src/draw/csv/ByteEdu.csv"
new file mode 100644
index 00000000..169b9c5a
--- /dev/null
+++ "b/ByteEdu.Com/Go\350\257\255\350\250\200\346\212\275\345\245\226/src/draw/csv/ByteEdu.csv"
@@ -0,0 +1,7 @@
+id,name
+1,larrydev
+2,右哼哼
+3,Tears
+4,xiaoxiongmao
+5,Sixah
+6,baobaoxiaoxuan
\ No newline at end of file
diff --git "a/ByteEdu.Com/Go\350\257\255\350\250\200\346\212\275\345\245\226/src/draw/draw" "b/ByteEdu.Com/Go\350\257\255\350\250\200\346\212\275\345\245\226/src/draw/draw"
new file mode 100644
index 00000000..054cce5b
Binary files /dev/null and "b/ByteEdu.Com/Go\350\257\255\350\250\200\346\212\275\345\245\226/src/draw/draw" differ
diff --git "a/ByteEdu.Com/Go\350\257\255\350\250\200\346\212\275\345\245\226/src/draw/draw.exe" "b/ByteEdu.Com/Go\350\257\255\350\250\200\346\212\275\345\245\226/src/draw/draw.exe"
new file mode 100644
index 00000000..5e3e1aea
Binary files /dev/null and "b/ByteEdu.Com/Go\350\257\255\350\250\200\346\212\275\345\245\226/src/draw/draw.exe" differ
diff --git "a/ByteEdu.Com/Go\350\257\255\350\250\200\346\212\275\345\245\226/src/draw/tmain.go" "b/ByteEdu.Com/Go\350\257\255\350\250\200\346\212\275\345\245\226/src/draw/tmain.go"
new file mode 100644
index 00000000..7e49a397
--- /dev/null
+++ "b/ByteEdu.Com/Go\350\257\255\350\250\200\346\212\275\345\245\226/src/draw/tmain.go"
@@ -0,0 +1,111 @@
+package main
+
+import (
+ "bufio"
+ "fmt"
+ "os"
+ "strconv"
+ "strings"
+)
+
+/*
+ Go语言控制台抽奖
+ 1. 抽奖人,读取配置文件(CSV)
+ 2. 随机方法,随机数
+ 3. 中奖人信息写入文件
+*/
+
+func init() {
+
+}
+
+func main() {
+ reader := bufio.NewReader(os.Stdin)
+ fmt.Println("--= www.ByteEdu.Com =--")
+ fmt.Println("--------活动抽奖--------")
+ fmt.Println("输入规则:")
+ fmt.Println("A|1: A表示一等奖,1表示数量")
+ fmt.Println("B|2: B表示二等奖,2表示数量")
+ fmt.Println("C|3: C表示三等奖,3表示数量")
+ fmt.Println("注: 数量可以变化,例如A|12等")
+
+ tmpmap := make(map[int]int)
+ for {
+ fmt.Print("-> ")
+ text, _ := reader.ReadString('\n')
+ text = strings.Replace(text, "\r\n", "", -1)
+ // 截取字符
+ data := strings.Split(text, "|")
+ if len(data) != 2 {
+ fmt.Print("输入错误!")
+ continue
+ }
+ // 获取随机数
+ count, errrr := strconv.Atoi(data[1])
+ if errrr != nil {
+ fmt.Println(errrr)
+ return
+ }
+ if count >= len(G_ByteEdu) {
+ fmt.Println("全体中奖!,本轮抽奖结束!")
+ return
+ }
+ var icount []int
+ for iBINGE := 0; iBINGE < int(count); iBINGE++ {
+ ii := RandInterval_LollipopGo(0, int32(len(G_ByteEdu)))
+ icount = append(icount, int(ii))
+ }
+ if len(icount) == 0 {
+ fmt.Println("抽奖名单为空,请检查抽奖名单!,抽奖结束!")
+ return
+ }
+ switch data[0] {
+ case "A":
+ {
+ fmt.Println("抽取一等奖!")
+ for i, v := range icount {
+ fmt.Println(i, v)
+ _, ok := tmpmap[v]
+ if !ok {
+ msg := "恭喜:" + G_ByteEdu[v].Name + ",获得一等奖!"
+ fmt.Println(msg)
+ tmpmap[v] = v
+ WriteFileData(msg)
+ } else {
+ fmt.Println("很遗憾,无人中奖!")
+ }
+ }
+ }
+ case "B":
+ {
+ fmt.Println("抽取二等奖!")
+ for i, v := range icount {
+ fmt.Println(i, v)
+ _, ok := tmpmap[v]
+ if !ok {
+ fmt.Println("恭喜:" + G_ByteEdu[v].Name + ",获得二等奖!")
+ tmpmap[v] = v
+ } else {
+ fmt.Println("很遗憾,无人中奖!")
+ }
+ }
+ }
+ case "C":
+ {
+ fmt.Println("抽取三等奖!")
+ for i, v := range icount {
+ fmt.Println(i, v)
+ _, ok := tmpmap[v]
+ if !ok {
+ fmt.Println("恭喜:" + G_ByteEdu[v].Name + ",获得三等奖!")
+ tmpmap[v] = v
+ } else {
+ fmt.Println("很遗憾,无人中奖!")
+ }
+ }
+ }
+ default:
+ fmt.Println("没有中奖!")
+ }
+ }
+}
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/.vs/dsq/v15/.suo" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/.vs/dsq/v15/.suo"
new file mode 100644
index 00000000..7b129261
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/.vs/dsq/v15/.suo" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/.vs/dsq/v15/Server/sqlite3/db.lock" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/.vs/dsq/v15/Server/sqlite3/db.lock"
new file mode 100644
index 00000000..e69de29b
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/.vs/dsq/v15/Server/sqlite3/storage.ide" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/.vs/dsq/v15/Server/sqlite3/storage.ide"
new file mode 100644
index 00000000..56758a88
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/.vs/dsq/v15/Server/sqlite3/storage.ide" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/.vs/dsq/v15/Server/sqlite3/storage.ide-shm" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/.vs/dsq/v15/Server/sqlite3/storage.ide-shm"
new file mode 100644
index 00000000..d1a0dfad
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/.vs/dsq/v15/Server/sqlite3/storage.ide-shm" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/.vs/dsq/v15/Server/sqlite3/storage.ide-wal" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/.vs/dsq/v15/Server/sqlite3/storage.ide-wal"
new file mode 100644
index 00000000..ae3c7899
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/.vs/dsq/v15/Server/sqlite3/storage.ide-wal" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs.meta" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs.meta"
new file mode 100644
index 00000000..2aba1390
--- /dev/null
+++ "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs.meta"
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 910a838bfc689b649a8ec954a08f4482
+folderAsset: yes
+timeCreated: 1557045578
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs/1.jpg" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs/1.jpg"
new file mode 100644
index 00000000..7c9d1928
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs/1.jpg" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs/1.jpg.meta" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs/1.jpg.meta"
new file mode 100644
index 00000000..89592a03
--- /dev/null
+++ "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs/1.jpg.meta"
@@ -0,0 +1,84 @@
+fileFormatVersion: 2
+guid: d1d296f19f6c88940bf9d1c228679d26
+timeCreated: 1557047631
+licenseType: Free
+TextureImporter:
+ fileIDToRecycleName: {}
+ serializedVersion: 4
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 0
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ isReadable: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ filterMode: -1
+ aniso: -1
+ mipBias: -1
+ wrapMode: 1
+ nPOTScale: 0
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 1
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spritePixelsToUnits: 100
+ alphaUsage: 1
+ alphaIsTransparency: 1
+ spriteTessellationDetail: -1
+ textureType: 8
+ textureShape: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ platformSettings:
+ - buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ - buildTarget: Standalone
+ maxTextureSize: 2048
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ - buildTarget: Android
+ maxTextureSize: 2048
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ spritePackingTag:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs/1.psd" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs/1.psd"
new file mode 100644
index 00000000..11482aaf
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs/1.psd" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs/1.psd.meta" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs/1.psd.meta"
new file mode 100644
index 00000000..89169604
--- /dev/null
+++ "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs/1.psd.meta"
@@ -0,0 +1,68 @@
+fileFormatVersion: 2
+guid: e9ba8b25bc658f84b886923aee2815d0
+timeCreated: 1557047677
+licenseType: Free
+TextureImporter:
+ fileIDToRecycleName: {}
+ serializedVersion: 4
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ isReadable: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ filterMode: -1
+ aniso: -1
+ mipBias: -1
+ wrapMode: -1
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spritePixelsToUnits: 100
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ platformSettings:
+ - buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ spritePackingTag:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs/banner.jpg" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs/banner.jpg"
new file mode 100644
index 00000000..9a42663f
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs/banner.jpg" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs/banner.jpg.meta" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs/banner.jpg.meta"
new file mode 100644
index 00000000..421b9da3
--- /dev/null
+++ "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs/banner.jpg.meta"
@@ -0,0 +1,84 @@
+fileFormatVersion: 2
+guid: 9581aea3e6099ae4db1633930b032480
+timeCreated: 1557055334
+licenseType: Free
+TextureImporter:
+ fileIDToRecycleName: {}
+ serializedVersion: 4
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 0
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ isReadable: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ filterMode: -1
+ aniso: -1
+ mipBias: -1
+ wrapMode: 1
+ nPOTScale: 0
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 1
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spritePixelsToUnits: 100
+ alphaUsage: 1
+ alphaIsTransparency: 1
+ spriteTessellationDetail: -1
+ textureType: 8
+ textureShape: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ platformSettings:
+ - buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ - buildTarget: Standalone
+ maxTextureSize: 2048
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ - buildTarget: Android
+ maxTextureSize: 2048
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ spritePackingTag:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs/bj_key.png" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs/bj_key.png"
new file mode 100644
index 00000000..0c8b85a3
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs/bj_key.png" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs/bj_key.png.meta" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs/bj_key.png.meta"
new file mode 100644
index 00000000..c9148d90
--- /dev/null
+++ "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs/bj_key.png.meta"
@@ -0,0 +1,68 @@
+fileFormatVersion: 2
+guid: 8ab0121af6da7e64b84c48847b866387
+timeCreated: 1557052120
+licenseType: Free
+TextureImporter:
+ fileIDToRecycleName: {}
+ serializedVersion: 4
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ isReadable: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ filterMode: -1
+ aniso: -1
+ mipBias: -1
+ wrapMode: -1
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spritePixelsToUnits: 100
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ platformSettings:
+ - buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ spritePackingTag:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs/head.jpg" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs/head.jpg"
new file mode 100644
index 00000000..6e836f7c
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs/head.jpg" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs/head.jpg.meta" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs/head.jpg.meta"
new file mode 100644
index 00000000..6a8d342c
--- /dev/null
+++ "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs/head.jpg.meta"
@@ -0,0 +1,84 @@
+fileFormatVersion: 2
+guid: 111ae1a9ba38c654eac342b9b8be0cbe
+timeCreated: 1557053586
+licenseType: Free
+TextureImporter:
+ fileIDToRecycleName: {}
+ serializedVersion: 4
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 0
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ isReadable: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ filterMode: -1
+ aniso: -1
+ mipBias: -1
+ wrapMode: 1
+ nPOTScale: 0
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 1
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spritePixelsToUnits: 100
+ alphaUsage: 1
+ alphaIsTransparency: 1
+ spriteTessellationDetail: -1
+ textureType: 8
+ textureShape: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ platformSettings:
+ - buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ - buildTarget: Standalone
+ maxTextureSize: 2048
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ - buildTarget: Android
+ maxTextureSize: 2048
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ spritePackingTag:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs/\345\274\200\345\247\213.png" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs/\345\274\200\345\247\213.png"
new file mode 100644
index 00000000..69e83f0f
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs/\345\274\200\345\247\213.png" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs/\345\274\200\345\247\213.png.meta" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs/\345\274\200\345\247\213.png.meta"
new file mode 100644
index 00000000..5aad23ba
--- /dev/null
+++ "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs/\345\274\200\345\247\213.png.meta"
@@ -0,0 +1,84 @@
+fileFormatVersion: 2
+guid: bad8ba9a90c50a7429f578bbad6901de
+timeCreated: 1557052754
+licenseType: Free
+TextureImporter:
+ fileIDToRecycleName: {}
+ serializedVersion: 4
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 0
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ isReadable: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ filterMode: -1
+ aniso: -1
+ mipBias: -1
+ wrapMode: 1
+ nPOTScale: 0
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 1
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spritePixelsToUnits: 100
+ alphaUsage: 1
+ alphaIsTransparency: 1
+ spriteTessellationDetail: -1
+ textureType: 8
+ textureShape: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ platformSettings:
+ - buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ - buildTarget: Standalone
+ maxTextureSize: 2048
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ - buildTarget: Android
+ maxTextureSize: 2048
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ spritePackingTag:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs/\346\234\252\346\240\207\351\242\230-1.psd" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs/\346\234\252\346\240\207\351\242\230-1.psd"
new file mode 100644
index 00000000..043248ed
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs/\346\234\252\346\240\207\351\242\230-1.psd" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs/\346\234\252\346\240\207\351\242\230-1.psd.meta" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs/\346\234\252\346\240\207\351\242\230-1.psd.meta"
new file mode 100644
index 00000000..44a0cb5c
--- /dev/null
+++ "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Imgs/\346\234\252\346\240\207\351\242\230-1.psd.meta"
@@ -0,0 +1,84 @@
+fileFormatVersion: 2
+guid: 8a5170ca5f97afa478b1093d22d8a8f4
+timeCreated: 1557052120
+licenseType: Free
+TextureImporter:
+ fileIDToRecycleName: {}
+ serializedVersion: 4
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 0
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ isReadable: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ filterMode: -1
+ aniso: -1
+ mipBias: -1
+ wrapMode: 1
+ nPOTScale: 0
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 1
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spritePixelsToUnits: 100
+ alphaUsage: 1
+ alphaIsTransparency: 1
+ spriteTessellationDetail: -1
+ textureType: 8
+ textureShape: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ platformSettings:
+ - buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ - buildTarget: Standalone
+ maxTextureSize: 2048
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ - buildTarget: Android
+ maxTextureSize: 2048
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ spritePackingTag:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Scenes.meta" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Scenes.meta"
new file mode 100644
index 00000000..72c8ecd7
--- /dev/null
+++ "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Scenes.meta"
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 9cbbd394877c88541ae8aa500b2e1cd2
+folderAsset: yes
+timeCreated: 1557045557
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Scenes/PC_Game.unity" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Scenes/PC_Game.unity"
new file mode 100644
index 00000000..f56375d3
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Scenes/PC_Game.unity" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Scenes/PC_Game.unity.meta" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Scenes/PC_Game.unity.meta"
new file mode 100644
index 00000000..22dd3eb1
--- /dev/null
+++ "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Scenes/PC_Game.unity.meta"
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e8d07d2d1554e2a4daea939c5ee11e92
+timeCreated: 1557050202
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Scenes/dsq.unity" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Scenes/dsq.unity"
new file mode 100644
index 00000000..f4610924
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Scenes/dsq.unity" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Scenes/dsq.unity.meta" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Scenes/dsq.unity.meta"
new file mode 100644
index 00000000..33fc9544
--- /dev/null
+++ "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Scenes/dsq.unity.meta"
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b317025c1ac61d943bbcfc2f6e8a92d9
+timeCreated: 1557045539
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Scripts.meta" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Scripts.meta"
new file mode 100644
index 00000000..6ac38bd7
--- /dev/null
+++ "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Scripts.meta"
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 0018c4c213ebfef4f9e7ecbeb1976ff5
+folderAsset: yes
+timeCreated: 1557045567
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Scripts/wx.cs" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Scripts/wx.cs"
new file mode 100644
index 00000000..27186c82
--- /dev/null
+++ "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Scripts/wx.cs"
@@ -0,0 +1,26 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class wx : MonoBehaviour {
+
+ // Use this for initialization
+ void Start () {
+
+ }
+
+ // Update is called once per frame
+ void Update () {
+
+ }
+
+ /*
+ 微信接入
+ */
+
+ public void WX_TiaoZhuan()
+ {
+ Application.LoadLevel(1);
+ }
+
+}
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Scripts/wx.cs.meta" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Scripts/wx.cs.meta"
new file mode 100644
index 00000000..cda57dea
--- /dev/null
+++ "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Assets/Scripts/wx.cs.meta"
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: bec613d4c1a70814fbaa396af0e9f9d9
+timeCreated: 1557049008
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/AnnotationManager" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/AnnotationManager"
new file mode 100644
index 00000000..48eafc65
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/AnnotationManager" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/AssetImportState" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/AssetImportState"
new file mode 100644
index 00000000..9a1ac963
--- /dev/null
+++ "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/AssetImportState"
@@ -0,0 +1 @@
+5;0;6;0;0
\ No newline at end of file
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/AssetServerCacheV3" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/AssetServerCacheV3"
new file mode 100644
index 00000000..ef1d05ef
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/AssetServerCacheV3" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/BuildPlayer.prefs" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/BuildPlayer.prefs"
new file mode 100644
index 00000000..e69de29b
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/BuildSettings.asset" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/BuildSettings.asset"
new file mode 100644
index 00000000..8cb33efe
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/BuildSettings.asset" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/CurrentLayout.dwlt" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/CurrentLayout.dwlt"
new file mode 100644
index 00000000..dd1cd21f
--- /dev/null
+++ "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/CurrentLayout.dwlt"
@@ -0,0 +1,631 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &1
+MonoBehaviour:
+ m_ObjectHideFlags: 52
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 1
+ m_Script: {fileID: 12004, guid: 0000000000000000e000000000000000, type: 0}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_PixelRect:
+ serializedVersion: 2
+ x: -114
+ y: 84
+ width: 1920
+ height: 1037
+ m_ShowMode: 4
+ m_Title:
+ m_RootView: {fileID: 2}
+ m_MinSize: {x: 950, y: 492}
+ m_MaxSize: {x: 10000, y: 10000}
+--- !u!114 &2
+MonoBehaviour:
+ m_ObjectHideFlags: 52
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 1
+ m_Script: {fileID: 12008, guid: 0000000000000000e000000000000000, type: 0}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Children:
+ - {fileID: 3}
+ - {fileID: 5}
+ - {fileID: 4}
+ m_Position:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1920
+ height: 1037
+ m_MinSize: {x: 950, y: 300}
+ m_MaxSize: {x: 10000, y: 10000}
+--- !u!114 &3
+MonoBehaviour:
+ m_ObjectHideFlags: 52
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 1
+ m_Script: {fileID: 12011, guid: 0000000000000000e000000000000000, type: 0}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Children: []
+ m_Position:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1920
+ height: 30
+ m_MinSize: {x: 0, y: 0}
+ m_MaxSize: {x: 0, y: 0}
+ m_LastLoadedLayoutName:
+--- !u!114 &4
+MonoBehaviour:
+ m_ObjectHideFlags: 52
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 1
+ m_Script: {fileID: 12042, guid: 0000000000000000e000000000000000, type: 0}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Children: []
+ m_Position:
+ serializedVersion: 2
+ x: 0
+ y: 1017
+ width: 1920
+ height: 20
+ m_MinSize: {x: 0, y: 0}
+ m_MaxSize: {x: 0, y: 0}
+--- !u!114 &5
+MonoBehaviour:
+ m_ObjectHideFlags: 52
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 1
+ m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Children:
+ - {fileID: 6}
+ - {fileID: 9}
+ - {fileID: 10}
+ - {fileID: 11}
+ m_Position:
+ serializedVersion: 2
+ x: 0
+ y: 30
+ width: 1920
+ height: 987
+ m_MinSize: {x: 911, y: 442}
+ m_MaxSize: {x: 22006, y: 10021}
+ vertical: 0
+ controlID: 88
+--- !u!114 &6
+MonoBehaviour:
+ m_ObjectHideFlags: 52
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 1
+ m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Children:
+ - {fileID: 7}
+ - {fileID: 8}
+ m_Position:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 749
+ height: 987
+ m_MinSize: {x: 202, y: 442}
+ m_MaxSize: {x: 4002, y: 8042}
+ vertical: 1
+ controlID: 22
+--- !u!114 &7
+MonoBehaviour:
+ m_ObjectHideFlags: 52
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 1
+ m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Children: []
+ m_Position:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 749
+ height: 507
+ m_MinSize: {x: 200, y: 200}
+ m_MaxSize: {x: 4000, y: 4000}
+ m_ActualView: {fileID: 13}
+ m_Panes:
+ - {fileID: 13}
+ m_Selected: 0
+ m_LastSelected: 0
+--- !u!114 &8
+MonoBehaviour:
+ m_ObjectHideFlags: 52
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 1
+ m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Children: []
+ m_Position:
+ serializedVersion: 2
+ x: 0
+ y: 507
+ width: 749
+ height: 480
+ m_MinSize: {x: 202, y: 221}
+ m_MaxSize: {x: 4002, y: 4021}
+ m_ActualView: {fileID: 12}
+ m_Panes:
+ - {fileID: 12}
+ m_Selected: 0
+ m_LastSelected: 0
+--- !u!114 &9
+MonoBehaviour:
+ m_ObjectHideFlags: 52
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 1
+ m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Children: []
+ m_Position:
+ serializedVersion: 2
+ x: 749
+ y: 0
+ width: 343
+ height: 987
+ m_MinSize: {x: 200, y: 200}
+ m_MaxSize: {x: 4000, y: 4000}
+ m_ActualView: {fileID: 14}
+ m_Panes:
+ - {fileID: 14}
+ m_Selected: 0
+ m_LastSelected: 0
+--- !u!114 &10
+MonoBehaviour:
+ m_ObjectHideFlags: 52
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 1
+ m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Children: []
+ m_Position:
+ serializedVersion: 2
+ x: 1092
+ y: 0
+ width: 399
+ height: 987
+ m_MinSize: {x: 234, y: 271}
+ m_MaxSize: {x: 10004, y: 10021}
+ m_ActualView: {fileID: 15}
+ m_Panes:
+ - {fileID: 15}
+ m_Selected: 0
+ m_LastSelected: 0
+--- !u!114 &11
+MonoBehaviour:
+ m_ObjectHideFlags: 52
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 1
+ m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Children: []
+ m_Position:
+ serializedVersion: 2
+ x: 1491
+ y: 0
+ width: 429
+ height: 987
+ m_MinSize: {x: 275, y: 50}
+ m_MaxSize: {x: 4000, y: 4000}
+ m_ActualView: {fileID: 16}
+ m_Panes:
+ - {fileID: 16}
+ m_Selected: 0
+ m_LastSelected: 0
+--- !u!114 &12
+MonoBehaviour:
+ m_ObjectHideFlags: 52
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 1
+ m_Script: {fileID: 12015, guid: 0000000000000000e000000000000000, type: 0}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_AutoRepaintOnSceneChange: 1
+ m_MinSize: {x: 200, y: 200}
+ m_MaxSize: {x: 4000, y: 4000}
+ m_TitleContent:
+ m_Text: Game
+ m_Image: {fileID: -6423792434712278376, guid: 0000000000000000d000000000000000,
+ type: 0}
+ m_Tooltip:
+ m_DepthBufferBits: 32
+ m_Pos:
+ serializedVersion: 2
+ x: 0
+ y: 524
+ width: 747
+ height: 459
+ m_MaximizeOnPlay: 0
+ m_Gizmos: 0
+ m_Stats: 0
+ m_SelectedSizes: 0700000000000000000000000f000000000000000000000000000000000000000000000000000000
+ m_TargetDisplay: 0
+ m_ZoomArea:
+ m_HRangeLocked: 0
+ m_VRangeLocked: 0
+ m_HBaseRangeMin: -124.3125
+ m_HBaseRangeMax: 124.3125
+ m_VBaseRangeMin: -221
+ m_VBaseRangeMax: 221
+ m_HAllowExceedBaseRangeMin: 1
+ m_HAllowExceedBaseRangeMax: 1
+ m_VAllowExceedBaseRangeMin: 1
+ m_VAllowExceedBaseRangeMax: 1
+ m_ScaleWithWindow: 0
+ m_HSlider: 0
+ m_VSlider: 0
+ m_IgnoreScrollWheelUntilClicked: 0
+ m_EnableMouseInput: 1
+ m_EnableSliderZoom: 0
+ m_UniformScale: 1
+ m_UpDirection: 1
+ m_DrawArea:
+ serializedVersion: 2
+ x: 0
+ y: 17
+ width: 747
+ height: 442
+ m_Scale: {x: 1, y: 1}
+ m_Translation: {x: 373.5, y: 221}
+ m_MarginLeft: 0
+ m_MarginRight: 0
+ m_MarginTop: 0
+ m_MarginBottom: 0
+ m_LastShownAreaInsideMargins:
+ serializedVersion: 2
+ x: -373.5
+ y: -221
+ width: 747
+ height: 442
+ m_MinimalGUI: 1
+ m_defaultScale: 1
+ m_TargetTexture: {fileID: 0}
+ m_CurrentColorSpace: 0
+ m_LastWindowPixelSize: {x: 747, y: 459}
+ m_ClearInEditMode: 1
+ m_NoCameraWarning: 1
+ m_LowResolutionForAspectRatios: 01000000000100000100
+--- !u!114 &13
+MonoBehaviour:
+ m_ObjectHideFlags: 52
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 1
+ m_Script: {fileID: 12013, guid: 0000000000000000e000000000000000, type: 0}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_AutoRepaintOnSceneChange: 1
+ m_MinSize: {x: 200, y: 200}
+ m_MaxSize: {x: 4000, y: 4000}
+ m_TitleContent:
+ m_Text: Scene
+ m_Image: {fileID: 2593428753322112591, guid: 0000000000000000d000000000000000,
+ type: 0}
+ m_Tooltip:
+ m_DepthBufferBits: 32
+ m_Pos:
+ serializedVersion: 2
+ x: 0
+ y: 17
+ width: 747
+ height: 486
+ m_SceneLighting: 1
+ lastFramingTime: 253.6566578520128
+ m_2DMode: 1
+ m_isRotationLocked: 0
+ m_AudioPlay: 0
+ m_Position:
+ m_Target: {x: 84.838585, y: 219.27422, z: 0}
+ speed: 2
+ m_Value: {x: 84.838585, y: 219.27422, z: 0}
+ m_RenderMode: 0
+ m_ValidateTrueMetals: 0
+ m_SceneViewState:
+ showFog: 1
+ showMaterialUpdate: 0
+ showSkybox: 1
+ showFlares: 1
+ showImageEffects: 1
+ grid:
+ xGrid:
+ m_Target: 0
+ speed: 2
+ m_Value: 0
+ yGrid:
+ m_Target: 0
+ speed: 2
+ m_Value: 0
+ zGrid:
+ m_Target: 1
+ speed: 2
+ m_Value: 1
+ m_Rotation:
+ m_Target: {x: 0, y: 0, z: 0, w: 1}
+ speed: 2
+ m_Value: {x: 0, y: 0, z: 0, w: 1}
+ m_Size:
+ m_Target: 429.2167
+ speed: 2
+ m_Value: 429.2167
+ m_Ortho:
+ m_Target: 1
+ speed: 2
+ m_Value: 1
+ m_LastSceneViewRotation: {x: -0.08717229, y: 0.89959055, z: -0.21045254, w: -0.3726226}
+ m_LastSceneViewOrtho: 0
+ m_ReplacementShader: {fileID: 0}
+ m_ReplacementString:
+ m_LastLockedObject: {fileID: 0}
+ m_ViewIsLockedToObject: 0
+--- !u!114 &14
+MonoBehaviour:
+ m_ObjectHideFlags: 52
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 1
+ m_Script: {fileID: 12061, guid: 0000000000000000e000000000000000, type: 0}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_AutoRepaintOnSceneChange: 0
+ m_MinSize: {x: 200, y: 200}
+ m_MaxSize: {x: 4000, y: 4000}
+ m_TitleContent:
+ m_Text: Hierarchy
+ m_Image: {fileID: 7966133145522015247, guid: 0000000000000000d000000000000000,
+ type: 0}
+ m_Tooltip:
+ m_DepthBufferBits: 0
+ m_Pos:
+ serializedVersion: 2
+ x: 751
+ y: 17
+ width: 339
+ height: 966
+ m_TreeViewState:
+ scrollPos: {x: 0, y: 0}
+ m_SelectedIDs:
+ m_LastClickedID: 0
+ m_ExpandedIDs: 8ee8ffff78e9fffff6eeffff78f3ffff58f8ffffcefaffff000000000227000024270000d82700000a290000
+ m_RenameOverlay:
+ m_UserAcceptedRename: 0
+ m_Name:
+ m_OriginalName:
+ m_EditFieldRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 0
+ height: 0
+ m_UserData: 0
+ m_IsWaitingForDelay: 0
+ m_IsRenaming: 0
+ m_OriginalEventType: 11
+ m_IsRenamingFilename: 0
+ m_ClientGUIView: {fileID: 9}
+ m_SearchString:
+ m_ExpandedScenes:
+ - dsq
+ m_CurrenRootInstanceID: 0
+ m_Locked: 0
+ m_CurrentSortingName: TransformSorting
+--- !u!114 &15
+MonoBehaviour:
+ m_ObjectHideFlags: 52
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 1
+ m_Script: {fileID: 12014, guid: 0000000000000000e000000000000000, type: 0}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_AutoRepaintOnSceneChange: 0
+ m_MinSize: {x: 230, y: 250}
+ m_MaxSize: {x: 10000, y: 10000}
+ m_TitleContent:
+ m_Text: Project
+ m_Image: {fileID: -5467254957812901981, guid: 0000000000000000d000000000000000,
+ type: 0}
+ m_Tooltip:
+ m_DepthBufferBits: 0
+ m_Pos:
+ serializedVersion: 2
+ x: 980
+ y: 133
+ width: 395
+ height: 966
+ m_SearchFilter:
+ m_NameFilter:
+ m_ClassNames: []
+ m_AssetLabels: []
+ m_AssetBundleNames: []
+ m_VersionControlStates: []
+ m_ReferencingInstanceIDs:
+ m_ScenePaths: []
+ m_ShowAllHits: 0
+ m_SearchArea: 0
+ m_Folders:
+ - Assets/Scenes
+ m_ViewMode: 1
+ m_StartGridSize: 96
+ m_LastFolders:
+ - Assets/Scenes
+ m_LastFoldersGridSize: -1
+ m_LastProjectPath: "F:\\\u65B0\u5EFA\u6587\u4EF6\u5939\\code\\codeclass\\ByteEdu.Com\\Unity3D\\\u5355\u673A\u6597\u517D\u68CB\\dsq"
+ m_IsLocked: 0
+ m_FolderTreeState:
+ scrollPos: {x: 0, y: 0}
+ m_SelectedIDs: b8250000
+ m_LastClickedID: 9656
+ m_ExpandedIDs: 8c25000000ca9a3bffffff7f
+ m_RenameOverlay:
+ m_UserAcceptedRename: 0
+ m_Name:
+ m_OriginalName:
+ m_EditFieldRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 0
+ height: 0
+ m_UserData: 0
+ m_IsWaitingForDelay: 0
+ m_IsRenaming: 0
+ m_OriginalEventType: 11
+ m_IsRenamingFilename: 1
+ m_ClientGUIView: {fileID: 10}
+ m_SearchString:
+ m_CreateAssetUtility:
+ m_EndAction: {fileID: 0}
+ m_InstanceID: 0
+ m_Path:
+ m_Icon: {fileID: 0}
+ m_ResourceFile:
+ m_AssetTreeState:
+ scrollPos: {x: 0, y: 0}
+ m_SelectedIDs:
+ m_LastClickedID: 0
+ m_ExpandedIDs:
+ m_RenameOverlay:
+ m_UserAcceptedRename: 0
+ m_Name:
+ m_OriginalName:
+ m_EditFieldRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 0
+ height: 0
+ m_UserData: 0
+ m_IsWaitingForDelay: 0
+ m_IsRenaming: 0
+ m_OriginalEventType: 11
+ m_IsRenamingFilename: 1
+ m_ClientGUIView: {fileID: 0}
+ m_SearchString:
+ m_CreateAssetUtility:
+ m_EndAction: {fileID: 0}
+ m_InstanceID: 0
+ m_Path:
+ m_Icon: {fileID: 0}
+ m_ResourceFile:
+ m_ListAreaState:
+ m_SelectedInstanceIDs:
+ m_LastClickedInstanceID: 0
+ m_HadKeyboardFocusLastEvent: 0
+ m_ExpandedInstanceIDs: a26400009c530000
+ m_RenameOverlay:
+ m_UserAcceptedRename: 0
+ m_Name:
+ m_OriginalName:
+ m_EditFieldRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 0
+ height: 0
+ m_UserData: 0
+ m_IsWaitingForDelay: 0
+ m_IsRenaming: 0
+ m_OriginalEventType: 11
+ m_IsRenamingFilename: 1
+ m_ClientGUIView: {fileID: 10}
+ m_CreateAssetUtility:
+ m_EndAction: {fileID: 0}
+ m_InstanceID: 0
+ m_Path:
+ m_Icon: {fileID: 0}
+ m_ResourceFile:
+ m_NewAssetIndexInList: -1
+ m_ScrollPosition: {x: 0, y: 0}
+ m_GridSize: 96
+ m_DirectoriesAreaWidth: 244
+--- !u!114 &16
+MonoBehaviour:
+ m_ObjectHideFlags: 52
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 1
+ m_Script: {fileID: 12019, guid: 0000000000000000e000000000000000, type: 0}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_AutoRepaintOnSceneChange: 0
+ m_MinSize: {x: 275, y: 50}
+ m_MaxSize: {x: 4000, y: 4000}
+ m_TitleContent:
+ m_Text: Inspector
+ m_Image: {fileID: -2667387946076563598, guid: 0000000000000000d000000000000000,
+ type: 0}
+ m_Tooltip:
+ m_DepthBufferBits: 0
+ m_Pos:
+ serializedVersion: 2
+ x: 1493
+ y: 17
+ width: 427
+ height: 966
+ m_ScrollPosition: {x: 0, y: 0}
+ m_InspectorMode: 0
+ m_PreviewResizer:
+ m_CachedPref: -160
+ m_ControlHash: -371814159
+ m_PrefName: Preview_InspectorPreview
+ m_PreviewWindow: {fileID: 0}
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/EditorUserBuildSettings.asset" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/EditorUserBuildSettings.asset"
new file mode 100644
index 00000000..2b0937ec
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/EditorUserBuildSettings.asset" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/EditorUserSettings.asset" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/EditorUserSettings.asset"
new file mode 100644
index 00000000..1830207f
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/EditorUserSettings.asset" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/InspectorExpandedItems.asset" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/InspectorExpandedItems.asset"
new file mode 100644
index 00000000..419e0961
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/InspectorExpandedItems.asset" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/LastSceneManagerSetup.txt" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/LastSceneManagerSetup.txt"
new file mode 100644
index 00000000..7b9b6270
--- /dev/null
+++ "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/LastSceneManagerSetup.txt"
@@ -0,0 +1,4 @@
+sceneSetups:
+- path: Assets/Scenes/dsq.unity
+ isLoaded: 1
+ isActive: 1
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/LibraryFormatVersion.txt" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/LibraryFormatVersion.txt"
new file mode 100644
index 00000000..6185f096
--- /dev/null
+++ "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/LibraryFormatVersion.txt"
@@ -0,0 +1,2 @@
+unityRebuildLibraryVersion: 11
+unityForwardCompatibleVersion: 40
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/MonoManager.asset" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/MonoManager.asset"
new file mode 100644
index 00000000..02021afa
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/MonoManager.asset" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ProjectSettings.asset" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ProjectSettings.asset"
new file mode 100644
index 00000000..2df4099c
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ProjectSettings.asset" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ScriptAssemblies/Assembly-CSharp.dll" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ScriptAssemblies/Assembly-CSharp.dll"
new file mode 100644
index 00000000..2ae1c571
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ScriptAssemblies/Assembly-CSharp.dll" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ScriptAssemblies/Assembly-CSharp.dll.mdb" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ScriptAssemblies/Assembly-CSharp.dll.mdb"
new file mode 100644
index 00000000..abd51df8
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ScriptAssemblies/Assembly-CSharp.dll.mdb" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ScriptAssemblies/BuiltinAssemblies.stamp" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ScriptAssemblies/BuiltinAssemblies.stamp"
new file mode 100644
index 00000000..e8bd23aa
--- /dev/null
+++ "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ScriptAssemblies/BuiltinAssemblies.stamp"
@@ -0,0 +1,2 @@
+0000.59462d98.0000
+0000.59462dac.0000
\ No newline at end of file
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ScriptMapper" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ScriptMapper"
new file mode 100644
index 00000000..f4535c31
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ScriptMapper" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ShaderCache/0/0ef9b56f73396b90777f1e1d0af1e2de.bin" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ShaderCache/0/0ef9b56f73396b90777f1e1d0af1e2de.bin"
new file mode 100644
index 00000000..ebc9cf00
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ShaderCache/0/0ef9b56f73396b90777f1e1d0af1e2de.bin" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ShaderCache/1/180ce9f7ac9a79481f789f20a805af33.bin" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ShaderCache/1/180ce9f7ac9a79481f789f20a805af33.bin"
new file mode 100644
index 00000000..01acbb1e
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ShaderCache/1/180ce9f7ac9a79481f789f20a805af33.bin" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ShaderCache/2/26bcb1e1b017d92365734edb8979fa25.bin" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ShaderCache/2/26bcb1e1b017d92365734edb8979fa25.bin"
new file mode 100644
index 00000000..aa18d750
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ShaderCache/2/26bcb1e1b017d92365734edb8979fa25.bin" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ShaderCache/4/49938184027e3262ff982afde1670621.bin" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ShaderCache/4/49938184027e3262ff982afde1670621.bin"
new file mode 100644
index 00000000..cbf632e9
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ShaderCache/4/49938184027e3262ff982afde1670621.bin" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ShaderCache/6/69239984605ca6f73b1427b3a2f6b559.bin" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ShaderCache/6/69239984605ca6f73b1427b3a2f6b559.bin"
new file mode 100644
index 00000000..ed3be9f1
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ShaderCache/6/69239984605ca6f73b1427b3a2f6b559.bin" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ShaderCache/6/69d6bb8a8aec563a644f901a7c2deebc.bin" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ShaderCache/6/69d6bb8a8aec563a644f901a7c2deebc.bin"
new file mode 100644
index 00000000..d660d0ae
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ShaderCache/6/69d6bb8a8aec563a644f901a7c2deebc.bin" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ShaderCache/7/763030427ba3cc903fe7a11884cce59e.bin" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ShaderCache/7/763030427ba3cc903fe7a11884cce59e.bin"
new file mode 100644
index 00000000..87fa2555
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ShaderCache/7/763030427ba3cc903fe7a11884cce59e.bin" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ShaderCache/9/9b258a59fa7e069cfe644eef980548d9.bin" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ShaderCache/9/9b258a59fa7e069cfe644eef980548d9.bin"
new file mode 100644
index 00000000..25da86be
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ShaderCache/9/9b258a59fa7e069cfe644eef980548d9.bin" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ShaderCache/a/ad6ff30ee9f0e246875a79030bbf0c82.bin" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ShaderCache/a/ad6ff30ee9f0e246875a79030bbf0c82.bin"
new file mode 100644
index 00000000..fe67c084
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ShaderCache/a/ad6ff30ee9f0e246875a79030bbf0c82.bin" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ShaderCache/b/b76823486a0903ab96dfb156caa3ae25.bin" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ShaderCache/b/b76823486a0903ab96dfb156caa3ae25.bin"
new file mode 100644
index 00000000..839e1a52
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ShaderCache/b/b76823486a0903ab96dfb156caa3ae25.bin" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ShaderCache/b/bb55d2199d5d19b6db041e5748603741.bin" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ShaderCache/b/bb55d2199d5d19b6db041e5748603741.bin"
new file mode 100644
index 00000000..4cf5b745
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ShaderCache/b/bb55d2199d5d19b6db041e5748603741.bin" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ShaderCache/c/c4860b845326a841f8b1e975b00efa21.bin" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ShaderCache/c/c4860b845326a841f8b1e975b00efa21.bin"
new file mode 100644
index 00000000..353a6fbf
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ShaderCache/c/c4860b845326a841f8b1e975b00efa21.bin" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ShaderCache/c/ceeeecf580f08e554baa407380ae0aea.bin" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ShaderCache/c/ceeeecf580f08e554baa407380ae0aea.bin"
new file mode 100644
index 00000000..5297e213
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ShaderCache/c/ceeeecf580f08e554baa407380ae0aea.bin" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ShaderCache/e/eb973f60f38a951f0abb397021f4b872.bin" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ShaderCache/e/eb973f60f38a951f0abb397021f4b872.bin"
new file mode 100644
index 00000000..87fa2555
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/ShaderCache/e/eb973f60f38a951f0abb397021f4b872.bin" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/assetDatabase3" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/assetDatabase3"
new file mode 100644
index 00000000..ba1a3f37
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/assetDatabase3" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/expandedItems" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/expandedItems"
new file mode 100644
index 00000000..47840b6b
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/expandedItems" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000001000000000000000" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000001000000000000000"
new file mode 100644
index 00000000..0696b9ab
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000001000000000000000" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000001000000000000000.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000001000000000000000.info"
new file mode 100644
index 00000000..0a194ff3
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000001000000000000000.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000002000000000000000" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000002000000000000000"
new file mode 100644
index 00000000..90f5d19d
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000002000000000000000" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000002000000000000000.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000002000000000000000.info"
new file mode 100644
index 00000000..650a3296
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000002000000000000000.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000003000000000000000" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000003000000000000000"
new file mode 100644
index 00000000..4ad8f212
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000003000000000000000" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000003000000000000000.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000003000000000000000.info"
new file mode 100644
index 00000000..6f1239c3
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000003000000000000000.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000004000000000000000" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000004000000000000000"
new file mode 100644
index 00000000..9bc9b8c6
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000004000000000000000" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000004000000000000000.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000004000000000000000.info"
new file mode 100644
index 00000000..963c9de6
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000004000000000000000.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000004100000000000000" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000004100000000000000"
new file mode 100644
index 00000000..b77a4fdd
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000004100000000000000" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000004100000000000000.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000004100000000000000.info"
new file mode 100644
index 00000000..98a4ff9d
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000004100000000000000.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000005000000000000000" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000005000000000000000"
new file mode 100644
index 00000000..59b8419d
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000005000000000000000" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000005000000000000000.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000005000000000000000.info"
new file mode 100644
index 00000000..fade0c91
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000005000000000000000.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000005100000000000000" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000005100000000000000"
new file mode 100644
index 00000000..58f376ac
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000005100000000000000" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000005100000000000000.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000005100000000000000.info"
new file mode 100644
index 00000000..baae2928
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000005100000000000000.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000006000000000000000" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000006000000000000000"
new file mode 100644
index 00000000..d3704eed
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000006000000000000000" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000006000000000000000.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000006000000000000000.info"
new file mode 100644
index 00000000..020e7721
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000006000000000000000.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000006100000000000000" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000006100000000000000"
new file mode 100644
index 00000000..9397ece1
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000006100000000000000" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000006100000000000000.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000006100000000000000.info"
new file mode 100644
index 00000000..b58d6a35
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000006100000000000000.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000007000000000000000" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000007000000000000000"
new file mode 100644
index 00000000..92b271e9
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000007000000000000000" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000007000000000000000.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000007000000000000000.info"
new file mode 100644
index 00000000..5289be69
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000007000000000000000.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000007100000000000000" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000007100000000000000"
new file mode 100644
index 00000000..b33471cb
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000007100000000000000" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000007100000000000000.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000007100000000000000.info"
new file mode 100644
index 00000000..a0a78b5b
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000007100000000000000.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000008000000000000000" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000008000000000000000"
new file mode 100644
index 00000000..9918038a
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000008000000000000000" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000008000000000000000.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000008000000000000000.info"
new file mode 100644
index 00000000..94385d41
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000008000000000000000.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000009000000000000000" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000009000000000000000"
new file mode 100644
index 00000000..2d81aa7e
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000009000000000000000" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000009000000000000000.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000009000000000000000.info"
new file mode 100644
index 00000000..5347fb6c
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/00000000000000009000000000000000.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/0000000000000000a000000000000000" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/0000000000000000a000000000000000"
new file mode 100644
index 00000000..cf964322
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/0000000000000000a000000000000000" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/0000000000000000a000000000000000.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/0000000000000000a000000000000000.info"
new file mode 100644
index 00000000..32a7c62a
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/0000000000000000a000000000000000.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/0000000000000000a100000000000000" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/0000000000000000a100000000000000"
new file mode 100644
index 00000000..79d52dd2
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/0000000000000000a100000000000000" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/0000000000000000a100000000000000.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/0000000000000000a100000000000000.info"
new file mode 100644
index 00000000..0827fee4
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/0000000000000000a100000000000000.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/0000000000000000b000000000000000" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/0000000000000000b000000000000000"
new file mode 100644
index 00000000..f61a055b
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/0000000000000000b000000000000000" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/0000000000000000b000000000000000.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/0000000000000000b000000000000000.info"
new file mode 100644
index 00000000..54067b17
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/0000000000000000b000000000000000.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/0000000000000000c000000000000000" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/0000000000000000c000000000000000"
new file mode 100644
index 00000000..808490c5
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/0000000000000000c000000000000000" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/0000000000000000c000000000000000.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/0000000000000000c000000000000000.info"
new file mode 100644
index 00000000..e71d9d3e
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/0000000000000000c000000000000000.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/0018c4c213ebfef4f9e7ecbeb1976ff5" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/0018c4c213ebfef4f9e7ecbeb1976ff5"
new file mode 100644
index 00000000..452a6ba5
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/0018c4c213ebfef4f9e7ecbeb1976ff5" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/0018c4c213ebfef4f9e7ecbeb1976ff5.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/0018c4c213ebfef4f9e7ecbeb1976ff5.info"
new file mode 100644
index 00000000..435eabae
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/00/0018c4c213ebfef4f9e7ecbeb1976ff5.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/0d/0d3bb855445e36e479c85976fc88383a" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/0d/0d3bb855445e36e479c85976fc88383a"
new file mode 100644
index 00000000..427b6cfe
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/0d/0d3bb855445e36e479c85976fc88383a" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/0d/0d3bb855445e36e479c85976fc88383a.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/0d/0d3bb855445e36e479c85976fc88383a.info"
new file mode 100644
index 00000000..1875dc84
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/0d/0d3bb855445e36e479c85976fc88383a.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/11/111ae1a9ba38c654eac342b9b8be0cbe" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/11/111ae1a9ba38c654eac342b9b8be0cbe"
new file mode 100644
index 00000000..de7a7c8c
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/11/111ae1a9ba38c654eac342b9b8be0cbe" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/11/111ae1a9ba38c654eac342b9b8be0cbe.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/11/111ae1a9ba38c654eac342b9b8be0cbe.info"
new file mode 100644
index 00000000..9b7af5b9
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/11/111ae1a9ba38c654eac342b9b8be0cbe.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/12/12fd8a0055b84bb59e84c9835a37e333" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/12/12fd8a0055b84bb59e84c9835a37e333"
new file mode 100644
index 00000000..7a17e4d1
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/12/12fd8a0055b84bb59e84c9835a37e333" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/12/12fd8a0055b84bb59e84c9835a37e333.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/12/12fd8a0055b84bb59e84c9835a37e333.info"
new file mode 100644
index 00000000..a0875a01
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/12/12fd8a0055b84bb59e84c9835a37e333.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/1c/1c6d1fbb51834b64847b1b73a75bfc77" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/1c/1c6d1fbb51834b64847b1b73a75bfc77"
new file mode 100644
index 00000000..7b7b009f
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/1c/1c6d1fbb51834b64847b1b73a75bfc77" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/1c/1c6d1fbb51834b64847b1b73a75bfc77.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/1c/1c6d1fbb51834b64847b1b73a75bfc77.info"
new file mode 100644
index 00000000..5700bbad
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/1c/1c6d1fbb51834b64847b1b73a75bfc77.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/21/21eff446d50eaf44a85985cd4c0b6fa1" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/21/21eff446d50eaf44a85985cd4c0b6fa1"
new file mode 100644
index 00000000..aafda2c4
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/21/21eff446d50eaf44a85985cd4c0b6fa1" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/21/21eff446d50eaf44a85985cd4c0b6fa1.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/21/21eff446d50eaf44a85985cd4c0b6fa1.info"
new file mode 100644
index 00000000..084273e7
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/21/21eff446d50eaf44a85985cd4c0b6fa1.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/26/2682a692a2be7e14e901a738c7806da0" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/26/2682a692a2be7e14e901a738c7806da0"
new file mode 100644
index 00000000..e57c7da4
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/26/2682a692a2be7e14e901a738c7806da0" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/26/2682a692a2be7e14e901a738c7806da0.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/26/2682a692a2be7e14e901a738c7806da0.info"
new file mode 100644
index 00000000..e9959ab0
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/26/2682a692a2be7e14e901a738c7806da0.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/2f/2fe3476eabbbb6c448e6b55a2cc471f5" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/2f/2fe3476eabbbb6c448e6b55a2cc471f5"
new file mode 100644
index 00000000..0c0ed9a8
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/2f/2fe3476eabbbb6c448e6b55a2cc471f5" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/2f/2fe3476eabbbb6c448e6b55a2cc471f5.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/2f/2fe3476eabbbb6c448e6b55a2cc471f5.info"
new file mode 100644
index 00000000..b7d8e893
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/2f/2fe3476eabbbb6c448e6b55a2cc471f5.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/30/307433eba81a469ab1e2084d52d1a5a2" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/30/307433eba81a469ab1e2084d52d1a5a2"
new file mode 100644
index 00000000..6ce368cb
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/30/307433eba81a469ab1e2084d52d1a5a2" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/30/307433eba81a469ab1e2084d52d1a5a2.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/30/307433eba81a469ab1e2084d52d1a5a2.info"
new file mode 100644
index 00000000..25481577
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/30/307433eba81a469ab1e2084d52d1a5a2.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/32/32188fd89022c154c81befa2f0e00be0" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/32/32188fd89022c154c81befa2f0e00be0"
new file mode 100644
index 00000000..6f9fe1d8
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/32/32188fd89022c154c81befa2f0e00be0" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/32/32188fd89022c154c81befa2f0e00be0.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/32/32188fd89022c154c81befa2f0e00be0.info"
new file mode 100644
index 00000000..f3531324
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/32/32188fd89022c154c81befa2f0e00be0.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/32/328cc881519068e4eb7db4bb907ad2d9" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/32/328cc881519068e4eb7db4bb907ad2d9"
new file mode 100644
index 00000000..6d55b34a
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/32/328cc881519068e4eb7db4bb907ad2d9" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/32/328cc881519068e4eb7db4bb907ad2d9.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/32/328cc881519068e4eb7db4bb907ad2d9.info"
new file mode 100644
index 00000000..65d5010c
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/32/328cc881519068e4eb7db4bb907ad2d9.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/38/38c8faf1788024c02930a0c68a6e0edc" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/38/38c8faf1788024c02930a0c68a6e0edc"
new file mode 100644
index 00000000..5f26653a
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/38/38c8faf1788024c02930a0c68a6e0edc" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/38/38c8faf1788024c02930a0c68a6e0edc.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/38/38c8faf1788024c02930a0c68a6e0edc.info"
new file mode 100644
index 00000000..0daa3ef5
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/38/38c8faf1788024c02930a0c68a6e0edc.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/40/405b9b51bb344a128608d968297df79c" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/40/405b9b51bb344a128608d968297df79c"
new file mode 100644
index 00000000..742be219
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/40/405b9b51bb344a128608d968297df79c" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/40/405b9b51bb344a128608d968297df79c.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/40/405b9b51bb344a128608d968297df79c.info"
new file mode 100644
index 00000000..d181f74b
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/40/405b9b51bb344a128608d968297df79c.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/41/4113173d5e95493ab8765d7b08371de4" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/41/4113173d5e95493ab8765d7b08371de4"
new file mode 100644
index 00000000..25091b10
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/41/4113173d5e95493ab8765d7b08371de4" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/41/4113173d5e95493ab8765d7b08371de4.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/41/4113173d5e95493ab8765d7b08371de4.info"
new file mode 100644
index 00000000..aca703f0
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/41/4113173d5e95493ab8765d7b08371de4.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/49/49f5766d0d4954f44b85d4bbd7131677" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/49/49f5766d0d4954f44b85d4bbd7131677"
new file mode 100644
index 00000000..011c4bd7
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/49/49f5766d0d4954f44b85d4bbd7131677" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/49/49f5766d0d4954f44b85d4bbd7131677.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/49/49f5766d0d4954f44b85d4bbd7131677.info"
new file mode 100644
index 00000000..d77eade7
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/49/49f5766d0d4954f44b85d4bbd7131677.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/4b/4b3fa4bde7f1451a8218c03ee6a8ded8" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/4b/4b3fa4bde7f1451a8218c03ee6a8ded8"
new file mode 100644
index 00000000..cb61bec3
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/4b/4b3fa4bde7f1451a8218c03ee6a8ded8" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/4b/4b3fa4bde7f1451a8218c03ee6a8ded8.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/4b/4b3fa4bde7f1451a8218c03ee6a8ded8.info"
new file mode 100644
index 00000000..d419994f
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/4b/4b3fa4bde7f1451a8218c03ee6a8ded8.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/4b/4ba2329b63d54f0187bcaa12486b1b0f" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/4b/4ba2329b63d54f0187bcaa12486b1b0f"
new file mode 100644
index 00000000..9d15d55f
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/4b/4ba2329b63d54f0187bcaa12486b1b0f" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/4b/4ba2329b63d54f0187bcaa12486b1b0f.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/4b/4ba2329b63d54f0187bcaa12486b1b0f.info"
new file mode 100644
index 00000000..20ea559d
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/4b/4ba2329b63d54f0187bcaa12486b1b0f.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/51/517af1b5b81b93b43b9745d58f017562" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/51/517af1b5b81b93b43b9745d58f017562"
new file mode 100644
index 00000000..1f7137fc
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/51/517af1b5b81b93b43b9745d58f017562" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/51/517af1b5b81b93b43b9745d58f017562.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/51/517af1b5b81b93b43b9745d58f017562.info"
new file mode 100644
index 00000000..b9a37c29
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/51/517af1b5b81b93b43b9745d58f017562.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/53/53ebcfaa2e1e4e2dbc85882cd5a73fa1" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/53/53ebcfaa2e1e4e2dbc85882cd5a73fa1"
new file mode 100644
index 00000000..b1beaeaf
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/53/53ebcfaa2e1e4e2dbc85882cd5a73fa1" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/53/53ebcfaa2e1e4e2dbc85882cd5a73fa1.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/53/53ebcfaa2e1e4e2dbc85882cd5a73fa1.info"
new file mode 100644
index 00000000..8cd00fba
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/53/53ebcfaa2e1e4e2dbc85882cd5a73fa1.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/57/5782f9e9e6e0bb94bac99aeea24814fc" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/57/5782f9e9e6e0bb94bac99aeea24814fc"
new file mode 100644
index 00000000..811f6efc
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/57/5782f9e9e6e0bb94bac99aeea24814fc" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/57/5782f9e9e6e0bb94bac99aeea24814fc.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/57/5782f9e9e6e0bb94bac99aeea24814fc.info"
new file mode 100644
index 00000000..2f38d580
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/57/5782f9e9e6e0bb94bac99aeea24814fc.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/5f/5f32cd94baa94578a686d4b9d6b660f7" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/5f/5f32cd94baa94578a686d4b9d6b660f7"
new file mode 100644
index 00000000..0c4ffaf7
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/5f/5f32cd94baa94578a686d4b9d6b660f7" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/5f/5f32cd94baa94578a686d4b9d6b660f7.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/5f/5f32cd94baa94578a686d4b9d6b660f7.info"
new file mode 100644
index 00000000..a7442037
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/5f/5f32cd94baa94578a686d4b9d6b660f7.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/69/6981461fe431401459211818212a29cf" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/69/6981461fe431401459211818212a29cf"
new file mode 100644
index 00000000..44d0707f
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/69/6981461fe431401459211818212a29cf" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/69/6981461fe431401459211818212a29cf.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/69/6981461fe431401459211818212a29cf.info"
new file mode 100644
index 00000000..bbaad88e
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/69/6981461fe431401459211818212a29cf.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/6c/6cdf1e5c78d14720aaadccd4c792df96" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/6c/6cdf1e5c78d14720aaadccd4c792df96"
new file mode 100644
index 00000000..d5008fab
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/6c/6cdf1e5c78d14720aaadccd4c792df96" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/6c/6cdf1e5c78d14720aaadccd4c792df96.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/6c/6cdf1e5c78d14720aaadccd4c792df96.info"
new file mode 100644
index 00000000..836c8692
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/6c/6cdf1e5c78d14720aaadccd4c792df96.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/73/739bbd9f364b4268874f9fd86ab3beef" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/73/739bbd9f364b4268874f9fd86ab3beef"
new file mode 100644
index 00000000..64abc59d
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/73/739bbd9f364b4268874f9fd86ab3beef" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/73/739bbd9f364b4268874f9fd86ab3beef.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/73/739bbd9f364b4268874f9fd86ab3beef.info"
new file mode 100644
index 00000000..74e70e4c
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/73/739bbd9f364b4268874f9fd86ab3beef.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/80/80a3616ca19596e4da0f10f14d241e9f" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/80/80a3616ca19596e4da0f10f14d241e9f"
new file mode 100644
index 00000000..78d65f61
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/80/80a3616ca19596e4da0f10f14d241e9f" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/80/80a3616ca19596e4da0f10f14d241e9f.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/80/80a3616ca19596e4da0f10f14d241e9f.info"
new file mode 100644
index 00000000..beedd87c
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/80/80a3616ca19596e4da0f10f14d241e9f.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/83/8382b2bb260241859771b69b7f377a8d" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/83/8382b2bb260241859771b69b7f377a8d"
new file mode 100644
index 00000000..ab0a2fb9
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/83/8382b2bb260241859771b69b7f377a8d" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/83/8382b2bb260241859771b69b7f377a8d.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/83/8382b2bb260241859771b69b7f377a8d.info"
new file mode 100644
index 00000000..9af5ba3a
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/83/8382b2bb260241859771b69b7f377a8d.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/84/84ca94c19f25ae14d83aa41bb3654390" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/84/84ca94c19f25ae14d83aa41bb3654390"
new file mode 100644
index 00000000..b3daa927
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/84/84ca94c19f25ae14d83aa41bb3654390" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/84/84ca94c19f25ae14d83aa41bb3654390.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/84/84ca94c19f25ae14d83aa41bb3654390.info"
new file mode 100644
index 00000000..fe210834
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/84/84ca94c19f25ae14d83aa41bb3654390.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/85/852e56802eb941638acbb491814497b0" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/85/852e56802eb941638acbb491814497b0"
new file mode 100644
index 00000000..45c7198f
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/85/852e56802eb941638acbb491814497b0" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/85/852e56802eb941638acbb491814497b0.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/85/852e56802eb941638acbb491814497b0.info"
new file mode 100644
index 00000000..8c4d6a60
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/85/852e56802eb941638acbb491814497b0.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/86/86f4de9468454445ac2f39e207fafa3a" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/86/86f4de9468454445ac2f39e207fafa3a"
new file mode 100644
index 00000000..e26a485a
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/86/86f4de9468454445ac2f39e207fafa3a" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/86/86f4de9468454445ac2f39e207fafa3a.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/86/86f4de9468454445ac2f39e207fafa3a.info"
new file mode 100644
index 00000000..4f4fbea8
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/86/86f4de9468454445ac2f39e207fafa3a.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/87/870353891bb340e2b2a9c8707e7419ba" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/87/870353891bb340e2b2a9c8707e7419ba"
new file mode 100644
index 00000000..88de9d1f
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/87/870353891bb340e2b2a9c8707e7419ba" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/87/870353891bb340e2b2a9c8707e7419ba.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/87/870353891bb340e2b2a9c8707e7419ba.info"
new file mode 100644
index 00000000..a35de2ac
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/87/870353891bb340e2b2a9c8707e7419ba.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/8a/8a5170ca5f97afa478b1093d22d8a8f4" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/8a/8a5170ca5f97afa478b1093d22d8a8f4"
new file mode 100644
index 00000000..509e8aa6
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/8a/8a5170ca5f97afa478b1093d22d8a8f4" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/8a/8a5170ca5f97afa478b1093d22d8a8f4.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/8a/8a5170ca5f97afa478b1093d22d8a8f4.info"
new file mode 100644
index 00000000..b2545ea5
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/8a/8a5170ca5f97afa478b1093d22d8a8f4.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/8a/8ab0121af6da7e64b84c48847b866387" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/8a/8ab0121af6da7e64b84c48847b866387"
new file mode 100644
index 00000000..6922ba53
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/8a/8ab0121af6da7e64b84c48847b866387" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/8a/8ab0121af6da7e64b84c48847b866387.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/8a/8ab0121af6da7e64b84c48847b866387.info"
new file mode 100644
index 00000000..6b188340
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/8a/8ab0121af6da7e64b84c48847b866387.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/8e/8e0cd8ed44d4412cbe0642067abc9e44" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/8e/8e0cd8ed44d4412cbe0642067abc9e44"
new file mode 100644
index 00000000..7ce26aae
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/8e/8e0cd8ed44d4412cbe0642067abc9e44" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/8e/8e0cd8ed44d4412cbe0642067abc9e44.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/8e/8e0cd8ed44d4412cbe0642067abc9e44.info"
new file mode 100644
index 00000000..074026ee
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/8e/8e0cd8ed44d4412cbe0642067abc9e44.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/8e/8e7066e382b0fc749b25dbb1a3004dfe" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/8e/8e7066e382b0fc749b25dbb1a3004dfe"
new file mode 100644
index 00000000..20dc1b43
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/8e/8e7066e382b0fc749b25dbb1a3004dfe" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/8e/8e7066e382b0fc749b25dbb1a3004dfe.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/8e/8e7066e382b0fc749b25dbb1a3004dfe.info"
new file mode 100644
index 00000000..4a696398
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/8e/8e7066e382b0fc749b25dbb1a3004dfe.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/90/9078b7128e594410d9b89e5b24cffd01" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/90/9078b7128e594410d9b89e5b24cffd01"
new file mode 100644
index 00000000..153afcd1
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/90/9078b7128e594410d9b89e5b24cffd01" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/90/9078b7128e594410d9b89e5b24cffd01.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/90/9078b7128e594410d9b89e5b24cffd01.info"
new file mode 100644
index 00000000..151e8048
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/90/9078b7128e594410d9b89e5b24cffd01.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/91/910a838bfc689b649a8ec954a08f4482" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/91/910a838bfc689b649a8ec954a08f4482"
new file mode 100644
index 00000000..17487d96
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/91/910a838bfc689b649a8ec954a08f4482" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/91/910a838bfc689b649a8ec954a08f4482.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/91/910a838bfc689b649a8ec954a08f4482.info"
new file mode 100644
index 00000000..c9c7e1d2
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/91/910a838bfc689b649a8ec954a08f4482.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/95/9581aea3e6099ae4db1633930b032480" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/95/9581aea3e6099ae4db1633930b032480"
new file mode 100644
index 00000000..202fe3c7
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/95/9581aea3e6099ae4db1633930b032480" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/95/9581aea3e6099ae4db1633930b032480.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/95/9581aea3e6099ae4db1633930b032480.info"
new file mode 100644
index 00000000..65288a95
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/95/9581aea3e6099ae4db1633930b032480.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/97/97decbdab0634cdd991f8d23ddf0dead" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/97/97decbdab0634cdd991f8d23ddf0dead"
new file mode 100644
index 00000000..63980a8c
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/97/97decbdab0634cdd991f8d23ddf0dead" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/97/97decbdab0634cdd991f8d23ddf0dead.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/97/97decbdab0634cdd991f8d23ddf0dead.info"
new file mode 100644
index 00000000..fc19d4ed
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/97/97decbdab0634cdd991f8d23ddf0dead.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/9c/9cbbd394877c88541ae8aa500b2e1cd2" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/9c/9cbbd394877c88541ae8aa500b2e1cd2"
new file mode 100644
index 00000000..f2b0cdd3
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/9c/9cbbd394877c88541ae8aa500b2e1cd2" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/9c/9cbbd394877c88541ae8aa500b2e1cd2.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/9c/9cbbd394877c88541ae8aa500b2e1cd2.info"
new file mode 100644
index 00000000..83b55af6
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/9c/9cbbd394877c88541ae8aa500b2e1cd2.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/ad/adebbd281f1a4ef3a30be7f21937e02f" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/ad/adebbd281f1a4ef3a30be7f21937e02f"
new file mode 100644
index 00000000..e9bf1a2a
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/ad/adebbd281f1a4ef3a30be7f21937e02f" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/ad/adebbd281f1a4ef3a30be7f21937e02f.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/ad/adebbd281f1a4ef3a30be7f21937e02f.info"
new file mode 100644
index 00000000..c70deee6
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/ad/adebbd281f1a4ef3a30be7f21937e02f.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/b2/b2b693dffac3a4433b3114fea0b7fd4e" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/b2/b2b693dffac3a4433b3114fea0b7fd4e"
new file mode 100644
index 00000000..ca25b908
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/b2/b2b693dffac3a4433b3114fea0b7fd4e" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/b2/b2b693dffac3a4433b3114fea0b7fd4e.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/b2/b2b693dffac3a4433b3114fea0b7fd4e.info"
new file mode 100644
index 00000000..d172e847
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/b2/b2b693dffac3a4433b3114fea0b7fd4e.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/b2/b2bead50dbf86924f8e51f03ddbebf70" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/b2/b2bead50dbf86924f8e51f03ddbebf70"
new file mode 100644
index 00000000..6467c197
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/b2/b2bead50dbf86924f8e51f03ddbebf70" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/b2/b2bead50dbf86924f8e51f03ddbebf70.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/b2/b2bead50dbf86924f8e51f03ddbebf70.info"
new file mode 100644
index 00000000..004c758a
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/b2/b2bead50dbf86924f8e51f03ddbebf70.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/b3/b317025c1ac61d943bbcfc2f6e8a92d9" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/b3/b317025c1ac61d943bbcfc2f6e8a92d9"
new file mode 100644
index 00000000..0bfaa08c
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/b3/b317025c1ac61d943bbcfc2f6e8a92d9" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/b3/b317025c1ac61d943bbcfc2f6e8a92d9.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/b3/b317025c1ac61d943bbcfc2f6e8a92d9.info"
new file mode 100644
index 00000000..58167b74
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/b3/b317025c1ac61d943bbcfc2f6e8a92d9.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/ba/bad8ba9a90c50a7429f578bbad6901de" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/ba/bad8ba9a90c50a7429f578bbad6901de"
new file mode 100644
index 00000000..07b03adb
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/ba/bad8ba9a90c50a7429f578bbad6901de" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/ba/bad8ba9a90c50a7429f578bbad6901de.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/ba/bad8ba9a90c50a7429f578bbad6901de.info"
new file mode 100644
index 00000000..dc0279ae
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/ba/bad8ba9a90c50a7429f578bbad6901de.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/be/bec613d4c1a70814fbaa396af0e9f9d9" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/be/bec613d4c1a70814fbaa396af0e9f9d9"
new file mode 100644
index 00000000..25203a58
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/be/bec613d4c1a70814fbaa396af0e9f9d9" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/be/bec613d4c1a70814fbaa396af0e9f9d9.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/be/bec613d4c1a70814fbaa396af0e9f9d9.info"
new file mode 100644
index 00000000..e20ce7a4
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/be/bec613d4c1a70814fbaa396af0e9f9d9.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/d0/d05b96cee66e14240838de167097537a" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/d0/d05b96cee66e14240838de167097537a"
new file mode 100644
index 00000000..012fc77f
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/d0/d05b96cee66e14240838de167097537a" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/d0/d05b96cee66e14240838de167097537a.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/d0/d05b96cee66e14240838de167097537a.info"
new file mode 100644
index 00000000..91382f36
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/d0/d05b96cee66e14240838de167097537a.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/d1/d1d296f19f6c88940bf9d1c228679d26" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/d1/d1d296f19f6c88940bf9d1c228679d26"
new file mode 100644
index 00000000..46a47cf5
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/d1/d1d296f19f6c88940bf9d1c228679d26" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/d1/d1d296f19f6c88940bf9d1c228679d26.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/d1/d1d296f19f6c88940bf9d1c228679d26.info"
new file mode 100644
index 00000000..4ef1bd4f
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/d1/d1d296f19f6c88940bf9d1c228679d26.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/d9/d91035c548f23744c9bfb107348ed1c0" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/d9/d91035c548f23744c9bfb107348ed1c0"
new file mode 100644
index 00000000..49826339
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/d9/d91035c548f23744c9bfb107348ed1c0" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/d9/d91035c548f23744c9bfb107348ed1c0.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/d9/d91035c548f23744c9bfb107348ed1c0.info"
new file mode 100644
index 00000000..f4765606
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/d9/d91035c548f23744c9bfb107348ed1c0.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/dc/dc443db3e92b4983b9738c1131f555cb" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/dc/dc443db3e92b4983b9738c1131f555cb"
new file mode 100644
index 00000000..170bd9c0
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/dc/dc443db3e92b4983b9738c1131f555cb" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/dc/dc443db3e92b4983b9738c1131f555cb.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/dc/dc443db3e92b4983b9738c1131f555cb.info"
new file mode 100644
index 00000000..ef29fd61
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/dc/dc443db3e92b4983b9738c1131f555cb.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/e1/e1007cd261c84053beb0c3537782908d" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/e1/e1007cd261c84053beb0c3537782908d"
new file mode 100644
index 00000000..d93f478a
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/e1/e1007cd261c84053beb0c3537782908d" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/e1/e1007cd261c84053beb0c3537782908d.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/e1/e1007cd261c84053beb0c3537782908d.info"
new file mode 100644
index 00000000..6ab7bdae
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/e1/e1007cd261c84053beb0c3537782908d.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/e8/e8d07d2d1554e2a4daea939c5ee11e92" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/e8/e8d07d2d1554e2a4daea939c5ee11e92"
new file mode 100644
index 00000000..6fdf8846
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/e8/e8d07d2d1554e2a4daea939c5ee11e92" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/e8/e8d07d2d1554e2a4daea939c5ee11e92.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/e8/e8d07d2d1554e2a4daea939c5ee11e92.info"
new file mode 100644
index 00000000..397337a9
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/e8/e8d07d2d1554e2a4daea939c5ee11e92.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/e9/e9ba8b25bc658f84b886923aee2815d0" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/e9/e9ba8b25bc658f84b886923aee2815d0"
new file mode 100644
index 00000000..24a41619
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/e9/e9ba8b25bc658f84b886923aee2815d0" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/e9/e9ba8b25bc658f84b886923aee2815d0.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/e9/e9ba8b25bc658f84b886923aee2815d0.info"
new file mode 100644
index 00000000..1986a445
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/e9/e9ba8b25bc658f84b886923aee2815d0.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/f5/f5f67c52d1564df4a8936ccd202a3bd8" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/f5/f5f67c52d1564df4a8936ccd202a3bd8"
new file mode 100644
index 00000000..615431f1
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/f5/f5f67c52d1564df4a8936ccd202a3bd8" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/f5/f5f67c52d1564df4a8936ccd202a3bd8.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/f5/f5f67c52d1564df4a8936ccd202a3bd8.info"
new file mode 100644
index 00000000..311e931a
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/f5/f5f67c52d1564df4a8936ccd202a3bd8.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/f7/f70555f144d8491a825f0804e09c671c" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/f7/f70555f144d8491a825f0804e09c671c"
new file mode 100644
index 00000000..8cecdff4
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/f7/f70555f144d8491a825f0804e09c671c" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/f7/f70555f144d8491a825f0804e09c671c.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/f7/f70555f144d8491a825f0804e09c671c.info"
new file mode 100644
index 00000000..df250ee9
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/f7/f70555f144d8491a825f0804e09c671c.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/f7/f7b54ff4a43d4fcf81b4538b678e0bcc" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/f7/f7b54ff4a43d4fcf81b4538b678e0bcc"
new file mode 100644
index 00000000..bd9e25f3
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/f7/f7b54ff4a43d4fcf81b4538b678e0bcc" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/f7/f7b54ff4a43d4fcf81b4538b678e0bcc.info" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/f7/f7b54ff4a43d4fcf81b4538b678e0bcc.info"
new file mode 100644
index 00000000..04c551ba
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/metadata/f7/f7b54ff4a43d4fcf81b4538b678e0bcc.info" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/shadercompiler-UnityShaderCompiler.exe0.log" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/shadercompiler-UnityShaderCompiler.exe0.log"
new file mode 100644
index 00000000..777bd1c3
--- /dev/null
+++ "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/Library/shadercompiler-UnityShaderCompiler.exe0.log"
@@ -0,0 +1,30 @@
+Base path: D:/Program Files/Unity5.6.2/Editor/Data
+Cmd: initializeCompiler
+Cmd: compileSnippet
+ api=4 type=0 insize=943 outsize=690 kw= pd=UNITY_ENABLE_REFLECTION_BUFFERS UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS UNITY_PBS_USE_BRDF1 UNITY_SPECCUBE_BOX_PROJECTION UNITY_SPECCUBE_BLENDING UNITY_ENABLE_DETAIL_NORMALMAP SHADER_API_DESKTOP UNITY_COLORSPACE_GAMMA ok=1
+Cmd: compileSnippet
+ api=4 type=1 insize=943 outsize=354 kw= pd=UNITY_ENABLE_REFLECTION_BUFFERS UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS UNITY_PBS_USE_BRDF1 UNITY_SPECCUBE_BOX_PROJECTION UNITY_SPECCUBE_BLENDING UNITY_ENABLE_DETAIL_NORMALMAP SHADER_API_DESKTOP UNITY_COLORSPACE_GAMMA ok=1
+Cmd: compileSnippet
+ api=4 type=0 insize=1469 outsize=1082 kw= pd=UNITY_ENABLE_REFLECTION_BUFFERS UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS UNITY_PBS_USE_BRDF1 UNITY_SPECCUBE_BOX_PROJECTION UNITY_SPECCUBE_BLENDING UNITY_ENABLE_DETAIL_NORMALMAP SHADER_API_DESKTOP UNITY_COLORSPACE_GAMMA ok=1
+Cmd: compileSnippet
+ api=4 type=1 insize=1469 outsize=522 kw= pd=UNITY_ENABLE_REFLECTION_BUFFERS UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS UNITY_PBS_USE_BRDF1 UNITY_SPECCUBE_BOX_PROJECTION UNITY_SPECCUBE_BLENDING UNITY_ENABLE_DETAIL_NORMALMAP SHADER_API_DESKTOP UNITY_COLORSPACE_GAMMA ok=1
+Cmd: compileSnippet
+ api=4 type=0 insize=1480 outsize=1094 kw= pd=UNITY_ENABLE_REFLECTION_BUFFERS UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS UNITY_PBS_USE_BRDF1 UNITY_SPECCUBE_BOX_PROJECTION UNITY_SPECCUBE_BLENDING UNITY_ENABLE_DETAIL_NORMALMAP SHADER_API_DESKTOP UNITY_COLORSPACE_GAMMA ok=1
+Cmd: compileSnippet
+ api=4 type=1 insize=1480 outsize=522 kw= pd=UNITY_ENABLE_REFLECTION_BUFFERS UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS UNITY_PBS_USE_BRDF1 UNITY_SPECCUBE_BOX_PROJECTION UNITY_SPECCUBE_BLENDING UNITY_ENABLE_DETAIL_NORMALMAP SHADER_API_DESKTOP UNITY_COLORSPACE_GAMMA ok=1
+Cmd: compileSnippet
+ api=4 type=0 insize=13211 outsize=5478 kw=_SUNDISK_SIMPLE pd=UNITY_ENABLE_REFLECTION_BUFFERS UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS UNITY_PBS_USE_BRDF1 UNITY_SPECCUBE_BOX_PROJECTION UNITY_SPECCUBE_BLENDING UNITY_ENABLE_DETAIL_NORMALMAP SHADER_API_DESKTOP UNITY_COLORSPACE_GAMMA ok=1
+Cmd: compileSnippet
+ api=4 type=1 insize=13211 outsize=930 kw=_SUNDISK_SIMPLE pd=UNITY_ENABLE_REFLECTION_BUFFERS UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS UNITY_PBS_USE_BRDF1 UNITY_SPECCUBE_BOX_PROJECTION UNITY_SPECCUBE_BLENDING UNITY_ENABLE_DETAIL_NORMALMAP SHADER_API_DESKTOP UNITY_COLORSPACE_GAMMA ok=1
+Cmd: compileSnippet
+ api=4 type=0 insize=1555 outsize=834 kw= pd=UNITY_ENABLE_REFLECTION_BUFFERS UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS UNITY_PBS_USE_BRDF1 UNITY_SPECCUBE_BOX_PROJECTION UNITY_SPECCUBE_BLENDING UNITY_ENABLE_DETAIL_NORMALMAP SHADER_API_DESKTOP UNITY_COLORSPACE_GAMMA ok=1
+Cmd: compileSnippet
+ api=4 type=1 insize=1555 outsize=666 kw= pd=UNITY_ENABLE_REFLECTION_BUFFERS UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS UNITY_PBS_USE_BRDF1 UNITY_SPECCUBE_BOX_PROJECTION UNITY_SPECCUBE_BLENDING UNITY_ENABLE_DETAIL_NORMALMAP SHADER_API_DESKTOP UNITY_COLORSPACE_GAMMA ok=1
+Cmd: compileSnippet
+ api=4 type=0 insize=1146 outsize=790 kw= pd=UNITY_ENABLE_REFLECTION_BUFFERS UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS UNITY_PBS_USE_BRDF1 UNITY_SPECCUBE_BOX_PROJECTION UNITY_SPECCUBE_BLENDING UNITY_ENABLE_DETAIL_NORMALMAP SHADER_API_DESKTOP UNITY_COLORSPACE_GAMMA ok=1
+Cmd: compileSnippet
+ api=4 type=1 insize=1146 outsize=402 kw= pd=UNITY_ENABLE_REFLECTION_BUFFERS UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS UNITY_PBS_USE_BRDF1 UNITY_SPECCUBE_BOX_PROJECTION UNITY_SPECCUBE_BLENDING UNITY_ENABLE_DETAIL_NORMALMAP SHADER_API_DESKTOP UNITY_COLORSPACE_GAMMA ok=1
+Cmd: compileSnippet
+ api=4 type=0 insize=1502 outsize=1082 kw= pd=UNITY_ENABLE_REFLECTION_BUFFERS UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS UNITY_PBS_USE_BRDF1 UNITY_SPECCUBE_BOX_PROJECTION UNITY_SPECCUBE_BLENDING UNITY_ENABLE_DETAIL_NORMALMAP SHADER_API_DESKTOP UNITY_COLORSPACE_GAMMA ok=1
+Cmd: compileSnippet
+ api=4 type=1 insize=1502 outsize=502 kw= pd=UNITY_ENABLE_REFLECTION_BUFFERS UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS UNITY_PBS_USE_BRDF1 UNITY_SPECCUBE_BOX_PROJECTION UNITY_SPECCUBE_BLENDING UNITY_ENABLE_DETAIL_NORMALMAP SHADER_API_DESKTOP UNITY_COLORSPACE_GAMMA ok=1
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/AudioManager.asset" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/AudioManager.asset"
new file mode 100644
index 00000000..f0923b0e
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/AudioManager.asset" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/ClusterInputManager.asset" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/ClusterInputManager.asset"
new file mode 100644
index 00000000..e8b7111d
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/ClusterInputManager.asset" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/DynamicsManager.asset" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/DynamicsManager.asset"
new file mode 100644
index 00000000..dd95da0c
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/DynamicsManager.asset" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/EditorBuildSettings.asset" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/EditorBuildSettings.asset"
new file mode 100644
index 00000000..258655b0
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/EditorBuildSettings.asset" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/EditorSettings.asset" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/EditorSettings.asset"
new file mode 100644
index 00000000..79f47e66
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/EditorSettings.asset" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/GraphicsSettings.asset" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/GraphicsSettings.asset"
new file mode 100644
index 00000000..4d83239e
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/GraphicsSettings.asset" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/InputManager.asset" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/InputManager.asset"
new file mode 100644
index 00000000..26abeff5
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/InputManager.asset" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/NavMeshAreas.asset" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/NavMeshAreas.asset"
new file mode 100644
index 00000000..94638a18
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/NavMeshAreas.asset" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/NetworkManager.asset" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/NetworkManager.asset"
new file mode 100644
index 00000000..c12209e1
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/NetworkManager.asset" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/Physics2DSettings.asset" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/Physics2DSettings.asset"
new file mode 100644
index 00000000..c9b4ae03
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/Physics2DSettings.asset" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/ProjectSettings.asset" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/ProjectSettings.asset"
new file mode 100644
index 00000000..2df4099c
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/ProjectSettings.asset" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/ProjectVersion.txt" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/ProjectVersion.txt"
new file mode 100644
index 00000000..735bd8a6
--- /dev/null
+++ "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/ProjectVersion.txt"
@@ -0,0 +1 @@
+m_EditorVersion: 5.6.2f1
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/QualitySettings.asset" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/QualitySettings.asset"
new file mode 100644
index 00000000..581e3628
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/QualitySettings.asset" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/TagManager.asset" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/TagManager.asset"
new file mode 100644
index 00000000..d0a402a4
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/TagManager.asset" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/TimeManager.asset" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/TimeManager.asset"
new file mode 100644
index 00000000..ea9c17a6
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/TimeManager.asset" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/UnityConnectSettings.asset" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/UnityConnectSettings.asset"
new file mode 100644
index 00000000..7da99093
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/ProjectSettings/UnityConnectSettings.asset" differ
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/dsq.csproj" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/dsq.csproj"
new file mode 100644
index 00000000..21035dab
--- /dev/null
+++ "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/dsq.csproj"
@@ -0,0 +1,86 @@
+
+
+
+ Debug
+ AnyCPU
+ 10.0.20506
+ 2.0
+ {30D1E262-F948-2BEA-6182-179BF4725374}
+ Library
+ Assembly-CSharp
+ 512
+ {E097FAD1-6243-4DAD-9C02-E9B9EFC3FFC1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ .NETFramework
+ v3.5
+ Unity Subset v3.5
+
+ VSTU
+ Game:1
+ StandaloneWindows:5
+ 5.6.2f1
+
+ 4
+
+
+ pdbonly
+ false
+ Temp\UnityVS_bin\Debug\
+ Temp\UnityVS_obj\Debug\
+ prompt
+ 4
+ DEBUG;TRACE;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_5_6_2;UNITY_5_6;UNITY_5;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_GENERICS;ENABLE_PVR_GI;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_RUNTIME_NAVMESH_BUILDING;ENABLE_SPRITERENDERER_FLIPPING;ENABLE_SPRITES;ENABLE_TERRAIN;ENABLE_RAKNET;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;ENABLE_NATIVE_ARRAY;INCLUDE_DYNAMIC_GI;INCLUDE_GI;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;INCLUDE_PUBNUB;ENABLE_PLAYMODE_TESTS_RUNNER;ENABLE_SCRIPTING_NEW_CSHARP_COMPILER;ENABLE_VIDEO;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_UNITYWEBREQUEST;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_EVENT_QUEUE;ENABLE_CLUSTERINPUT;ENABLE_VR;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_2_0_SUBSET;ENABLE_PROFILER;DEBUG;TRACE;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_NATIVE_ARRAY_CHECKS;UNITY_TEAM_LICENSE;ENABLE_VSTU;UNITY_PRO_LICENSE
+ true
+
+
+ pdbonly
+ false
+ Temp\UnityVS_bin\Release\
+ Temp\UnityVS_obj\Release\
+ prompt
+ 4
+ TRACE;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_5_6_2;UNITY_5_6;UNITY_5;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_GENERICS;ENABLE_PVR_GI;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_RUNTIME_NAVMESH_BUILDING;ENABLE_SPRITERENDERER_FLIPPING;ENABLE_SPRITES;ENABLE_TERRAIN;ENABLE_RAKNET;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;ENABLE_NATIVE_ARRAY;INCLUDE_DYNAMIC_GI;INCLUDE_GI;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;INCLUDE_PUBNUB;ENABLE_PLAYMODE_TESTS_RUNNER;ENABLE_SCRIPTING_NEW_CSHARP_COMPILER;ENABLE_VIDEO;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_UNITYWEBREQUEST;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_EVENT_QUEUE;ENABLE_CLUSTERINPUT;ENABLE_VR;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_2_0_SUBSET;ENABLE_PROFILER;DEBUG;TRACE;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_NATIVE_ARRAY_CHECKS;UNITY_TEAM_LICENSE;ENABLE_VSTU;UNITY_PRO_LICENSE
+ true
+
+
+
+
+
+
+
+
+
+
+
+ D:/Program Files/Unity5.6.2/Editor/Data/Managed/UnityEngine.dll
+
+
+ D:/Program Files/Unity5.6.2/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll
+
+
+ D:/Program Files/Unity5.6.2/Editor/Data/UnityExtensions/Unity/Networking/UnityEngine.Networking.dll
+
+
+ D:/Program Files/Unity5.6.2/Editor/Data/UnityExtensions/Unity/TestRunner/UnityEngine.TestRunner.dll
+
+
+ D:/Program Files/Unity5.6.2/Editor/Data/UnityExtensions/Unity/TestRunner/net35/unity-custom/nunit.framework.dll
+
+
+ D:/Program Files/Unity5.6.2/Editor/Data/UnityExtensions/Unity/UnityAnalytics/UnityEngine.Analytics.dll
+
+
+ D:/Program Files/Unity5.6.2/Editor/Data/UnityExtensions/Unity/UnityHoloLens/RuntimeEditor/UnityEngine.HoloLens.dll
+
+
+ D:/Program Files/Unity5.6.2/Editor/Data/UnityExtensions/Unity/UnityVR/RuntimeEditor/UnityEngine.VR.dll
+
+
+ D:/Program Files/Unity5.6.2/Editor/Data/Managed/UnityEditor.dll
+
+
+
+
+
+
+
+
diff --git "a/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/dsq.sln" "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/dsq.sln"
new file mode 100644
index 00000000..46a9ffea
--- /dev/null
+++ "b/ByteEdu.Com/Unity3D/\345\215\225\346\234\272\346\226\227\345\205\275\346\243\213/dsq/dsq.sln"
@@ -0,0 +1,20 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 15
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "dsq", "dsq.csproj", "{30D1E262-F948-2BEA-6182-179BF4725374}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {30D1E262-F948-2BEA-6182-179BF4725374}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {30D1E262-F948-2BEA-6182-179BF4725374}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {30D1E262-F948-2BEA-6182-179BF4725374}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {30D1E262-F948-2BEA-6182-179BF4725374}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git "a/ByteEdu.Com/Unity3D/\346\211\223\345\234\260\351\274\240\346\270\270\346\210\217/\345\256\214\346\225\264\344\273\243\347\240\201/end.zip" "b/ByteEdu.Com/Unity3D/\346\211\223\345\234\260\351\274\240\346\270\270\346\210\217/\345\256\214\346\225\264\344\273\243\347\240\201/end.zip"
new file mode 100644
index 00000000..c6135c27
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\346\211\223\345\234\260\351\274\240\346\270\270\346\210\217/\345\256\214\346\225\264\344\273\243\347\240\201/end.zip" differ
diff --git "a/ByteEdu.Com/Unity3D/\346\211\223\345\234\260\351\274\240\346\270\270\346\210\217/\347\254\254\345\215\201\345\233\233\350\212\202/byteEdu53.unitypackage" "b/ByteEdu.Com/Unity3D/\346\211\223\345\234\260\351\274\240\346\270\270\346\210\217/\347\254\254\345\215\201\345\233\233\350\212\202/byteEdu53.unitypackage"
new file mode 100644
index 00000000..c9a28a07
Binary files /dev/null and "b/ByteEdu.Com/Unity3D/\346\211\223\345\234\260\351\274\240\346\270\270\346\210\217/\347\254\254\345\215\201\345\233\233\350\212\202/byteEdu53.unitypackage" differ
diff --git "a/ByteEdu.Com/Unity3D/\346\211\223\345\234\260\351\274\240\346\270\270\346\210\217/\350\257\276\344\273\266ppt/\350\257\276\344\273\266PPT.txt" "b/ByteEdu.Com/Unity3D/\346\211\223\345\234\260\351\274\240\346\270\270\346\210\217/\350\257\276\344\273\266ppt/\350\257\276\344\273\266PPT.txt"
new file mode 100644
index 00000000..bab21fb6
--- /dev/null
+++ "b/ByteEdu.Com/Unity3D/\346\211\223\345\234\260\351\274\240\346\270\270\346\210\217/\350\257\276\344\273\266ppt/\350\257\276\344\273\266PPT.txt"
@@ -0,0 +1,77 @@
+һ ȫջϷԴؽ
+http://www.byteedu.com/thread-593-1-1.html
+(: ֽڽ)
+
+
+ڶ ȫջϷֻijֺʧ
+http://www.byteedu.com/thread-599-1-1.html
+(: ֽڽ)
+
+
+ ȫջϷֺͳƵ
+http://www.byteedu.com/thread-615-1-1.html
+(: ֽڽ)
+
+
+Ľ ȫջϷ˵
+http://www.byteedu.com/thread-616-1-1.html
+(: ֽڽ)
+
+
+ ȫջϷ--Э鶨
+http://www.byteedu.com/thread-626-1-1.html
+(: ֽڽ)
+
+
+ ȫջϷʱ䡢
+http://www.byteedu.com/thread-627-1-1.html
+(: ֽڽ)
+
+
+߽ ȫջRankЭ
+http://www.byteedu.com/thread-643-1-1.html
+(: ֽڽ)
+
+
+ڰ˽ ͻ˴
+
+
+ھŽ ȫջ--¼ʵ
+http://www.byteedu.com/thread-667-1-1.html
+(: ֽڽ)
+
+
+ʮ ȫջ룬Ӳ
+http://www.byteedu.com/thread-685-1-1.html
+(: ֽڽ)
+
+
+ȫջʮһ ҵ½Эʵ
+http://www.byteedu.com/thread-697-1-1.html
+(: ֽڽ)
+
+
+ȫջʮ ҵ½Эʵ
+http://www.byteedu.com/thread-707-1-1.html
+(: ֽڽ)
+
+
+ʮ йʵ
+http://www.byteedu.com/thread-709-1-1.html
+(: ֽڽ)
+
+
+ʮĽ ¼ע֤
+http://www.byteedu.com/thread-723-1-1.html
+(: ֽڽ)
+
+
+
+ʮ ¼ɹлϷ
+http://www.byteedu.com/thread-731-1-1.html
+(: ֽڽ)
+
+
+йܣ
+https://github.com/Golangltd/codeclass/tree/master/ByteEdu.Com
+Ƶӣhttp://www.byteedu.com/thread-283-1-1.html
diff --git "a/ByteEdu.Com\345\233\233\345\267\235\350\241\200\346\210\230\345\210\260\345\272\225\345\205\250\346\240\210\350\257\276\347\250\213/\350\241\200\346\210\230\345\210\260\345\272\225\350\256\276\350\256\241.xmind" "b/ByteEdu.Com\345\233\233\345\267\235\350\241\200\346\210\230\345\210\260\345\272\225\345\205\250\346\240\210\350\257\276\347\250\213/\350\241\200\346\210\230\345\210\260\345\272\225\350\256\276\350\256\241.xmind"
new file mode 100644
index 00000000..23f4274d
Binary files /dev/null and "b/ByteEdu.Com\345\233\233\345\267\235\350\241\200\346\210\230\345\210\260\345\272\225\345\205\250\346\240\210\350\257\276\347\250\213/\350\241\200\346\210\230\345\210\260\345\272\225\350\256\276\350\256\241.xmind" differ
diff --git "a/ByteEdu.Com\345\233\233\345\267\235\350\241\200\346\210\230\345\210\260\345\272\225\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/XZ_login/Proto/Proto.go" "b/ByteEdu.Com\345\233\233\345\267\235\350\241\200\346\210\230\345\210\260\345\272\225\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/XZ_login/Proto/Proto.go"
new file mode 100644
index 00000000..2cac8849
--- /dev/null
+++ "b/ByteEdu.Com\345\233\233\345\267\235\350\241\200\346\210\230\345\210\260\345\272\225\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/XZ_login/Proto/Proto.go"
@@ -0,0 +1,58 @@
+package ProtoDSQ
+
+import (
+ "XZ_server/Player"
+)
+
+/*
+ LollipopGo架构的设计的规则:C语言设计,顺序执行
+ 区分游戏:主协议区分 例如 斗兽棋,麻将,斗地主,U3D对战游戏的
+ 功能区分:子协议区分
+
+ leaf,等
+ 消息号通过启动服务器加载到内存,绑定func;异步回调
+ 消息--server find map 消息 ? 回调func:不处理
+*/
+
+// 斗兽棋的主协议 == 10号
+const (
+ PROTODSQ_INIT = iota // 初始化
+ C2L_Player_Login_Proto // C2L_Player_Login_Proto == 1 客户端请求登录服务器,获取:tocken+url
+ L2C_Player_Login_Proto // L2C_Player_Login_Proto == 2 服务器返回 tocken+url
+ G2L_Player_Login_Proto // G2L_Player_Login_Proto == 3 游戏服务器验证 tocken
+ L2G_Player_Login_Proto // L2G_Player_Login_Proto == 4 服务器--返回数据 playerdata
+)
+
+// -----------------------------------------------------------------------------
+// G2L_Player_Login_Proto == 3 游戏服务器验证 tocken
+type G2L_Player_Login struct {
+ Protocol int
+ Protocol2 int
+ Tocken string // 登录验证码
+}
+
+// L2G_Player_Login_Proto == 4 服务器--返回数据 playerdata
+type L2G_Player_Login struct {
+ Protocol int
+ Protocol2 int
+ Isucc bool // true:验证成功,false:标识验证失败
+ PlayerData *Player_DSQ.PlayerData // 玩家的结构信息
+}
+
+// -----------------------------------------------------------------------------
+// L2C_Player_Login_Proto == 2 服务器返回 tocken+url
+type L2C_Player_Login struct {
+ Protocol int
+ Protocol2 int
+ Tocken string // 登录验证码
+ URL string // 游戏服务器的地址
+}
+
+//C2L_Player_Login_Proto == 1 客户端请求登录服务器,获取:tocken+url
+type C2L_Player_Login struct {
+ Protocol int
+ Protocol2 int
+ DeviceID string
+}
+
+// -----------------------------------------------------------------------------
diff --git "a/ByteEdu.Com\345\233\233\345\267\235\350\241\200\346\210\230\345\210\260\345\272\225\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/XZ_login/tmain.go" "b/ByteEdu.Com\345\233\233\345\267\235\350\241\200\346\210\230\345\210\260\345\272\225\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/XZ_login/tmain.go"
new file mode 100644
index 00000000..09051148
--- /dev/null
+++ "b/ByteEdu.Com\345\233\233\345\267\235\350\241\200\346\210\230\345\210\260\345\272\225\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/XZ_login/tmain.go"
@@ -0,0 +1,145 @@
+package main
+
+import (
+ "DSQ_login/Proto"
+ "DSQ_server/Player"
+ "LollipopGo/LollipopGo/util"
+ "encoding/json"
+ "fmt"
+ "net/http"
+ "strconv"
+)
+
+/*
+ 验证码生成规则
+ 1. DeviceID 生成
+ 2. DeviceID MD5 ok
+*/
+
+var G_Player_Tocken map[string]string
+
+func init() {
+ G_Player_Tocken = make(map[string]string)
+}
+
+func main() {
+ strport := "4001"
+ http.HandleFunc("/BaBaLiuLiu_Server", Server_Func) // 服务器验证 -- game_server 拿到数据后(tocken) 去我们的login_server验证 ,tocken是否有效
+ http.HandleFunc("/BaBaLiuLiu_DSQ", Client_Func) // 客户端验证 -- 客户端到login 获取我们的【tocken】 数据 + 【game_server的链接信息(ip+port)】
+ http.ListenAndServe(":"+strport, nil)
+}
+
+// 服务器验证流程
+func Server_Func(w http.ResponseWriter, req *http.Request) {
+ w.Header().Set("Access-Control-Allow-Origin", "*")
+ req.Header.Add("content-type", "charset=UTF-8")
+ req.ParseForm()
+ defer func() {
+ if err := recover(); err != nil {
+ fmt.Println("%s", err)
+ req.Body.Close()
+ }
+ }()
+ // 逻辑处理
+ //{
+ fmt.Println("-----------服务器验证流程")
+ //}
+ if req.Method == "GET" {
+ Protocol, bProtocol := req.Form["Protocol"]
+ Protocol2, bProtocol2 := req.Form["Protocol2"]
+ if bProtocol && bProtocol2 {
+ fmt.Println("--------Protocol", Protocol)
+ fmt.Println("--------Protocol2", Protocol2)
+ Token, _ := req.Form["Token"] // ? 这里不够严谨
+ fmt.Println("--------Token", Token)
+ _, ok := G_Player_Tocken[Token[0]]
+ if ok {
+
+ data := ProtoDSQ.L2G_Player_Login{
+ Protocol: 10,
+ Protocol2: 2,
+ Isucc: true,
+ }
+ dataplayer := &Player_DSQ.PlayerData{
+ UID: len(G_Player_Tocken) + 1,
+ OpenID: util.MD5_LollipopGO(strconv.Itoa(len(G_Player_Tocken) + 1)),
+ Name: "guest_" + strconv.Itoa(len(G_Player_Tocken)+1),
+ Avatar: "1",
+ Level: 1,
+ Coin: 1000,
+ }
+ data.PlayerData = dataplayer
+ datamsg, _ := json.Marshal(data)
+ fmt.Fprintf(w, "%s", datamsg)
+ return
+ }
+ data := ProtoDSQ.L2G_Player_Login{
+ Protocol: 10,
+ Protocol2: 2,
+ Isucc: false,
+ }
+ datamsg, _ := json.Marshal(data)
+ fmt.Fprintf(w, "%s", datamsg)
+ return
+ }
+ }
+ // LollipopGO_Error:
+ // fmt.Println("参数错误")
+}
+
+// 客户端验证流程
+func Client_Func(w http.ResponseWriter, req *http.Request) {
+ w.Header().Set("Access-Control-Allow-Origin", "*")
+ req.Header.Add("content-type", "charset=UTF-8")
+ req.ParseForm()
+ defer func() {
+ if err := recover(); err != nil {
+ fmt.Println("%s", err)
+ req.Body.Close()
+ }
+ }()
+ // 逻辑处理
+ //{
+ fmt.Println("-----------客户端验证流程")
+ //}
+ if req.Method == "GET" {
+ Protocol, bProtocol := req.Form["Protocol"]
+ Protocol2, bProtocol2 := req.Form["Protocol2"]
+ if bProtocol && bProtocol2 {
+ fmt.Println("--------Protocol", Protocol)
+ fmt.Println("--------Protocol2", Protocol2)
+ if Protocol[0] == "10" {
+ // 功能的逻辑操作
+ if Protocol2[0] == "1" {
+ // 游客登录
+ DeviceID, bDeviceID := req.Form["DeviceID"]
+ if bDeviceID {
+ tocken := util.MD5_LollipopGO(DeviceID[0])
+ G_Player_Tocken[tocken] = tocken
+ URL := "192.168.0.103:4002"
+ data := ProtoDSQ.L2C_Player_Login{
+ Protocol: 10,
+ Protocol2: 2,
+ Tocken: tocken, // 登录验证码
+ URL: URL, // 游戏服务器的地址
+ }
+ datamsg, _ := json.Marshal(data)
+ fmt.Fprintf(w, "%s", datamsg)
+ return
+ } else {
+ goto LollipopGO_Error
+ }
+ }
+ } else {
+ fmt.Println("主协议不存在")
+ fmt.Fprintf(w, "%s", "主协议不存在")
+ return
+ }
+ }
+ return
+ } else {
+ return
+ }
+LollipopGO_Error:
+ fmt.Println("参数错误")
+}
diff --git "a/ByteEdu.Com\345\233\233\345\267\235\350\241\200\346\210\230\345\210\260\345\272\225\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/XZ_server/ChessINIT.go" "b/ByteEdu.Com\345\233\233\345\267\235\350\241\200\346\210\230\345\210\260\345\272\225\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/XZ_server/ChessINIT.go"
new file mode 100644
index 00000000..43d88ac0
--- /dev/null
+++ "b/ByteEdu.Com\345\233\233\345\267\235\350\241\200\346\210\230\345\210\260\345\272\225\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/XZ_server/ChessINIT.go"
@@ -0,0 +1,112 @@
+package main
+
+import (
+ "LollipopGo/LollipopGo/util"
+ "XZ_server/Proto"
+ "fmt"
+)
+
+/*
+
+------------------------------------
+| [0,0] [1,0] [2,0] [3,0] |
+| |
+| [0,1] [1,1] [2,1] [3,1] |
+| |
+| [0,2] [1,2] [2,2] [3,2] |
+| |
+| [0,3] [1,3] [2,3] [3,3] |
+|-----------------------------------
+ 服务器棋牌设计
+*/
+
+/*
+ 棋牌的初始化数据
+ 1-16 1-8 = A 9-18 = B
+
+ 初始化棋牌的思路 如下:
+ 1. 服务器产生随机数,0-16
+ 2. 通过第1步骤的随机数,去DSQ_QI数组获取值,例如 3 --> num := DSQ_QI[3] (删除获取的位置的信息)
+ 3. 通过第2步骤 生成的棋子 num,填充 服务器二维数组
+
+ 注意点:
+ 1. 服务器要首先生成,二维数组(空的)
+ 2. 注意浅拷贝和深拷贝的问题 copy()
+*/
+var DSQ_QI = []int{
+ Proto_DSQGame.Elephant,
+ Proto_DSQGame.Lion,
+ Proto_DSQGame.Tiger,
+ Proto_DSQGame.Leopard,
+ Proto_DSQGame.Wolf,
+ Proto_DSQGame.Dog,
+ Proto_DSQGame.Cat,
+ Proto_DSQGame.Mouse,
+ Proto_DSQGame.Elephant + Proto_DSQGame.Mouse,
+ Proto_DSQGame.Lion + Proto_DSQGame.Mouse,
+ Proto_DSQGame.Tiger + Proto_DSQGame.Mouse,
+ Proto_DSQGame.Leopard + Proto_DSQGame.Mouse,
+ Proto_DSQGame.Wolf + Proto_DSQGame.Mouse,
+ Proto_DSQGame.Dog + Proto_DSQGame.Mouse,
+ Proto_DSQGame.Cat + Proto_DSQGame.Mouse,
+ Proto_DSQGame.Mouse + Proto_DSQGame.Mouse,
+}
+
+func init() {
+ //InitDSQ(DSQ_QI)
+}
+
+// 初始化函数
+// 作业: 如何填充二维数据
+func InitDSQ(data1 []int) [4][4]int {
+
+ datatmp, x, y := [4][4]int{}, 0, 0
+ // data := data1
+ data := make([]int, len(data1))
+ copy(data, data1)
+
+ for i := 0; i < 2*Proto_DSQGame.Mouse; i++ {
+ icount := util.RandInterval_LollipopGo(0, int32(len(data)-1))
+ // fmt.Println("随机数:------", icount)
+ /* icount == 1 len(data) == 16
+ 开发过程中:可以将二维数组--理解一维数组操作
+ x,y
+ 当y的数值增加到我们定义的数组长度后x才累加
+ */
+ if int(icount) < len(data) {
+ datatmp[x][y] = data[icount]
+ y++
+ if y%4 == 0 {
+ x++
+ y = 0
+ }
+ // 前闭后开区间
+ // data:=[]int{0,1,2,3,4,5,6}
+ // num = 2
+ // data[:num] ={0,1}
+ // data[num+1:] ={3,4,5,6}
+ // append --> {0,1,3,4,5,6}
+ data = append(data[:icount], data[icount+1:]...)
+ } else {
+ datatmp[x][y] = data[icount]
+ y++
+ if y%4 == 0 {
+ x++
+ y = 0
+ }
+ data = data[:icount-1]
+ }
+ }
+ fmt.Println("datatmp------", datatmp)
+ // fmt.Println("datatmp[0][0]------", datatmp[0][0])
+ // fmt.Println("datatmp[0][0]------", datatmp[1][0])
+ /*
+ [
+ [6 8 11 5]
+ [12 10 15 3]
+ [16 1 2 14]
+ [4 7 13 9]
+ ]
+ */
+ return datatmp
+}
diff --git "a/ByteEdu.Com\345\233\233\345\267\235\350\241\200\346\210\230\345\210\260\345\272\225\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/XZ_server/HandleClt.go" "b/ByteEdu.Com\345\233\233\345\267\235\350\241\200\346\210\230\345\210\260\345\272\225\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/XZ_server/HandleClt.go"
new file mode 100644
index 00000000..91c47e6b
--- /dev/null
+++ "b/ByteEdu.Com\345\233\233\345\267\235\350\241\200\346\210\230\345\210\260\345\272\225\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/XZ_server/HandleClt.go"
@@ -0,0 +1,55 @@
+package main
+
+import (
+ "Proto"
+ "XZ_server/Proto"
+ _ "fmt"
+ "glog-master"
+
+ "code.google.com/p/go.net/websocket"
+)
+
+// 主协议处理
+func (this *DSQGame) HandleCltProtocol(protocol interface{}, protocol2 interface{}, ProtocolData map[string]interface{}, Connection *websocket.Conn) interface{} {
+ switch protocol {
+ case float64(Proto.G_GameDSQ_Proto):
+ {
+ this.HandleCltProtocol2(protocol2, ProtocolData, Connection)
+ }
+ default:
+ glog.Info("protocol default")
+ }
+ return 0
+}
+
+func (this *DSQGame) HandleCltProtocol2(protocol2 interface{}, ProtocolData map[string]interface{}, Connection *websocket.Conn) interface{} {
+ ConnectionData := &DSQGame{
+ Connection: Connection,
+ MapSafe: M,
+ }
+ switch protocol2 {
+ case float64(Proto_DSQGame.C2G_Player_RenShu_Proto):
+ {
+ ConnectionData.PlayerRenShu(ProtocolData)
+ }
+ case float64(Proto_DSQGame.C2G_Player_XingZou_Proto):
+ {
+ ConnectionData.PlayerXingZou(ProtocolData)
+ }
+ case float64(Proto_DSQGame.C2G_Player_FanPai_Proto):
+ {
+ ConnectionData.PlayerFanPai(ProtocolData)
+ }
+ case float64(Proto_DSQGame.C2G_Player_PiPeiGame_Proto):
+ {
+ ConnectionData.PlayerPiPei(ProtocolData)
+ }
+ case float64(Proto_DSQGame.C2G_Player_Login_Proto):
+ {
+ ConnectionData.PlayerLogin(ProtocolData)
+ }
+ default:
+ glog.Info("protocol2 default")
+ }
+ return 0
+}
diff --git "a/ByteEdu.Com\345\233\233\345\267\235\350\241\200\346\210\230\345\210\260\345\272\225\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/XZ_server/HandleCltFunc.go" "b/ByteEdu.Com\345\233\233\345\267\235\350\241\200\346\210\230\345\210\260\345\272\225\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/XZ_server/HandleCltFunc.go"
new file mode 100644
index 00000000..ff4265a7
--- /dev/null
+++ "b/ByteEdu.Com\345\233\233\345\267\235\350\241\200\346\210\230\345\210\260\345\272\225\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/XZ_server/HandleCltFunc.go"
@@ -0,0 +1,344 @@
+package main
+
+import (
+ "LollipopGo/LollipopGo/network"
+ "XZ_login/Proto"
+ "XZ_server/Match"
+ "XZ_server/Proto"
+ "XZ_server/ST"
+ "encoding/json"
+ "fmt"
+ "math"
+)
+
+//------------------------------------------------------------------------------
+// 共用函数
+
+func (this *DSQGame) GetRoomID(stropenid string) string {
+ val, err := M.Get(stropenid + "|User")
+ if err != nil {
+ return ""
+ }
+ return val.(*DSQGame).StrMD5
+}
+
+// 客户端与服务器的棋盘位置对应关系
+// 作业
+func (this *DSQGame) GetClientAndServerPos(strpos string) (int, int) {
+ if strpos == "1" {
+ return 0, 0
+ } else if strpos == "2" {
+ return 0, 1
+ } else if strpos == "3" {
+ return 0, 2
+ } else if strpos == "4" {
+ return 0, 3
+ } else if strpos == "5" {
+ return 1, 0
+ } else if strpos == "6" {
+ return 1, 1
+ } else if strpos == "7" {
+ return 1, 2
+ } else if strpos == "8" {
+ return 1, 3
+ } else if strpos == "9" {
+ return 2, 0
+ } else if strpos == "10" {
+ return 2, 1
+ } else if strpos == "11" {
+ return 2, 2
+ } else if strpos == "12" {
+ return 2, 3
+ } else if strpos == "13" {
+ return 3, 0
+ } else if strpos == "14" {
+ return 3, 1
+ } else if strpos == "15" {
+ return 3, 2
+ } else if strpos == "16" {
+ return 3, 3
+ }
+
+ return -1, -1
+}
+
+//------------------------------------------------------------------------------
+// 认输协议处理
+func (this *DSQGame) PlayerRenShu(ProtocolData map[string]interface{}) {
+
+ strOpenID := ProtocolData["OpenID"].(string)
+
+ /*
+ type GameOver struct {
+ PlayerWin *Player_DSQ.PlayerData // 胜利的玩家
+ PlayerFail *Player_DSQ.PlayerData // 失败的玩家
+ GameName string // 游戏的名字
+ WinSeatID int // 胜利人的位置信息,0或者1的位置信息
+ Score int // 胜利人获取的分数信息
+ }
+
+ 1. 通过OpenID,获取roomid信息
+ 2. 通过第1步骤获取的roomid信息,去获取roomdata信息
+ 3. 通过第2步骤获取到的roomdata信息,去获取TurnID,是否轮到本玩家操作
+ 4. 铜鼓OpenID 获取位置信息, 1 --WinSeatID =0 或者 0 --WinSeatID = 1
+ 5. Score 分数概念,一般是策划配置,不同的场次,等到的分数是不同的 web的GM系统,服务器的读表配置
+ 6. 发送广播协议,给同一个房间下的玩家;结算信息的数据持久化,把结算数据保存到DB后者redis等---GM统计后者前端会显示个人战绩的信息
+ *7. 释放房间信息
+
+ */
+ strroomid := this.GetRoomID(strOpenID)
+ GRoomManagerPtr.RoomLock.RLock()
+ roomdata := GRoomManagerPtr.GRoomData[strroomid]
+ GRoomManagerPtr.RoomLock.RUnlock()
+ if roomdata.SeatData[roomdata.TurnID].PlayerData.OpenID != strOpenID {
+ // 没有轮到此玩家移动
+ return
+ }
+ iseatid := 0 // 赢的一方的座位ISSD
+ if roomdata.TurnID == 0 {
+ iseatid = 1
+ }
+ // 游戏结束的协议
+ gameover := &DSQ_ST.GameOver{
+ PlayerWin: roomdata.SeatData[iseatid].PlayerData, // 胜利的玩家
+ PlayerFail: roomdata.SeatData[roomdata.TurnID].PlayerData, // 失败的玩家
+ WinSeatID: iseatid, // 胜利人的位置信息,0或者1的位置信息
+ Score: 1000,
+ }
+ //广播消息
+ data := &Proto_DSQGame.Broadcast_GameOver{
+ Protocol: 10,
+ Protocol2: Proto_DSQGame.Broadcast_GameOver_Proto,
+ GameOver: gameover,
+ }
+ vala, _ := M.Get(roomdata.SeatData[0].PlayerData.OpenID + "|User")
+ valb, _ := M.Get(roomdata.SeatData[1].PlayerData.OpenID + "|User")
+ vala.(*DSQGame).PlayerSendMessage(data)
+ valb.(*DSQGame).PlayerSendMessage(data)
+ // 注意点: 结算信息的数据持久化,把结算数据保存到DB后者redis等---GM统计后者前端会显示个人战绩的信息
+ // 作业
+ // 逻辑缺失*******************************
+ // 释放房间信息
+ GRoomManagerPtr.RoomLock.RLock()
+ delete(GRoomManagerPtr.GRoomData, strroomid)
+ GRoomManagerPtr.RoomLock.RUnlock()
+ return
+}
+
+// 棋子”行走“
+// 需要完成棋子行走后的,坐标的数据校验 例如:如果是左右移动,x坐标相差1,如果是上下移动,y的坐标相差1
+func (this *DSQGame) PlayerXingZou(ProtocolData map[string]interface{}) {
+ // { 解析客户端发过来的数据的字段,
+ strOpenID := ProtocolData["OpenID"].(string)
+ strOldPos := ProtocolData["OldPos"].(string)
+ strNewPos := ProtocolData["NewPos"].(string)
+ //}
+ /*
+ 棋子行走(服务器的数据校验):
+ 1. 通过OpenID,获取roomid信息
+ 2. 通过第1步骤获取的roomid信息,去获取roomdata信息
+ 3. 通过第2步骤获取到的roomdata信息,去获取TurnID,是否轮到本玩家操作
+ 4. 通过OldPos获取当前位置数据是否被”翻开“,不被翻开的话,服务器不允许操作(ChessDataClient)
+ 5. 第4步骤ok的话,NewPos是否被”翻开“
+ 6. 第6步骤ok的话,服务器需要检测<1>:是否是同一方(8为分界线),<2>:不是同一方,比较大小
+ 7. 触发棋子移动,广播同一房间下的玩家
+ */
+ strroomid := this.GetRoomID(strOpenID)
+ GRoomManagerPtr.RoomLock.RLock()
+ roomdata := GRoomManagerPtr.GRoomData[strroomid]
+ GRoomManagerPtr.RoomLock.RUnlock()
+ // 获取turnid 0或者1
+
+ if roomdata.SeatData[roomdata.TurnID].PlayerData.OpenID != strOpenID {
+ // 没有轮到此玩家移动
+ return
+ }
+ // 获取起始位置OldPos是否翻开
+ xold, yold := this.GetClientAndServerPos(strOldPos)
+ iposold := roomdata.ChessDataClient[xold][yold]
+ xnew, ynew := this.GetClientAndServerPos(strNewPos)
+ iposnew := roomdata.ChessDataClient[xnew][ynew]
+ if iposold == 0 || iposnew == 0 {
+ // 返回客户端无法移动
+ return
+ }
+ // 作业
+ // ????? 作业的逻辑
+
+ // 检查是否是同一战队
+ iposoldchess := roomdata.ChessData[xold][yold]
+ iposnewchess := roomdata.ChessData[xnew][ynew]
+ if (iposoldchess <= Proto_DSQGame.Mouse && iposnewchess <= Proto_DSQGame.Mouse) || (iposoldchess > Proto_DSQGame.Mouse && iposnewchess > Proto_DSQGame.Mouse) {
+ // 同一战队,无法移动
+ return
+ }
+ /*
+ 棋子可以移动
+ 1. 相等:自相残杀 oldpos,newpos --> 空地 ,空地
+ 2. oldpos保存的动物数值,大于newpos保存的动物的数值,吃掉newpos的动物,删除oldpos的显示信息 oldpos,newpos --> 空地 ,oldpos
+ 3. oldpos保存的动物数值,小于newpos保存的动物的数值,吃掉oldpos的动物, oldpos,newpos --> 空地 ,newpos
+ */
+ // 1. 相等:自相残杀 oldpos,newpos --> 空地 ,空地
+ if math.Abs(float64(iposoldchess-iposnewchess)) == Proto_DSQGame.Mouse {
+ // 更新缓存数据
+ roomdata.ChessData[xold][yold] = 0
+ roomdata.ChessData[xnew][ynew] = 0
+ roomdata.ChessDataClient[xold][yold] = 2
+ roomdata.ChessDataClient[xnew][ynew] = 2
+ }
+ if iposoldchess > Proto_DSQGame.Mouse {
+ if int(math.Abs(float64(iposoldchess-Proto_DSQGame.Mouse))) < iposnewchess {
+ roomdata.ChessData[xold][yold] = 0
+ roomdata.ChessData[xnew][ynew] = iposoldchess
+ roomdata.ChessDataClient[xold][yold] = 2
+ }
+ } else {
+ if int(math.Abs(float64(iposnewchess-Proto_DSQGame.Mouse))) < iposoldchess {
+ roomdata.ChessData[xold][yold] = 0
+ roomdata.ChessData[xnew][ynew] = iposnewchess
+ roomdata.ChessDataClient[xold][yold] = 2
+ }
+ }
+ //广播消息
+ data := &Proto_DSQGame.Broadcast_Player_XingZou{
+ Protocol: 10,
+ Protocol2: 8,
+ OpenID: strOpenID,
+ OldPos: strOldPos,
+ NewPos: strNewPos,
+ }
+ vala, _ := M.Get(roomdata.SeatData[0].PlayerData.OpenID + "|User")
+ valb, _ := M.Get(roomdata.SeatData[1].PlayerData.OpenID + "|User")
+ vala.(*DSQGame).PlayerSendMessage(data)
+ valb.(*DSQGame).PlayerSendMessage(data)
+ return
+}
+
+// 翻牌的函数实现
+func (this *DSQGame) PlayerFanPai(ProtocolData map[string]interface{}) {
+ strOpenID := ProtocolData["OpenID"].(string)
+ StrPos := ProtocolData["StrPos"].(string)
+ fmt.Println("strOpenID-------------------", strOpenID)
+ fmt.Println("StrPos-------------------", StrPos)
+ // 服务器处理逻辑
+ strroomid := this.GetRoomID(strOpenID)
+ fmt.Println("strroomid-------------------", strroomid)
+ if len(strroomid) == 0 {
+ // 返回客户端错误码,为什么错误
+ return
+ }
+ /*
+ 1. 获取到了客户端发过来的信息
+ 2. 通过获取的数据信息---> roomid信息
+ 3. 通过第2步骤获取到的roomid信息,去获取我们的roomdata信息
+ 4. 通过第3步骤获取到的roomdata信息,去查找客户端翻牌对应位置的动物的数据--->(算法的对应的关系)
+ 5. 广播此房间下的玩家
+ */
+ GRoomManagerPtr.RoomLock.RLock()
+ roomdata := GRoomManagerPtr.GRoomData[strroomid]
+ GRoomManagerPtr.RoomLock.RUnlock()
+ if roomdata == nil {
+ // 房间信息不存在
+ return
+ }
+ /*
+ 通过第3步骤获取到的roomdata信息,去查找客户端翻牌对应位置的动物的数据--->(算法的对应的关系)
+ // 初始化棋盘数据
+ [
+ [6 8 11 5]
+ [12 10 15 3]
+ [16 1 2 14]
+ [4 7 13 9]
+ ]
+ */
+ chessdata := roomdata.ChessData
+ fmt.Println("chessdata-------------------", chessdata)
+ x, y := this.GetClientAndServerPos(StrPos)
+ chessnum := chessdata[x][y]
+ roomdata.ChessDataClient[x][y] = 1
+ fmt.Println("chessnum-------------------", chessnum)
+ fmt.Println("roomdata.ChessDataClient-------------------", roomdata.ChessDataClient)
+ // 发送消息
+ data := &Proto_DSQGame.Broadcast_Player_FanPai{
+ Protocol: 10,
+ Protocol2: 6,
+ IChess: chessnum,
+ OpenID: strOpenID,
+ StrPos: StrPos,
+ }
+ if roomdata.SeatData[0].PlayerData.OpenID == strOpenID {
+ data.SeatID = 0
+ } else {
+ data.SeatID = 1
+ }
+ // 广播协议
+ vala, _ := M.Get(roomdata.SeatData[0].PlayerData.OpenID + "|User")
+ valb, _ := M.Get(roomdata.SeatData[1].PlayerData.OpenID + "|User")
+ vala.(*DSQGame).PlayerSendMessage(data)
+ valb.(*DSQGame).PlayerSendMessage(data)
+ return
+}
+
+// 玩家匹配
+func (this *DSQGame) PlayerPiPei(ProtocolData map[string]interface{}) {
+ fmt.Println("PlayerPiPei-------------------", ProtocolData)
+ strOpenID := ProtocolData["OpenID"].(string)
+
+ // 匹配逻辑
+ // 1. 队列形式-- chan
+ // 2. 匹配成功
+ val, err := this.MapSafe.Get(strOpenID + "|User")
+ if err != nil {
+ fmt.Println(err)
+ return
+ }
+ fmt.Println("--------------------val:", val)
+ DSQ_match.PutMatchList(val.(*DSQGame).Player)
+ return
+}
+
+// 玩家登录
+func (this *DSQGame) PlayerLogin(ProtocolData map[string]interface{}) {
+ fmt.Println("PlayerLogin-------------------", ProtocolData)
+ strtoken := ProtocolData["Tocken"].(string)
+
+ // 去登录服务器验证 tocken是否有效
+ retstr := impl.Get("http://127.0.0.1:4001/BaBaLiuLiu_Server?Protocol=10&Protocol2=3&Token=" + strtoken)
+ fmt.Println("impl.Get", retstr)
+ // 解析login server 返回的数据
+ //
+ // 整体数据结构解析
+ STsend := &ProtoDSQ.L2G_Player_Login{}
+ json.Unmarshal([]byte(retstr), STsend)
+
+ // 发送客户端
+ data := &Proto_DSQGame.G2C_Player_Login{
+ Protocol: 10,
+ Protocol2: 2,
+ Bsucc: true,
+ }
+
+ if !STsend.Isucc {
+ data.Bsucc = false
+ this.PlayerSendMessage(data)
+ return
+ }
+ fmt.Println("STsend.PlayerData", STsend.PlayerData)
+ fmt.Println("STsend.PlayerData.OpenID", STsend.PlayerData.OpenID)
+ // 玩家数据解析
+ // 服务器的数据连接信息保存
+ // 1. 玩家的链接信息,conn , playerdata 等等 需要进行保存。
+ // 2. 玩家的消息的推送,服务器通知玩家(服务器广播)。
+ // 3. 网络信息的断线重来。
+ // 数据保存
+ onlineUser := &DSQGame{
+ Connection: this.Connection,
+ MapSafe: this.MapSafe,
+ Player: STsend.PlayerData,
+ }
+ this.MapSafe.Put(STsend.PlayerData.OpenID+"|User", onlineUser)
+ // 发送数据
+ data.Player = STsend.PlayerData
+ this.PlayerSendMessage(data)
+ return
+}
diff --git "a/ByteEdu.Com\345\233\233\345\267\235\350\241\200\346\210\230\345\210\260\345\272\225\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/XZ_server/Match/match.go" "b/ByteEdu.Com\345\233\233\345\267\235\350\241\200\346\210\230\345\210\260\345\272\225\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/XZ_server/Match/match.go"
new file mode 100644
index 00000000..aa21df53
--- /dev/null
+++ "b/ByteEdu.Com\345\233\233\345\267\235\350\241\200\346\210\230\345\210\260\345\272\225\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/XZ_server/Match/match.go"
@@ -0,0 +1,57 @@
+package DSQ_match
+
+import (
+ "XZ_server/Player"
+ "time"
+)
+
+/*
+ 如何解决 匹配高并发下的panic问题(第二期解决)
+*/
+
+var (
+ GMatchChan chan map[string]*Player_DSQ.PlayerData
+ Gmap map[string]*Player_DSQ.PlayerData
+)
+
+func init() {
+ GMatchChan = make(chan map[string]*Player_DSQ.PlayerData, 1000)
+ Gmap = make(map[string]*Player_DSQ.PlayerData)
+ go Timer()
+}
+
+// 玩家的数据匹配压入
+func PutMatchList(data *Player_DSQ.PlayerData) {
+ Gmap[data.OpenID] = data
+}
+
+// 匹配timer
+func Timer() {
+ for {
+ select {
+ case <-time.After(time.Millisecond * 1):
+ {
+ // 进行数据验证 -- 确保我们链接信息完全获取到
+ // 不够严谨,如果不验证玩家数据是否保存成功,会导致客户端一个匹配成功,无法游戏。
+ // 作业,剔除不在线玩家
+ // 确保2个人, 如果满足len(Gmap)%2 == 0 ---> GMatchChan
+ if len(Gmap)%4 == 0 && len(Gmap) != 0 {
+ datatmp := make(map[string]*Player_DSQ.PlayerData)
+ for k, v := range Gmap {
+ datatmp[k] = v
+ delete(Gmap, k)
+ }
+ SendGMatchChan(datatmp)
+ }
+ }
+ }
+ }
+}
+
+// 压如匹配函数
+func SendGMatchChan(data map[string]*Player_DSQ.PlayerData) {
+ if len(data) == 0 {
+ return
+ }
+ GMatchChan <- data
+}
diff --git "a/ByteEdu.Com\345\233\233\345\267\235\350\241\200\346\210\230\345\210\260\345\272\225\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/XZ_server/NetCtl.go" "b/ByteEdu.Com\345\233\233\345\267\235\350\241\200\346\210\230\345\210\260\345\272\225\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/XZ_server/NetCtl.go"
new file mode 100644
index 00000000..0b68696d
--- /dev/null
+++ "b/ByteEdu.Com\345\233\233\345\267\235\350\241\200\346\210\230\345\210\260\345\272\225\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/XZ_server/NetCtl.go"
@@ -0,0 +1,57 @@
+package main
+
+import (
+ "encoding/json"
+ "glog-master"
+
+ "code.google.com/p/go.net/websocket"
+)
+
+func (this *DSQGame) PlayerSendMessage(senddata interface{}) int {
+
+ b, err1 := json.Marshal(senddata)
+ if err1 != nil {
+ glog.Error("PlayerSendMessage json.Marshal data fail ! err:", err1.Error())
+ glog.Flush()
+ return 1
+ }
+ // 去除多余发送数据
+ if len(string(b)) < 100 {
+ glog.Info("json.Marshal(b) :", string(b))
+ data := ""
+ data = "data" + "=" + string(b[0:len(b)])
+ glog.Info("json.Marshal(data) :", data)
+ }
+ if this.Connection == nil {
+ glog.Info("链接信息为空:", 3)
+ return 3
+ }
+ glog.Flush()
+ err := websocket.JSON.Send(this.Connection, b)
+ if err != nil {
+ glog.Error("PlayerSendMessage send data fail ! err:", err.Error())
+ glog.Flush()
+ return 2
+ }
+
+ return 0
+}
+
+func (this *DSQGame) PlayerSendMessagePro(senddata interface{}) int {
+
+ b, err1 := json.Marshal(senddata)
+ if err1 != nil {
+ glog.Error("PlayerSendMessage json.Marshal data fail ! err:", err1.Error())
+ glog.Flush()
+ return 1
+ }
+
+ err := websocket.JSON.Send(this.Connection, b)
+ if err != nil {
+ glog.Error("PlayerSendMessage send data fail ! err:", err.Error())
+ glog.Flush()
+ return 2
+ }
+
+ return 0
+}
diff --git "a/ByteEdu.Com\345\233\233\345\267\235\350\241\200\346\210\230\345\210\260\345\272\225\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/XZ_server/Player/Player.go" "b/ByteEdu.Com\345\233\233\345\267\235\350\241\200\346\210\230\345\210\260\345\272\225\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/XZ_server/Player/Player.go"
new file mode 100644
index 00000000..05b0abac
--- /dev/null
+++ "b/ByteEdu.Com\345\233\233\345\267\235\350\241\200\346\210\230\345\210\260\345\272\225\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/XZ_server/Player/Player.go"
@@ -0,0 +1,12 @@
+package Player_DSQ
+
+// 玩家架构信息
+type PlayerData struct {
+ UID int // 玩家UID
+ OpenID string // MD5 字符串
+ Name string // 玩家名字
+ Avatar string // 玩家头像
+ Level int // 玩家等级
+ Coin int64 // 玩家金币
+ // ... ...
+}
diff --git "a/ByteEdu.Com\345\233\233\345\267\235\350\241\200\346\210\230\345\210\260\345\272\225\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/XZ_server/Proto/Proto2.go" "b/ByteEdu.Com\345\233\233\345\267\235\350\241\200\346\210\230\345\210\260\345\272\225\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/XZ_server/Proto/Proto2.go"
new file mode 100644
index 00000000..72ddd6bd
--- /dev/null
+++ "b/ByteEdu.Com\345\233\233\345\267\235\350\241\200\346\210\230\345\210\260\345\272\225\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/XZ_server/Proto/Proto2.go"
@@ -0,0 +1,142 @@
+package Proto_DSQGame
+
+import (
+ "XZ_server/Player"
+ "XZ_server/ST"
+)
+
+// 主协议 10号
+const (
+ DSQGameINIT = iota // 初始化操作
+ C2G_Player_Login_Proto // C2G_Player_Login_Proto == 1 客户端到游戏服务器验证
+ G2C_Player_Login_Proto // G2C_Player_Login_Proto == 2 服务器返回 是否成功
+ C2G_Player_PiPeiGame_Proto // C2G_Player_PiPeiGame_Proto == 3 客户端到游戏服务器 玩家匹配
+ Broadcast_PiPeiGame_Proto // Broadcast_PiPeiGame_Proto == 4 服务器返回 是否成功,广播协议
+ C2G_Player_FanPai_Proto // C2G_Player_FanPai_Proto == 5 客户端到游戏服务器 玩家翻牌
+ Broadcast_Player_FanPai_Proto // Broadcast_Player_FanPai_Proto == 6 服务器返回 是否成功,翻盘数据
+ C2G_Player_XingZou_Proto // C2G_Player_XingZou_Proto == 7 客户端到游戏服务器 棋子“行走”,整个我们斗兽棋游戏最复杂的逻辑处理
+ Broadcast_Player_XingZou_Proto // Broadcast_Player_XingZou_Proto == 8 服务器返回
+ C2G_Player_RenShu_Proto // C2G_Player_RenShu_Proto == 9 客户端到游戏服务器 发送认输
+ Broadcast_GameOver_Proto // Broadcast_GameOver_Proto == 10 服务器返回 游戏结束的数据
+)
+
+// 斗兽棋的枚举
+const (
+ DSQINIT = iota // 初始化
+ Elephant // 大象 ==1
+ Lion // 狮子 ==2
+ Tiger // 老虎 ==3
+ Leopard // 豹子 ==4
+ Wolf // 狼 ==5
+ Dog // 狗 ==6
+ Cat // 猫 ==7
+ Mouse // 老鼠 ==8
+)
+
+// -----------------------------------------------------------------------------
+// C2G_Player_RenShu_Proto == 9 客户端到游戏服务器 发送认输
+type C2G_Player_RenShu struct {
+ Protocol int
+ Protocol2 int
+ OpenID string
+}
+
+/*
+// 结算的数据块
+type GameOver struct {
+ PlayerWin *Player_DSQ.PlayerData // 胜利的玩家
+ PlayerFail *Player_DSQ.PlayerData // 失败的玩家
+ GameName string // 游戏的名字
+ WinSeatID int // 胜利人的位置信息,0或者1的位置信息
+ Score int // 胜利人获取的分数信息
+ // ... ... 根据自己游戏类型设计结算的数据块
+}
+*/
+// Broadcast_GameOver_Proto == 10 服务器返回
+type Broadcast_GameOver struct {
+ Protocol int
+ Protocol2 int
+ GameOver *DSQ_ST.GameOver // 计算的数据信息
+}
+
+// -----------------------------------------------------------------------------
+// C2G_Player_XingZou_Proto == 7 客户端到游戏服务器 棋子“行走”
+type C2G_Player_XingZou struct {
+ Protocol int
+ Protocol2 int
+ OpenID string
+ OldPos string
+ NewPos string
+}
+
+// Broadcast_Player_XingZou_Proto == 8 服务器返回
+type Broadcast_Player_XingZou struct {
+ Protocol int
+ Protocol2 int
+ OpenID string
+ OldPos string
+ NewPos string
+}
+
+// -----------------------------------------------------------------------------
+// C2G_Player_FanPai_Proto == 5 客户端到游戏服务器 玩家翻牌
+type C2G_Player_FanPai struct {
+ Protocol int
+ Protocol2 int
+ OpenID string // 告诉服务器,谁翻了牌
+ //SeatID string // 和openid字段 同样的效果 0 1
+ StrPos string // 位置信息
+ RoomID string // 告诉服务器,我是再那个房间下;非必须的?,通过玩家的唯一ID去获取到房间的信息
+}
+
+/*
+ [
+ [6 8 11 5]
+ [12 10 15 3]
+ [16 1 2 14]
+ [4 7 13 9]
+ ]
+*/
+// Broadcast_Player_FanPai_Proto == 6 服务器返回 是否成功,翻盘数据
+type Broadcast_Player_FanPai struct {
+ Protocol int
+ Protocol2 int
+ IChess int // 棋盘的数据 1-16的枚举值
+ OpenID string // 告诉服务器,谁翻了牌
+ StrPos string // 位置信息
+ SeatID int
+}
+
+// -----------------------------------------------------------------------------
+// C2G_Player_PiPeiGame_Proto == 3 客户端到游戏服务器 玩家匹配
+type C2G_Player_PiPeiGame struct {
+ Protocol int
+ Protocol2 int
+ OpenID string // 玩家的唯一ID
+}
+
+// Broadcast_PiPeiGame_Proto == 4 服务器返回 是否成功
+type Broadcast_PiPeiGame struct {
+ Protocol int
+ Protocol2 int
+ Bsucc bool // true :匹配成功, false:匹配失败
+ RoomData *DSQ_ST.RoomData // 房间信息,房间的ID,匹配成功的玩家的数据,当前的牌桌上的数据(双方的信息,倒计时等)
+}
+
+// -----------------------------------------------------------------------------
+// G2C_Player_Login_Proto == 2 客户端到游戏服务器验证
+type G2C_Player_Login struct {
+ Protocol int
+ Protocol2 int
+ Bsucc bool
+ Player *Player_DSQ.PlayerData
+}
+
+// C2G_Player_Login_Proto == 2 服务器返回 是否成功
+type C2G_Player_Login struct {
+ Protocol int
+ Protocol2 int
+ Tocken string // 登录验证码
+}
+
+// -----------------------------------------------------------------------------
diff --git "a/ByteEdu.Com\345\233\233\345\267\235\350\241\200\346\210\230\345\210\260\345\272\225\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/XZ_server/Proto/err/error.go" "b/ByteEdu.Com\345\233\233\345\267\235\350\241\200\346\210\230\345\210\260\345\272\225\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/XZ_server/Proto/err/error.go"
new file mode 100644
index 00000000..66b01aa4
--- /dev/null
+++ "b/ByteEdu.Com\345\233\233\345\267\235\350\241\200\346\210\230\345\210\260\345\272\225\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/XZ_server/Proto/err/error.go"
@@ -0,0 +1,15 @@
+package Proto_DSQGameErr
+
+// 1000的主协议
+const (
+ ERRORINIT = iota
+ ErrorMsgProto // ErrorMsg == 1
+)
+
+// 统一错误格式
+type ErrorMsg struct {
+ Protocol int
+ Protocol2 int
+ Code string // 错误码 --> 描述信息
+ Msg string // 显示的错误描述信息
+}
diff --git "a/ByteEdu.Com\345\233\233\345\267\235\350\241\200\346\210\230\345\210\260\345\272\225\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/XZ_server/ST/XZ.go" "b/ByteEdu.Com\345\233\233\345\267\235\350\241\200\346\210\230\345\210\260\345\272\225\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/XZ_server/ST/XZ.go"
new file mode 100644
index 00000000..dad6ad9b
--- /dev/null
+++ "b/ByteEdu.Com\345\233\233\345\267\235\350\241\200\346\210\230\345\210\260\345\272\225\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/XZ_server/ST/XZ.go"
@@ -0,0 +1,38 @@
+package DSQ_ST
+
+import (
+ "XZ_server/Player"
+)
+
+// 座位信息
+type SeatDataST struct {
+ SeatID int // 默认的 0,1
+ PlayerData *Player_DSQ.PlayerData
+ LeftTime int
+ // 不需要发送初始化棋盘数据,
+}
+
+/*
+ 匹配成功后的房间信息
+ 1. roomid 例如:从1000开始
+ 2. 玩家的数据
+ 3. 牌桌的数据
+*/
+type RoomData struct {
+ RoomID string // 房间if=d 唯一的
+ RoomName string // 非必要的
+ SeatData [2]*SeatDataST // 座位信息,默认规则 0号位置默认是 红方,1号位置默认是 蓝方
+ TurnID int // 轮到谁,防止:玩家多操作,0和1
+ ChessData [4][4]int // 棋盘数据--server 0:表示空地
+ ChessDataClient [4][4]int // 客户单显示棋盘数据 ---client,就是记录客户端行为:翻开操作,0:表示未翻起,1:翻起,2:空地(断线重连)
+}
+
+// 结算的数据块
+type GameOver struct {
+ PlayerWin *Player_DSQ.PlayerData // 胜利的玩家
+ PlayerFail *Player_DSQ.PlayerData // 失败的玩家
+ GameName string // 游戏的名字
+ WinSeatID int // 胜利人的位置信息,0或者1的位置信息
+ Score int // 胜利人获取的分数信息
+ // ... ... 根据自己游戏类型设计结算的数据块
+}
diff --git "a/ByteEdu.Com\345\233\233\345\267\235\350\241\200\346\210\230\345\210\260\345\272\225\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/XZ_server/timer.go" "b/ByteEdu.Com\345\233\233\345\267\235\350\241\200\346\210\230\345\210\260\345\272\225\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/XZ_server/timer.go"
new file mode 100644
index 00000000..28a34b04
--- /dev/null
+++ "b/ByteEdu.Com\345\233\233\345\267\235\350\241\200\346\210\230\345\210\260\345\272\225\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/XZ_server/timer.go"
@@ -0,0 +1,213 @@
+package main
+
+import (
+ "XZ_server/Match"
+ "XZ_server/Proto"
+ "XZ_server/ST"
+ "fmt"
+ "strconv"
+ "sync"
+ "time"
+)
+
+var (
+ // GRoomManager map[string]*GRoomSTData // 其中一种
+ GRoomManagerPtr *GRoomSTData // 彬哥推荐
+ GRoomID int
+)
+
+/*
+ 1. 肯定联系到我们的之前设计的房间结构:RoomData
+ 2. 并发安全问题
+*/
+
+type GRoomSTData struct {
+ GRoomData map[string]*DSQ_ST.RoomData
+ RoomLock *sync.RWMutex
+}
+
+func init() {
+ // GRoomManager = make(map[string]*GRoomSTData)
+ GRoomManagerPtr = NewGRoomManagerPtr()
+ GRoomID = 1000
+ go MatchTimer() // 全局的定时器,出现panic 或者中断,整个匹配机制就无法继续进行了。
+}
+
+func NewGRoomManagerPtr() *GRoomSTData {
+ return &GRoomSTData{
+ GRoomData: make(map[string]*DSQ_ST.RoomData),
+ RoomLock: new(sync.RWMutex),
+ }
+}
+
+/*
+ 获取RoomID长度
+ 每一个匹配成功的数据的总和,例如: A,B ---> {A,B} len(GRoomData) == 1 ,C,D ---> {C,D} len(GRoomData)+1
+ 1. 读写锁的使用
+ 2. 获取全局的RoomID
+*/
+func GetGRoomDataLen() int {
+ GRoomManagerPtr.RoomLock.RLock()
+ ilen := len(GRoomManagerPtr.GRoomData) + GRoomID
+ GRoomManagerPtr.RoomLock.RUnlock()
+ return ilen
+}
+
+/*
+说明:1. 2人组合一个房间。
+ 2. 发送广播消息(Broadcast_PiPeiGame_Proto)
+ 3. 房间生成规则
+ 4. 处理数据结构,go 与我们住进程 -- 线程通信方式:Go 通过通信来实现共享内存
+*/
+
+func MatchTimer() {
+ startTumer := time.NewTicker(time.Millisecond * 10)
+ for {
+ select {
+ case <-startTumer.C:
+ { // 存的数据结构:map[string]*Player_DSQ.PlayerData
+ // len(Gmap)%2 == 0 && len(Gmap) != 0
+ datachan := <-DSQ_match.GMatchChan
+ openida, openidb := "", ""
+ for kc, _ := range datachan {
+ if len(openida) == 0 {
+ openida = kc
+ } else {
+ openidb = kc
+ }
+ }
+ for _, v := range datachan {
+ _ = v
+ // 2个人匹配成功 ---> 去创建房间 (房间的创建规则?) --- 逻辑思维
+ // 玩家的广播链接信息,我们如何取?--- 看听课认真不
+ // this.MapSafe.Put(STsend.PlayerData.OpenID+"|User", onlineUser)
+ // 1. Get方法去取数据 --
+ // 2. 循环我们这个数据结构, for k,v :=range M -- 1W
+ vala, _ := M.Get(openida + "|User")
+ valb, _ := M.Get(openidb + "|User")
+
+ /*
+ 1. 通过roomid获取获取roomData数据
+ 2. 判断roomdata下面的seatdata数据是否2个玩家都有数据
+ 3. 如果 第2步骤seatdata 已经全部有数据,以第1步骤的roomid创建房间信息
+ 4. 否则继续循环数据,添加到 roomdata成员变量seatdata
+ */
+ strroom := strconv.Itoa(GetGRoomDataLen())
+ GRoomManagerPtr.RoomLock.RLock()
+ roomdatatmp := GRoomManagerPtr.GRoomData[strconv.Itoa(GetGRoomDataLen())]
+ GRoomManagerPtr.RoomLock.RUnlock()
+ if roomdatatmp == nil {
+ roomdatatmp = &DSQ_ST.RoomData{}
+ }
+ /* seatData的数据结构
+ 1. 2个玩家
+ 2. 每个玩家的棋牌初始化数据,4*4 服务器的棋盘初始化操作--保存到server内存数据中的
+ type SeatDataST struct {
+ SeatID int // 默认的 0,1
+ PlayerData *Player_DSQ.PlayerData
+ LeftTime int
+ }
+ */
+ seatdataa := &DSQ_ST.SeatDataST{
+ SeatID: 0,
+ PlayerData: vala.(*DSQGame).Player,
+ LeftTime: 20,
+ }
+
+ seatdatab := &DSQ_ST.SeatDataST{
+ SeatID: 1,
+ PlayerData: valb.(*DSQGame).Player,
+ LeftTime: 20,
+ }
+
+ roomdatatmp.RoomID = strroom
+ roomdatatmp.TurnID = 0 // 先手操作
+ roomdatatmp.SeatData[0] = seatdataa
+ roomdatatmp.SeatData[1] = seatdatab
+ roomdatatmp.ChessData = InitDSQ(DSQ_QI)
+ //roomdatatmp.ChessDataClient = [4][4]int{}
+ vala.(*DSQGame).StrMD5 = strroom
+ valb.(*DSQGame).StrMD5 = strroom
+
+ /*
+ val 是什么数据 -->
+ type DSQGame struct {
+ Connection *websocket.Conn
+ StrMD5 string // 唯一ID
+ MapSafe *concurrent.ConcurrentMap
+ Player *Player_DSQ.PlayerData
+ }
+
+ // Broadcast_PiPeiGame_Proto == 4 服务器返回 是否成功
+ type Broadcast_PiPeiGame struct {
+ Protocol int
+ Protocol2 int
+ Bsucc bool // true :匹配成功, false:匹配失败
+ RoomData *DSQ_ST.RoomData // 房间信息,房间的ID,匹配成功的玩家的数据,当前的牌桌上的数据(双方的信息,倒计时等)
+ }
+ */
+ // 发消息,通知玩家匹配成功了
+ data := Proto_DSQGame.Broadcast_PiPeiGame{
+ Protocol: 10,
+ Protocol2: 4,
+ Bsucc: true,
+ }
+
+ /* 房间的数据结构
+ 1. 服务器的房间的manager
+ 2. 管理房间的数据结构,包括:玩家的数据(红方,蓝方),房间的GC(timer)
+ 3. 玩家的数据的游戏数据存储,包括(玩家的报名,玩家的结算数据)
+ 4. 自学习的数据收集,包括(玩家的行为,大数据的记录,4*4 ,先手玩家最先点那个牌)
+ type RoomData struct {
+ RoomID int // 房间if=d
+ RoomName string // 非必要的
+ SeatData [2]*SeatDataST // 座位信息,默认规则 0号位置默认是 红方,1号位置默认是 蓝方
+ TurnID int // 轮到谁,防止:玩家多操作
+ }
+ */
+ data.RoomData = roomdatatmp
+ fmt.Println(data)
+ vala.(*DSQGame).PlayerSendMessage(data)
+ valb.(*DSQGame).PlayerSendMessage(data)
+ GRoomManagerPtr.GRoomData[strroom] = roomdatatmp
+ go MatchTimer2(strroom)
+ break
+ }
+ }
+ }
+ }
+}
+
+/*
+ 玩家匹配成功后,服务器发送广播消息,延迟2秒发送
+ 1. 确保客户端在跳转界面后收到消息,例如 从匹配界面(主界面)--2s--> 到 游戏主界面
+ 2. 确保服务器消息可以正常被客户端接收到
+ 3. 功能性timer,使用完就自动释放,不需要常驻内存
+*/
+func MatchTimer2(roomid string) {
+ startTumer := time.NewTicker(time.Second * 2)
+ for {
+ select {
+ case <-startTumer.C:
+
+ GRoomManagerPtr.RoomLock.RLock()
+ roomdatatmp := GRoomManagerPtr.GRoomData[roomid]
+ GRoomManagerPtr.RoomLock.RUnlock()
+
+ data := Proto_DSQGame.Broadcast_PiPeiGame{
+ Protocol: 10,
+ Protocol2: 4,
+ Bsucc: true,
+ RoomData: roomdatatmp,
+ }
+ fmt.Println("---------------======================data:", data)
+ vala, _ := M.Get(roomdatatmp.SeatData[0].PlayerData.OpenID + "|User")
+ valb, _ := M.Get(roomdatatmp.SeatData[1].PlayerData.OpenID + "|User")
+ vala.(*DSQGame).PlayerSendMessage(data)
+ valb.(*DSQGame).PlayerSendMessage(data)
+ // 功能性timer,使用完就自动释放,不需要常驻内存
+ startTumer.Stop()
+ return
+ }
+ }
+}
diff --git "a/ByteEdu.Com\345\233\233\345\267\235\350\241\200\346\210\230\345\210\260\345\272\225\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/XZ_server/tmian.go" "b/ByteEdu.Com\345\233\233\345\267\235\350\241\200\346\210\230\345\210\260\345\272\225\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/XZ_server/tmian.go"
new file mode 100644
index 00000000..63cab824
--- /dev/null
+++ "b/ByteEdu.Com\345\233\233\345\267\235\350\241\200\346\210\230\345\210\260\345\272\225\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/XZ_server/tmian.go"
@@ -0,0 +1,58 @@
+package main
+
+import (
+ "LollipopGo/LollipopGo"
+ "LollipopGo/LollipopGo/network"
+ "XZ_server/Player"
+ "cache2go"
+ "flag"
+ "glog-master"
+ "go-concurrentMap-master"
+ "net/http"
+
+ "code.google.com/p/go.net/websocket"
+)
+
+// 链接存储结构
+type DSQGame struct {
+ Connection *websocket.Conn
+ StrMD5 string // 目前可以设计为房间ID信息
+ MapSafe *concurrent.ConcurrentMap
+ Player *Player_DSQ.PlayerData
+}
+
+var cache *cache2go.CacheTable
+var M *concurrent.ConcurrentMap // 并发安全
+
+func init() {
+ impl.IMsg = new(DSQGame)
+ cache = cache2go.Cache("DSQGame")
+ M = concurrent.NewConcurrentMap()
+
+ flag.Set("alsologtostderr", "true") // 日志写入文件的同时,输出到stderr
+ flag.Set("log_dir", "./log") // 日志文件保存目录
+ flag.Set("v", "3") // 配置V输出的等级。
+ flag.Parse()
+ return
+}
+
+func main() {
+ LollipopGo.Run()
+ http.Handle("/DSQ", websocket.Handler(BuildConnection))
+ if err := http.ListenAndServe(":4002", nil); err != nil {
+ glog.Info("Entry nil", err.Error())
+ glog.Flush()
+ return
+ }
+ return
+}
+
+func BuildConnection(ws *websocket.Conn) {
+ data := ws.Request().URL.Query().Get("data")
+ glog.Info(data)
+ if data == "" {
+ glog.Info("data is Nil")
+ glog.Flush()
+ }
+ impl.InitConnection(ws)
+}
diff --git "a/ByteEdu.Com\345\256\236\346\210\230\350\257\276\347\250\213\344\271\213\350\241\200\346\210\230\345\210\260\345\272\225/\350\257\276\347\250\213\347\233\256\345\275\225/\350\241\200\346\210\230\345\210\260\345\272\225\347\233\256\345\275\225.png" "b/ByteEdu.Com\345\256\236\346\210\230\350\257\276\347\250\213\344\271\213\350\241\200\346\210\230\345\210\260\345\272\225/\350\257\276\347\250\213\347\233\256\345\275\225/\350\241\200\346\210\230\345\210\260\345\272\225\347\233\256\345\275\225.png"
new file mode 100644
index 00000000..d218e995
Binary files /dev/null and "b/ByteEdu.Com\345\256\236\346\210\230\350\257\276\347\250\213\344\271\213\350\241\200\346\210\230\345\210\260\345\272\225/\350\257\276\347\250\213\347\233\256\345\275\225/\350\241\200\346\210\230\345\210\260\345\272\225\347\233\256\345\275\225.png" differ
diff --git "a/Golang\350\257\255\350\250\200\347\244\276\345\214\272.url" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/ByteEdu\346\225\231\350\202\262\345\271\263\345\217\260.url"
similarity index 100%
rename from "Golang\350\257\255\350\250\200\347\244\276\345\214\272.url"
rename to "ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/ByteEdu\346\225\231\350\202\262\345\271\263\345\217\260.url"
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\345\256\243\344\274\240\345\233\276\347\211\207.jpg" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\345\256\243\344\274\240\345\233\276\347\211\207.jpg"
new file mode 100644
index 00000000..af77b3e1
Binary files /dev/null and "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\345\256\243\344\274\240\345\233\276\347\211\207.jpg" differ
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\346\226\227\345\205\275\346\243\213\347\276\216\346\234\257\350\265\204\346\272\220\344\270\213\350\275\275/\344\270\213\350\275\275\345\234\260\345\235\200.txt" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\346\226\227\345\205\275\346\243\213\347\276\216\346\234\257\350\265\204\346\272\220\344\270\213\350\275\275/\344\270\213\350\275\275\345\234\260\345\235\200.txt"
new file mode 100644
index 00000000..196e13b5
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\346\226\227\345\205\275\346\243\213\347\276\216\346\234\257\350\265\204\346\272\220\344\270\213\350\275\275/\344\270\213\350\275\275\345\234\260\345\235\200.txt"
@@ -0,0 +1,3 @@
+ByteEdu.ComȫջϷԴר
+http://www.byteedu.com/thread-1252-1-1.html
+(: www.ByteEdu.Com)
\ No newline at end of file
diff --git "a/Go\350\257\255\350\250\200\351\235\242\350\257\225\347\273\274\345\220\210/\347\244\276\345\214\272\347\275\221\346\230\223\344\272\221\350\257\276\345\240\202\350\257\276\347\250\213.url" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\347\244\276\345\214\272\347\275\221\346\230\223\344\272\221\350\257\276\345\240\202\350\257\276\347\250\213.url"
similarity index 100%
rename from "Go\350\257\255\350\250\200\351\235\242\350\257\225\347\273\274\345\220\210/\347\244\276\345\214\272\347\275\221\346\230\223\344\272\221\350\257\276\345\240\202\350\257\276\347\250\213.url"
rename to "ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\347\244\276\345\214\272\347\275\221\346\230\223\344\272\221\350\257\276\345\240\202\350\257\276\347\250\213.url"
diff --git "a/Go\350\257\255\350\250\200\351\235\242\350\257\225\347\273\274\345\220\210/\347\244\276\345\214\272\350\205\276\350\256\257\350\257\276\345\240\202\350\257\276\347\250\213.url" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\347\244\276\345\214\272\350\205\276\350\256\257\350\257\276\345\240\202\350\257\276\347\250\213.url"
similarity index 56%
rename from "Go\350\257\255\350\250\200\351\235\242\350\257\225\347\273\274\345\220\210/\347\244\276\345\214\272\350\205\276\350\256\257\350\257\276\345\240\202\350\257\276\347\250\213.url"
rename to "ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\347\244\276\345\214\272\350\205\276\350\256\257\350\257\276\345\240\202\350\257\276\347\250\213.url"
index 0800187c..4c59ae1e 100644
--- "a/Go\350\257\255\350\250\200\351\235\242\350\257\225\347\273\274\345\220\210/\347\244\276\345\214\272\350\205\276\350\256\257\350\257\276\345\240\202\350\257\276\347\250\213.url"
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\347\244\276\345\214\272\350\205\276\350\256\257\350\257\276\345\240\202\350\257\276\347\250\213.url"
@@ -3,3 +3,5 @@ Prop3=19,2
[InternetShortcut]
IDList=
URL=http://gopher.ke.qq.com/
+IconFile=http://8.url.cn/edu/edu_modules/edu-ui/img/nohash/favicon.ico
+IconIndex=1
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\347\255\226\345\210\222\343\200\201\347\276\216\346\234\257\351\234\200\346\261\202/~$\346\226\227\345\205\275\346\243\213\347\276\216\346\234\257\351\234\200\346\261\202\346\226\207\346\241\210.xlsx" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\347\255\226\345\210\222\343\200\201\347\276\216\346\234\257\351\234\200\346\261\202/~$\346\226\227\345\205\275\346\243\213\347\276\216\346\234\257\351\234\200\346\261\202\346\226\207\346\241\210.xlsx"
new file mode 100644
index 00000000..1e0c8b3a
Binary files /dev/null and "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\347\255\226\345\210\222\343\200\201\347\276\216\346\234\257\351\234\200\346\261\202/~$\346\226\227\345\205\275\346\243\213\347\276\216\346\234\257\351\234\200\346\261\202\346\226\207\346\241\210.xlsx" differ
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\347\255\226\345\210\222\343\200\201\347\276\216\346\234\257\351\234\200\346\261\202/\346\226\227\345\205\275\346\243\213\347\255\226\345\210\222\346\226\207\346\241\243v1.1.docx" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\347\255\226\345\210\222\343\200\201\347\276\216\346\234\257\351\234\200\346\261\202/\346\226\227\345\205\275\346\243\213\347\255\226\345\210\222\346\226\207\346\241\243v1.1.docx"
new file mode 100644
index 00000000..95326fa8
Binary files /dev/null and "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\347\255\226\345\210\222\343\200\201\347\276\216\346\234\257\351\234\200\346\261\202/\346\226\227\345\205\275\346\243\213\347\255\226\345\210\222\346\226\207\346\241\243v1.1.docx" differ
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\347\255\226\345\210\222\343\200\201\347\276\216\346\234\257\351\234\200\346\261\202/\346\226\227\345\205\275\346\243\213\347\276\216\346\234\257\351\234\200\346\261\202\346\226\207\346\241\210.xlsx" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\347\255\226\345\210\222\343\200\201\347\276\216\346\234\257\351\234\200\346\261\202/\346\226\227\345\205\275\346\243\213\347\276\216\346\234\257\351\234\200\346\261\202\346\226\207\346\241\210.xlsx"
new file mode 100644
index 00000000..50f89c00
Binary files /dev/null and "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\347\255\226\345\210\222\343\200\201\347\276\216\346\234\257\351\234\200\346\261\202/\346\226\227\345\205\275\346\243\213\347\276\216\346\234\257\351\234\200\346\261\202\346\226\207\346\241\210.xlsx" differ
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/ByteEdu_DSQ/src/DSQ_login/Proto/Proto.go" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/ByteEdu_DSQ/src/DSQ_login/Proto/Proto.go"
new file mode 100644
index 00000000..405e68db
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/ByteEdu_DSQ/src/DSQ_login/Proto/Proto.go"
@@ -0,0 +1,58 @@
+package ProtoDSQ
+
+import (
+ "DSQ_server/Player"
+)
+
+/*
+ LollipopGo架构的设计的规则:C语言设计,顺序执行
+ 区分游戏:主协议区分 例如 斗兽棋,麻将,斗地主,U3D对战游戏的
+ 功能区分:子协议区分
+
+ leaf,等
+ 消息号通过启动服务器加载到内存,绑定func;异步回调
+ 消息--server find map 消息 ? 回调func:不处理
+*/
+
+// 斗兽棋的主协议 == 10号
+const (
+ PROTODSQ_INIT = iota // 初始化
+ C2L_Player_Login_Proto // C2L_Player_Login_Proto == 1 客户端请求登录服务器,获取:tocken+url
+ L2C_Player_Login_Proto // L2C_Player_Login_Proto == 2 服务器返回 tocken+url
+ G2L_Player_Login_Proto // G2L_Player_Login_Proto == 3 游戏服务器验证 tocken
+ L2G_Player_Login_Proto // L2G_Player_Login_Proto == 4 服务器--返回数据 playerdata
+)
+
+// -----------------------------------------------------------------------------
+// G2L_Player_Login_Proto == 3 游戏服务器验证 tocken
+type G2L_Player_Login struct {
+ Protocol int
+ Protocol2 int
+ Tocken string // 登录验证码
+}
+
+// L2G_Player_Login_Proto == 4 服务器--返回数据 playerdata
+type L2G_Player_Login struct {
+ Protocol int
+ Protocol2 int
+ Isucc bool // true:验证成功,false:标识验证失败
+ PlayerData *Player_DSQ.PlayerData // 玩家的结构信息
+}
+
+// -----------------------------------------------------------------------------
+// L2C_Player_Login_Proto == 2 服务器返回 tocken+url
+type L2C_Player_Login struct {
+ Protocol int
+ Protocol2 int
+ Tocken string // 登录验证码
+ URL string // 游戏服务器的地址
+}
+
+//C2L_Player_Login_Proto == 1 客户端请求登录服务器,获取:tocken+url
+type C2L_Player_Login struct {
+ Protocol int
+ Protocol2 int
+ DeviceID string
+}
+
+// -----------------------------------------------------------------------------
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/ByteEdu_DSQ/src/DSQ_login/tmain.go" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/ByteEdu_DSQ/src/DSQ_login/tmain.go"
new file mode 100644
index 00000000..09051148
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/ByteEdu_DSQ/src/DSQ_login/tmain.go"
@@ -0,0 +1,145 @@
+package main
+
+import (
+ "DSQ_login/Proto"
+ "DSQ_server/Player"
+ "LollipopGo/LollipopGo/util"
+ "encoding/json"
+ "fmt"
+ "net/http"
+ "strconv"
+)
+
+/*
+ 验证码生成规则
+ 1. DeviceID 生成
+ 2. DeviceID MD5 ok
+*/
+
+var G_Player_Tocken map[string]string
+
+func init() {
+ G_Player_Tocken = make(map[string]string)
+}
+
+func main() {
+ strport := "4001"
+ http.HandleFunc("/BaBaLiuLiu_Server", Server_Func) // 服务器验证 -- game_server 拿到数据后(tocken) 去我们的login_server验证 ,tocken是否有效
+ http.HandleFunc("/BaBaLiuLiu_DSQ", Client_Func) // 客户端验证 -- 客户端到login 获取我们的【tocken】 数据 + 【game_server的链接信息(ip+port)】
+ http.ListenAndServe(":"+strport, nil)
+}
+
+// 服务器验证流程
+func Server_Func(w http.ResponseWriter, req *http.Request) {
+ w.Header().Set("Access-Control-Allow-Origin", "*")
+ req.Header.Add("content-type", "charset=UTF-8")
+ req.ParseForm()
+ defer func() {
+ if err := recover(); err != nil {
+ fmt.Println("%s", err)
+ req.Body.Close()
+ }
+ }()
+ // 逻辑处理
+ //{
+ fmt.Println("-----------服务器验证流程")
+ //}
+ if req.Method == "GET" {
+ Protocol, bProtocol := req.Form["Protocol"]
+ Protocol2, bProtocol2 := req.Form["Protocol2"]
+ if bProtocol && bProtocol2 {
+ fmt.Println("--------Protocol", Protocol)
+ fmt.Println("--------Protocol2", Protocol2)
+ Token, _ := req.Form["Token"] // ? 这里不够严谨
+ fmt.Println("--------Token", Token)
+ _, ok := G_Player_Tocken[Token[0]]
+ if ok {
+
+ data := ProtoDSQ.L2G_Player_Login{
+ Protocol: 10,
+ Protocol2: 2,
+ Isucc: true,
+ }
+ dataplayer := &Player_DSQ.PlayerData{
+ UID: len(G_Player_Tocken) + 1,
+ OpenID: util.MD5_LollipopGO(strconv.Itoa(len(G_Player_Tocken) + 1)),
+ Name: "guest_" + strconv.Itoa(len(G_Player_Tocken)+1),
+ Avatar: "1",
+ Level: 1,
+ Coin: 1000,
+ }
+ data.PlayerData = dataplayer
+ datamsg, _ := json.Marshal(data)
+ fmt.Fprintf(w, "%s", datamsg)
+ return
+ }
+ data := ProtoDSQ.L2G_Player_Login{
+ Protocol: 10,
+ Protocol2: 2,
+ Isucc: false,
+ }
+ datamsg, _ := json.Marshal(data)
+ fmt.Fprintf(w, "%s", datamsg)
+ return
+ }
+ }
+ // LollipopGO_Error:
+ // fmt.Println("参数错误")
+}
+
+// 客户端验证流程
+func Client_Func(w http.ResponseWriter, req *http.Request) {
+ w.Header().Set("Access-Control-Allow-Origin", "*")
+ req.Header.Add("content-type", "charset=UTF-8")
+ req.ParseForm()
+ defer func() {
+ if err := recover(); err != nil {
+ fmt.Println("%s", err)
+ req.Body.Close()
+ }
+ }()
+ // 逻辑处理
+ //{
+ fmt.Println("-----------客户端验证流程")
+ //}
+ if req.Method == "GET" {
+ Protocol, bProtocol := req.Form["Protocol"]
+ Protocol2, bProtocol2 := req.Form["Protocol2"]
+ if bProtocol && bProtocol2 {
+ fmt.Println("--------Protocol", Protocol)
+ fmt.Println("--------Protocol2", Protocol2)
+ if Protocol[0] == "10" {
+ // 功能的逻辑操作
+ if Protocol2[0] == "1" {
+ // 游客登录
+ DeviceID, bDeviceID := req.Form["DeviceID"]
+ if bDeviceID {
+ tocken := util.MD5_LollipopGO(DeviceID[0])
+ G_Player_Tocken[tocken] = tocken
+ URL := "192.168.0.103:4002"
+ data := ProtoDSQ.L2C_Player_Login{
+ Protocol: 10,
+ Protocol2: 2,
+ Tocken: tocken, // 登录验证码
+ URL: URL, // 游戏服务器的地址
+ }
+ datamsg, _ := json.Marshal(data)
+ fmt.Fprintf(w, "%s", datamsg)
+ return
+ } else {
+ goto LollipopGO_Error
+ }
+ }
+ } else {
+ fmt.Println("主协议不存在")
+ fmt.Fprintf(w, "%s", "主协议不存在")
+ return
+ }
+ }
+ return
+ } else {
+ return
+ }
+LollipopGO_Error:
+ fmt.Println("参数错误")
+}
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/ByteEdu_DSQ/src/DSQ_server/ChessINIT.go" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/ByteEdu_DSQ/src/DSQ_server/ChessINIT.go"
new file mode 100644
index 00000000..292b339b
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/ByteEdu_DSQ/src/DSQ_server/ChessINIT.go"
@@ -0,0 +1,112 @@
+package main
+
+import (
+ "DSQ_server/Proto"
+ "LollipopGo/LollipopGo/util"
+ "fmt"
+)
+
+/*
+
+------------------------------------
+| [0,0] [1,0] [2,0] [3,0] |
+| |
+| [0,1] [1,1] [2,1] [3,1] |
+| |
+| [0,2] [1,2] [2,2] [3,2] |
+| |
+| [0,3] [1,3] [2,3] [3,3] |
+|-----------------------------------
+ 服务器棋牌设计
+*/
+
+/*
+ 棋牌的初始化数据
+ 1-16 1-8 = A 9-18 = B
+
+ 初始化棋牌的思路 如下:
+ 1. 服务器产生随机数,0-16
+ 2. 通过第1步骤的随机数,去DSQ_QI数组获取值,例如 3 --> num := DSQ_QI[3] (删除获取的位置的信息)
+ 3. 通过第2步骤 生成的棋子 num,填充 服务器二维数组
+
+ 注意点:
+ 1. 服务器要首先生成,二维数组(空的)
+ 2. 注意浅拷贝和深拷贝的问题 copy()
+*/
+var DSQ_QI = []int{
+ Proto_DSQGame.Elephant,
+ Proto_DSQGame.Lion,
+ Proto_DSQGame.Tiger,
+ Proto_DSQGame.Leopard,
+ Proto_DSQGame.Wolf,
+ Proto_DSQGame.Dog,
+ Proto_DSQGame.Cat,
+ Proto_DSQGame.Mouse,
+ Proto_DSQGame.Elephant + Proto_DSQGame.Mouse,
+ Proto_DSQGame.Lion + Proto_DSQGame.Mouse,
+ Proto_DSQGame.Tiger + Proto_DSQGame.Mouse,
+ Proto_DSQGame.Leopard + Proto_DSQGame.Mouse,
+ Proto_DSQGame.Wolf + Proto_DSQGame.Mouse,
+ Proto_DSQGame.Dog + Proto_DSQGame.Mouse,
+ Proto_DSQGame.Cat + Proto_DSQGame.Mouse,
+ Proto_DSQGame.Mouse + Proto_DSQGame.Mouse,
+}
+
+func init() {
+ //InitDSQ(DSQ_QI)
+}
+
+// 初始化函数
+// 作业: 如何填充二维数据
+func InitDSQ(data1 []int) [4][4]int {
+
+ datatmp, x, y := [4][4]int{}, 0, 0
+ // data := data1
+ data := make([]int, len(data1))
+ copy(data, data1)
+
+ for i := 0; i < 2*Proto_DSQGame.Mouse; i++ {
+ icount := util.RandInterval_LollipopGo(0, int32(len(data)-1))
+ // fmt.Println("随机数:------", icount)
+ /* icount == 1 len(data) == 16
+ 开发过程中:可以将二维数组--理解一维数组操作
+ x,y
+ 当y的数值增加到我们定义的数组长度后x才累加
+ */
+ if int(icount) < len(data) {
+ datatmp[x][y] = data[icount]
+ y++
+ if y%4 == 0 {
+ x++
+ y = 0
+ }
+ // 前闭后开区间
+ // data:=[]int{0,1,2,3,4,5,6}
+ // num = 2
+ // data[:num] ={0,1}
+ // data[num+1:] ={3,4,5,6}
+ // append --> {0,1,3,4,5,6}
+ data = append(data[:icount], data[icount+1:]...)
+ } else {
+ datatmp[x][y] = data[icount]
+ y++
+ if y%4 == 0 {
+ x++
+ y = 0
+ }
+ data = data[:icount-1]
+ }
+ }
+ fmt.Println("datatmp------", datatmp)
+ // fmt.Println("datatmp[0][0]------", datatmp[0][0])
+ // fmt.Println("datatmp[0][0]------", datatmp[1][0])
+ /*
+ [
+ [6 8 11 5]
+ [12 10 15 3]
+ [16 1 2 14]
+ [4 7 13 9]
+ ]
+ */
+ return datatmp
+}
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/ByteEdu_DSQ/src/DSQ_server/HandleClt.go" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/ByteEdu_DSQ/src/DSQ_server/HandleClt.go"
new file mode 100644
index 00000000..064f21e4
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/ByteEdu_DSQ/src/DSQ_server/HandleClt.go"
@@ -0,0 +1,55 @@
+package main
+
+import (
+ "DSQ_server/Proto"
+ "Proto"
+ _ "fmt"
+ "glog-master"
+
+ "code.google.com/p/go.net/websocket"
+)
+
+// 主协议处理
+func (this *DSQGame) HandleCltProtocol(protocol interface{}, protocol2 interface{}, ProtocolData map[string]interface{}, Connection *websocket.Conn) interface{} {
+ switch protocol {
+ case float64(Proto.G_GameDSQ_Proto):
+ {
+ this.HandleCltProtocol2(protocol2, ProtocolData, Connection)
+ }
+ default:
+ glog.Info("protocol default")
+ }
+ return 0
+}
+
+func (this *DSQGame) HandleCltProtocol2(protocol2 interface{}, ProtocolData map[string]interface{}, Connection *websocket.Conn) interface{} {
+ ConnectionData := &DSQGame{
+ Connection: Connection,
+ MapSafe: M,
+ }
+ switch protocol2 {
+ case float64(Proto_DSQGame.C2G_Player_RenShu_Proto):
+ {
+ ConnectionData.PlayerRenShu(ProtocolData)
+ }
+ case float64(Proto_DSQGame.C2G_Player_XingZou_Proto):
+ {
+ ConnectionData.PlayerXingZou(ProtocolData)
+ }
+ case float64(Proto_DSQGame.C2G_Player_FanPai_Proto):
+ {
+ ConnectionData.PlayerFanPai(ProtocolData)
+ }
+ case float64(Proto_DSQGame.C2G_Player_PiPeiGame_Proto):
+ {
+ ConnectionData.PlayerPiPei(ProtocolData)
+ }
+ case float64(Proto_DSQGame.C2G_Player_Login_Proto):
+ {
+ ConnectionData.PlayerLogin(ProtocolData)
+ }
+ default:
+ glog.Info("protocol2 default")
+ }
+ return 0
+}
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/ByteEdu_DSQ/src/DSQ_server/HandleCltFunc.go" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/ByteEdu_DSQ/src/DSQ_server/HandleCltFunc.go"
new file mode 100644
index 00000000..9bad44d4
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/ByteEdu_DSQ/src/DSQ_server/HandleCltFunc.go"
@@ -0,0 +1,344 @@
+package main
+
+import (
+ "DSQ_login/Proto"
+ "DSQ_server/Match"
+ "DSQ_server/Proto"
+ "DSQ_server/ST"
+ "LollipopGo/LollipopGo/network"
+ "encoding/json"
+ "fmt"
+ "math"
+)
+
+//------------------------------------------------------------------------------
+// 共用函数
+
+func (this *DSQGame) GetRoomID(stropenid string) string {
+ val, err := M.Get(stropenid + "|User")
+ if err != nil {
+ return ""
+ }
+ return val.(*DSQGame).StrMD5
+}
+
+// 客户端与服务器的棋盘位置对应关系
+// 作业
+func (this *DSQGame) GetClientAndServerPos(strpos string) (int, int) {
+ if strpos == "1" {
+ return 0, 0
+ } else if strpos == "2" {
+ return 0, 1
+ } else if strpos == "3" {
+ return 0, 2
+ } else if strpos == "4" {
+ return 0, 3
+ } else if strpos == "5" {
+ return 1, 0
+ } else if strpos == "6" {
+ return 1, 1
+ } else if strpos == "7" {
+ return 1, 2
+ } else if strpos == "8" {
+ return 1, 3
+ } else if strpos == "9" {
+ return 2, 0
+ } else if strpos == "10" {
+ return 2, 1
+ } else if strpos == "11" {
+ return 2, 2
+ } else if strpos == "12" {
+ return 2, 3
+ } else if strpos == "13" {
+ return 3, 0
+ } else if strpos == "14" {
+ return 3, 1
+ } else if strpos == "15" {
+ return 3, 2
+ } else if strpos == "16" {
+ return 3, 3
+ }
+
+ return -1, -1
+}
+
+//------------------------------------------------------------------------------
+// 认输协议处理
+func (this *DSQGame) PlayerRenShu(ProtocolData map[string]interface{}) {
+
+ strOpenID := ProtocolData["OpenID"].(string)
+
+ /*
+ type GameOver struct {
+ PlayerWin *Player_DSQ.PlayerData // 胜利的玩家
+ PlayerFail *Player_DSQ.PlayerData // 失败的玩家
+ GameName string // 游戏的名字
+ WinSeatID int // 胜利人的位置信息,0或者1的位置信息
+ Score int // 胜利人获取的分数信息
+ }
+
+ 1. 通过OpenID,获取roomid信息
+ 2. 通过第1步骤获取的roomid信息,去获取roomdata信息
+ 3. 通过第2步骤获取到的roomdata信息,去获取TurnID,是否轮到本玩家操作
+ 4. 铜鼓OpenID 获取位置信息, 1 --WinSeatID =0 或者 0 --WinSeatID = 1
+ 5. Score 分数概念,一般是策划配置,不同的场次,等到的分数是不同的 web的GM系统,服务器的读表配置
+ 6. 发送广播协议,给同一个房间下的玩家;结算信息的数据持久化,把结算数据保存到DB后者redis等---GM统计后者前端会显示个人战绩的信息
+ *7. 释放房间信息
+
+ */
+ strroomid := this.GetRoomID(strOpenID)
+ GRoomManagerPtr.RoomLock.RLock()
+ roomdata := GRoomManagerPtr.GRoomData[strroomid]
+ GRoomManagerPtr.RoomLock.RUnlock()
+ if roomdata.SeatData[roomdata.TurnID].PlayerData.OpenID != strOpenID {
+ // 没有轮到此玩家移动
+ return
+ }
+ iseatid := 0 // 赢的一方的座位ISSD
+ if roomdata.TurnID == 0 {
+ iseatid = 1
+ }
+ // 游戏结束的协议
+ gameover := &DSQ_ST.GameOver{
+ PlayerWin: roomdata.SeatData[iseatid].PlayerData, // 胜利的玩家
+ PlayerFail: roomdata.SeatData[roomdata.TurnID].PlayerData, // 失败的玩家
+ WinSeatID: iseatid, // 胜利人的位置信息,0或者1的位置信息
+ Score: 1000,
+ }
+ //广播消息
+ data := &Proto_DSQGame.Broadcast_GameOver{
+ Protocol: 10,
+ Protocol2: Proto_DSQGame.Broadcast_GameOver_Proto,
+ GameOver: gameover,
+ }
+ vala, _ := M.Get(roomdata.SeatData[0].PlayerData.OpenID + "|User")
+ valb, _ := M.Get(roomdata.SeatData[1].PlayerData.OpenID + "|User")
+ vala.(*DSQGame).PlayerSendMessage(data)
+ valb.(*DSQGame).PlayerSendMessage(data)
+ // 注意点: 结算信息的数据持久化,把结算数据保存到DB后者redis等---GM统计后者前端会显示个人战绩的信息
+ // 作业
+ // 逻辑缺失*******************************
+ // 释放房间信息
+ GRoomManagerPtr.RoomLock.RLock()
+ delete(GRoomManagerPtr.GRoomData, strroomid)
+ GRoomManagerPtr.RoomLock.RUnlock()
+ return
+}
+
+// 棋子”行走“
+// 需要完成棋子行走后的,坐标的数据校验 例如:如果是左右移动,x坐标相差1,如果是上下移动,y的坐标相差1
+func (this *DSQGame) PlayerXingZou(ProtocolData map[string]interface{}) {
+ // { 解析客户端发过来的数据的字段,
+ strOpenID := ProtocolData["OpenID"].(string)
+ strOldPos := ProtocolData["OldPos"].(string)
+ strNewPos := ProtocolData["NewPos"].(string)
+ //}
+ /*
+ 棋子行走(服务器的数据校验):
+ 1. 通过OpenID,获取roomid信息
+ 2. 通过第1步骤获取的roomid信息,去获取roomdata信息
+ 3. 通过第2步骤获取到的roomdata信息,去获取TurnID,是否轮到本玩家操作
+ 4. 通过OldPos获取当前位置数据是否被”翻开“,不被翻开的话,服务器不允许操作(ChessDataClient)
+ 5. 第4步骤ok的话,NewPos是否被”翻开“
+ 6. 第6步骤ok的话,服务器需要检测<1>:是否是同一方(8为分界线),<2>:不是同一方,比较大小
+ 7. 触发棋子移动,广播同一房间下的玩家
+ */
+ strroomid := this.GetRoomID(strOpenID)
+ GRoomManagerPtr.RoomLock.RLock()
+ roomdata := GRoomManagerPtr.GRoomData[strroomid]
+ GRoomManagerPtr.RoomLock.RUnlock()
+ // 获取turnid 0或者1
+
+ if roomdata.SeatData[roomdata.TurnID].PlayerData.OpenID != strOpenID {
+ // 没有轮到此玩家移动
+ return
+ }
+ // 获取起始位置OldPos是否翻开
+ xold, yold := this.GetClientAndServerPos(strOldPos)
+ iposold := roomdata.ChessDataClient[xold][yold]
+ xnew, ynew := this.GetClientAndServerPos(strNewPos)
+ iposnew := roomdata.ChessDataClient[xnew][ynew]
+ if iposold == 0 || iposnew == 0 {
+ // 返回客户端无法移动
+ return
+ }
+ // 作业
+ // ????? 作业的逻辑
+
+ // 检查是否是同一战队
+ iposoldchess := roomdata.ChessData[xold][yold]
+ iposnewchess := roomdata.ChessData[xnew][ynew]
+ if (iposoldchess <= Proto_DSQGame.Mouse && iposnewchess <= Proto_DSQGame.Mouse) || (iposoldchess > Proto_DSQGame.Mouse && iposnewchess > Proto_DSQGame.Mouse) {
+ // 同一战队,无法移动
+ return
+ }
+ /*
+ 棋子可以移动
+ 1. 相等:自相残杀 oldpos,newpos --> 空地 ,空地
+ 2. oldpos保存的动物数值,大于newpos保存的动物的数值,吃掉newpos的动物,删除oldpos的显示信息 oldpos,newpos --> 空地 ,oldpos
+ 3. oldpos保存的动物数值,小于newpos保存的动物的数值,吃掉oldpos的动物, oldpos,newpos --> 空地 ,newpos
+ */
+ // 1. 相等:自相残杀 oldpos,newpos --> 空地 ,空地
+ if math.Abs(float64(iposoldchess-iposnewchess)) == Proto_DSQGame.Mouse {
+ // 更新缓存数据
+ roomdata.ChessData[xold][yold] = 0
+ roomdata.ChessData[xnew][ynew] = 0
+ roomdata.ChessDataClient[xold][yold] = 2
+ roomdata.ChessDataClient[xnew][ynew] = 2
+ }
+ if iposoldchess > Proto_DSQGame.Mouse {
+ if int(math.Abs(float64(iposoldchess-Proto_DSQGame.Mouse))) < iposnewchess {
+ roomdata.ChessData[xold][yold] = 0
+ roomdata.ChessData[xnew][ynew] = iposoldchess
+ roomdata.ChessDataClient[xold][yold] = 2
+ }
+ } else {
+ if int(math.Abs(float64(iposnewchess-Proto_DSQGame.Mouse))) < iposoldchess {
+ roomdata.ChessData[xold][yold] = 0
+ roomdata.ChessData[xnew][ynew] = iposnewchess
+ roomdata.ChessDataClient[xold][yold] = 2
+ }
+ }
+ //广播消息
+ data := &Proto_DSQGame.Broadcast_Player_XingZou{
+ Protocol: 10,
+ Protocol2: 8,
+ OpenID: strOpenID,
+ OldPos: strOldPos,
+ NewPos: strNewPos,
+ }
+ vala, _ := M.Get(roomdata.SeatData[0].PlayerData.OpenID + "|User")
+ valb, _ := M.Get(roomdata.SeatData[1].PlayerData.OpenID + "|User")
+ vala.(*DSQGame).PlayerSendMessage(data)
+ valb.(*DSQGame).PlayerSendMessage(data)
+ return
+}
+
+// 翻牌的函数实现
+func (this *DSQGame) PlayerFanPai(ProtocolData map[string]interface{}) {
+ strOpenID := ProtocolData["OpenID"].(string)
+ StrPos := ProtocolData["StrPos"].(string)
+ fmt.Println("strOpenID-------------------", strOpenID)
+ fmt.Println("StrPos-------------------", StrPos)
+ // 服务器处理逻辑
+ strroomid := this.GetRoomID(strOpenID)
+ fmt.Println("strroomid-------------------", strroomid)
+ if len(strroomid) == 0 {
+ // 返回客户端错误码,为什么错误
+ return
+ }
+ /*
+ 1. 获取到了客户端发过来的信息
+ 2. 通过获取的数据信息---> roomid信息
+ 3. 通过第2步骤获取到的roomid信息,去获取我们的roomdata信息
+ 4. 通过第3步骤获取到的roomdata信息,去查找客户端翻牌对应位置的动物的数据--->(算法的对应的关系)
+ 5. 广播此房间下的玩家
+ */
+ GRoomManagerPtr.RoomLock.RLock()
+ roomdata := GRoomManagerPtr.GRoomData[strroomid]
+ GRoomManagerPtr.RoomLock.RUnlock()
+ if roomdata == nil {
+ // 房间信息不存在
+ return
+ }
+ /*
+ 通过第3步骤获取到的roomdata信息,去查找客户端翻牌对应位置的动物的数据--->(算法的对应的关系)
+ // 初始化棋盘数据
+ [
+ [6 8 11 5]
+ [12 10 15 3]
+ [16 1 2 14]
+ [4 7 13 9]
+ ]
+ */
+ chessdata := roomdata.ChessData
+ fmt.Println("chessdata-------------------", chessdata)
+ x, y := this.GetClientAndServerPos(StrPos)
+ chessnum := chessdata[x][y]
+ roomdata.ChessDataClient[x][y] = 1
+ fmt.Println("chessnum-------------------", chessnum)
+ fmt.Println("roomdata.ChessDataClient-------------------", roomdata.ChessDataClient)
+ // 发送消息
+ data := &Proto_DSQGame.Broadcast_Player_FanPai{
+ Protocol: 10,
+ Protocol2: 6,
+ IChess: chessnum,
+ OpenID: strOpenID,
+ StrPos: StrPos,
+ }
+ if roomdata.SeatData[0].PlayerData.OpenID == strOpenID {
+ data.SeatID = 0
+ } else {
+ data.SeatID = 1
+ }
+ // 广播协议
+ vala, _ := M.Get(roomdata.SeatData[0].PlayerData.OpenID + "|User")
+ valb, _ := M.Get(roomdata.SeatData[1].PlayerData.OpenID + "|User")
+ vala.(*DSQGame).PlayerSendMessage(data)
+ valb.(*DSQGame).PlayerSendMessage(data)
+ return
+}
+
+// 玩家匹配
+func (this *DSQGame) PlayerPiPei(ProtocolData map[string]interface{}) {
+ fmt.Println("PlayerPiPei-------------------", ProtocolData)
+ strOpenID := ProtocolData["OpenID"].(string)
+
+ // 匹配逻辑
+ // 1. 队列形式-- chan
+ // 2. 匹配成功
+ val, err := this.MapSafe.Get(strOpenID + "|User")
+ if err != nil {
+ fmt.Println(err)
+ return
+ }
+ fmt.Println("--------------------val:", val)
+ DSQ_match.PutMatchList(val.(*DSQGame).Player)
+ return
+}
+
+// 玩家登录
+func (this *DSQGame) PlayerLogin(ProtocolData map[string]interface{}) {
+ fmt.Println("PlayerLogin-------------------", ProtocolData)
+ strtoken := ProtocolData["Tocken"].(string)
+
+ // 去登录服务器验证 tocken是否有效
+ retstr := impl.Get("http://127.0.0.1:4001/BaBaLiuLiu_Server?Protocol=10&Protocol2=3&Token=" + strtoken)
+ fmt.Println("impl.Get", retstr)
+ // 解析login server 返回的数据
+ //
+ // 整体数据结构解析
+ STsend := &ProtoDSQ.L2G_Player_Login{}
+ json.Unmarshal([]byte(retstr), STsend)
+
+ // 发送客户端
+ data := &Proto_DSQGame.G2C_Player_Login{
+ Protocol: 10,
+ Protocol2: 2,
+ Bsucc: true,
+ }
+
+ if !STsend.Isucc {
+ data.Bsucc = false
+ this.PlayerSendMessage(data)
+ return
+ }
+ fmt.Println("STsend.PlayerData", STsend.PlayerData)
+ fmt.Println("STsend.PlayerData.OpenID", STsend.PlayerData.OpenID)
+ // 玩家数据解析
+ // 服务器的数据连接信息保存
+ // 1. 玩家的链接信息,conn , playerdata 等等 需要进行保存。
+ // 2. 玩家的消息的推送,服务器通知玩家(服务器广播)。
+ // 3. 网络信息的断线重来。
+ // 数据保存
+ onlineUser := &DSQGame{
+ Connection: this.Connection,
+ MapSafe: this.MapSafe,
+ Player: STsend.PlayerData,
+ }
+ this.MapSafe.Put(STsend.PlayerData.OpenID+"|User", onlineUser)
+ // 发送数据
+ data.Player = STsend.PlayerData
+ this.PlayerSendMessage(data)
+ return
+}
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/ByteEdu_DSQ/src/DSQ_server/Match/match.go" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/ByteEdu_DSQ/src/DSQ_server/Match/match.go"
new file mode 100644
index 00000000..7d2edd66
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/ByteEdu_DSQ/src/DSQ_server/Match/match.go"
@@ -0,0 +1,57 @@
+package DSQ_match
+
+import (
+ "DSQ_server/Player"
+ "time"
+)
+
+/*
+ 如何解决 匹配高并发下的panic问题(第二期解决)
+*/
+
+var (
+ GMatchChan chan map[string]*Player_DSQ.PlayerData
+ Gmap map[string]*Player_DSQ.PlayerData
+)
+
+func init() {
+ GMatchChan = make(chan map[string]*Player_DSQ.PlayerData, 1000)
+ Gmap = make(map[string]*Player_DSQ.PlayerData)
+ go Timer()
+}
+
+// 玩家的数据匹配压入
+func PutMatchList(data *Player_DSQ.PlayerData) {
+ Gmap[data.OpenID] = data
+}
+
+// 匹配timer
+func Timer() {
+ for {
+ select {
+ case <-time.After(time.Millisecond * 1):
+ {
+ // 进行数据验证 -- 确保我们链接信息完全获取到
+ // 不够严谨,如果不验证玩家数据是否保存成功,会导致客户端一个匹配成功,无法游戏。
+ // 作业,剔除不在线玩家
+ // 确保2个人, 如果满足len(Gmap)%2 == 0 ---> GMatchChan
+ if len(Gmap)%2 == 0 && len(Gmap) != 0 {
+ datatmp := make(map[string]*Player_DSQ.PlayerData)
+ for k, v := range Gmap {
+ datatmp[k] = v
+ delete(Gmap, k)
+ }
+ SendGMatchChan(datatmp)
+ }
+ }
+ }
+ }
+}
+
+// 压如匹配函数
+func SendGMatchChan(data map[string]*Player_DSQ.PlayerData) {
+ if len(data) == 0 {
+ return
+ }
+ GMatchChan <- data
+}
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/ByteEdu_DSQ/src/DSQ_server/NetCtl.go" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/ByteEdu_DSQ/src/DSQ_server/NetCtl.go"
new file mode 100644
index 00000000..0b68696d
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/ByteEdu_DSQ/src/DSQ_server/NetCtl.go"
@@ -0,0 +1,57 @@
+package main
+
+import (
+ "encoding/json"
+ "glog-master"
+
+ "code.google.com/p/go.net/websocket"
+)
+
+func (this *DSQGame) PlayerSendMessage(senddata interface{}) int {
+
+ b, err1 := json.Marshal(senddata)
+ if err1 != nil {
+ glog.Error("PlayerSendMessage json.Marshal data fail ! err:", err1.Error())
+ glog.Flush()
+ return 1
+ }
+ // 去除多余发送数据
+ if len(string(b)) < 100 {
+ glog.Info("json.Marshal(b) :", string(b))
+ data := ""
+ data = "data" + "=" + string(b[0:len(b)])
+ glog.Info("json.Marshal(data) :", data)
+ }
+ if this.Connection == nil {
+ glog.Info("链接信息为空:", 3)
+ return 3
+ }
+ glog.Flush()
+ err := websocket.JSON.Send(this.Connection, b)
+ if err != nil {
+ glog.Error("PlayerSendMessage send data fail ! err:", err.Error())
+ glog.Flush()
+ return 2
+ }
+
+ return 0
+}
+
+func (this *DSQGame) PlayerSendMessagePro(senddata interface{}) int {
+
+ b, err1 := json.Marshal(senddata)
+ if err1 != nil {
+ glog.Error("PlayerSendMessage json.Marshal data fail ! err:", err1.Error())
+ glog.Flush()
+ return 1
+ }
+
+ err := websocket.JSON.Send(this.Connection, b)
+ if err != nil {
+ glog.Error("PlayerSendMessage send data fail ! err:", err.Error())
+ glog.Flush()
+ return 2
+ }
+
+ return 0
+}
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/ByteEdu_DSQ/src/DSQ_server/Player/Player.go" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/ByteEdu_DSQ/src/DSQ_server/Player/Player.go"
new file mode 100644
index 00000000..05b0abac
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/ByteEdu_DSQ/src/DSQ_server/Player/Player.go"
@@ -0,0 +1,12 @@
+package Player_DSQ
+
+// 玩家架构信息
+type PlayerData struct {
+ UID int // 玩家UID
+ OpenID string // MD5 字符串
+ Name string // 玩家名字
+ Avatar string // 玩家头像
+ Level int // 玩家等级
+ Coin int64 // 玩家金币
+ // ... ...
+}
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/ByteEdu_DSQ/src/DSQ_server/Proto/Proto2.go" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/ByteEdu_DSQ/src/DSQ_server/Proto/Proto2.go"
new file mode 100644
index 00000000..f434b852
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/ByteEdu_DSQ/src/DSQ_server/Proto/Proto2.go"
@@ -0,0 +1,142 @@
+package Proto_DSQGame
+
+import (
+ "DSQ_server/Player"
+ "DSQ_server/ST"
+)
+
+// 主协议 10号
+const (
+ DSQGameINIT = iota // 初始化操作
+ C2G_Player_Login_Proto // C2G_Player_Login_Proto == 1 客户端到游戏服务器验证
+ G2C_Player_Login_Proto // G2C_Player_Login_Proto == 2 服务器返回 是否成功
+ C2G_Player_PiPeiGame_Proto // C2G_Player_PiPeiGame_Proto == 3 客户端到游戏服务器 玩家匹配
+ Broadcast_PiPeiGame_Proto // Broadcast_PiPeiGame_Proto == 4 服务器返回 是否成功,广播协议
+ C2G_Player_FanPai_Proto // C2G_Player_FanPai_Proto == 5 客户端到游戏服务器 玩家翻牌
+ Broadcast_Player_FanPai_Proto // Broadcast_Player_FanPai_Proto == 6 服务器返回 是否成功,翻盘数据
+ C2G_Player_XingZou_Proto // C2G_Player_XingZou_Proto == 7 客户端到游戏服务器 棋子“行走”,整个我们斗兽棋游戏最复杂的逻辑处理
+ Broadcast_Player_XingZou_Proto // Broadcast_Player_XingZou_Proto == 8 服务器返回
+ C2G_Player_RenShu_Proto // C2G_Player_RenShu_Proto == 9 客户端到游戏服务器 发送认输
+ Broadcast_GameOver_Proto // Broadcast_GameOver_Proto == 10 服务器返回 游戏结束的数据
+)
+
+// 斗兽棋的枚举
+const (
+ DSQINIT = iota // 初始化
+ Elephant // 大象 ==1
+ Lion // 狮子 ==2
+ Tiger // 老虎 ==3
+ Leopard // 豹子 ==4
+ Wolf // 狼 ==5
+ Dog // 狗 ==6
+ Cat // 猫 ==7
+ Mouse // 老鼠 ==8
+)
+
+// -----------------------------------------------------------------------------
+// C2G_Player_RenShu_Proto == 9 客户端到游戏服务器 发送认输
+type C2G_Player_RenShu struct {
+ Protocol int
+ Protocol2 int
+ OpenID string
+}
+
+/*
+// 结算的数据块
+type GameOver struct {
+ PlayerWin *Player_DSQ.PlayerData // 胜利的玩家
+ PlayerFail *Player_DSQ.PlayerData // 失败的玩家
+ GameName string // 游戏的名字
+ WinSeatID int // 胜利人的位置信息,0或者1的位置信息
+ Score int // 胜利人获取的分数信息
+ // ... ... 根据自己游戏类型设计结算的数据块
+}
+*/
+// Broadcast_GameOver_Proto == 10 服务器返回
+type Broadcast_GameOver struct {
+ Protocol int
+ Protocol2 int
+ GameOver *DSQ_ST.GameOver // 计算的数据信息
+}
+
+// -----------------------------------------------------------------------------
+// C2G_Player_XingZou_Proto == 7 客户端到游戏服务器 棋子“行走”
+type C2G_Player_XingZou struct {
+ Protocol int
+ Protocol2 int
+ OpenID string
+ OldPos string
+ NewPos string
+}
+
+// Broadcast_Player_XingZou_Proto == 8 服务器返回
+type Broadcast_Player_XingZou struct {
+ Protocol int
+ Protocol2 int
+ OpenID string
+ OldPos string
+ NewPos string
+}
+
+// -----------------------------------------------------------------------------
+// C2G_Player_FanPai_Proto == 5 客户端到游戏服务器 玩家翻牌
+type C2G_Player_FanPai struct {
+ Protocol int
+ Protocol2 int
+ OpenID string // 告诉服务器,谁翻了牌
+ //SeatID string // 和openid字段 同样的效果 0 1
+ StrPos string // 位置信息
+ RoomID string // 告诉服务器,我是再那个房间下;非必须的?,通过玩家的唯一ID去获取到房间的信息
+}
+
+/*
+ [
+ [6 8 11 5]
+ [12 10 15 3]
+ [16 1 2 14]
+ [4 7 13 9]
+ ]
+*/
+// Broadcast_Player_FanPai_Proto == 6 服务器返回 是否成功,翻盘数据
+type Broadcast_Player_FanPai struct {
+ Protocol int
+ Protocol2 int
+ IChess int // 棋盘的数据 1-16的枚举值
+ OpenID string // 告诉服务器,谁翻了牌
+ StrPos string // 位置信息
+ SeatID int
+}
+
+// -----------------------------------------------------------------------------
+// C2G_Player_PiPeiGame_Proto == 3 客户端到游戏服务器 玩家匹配
+type C2G_Player_PiPeiGame struct {
+ Protocol int
+ Protocol2 int
+ OpenID string // 玩家的唯一ID
+}
+
+// Broadcast_PiPeiGame_Proto == 4 服务器返回 是否成功
+type Broadcast_PiPeiGame struct {
+ Protocol int
+ Protocol2 int
+ Bsucc bool // true :匹配成功, false:匹配失败
+ RoomData *DSQ_ST.RoomData // 房间信息,房间的ID,匹配成功的玩家的数据,当前的牌桌上的数据(双方的信息,倒计时等)
+}
+
+// -----------------------------------------------------------------------------
+// G2C_Player_Login_Proto == 2 客户端到游戏服务器验证
+type G2C_Player_Login struct {
+ Protocol int
+ Protocol2 int
+ Bsucc bool
+ Player *Player_DSQ.PlayerData
+}
+
+// C2G_Player_Login_Proto == 2 服务器返回 是否成功
+type C2G_Player_Login struct {
+ Protocol int
+ Protocol2 int
+ Tocken string // 登录验证码
+}
+
+// -----------------------------------------------------------------------------
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/ByteEdu_DSQ/src/DSQ_server/Proto/err/error.go" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/ByteEdu_DSQ/src/DSQ_server/Proto/err/error.go"
new file mode 100644
index 00000000..66b01aa4
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/ByteEdu_DSQ/src/DSQ_server/Proto/err/error.go"
@@ -0,0 +1,15 @@
+package Proto_DSQGameErr
+
+// 1000的主协议
+const (
+ ERRORINIT = iota
+ ErrorMsgProto // ErrorMsg == 1
+)
+
+// 统一错误格式
+type ErrorMsg struct {
+ Protocol int
+ Protocol2 int
+ Code string // 错误码 --> 描述信息
+ Msg string // 显示的错误描述信息
+}
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/ByteEdu_DSQ/src/DSQ_server/ST/DSQ.go" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/ByteEdu_DSQ/src/DSQ_server/ST/DSQ.go"
new file mode 100644
index 00000000..8972ed74
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/ByteEdu_DSQ/src/DSQ_server/ST/DSQ.go"
@@ -0,0 +1,38 @@
+package DSQ_ST
+
+import (
+ "DSQ_server/Player"
+)
+
+// 座位信息
+type SeatDataST struct {
+ SeatID int // 默认的 0,1
+ PlayerData *Player_DSQ.PlayerData
+ LeftTime int
+ // 不需要发送初始化棋盘数据,
+}
+
+/*
+ 匹配成功后的房间信息
+ 1. roomid 例如:从1000开始
+ 2. 玩家的数据
+ 3. 牌桌的数据
+*/
+type RoomData struct {
+ RoomID string // 房间if=d 唯一的
+ RoomName string // 非必要的
+ SeatData [2]*SeatDataST // 座位信息,默认规则 0号位置默认是 红方,1号位置默认是 蓝方
+ TurnID int // 轮到谁,防止:玩家多操作,0和1
+ ChessData [4][4]int // 棋盘数据--server 0:表示空地
+ ChessDataClient [4][4]int // 客户单显示棋盘数据 ---client,就是记录客户端行为:翻开操作,0:表示未翻起,1:翻起,2:空地(断线重连)
+}
+
+// 结算的数据块
+type GameOver struct {
+ PlayerWin *Player_DSQ.PlayerData // 胜利的玩家
+ PlayerFail *Player_DSQ.PlayerData // 失败的玩家
+ GameName string // 游戏的名字
+ WinSeatID int // 胜利人的位置信息,0或者1的位置信息
+ Score int // 胜利人获取的分数信息
+ // ... ... 根据自己游戏类型设计结算的数据块
+}
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/ByteEdu_DSQ/src/DSQ_server/timer.go" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/ByteEdu_DSQ/src/DSQ_server/timer.go"
new file mode 100644
index 00000000..8235e03d
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/ByteEdu_DSQ/src/DSQ_server/timer.go"
@@ -0,0 +1,213 @@
+package main
+
+import (
+ "DSQ_server/Match"
+ "DSQ_server/Proto"
+ "DSQ_server/ST"
+ "fmt"
+ "strconv"
+ "sync"
+ "time"
+)
+
+var (
+ // GRoomManager map[string]*GRoomSTData // 其中一种
+ GRoomManagerPtr *GRoomSTData // 彬哥推荐
+ GRoomID int
+)
+
+/*
+ 1. 肯定联系到我们的之前设计的房间结构:RoomData
+ 2. 并发安全问题
+*/
+
+type GRoomSTData struct {
+ GRoomData map[string]*DSQ_ST.RoomData
+ RoomLock *sync.RWMutex
+}
+
+func init() {
+ // GRoomManager = make(map[string]*GRoomSTData)
+ GRoomManagerPtr = NewGRoomManagerPtr()
+ GRoomID = 1000
+ go MatchTimer() // 全局的定时器,出现panic 或者中断,整个匹配机制就无法继续进行了。
+}
+
+func NewGRoomManagerPtr() *GRoomSTData {
+ return &GRoomSTData{
+ GRoomData: make(map[string]*DSQ_ST.RoomData),
+ RoomLock: new(sync.RWMutex),
+ }
+}
+
+/*
+ 获取RoomID长度
+ 每一个匹配成功的数据的总和,例如: A,B ---> {A,B} len(GRoomData) == 1 ,C,D ---> {C,D} len(GRoomData)+1
+ 1. 读写锁的使用
+ 2. 获取全局的RoomID
+*/
+func GetGRoomDataLen() int {
+ GRoomManagerPtr.RoomLock.RLock()
+ ilen := len(GRoomManagerPtr.GRoomData) + GRoomID
+ GRoomManagerPtr.RoomLock.RUnlock()
+ return ilen
+}
+
+/*
+说明:1. 2人组合一个房间。
+ 2. 发送广播消息(Broadcast_PiPeiGame_Proto)
+ 3. 房间生成规则
+ 4. 处理数据结构,go 与我们住进程 -- 线程通信方式:Go 通过通信来实现共享内存
+*/
+
+func MatchTimer() {
+ startTumer := time.NewTicker(time.Millisecond * 10)
+ for {
+ select {
+ case <-startTumer.C:
+ { // 存的数据结构:map[string]*Player_DSQ.PlayerData
+ // len(Gmap)%2 == 0 && len(Gmap) != 0
+ datachan := <-DSQ_match.GMatchChan
+ openida, openidb := "", ""
+ for kc, _ := range datachan {
+ if len(openida) == 0 {
+ openida = kc
+ } else {
+ openidb = kc
+ }
+ }
+ for _, v := range datachan {
+ _ = v
+ // 2个人匹配成功 ---> 去创建房间 (房间的创建规则?) --- 逻辑思维
+ // 玩家的广播链接信息,我们如何取?--- 看听课认真不
+ // this.MapSafe.Put(STsend.PlayerData.OpenID+"|User", onlineUser)
+ // 1. Get方法去取数据 --
+ // 2. 循环我们这个数据结构, for k,v :=range M -- 1W
+ vala, _ := M.Get(openida + "|User")
+ valb, _ := M.Get(openidb + "|User")
+
+ /*
+ 1. 通过roomid获取获取roomData数据
+ 2. 判断roomdata下面的seatdata数据是否2个玩家都有数据
+ 3. 如果 第2步骤seatdata 已经全部有数据,以第1步骤的roomid创建房间信息
+ 4. 否则继续循环数据,添加到 roomdata成员变量seatdata
+ */
+ strroom := strconv.Itoa(GetGRoomDataLen())
+ GRoomManagerPtr.RoomLock.RLock()
+ roomdatatmp := GRoomManagerPtr.GRoomData[strconv.Itoa(GetGRoomDataLen())]
+ GRoomManagerPtr.RoomLock.RUnlock()
+ if roomdatatmp == nil {
+ roomdatatmp = &DSQ_ST.RoomData{}
+ }
+ /* seatData的数据结构
+ 1. 2个玩家
+ 2. 每个玩家的棋牌初始化数据,4*4 服务器的棋盘初始化操作--保存到server内存数据中的
+ type SeatDataST struct {
+ SeatID int // 默认的 0,1
+ PlayerData *Player_DSQ.PlayerData
+ LeftTime int
+ }
+ */
+ seatdataa := &DSQ_ST.SeatDataST{
+ SeatID: 0,
+ PlayerData: vala.(*DSQGame).Player,
+ LeftTime: 20,
+ }
+
+ seatdatab := &DSQ_ST.SeatDataST{
+ SeatID: 1,
+ PlayerData: valb.(*DSQGame).Player,
+ LeftTime: 20,
+ }
+
+ roomdatatmp.RoomID = strroom
+ roomdatatmp.TurnID = 0 // 先手操作
+ roomdatatmp.SeatData[0] = seatdataa
+ roomdatatmp.SeatData[1] = seatdatab
+ roomdatatmp.ChessData = InitDSQ(DSQ_QI)
+ //roomdatatmp.ChessDataClient = [4][4]int{}
+ vala.(*DSQGame).StrMD5 = strroom
+ valb.(*DSQGame).StrMD5 = strroom
+
+ /*
+ val 是什么数据 -->
+ type DSQGame struct {
+ Connection *websocket.Conn
+ StrMD5 string // 唯一ID
+ MapSafe *concurrent.ConcurrentMap
+ Player *Player_DSQ.PlayerData
+ }
+
+ // Broadcast_PiPeiGame_Proto == 4 服务器返回 是否成功
+ type Broadcast_PiPeiGame struct {
+ Protocol int
+ Protocol2 int
+ Bsucc bool // true :匹配成功, false:匹配失败
+ RoomData *DSQ_ST.RoomData // 房间信息,房间的ID,匹配成功的玩家的数据,当前的牌桌上的数据(双方的信息,倒计时等)
+ }
+ */
+ // 发消息,通知玩家匹配成功了
+ data := Proto_DSQGame.Broadcast_PiPeiGame{
+ Protocol: 10,
+ Protocol2: 4,
+ Bsucc: true,
+ }
+
+ /* 房间的数据结构
+ 1. 服务器的房间的manager
+ 2. 管理房间的数据结构,包括:玩家的数据(红方,蓝方),房间的GC(timer)
+ 3. 玩家的数据的游戏数据存储,包括(玩家的报名,玩家的结算数据)
+ 4. 自学习的数据收集,包括(玩家的行为,大数据的记录,4*4 ,先手玩家最先点那个牌)
+ type RoomData struct {
+ RoomID int // 房间if=d
+ RoomName string // 非必要的
+ SeatData [2]*SeatDataST // 座位信息,默认规则 0号位置默认是 红方,1号位置默认是 蓝方
+ TurnID int // 轮到谁,防止:玩家多操作
+ }
+ */
+ data.RoomData = roomdatatmp
+ fmt.Println(data)
+ vala.(*DSQGame).PlayerSendMessage(data)
+ valb.(*DSQGame).PlayerSendMessage(data)
+ GRoomManagerPtr.GRoomData[strroom] = roomdatatmp
+ go MatchTimer2(strroom)
+ break
+ }
+ }
+ }
+ }
+}
+
+/*
+ 玩家匹配成功后,服务器发送广播消息,延迟2秒发送
+ 1. 确保客户端在跳转界面后收到消息,例如 从匹配界面(主界面)--2s--> 到 游戏主界面
+ 2. 确保服务器消息可以正常被客户端接收到
+ 3. 功能性timer,使用完就自动释放,不需要常驻内存
+*/
+func MatchTimer2(roomid string) {
+ startTumer := time.NewTicker(time.Second * 2)
+ for {
+ select {
+ case <-startTumer.C:
+
+ GRoomManagerPtr.RoomLock.RLock()
+ roomdatatmp := GRoomManagerPtr.GRoomData[roomid]
+ GRoomManagerPtr.RoomLock.RUnlock()
+
+ data := Proto_DSQGame.Broadcast_PiPeiGame{
+ Protocol: 10,
+ Protocol2: 4,
+ Bsucc: true,
+ RoomData: roomdatatmp,
+ }
+ fmt.Println("---------------======================data:", data)
+ vala, _ := M.Get(roomdatatmp.SeatData[0].PlayerData.OpenID + "|User")
+ valb, _ := M.Get(roomdatatmp.SeatData[1].PlayerData.OpenID + "|User")
+ vala.(*DSQGame).PlayerSendMessage(data)
+ valb.(*DSQGame).PlayerSendMessage(data)
+ // 功能性timer,使用完就自动释放,不需要常驻内存
+ startTumer.Stop()
+ return
+ }
+ }
+}
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/ByteEdu_DSQ/src/DSQ_server/tmian.go" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/ByteEdu_DSQ/src/DSQ_server/tmian.go"
new file mode 100644
index 00000000..c8b65d11
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server/ByteEdu_DSQ/src/DSQ_server/tmian.go"
@@ -0,0 +1,58 @@
+package main
+
+import (
+ "DSQ_server/Player"
+ "LollipopGo/LollipopGo"
+ "LollipopGo/LollipopGo/network"
+ "cache2go"
+ "flag"
+ "glog-master"
+ "go-concurrentMap-master"
+ "net/http"
+
+ "code.google.com/p/go.net/websocket"
+)
+
+// 链接存储结构
+type DSQGame struct {
+ Connection *websocket.Conn
+ StrMD5 string // 目前可以设计为房间ID信息
+ MapSafe *concurrent.ConcurrentMap
+ Player *Player_DSQ.PlayerData
+}
+
+var cache *cache2go.CacheTable
+var M *concurrent.ConcurrentMap // 并发安全
+
+func init() {
+ impl.IMsg = new(DSQGame)
+ cache = cache2go.Cache("DSQGame")
+ M = concurrent.NewConcurrentMap()
+
+ flag.Set("alsologtostderr", "true") // 日志写入文件的同时,输出到stderr
+ flag.Set("log_dir", "./log") // 日志文件保存目录
+ flag.Set("v", "3") // 配置V输出的等级。
+ flag.Parse()
+ return
+}
+
+func main() {
+ LollipopGo.Run()
+ http.Handle("/DSQ", websocket.Handler(BuildConnection))
+ if err := http.ListenAndServe(":4002", nil); err != nil {
+ glog.Info("Entry nil", err.Error())
+ glog.Flush()
+ return
+ }
+ return
+}
+
+func BuildConnection(ws *websocket.Conn) {
+ data := ws.Request().URL.Query().Get("data")
+ glog.Info(data)
+ if data == "" {
+ glog.Info("data is Nil")
+ glog.Flush()
+ }
+ impl.InitConnection(ws)
+}
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server\345\272\225\345\261\202\345\272\223\344\270\213\350\275\275\351\223\276\346\216\245/lollipopGo.txt" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server\345\272\225\345\261\202\345\272\223\344\270\213\350\275\275\351\223\276\346\216\245/lollipopGo.txt"
new file mode 100644
index 00000000..471d76a5
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/server\345\272\225\345\261\202\345\272\223\344\270\213\350\275\275\351\223\276\346\216\245/lollipopGo.txt"
@@ -0,0 +1,3 @@
+ȫջһ-lollipopGoײ
+http://www.byteedu.com/thread-1273-1-1.html
+(: www.ByteEdu.Com)
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/\350\257\276\344\273\266/ByteEdu.Com\346\225\231\350\202\262 \346\226\227\345\205\275\346\243\213\347\254\254\344\270\200\346\234\237.xmind" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/\350\257\276\344\273\266/ByteEdu.Com\346\225\231\350\202\262 \346\226\227\345\205\275\346\243\213\347\254\254\344\270\200\346\234\237.xmind"
new file mode 100644
index 00000000..2b29bff0
Binary files /dev/null and "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/\350\257\276\344\273\266/ByteEdu.Com\346\225\231\350\202\262 \346\226\227\345\205\275\346\243\213\347\254\254\344\270\200\346\234\237.xmind" differ
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/\350\257\276\344\273\266/\347\254\254\344\270\203\350\212\202\357\274\214\345\256\242\346\210\267\347\253\257\346\243\213\345\255\220\345\210\235\345\247\213\345\214\226\350\260\203\350\257\225.doc" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/\350\257\276\344\273\266/\347\254\254\344\270\203\350\212\202\357\274\214\345\256\242\346\210\267\347\253\257\346\243\213\345\255\220\345\210\235\345\247\213\345\214\226\350\260\203\350\257\225.doc"
new file mode 100644
index 00000000..949e166d
Binary files /dev/null and "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/\350\257\276\344\273\266/\347\254\254\344\270\203\350\212\202\357\274\214\345\256\242\346\210\267\347\253\257\346\243\213\345\255\220\345\210\235\345\247\213\345\214\226\350\260\203\350\257\225.doc" differ
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/\350\257\276\344\273\266/\347\254\254\344\270\211\350\212\202\357\274\214\347\225\214\351\235\242\346\213\274\346\216\245\357\274\214\346\234\215\345\212\241\345\231\250\346\220\255\345\273\272.doc" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/\350\257\276\344\273\266/\347\254\254\344\270\211\350\212\202\357\274\214\347\225\214\351\235\242\346\213\274\346\216\245\357\274\214\346\234\215\345\212\241\345\231\250\346\220\255\345\273\272.doc"
new file mode 100644
index 00000000..a61fa243
Binary files /dev/null and "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/\350\257\276\344\273\266/\347\254\254\344\270\211\350\212\202\357\274\214\347\225\214\351\235\242\346\213\274\346\216\245\357\274\214\346\234\215\345\212\241\345\231\250\346\220\255\345\273\272.doc" differ
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/\350\257\276\344\273\266/\347\254\254\344\271\235\350\212\202\357\274\214\346\243\213\347\233\230\347\232\204\345\210\235\345\247\213\345\214\226\345\256\214\346\210\220\357\274\214\350\241\214\350\265\260\357\274\214\345\220\203\347\232\204\345\215\217\350\256\256\345\256\232\344\271\211.doc" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/\350\257\276\344\273\266/\347\254\254\344\271\235\350\212\202\357\274\214\346\243\213\347\233\230\347\232\204\345\210\235\345\247\213\345\214\226\345\256\214\346\210\220\357\274\214\350\241\214\350\265\260\357\274\214\345\220\203\347\232\204\345\215\217\350\256\256\345\256\232\344\271\211.doc"
new file mode 100644
index 00000000..8693e955
Binary files /dev/null and "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/\350\257\276\344\273\266/\347\254\254\344\271\235\350\212\202\357\274\214\346\243\213\347\233\230\347\232\204\345\210\235\345\247\213\345\214\226\345\256\214\346\210\220\357\274\214\350\241\214\350\265\260\357\274\214\345\220\203\347\232\204\345\215\217\350\256\256\345\256\232\344\271\211.doc" differ
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/\350\257\276\344\273\266/\347\254\254\344\272\214\350\212\202\357\274\214UI\346\213\274\346\216\245.doc" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/\350\257\276\344\273\266/\347\254\254\344\272\214\350\212\202\357\274\214UI\346\213\274\346\216\245.doc"
new file mode 100644
index 00000000..ef0ded97
Binary files /dev/null and "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/\350\257\276\344\273\266/\347\254\254\344\272\214\350\212\202\357\274\214UI\346\213\274\346\216\245.doc" differ
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/\350\257\276\344\273\266/\347\254\254\344\272\224\350\212\202\357\274\214\347\231\273\345\275\225\346\243\213\345\255\220\345\210\235\345\247\213\345\214\226.doc" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/\350\257\276\344\273\266/\347\254\254\344\272\224\350\212\202\357\274\214\347\231\273\345\275\225\346\243\213\345\255\220\345\210\235\345\247\213\345\214\226.doc"
new file mode 100644
index 00000000..eb2ec0db
Binary files /dev/null and "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/\350\257\276\344\273\266/\347\254\254\344\272\224\350\212\202\357\274\214\347\231\273\345\275\225\346\243\213\345\255\220\345\210\235\345\247\213\345\214\226.doc" differ
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/\350\257\276\344\273\266/\347\254\254\345\205\253\350\212\202\357\274\214\345\214\271\351\205\215\351\200\273\350\276\221\343\200\201\346\243\213\347\233\230\347\232\204\345\210\235\345\247\213\345\214\226\345\256\214\346\210\220.doc" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/\350\257\276\344\273\266/\347\254\254\345\205\253\350\212\202\357\274\214\345\214\271\351\205\215\351\200\273\350\276\221\343\200\201\346\243\213\347\233\230\347\232\204\345\210\235\345\247\213\345\214\226\345\256\214\346\210\220.doc"
new file mode 100644
index 00000000..f790664c
Binary files /dev/null and "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/\350\257\276\344\273\266/\347\254\254\345\205\253\350\212\202\357\274\214\345\214\271\351\205\215\351\200\273\350\276\221\343\200\201\346\243\213\347\233\230\347\232\204\345\210\235\345\247\213\345\214\226\345\256\214\346\210\220.doc" differ
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/\350\257\276\344\273\266/\347\254\254\345\205\255\350\212\202\357\274\214\345\256\242\346\210\267\347\253\257\346\243\213\345\255\220\345\210\235\345\247\213\345\214\226.doc" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/\350\257\276\344\273\266/\347\254\254\345\205\255\350\212\202\357\274\214\345\256\242\346\210\267\347\253\257\346\243\213\345\255\220\345\210\235\345\247\213\345\214\226.doc"
new file mode 100644
index 00000000..70476af0
Binary files /dev/null and "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/\350\257\276\344\273\266/\347\254\254\345\205\255\350\212\202\357\274\214\345\256\242\346\210\267\347\253\257\346\243\213\345\255\220\345\210\235\345\247\213\345\214\226.doc" differ
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/\350\257\276\344\273\266/\347\254\254\345\215\201\344\270\200\350\212\202\357\274\214\347\277\273\347\211\214\357\274\214\350\241\214\350\265\260.doc" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/\350\257\276\344\273\266/\347\254\254\345\215\201\344\270\200\350\212\202\357\274\214\347\277\273\347\211\214\357\274\214\350\241\214\350\265\260.doc"
new file mode 100644
index 00000000..e1963bb0
Binary files /dev/null and "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/\350\257\276\344\273\266/\347\254\254\345\215\201\344\270\200\350\212\202\357\274\214\347\277\273\347\211\214\357\274\214\350\241\214\350\265\260.doc" differ
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/\350\257\276\344\273\266/\347\254\254\345\215\201\344\270\211\350\212\202\357\274\214\350\257\276\347\250\213\346\200\273\347\273\223.doc" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/\350\257\276\344\273\266/\347\254\254\345\215\201\344\270\211\350\212\202\357\274\214\350\257\276\347\250\213\346\200\273\347\273\223.doc"
new file mode 100644
index 00000000..86eca676
Binary files /dev/null and "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/\350\257\276\344\273\266/\347\254\254\345\215\201\344\270\211\350\212\202\357\274\214\350\257\276\347\250\213\346\200\273\347\273\223.doc" differ
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/\350\257\276\344\273\266/\347\254\254\345\215\201\344\272\214\350\212\202\357\274\214\350\241\214\350\265\260\357\274\214\347\273\223\347\256\227\357\274\214\350\256\244\350\276\223.doc" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/\350\257\276\344\273\266/\347\254\254\345\215\201\344\272\214\350\212\202\357\274\214\350\241\214\350\265\260\357\274\214\347\273\223\347\256\227\357\274\214\350\256\244\350\276\223.doc"
new file mode 100644
index 00000000..b1573a53
Binary files /dev/null and "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/\350\257\276\344\273\266/\347\254\254\345\215\201\344\272\214\350\212\202\357\274\214\350\241\214\350\265\260\357\274\214\347\273\223\347\256\227\357\274\214\350\256\244\350\276\223.doc" differ
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/\350\257\276\344\273\266/\347\254\254\345\215\201\350\212\202\357\274\214\345\211\215\345\220\216\347\253\257\345\256\214\346\210\220\350\241\214\350\265\260\357\274\214\345\220\203\350\260\203\350\257\225.doc" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/\350\257\276\344\273\266/\347\254\254\345\215\201\350\212\202\357\274\214\345\211\215\345\220\216\347\253\257\345\256\214\346\210\220\350\241\214\350\265\260\357\274\214\345\220\203\350\260\203\350\257\225.doc"
new file mode 100644
index 00000000..3c789638
Binary files /dev/null and "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/\350\257\276\344\273\266/\347\254\254\345\215\201\350\212\202\357\274\214\345\211\215\345\220\216\347\253\257\345\256\214\346\210\220\350\241\214\350\265\260\357\274\214\345\220\203\350\260\203\350\257\225.doc" differ
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/\350\257\276\344\273\266/\347\254\254\345\233\233\350\212\202\357\274\214\347\231\273\345\275\225\346\234\215\345\212\241\345\231\250\350\260\203\350\257\225.doc" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/\350\257\276\344\273\266/\347\254\254\345\233\233\350\212\202\357\274\214\347\231\273\345\275\225\346\234\215\345\212\241\345\231\250\350\260\203\350\257\225.doc"
new file mode 100644
index 00000000..e53320a4
Binary files /dev/null and "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\344\273\243\347\240\201/\350\257\276\344\273\266/\347\254\254\345\233\233\350\212\202\357\274\214\347\231\273\345\275\225\346\234\215\345\212\241\345\231\250\350\260\203\350\257\225.doc" differ
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\345\210\227\350\241\250.png" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\345\210\227\350\241\250.png"
new file mode 100644
index 00000000..802e1ef8
Binary files /dev/null and "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\345\210\227\350\241\250.png" differ
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\347\274\226\350\276\221\345\231\250\344\270\213\350\275\275\351\223\276\346\216\245/\344\270\213\350\275\275.txt" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\347\274\226\350\276\221\345\231\250\344\270\213\350\275\275\351\223\276\346\216\245/\344\270\213\350\275\275.txt"
new file mode 100644
index 00000000..814abbb5
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213/\350\257\276\347\250\213\347\274\226\350\276\221\345\231\250\344\270\213\350\275\275\351\223\276\346\216\245/\344\270\213\350\275\275.txt"
@@ -0,0 +1,3 @@
+cocos creator أ
+http://cocos2d-x.org/filedown/CocosCreator_1.9.3_win
+
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/slot_ai/slot_ai.exe" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/slot_ai/slot_ai.exe"
new file mode 100644
index 00000000..fe51c728
Binary files /dev/null and "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/slot_ai/slot_ai.exe" differ
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/slot_ai/tmain.go" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/slot_ai/tmain.go"
new file mode 100644
index 00000000..eae82f23
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/slot_ai/tmain.go"
@@ -0,0 +1,61 @@
+package main
+
+import (
+ "fmt"
+ "math/rand"
+ "time"
+)
+
+// 类型
+const (
+ invalid = iota // 初始化
+ weapon // 武器
+ being // 人物
+ property // 道具
+ wild // 通用牌
+)
+
+// 道具
+const (
+ goat = iota // 0 weapon
+ zebra // 1 weapon
+ bull // 2 weapon
+ fox // 3 being
+ crocodile // 4 being
+ snake // 5 being
+ leopard // 6 property
+ elephant // 7 property
+ lion // 8 wild
+)
+
+//------------------------------------------------------------------------------
+
+var slot_pan = [15]int{}
+
+func main() {
+
+}
+
+// 获取随机数
+func init() {
+ rand1 := rand.New(rand.NewSource(time.Now().UnixNano()))
+ for i := 0; i < 15; i++ {
+ irand := rand1.Intn(10)
+ slot_pan[i] = irand
+ }
+ fmt.Println("Slot:", slot_pan)
+}
+
+/*
+ 0 0 0 0 0
+ 0 0 0 0 0
+ 0 0 0 0 0
+*/
+
+/*
+全盘奖倍率
+export let SlotsOverallTimes = {
+icons: [50, 100, 150, 250, 400, 500, 1000, 2500, 5000],
+types: [15, 50],
+}
+*/
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/base/skeleton.go" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/base/skeleton.go"
new file mode 100644
index 00000000..450e4e28
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/base/skeleton.go"
@@ -0,0 +1,19 @@
+package base
+
+import (
+ "youyugame/conf"
+
+ "github.com/name5566/leaf/chanrpc"
+ "github.com/name5566/leaf/module"
+)
+
+func NewSkeleton() *module.Skeleton {
+ skeleton := &module.Skeleton{
+ GoLen: conf.GoLen,
+ TimerDispatcherLen: conf.TimerDispatcherLen,
+ AsynCallLen: conf.AsynCallLen,
+ ChanRPCServer: chanrpc.NewServer(conf.ChanRPCLen),
+ }
+ skeleton.Init()
+ return skeleton
+}
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/common/PlayerST/PlayerST.go" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/common/PlayerST/PlayerST.go"
new file mode 100644
index 00000000..bd8d7450
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/common/PlayerST/PlayerST.go"
@@ -0,0 +1,45 @@
+package playerdata
+
+// 玩家架构信息
+type PlayerData struct {
+ UID int // 玩家UID
+ OpenID string // MD5 字符串
+ Name string // 玩家名字
+ Avatar string // 玩家头像
+ Level int // 玩家等级
+ Coin int64 // 玩家金币
+ // ... ...
+}
+
+// 座位信息
+type SeatDataST struct {
+ SeatID int // 默认的 0,1
+ PlayerData *PlayerData
+ LeftTime int
+ // 不需要发送初始化棋盘数据,
+}
+
+/*
+ 匹配成功后的房间信息
+ 1. roomid 例如:从1000开始
+ 2. 玩家的数据
+ 3. 牌桌的数据
+*/
+type RoomData struct {
+ RoomID string // 房间if=d 唯一的
+ RoomName string // 非必要的
+ SeatData [2]*SeatDataST // 座位信息,默认规则 0号位置默认是 红方,1号位置默认是 蓝方
+ TurnID int // 轮到谁,防止:玩家多操作,0和1
+ ChessData [4][4]int // 棋盘数据--server 0:表示空地
+ ChessDataClient [4][4]int // 客户单显示棋盘数据 ---client,就是记录客户端行为:翻开操作,0:表示未翻起,1:翻起,2:空地(断线重连)
+}
+
+// 结算的数据块
+type GameOver struct {
+ PlayerWin *PlayerData // 胜利的玩家
+ PlayerFail *PlayerData // 失败的玩家
+ GameName string // 游戏的名字
+ WinSeatID int // 胜利人的位置信息,0或者1的位置信息
+ Score int // 胜利人获取的分数信息
+ // ... ... 根据自己游戏类型设计结算的数据块
+}
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/common/uitl/gate_uitl.go" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/common/uitl/gate_uitl.go"
new file mode 100644
index 00000000..86fb844f
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/common/uitl/gate_uitl.go"
@@ -0,0 +1,10 @@
+package uitl_yy
+
+import (
+ "github.com/name5566/leaf/gate"
+)
+
+func PlayerSendMessage(args []interface{}, data interface{}) {
+ a := args[1].(gate.Agent)
+ a.WriteMsg(data)
+}
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/conf/conf.go" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/conf/conf.go"
new file mode 100644
index 00000000..6bf0214f
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/conf/conf.go"
@@ -0,0 +1,24 @@
+package conf
+
+import (
+ "log"
+ "time"
+)
+
+var (
+ // log conf
+ LogFlag = log.LstdFlags
+
+ // gate conf
+ PendingWriteNum = 2000
+ MaxMsgLen uint32 = 4096
+ HTTPTimeout = 10 * time.Second
+ LenMsgLen = 2
+ LittleEndian = false
+
+ // skeleton conf
+ GoLen = 10000
+ TimerDispatcherLen = 10000
+ AsynCallLen = 10000
+ ChanRPCLen = 10000
+)
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/conf/json.go" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/conf/json.go"
new file mode 100644
index 00000000..4fd08d5b
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/conf/json.go"
@@ -0,0 +1,37 @@
+package conf
+
+import (
+ "encoding/json"
+ "io/ioutil"
+
+ "fmt"
+
+ "github.com/name5566/leaf/log"
+)
+
+// 服务器配置
+var Server struct {
+ LogLevel string
+ LogPath string
+ WSAddr string
+ CertFile string
+ KeyFile string
+ TCPAddr string
+ MaxConnNum int
+ ConsolePort int
+ ProfilePath string
+}
+
+// 获取服务器地址
+func init() {
+ fmt.Println("init:------:")
+ data, err := ioutil.ReadFile("conf/server.json")
+ if err != nil {
+ log.Fatal("%v", err)
+ }
+ err = json.Unmarshal(data, &Server)
+ if err != nil {
+ log.Fatal("%v", err)
+ }
+ fmt.Println("init:------:", data)
+}
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/conf/server.json" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/conf/server.json"
new file mode 100644
index 00000000..116a7c7a
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/conf/server.json"
@@ -0,0 +1,11 @@
+{
+ "LogLevel": "debug",
+ "LogPath": "/log",
+ "WSAddr": "127.0.0.1:8889",
+ "CertFile": "",
+ "KeyFile": "",
+ "TCPAddr": "127.0.0.1:8888",
+ "MaxConnNum": 20000,
+ "ConsolePort": 8012,
+ "ProfilePath": ""
+}
\ No newline at end of file
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/conf/span/SlotsVar.txt" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/conf/span/SlotsVar.txt"
new file mode 100644
index 00000000..29e9b26f
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/conf/span/SlotsVar.txt"
@@ -0,0 +1,4 @@
+game_stock_fruit=0
+game_stock_men=0
+game_stock_lotus=0
+jackpot_pool=1000000000
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/conf/span/slotsConfig1.json" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/conf/span/slotsConfig1.json"
new file mode 100644
index 00000000..0168addc
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/conf/span/slotsConfig1.json"
@@ -0,0 +1,92 @@
+[
+ {
+ "索引": 1,
+ "类型": 1,
+ "赔率": 10,
+ "出现概率": 2
+ },
+ {
+ "索引": 2,
+ "类型": 1,
+ "赔率": 5,
+ "出现概率": 2
+ },
+ {
+ "索引": 3,
+ "类型": 1,
+ "赔率": 4,
+ "出现概率": 2
+ },
+ {
+ "索引": 4,
+ "类型": 1,
+ "赔率": 3,
+ "出现概率": 2
+ },
+ {
+ "索引": 5,
+ "类型": 1,
+ "赔率": 2,
+ "出现概率": 2
+ },
+ {
+ "索引": 6,
+ "类型": 2,
+ "赔率": 10,
+ "出现概率": 2
+ },
+ {
+ "索引": 7,
+ "类型": 2,
+ "赔率": 3,
+ "出现概率": 2
+ },
+ {
+ "索引": 8,
+ "类型": 2,
+ "赔率": 2.5,
+ "出现概率": 2
+ },
+ {
+ "索引": 9,
+ "类型": 2,
+ "赔率": 2,
+ "出现概率": 2
+ },
+ {
+ "索引": 10,
+ "类型": 2,
+ "赔率": 1.5,
+ "出现概率": 2
+ },
+ {
+ "索引": 11,
+ "类型": 2,
+ "赔率": 1,
+ "出现概率": 2
+ },
+ {
+ "索引": 12,
+ "类型": 2,
+ "赔率": 0.5,
+ "出现概率": 2
+ },
+ {
+ "索引": 13,
+ "类型": 3,
+ "赔率": 0,
+ "出现概率": 2
+ },
+ {
+ "索引": 14,
+ "类型": 4,
+ "赔率": 0,
+ "出现概率": 2
+ },
+ {
+ "索引": 15,
+ "类型": 5,
+ "赔率": 0,
+ "出现概率": 2
+ }
+]
\ No newline at end of file
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/conf/span/slotsConfig2.json" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/conf/span/slotsConfig2.json"
new file mode 100644
index 00000000..e3481fc5
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/conf/span/slotsConfig2.json"
@@ -0,0 +1,65 @@
+[
+ {
+ "编号": 1,
+ "状态": "低警戒",
+ "PTV最小值": 10000,
+ "PVT最大值": 1000000000,
+ "控制区间": 0
+ },
+ {
+ "编号": 2,
+ "状态": "低3区",
+ "PTV最小值": 9810,
+ "PVT最大值": 10000,
+ "控制区间": 1
+ },
+ {
+ "编号": 3,
+ "状态": "低2区",
+ "PTV最小值": 9490,
+ "PVT最大值": 9810,
+ "控制区间": 2
+ },
+ {
+ "编号": 4,
+ "状态": "低1区",
+ "PTV最小值": 9330,
+ "PVT最大值": 9490,
+ "控制区间": 3
+ },
+ {
+ "编号": 5,
+ "状态": "平衡区",
+ "PTV最小值": 9170,
+ "PVT最大值": 9330,
+ "控制区间": 4
+ },
+ {
+ "编号": 6,
+ "状态": "高1区",
+ "PTV最小值": 9010,
+ "PVT最大值": 9170,
+ "控制区间": 5
+ },
+ {
+ "编号": 7,
+ "状态": "高2区",
+ "PTV最小值": 8690,
+ "PVT最大值": 9010,
+ "控制区间": 6
+ },
+ {
+ "编号": 8,
+ "状态": "高3区",
+ "PTV最小值": 8050,
+ "PVT最大值": 8690,
+ "控制区间": 7
+ },
+ {
+ "编号": "9",
+ "状态": "高警戒",
+ "PTV最小值": 0,
+ "PVT最大值": 8050,
+ "控制区间": 8
+ }
+]
\ No newline at end of file
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/conf/span/slotsConfig3.json" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/conf/span/slotsConfig3.json"
new file mode 100644
index 00000000..7811f28f
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/conf/span/slotsConfig3.json"
@@ -0,0 +1,57 @@
+[
+ {
+ "索引": 1,
+ "赔率": 500,
+ "出现概率": "2,2,2"
+},
+ {
+ "索引": 2,
+ "赔率": 300,
+ "出现概率": "3,3,3"
+ },
+ {
+ "索引": 3,
+ "赔率": 200,
+ "出现概率": "5,5,5"
+ },
+ {
+ "索引": 4,
+ "赔率": 100,
+ "出现概率": "8,8,8"
+ },
+ {
+ "索引": 5,
+ "赔率": 80,
+ "出现概率": "10,10,10"
+ },
+ {
+ "索引": 6,
+ "赔率": 50,
+ "出现概率": "19,19,19"
+ },
+ {
+ "索引": 7,
+ "赔率": 30,
+ "出现概率": "31,31,31"
+ },
+ {
+ "索引": 8,
+ "赔率": 20,
+ "出现概率": "58,58,58"
+ },
+ {
+ "索引": 9,
+ "赔率": 10,
+ "出现概率": "80,80,80"
+ },
+ {
+ "索引": 10,
+ "赔率": 10,
+ "出现概率": "0,0,0"
+ },
+ {
+ "索引": 11,
+ "赔率": 11,
+ "出现概率": "0,0,0"
+ }
+]
\ No newline at end of file
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/conf/span/slotsLuckyConfig.json" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/conf/span/slotsLuckyConfig.json"
new file mode 100644
index 00000000..2ae27253
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/conf/span/slotsLuckyConfig.json"
@@ -0,0 +1,32 @@
+[
+ {
+ "抽取次数": "1",
+ "抽取权重": "7500|2000|500|0|0|0",
+ "小游戏1概率": "2|3|5|8|10|20",
+ "小游戏2概率": "3|7|15|50|200|1000"
+ },
+ {
+ "抽取次数": "1",
+ "抽取权重": "5700|2700|1350|250|0|0",
+ "小游戏1概率": "2|3|5|8|10|20",
+ "小游戏2概率": "3|7|15|50|200|1000"
+ },
+ {
+ "抽取次数": "1",
+ "抽取权重": "4600|2600|2225|530|20|0",
+ "小游戏1概率": "2|3|5|8|10|20",
+ "小游戏2概率": "3|7|15|50|200|1000"
+ },
+ {
+ "抽取次数": "1",
+ "抽取权重": "3700|2600|2250|1350|150|0",
+ "小游戏1概率": "2|3|5|8|10|20",
+ "小游戏2概率": "3|7|15|50|200|1000"
+ },
+ {
+ "抽取次数": "1",
+ "抽取权重": "10|10|10|10|10|0",
+ "小游戏1概率": "2|3|5|8|10|20",
+ "小游戏2概率": "3|7|15|50|200|1000"
+ }
+]
\ No newline at end of file
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/conf/span/slotsline.json" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/conf/span/slotsline.json"
new file mode 100644
index 00000000..4774db4e
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/conf/span/slotsline.json"
@@ -0,0 +1,49 @@
+{
+ "row": 3,
+ "col": 5,
+ "lines": [
+ {"index": 1, "road": "00000 11111 00000"},
+ {"index": 2, "road": "11111 00000 00000"},
+ {"index": 3, "road": "00000 00000 11111"},
+ {"index": 4, "road": "10001 01010 00100"},
+ {"index": 5, "road": "00100 01010 10001"},
+ {"index": 6, "road": "01110 10001 00000"},
+ {"index": 7, "road": "00000 10001 01110"},
+ {"index": 8, "road": "11000 00100 00011"},
+ {"index": 9, "road": "00011 00100 11000"},
+ {"index": 10,"road": "00010 10101 01000"},
+ {"index": 11,"road": "01000 10101 00010"},
+ {"index": 12,"road": "10001 01110 00000"},
+ {"index": 13,"road": "00000 01110 10001"},
+ {"index": 14,"road": "10101 01010 00000"},
+ {"index": 15,"road": "00000 01010 10101"},
+ {"index": 16,"road": "00100 11011 00000"},
+ {"index": 17,"road": "00000 11011 00100"},
+ {"index": 18,"road": "11011 00000 00100"},
+ {"index": 19,"road": "00100 00000 11011"},
+ {"index": 20,"road": "10001 00000 01110"},
+ {"index": 21,"road": "01110 00000 10001"},
+ {"index": 22,"road": "10100 10001 01010"},
+ {"index": 23,"road": "01010 10001 00100"},
+ {"index": 24,"road": "10101 00000 01010"},
+ {"index": 25,"road": "01010 00000 10101"},
+ {"index": 26,"road": "01001 00100 10010"},
+ {"index": 27,"road": "10010 00100 01001"},
+ {"index": 28,"road": "10001 00100 01010"},
+ {"index": 29,"road": "01010 00100 10001"},
+ {"index": 30,"road": "00110 01001 10000"}
+ ],
+ "9row": 3,
+ "9col": 3,
+ "9lines": [
+ {"index": 1, "road": "000 111 000"},
+ {"index": 2, "road": "111 000 000"},
+ {"index": 3, "road": "000 000 111"},
+ {"index": 4, "road": "100 010 001"},
+ {"index": 5, "road": "001 010 100"},
+ {"index": 6, "road": "010 101 000"},
+ {"index": 7, "road": "010 000 101"},
+ {"index": 8, "road": "101 000 010"},
+ {"index": 9, "road": "000 101 010"}
+ ]
+}
\ No newline at end of file
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/conf/span/spin.json" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/conf/span/spin.json"
new file mode 100644
index 00000000..5a24f5d9
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/conf/span/spin.json"
@@ -0,0 +1,57 @@
+{
+ "from":3,
+ "to":5,
+ "spins":[
+ {"id":1,"val":"120 250 500"},
+ {"id":2,"val":"90 200 400"},
+ {"id":3,"val":"70 150 300"},
+ {"id":4,"val":"50 100 200"},
+ {"id":5,"val":"35 75 150"},
+ {"id":6,"val":"25 40 80"},
+ {"id":7,"val":"15 30 60"},
+ {"id":8,"val":"10 20 40"},
+ {"id":9,"val":"5 15 30"},
+ {"id":10,"val":"10 20 30"}
+ ],
+ "from9line":3,
+ "to9line":3,
+ "spins9line":[
+ {"id":1,"val":"20"},
+ {"id":2,"val":"15"},
+ {"id":3,"val":"12"},
+ {"id":4,"val":"10"},
+ {"id":5,"val":"7"},
+ {"id":6,"val":"4"},
+ {"id":7,"val":"50"}
+ ],
+ "AllWildOdds":250,
+ "WildOdds":50,
+ "WildRate":"727,727,727,727,727,727,1047,1047,1047",
+ "WildCol":[
+ {"id":1,"val":"1,0,0,50"},
+ {"id":2,"val":"0,1,0,0"},
+ {"id":3,"val":"0,0,1,50"},
+ {"id":4,"val":"1,1,0,38"},
+ {"id":5,"val":"1,0,1,24"},
+ {"id":6,"val":"0,1,1,38"},
+ {"id":7,"val":"1,1,1,100"}
+ ],
+ "fromAllLine":3,
+ "toAllLine":5,
+ "freeOdds":3,
+ "spinsAllLine":[
+ {"id":1,"val":"10 40 400 4000"},
+ {"id":2,"val":"5 25 250 2500"},
+ {"id":3,"val":"20 200 2000"},
+ {"id":4,"val":"15 150 1000"},
+ {"id":5,"val":"10 100 500"},
+ {"id":6,"val":"5 30 200"},
+ {"id":7,"val":"5 30 200"},
+ {"id":8,"val":"4 20 150"},
+ {"id":9,"val":"4 20 150"},
+ {"id":10,"val":"2 12 100"},
+ {"id":11,"val":"2 12 100"},
+ {"id":12,"val":"1 2 10 100"}
+ ]
+
+}
\ No newline at end of file
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/log/20200423_12_08_18.log" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/log/20200423_12_08_18.log"
new file mode 100644
index 00000000..e9b4d063
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/log/20200423_12_08_18.log"
@@ -0,0 +1,2 @@
+2020/04/23 12:08:18 [release] Leaf 1.1.3 starting up
+2020/04/23 12:08:18 [fatal ] listen tcp: address Rufus: missing port in address
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/log/20200423_12_09_07.log" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/log/20200423_12_09_07.log"
new file mode 100644
index 00000000..eaa04bd5
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/log/20200423_12_09_07.log"
@@ -0,0 +1,2 @@
+2020/04/23 12:09:07 [release] Leaf 1.1.3 starting up
+2020/04/23 12:09:07 [fatal ] listen tcp 192.168.0.105:6001: bind: The requested address is not valid in its context.
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/log/20200423_12_09_44.log" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/log/20200423_12_09_44.log"
new file mode 100644
index 00000000..7a0d1618
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/log/20200423_12_09_44.log"
@@ -0,0 +1,2 @@
+2020/04/23 12:09:44 [release] Leaf 1.1.3 starting up
+2020/04/23 12:09:44 [fatal ] listen tcp 192.168.0.105:6001: bind: The requested address is not valid in its context.
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/log/20200423_12_10_18.log" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/log/20200423_12_10_18.log"
new file mode 100644
index 00000000..46686bd9
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/log/20200423_12_10_18.log"
@@ -0,0 +1,2 @@
+2020/04/23 12:10:18 [release] Leaf 1.1.3 starting up
+2020/04/23 12:10:18 [fatal ] listen tcp 192.168.0.105:6001: bind: The requested address is not valid in its context.
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/log/20200423_12_10_41.log" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/log/20200423_12_10_41.log"
new file mode 100644
index 00000000..d1261714
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/log/20200423_12_10_41.log"
@@ -0,0 +1,2 @@
+2020/04/23 12:10:41 [release] Leaf 1.1.3 starting up
+2020/04/23 12:10:41 [fatal ] listen tcp 192.168.0.105:6001: bind: The requested address is not valid in its context.
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/log/20200423_12_11_55.log" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/log/20200423_12_11_55.log"
new file mode 100644
index 00000000..8beacc88
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/log/20200423_12_11_55.log"
@@ -0,0 +1,2 @@
+2020/04/23 12:11:55 [release] Leaf 1.1.3 starting up
+2020/04/23 12:11:55 [fatal ] listen tcp: address ws://192.168.0.105:6001: too many colons in address
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/main.go" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/main.go"
new file mode 100644
index 00000000..5c11b4ed
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/main.go"
@@ -0,0 +1,36 @@
+package main
+
+import (
+ "youyugame/conf"
+ "youyugame/modules/MsgCenter"
+ "youyugame/modules/db"
+ "youyugame/modules/dsq"
+ "youyugame/modules/gate"
+ "youyugame/modules/login"
+ "youyugame/modules/slot"
+
+ "github.com/name5566/leaf"
+ lconf "github.com/name5566/leaf/conf"
+)
+
+func main() {
+
+ lconf.LogLevel = conf.Server.LogLevel
+ lconf.LogPath = conf.Server.LogPath
+ lconf.LogFlag = conf.LogFlag
+ lconf.ConsolePort = conf.Server.ConsolePort
+ lconf.ProfilePath = conf.Server.ProfilePath
+
+ leaf.Run(
+ // ---------------------------------------------------------------------
+ // 子游戏服务器
+ gate.Module,
+ login.Module, // 大厅服务器,也是长链接
+ slot.Module,
+ // ---------------------------------------------------------------------
+ MsgCenter.Module,
+ db.Module,
+ dsq.Module,
+ // ---------------------------------------------------------------------
+ )
+}
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/external.go" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/external.go"
new file mode 100644
index 00000000..2b8d7392
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/external.go"
@@ -0,0 +1,10 @@
+package MsgCenter
+
+import (
+ "youyugame/modules/MsgCenter/internal"
+)
+
+var (
+ Module = new(internal.Module)
+ ChanRPC = internal.ChanRPC
+)
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/internal/chanrpc.go" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/internal/chanrpc.go"
new file mode 100644
index 00000000..f136af3e
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/internal/chanrpc.go"
@@ -0,0 +1,20 @@
+package internal
+
+import (
+ "github.com/name5566/leaf/gate"
+)
+
+func init() {
+ skeleton.RegisterChanRPC("Msg_NewAgent", rpcNewAgent)
+ skeleton.RegisterChanRPC("Msg_CloseAgent", rpcCloseAgent)
+}
+
+func rpcNewAgent(args []interface{}) {
+ a := args[0].(gate.Agent)
+ _ = a
+}
+
+func rpcCloseAgent(args []interface{}) {
+ a := args[0].(gate.Agent)
+ _ = a
+}
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/internal/handler.go" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/internal/handler.go"
new file mode 100644
index 00000000..5bf0569c
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/internal/handler.go"
@@ -0,0 +1 @@
+package internal
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/internal/module.go" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/internal/module.go"
new file mode 100644
index 00000000..682fdf6c
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/internal/module.go"
@@ -0,0 +1,24 @@
+package internal
+
+import (
+ "youyugame/base"
+
+ "github.com/name5566/leaf/module"
+)
+
+var (
+ skeleton = base.NewSkeleton()
+ ChanRPC = skeleton.ChanRPCServer
+)
+
+type Module struct {
+ *module.Skeleton
+}
+
+func (m *Module) OnInit() {
+ m.Skeleton = skeleton
+}
+
+func (m *Module) OnDestroy() {
+
+}
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/msg/MsgCenterMsg.json.go" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/msg/MsgCenterMsg.json.go"
new file mode 100644
index 00000000..4cdd3857
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/msg/MsgCenterMsg.json.go"
@@ -0,0 +1,145 @@
+package MsgCenter_msg
+
+/*
+ 斗兽棋的所有协议
+
+*/
+import (
+ "youyugame/common/PlayerST"
+)
+
+// 主协议 10号
+const (
+ DSQGameINIT = iota // 初始化操作
+ C2G_Player_Login_Proto // C2G_Player_Login_Proto == 1 客户端到游戏服务器验证(http)
+ G2C_Player_Login_Proto // G2C_Player_Login_Proto == 2 服务器返回 是否成功(http)
+ C2G_Player_PiPeiGame_Proto // C2G_Player_PiPeiGame_Proto == 3 客户端到游戏服务器 玩家匹配
+ Broadcast_PiPeiGame_Proto // Broadcast_PiPeiGame_Proto == 4 服务器返回 是否成功,广播协议
+ C2G_Player_FanPai_Proto // C2G_Player_FanPai_Proto == 5 客户端到游戏服务器 玩家翻牌
+ Broadcast_Player_FanPai_Proto // Broadcast_Player_FanPai_Proto == 6 服务器返回 是否成功,翻盘数据
+ C2G_Player_XingZou_Proto // C2G_Player_XingZou_Proto == 7 客户端到游戏服务器 棋子“行走”,整个我们斗兽棋游戏最复杂的逻辑处理
+ Broadcast_Player_XingZou_Proto // Broadcast_Player_XingZou_Proto == 8 服务器返回
+ C2G_Player_RenShu_Proto // C2G_Player_RenShu_Proto == 9 客户端到游戏服务器 发送认输
+ Broadcast_GameOver_Proto // Broadcast_GameOver_Proto == 10 服务器返回 游戏结束的数据
+)
+
+// 斗兽棋的枚举
+const (
+ DSQINIT = iota // 初始化
+ Elephant // 大象 ==1
+ Lion // 狮子 ==2
+ Tiger // 老虎 ==3
+ Leopard // 豹子 ==4
+ Wolf // 狼 ==5
+ Dog // 狗 ==6
+ Cat // 猫 ==7
+ Mouse // 老鼠 ==8
+)
+
+// -----------------------------------------------------------------------------
+// C2G_Player_RenShu_Proto == 9 客户端到游戏服务器 发送认输
+type C2G_Player_RenShu struct {
+ Protocol int
+ Protocol2 int
+ OpenID string
+}
+
+/*
+// 结算的数据块
+type GameOver struct {
+ PlayerWin *Player_DSQ.PlayerData // 胜利的玩家
+ PlayerFail *Player_DSQ.PlayerData // 失败的玩家
+ GameName string // 游戏的名字
+ WinSeatID int // 胜利人的位置信息,0或者1的位置信息
+ Score int // 胜利人获取的分数信息
+ // ... ... 根据自己游戏类型设计结算的数据块
+}
+*/
+// Broadcast_GameOver_Proto == 10 服务器返回
+type Broadcast_GameOver struct {
+ Protocol int
+ Protocol2 int
+ GameOver *playerdata.GameOver // 计算的数据信息
+}
+
+// -----------------------------------------------------------------------------
+// C2G_Player_XingZou_Proto == 7 客户端到游戏服务器 棋子“行走”
+type C2G_Player_XingZou struct {
+ Protocol int
+ Protocol2 int
+ OpenID string
+ OldPos string
+ NewPos string
+}
+
+// Broadcast_Player_XingZou_Proto == 8 服务器返回
+type Broadcast_Player_XingZou struct {
+ Protocol int
+ Protocol2 int
+ OpenID string
+ OldPos string
+ NewPos string
+}
+
+// -----------------------------------------------------------------------------
+// C2G_Player_FanPai_Proto == 5 客户端到游戏服务器 玩家翻牌
+type C2G_Player_FanPai struct {
+ Protocol int
+ Protocol2 int
+ OpenID string // 告诉服务器,谁翻了牌
+ //SeatID string // 和openid字段 同样的效果 0 1
+ StrPos string // 位置信息
+ RoomID string // 告诉服务器,我是再那个房间下;非必须的?,通过玩家的唯一ID去获取到房间的信息
+}
+
+/*
+ [
+ [6 8 11 5]
+ [12 10 15 3]
+ [16 1 2 14]
+ [4 7 13 9]
+ ]
+*/
+// Broadcast_Player_FanPai_Proto == 6 服务器返回 是否成功,翻盘数据
+type Broadcast_Player_FanPai struct {
+ Protocol int
+ Protocol2 int
+ IChess int // 棋盘的数据 1-16的枚举值
+ OpenID string // 告诉服务器,谁翻了牌
+ StrPos string // 位置信息
+ SeatID int
+}
+
+// -----------------------------------------------------------------------------
+// C2G_Player_PiPeiGame_Proto == 3 客户端到游戏服务器 玩家匹配
+type C2G_Player_PiPeiGame struct {
+ Protocol int
+ Protocol2 int
+ OpenID string // 玩家的唯一ID
+}
+
+// Broadcast_PiPeiGame_Proto == 4 服务器返回 是否成功
+type Broadcast_PiPeiGame struct {
+ Protocol int
+ Protocol2 int
+ Bsucc bool // true :匹配成功, false:匹配失败
+ RoomData *playerdata.RoomData // 房间信息,房间的ID,匹配成功的玩家的数据,当前的牌桌上的数据(双方的信息,倒计时等)
+}
+
+// -----------------------------------------------------------------------------
+// G2C_Player_Login_Proto == 2 客户端到游戏服务器验证
+type G2C_Player_Login struct {
+ Protocol int
+ Protocol2 int
+ Bsucc bool
+ Player *playerdata.PlayerData
+}
+
+// C2G_Player_Login_Proto == 2 服务器返回 是否成功
+type C2G_Player_Login struct {
+ Protocol int
+ Protocol2 int
+ Tocken string // 登录验证码
+}
+
+// -----------------------------------------------------------------------------
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/msg/MsgCenterMsg.pb.go_" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/msg/MsgCenterMsg.pb.go_"
new file mode 100644
index 00000000..4ddc8dbf
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/msg/MsgCenterMsg.pb.go_"
@@ -0,0 +1,182 @@
+// Code generated by protoc-gen-go.
+// source: MsgCenterMsg.proto
+// DO NOT EDIT!
+
+/*
+Package MsgCenter_msg is a generated protocol buffer package.
+
+It is generated from these files:
+ MsgCenterMsg.proto
+
+It has these top-level messages:
+ UserEntryGameReq
+ UserYaZhuReq
+ UserExitGameReq
+ UserTockenReq
+ UserEntryGameResp
+ UserYaZhuResp
+ GameCaiJinResp
+ UserExitGameResp
+ UserTockenResp
+*/
+package MsgCenter_msg
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+
+// ----------------------------客户端请求--------------------------
+// 用户认证,id:1,玩家进入房间,带惟一ID
+type UserEntryGameReq struct {
+ Timestamp int64 `protobuf:"varint,1,opt,name=Timestamp" json:"Timestamp,omitempty"`
+ UserID uint64 `protobuf:"varint,2,opt,name=UserID" json:"UserID,omitempty"`
+ Token string `protobuf:"bytes,3,opt,name=Token" json:"Token,omitempty"`
+ Version int32 `protobuf:"varint,4,opt,name=Version" json:"Version,omitempty"`
+ IsReconnect bool `protobuf:"varint,5,opt,name=IsReconnect" json:"IsReconnect,omitempty"`
+ IP string `protobuf:"bytes,6,opt,name=IP" json:"IP,omitempty"`
+}
+
+func (m *UserEntryGameReq) Reset() { *m = UserEntryGameReq{} }
+func (m *UserEntryGameReq) String() string { return proto.CompactTextString(m) }
+func (*UserEntryGameReq) ProtoMessage() {}
+func (*UserEntryGameReq) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+
+// 玩家压注(开始游戏),id:2
+type UserYaZhuReq struct {
+ Timestamp int64 `protobuf:"varint,1,opt,name=Timestamp" json:"Timestamp,omitempty"`
+ UserID int32 `protobuf:"varint,2,opt,name=UserID" json:"UserID,omitempty"`
+ CoinNum int64 `protobuf:"varint,3,opt,name=CoinNum" json:"CoinNum,omitempty"`
+}
+
+func (m *UserYaZhuReq) Reset() { *m = UserYaZhuReq{} }
+func (m *UserYaZhuReq) String() string { return proto.CompactTextString(m) }
+func (*UserYaZhuReq) ProtoMessage() {}
+func (*UserYaZhuReq) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
+
+// 玩家退出,id:3 服务器需要清除玩家数据
+type UserExitGameReq struct {
+ Timestamp int64 `protobuf:"varint,1,opt,name=Timestamp" json:"Timestamp,omitempty"`
+ UserID int32 `protobuf:"varint,2,opt,name=UserID" json:"UserID,omitempty"`
+}
+
+func (m *UserExitGameReq) Reset() { *m = UserExitGameReq{} }
+func (m *UserExitGameReq) String() string { return proto.CompactTextString(m) }
+func (*UserExitGameReq) ProtoMessage() {}
+func (*UserExitGameReq) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
+
+// ----------------------------客户端请求sh--------------------------
+// 用户认证,id:1,玩家进入房间,带惟一ID
+type UserTockenReq struct {
+ Timestamp int64 `protobuf:"varint,1,opt,name=Timestamp" json:"Timestamp,omitempty"`
+ UserID uint64 `protobuf:"varint,2,opt,name=UserID" json:"UserID,omitempty"`
+ Token string `protobuf:"bytes,3,opt,name=Token" json:"Token,omitempty"`
+}
+
+func (m *UserTockenReq) Reset() { *m = UserTockenReq{} }
+func (m *UserTockenReq) String() string { return proto.CompactTextString(m) }
+func (*UserTockenReq) ProtoMessage() {}
+func (*UserTockenReq) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
+
+// --------------------------服务端推送------------------------------
+// 玩家进入游戏,id=101
+type UserEntryGameResp struct {
+ Bsucc bool `protobuf:"varint,1,opt,name=Bsucc" json:"Bsucc,omitempty"`
+}
+
+func (m *UserEntryGameResp) Reset() { *m = UserEntryGameResp{} }
+func (m *UserEntryGameResp) String() string { return proto.CompactTextString(m) }
+func (*UserEntryGameResp) ProtoMessage() {}
+func (*UserEntryGameResp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
+
+// 玩家压注(开始游戏):102
+type UserYaZhuResp struct {
+ Timestamp int64 `protobuf:"varint,1,opt,name=Timestamp" json:"Timestamp,omitempty"`
+ Icon []int32 `protobuf:"varint,2,rep,packed,name=Icon" json:"Icon,omitempty"`
+ BQuanPan bool `protobuf:"varint,3,opt,name=BQuanPan" json:"BQuanPan,omitempty"`
+ CoinNum int64 `protobuf:"varint,4,opt,name=CoinNum" json:"CoinNum,omitempty"`
+}
+
+func (m *UserYaZhuResp) Reset() { *m = UserYaZhuResp{} }
+func (m *UserYaZhuResp) String() string { return proto.CompactTextString(m) }
+func (*UserYaZhuResp) ProtoMessage() {}
+func (*UserYaZhuResp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
+
+// 推送彩金:103
+type GameCaiJinResp struct {
+ Timestamp int64 `protobuf:"varint,1,opt,name=Timestamp" json:"Timestamp,omitempty"`
+}
+
+func (m *GameCaiJinResp) Reset() { *m = GameCaiJinResp{} }
+func (m *GameCaiJinResp) String() string { return proto.CompactTextString(m) }
+func (*GameCaiJinResp) ProtoMessage() {}
+func (*GameCaiJinResp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
+
+// 退出:104
+type UserExitGameResp struct {
+ Bsucc bool `protobuf:"varint,1,opt,name=Bsucc" json:"Bsucc,omitempty"`
+}
+
+func (m *UserExitGameResp) Reset() { *m = UserExitGameResp{} }
+func (m *UserExitGameResp) String() string { return proto.CompactTextString(m) }
+func (*UserExitGameResp) ProtoMessage() {}
+func (*UserExitGameResp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
+
+// 玩家进入游戏,id=105
+type UserTockenResp struct {
+ Bsucc bool `protobuf:"varint,1,opt,name=Bsucc" json:"Bsucc,omitempty"`
+}
+
+func (m *UserTockenResp) Reset() { *m = UserTockenResp{} }
+func (m *UserTockenResp) String() string { return proto.CompactTextString(m) }
+func (*UserTockenResp) ProtoMessage() {}
+func (*UserTockenResp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }
+
+func init() {
+ proto.RegisterType((*UserEntryGameReq)(nil), "MsgCenter_msg.UserEntryGameReq")
+ proto.RegisterType((*UserYaZhuReq)(nil), "MsgCenter_msg.UserYaZhuReq")
+ proto.RegisterType((*UserExitGameReq)(nil), "MsgCenter_msg.UserExitGameReq")
+ proto.RegisterType((*UserTockenReq)(nil), "MsgCenter_msg.UserTockenReq")
+ proto.RegisterType((*UserEntryGameResp)(nil), "MsgCenter_msg.UserEntryGameResp")
+ proto.RegisterType((*UserYaZhuResp)(nil), "MsgCenter_msg.UserYaZhuResp")
+ proto.RegisterType((*GameCaiJinResp)(nil), "MsgCenter_msg.GameCaiJinResp")
+ proto.RegisterType((*UserExitGameResp)(nil), "MsgCenter_msg.UserExitGameResp")
+ proto.RegisterType((*UserTockenResp)(nil), "MsgCenter_msg.UserTockenResp")
+}
+
+func init() { proto.RegisterFile("MsgCenterMsg.proto", fileDescriptor0) }
+
+var fileDescriptor0 = []byte{
+ // 336 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x92, 0xd1, 0x4a, 0xfb, 0x30,
+ 0x14, 0xc6, 0xd9, 0xda, 0xee, 0xdf, 0x9d, 0xbf, 0x9b, 0x1a, 0x44, 0x82, 0x78, 0x31, 0x72, 0x21,
+ 0xf3, 0x66, 0x37, 0xbe, 0xc1, 0xa6, 0x8c, 0x0a, 0xca, 0x0c, 0x53, 0x50, 0x41, 0xa9, 0x25, 0xcc,
+ 0x20, 0x4d, 0x66, 0x93, 0xa2, 0xbe, 0x92, 0x4f, 0xe9, 0x69, 0xba, 0xd5, 0x2a, 0x4c, 0x51, 0xbc,
+ 0x3b, 0xdf, 0x97, 0xd3, 0x9c, 0x2f, 0xbf, 0x1e, 0x20, 0x27, 0x66, 0x36, 0x12, 0xca, 0x8a, 0x0c,
+ 0x8b, 0xc1, 0x3c, 0xd3, 0x56, 0x93, 0x4e, 0xe5, 0xdd, 0xa6, 0x66, 0xc6, 0x5e, 0x1b, 0xb0, 0x71,
+ 0x6e, 0x44, 0x76, 0xa4, 0x6c, 0xf6, 0x32, 0x8e, 0x53, 0xc1, 0xc5, 0x23, 0xd9, 0x85, 0xf6, 0x54,
+ 0xa6, 0xc2, 0xd8, 0x38, 0x9d, 0xd3, 0x46, 0xaf, 0xd1, 0xf7, 0xf8, 0xbb, 0x41, 0xb6, 0xa1, 0x55,
+ 0x7c, 0x11, 0x1d, 0xd2, 0x26, 0x1e, 0xf9, 0x7c, 0xa1, 0xc8, 0x16, 0x04, 0x53, 0xfd, 0x20, 0x14,
+ 0xf5, 0xd0, 0x6e, 0xf3, 0x52, 0x10, 0x0a, 0xff, 0x2e, 0x44, 0x66, 0xa4, 0x56, 0xd4, 0x47, 0x3f,
+ 0xe0, 0x4b, 0x49, 0x7a, 0xf0, 0x3f, 0x32, 0x5c, 0x24, 0x5a, 0x29, 0x91, 0x58, 0x1a, 0xe0, 0x69,
+ 0xc8, 0xeb, 0x16, 0xe9, 0x42, 0x33, 0x9a, 0xd0, 0x96, 0xbb, 0x0e, 0x2b, 0x76, 0x03, 0x6b, 0xc5,
+ 0xac, 0xcb, 0xf8, 0xea, 0x3e, 0xff, 0x69, 0xce, 0xa0, 0xca, 0x89, 0x89, 0x46, 0x5a, 0xaa, 0xd3,
+ 0x3c, 0x75, 0x49, 0x3d, 0xbe, 0x94, 0x6c, 0x0c, 0xeb, 0x8e, 0xc5, 0xb3, 0xb4, 0xbf, 0x41, 0x51,
+ 0x8d, 0x60, 0xd7, 0xd0, 0x29, 0xaa, 0xa9, 0x4e, 0x10, 0xc1, 0x1f, 0x13, 0x65, 0xfb, 0xb0, 0xf9,
+ 0xe9, 0x8f, 0x99, 0x79, 0xd1, 0x3a, 0x34, 0x79, 0x92, 0xb8, 0xcb, 0x43, 0x5e, 0x0a, 0xf6, 0x54,
+ 0xe6, 0x58, 0x00, 0xc3, 0xb6, 0xaf, 0x73, 0x10, 0xf0, 0x23, 0x64, 0x8f, 0x29, 0x3c, 0x7c, 0x8c,
+ 0xab, 0xc9, 0x0e, 0x84, 0xc3, 0xb3, 0x3c, 0x56, 0x93, 0xb8, 0x8c, 0x11, 0xf2, 0x4a, 0xd7, 0x49,
+ 0xfa, 0x1f, 0x49, 0x0e, 0xa0, 0x5b, 0x44, 0x1b, 0xc5, 0xf2, 0x58, 0xaa, 0xef, 0x27, 0xb3, 0xfe,
+ 0x62, 0x0b, 0x2b, 0xf2, 0x2b, 0x9f, 0xb4, 0x07, 0xdd, 0x3a, 0xda, 0x55, 0x7d, 0x77, 0x2d, 0xb7,
+ 0xee, 0x07, 0x6f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x6c, 0xff, 0xd9, 0x94, 0x04, 0x03, 0x00, 0x00,
+}
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/msg/MsgCenterMsg.proto" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/msg/MsgCenterMsg.proto"
new file mode 100644
index 00000000..e7cc3df3
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/msg/MsgCenterMsg.proto"
@@ -0,0 +1,67 @@
+syntax = "proto3";
+package MsgCenter_msg;
+
+//消息后缀为ST,表示一种状态;为EV表示用户触发的某种事件;为NT表示服务端生成的通知
+//消息后缀为Req,表示客户端向服务端发送的请求
+
+//----------------------------客户端请求--------------------------
+//用户认证,id:1,玩家进入房间,带惟一ID
+message UserEntryGameReq {
+ int64 Timestamp = 1;
+ uint64 UserID = 2;
+ string Token = 3;
+ int32 Version = 4; // 客户端版本,现在传0就行
+ bool IsReconnect = 5; //如果用户是点击返回游戏进来的,会将上一局游戏结果(108)推送过去,然后用户要点击继续游戏才会变成准备状态;
+ string IP = 6; //客户端上传ip
+}
+
+//玩家压注(开始游戏),id:2
+message UserYaZhuReq {
+ int64 Timestamp = 1;
+ int32 UserID = 2; // UID信息
+ int64 CoinNum = 3; // 压注的总金额
+}
+
+//玩家退出,id:3 服务器需要清除玩家数据
+message UserExitGameReq {
+ int64 Timestamp = 1;
+ int32 UserID = 2; // UID信息,服务器清除玩家数据
+}
+
+//----------------------------客户端请求sh--------------------------
+//用户认证,id:1,玩家进入房间,带惟一ID
+message UserTockenReq {
+ int64 Timestamp = 1;
+ uint64 UserID = 2;
+ string Token = 3;
+}
+
+
+//--------------------------服务端推送------------------------------
+// 玩家进入游戏,id=101
+message UserEntryGameResp {
+ bool Bsucc = 1 ; // 返回进入房间是否成功
+}
+
+//玩家压注(开始游戏):102
+message UserYaZhuResp {
+ int64 Timestamp = 1; // 当前时间戳
+ repeated int32 Icon = 2; // 棋子
+ bool BQuanPan = 3; // 是否是全盘奖
+ int64 CoinNum = 4; // 中奖金额
+}
+
+//推送彩金:103
+message GameCaiJinResp {
+ int64 Timestamp = 1; // 当前时间戳
+}
+
+//退出:104
+message UserExitGameResp {
+ bool Bsucc = 1; // 返回进入房间是否成功,可以不发送
+}
+
+// 玩家进入游戏,id=105
+message UserTockenResp {
+ bool Bsucc = 1 ; // 返回进入房间是否成功
+}
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/msg/MsgCenter_msg.go" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/msg/MsgCenter_msg.go"
new file mode 100644
index 00000000..32dd4ce0
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/msg/MsgCenter_msg.go"
@@ -0,0 +1,16 @@
+package MsgCenter_msg
+
+import (
+ "github.com/name5566/leaf/network/json"
+ _ "github.com/name5566/leaf/network/protobuf"
+)
+
+var Processor = json.NewProcessor() // json
+//var Processor = protobuf.NewProcessor() // protobuf
+
+/*
+ 所有的消息入口:
+*/
+func init() {
+ Processor.Register(&C2G_Player_PiPeiGame{}) // 匹配协议
+}
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/MsgCenterMsg.proto" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/MsgCenterMsg.proto"
new file mode 100644
index 00000000..e7cc3df3
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/MsgCenterMsg.proto"
@@ -0,0 +1,67 @@
+syntax = "proto3";
+package MsgCenter_msg;
+
+//消息后缀为ST,表示一种状态;为EV表示用户触发的某种事件;为NT表示服务端生成的通知
+//消息后缀为Req,表示客户端向服务端发送的请求
+
+//----------------------------客户端请求--------------------------
+//用户认证,id:1,玩家进入房间,带惟一ID
+message UserEntryGameReq {
+ int64 Timestamp = 1;
+ uint64 UserID = 2;
+ string Token = 3;
+ int32 Version = 4; // 客户端版本,现在传0就行
+ bool IsReconnect = 5; //如果用户是点击返回游戏进来的,会将上一局游戏结果(108)推送过去,然后用户要点击继续游戏才会变成准备状态;
+ string IP = 6; //客户端上传ip
+}
+
+//玩家压注(开始游戏),id:2
+message UserYaZhuReq {
+ int64 Timestamp = 1;
+ int32 UserID = 2; // UID信息
+ int64 CoinNum = 3; // 压注的总金额
+}
+
+//玩家退出,id:3 服务器需要清除玩家数据
+message UserExitGameReq {
+ int64 Timestamp = 1;
+ int32 UserID = 2; // UID信息,服务器清除玩家数据
+}
+
+//----------------------------客户端请求sh--------------------------
+//用户认证,id:1,玩家进入房间,带惟一ID
+message UserTockenReq {
+ int64 Timestamp = 1;
+ uint64 UserID = 2;
+ string Token = 3;
+}
+
+
+//--------------------------服务端推送------------------------------
+// 玩家进入游戏,id=101
+message UserEntryGameResp {
+ bool Bsucc = 1 ; // 返回进入房间是否成功
+}
+
+//玩家压注(开始游戏):102
+message UserYaZhuResp {
+ int64 Timestamp = 1; // 当前时间戳
+ repeated int32 Icon = 2; // 棋子
+ bool BQuanPan = 3; // 是否是全盘奖
+ int64 CoinNum = 4; // 中奖金额
+}
+
+//推送彩金:103
+message GameCaiJinResp {
+ int64 Timestamp = 1; // 当前时间戳
+}
+
+//退出:104
+message UserExitGameResp {
+ bool Bsucc = 1; // 返回进入房间是否成功,可以不发送
+}
+
+// 玩家进入游戏,id=105
+message UserTockenResp {
+ bool Bsucc = 1 ; // 返回进入房间是否成功
+}
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/db_msg.proto" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/db_msg.proto"
new file mode 100644
index 00000000..e7af4b24
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/db_msg.proto"
@@ -0,0 +1,19 @@
+syntax = "proto3";
+package db_msg;
+
+
+//----------------------------客户端请求sh--------------------------
+//用户认证,id:1,玩家进入房间,带惟一ID
+message UserTockenReq {
+ int64 Timestamp = 1;
+ uint64 UserID = 2;
+ string Token = 3;
+}
+
+
+
+//--------------------------服务端推送------------------------------
+// 玩家进入游戏,id=101
+message UserTockenResp {
+ bool Bsucc = 1 ; // 返回进入房间是否成功
+}
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/google/protobuf/any.cc" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/google/protobuf/any.cc"
new file mode 100644
index 00000000..a79214b7
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/google/protobuf/any.cc"
@@ -0,0 +1,81 @@
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc. All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include
+
+#include
+#include
+#include
+#include
+
+#include
+
+namespace google {
+namespace protobuf {
+namespace internal {
+
+void AnyMetadata::PackFrom(const Message& message) {
+ PackFrom(message, kTypeGoogleApisComPrefix);
+}
+
+void AnyMetadata::PackFrom(const Message& message,
+ const std::string& type_url_prefix) {
+ type_url_->SetNoArena(
+ &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString(),
+ GetTypeUrl(message.GetDescriptor()->full_name(), type_url_prefix));
+ message.SerializeToString(value_->MutableNoArena(
+ &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()));
+}
+
+bool AnyMetadata::UnpackTo(Message* message) const {
+ if (!InternalIs(message->GetDescriptor()->full_name())) {
+ return false;
+ }
+ return message->ParseFromString(value_->GetNoArena());
+}
+
+bool GetAnyFieldDescriptors(const Message& message,
+ const FieldDescriptor** type_url_field,
+ const FieldDescriptor** value_field) {
+ const Descriptor* descriptor = message.GetDescriptor();
+ if (descriptor->full_name() != kAnyFullTypeName) {
+ return false;
+ }
+ *type_url_field = descriptor->FindFieldByNumber(1);
+ *value_field = descriptor->FindFieldByNumber(2);
+ return (*type_url_field != NULL &&
+ (*type_url_field)->type() == FieldDescriptor::TYPE_STRING &&
+ *value_field != NULL &&
+ (*value_field)->type() == FieldDescriptor::TYPE_BYTES);
+}
+
+} // namespace internal
+} // namespace protobuf
+} // namespace google
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/google/protobuf/any.h" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/google/protobuf/any.h"
new file mode 100644
index 00000000..59dd50cb
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/google/protobuf/any.h"
@@ -0,0 +1,149 @@
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc. All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef GOOGLE_PROTOBUF_ANY_H__
+#define GOOGLE_PROTOBUF_ANY_H__
+
+#include
+
+#include
+#include
+#include
+
+#include
+
+namespace google {
+namespace protobuf {
+
+class FieldDescriptor;
+class Message;
+
+namespace internal {
+
+extern const char kAnyFullTypeName[]; // "google.protobuf.Any".
+extern const char kTypeGoogleApisComPrefix[]; // "type.googleapis.com/".
+extern const char kTypeGoogleProdComPrefix[]; // "type.googleprod.com/".
+
+std::string GetTypeUrl(StringPiece message_name,
+ StringPiece type_url_prefix);
+
+// Helper class used to implement google::protobuf::Any.
+class PROTOBUF_EXPORT AnyMetadata {
+ typedef ArenaStringPtr UrlType;
+ typedef ArenaStringPtr ValueType;
+ public:
+ // AnyMetadata does not take ownership of "type_url" and "value".
+ AnyMetadata(UrlType* type_url, ValueType* value);
+
+ // Packs a message using the default type URL prefix: "type.googleapis.com".
+ // The resulted type URL will be "type.googleapis.com/".
+ template
+ void PackFrom(const T& message) {
+ InternalPackFrom(message, kTypeGoogleApisComPrefix, T::FullMessageName());
+ }
+
+ void PackFrom(const Message& message);
+
+ // Packs a message using the given type URL prefix. The type URL will be
+ // constructed by concatenating the message type's full name to the prefix
+ // with an optional "/" separator if the prefix doesn't already end with "/".
+ // For example, both PackFrom(message, "type.googleapis.com") and
+ // PackFrom(message, "type.googleapis.com/") yield the same result type
+ // URL: "type.googleapis.com/".
+ template
+ void PackFrom(const T& message, StringPiece type_url_prefix) {
+ InternalPackFrom(message, type_url_prefix, T::FullMessageName());
+ }
+
+ void PackFrom(const Message& message, const std::string& type_url_prefix);
+
+ // Unpacks the payload into the given message. Returns false if the message's
+ // type doesn't match the type specified in the type URL (i.e., the full
+ // name after the last "/" of the type URL doesn't match the message's actual
+ // full name) or parsing the payload has failed.
+ template
+ bool UnpackTo(T* message) const {
+ return InternalUnpackTo(T::FullMessageName(), message);
+ }
+
+ bool UnpackTo(Message* message) const;
+
+ // Checks whether the type specified in the type URL matches the given type.
+ // A type is considered matching if its full name matches the full name after
+ // the last "/" in the type URL.
+ template
+ bool Is() const {
+ return InternalIs(T::FullMessageName());
+ }
+
+ private:
+ void InternalPackFrom(const MessageLite& message,
+ StringPiece type_url_prefix,
+ StringPiece type_name);
+ bool InternalUnpackTo(StringPiece type_name,
+ MessageLite* message) const;
+ bool InternalIs(StringPiece type_name) const;
+
+ UrlType* type_url_;
+ ValueType* value_;
+
+ GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(AnyMetadata);
+};
+
+// Get the proto type name from Any::type_url value. For example, passing
+// "type.googleapis.com/rpc.QueryOrigin" will return "rpc.QueryOrigin" in
+// *full_type_name. Returns false if the type_url does not have a "/"
+// in the type url separating the full type name.
+//
+// NOTE: this function is available publicly as:
+// google::protobuf::Any() // static method on the generated message type.
+bool ParseAnyTypeUrl(const std::string& type_url, std::string* full_type_name);
+
+// Get the proto type name and prefix from Any::type_url value. For example,
+// passing "type.googleapis.com/rpc.QueryOrigin" will return
+// "type.googleapis.com/" in *url_prefix and "rpc.QueryOrigin" in
+// *full_type_name. Returns false if the type_url does not have a "/" in the
+// type url separating the full type name.
+bool ParseAnyTypeUrl(const std::string& type_url, std::string* url_prefix,
+ std::string* full_type_name);
+
+// See if message is of type google.protobuf.Any, if so, return the descriptors
+// for "type_url" and "value" fields.
+bool GetAnyFieldDescriptors(const Message& message,
+ const FieldDescriptor** type_url_field,
+ const FieldDescriptor** value_field);
+
+} // namespace internal
+} // namespace protobuf
+} // namespace google
+
+#include
+
+#endif // GOOGLE_PROTOBUF_ANY_H__
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/google/protobuf/any.pb.cc" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/google/protobuf/any.pb.cc"
new file mode 100644
index 00000000..5d7ea1cc
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/google/protobuf/any.pb.cc"
@@ -0,0 +1,340 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: google/protobuf/any.proto
+
+#include
+
+#include
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+// @@protoc_insertion_point(includes)
+#include
+PROTOBUF_NAMESPACE_OPEN
+class AnyDefaultTypeInternal {
+ public:
+ ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance;
+} _Any_default_instance_;
+PROTOBUF_NAMESPACE_CLOSE
+static void InitDefaultsscc_info_Any_google_2fprotobuf_2fany_2eproto() {
+ GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+ {
+ void* ptr = &PROTOBUF_NAMESPACE_ID::_Any_default_instance_;
+ new (ptr) PROTOBUF_NAMESPACE_ID::Any();
+ ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
+ }
+ PROTOBUF_NAMESPACE_ID::Any::InitAsDefaultInstance();
+}
+
+PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_Any_google_2fprotobuf_2fany_2eproto =
+ {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_Any_google_2fprotobuf_2fany_2eproto}, {}};
+
+static ::PROTOBUF_NAMESPACE_ID::Metadata file_level_metadata_google_2fprotobuf_2fany_2eproto[1];
+static constexpr ::PROTOBUF_NAMESPACE_ID::EnumDescriptor const** file_level_enum_descriptors_google_2fprotobuf_2fany_2eproto = nullptr;
+static constexpr ::PROTOBUF_NAMESPACE_ID::ServiceDescriptor const** file_level_service_descriptors_google_2fprotobuf_2fany_2eproto = nullptr;
+
+const ::PROTOBUF_NAMESPACE_ID::uint32 TableStruct_google_2fprotobuf_2fany_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(PROTOBUF_NAMESPACE_ID::Any, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ PROTOBUF_FIELD_OFFSET(PROTOBUF_NAMESPACE_ID::Any, type_url_),
+ PROTOBUF_FIELD_OFFSET(PROTOBUF_NAMESPACE_ID::Any, value_),
+};
+static const ::PROTOBUF_NAMESPACE_ID::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+ { 0, -1, sizeof(PROTOBUF_NAMESPACE_ID::Any)},
+};
+
+static ::PROTOBUF_NAMESPACE_ID::Message const * const file_default_instances[] = {
+ reinterpret_cast(&PROTOBUF_NAMESPACE_ID::_Any_default_instance_),
+};
+
+const char descriptor_table_protodef_google_2fprotobuf_2fany_2eproto[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) =
+ "\n\031google/protobuf/any.proto\022\017google.prot"
+ "obuf\"&\n\003Any\022\020\n\010type_url\030\001 \001(\t\022\r\n\005value\030\002"
+ " \001(\014Bo\n\023com.google.protobufB\010AnyProtoP\001Z"
+ "%github.com/golang/protobuf/ptypes/any\242\002"
+ "\003GPB\252\002\036Google.Protobuf.WellKnownTypesb\006p"
+ "roto3"
+ ;
+static const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable*const descriptor_table_google_2fprotobuf_2fany_2eproto_deps[1] = {
+};
+static ::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase*const descriptor_table_google_2fprotobuf_2fany_2eproto_sccs[1] = {
+ &scc_info_Any_google_2fprotobuf_2fany_2eproto.base,
+};
+static ::PROTOBUF_NAMESPACE_ID::internal::once_flag descriptor_table_google_2fprotobuf_2fany_2eproto_once;
+static bool descriptor_table_google_2fprotobuf_2fany_2eproto_initialized = false;
+const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_google_2fprotobuf_2fany_2eproto = {
+ &descriptor_table_google_2fprotobuf_2fany_2eproto_initialized, descriptor_table_protodef_google_2fprotobuf_2fany_2eproto, "google/protobuf/any.proto", 205,
+ &descriptor_table_google_2fprotobuf_2fany_2eproto_once, descriptor_table_google_2fprotobuf_2fany_2eproto_sccs, descriptor_table_google_2fprotobuf_2fany_2eproto_deps, 1, 0,
+ schemas, file_default_instances, TableStruct_google_2fprotobuf_2fany_2eproto::offsets,
+ file_level_metadata_google_2fprotobuf_2fany_2eproto, 1, file_level_enum_descriptors_google_2fprotobuf_2fany_2eproto, file_level_service_descriptors_google_2fprotobuf_2fany_2eproto,
+};
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_google_2fprotobuf_2fany_2eproto = (static_cast(::PROTOBUF_NAMESPACE_ID::internal::AddDescriptors(&descriptor_table_google_2fprotobuf_2fany_2eproto)), true);
+PROTOBUF_NAMESPACE_OPEN
+
+// ===================================================================
+
+void Any::InitAsDefaultInstance() {
+}
+bool Any::GetAnyFieldDescriptors(
+ const ::PROTOBUF_NAMESPACE_ID::Message& message,
+ const ::PROTOBUF_NAMESPACE_ID::FieldDescriptor** type_url_field,
+ const ::PROTOBUF_NAMESPACE_ID::FieldDescriptor** value_field) {
+ return ::PROTOBUF_NAMESPACE_ID::internal::GetAnyFieldDescriptors(
+ message, type_url_field, value_field);
+}
+bool Any::ParseAnyTypeUrl(const string& type_url,
+ std::string* full_type_name) {
+ return ::PROTOBUF_NAMESPACE_ID::internal::ParseAnyTypeUrl(type_url,
+ full_type_name);
+}
+
+class Any::_Internal {
+ public:
+};
+
+Any::Any()
+ : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr), _any_metadata_(&type_url_, &value_) {
+ SharedCtor();
+ // @@protoc_insertion_point(constructor:google.protobuf.Any)
+}
+Any::Any(const Any& from)
+ : ::PROTOBUF_NAMESPACE_ID::Message(),
+ _internal_metadata_(nullptr),
+ _any_metadata_(&type_url_, &value_) {
+ _internal_metadata_.MergeFrom(from._internal_metadata_);
+ type_url_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+ if (!from._internal_type_url().empty()) {
+ type_url_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.type_url_);
+ }
+ value_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+ if (!from._internal_value().empty()) {
+ value_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.value_);
+ }
+ // @@protoc_insertion_point(copy_constructor:google.protobuf.Any)
+}
+
+void Any::SharedCtor() {
+ ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_Any_google_2fprotobuf_2fany_2eproto.base);
+ type_url_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+ value_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+}
+
+Any::~Any() {
+ // @@protoc_insertion_point(destructor:google.protobuf.Any)
+ SharedDtor();
+}
+
+void Any::SharedDtor() {
+ type_url_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+ value_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+}
+
+void Any::SetCachedSize(int size) const {
+ _cached_size_.Set(size);
+}
+const Any& Any::default_instance() {
+ ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_Any_google_2fprotobuf_2fany_2eproto.base);
+ return *internal_default_instance();
+}
+
+
+void Any::Clear() {
+// @@protoc_insertion_point(message_clear_start:google.protobuf.Any)
+ ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
+ // Prevent compiler warnings about cached_has_bits being unused
+ (void) cached_has_bits;
+
+ type_url_.ClearToEmptyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+ value_.ClearToEmptyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+ _internal_metadata_.Clear();
+}
+
+const char* Any::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
+#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
+ while (!ctx->Done(&ptr)) {
+ ::PROTOBUF_NAMESPACE_ID::uint32 tag;
+ ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
+ CHK_(ptr);
+ switch (tag >> 3) {
+ // string type_url = 1;
+ case 1:
+ if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
+ auto str = _internal_mutable_type_url();
+ ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
+ CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "google.protobuf.Any.type_url"));
+ CHK_(ptr);
+ } else goto handle_unusual;
+ continue;
+ // bytes value = 2;
+ case 2:
+ if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) {
+ auto str = _internal_mutable_value();
+ ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
+ CHK_(ptr);
+ } else goto handle_unusual;
+ continue;
+ default: {
+ handle_unusual:
+ if ((tag & 7) == 4 || tag == 0) {
+ ctx->SetLastTag(tag);
+ goto success;
+ }
+ ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
+ CHK_(ptr != nullptr);
+ continue;
+ }
+ } // switch
+ } // while
+success:
+ return ptr;
+failure:
+ ptr = nullptr;
+ goto success;
+#undef CHK_
+}
+
+::PROTOBUF_NAMESPACE_ID::uint8* Any::_InternalSerialize(
+ ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
+ // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.Any)
+ ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
+ (void) cached_has_bits;
+
+ // string type_url = 1;
+ if (this->type_url().size() > 0) {
+ ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
+ this->_internal_type_url().data(), static_cast(this->_internal_type_url().length()),
+ ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
+ "google.protobuf.Any.type_url");
+ target = stream->WriteStringMaybeAliased(
+ 1, this->_internal_type_url(), target);
+ }
+
+ // bytes value = 2;
+ if (this->value().size() > 0) {
+ target = stream->WriteBytesMaybeAliased(
+ 2, this->_internal_value(), target);
+ }
+
+ if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
+ target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
+ _internal_metadata_.unknown_fields(), target, stream);
+ }
+ // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.Any)
+ return target;
+}
+
+size_t Any::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:google.protobuf.Any)
+ size_t total_size = 0;
+
+ ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
+ // Prevent compiler warnings about cached_has_bits being unused
+ (void) cached_has_bits;
+
+ // string type_url = 1;
+ if (this->type_url().size() > 0) {
+ total_size += 1 +
+ ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
+ this->_internal_type_url());
+ }
+
+ // bytes value = 2;
+ if (this->value().size() > 0) {
+ total_size += 1 +
+ ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::BytesSize(
+ this->_internal_value());
+ }
+
+ if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
+ return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
+ _internal_metadata_, total_size, &_cached_size_);
+ }
+ int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
+ SetCachedSize(cached_size);
+ return total_size;
+}
+
+void Any::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:google.protobuf.Any)
+ GOOGLE_DCHECK_NE(&from, this);
+ const Any* source =
+ ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated(
+ &from);
+ if (source == nullptr) {
+ // @@protoc_insertion_point(generalized_merge_from_cast_fail:google.protobuf.Any)
+ ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
+ } else {
+ // @@protoc_insertion_point(generalized_merge_from_cast_success:google.protobuf.Any)
+ MergeFrom(*source);
+ }
+}
+
+void Any::MergeFrom(const Any& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.Any)
+ GOOGLE_DCHECK_NE(&from, this);
+ _internal_metadata_.MergeFrom(from._internal_metadata_);
+ ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
+ (void) cached_has_bits;
+
+ if (from.type_url().size() > 0) {
+
+ type_url_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.type_url_);
+ }
+ if (from.value().size() > 0) {
+
+ value_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.value_);
+ }
+}
+
+void Any::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:google.protobuf.Any)
+ if (&from == this) return;
+ Clear();
+ MergeFrom(from);
+}
+
+void Any::CopyFrom(const Any& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.Any)
+ if (&from == this) return;
+ Clear();
+ MergeFrom(from);
+}
+
+bool Any::IsInitialized() const {
+ return true;
+}
+
+void Any::InternalSwap(Any* other) {
+ using std::swap;
+ _internal_metadata_.Swap(&other->_internal_metadata_);
+ type_url_.Swap(&other->type_url_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
+ GetArenaNoVirtual());
+ value_.Swap(&other->value_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
+ GetArenaNoVirtual());
+}
+
+::PROTOBUF_NAMESPACE_ID::Metadata Any::GetMetadata() const {
+ return GetMetadataStatic();
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+PROTOBUF_NAMESPACE_CLOSE
+PROTOBUF_NAMESPACE_OPEN
+template<> PROTOBUF_NOINLINE PROTOBUF_NAMESPACE_ID::Any* Arena::CreateMaybeMessage< PROTOBUF_NAMESPACE_ID::Any >(Arena* arena) {
+ return Arena::CreateInternal< PROTOBUF_NAMESPACE_ID::Any >(arena);
+}
+PROTOBUF_NAMESPACE_CLOSE
+
+// @@protoc_insertion_point(global_scope)
+#include
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/google/protobuf/any.pb.h" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/google/protobuf/any.pb.h"
new file mode 100644
index 00000000..f551818e
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/google/protobuf/any.pb.h"
@@ -0,0 +1,396 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: google/protobuf/any.proto
+
+#ifndef GOOGLE_PROTOBUF_INCLUDED_google_2fprotobuf_2fany_2eproto
+#define GOOGLE_PROTOBUF_INCLUDED_google_2fprotobuf_2fany_2eproto
+
+#include
+#include
+
+#include
+#if PROTOBUF_VERSION < 3011000
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3011002 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include // IWYU pragma: export
+#include // IWYU pragma: export
+#include
+// @@protoc_insertion_point(includes)
+#include
+#define PROTOBUF_INTERNAL_EXPORT_google_2fprotobuf_2fany_2eproto PROTOBUF_EXPORT
+PROTOBUF_NAMESPACE_OPEN
+namespace internal {
+class AnyMetadata;
+} // namespace internal
+PROTOBUF_NAMESPACE_CLOSE
+
+// Internal implementation detail -- do not use these members.
+struct PROTOBUF_EXPORT TableStruct_google_2fprotobuf_2fany_2eproto {
+ static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTableField entries[]
+ PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+ static const ::PROTOBUF_NAMESPACE_ID::internal::AuxillaryParseTableField aux[]
+ PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+ static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTable schema[1]
+ PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+ static const ::PROTOBUF_NAMESPACE_ID::internal::FieldMetadata field_metadata[];
+ static const ::PROTOBUF_NAMESPACE_ID::internal::SerializationTable serialization_table[];
+ static const ::PROTOBUF_NAMESPACE_ID::uint32 offsets[];
+};
+extern PROTOBUF_EXPORT const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_google_2fprotobuf_2fany_2eproto;
+PROTOBUF_NAMESPACE_OPEN
+class Any;
+class AnyDefaultTypeInternal;
+PROTOBUF_EXPORT extern AnyDefaultTypeInternal _Any_default_instance_;
+PROTOBUF_NAMESPACE_CLOSE
+PROTOBUF_NAMESPACE_OPEN
+template<> PROTOBUF_EXPORT PROTOBUF_NAMESPACE_ID::Any* Arena::CreateMaybeMessage(Arena*);
+PROTOBUF_NAMESPACE_CLOSE
+PROTOBUF_NAMESPACE_OPEN
+
+// ===================================================================
+
+class PROTOBUF_EXPORT Any :
+ public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.Any) */ {
+ public:
+ Any();
+ virtual ~Any();
+
+ Any(const Any& from);
+ Any(Any&& from) noexcept
+ : Any() {
+ *this = ::std::move(from);
+ }
+
+ inline Any& operator=(const Any& from) {
+ CopyFrom(from);
+ return *this;
+ }
+ inline Any& operator=(Any&& from) noexcept {
+ if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+ if (this != &from) InternalSwap(&from);
+ } else {
+ CopyFrom(from);
+ }
+ return *this;
+ }
+
+ static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
+ return GetDescriptor();
+ }
+ static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
+ return GetMetadataStatic().descriptor;
+ }
+ static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
+ return GetMetadataStatic().reflection;
+ }
+ static const Any& default_instance();
+
+ static void InitAsDefaultInstance(); // FOR INTERNAL USE ONLY
+ static inline const Any* internal_default_instance() {
+ return reinterpret_cast(
+ &_Any_default_instance_);
+ }
+ static constexpr int kIndexInFileMessages =
+ 0;
+
+ // implements Any -----------------------------------------------
+
+ void PackFrom(const ::PROTOBUF_NAMESPACE_ID::Message& message) {
+ _any_metadata_.PackFrom(message);
+ }
+ void PackFrom(const ::PROTOBUF_NAMESPACE_ID::Message& message,
+ const std::string& type_url_prefix) {
+ _any_metadata_.PackFrom(message, type_url_prefix);
+ }
+ bool UnpackTo(::PROTOBUF_NAMESPACE_ID::Message* message) const {
+ return _any_metadata_.UnpackTo(message);
+ }
+ static bool GetAnyFieldDescriptors(
+ const ::PROTOBUF_NAMESPACE_ID::Message& message,
+ const ::PROTOBUF_NAMESPACE_ID::FieldDescriptor** type_url_field,
+ const ::PROTOBUF_NAMESPACE_ID::FieldDescriptor** value_field);
+ template ::value>::type>
+ void PackFrom(const T& message) {
+ _any_metadata_.PackFrom(message);
+ }
+ template ::value>::type>
+ void PackFrom(const T& message,
+ const std::string& type_url_prefix) {
+ _any_metadata_.PackFrom(message, type_url_prefix);}
+ template ::value>::type>
+ bool UnpackTo(T* message) const {
+ return _any_metadata_.UnpackTo(message);
+ }
+ template bool Is() const {
+ return _any_metadata_.Is();
+ }
+ static bool ParseAnyTypeUrl(const string& type_url,
+ std::string* full_type_name);
+ friend void swap(Any& a, Any& b) {
+ a.Swap(&b);
+ }
+ inline void Swap(Any* other) {
+ if (other == this) return;
+ InternalSwap(other);
+ }
+
+ // implements Message ----------------------------------------------
+
+ inline Any* New() const final {
+ return CreateMaybeMessage(nullptr);
+ }
+
+ Any* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
+ return CreateMaybeMessage(arena);
+ }
+ void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
+ void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
+ void CopyFrom(const Any& from);
+ void MergeFrom(const Any& from);
+ PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
+ bool IsInitialized() const final;
+
+ size_t ByteSizeLong() const final;
+ const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
+ ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
+ ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
+ int GetCachedSize() const final { return _cached_size_.Get(); }
+
+ private:
+ inline void SharedCtor();
+ inline void SharedDtor();
+ void SetCachedSize(int size) const final;
+ void InternalSwap(Any* other);
+ friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
+ static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
+ return "google.protobuf.Any";
+ }
+ private:
+ inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
+ return nullptr;
+ }
+ inline void* MaybeArenaPtr() const {
+ return nullptr;
+ }
+ public:
+
+ ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
+ private:
+ static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
+ ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_google_2fprotobuf_2fany_2eproto);
+ return ::descriptor_table_google_2fprotobuf_2fany_2eproto.file_level_metadata[kIndexInFileMessages];
+ }
+
+ public:
+
+ // nested types ----------------------------------------------------
+
+ // accessors -------------------------------------------------------
+
+ enum : int {
+ kTypeUrlFieldNumber = 1,
+ kValueFieldNumber = 2,
+ };
+ // string type_url = 1;
+ void clear_type_url();
+ const std::string& type_url() const;
+ void set_type_url(const std::string& value);
+ void set_type_url(std::string&& value);
+ void set_type_url(const char* value);
+ void set_type_url(const char* value, size_t size);
+ std::string* mutable_type_url();
+ std::string* release_type_url();
+ void set_allocated_type_url(std::string* type_url);
+ private:
+ const std::string& _internal_type_url() const;
+ void _internal_set_type_url(const std::string& value);
+ std::string* _internal_mutable_type_url();
+ public:
+
+ // bytes value = 2;
+ void clear_value();
+ const std::string& value() const;
+ void set_value(const std::string& value);
+ void set_value(std::string&& value);
+ void set_value(const char* value);
+ void set_value(const void* value, size_t size);
+ std::string* mutable_value();
+ std::string* release_value();
+ void set_allocated_value(std::string* value);
+ private:
+ const std::string& _internal_value() const;
+ void _internal_set_value(const std::string& value);
+ std::string* _internal_mutable_value();
+ public:
+
+ // @@protoc_insertion_point(class_scope:google.protobuf.Any)
+ private:
+ class _Internal;
+
+ ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
+ ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr type_url_;
+ ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr value_;
+ mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
+ ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata _any_metadata_;
+ friend struct ::TableStruct_google_2fprotobuf_2fany_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif // __GNUC__
+// Any
+
+// string type_url = 1;
+inline void Any::clear_type_url() {
+ type_url_.ClearToEmptyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+}
+inline const std::string& Any::type_url() const {
+ // @@protoc_insertion_point(field_get:google.protobuf.Any.type_url)
+ return _internal_type_url();
+}
+inline void Any::set_type_url(const std::string& value) {
+ _internal_set_type_url(value);
+ // @@protoc_insertion_point(field_set:google.protobuf.Any.type_url)
+}
+inline std::string* Any::mutable_type_url() {
+ // @@protoc_insertion_point(field_mutable:google.protobuf.Any.type_url)
+ return _internal_mutable_type_url();
+}
+inline const std::string& Any::_internal_type_url() const {
+ return type_url_.GetNoArena();
+}
+inline void Any::_internal_set_type_url(const std::string& value) {
+
+ type_url_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), value);
+}
+inline void Any::set_type_url(std::string&& value) {
+
+ type_url_.SetNoArena(
+ &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
+ // @@protoc_insertion_point(field_set_rvalue:google.protobuf.Any.type_url)
+}
+inline void Any::set_type_url(const char* value) {
+ GOOGLE_DCHECK(value != nullptr);
+
+ type_url_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+ // @@protoc_insertion_point(field_set_char:google.protobuf.Any.type_url)
+}
+inline void Any::set_type_url(const char* value, size_t size) {
+
+ type_url_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
+ ::std::string(reinterpret_cast(value), size));
+ // @@protoc_insertion_point(field_set_pointer:google.protobuf.Any.type_url)
+}
+inline std::string* Any::_internal_mutable_type_url() {
+
+ return type_url_.MutableNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+}
+inline std::string* Any::release_type_url() {
+ // @@protoc_insertion_point(field_release:google.protobuf.Any.type_url)
+
+ return type_url_.ReleaseNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+}
+inline void Any::set_allocated_type_url(std::string* type_url) {
+ if (type_url != nullptr) {
+
+ } else {
+
+ }
+ type_url_.SetAllocatedNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), type_url);
+ // @@protoc_insertion_point(field_set_allocated:google.protobuf.Any.type_url)
+}
+
+// bytes value = 2;
+inline void Any::clear_value() {
+ value_.ClearToEmptyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+}
+inline const std::string& Any::value() const {
+ // @@protoc_insertion_point(field_get:google.protobuf.Any.value)
+ return _internal_value();
+}
+inline void Any::set_value(const std::string& value) {
+ _internal_set_value(value);
+ // @@protoc_insertion_point(field_set:google.protobuf.Any.value)
+}
+inline std::string* Any::mutable_value() {
+ // @@protoc_insertion_point(field_mutable:google.protobuf.Any.value)
+ return _internal_mutable_value();
+}
+inline const std::string& Any::_internal_value() const {
+ return value_.GetNoArena();
+}
+inline void Any::_internal_set_value(const std::string& value) {
+
+ value_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), value);
+}
+inline void Any::set_value(std::string&& value) {
+
+ value_.SetNoArena(
+ &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
+ // @@protoc_insertion_point(field_set_rvalue:google.protobuf.Any.value)
+}
+inline void Any::set_value(const char* value) {
+ GOOGLE_DCHECK(value != nullptr);
+
+ value_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+ // @@protoc_insertion_point(field_set_char:google.protobuf.Any.value)
+}
+inline void Any::set_value(const void* value, size_t size) {
+
+ value_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
+ ::std::string(reinterpret_cast(value), size));
+ // @@protoc_insertion_point(field_set_pointer:google.protobuf.Any.value)
+}
+inline std::string* Any::_internal_mutable_value() {
+
+ return value_.MutableNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+}
+inline std::string* Any::release_value() {
+ // @@protoc_insertion_point(field_release:google.protobuf.Any.value)
+
+ return value_.ReleaseNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+}
+inline void Any::set_allocated_value(std::string* value) {
+ if (value != nullptr) {
+
+ } else {
+
+ }
+ value_.SetAllocatedNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), value);
+ // @@protoc_insertion_point(field_set_allocated:google.protobuf.Any.value)
+}
+
+#ifdef __GNUC__
+ #pragma GCC diagnostic pop
+#endif // __GNUC__
+
+// @@protoc_insertion_point(namespace_scope)
+
+PROTOBUF_NAMESPACE_CLOSE
+
+// @@protoc_insertion_point(global_scope)
+
+#include
+#endif // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_google_2fprotobuf_2fany_2eproto
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/google/protobuf/any.proto" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/google/protobuf/any.proto"
new file mode 100644
index 00000000..c9be8541
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/google/protobuf/any.proto"
@@ -0,0 +1,155 @@
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc. All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto3";
+
+package google.protobuf;
+
+option csharp_namespace = "Google.Protobuf.WellKnownTypes";
+option go_package = "github.com/golang/protobuf/ptypes/any";
+option java_package = "com.google.protobuf";
+option java_outer_classname = "AnyProto";
+option java_multiple_files = true;
+option objc_class_prefix = "GPB";
+
+// `Any` contains an arbitrary serialized protocol buffer message along with a
+// URL that describes the type of the serialized message.
+//
+// Protobuf library provides support to pack/unpack Any values in the form
+// of utility functions or additional generated methods of the Any type.
+//
+// Example 1: Pack and unpack a message in C++.
+//
+// Foo foo = ...;
+// Any any;
+// any.PackFrom(foo);
+// ...
+// if (any.UnpackTo(&foo)) {
+// ...
+// }
+//
+// Example 2: Pack and unpack a message in Java.
+//
+// Foo foo = ...;
+// Any any = Any.pack(foo);
+// ...
+// if (any.is(Foo.class)) {
+// foo = any.unpack(Foo.class);
+// }
+//
+// Example 3: Pack and unpack a message in Python.
+//
+// foo = Foo(...)
+// any = Any()
+// any.Pack(foo)
+// ...
+// if any.Is(Foo.DESCRIPTOR):
+// any.Unpack(foo)
+// ...
+//
+// Example 4: Pack and unpack a message in Go
+//
+// foo := &pb.Foo{...}
+// any, err := ptypes.MarshalAny(foo)
+// ...
+// foo := &pb.Foo{}
+// if err := ptypes.UnmarshalAny(any, foo); err != nil {
+// ...
+// }
+//
+// The pack methods provided by protobuf library will by default use
+// 'type.googleapis.com/full.type.name' as the type URL and the unpack
+// methods only use the fully qualified type name after the last '/'
+// in the type URL, for example "foo.bar.com/x/y.z" will yield type
+// name "y.z".
+//
+//
+// JSON
+// ====
+// The JSON representation of an `Any` value uses the regular
+// representation of the deserialized, embedded message, with an
+// additional field `@type` which contains the type URL. Example:
+//
+// package google.profile;
+// message Person {
+// string first_name = 1;
+// string last_name = 2;
+// }
+//
+// {
+// "@type": "type.googleapis.com/google.profile.Person",
+// "firstName": ,
+// "lastName":
+// }
+//
+// If the embedded message type is well-known and has a custom JSON
+// representation, that representation will be embedded adding a field
+// `value` which holds the custom JSON in addition to the `@type`
+// field. Example (for message [google.protobuf.Duration][]):
+//
+// {
+// "@type": "type.googleapis.com/google.protobuf.Duration",
+// "value": "1.212s"
+// }
+//
+message Any {
+ // A URL/resource name that uniquely identifies the type of the serialized
+ // protocol buffer message. This string must contain at least
+ // one "/" character. The last segment of the URL's path must represent
+ // the fully qualified name of the type (as in
+ // `path/google.protobuf.Duration`). The name should be in a canonical form
+ // (e.g., leading "." is not accepted).
+ //
+ // In practice, teams usually precompile into the binary all types that they
+ // expect it to use in the context of Any. However, for URLs which use the
+ // scheme `http`, `https`, or no scheme, one can optionally set up a type
+ // server that maps type URLs to message definitions as follows:
+ //
+ // * If no scheme is provided, `https` is assumed.
+ // * An HTTP GET on the URL must yield a [google.protobuf.Type][]
+ // value in binary format, or produce an error.
+ // * Applications are allowed to cache lookup results based on the
+ // URL, or have them precompiled into a binary to avoid any
+ // lookup. Therefore, binary compatibility needs to be preserved
+ // on changes to types. (Use versioned type names to manage
+ // breaking changes.)
+ //
+ // Note: this functionality is not currently available in the official
+ // protobuf release, and it is not used for type URLs beginning with
+ // type.googleapis.com.
+ //
+ // Schemes other than `http`, `https` (or the empty scheme) might be
+ // used with implementation specific semantics.
+ //
+ string type_url = 1;
+
+ // Must be a valid serialized protocol buffer of the above specified type.
+ bytes value = 2;
+}
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/google/protobuf/any_lite.cc" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/google/protobuf/any_lite.cc"
new file mode 100644
index 00000000..78393813
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/google/protobuf/any_lite.cc"
@@ -0,0 +1,122 @@
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc. All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include
+
+#include
+#include
+#include
+#include
+
+namespace google {
+namespace protobuf {
+namespace internal {
+
+std::string GetTypeUrl(StringPiece message_name,
+ StringPiece type_url_prefix) {
+ if (!type_url_prefix.empty() &&
+ type_url_prefix[type_url_prefix.size() - 1] == '/') {
+ return StrCat(type_url_prefix, message_name);
+ } else {
+ return StrCat(type_url_prefix, "/", message_name);
+ }
+}
+
+const char kAnyFullTypeName[] = "google.protobuf.Any";
+const char kTypeGoogleApisComPrefix[] = "type.googleapis.com/";
+const char kTypeGoogleProdComPrefix[] = "type.googleprod.com/";
+
+AnyMetadata::AnyMetadata(UrlType* type_url, ValueType* value)
+ : type_url_(type_url), value_(value) {}
+
+void AnyMetadata::InternalPackFrom(const MessageLite& message,
+ StringPiece type_url_prefix,
+ StringPiece type_name) {
+ type_url_->SetNoArena(&::google::protobuf::internal::GetEmptyString(),
+ GetTypeUrl(type_name, type_url_prefix));
+ message.SerializeToString(value_->MutableNoArena(
+ &::google::protobuf::internal::GetEmptyStringAlreadyInited()));
+}
+
+bool AnyMetadata::InternalUnpackTo(StringPiece type_name,
+ MessageLite* message) const {
+ if (!InternalIs(type_name)) {
+ return false;
+ }
+ return message->ParseFromString(value_->GetNoArena());
+}
+
+namespace {
+
+// The type URL could be stored in either an ArenaStringPtr or a
+// StringPieceField, so we provide these helpers to get a string_view from
+// either type. We use a template function as a way to avoid depending on
+// StringPieceField.
+
+template
+StringPiece Get(const T* ptr) {
+ return ptr->Get();
+}
+
+template <>
+// NOLINTNEXTLINE: clang-diagnostic-unused-function
+StringPiece Get(const ArenaStringPtr* ptr) {
+ return ptr->GetNoArena();
+}
+
+} // namespace
+
+bool AnyMetadata::InternalIs(StringPiece type_name) const {
+ StringPiece type_url = Get(type_url_);
+ return type_url.size() >= type_name.size() + 1 &&
+ type_url[type_url.size() - type_name.size() - 1] == '/' &&
+ HasSuffixString(type_url, type_name);
+}
+
+bool ParseAnyTypeUrl(const std::string& type_url, std::string* url_prefix,
+ std::string* full_type_name) {
+ size_t pos = type_url.find_last_of("/");
+ if (pos == std::string::npos || pos + 1 == type_url.size()) {
+ return false;
+ }
+ if (url_prefix) {
+ *url_prefix = type_url.substr(0, pos + 1);
+ }
+ *full_type_name = type_url.substr(pos + 1);
+ return true;
+}
+
+bool ParseAnyTypeUrl(const std::string& type_url, std::string* full_type_name) {
+ return ParseAnyTypeUrl(type_url, nullptr, full_type_name);
+}
+
+} // namespace internal
+} // namespace protobuf
+} // namespace google
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/google/protobuf/any_test.cc" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/google/protobuf/any_test.cc"
new file mode 100644
index 00000000..0d8893f7
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/google/protobuf/any_test.cc"
@@ -0,0 +1,167 @@
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc. All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include
+#include
+#include
+
+
+namespace google {
+namespace protobuf {
+namespace {
+
+TEST(AnyTest, TestPackAndUnpack) {
+ protobuf_unittest::TestAny submessage;
+ submessage.set_int32_value(12345);
+ protobuf_unittest::TestAny message;
+ message.mutable_any_value()->PackFrom(submessage);
+
+ std::string data = message.SerializeAsString();
+
+ ASSERT_TRUE(message.ParseFromString(data));
+ EXPECT_TRUE(message.has_any_value());
+ submessage.Clear();
+ ASSERT_TRUE(message.any_value().UnpackTo(&submessage));
+ EXPECT_EQ(12345, submessage.int32_value());
+}
+
+TEST(AnyTest, TestUnpackWithTypeMismatch) {
+ protobuf_unittest::TestAny payload;
+ payload.set_int32_value(13);
+ google::protobuf::Any any;
+ any.PackFrom(payload);
+
+ // Attempt to unpack into the wrong type.
+ protobuf_unittest::TestAllTypes dest;
+ EXPECT_FALSE(any.UnpackTo(&dest));
+}
+
+TEST(AnyTest, TestPackAndUnpackAny) {
+ // We can pack a Any message inside another Any message.
+ protobuf_unittest::TestAny submessage;
+ submessage.set_int32_value(12345);
+ google::protobuf::Any any;
+ any.PackFrom(submessage);
+ protobuf_unittest::TestAny message;
+ message.mutable_any_value()->PackFrom(any);
+
+ std::string data = message.SerializeAsString();
+
+ ASSERT_TRUE(message.ParseFromString(data));
+ EXPECT_TRUE(message.has_any_value());
+ any.Clear();
+ submessage.Clear();
+ ASSERT_TRUE(message.any_value().UnpackTo(&any));
+ ASSERT_TRUE(any.UnpackTo(&submessage));
+ EXPECT_EQ(12345, submessage.int32_value());
+}
+
+TEST(AnyTest, TestPackWithCustomTypeUrl) {
+ protobuf_unittest::TestAny submessage;
+ submessage.set_int32_value(12345);
+ google::protobuf::Any any;
+ // Pack with a custom type URL prefix.
+ any.PackFrom(submessage, "type.myservice.com");
+ EXPECT_EQ("type.myservice.com/protobuf_unittest.TestAny", any.type_url());
+ // Pack with a custom type URL prefix ending with '/'.
+ any.PackFrom(submessage, "type.myservice.com/");
+ EXPECT_EQ("type.myservice.com/protobuf_unittest.TestAny", any.type_url());
+ // Pack with an empty type URL prefix.
+ any.PackFrom(submessage, "");
+ EXPECT_EQ("/protobuf_unittest.TestAny", any.type_url());
+
+ // Test unpacking the type.
+ submessage.Clear();
+ EXPECT_TRUE(any.UnpackTo(&submessage));
+ EXPECT_EQ(12345, submessage.int32_value());
+}
+
+TEST(AnyTest, TestIs) {
+ protobuf_unittest::TestAny submessage;
+ submessage.set_int32_value(12345);
+ google::protobuf::Any any;
+ any.PackFrom(submessage);
+ ASSERT_TRUE(any.ParseFromString(any.SerializeAsString()));
+ EXPECT_TRUE(any.Is());
+ EXPECT_FALSE(any.Is());
+
+ protobuf_unittest::TestAny message;
+ message.mutable_any_value()->PackFrom(any);
+ ASSERT_TRUE(message.ParseFromString(message.SerializeAsString()));
+ EXPECT_FALSE(message.any_value().Is());
+ EXPECT_TRUE(message.any_value().Is());
+
+ any.set_type_url("/protobuf_unittest.TestAny");
+ EXPECT_TRUE(any.Is());
+ // The type URL must contain at least one "/".
+ any.set_type_url("protobuf_unittest.TestAny");
+ EXPECT_FALSE(any.Is());
+ // The type name after the slash must be fully qualified.
+ any.set_type_url("/TestAny");
+ EXPECT_FALSE(any.Is());
+}
+
+TEST(AnyTest, MoveConstructor) {
+ protobuf_unittest::TestAny payload;
+ payload.set_int32_value(12345);
+
+ google::protobuf::Any src;
+ src.PackFrom(payload);
+
+ const char* type_url = src.type_url().data();
+
+ google::protobuf::Any dst(std::move(src));
+ EXPECT_EQ(type_url, dst.type_url().data());
+ payload.Clear();
+ ASSERT_TRUE(dst.UnpackTo(&payload));
+ EXPECT_EQ(12345, payload.int32_value());
+}
+
+TEST(AnyTest, MoveAssignment) {
+ protobuf_unittest::TestAny payload;
+ payload.set_int32_value(12345);
+
+ google::protobuf::Any src;
+ src.PackFrom(payload);
+
+ const char* type_url = src.type_url().data();
+
+ google::protobuf::Any dst;
+ dst = std::move(src);
+ EXPECT_EQ(type_url, dst.type_url().data());
+ payload.Clear();
+ ASSERT_TRUE(dst.UnpackTo(&payload));
+ EXPECT_EQ(12345, payload.int32_value());
+}
+
+
+} // namespace
+} // namespace protobuf
+} // namespace google
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/google/protobuf/any_test.proto" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/google/protobuf/any_test.proto"
new file mode 100644
index 00000000..0c5b30ba
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/google/protobuf/any_test.proto"
@@ -0,0 +1,41 @@
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc. All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto3";
+
+package protobuf_unittest;
+
+import "google/protobuf/any.proto";
+
+message TestAny {
+ int32 int32_value = 1;
+ google.protobuf.Any any_value = 2;
+ repeated google.protobuf.Any repeated_any_value = 3;
+}
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/google/protobuf/api.pb.cc" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/google/protobuf/api.pb.cc"
new file mode 100644
index 00000000..0951c524
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/google/protobuf/api.pb.cc"
@@ -0,0 +1,1229 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: google/protobuf/api.proto
+
+#include
+
+#include
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+// @@protoc_insertion_point(includes)
+#include
+extern PROTOBUF_INTERNAL_EXPORT_google_2fprotobuf_2fapi_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<1> scc_info_Method_google_2fprotobuf_2fapi_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_google_2fprotobuf_2fapi_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_Mixin_google_2fprotobuf_2fapi_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_google_2fprotobuf_2ftype_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<1> scc_info_Option_google_2fprotobuf_2ftype_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_google_2fprotobuf_2fsource_5fcontext_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_SourceContext_google_2fprotobuf_2fsource_5fcontext_2eproto;
+PROTOBUF_NAMESPACE_OPEN
+class ApiDefaultTypeInternal {
+ public:
+ ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance;
+} _Api_default_instance_;
+class MethodDefaultTypeInternal {
+ public:
+ ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance;
+} _Method_default_instance_;
+class MixinDefaultTypeInternal {
+ public:
+ ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance;
+} _Mixin_default_instance_;
+PROTOBUF_NAMESPACE_CLOSE
+static void InitDefaultsscc_info_Api_google_2fprotobuf_2fapi_2eproto() {
+ GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+ {
+ void* ptr = &PROTOBUF_NAMESPACE_ID::_Api_default_instance_;
+ new (ptr) PROTOBUF_NAMESPACE_ID::Api();
+ ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
+ }
+ PROTOBUF_NAMESPACE_ID::Api::InitAsDefaultInstance();
+}
+
+PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<4> scc_info_Api_google_2fprotobuf_2fapi_2eproto =
+ {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 4, 0, InitDefaultsscc_info_Api_google_2fprotobuf_2fapi_2eproto}, {
+ &scc_info_Method_google_2fprotobuf_2fapi_2eproto.base,
+ &scc_info_Option_google_2fprotobuf_2ftype_2eproto.base,
+ &scc_info_SourceContext_google_2fprotobuf_2fsource_5fcontext_2eproto.base,
+ &scc_info_Mixin_google_2fprotobuf_2fapi_2eproto.base,}};
+
+static void InitDefaultsscc_info_Method_google_2fprotobuf_2fapi_2eproto() {
+ GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+ {
+ void* ptr = &PROTOBUF_NAMESPACE_ID::_Method_default_instance_;
+ new (ptr) PROTOBUF_NAMESPACE_ID::Method();
+ ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
+ }
+ PROTOBUF_NAMESPACE_ID::Method::InitAsDefaultInstance();
+}
+
+PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<1> scc_info_Method_google_2fprotobuf_2fapi_2eproto =
+ {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 1, 0, InitDefaultsscc_info_Method_google_2fprotobuf_2fapi_2eproto}, {
+ &scc_info_Option_google_2fprotobuf_2ftype_2eproto.base,}};
+
+static void InitDefaultsscc_info_Mixin_google_2fprotobuf_2fapi_2eproto() {
+ GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+ {
+ void* ptr = &PROTOBUF_NAMESPACE_ID::_Mixin_default_instance_;
+ new (ptr) PROTOBUF_NAMESPACE_ID::Mixin();
+ ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
+ }
+ PROTOBUF_NAMESPACE_ID::Mixin::InitAsDefaultInstance();
+}
+
+PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_Mixin_google_2fprotobuf_2fapi_2eproto =
+ {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_Mixin_google_2fprotobuf_2fapi_2eproto}, {}};
+
+static ::PROTOBUF_NAMESPACE_ID::Metadata file_level_metadata_google_2fprotobuf_2fapi_2eproto[3];
+static constexpr ::PROTOBUF_NAMESPACE_ID::EnumDescriptor const** file_level_enum_descriptors_google_2fprotobuf_2fapi_2eproto = nullptr;
+static constexpr ::PROTOBUF_NAMESPACE_ID::ServiceDescriptor const** file_level_service_descriptors_google_2fprotobuf_2fapi_2eproto = nullptr;
+
+const ::PROTOBUF_NAMESPACE_ID::uint32 TableStruct_google_2fprotobuf_2fapi_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(PROTOBUF_NAMESPACE_ID::Api, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ PROTOBUF_FIELD_OFFSET(PROTOBUF_NAMESPACE_ID::Api, name_),
+ PROTOBUF_FIELD_OFFSET(PROTOBUF_NAMESPACE_ID::Api, methods_),
+ PROTOBUF_FIELD_OFFSET(PROTOBUF_NAMESPACE_ID::Api, options_),
+ PROTOBUF_FIELD_OFFSET(PROTOBUF_NAMESPACE_ID::Api, version_),
+ PROTOBUF_FIELD_OFFSET(PROTOBUF_NAMESPACE_ID::Api, source_context_),
+ PROTOBUF_FIELD_OFFSET(PROTOBUF_NAMESPACE_ID::Api, mixins_),
+ PROTOBUF_FIELD_OFFSET(PROTOBUF_NAMESPACE_ID::Api, syntax_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(PROTOBUF_NAMESPACE_ID::Method, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ PROTOBUF_FIELD_OFFSET(PROTOBUF_NAMESPACE_ID::Method, name_),
+ PROTOBUF_FIELD_OFFSET(PROTOBUF_NAMESPACE_ID::Method, request_type_url_),
+ PROTOBUF_FIELD_OFFSET(PROTOBUF_NAMESPACE_ID::Method, request_streaming_),
+ PROTOBUF_FIELD_OFFSET(PROTOBUF_NAMESPACE_ID::Method, response_type_url_),
+ PROTOBUF_FIELD_OFFSET(PROTOBUF_NAMESPACE_ID::Method, response_streaming_),
+ PROTOBUF_FIELD_OFFSET(PROTOBUF_NAMESPACE_ID::Method, options_),
+ PROTOBUF_FIELD_OFFSET(PROTOBUF_NAMESPACE_ID::Method, syntax_),
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(PROTOBUF_NAMESPACE_ID::Mixin, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ PROTOBUF_FIELD_OFFSET(PROTOBUF_NAMESPACE_ID::Mixin, name_),
+ PROTOBUF_FIELD_OFFSET(PROTOBUF_NAMESPACE_ID::Mixin, root_),
+};
+static const ::PROTOBUF_NAMESPACE_ID::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+ { 0, -1, sizeof(PROTOBUF_NAMESPACE_ID::Api)},
+ { 12, -1, sizeof(PROTOBUF_NAMESPACE_ID::Method)},
+ { 24, -1, sizeof(PROTOBUF_NAMESPACE_ID::Mixin)},
+};
+
+static ::PROTOBUF_NAMESPACE_ID::Message const * const file_default_instances[] = {
+ reinterpret_cast(&PROTOBUF_NAMESPACE_ID::_Api_default_instance_),
+ reinterpret_cast(&PROTOBUF_NAMESPACE_ID::_Method_default_instance_),
+ reinterpret_cast(&PROTOBUF_NAMESPACE_ID::_Mixin_default_instance_),
+};
+
+const char descriptor_table_protodef_google_2fprotobuf_2fapi_2eproto[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) =
+ "\n\031google/protobuf/api.proto\022\017google.prot"
+ "obuf\032$google/protobuf/source_context.pro"
+ "to\032\032google/protobuf/type.proto\"\201\002\n\003Api\022\014"
+ "\n\004name\030\001 \001(\t\022(\n\007methods\030\002 \003(\0132\027.google.p"
+ "rotobuf.Method\022(\n\007options\030\003 \003(\0132\027.google"
+ ".protobuf.Option\022\017\n\007version\030\004 \001(\t\0226\n\016sou"
+ "rce_context\030\005 \001(\0132\036.google.protobuf.Sour"
+ "ceContext\022&\n\006mixins\030\006 \003(\0132\026.google.proto"
+ "buf.Mixin\022\'\n\006syntax\030\007 \001(\0162\027.google.proto"
+ "buf.Syntax\"\325\001\n\006Method\022\014\n\004name\030\001 \001(\t\022\030\n\020r"
+ "equest_type_url\030\002 \001(\t\022\031\n\021request_streami"
+ "ng\030\003 \001(\010\022\031\n\021response_type_url\030\004 \001(\t\022\032\n\022r"
+ "esponse_streaming\030\005 \001(\010\022(\n\007options\030\006 \003(\013"
+ "2\027.google.protobuf.Option\022\'\n\006syntax\030\007 \001("
+ "\0162\027.google.protobuf.Syntax\"#\n\005Mixin\022\014\n\004n"
+ "ame\030\001 \001(\t\022\014\n\004root\030\002 \001(\tBu\n\023com.google.pr"
+ "otobufB\010ApiProtoP\001Z+google.golang.org/ge"
+ "nproto/protobuf/api;api\242\002\003GPB\252\002\036Google.P"
+ "rotobuf.WellKnownTypesb\006proto3"
+ ;
+static const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable*const descriptor_table_google_2fprotobuf_2fapi_2eproto_deps[2] = {
+ &::descriptor_table_google_2fprotobuf_2fsource_5fcontext_2eproto,
+ &::descriptor_table_google_2fprotobuf_2ftype_2eproto,
+};
+static ::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase*const descriptor_table_google_2fprotobuf_2fapi_2eproto_sccs[3] = {
+ &scc_info_Api_google_2fprotobuf_2fapi_2eproto.base,
+ &scc_info_Method_google_2fprotobuf_2fapi_2eproto.base,
+ &scc_info_Mixin_google_2fprotobuf_2fapi_2eproto.base,
+};
+static ::PROTOBUF_NAMESPACE_ID::internal::once_flag descriptor_table_google_2fprotobuf_2fapi_2eproto_once;
+static bool descriptor_table_google_2fprotobuf_2fapi_2eproto_initialized = false;
+const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_google_2fprotobuf_2fapi_2eproto = {
+ &descriptor_table_google_2fprotobuf_2fapi_2eproto_initialized, descriptor_table_protodef_google_2fprotobuf_2fapi_2eproto, "google/protobuf/api.proto", 750,
+ &descriptor_table_google_2fprotobuf_2fapi_2eproto_once, descriptor_table_google_2fprotobuf_2fapi_2eproto_sccs, descriptor_table_google_2fprotobuf_2fapi_2eproto_deps, 3, 2,
+ schemas, file_default_instances, TableStruct_google_2fprotobuf_2fapi_2eproto::offsets,
+ file_level_metadata_google_2fprotobuf_2fapi_2eproto, 3, file_level_enum_descriptors_google_2fprotobuf_2fapi_2eproto, file_level_service_descriptors_google_2fprotobuf_2fapi_2eproto,
+};
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_google_2fprotobuf_2fapi_2eproto = (static_cast(::PROTOBUF_NAMESPACE_ID::internal::AddDescriptors(&descriptor_table_google_2fprotobuf_2fapi_2eproto)), true);
+PROTOBUF_NAMESPACE_OPEN
+
+// ===================================================================
+
+void Api::InitAsDefaultInstance() {
+ PROTOBUF_NAMESPACE_ID::_Api_default_instance_._instance.get_mutable()->source_context_ = const_cast< PROTOBUF_NAMESPACE_ID::SourceContext*>(
+ PROTOBUF_NAMESPACE_ID::SourceContext::internal_default_instance());
+}
+class Api::_Internal {
+ public:
+ static const PROTOBUF_NAMESPACE_ID::SourceContext& source_context(const Api* msg);
+};
+
+const PROTOBUF_NAMESPACE_ID::SourceContext&
+Api::_Internal::source_context(const Api* msg) {
+ return *msg->source_context_;
+}
+void Api::clear_options() {
+ options_.Clear();
+}
+void Api::clear_source_context() {
+ if (GetArenaNoVirtual() == nullptr && source_context_ != nullptr) {
+ delete source_context_;
+ }
+ source_context_ = nullptr;
+}
+Api::Api()
+ : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
+ SharedCtor();
+ // @@protoc_insertion_point(constructor:google.protobuf.Api)
+}
+Api::Api(const Api& from)
+ : ::PROTOBUF_NAMESPACE_ID::Message(),
+ _internal_metadata_(nullptr),
+ methods_(from.methods_),
+ options_(from.options_),
+ mixins_(from.mixins_) {
+ _internal_metadata_.MergeFrom(from._internal_metadata_);
+ name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+ if (!from._internal_name().empty()) {
+ name_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.name_);
+ }
+ version_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+ if (!from._internal_version().empty()) {
+ version_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.version_);
+ }
+ if (from._internal_has_source_context()) {
+ source_context_ = new PROTOBUF_NAMESPACE_ID::SourceContext(*from.source_context_);
+ } else {
+ source_context_ = nullptr;
+ }
+ syntax_ = from.syntax_;
+ // @@protoc_insertion_point(copy_constructor:google.protobuf.Api)
+}
+
+void Api::SharedCtor() {
+ ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_Api_google_2fprotobuf_2fapi_2eproto.base);
+ name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+ version_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+ ::memset(&source_context_, 0, static_cast(
+ reinterpret_cast(&syntax_) -
+ reinterpret_cast(&source_context_)) + sizeof(syntax_));
+}
+
+Api::~Api() {
+ // @@protoc_insertion_point(destructor:google.protobuf.Api)
+ SharedDtor();
+}
+
+void Api::SharedDtor() {
+ name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+ version_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+ if (this != internal_default_instance()) delete source_context_;
+}
+
+void Api::SetCachedSize(int size) const {
+ _cached_size_.Set(size);
+}
+const Api& Api::default_instance() {
+ ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_Api_google_2fprotobuf_2fapi_2eproto.base);
+ return *internal_default_instance();
+}
+
+
+void Api::Clear() {
+// @@protoc_insertion_point(message_clear_start:google.protobuf.Api)
+ ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
+ // Prevent compiler warnings about cached_has_bits being unused
+ (void) cached_has_bits;
+
+ methods_.Clear();
+ options_.Clear();
+ mixins_.Clear();
+ name_.ClearToEmptyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+ version_.ClearToEmptyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+ if (GetArenaNoVirtual() == nullptr && source_context_ != nullptr) {
+ delete source_context_;
+ }
+ source_context_ = nullptr;
+ syntax_ = 0;
+ _internal_metadata_.Clear();
+}
+
+const char* Api::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
+#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
+ while (!ctx->Done(&ptr)) {
+ ::PROTOBUF_NAMESPACE_ID::uint32 tag;
+ ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
+ CHK_(ptr);
+ switch (tag >> 3) {
+ // string name = 1;
+ case 1:
+ if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
+ auto str = _internal_mutable_name();
+ ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
+ CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "google.protobuf.Api.name"));
+ CHK_(ptr);
+ } else goto handle_unusual;
+ continue;
+ // repeated .google.protobuf.Method methods = 2;
+ case 2:
+ if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) {
+ ptr -= 1;
+ do {
+ ptr += 1;
+ ptr = ctx->ParseMessage(_internal_add_methods(), ptr);
+ CHK_(ptr);
+ if (!ctx->DataAvailable(ptr)) break;
+ } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr));
+ } else goto handle_unusual;
+ continue;
+ // repeated .google.protobuf.Option options = 3;
+ case 3:
+ if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) {
+ ptr -= 1;
+ do {
+ ptr += 1;
+ ptr = ctx->ParseMessage(_internal_add_options(), ptr);
+ CHK_(ptr);
+ if (!ctx->DataAvailable(ptr)) break;
+ } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr));
+ } else goto handle_unusual;
+ continue;
+ // string version = 4;
+ case 4:
+ if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) {
+ auto str = _internal_mutable_version();
+ ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
+ CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "google.protobuf.Api.version"));
+ CHK_(ptr);
+ } else goto handle_unusual;
+ continue;
+ // .google.protobuf.SourceContext source_context = 5;
+ case 5:
+ if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) {
+ ptr = ctx->ParseMessage(_internal_mutable_source_context(), ptr);
+ CHK_(ptr);
+ } else goto handle_unusual;
+ continue;
+ // repeated .google.protobuf.Mixin mixins = 6;
+ case 6:
+ if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) {
+ ptr -= 1;
+ do {
+ ptr += 1;
+ ptr = ctx->ParseMessage(_internal_add_mixins(), ptr);
+ CHK_(ptr);
+ if (!ctx->DataAvailable(ptr)) break;
+ } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<50>(ptr));
+ } else goto handle_unusual;
+ continue;
+ // .google.protobuf.Syntax syntax = 7;
+ case 7:
+ if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) {
+ ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
+ CHK_(ptr);
+ _internal_set_syntax(static_cast(val));
+ } else goto handle_unusual;
+ continue;
+ default: {
+ handle_unusual:
+ if ((tag & 7) == 4 || tag == 0) {
+ ctx->SetLastTag(tag);
+ goto success;
+ }
+ ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
+ CHK_(ptr != nullptr);
+ continue;
+ }
+ } // switch
+ } // while
+success:
+ return ptr;
+failure:
+ ptr = nullptr;
+ goto success;
+#undef CHK_
+}
+
+::PROTOBUF_NAMESPACE_ID::uint8* Api::_InternalSerialize(
+ ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
+ // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.Api)
+ ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
+ (void) cached_has_bits;
+
+ // string name = 1;
+ if (this->name().size() > 0) {
+ ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
+ this->_internal_name().data(), static_cast(this->_internal_name().length()),
+ ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
+ "google.protobuf.Api.name");
+ target = stream->WriteStringMaybeAliased(
+ 1, this->_internal_name(), target);
+ }
+
+ // repeated .google.protobuf.Method methods = 2;
+ for (unsigned int i = 0,
+ n = static_cast(this->_internal_methods_size()); i < n; i++) {
+ target = stream->EnsureSpace(target);
+ target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
+ InternalWriteMessage(2, this->_internal_methods(i), target, stream);
+ }
+
+ // repeated .google.protobuf.Option options = 3;
+ for (unsigned int i = 0,
+ n = static_cast(this->_internal_options_size()); i < n; i++) {
+ target = stream->EnsureSpace(target);
+ target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
+ InternalWriteMessage(3, this->_internal_options(i), target, stream);
+ }
+
+ // string version = 4;
+ if (this->version().size() > 0) {
+ ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
+ this->_internal_version().data(), static_cast(this->_internal_version().length()),
+ ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
+ "google.protobuf.Api.version");
+ target = stream->WriteStringMaybeAliased(
+ 4, this->_internal_version(), target);
+ }
+
+ // .google.protobuf.SourceContext source_context = 5;
+ if (this->has_source_context()) {
+ target = stream->EnsureSpace(target);
+ target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
+ InternalWriteMessage(
+ 5, _Internal::source_context(this), target, stream);
+ }
+
+ // repeated .google.protobuf.Mixin mixins = 6;
+ for (unsigned int i = 0,
+ n = static_cast(this->_internal_mixins_size()); i < n; i++) {
+ target = stream->EnsureSpace(target);
+ target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
+ InternalWriteMessage(6, this->_internal_mixins(i), target, stream);
+ }
+
+ // .google.protobuf.Syntax syntax = 7;
+ if (this->syntax() != 0) {
+ target = stream->EnsureSpace(target);
+ target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
+ 7, this->_internal_syntax(), target);
+ }
+
+ if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
+ target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
+ _internal_metadata_.unknown_fields(), target, stream);
+ }
+ // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.Api)
+ return target;
+}
+
+size_t Api::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:google.protobuf.Api)
+ size_t total_size = 0;
+
+ ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
+ // Prevent compiler warnings about cached_has_bits being unused
+ (void) cached_has_bits;
+
+ // repeated .google.protobuf.Method methods = 2;
+ total_size += 1UL * this->_internal_methods_size();
+ for (const auto& msg : this->methods_) {
+ total_size +=
+ ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
+ }
+
+ // repeated .google.protobuf.Option options = 3;
+ total_size += 1UL * this->_internal_options_size();
+ for (const auto& msg : this->options_) {
+ total_size +=
+ ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
+ }
+
+ // repeated .google.protobuf.Mixin mixins = 6;
+ total_size += 1UL * this->_internal_mixins_size();
+ for (const auto& msg : this->mixins_) {
+ total_size +=
+ ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
+ }
+
+ // string name = 1;
+ if (this->name().size() > 0) {
+ total_size += 1 +
+ ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
+ this->_internal_name());
+ }
+
+ // string version = 4;
+ if (this->version().size() > 0) {
+ total_size += 1 +
+ ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
+ this->_internal_version());
+ }
+
+ // .google.protobuf.SourceContext source_context = 5;
+ if (this->has_source_context()) {
+ total_size += 1 +
+ ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
+ *source_context_);
+ }
+
+ // .google.protobuf.Syntax syntax = 7;
+ if (this->syntax() != 0) {
+ total_size += 1 +
+ ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_syntax());
+ }
+
+ if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
+ return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
+ _internal_metadata_, total_size, &_cached_size_);
+ }
+ int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
+ SetCachedSize(cached_size);
+ return total_size;
+}
+
+void Api::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:google.protobuf.Api)
+ GOOGLE_DCHECK_NE(&from, this);
+ const Api* source =
+ ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated(
+ &from);
+ if (source == nullptr) {
+ // @@protoc_insertion_point(generalized_merge_from_cast_fail:google.protobuf.Api)
+ ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
+ } else {
+ // @@protoc_insertion_point(generalized_merge_from_cast_success:google.protobuf.Api)
+ MergeFrom(*source);
+ }
+}
+
+void Api::MergeFrom(const Api& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.Api)
+ GOOGLE_DCHECK_NE(&from, this);
+ _internal_metadata_.MergeFrom(from._internal_metadata_);
+ ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
+ (void) cached_has_bits;
+
+ methods_.MergeFrom(from.methods_);
+ options_.MergeFrom(from.options_);
+ mixins_.MergeFrom(from.mixins_);
+ if (from.name().size() > 0) {
+
+ name_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.name_);
+ }
+ if (from.version().size() > 0) {
+
+ version_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.version_);
+ }
+ if (from.has_source_context()) {
+ _internal_mutable_source_context()->PROTOBUF_NAMESPACE_ID::SourceContext::MergeFrom(from._internal_source_context());
+ }
+ if (from.syntax() != 0) {
+ _internal_set_syntax(from._internal_syntax());
+ }
+}
+
+void Api::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:google.protobuf.Api)
+ if (&from == this) return;
+ Clear();
+ MergeFrom(from);
+}
+
+void Api::CopyFrom(const Api& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.Api)
+ if (&from == this) return;
+ Clear();
+ MergeFrom(from);
+}
+
+bool Api::IsInitialized() const {
+ return true;
+}
+
+void Api::InternalSwap(Api* other) {
+ using std::swap;
+ _internal_metadata_.Swap(&other->_internal_metadata_);
+ methods_.InternalSwap(&other->methods_);
+ options_.InternalSwap(&other->options_);
+ mixins_.InternalSwap(&other->mixins_);
+ name_.Swap(&other->name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
+ GetArenaNoVirtual());
+ version_.Swap(&other->version_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
+ GetArenaNoVirtual());
+ swap(source_context_, other->source_context_);
+ swap(syntax_, other->syntax_);
+}
+
+::PROTOBUF_NAMESPACE_ID::Metadata Api::GetMetadata() const {
+ return GetMetadataStatic();
+}
+
+
+// ===================================================================
+
+void Method::InitAsDefaultInstance() {
+}
+class Method::_Internal {
+ public:
+};
+
+void Method::clear_options() {
+ options_.Clear();
+}
+Method::Method()
+ : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
+ SharedCtor();
+ // @@protoc_insertion_point(constructor:google.protobuf.Method)
+}
+Method::Method(const Method& from)
+ : ::PROTOBUF_NAMESPACE_ID::Message(),
+ _internal_metadata_(nullptr),
+ options_(from.options_) {
+ _internal_metadata_.MergeFrom(from._internal_metadata_);
+ name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+ if (!from._internal_name().empty()) {
+ name_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.name_);
+ }
+ request_type_url_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+ if (!from._internal_request_type_url().empty()) {
+ request_type_url_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.request_type_url_);
+ }
+ response_type_url_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+ if (!from._internal_response_type_url().empty()) {
+ response_type_url_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.response_type_url_);
+ }
+ ::memcpy(&request_streaming_, &from.request_streaming_,
+ static_cast(reinterpret_cast(&syntax_) -
+ reinterpret_cast(&request_streaming_)) + sizeof(syntax_));
+ // @@protoc_insertion_point(copy_constructor:google.protobuf.Method)
+}
+
+void Method::SharedCtor() {
+ ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_Method_google_2fprotobuf_2fapi_2eproto.base);
+ name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+ request_type_url_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+ response_type_url_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+ ::memset(&request_streaming_, 0, static_cast(
+ reinterpret_cast(&syntax_) -
+ reinterpret_cast(&request_streaming_)) + sizeof(syntax_));
+}
+
+Method::~Method() {
+ // @@protoc_insertion_point(destructor:google.protobuf.Method)
+ SharedDtor();
+}
+
+void Method::SharedDtor() {
+ name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+ request_type_url_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+ response_type_url_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+}
+
+void Method::SetCachedSize(int size) const {
+ _cached_size_.Set(size);
+}
+const Method& Method::default_instance() {
+ ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_Method_google_2fprotobuf_2fapi_2eproto.base);
+ return *internal_default_instance();
+}
+
+
+void Method::Clear() {
+// @@protoc_insertion_point(message_clear_start:google.protobuf.Method)
+ ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
+ // Prevent compiler warnings about cached_has_bits being unused
+ (void) cached_has_bits;
+
+ options_.Clear();
+ name_.ClearToEmptyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+ request_type_url_.ClearToEmptyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+ response_type_url_.ClearToEmptyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+ ::memset(&request_streaming_, 0, static_cast(
+ reinterpret_cast(&syntax_) -
+ reinterpret_cast(&request_streaming_)) + sizeof(syntax_));
+ _internal_metadata_.Clear();
+}
+
+const char* Method::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
+#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
+ while (!ctx->Done(&ptr)) {
+ ::PROTOBUF_NAMESPACE_ID::uint32 tag;
+ ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
+ CHK_(ptr);
+ switch (tag >> 3) {
+ // string name = 1;
+ case 1:
+ if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
+ auto str = _internal_mutable_name();
+ ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
+ CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "google.protobuf.Method.name"));
+ CHK_(ptr);
+ } else goto handle_unusual;
+ continue;
+ // string request_type_url = 2;
+ case 2:
+ if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) {
+ auto str = _internal_mutable_request_type_url();
+ ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
+ CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "google.protobuf.Method.request_type_url"));
+ CHK_(ptr);
+ } else goto handle_unusual;
+ continue;
+ // bool request_streaming = 3;
+ case 3:
+ if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) {
+ request_streaming_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
+ CHK_(ptr);
+ } else goto handle_unusual;
+ continue;
+ // string response_type_url = 4;
+ case 4:
+ if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) {
+ auto str = _internal_mutable_response_type_url();
+ ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
+ CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "google.protobuf.Method.response_type_url"));
+ CHK_(ptr);
+ } else goto handle_unusual;
+ continue;
+ // bool response_streaming = 5;
+ case 5:
+ if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) {
+ response_streaming_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
+ CHK_(ptr);
+ } else goto handle_unusual;
+ continue;
+ // repeated .google.protobuf.Option options = 6;
+ case 6:
+ if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) {
+ ptr -= 1;
+ do {
+ ptr += 1;
+ ptr = ctx->ParseMessage(_internal_add_options(), ptr);
+ CHK_(ptr);
+ if (!ctx->DataAvailable(ptr)) break;
+ } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<50>(ptr));
+ } else goto handle_unusual;
+ continue;
+ // .google.protobuf.Syntax syntax = 7;
+ case 7:
+ if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) {
+ ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
+ CHK_(ptr);
+ _internal_set_syntax(static_cast(val));
+ } else goto handle_unusual;
+ continue;
+ default: {
+ handle_unusual:
+ if ((tag & 7) == 4 || tag == 0) {
+ ctx->SetLastTag(tag);
+ goto success;
+ }
+ ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
+ CHK_(ptr != nullptr);
+ continue;
+ }
+ } // switch
+ } // while
+success:
+ return ptr;
+failure:
+ ptr = nullptr;
+ goto success;
+#undef CHK_
+}
+
+::PROTOBUF_NAMESPACE_ID::uint8* Method::_InternalSerialize(
+ ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
+ // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.Method)
+ ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
+ (void) cached_has_bits;
+
+ // string name = 1;
+ if (this->name().size() > 0) {
+ ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
+ this->_internal_name().data(), static_cast(this->_internal_name().length()),
+ ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
+ "google.protobuf.Method.name");
+ target = stream->WriteStringMaybeAliased(
+ 1, this->_internal_name(), target);
+ }
+
+ // string request_type_url = 2;
+ if (this->request_type_url().size() > 0) {
+ ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
+ this->_internal_request_type_url().data(), static_cast(this->_internal_request_type_url().length()),
+ ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
+ "google.protobuf.Method.request_type_url");
+ target = stream->WriteStringMaybeAliased(
+ 2, this->_internal_request_type_url(), target);
+ }
+
+ // bool request_streaming = 3;
+ if (this->request_streaming() != 0) {
+ target = stream->EnsureSpace(target);
+ target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(3, this->_internal_request_streaming(), target);
+ }
+
+ // string response_type_url = 4;
+ if (this->response_type_url().size() > 0) {
+ ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
+ this->_internal_response_type_url().data(), static_cast(this->_internal_response_type_url().length()),
+ ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
+ "google.protobuf.Method.response_type_url");
+ target = stream->WriteStringMaybeAliased(
+ 4, this->_internal_response_type_url(), target);
+ }
+
+ // bool response_streaming = 5;
+ if (this->response_streaming() != 0) {
+ target = stream->EnsureSpace(target);
+ target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(5, this->_internal_response_streaming(), target);
+ }
+
+ // repeated .google.protobuf.Option options = 6;
+ for (unsigned int i = 0,
+ n = static_cast(this->_internal_options_size()); i < n; i++) {
+ target = stream->EnsureSpace(target);
+ target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
+ InternalWriteMessage(6, this->_internal_options(i), target, stream);
+ }
+
+ // .google.protobuf.Syntax syntax = 7;
+ if (this->syntax() != 0) {
+ target = stream->EnsureSpace(target);
+ target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
+ 7, this->_internal_syntax(), target);
+ }
+
+ if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
+ target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
+ _internal_metadata_.unknown_fields(), target, stream);
+ }
+ // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.Method)
+ return target;
+}
+
+size_t Method::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:google.protobuf.Method)
+ size_t total_size = 0;
+
+ ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
+ // Prevent compiler warnings about cached_has_bits being unused
+ (void) cached_has_bits;
+
+ // repeated .google.protobuf.Option options = 6;
+ total_size += 1UL * this->_internal_options_size();
+ for (const auto& msg : this->options_) {
+ total_size +=
+ ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
+ }
+
+ // string name = 1;
+ if (this->name().size() > 0) {
+ total_size += 1 +
+ ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
+ this->_internal_name());
+ }
+
+ // string request_type_url = 2;
+ if (this->request_type_url().size() > 0) {
+ total_size += 1 +
+ ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
+ this->_internal_request_type_url());
+ }
+
+ // string response_type_url = 4;
+ if (this->response_type_url().size() > 0) {
+ total_size += 1 +
+ ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
+ this->_internal_response_type_url());
+ }
+
+ // bool request_streaming = 3;
+ if (this->request_streaming() != 0) {
+ total_size += 1 + 1;
+ }
+
+ // bool response_streaming = 5;
+ if (this->response_streaming() != 0) {
+ total_size += 1 + 1;
+ }
+
+ // .google.protobuf.Syntax syntax = 7;
+ if (this->syntax() != 0) {
+ total_size += 1 +
+ ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_syntax());
+ }
+
+ if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
+ return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
+ _internal_metadata_, total_size, &_cached_size_);
+ }
+ int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
+ SetCachedSize(cached_size);
+ return total_size;
+}
+
+void Method::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:google.protobuf.Method)
+ GOOGLE_DCHECK_NE(&from, this);
+ const Method* source =
+ ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated(
+ &from);
+ if (source == nullptr) {
+ // @@protoc_insertion_point(generalized_merge_from_cast_fail:google.protobuf.Method)
+ ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
+ } else {
+ // @@protoc_insertion_point(generalized_merge_from_cast_success:google.protobuf.Method)
+ MergeFrom(*source);
+ }
+}
+
+void Method::MergeFrom(const Method& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.Method)
+ GOOGLE_DCHECK_NE(&from, this);
+ _internal_metadata_.MergeFrom(from._internal_metadata_);
+ ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
+ (void) cached_has_bits;
+
+ options_.MergeFrom(from.options_);
+ if (from.name().size() > 0) {
+
+ name_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.name_);
+ }
+ if (from.request_type_url().size() > 0) {
+
+ request_type_url_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.request_type_url_);
+ }
+ if (from.response_type_url().size() > 0) {
+
+ response_type_url_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.response_type_url_);
+ }
+ if (from.request_streaming() != 0) {
+ _internal_set_request_streaming(from._internal_request_streaming());
+ }
+ if (from.response_streaming() != 0) {
+ _internal_set_response_streaming(from._internal_response_streaming());
+ }
+ if (from.syntax() != 0) {
+ _internal_set_syntax(from._internal_syntax());
+ }
+}
+
+void Method::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:google.protobuf.Method)
+ if (&from == this) return;
+ Clear();
+ MergeFrom(from);
+}
+
+void Method::CopyFrom(const Method& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.Method)
+ if (&from == this) return;
+ Clear();
+ MergeFrom(from);
+}
+
+bool Method::IsInitialized() const {
+ return true;
+}
+
+void Method::InternalSwap(Method* other) {
+ using std::swap;
+ _internal_metadata_.Swap(&other->_internal_metadata_);
+ options_.InternalSwap(&other->options_);
+ name_.Swap(&other->name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
+ GetArenaNoVirtual());
+ request_type_url_.Swap(&other->request_type_url_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
+ GetArenaNoVirtual());
+ response_type_url_.Swap(&other->response_type_url_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
+ GetArenaNoVirtual());
+ swap(request_streaming_, other->request_streaming_);
+ swap(response_streaming_, other->response_streaming_);
+ swap(syntax_, other->syntax_);
+}
+
+::PROTOBUF_NAMESPACE_ID::Metadata Method::GetMetadata() const {
+ return GetMetadataStatic();
+}
+
+
+// ===================================================================
+
+void Mixin::InitAsDefaultInstance() {
+}
+class Mixin::_Internal {
+ public:
+};
+
+Mixin::Mixin()
+ : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
+ SharedCtor();
+ // @@protoc_insertion_point(constructor:google.protobuf.Mixin)
+}
+Mixin::Mixin(const Mixin& from)
+ : ::PROTOBUF_NAMESPACE_ID::Message(),
+ _internal_metadata_(nullptr) {
+ _internal_metadata_.MergeFrom(from._internal_metadata_);
+ name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+ if (!from._internal_name().empty()) {
+ name_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.name_);
+ }
+ root_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+ if (!from._internal_root().empty()) {
+ root_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.root_);
+ }
+ // @@protoc_insertion_point(copy_constructor:google.protobuf.Mixin)
+}
+
+void Mixin::SharedCtor() {
+ ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_Mixin_google_2fprotobuf_2fapi_2eproto.base);
+ name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+ root_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+}
+
+Mixin::~Mixin() {
+ // @@protoc_insertion_point(destructor:google.protobuf.Mixin)
+ SharedDtor();
+}
+
+void Mixin::SharedDtor() {
+ name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+ root_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+}
+
+void Mixin::SetCachedSize(int size) const {
+ _cached_size_.Set(size);
+}
+const Mixin& Mixin::default_instance() {
+ ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_Mixin_google_2fprotobuf_2fapi_2eproto.base);
+ return *internal_default_instance();
+}
+
+
+void Mixin::Clear() {
+// @@protoc_insertion_point(message_clear_start:google.protobuf.Mixin)
+ ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
+ // Prevent compiler warnings about cached_has_bits being unused
+ (void) cached_has_bits;
+
+ name_.ClearToEmptyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+ root_.ClearToEmptyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+ _internal_metadata_.Clear();
+}
+
+const char* Mixin::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
+#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
+ while (!ctx->Done(&ptr)) {
+ ::PROTOBUF_NAMESPACE_ID::uint32 tag;
+ ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
+ CHK_(ptr);
+ switch (tag >> 3) {
+ // string name = 1;
+ case 1:
+ if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
+ auto str = _internal_mutable_name();
+ ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
+ CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "google.protobuf.Mixin.name"));
+ CHK_(ptr);
+ } else goto handle_unusual;
+ continue;
+ // string root = 2;
+ case 2:
+ if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) {
+ auto str = _internal_mutable_root();
+ ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
+ CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "google.protobuf.Mixin.root"));
+ CHK_(ptr);
+ } else goto handle_unusual;
+ continue;
+ default: {
+ handle_unusual:
+ if ((tag & 7) == 4 || tag == 0) {
+ ctx->SetLastTag(tag);
+ goto success;
+ }
+ ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
+ CHK_(ptr != nullptr);
+ continue;
+ }
+ } // switch
+ } // while
+success:
+ return ptr;
+failure:
+ ptr = nullptr;
+ goto success;
+#undef CHK_
+}
+
+::PROTOBUF_NAMESPACE_ID::uint8* Mixin::_InternalSerialize(
+ ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
+ // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.Mixin)
+ ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
+ (void) cached_has_bits;
+
+ // string name = 1;
+ if (this->name().size() > 0) {
+ ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
+ this->_internal_name().data(), static_cast(this->_internal_name().length()),
+ ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
+ "google.protobuf.Mixin.name");
+ target = stream->WriteStringMaybeAliased(
+ 1, this->_internal_name(), target);
+ }
+
+ // string root = 2;
+ if (this->root().size() > 0) {
+ ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
+ this->_internal_root().data(), static_cast(this->_internal_root().length()),
+ ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
+ "google.protobuf.Mixin.root");
+ target = stream->WriteStringMaybeAliased(
+ 2, this->_internal_root(), target);
+ }
+
+ if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
+ target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
+ _internal_metadata_.unknown_fields(), target, stream);
+ }
+ // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.Mixin)
+ return target;
+}
+
+size_t Mixin::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:google.protobuf.Mixin)
+ size_t total_size = 0;
+
+ ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
+ // Prevent compiler warnings about cached_has_bits being unused
+ (void) cached_has_bits;
+
+ // string name = 1;
+ if (this->name().size() > 0) {
+ total_size += 1 +
+ ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
+ this->_internal_name());
+ }
+
+ // string root = 2;
+ if (this->root().size() > 0) {
+ total_size += 1 +
+ ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
+ this->_internal_root());
+ }
+
+ if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
+ return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
+ _internal_metadata_, total_size, &_cached_size_);
+ }
+ int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
+ SetCachedSize(cached_size);
+ return total_size;
+}
+
+void Mixin::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:google.protobuf.Mixin)
+ GOOGLE_DCHECK_NE(&from, this);
+ const Mixin* source =
+ ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated(
+ &from);
+ if (source == nullptr) {
+ // @@protoc_insertion_point(generalized_merge_from_cast_fail:google.protobuf.Mixin)
+ ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
+ } else {
+ // @@protoc_insertion_point(generalized_merge_from_cast_success:google.protobuf.Mixin)
+ MergeFrom(*source);
+ }
+}
+
+void Mixin::MergeFrom(const Mixin& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.Mixin)
+ GOOGLE_DCHECK_NE(&from, this);
+ _internal_metadata_.MergeFrom(from._internal_metadata_);
+ ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
+ (void) cached_has_bits;
+
+ if (from.name().size() > 0) {
+
+ name_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.name_);
+ }
+ if (from.root().size() > 0) {
+
+ root_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.root_);
+ }
+}
+
+void Mixin::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:google.protobuf.Mixin)
+ if (&from == this) return;
+ Clear();
+ MergeFrom(from);
+}
+
+void Mixin::CopyFrom(const Mixin& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.Mixin)
+ if (&from == this) return;
+ Clear();
+ MergeFrom(from);
+}
+
+bool Mixin::IsInitialized() const {
+ return true;
+}
+
+void Mixin::InternalSwap(Mixin* other) {
+ using std::swap;
+ _internal_metadata_.Swap(&other->_internal_metadata_);
+ name_.Swap(&other->name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
+ GetArenaNoVirtual());
+ root_.Swap(&other->root_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
+ GetArenaNoVirtual());
+}
+
+::PROTOBUF_NAMESPACE_ID::Metadata Mixin::GetMetadata() const {
+ return GetMetadataStatic();
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+PROTOBUF_NAMESPACE_CLOSE
+PROTOBUF_NAMESPACE_OPEN
+template<> PROTOBUF_NOINLINE PROTOBUF_NAMESPACE_ID::Api* Arena::CreateMaybeMessage< PROTOBUF_NAMESPACE_ID::Api >(Arena* arena) {
+ return Arena::CreateInternal< PROTOBUF_NAMESPACE_ID::Api >(arena);
+}
+template<> PROTOBUF_NOINLINE PROTOBUF_NAMESPACE_ID::Method* Arena::CreateMaybeMessage< PROTOBUF_NAMESPACE_ID::Method >(Arena* arena) {
+ return Arena::CreateInternal< PROTOBUF_NAMESPACE_ID::Method >(arena);
+}
+template<> PROTOBUF_NOINLINE PROTOBUF_NAMESPACE_ID::Mixin* Arena::CreateMaybeMessage< PROTOBUF_NAMESPACE_ID::Mixin >(Arena* arena) {
+ return Arena::CreateInternal< PROTOBUF_NAMESPACE_ID::Mixin >(arena);
+}
+PROTOBUF_NAMESPACE_CLOSE
+
+// @@protoc_insertion_point(global_scope)
+#include
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/google/protobuf/api.pb.h" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/google/protobuf/api.pb.h"
new file mode 100644
index 00000000..b00b88dc
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/google/protobuf/api.pb.h"
@@ -0,0 +1,1433 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: google/protobuf/api.proto
+
+#ifndef GOOGLE_PROTOBUF_INCLUDED_google_2fprotobuf_2fapi_2eproto
+#define GOOGLE_PROTOBUF_INCLUDED_google_2fprotobuf_2fapi_2eproto
+
+#include
+#include
+
+#include
+#if PROTOBUF_VERSION < 3011000
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3011002 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include // IWYU pragma: export
+#include // IWYU pragma: export
+#include
+#include
+#include
+// @@protoc_insertion_point(includes)
+#include
+#define PROTOBUF_INTERNAL_EXPORT_google_2fprotobuf_2fapi_2eproto PROTOBUF_EXPORT
+PROTOBUF_NAMESPACE_OPEN
+namespace internal {
+class AnyMetadata;
+} // namespace internal
+PROTOBUF_NAMESPACE_CLOSE
+
+// Internal implementation detail -- do not use these members.
+struct PROTOBUF_EXPORT TableStruct_google_2fprotobuf_2fapi_2eproto {
+ static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTableField entries[]
+ PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+ static const ::PROTOBUF_NAMESPACE_ID::internal::AuxillaryParseTableField aux[]
+ PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+ static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTable schema[3]
+ PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+ static const ::PROTOBUF_NAMESPACE_ID::internal::FieldMetadata field_metadata[];
+ static const ::PROTOBUF_NAMESPACE_ID::internal::SerializationTable serialization_table[];
+ static const ::PROTOBUF_NAMESPACE_ID::uint32 offsets[];
+};
+extern PROTOBUF_EXPORT const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_google_2fprotobuf_2fapi_2eproto;
+PROTOBUF_NAMESPACE_OPEN
+class Api;
+class ApiDefaultTypeInternal;
+PROTOBUF_EXPORT extern ApiDefaultTypeInternal _Api_default_instance_;
+class Method;
+class MethodDefaultTypeInternal;
+PROTOBUF_EXPORT extern MethodDefaultTypeInternal _Method_default_instance_;
+class Mixin;
+class MixinDefaultTypeInternal;
+PROTOBUF_EXPORT extern MixinDefaultTypeInternal _Mixin_default_instance_;
+PROTOBUF_NAMESPACE_CLOSE
+PROTOBUF_NAMESPACE_OPEN
+template<> PROTOBUF_EXPORT PROTOBUF_NAMESPACE_ID::Api* Arena::CreateMaybeMessage(Arena*);
+template<> PROTOBUF_EXPORT PROTOBUF_NAMESPACE_ID::Method* Arena::CreateMaybeMessage(Arena*);
+template<> PROTOBUF_EXPORT PROTOBUF_NAMESPACE_ID::Mixin* Arena::CreateMaybeMessage(Arena*);
+PROTOBUF_NAMESPACE_CLOSE
+PROTOBUF_NAMESPACE_OPEN
+
+// ===================================================================
+
+class PROTOBUF_EXPORT Api :
+ public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.Api) */ {
+ public:
+ Api();
+ virtual ~Api();
+
+ Api(const Api& from);
+ Api(Api&& from) noexcept
+ : Api() {
+ *this = ::std::move(from);
+ }
+
+ inline Api& operator=(const Api& from) {
+ CopyFrom(from);
+ return *this;
+ }
+ inline Api& operator=(Api&& from) noexcept {
+ if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+ if (this != &from) InternalSwap(&from);
+ } else {
+ CopyFrom(from);
+ }
+ return *this;
+ }
+
+ static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
+ return GetDescriptor();
+ }
+ static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
+ return GetMetadataStatic().descriptor;
+ }
+ static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
+ return GetMetadataStatic().reflection;
+ }
+ static const Api& default_instance();
+
+ static void InitAsDefaultInstance(); // FOR INTERNAL USE ONLY
+ static inline const Api* internal_default_instance() {
+ return reinterpret_cast(
+ &_Api_default_instance_);
+ }
+ static constexpr int kIndexInFileMessages =
+ 0;
+
+ friend void swap(Api& a, Api& b) {
+ a.Swap(&b);
+ }
+ inline void Swap(Api* other) {
+ if (other == this) return;
+ InternalSwap(other);
+ }
+
+ // implements Message ----------------------------------------------
+
+ inline Api* New() const final {
+ return CreateMaybeMessage(nullptr);
+ }
+
+ Api* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
+ return CreateMaybeMessage(arena);
+ }
+ void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
+ void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
+ void CopyFrom(const Api& from);
+ void MergeFrom(const Api& from);
+ PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
+ bool IsInitialized() const final;
+
+ size_t ByteSizeLong() const final;
+ const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
+ ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
+ ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
+ int GetCachedSize() const final { return _cached_size_.Get(); }
+
+ private:
+ inline void SharedCtor();
+ inline void SharedDtor();
+ void SetCachedSize(int size) const final;
+ void InternalSwap(Api* other);
+ friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
+ static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
+ return "google.protobuf.Api";
+ }
+ private:
+ inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
+ return nullptr;
+ }
+ inline void* MaybeArenaPtr() const {
+ return nullptr;
+ }
+ public:
+
+ ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
+ private:
+ static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
+ ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_google_2fprotobuf_2fapi_2eproto);
+ return ::descriptor_table_google_2fprotobuf_2fapi_2eproto.file_level_metadata[kIndexInFileMessages];
+ }
+
+ public:
+
+ // nested types ----------------------------------------------------
+
+ // accessors -------------------------------------------------------
+
+ enum : int {
+ kMethodsFieldNumber = 2,
+ kOptionsFieldNumber = 3,
+ kMixinsFieldNumber = 6,
+ kNameFieldNumber = 1,
+ kVersionFieldNumber = 4,
+ kSourceContextFieldNumber = 5,
+ kSyntaxFieldNumber = 7,
+ };
+ // repeated .google.protobuf.Method methods = 2;
+ int methods_size() const;
+ private:
+ int _internal_methods_size() const;
+ public:
+ void clear_methods();
+ PROTOBUF_NAMESPACE_ID::Method* mutable_methods(int index);
+ ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< PROTOBUF_NAMESPACE_ID::Method >*
+ mutable_methods();
+ private:
+ const PROTOBUF_NAMESPACE_ID::Method& _internal_methods(int index) const;
+ PROTOBUF_NAMESPACE_ID::Method* _internal_add_methods();
+ public:
+ const PROTOBUF_NAMESPACE_ID::Method& methods(int index) const;
+ PROTOBUF_NAMESPACE_ID::Method* add_methods();
+ const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< PROTOBUF_NAMESPACE_ID::Method >&
+ methods() const;
+
+ // repeated .google.protobuf.Option options = 3;
+ int options_size() const;
+ private:
+ int _internal_options_size() const;
+ public:
+ void clear_options();
+ PROTOBUF_NAMESPACE_ID::Option* mutable_options(int index);
+ ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< PROTOBUF_NAMESPACE_ID::Option >*
+ mutable_options();
+ private:
+ const PROTOBUF_NAMESPACE_ID::Option& _internal_options(int index) const;
+ PROTOBUF_NAMESPACE_ID::Option* _internal_add_options();
+ public:
+ const PROTOBUF_NAMESPACE_ID::Option& options(int index) const;
+ PROTOBUF_NAMESPACE_ID::Option* add_options();
+ const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< PROTOBUF_NAMESPACE_ID::Option >&
+ options() const;
+
+ // repeated .google.protobuf.Mixin mixins = 6;
+ int mixins_size() const;
+ private:
+ int _internal_mixins_size() const;
+ public:
+ void clear_mixins();
+ PROTOBUF_NAMESPACE_ID::Mixin* mutable_mixins(int index);
+ ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< PROTOBUF_NAMESPACE_ID::Mixin >*
+ mutable_mixins();
+ private:
+ const PROTOBUF_NAMESPACE_ID::Mixin& _internal_mixins(int index) const;
+ PROTOBUF_NAMESPACE_ID::Mixin* _internal_add_mixins();
+ public:
+ const PROTOBUF_NAMESPACE_ID::Mixin& mixins(int index) const;
+ PROTOBUF_NAMESPACE_ID::Mixin* add_mixins();
+ const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< PROTOBUF_NAMESPACE_ID::Mixin >&
+ mixins() const;
+
+ // string name = 1;
+ void clear_name();
+ const std::string& name() const;
+ void set_name(const std::string& value);
+ void set_name(std::string&& value);
+ void set_name(const char* value);
+ void set_name(const char* value, size_t size);
+ std::string* mutable_name();
+ std::string* release_name();
+ void set_allocated_name(std::string* name);
+ private:
+ const std::string& _internal_name() const;
+ void _internal_set_name(const std::string& value);
+ std::string* _internal_mutable_name();
+ public:
+
+ // string version = 4;
+ void clear_version();
+ const std::string& version() const;
+ void set_version(const std::string& value);
+ void set_version(std::string&& value);
+ void set_version(const char* value);
+ void set_version(const char* value, size_t size);
+ std::string* mutable_version();
+ std::string* release_version();
+ void set_allocated_version(std::string* version);
+ private:
+ const std::string& _internal_version() const;
+ void _internal_set_version(const std::string& value);
+ std::string* _internal_mutable_version();
+ public:
+
+ // .google.protobuf.SourceContext source_context = 5;
+ bool has_source_context() const;
+ private:
+ bool _internal_has_source_context() const;
+ public:
+ void clear_source_context();
+ const PROTOBUF_NAMESPACE_ID::SourceContext& source_context() const;
+ PROTOBUF_NAMESPACE_ID::SourceContext* release_source_context();
+ PROTOBUF_NAMESPACE_ID::SourceContext* mutable_source_context();
+ void set_allocated_source_context(PROTOBUF_NAMESPACE_ID::SourceContext* source_context);
+ private:
+ const PROTOBUF_NAMESPACE_ID::SourceContext& _internal_source_context() const;
+ PROTOBUF_NAMESPACE_ID::SourceContext* _internal_mutable_source_context();
+ public:
+
+ // .google.protobuf.Syntax syntax = 7;
+ void clear_syntax();
+ PROTOBUF_NAMESPACE_ID::Syntax syntax() const;
+ void set_syntax(PROTOBUF_NAMESPACE_ID::Syntax value);
+ private:
+ PROTOBUF_NAMESPACE_ID::Syntax _internal_syntax() const;
+ void _internal_set_syntax(PROTOBUF_NAMESPACE_ID::Syntax value);
+ public:
+
+ // @@protoc_insertion_point(class_scope:google.protobuf.Api)
+ private:
+ class _Internal;
+
+ ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
+ ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< PROTOBUF_NAMESPACE_ID::Method > methods_;
+ ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< PROTOBUF_NAMESPACE_ID::Option > options_;
+ ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< PROTOBUF_NAMESPACE_ID::Mixin > mixins_;
+ ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_;
+ ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr version_;
+ PROTOBUF_NAMESPACE_ID::SourceContext* source_context_;
+ int syntax_;
+ mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
+ friend struct ::TableStruct_google_2fprotobuf_2fapi_2eproto;
+};
+// -------------------------------------------------------------------
+
+class PROTOBUF_EXPORT Method :
+ public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.Method) */ {
+ public:
+ Method();
+ virtual ~Method();
+
+ Method(const Method& from);
+ Method(Method&& from) noexcept
+ : Method() {
+ *this = ::std::move(from);
+ }
+
+ inline Method& operator=(const Method& from) {
+ CopyFrom(from);
+ return *this;
+ }
+ inline Method& operator=(Method&& from) noexcept {
+ if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+ if (this != &from) InternalSwap(&from);
+ } else {
+ CopyFrom(from);
+ }
+ return *this;
+ }
+
+ static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
+ return GetDescriptor();
+ }
+ static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
+ return GetMetadataStatic().descriptor;
+ }
+ static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
+ return GetMetadataStatic().reflection;
+ }
+ static const Method& default_instance();
+
+ static void InitAsDefaultInstance(); // FOR INTERNAL USE ONLY
+ static inline const Method* internal_default_instance() {
+ return reinterpret_cast(
+ &_Method_default_instance_);
+ }
+ static constexpr int kIndexInFileMessages =
+ 1;
+
+ friend void swap(Method& a, Method& b) {
+ a.Swap(&b);
+ }
+ inline void Swap(Method* other) {
+ if (other == this) return;
+ InternalSwap(other);
+ }
+
+ // implements Message ----------------------------------------------
+
+ inline Method* New() const final {
+ return CreateMaybeMessage(nullptr);
+ }
+
+ Method* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
+ return CreateMaybeMessage(arena);
+ }
+ void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
+ void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
+ void CopyFrom(const Method& from);
+ void MergeFrom(const Method& from);
+ PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
+ bool IsInitialized() const final;
+
+ size_t ByteSizeLong() const final;
+ const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
+ ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
+ ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
+ int GetCachedSize() const final { return _cached_size_.Get(); }
+
+ private:
+ inline void SharedCtor();
+ inline void SharedDtor();
+ void SetCachedSize(int size) const final;
+ void InternalSwap(Method* other);
+ friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
+ static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
+ return "google.protobuf.Method";
+ }
+ private:
+ inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
+ return nullptr;
+ }
+ inline void* MaybeArenaPtr() const {
+ return nullptr;
+ }
+ public:
+
+ ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
+ private:
+ static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
+ ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_google_2fprotobuf_2fapi_2eproto);
+ return ::descriptor_table_google_2fprotobuf_2fapi_2eproto.file_level_metadata[kIndexInFileMessages];
+ }
+
+ public:
+
+ // nested types ----------------------------------------------------
+
+ // accessors -------------------------------------------------------
+
+ enum : int {
+ kOptionsFieldNumber = 6,
+ kNameFieldNumber = 1,
+ kRequestTypeUrlFieldNumber = 2,
+ kResponseTypeUrlFieldNumber = 4,
+ kRequestStreamingFieldNumber = 3,
+ kResponseStreamingFieldNumber = 5,
+ kSyntaxFieldNumber = 7,
+ };
+ // repeated .google.protobuf.Option options = 6;
+ int options_size() const;
+ private:
+ int _internal_options_size() const;
+ public:
+ void clear_options();
+ PROTOBUF_NAMESPACE_ID::Option* mutable_options(int index);
+ ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< PROTOBUF_NAMESPACE_ID::Option >*
+ mutable_options();
+ private:
+ const PROTOBUF_NAMESPACE_ID::Option& _internal_options(int index) const;
+ PROTOBUF_NAMESPACE_ID::Option* _internal_add_options();
+ public:
+ const PROTOBUF_NAMESPACE_ID::Option& options(int index) const;
+ PROTOBUF_NAMESPACE_ID::Option* add_options();
+ const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< PROTOBUF_NAMESPACE_ID::Option >&
+ options() const;
+
+ // string name = 1;
+ void clear_name();
+ const std::string& name() const;
+ void set_name(const std::string& value);
+ void set_name(std::string&& value);
+ void set_name(const char* value);
+ void set_name(const char* value, size_t size);
+ std::string* mutable_name();
+ std::string* release_name();
+ void set_allocated_name(std::string* name);
+ private:
+ const std::string& _internal_name() const;
+ void _internal_set_name(const std::string& value);
+ std::string* _internal_mutable_name();
+ public:
+
+ // string request_type_url = 2;
+ void clear_request_type_url();
+ const std::string& request_type_url() const;
+ void set_request_type_url(const std::string& value);
+ void set_request_type_url(std::string&& value);
+ void set_request_type_url(const char* value);
+ void set_request_type_url(const char* value, size_t size);
+ std::string* mutable_request_type_url();
+ std::string* release_request_type_url();
+ void set_allocated_request_type_url(std::string* request_type_url);
+ private:
+ const std::string& _internal_request_type_url() const;
+ void _internal_set_request_type_url(const std::string& value);
+ std::string* _internal_mutable_request_type_url();
+ public:
+
+ // string response_type_url = 4;
+ void clear_response_type_url();
+ const std::string& response_type_url() const;
+ void set_response_type_url(const std::string& value);
+ void set_response_type_url(std::string&& value);
+ void set_response_type_url(const char* value);
+ void set_response_type_url(const char* value, size_t size);
+ std::string* mutable_response_type_url();
+ std::string* release_response_type_url();
+ void set_allocated_response_type_url(std::string* response_type_url);
+ private:
+ const std::string& _internal_response_type_url() const;
+ void _internal_set_response_type_url(const std::string& value);
+ std::string* _internal_mutable_response_type_url();
+ public:
+
+ // bool request_streaming = 3;
+ void clear_request_streaming();
+ bool request_streaming() const;
+ void set_request_streaming(bool value);
+ private:
+ bool _internal_request_streaming() const;
+ void _internal_set_request_streaming(bool value);
+ public:
+
+ // bool response_streaming = 5;
+ void clear_response_streaming();
+ bool response_streaming() const;
+ void set_response_streaming(bool value);
+ private:
+ bool _internal_response_streaming() const;
+ void _internal_set_response_streaming(bool value);
+ public:
+
+ // .google.protobuf.Syntax syntax = 7;
+ void clear_syntax();
+ PROTOBUF_NAMESPACE_ID::Syntax syntax() const;
+ void set_syntax(PROTOBUF_NAMESPACE_ID::Syntax value);
+ private:
+ PROTOBUF_NAMESPACE_ID::Syntax _internal_syntax() const;
+ void _internal_set_syntax(PROTOBUF_NAMESPACE_ID::Syntax value);
+ public:
+
+ // @@protoc_insertion_point(class_scope:google.protobuf.Method)
+ private:
+ class _Internal;
+
+ ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
+ ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< PROTOBUF_NAMESPACE_ID::Option > options_;
+ ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_;
+ ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr request_type_url_;
+ ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr response_type_url_;
+ bool request_streaming_;
+ bool response_streaming_;
+ int syntax_;
+ mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
+ friend struct ::TableStruct_google_2fprotobuf_2fapi_2eproto;
+};
+// -------------------------------------------------------------------
+
+class PROTOBUF_EXPORT Mixin :
+ public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.Mixin) */ {
+ public:
+ Mixin();
+ virtual ~Mixin();
+
+ Mixin(const Mixin& from);
+ Mixin(Mixin&& from) noexcept
+ : Mixin() {
+ *this = ::std::move(from);
+ }
+
+ inline Mixin& operator=(const Mixin& from) {
+ CopyFrom(from);
+ return *this;
+ }
+ inline Mixin& operator=(Mixin&& from) noexcept {
+ if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+ if (this != &from) InternalSwap(&from);
+ } else {
+ CopyFrom(from);
+ }
+ return *this;
+ }
+
+ static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
+ return GetDescriptor();
+ }
+ static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
+ return GetMetadataStatic().descriptor;
+ }
+ static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
+ return GetMetadataStatic().reflection;
+ }
+ static const Mixin& default_instance();
+
+ static void InitAsDefaultInstance(); // FOR INTERNAL USE ONLY
+ static inline const Mixin* internal_default_instance() {
+ return reinterpret_cast(
+ &_Mixin_default_instance_);
+ }
+ static constexpr int kIndexInFileMessages =
+ 2;
+
+ friend void swap(Mixin& a, Mixin& b) {
+ a.Swap(&b);
+ }
+ inline void Swap(Mixin* other) {
+ if (other == this) return;
+ InternalSwap(other);
+ }
+
+ // implements Message ----------------------------------------------
+
+ inline Mixin* New() const final {
+ return CreateMaybeMessage(nullptr);
+ }
+
+ Mixin* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
+ return CreateMaybeMessage(arena);
+ }
+ void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
+ void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
+ void CopyFrom(const Mixin& from);
+ void MergeFrom(const Mixin& from);
+ PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
+ bool IsInitialized() const final;
+
+ size_t ByteSizeLong() const final;
+ const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
+ ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
+ ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
+ int GetCachedSize() const final { return _cached_size_.Get(); }
+
+ private:
+ inline void SharedCtor();
+ inline void SharedDtor();
+ void SetCachedSize(int size) const final;
+ void InternalSwap(Mixin* other);
+ friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
+ static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
+ return "google.protobuf.Mixin";
+ }
+ private:
+ inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
+ return nullptr;
+ }
+ inline void* MaybeArenaPtr() const {
+ return nullptr;
+ }
+ public:
+
+ ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
+ private:
+ static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
+ ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_google_2fprotobuf_2fapi_2eproto);
+ return ::descriptor_table_google_2fprotobuf_2fapi_2eproto.file_level_metadata[kIndexInFileMessages];
+ }
+
+ public:
+
+ // nested types ----------------------------------------------------
+
+ // accessors -------------------------------------------------------
+
+ enum : int {
+ kNameFieldNumber = 1,
+ kRootFieldNumber = 2,
+ };
+ // string name = 1;
+ void clear_name();
+ const std::string& name() const;
+ void set_name(const std::string& value);
+ void set_name(std::string&& value);
+ void set_name(const char* value);
+ void set_name(const char* value, size_t size);
+ std::string* mutable_name();
+ std::string* release_name();
+ void set_allocated_name(std::string* name);
+ private:
+ const std::string& _internal_name() const;
+ void _internal_set_name(const std::string& value);
+ std::string* _internal_mutable_name();
+ public:
+
+ // string root = 2;
+ void clear_root();
+ const std::string& root() const;
+ void set_root(const std::string& value);
+ void set_root(std::string&& value);
+ void set_root(const char* value);
+ void set_root(const char* value, size_t size);
+ std::string* mutable_root();
+ std::string* release_root();
+ void set_allocated_root(std::string* root);
+ private:
+ const std::string& _internal_root() const;
+ void _internal_set_root(const std::string& value);
+ std::string* _internal_mutable_root();
+ public:
+
+ // @@protoc_insertion_point(class_scope:google.protobuf.Mixin)
+ private:
+ class _Internal;
+
+ ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
+ ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_;
+ ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr root_;
+ mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
+ friend struct ::TableStruct_google_2fprotobuf_2fapi_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif // __GNUC__
+// Api
+
+// string name = 1;
+inline void Api::clear_name() {
+ name_.ClearToEmptyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+}
+inline const std::string& Api::name() const {
+ // @@protoc_insertion_point(field_get:google.protobuf.Api.name)
+ return _internal_name();
+}
+inline void Api::set_name(const std::string& value) {
+ _internal_set_name(value);
+ // @@protoc_insertion_point(field_set:google.protobuf.Api.name)
+}
+inline std::string* Api::mutable_name() {
+ // @@protoc_insertion_point(field_mutable:google.protobuf.Api.name)
+ return _internal_mutable_name();
+}
+inline const std::string& Api::_internal_name() const {
+ return name_.GetNoArena();
+}
+inline void Api::_internal_set_name(const std::string& value) {
+
+ name_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), value);
+}
+inline void Api::set_name(std::string&& value) {
+
+ name_.SetNoArena(
+ &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
+ // @@protoc_insertion_point(field_set_rvalue:google.protobuf.Api.name)
+}
+inline void Api::set_name(const char* value) {
+ GOOGLE_DCHECK(value != nullptr);
+
+ name_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+ // @@protoc_insertion_point(field_set_char:google.protobuf.Api.name)
+}
+inline void Api::set_name(const char* value, size_t size) {
+
+ name_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
+ ::std::string(reinterpret_cast(value), size));
+ // @@protoc_insertion_point(field_set_pointer:google.protobuf.Api.name)
+}
+inline std::string* Api::_internal_mutable_name() {
+
+ return name_.MutableNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+}
+inline std::string* Api::release_name() {
+ // @@protoc_insertion_point(field_release:google.protobuf.Api.name)
+
+ return name_.ReleaseNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+}
+inline void Api::set_allocated_name(std::string* name) {
+ if (name != nullptr) {
+
+ } else {
+
+ }
+ name_.SetAllocatedNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name);
+ // @@protoc_insertion_point(field_set_allocated:google.protobuf.Api.name)
+}
+
+// repeated .google.protobuf.Method methods = 2;
+inline int Api::_internal_methods_size() const {
+ return methods_.size();
+}
+inline int Api::methods_size() const {
+ return _internal_methods_size();
+}
+inline void Api::clear_methods() {
+ methods_.Clear();
+}
+inline PROTOBUF_NAMESPACE_ID::Method* Api::mutable_methods(int index) {
+ // @@protoc_insertion_point(field_mutable:google.protobuf.Api.methods)
+ return methods_.Mutable(index);
+}
+inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< PROTOBUF_NAMESPACE_ID::Method >*
+Api::mutable_methods() {
+ // @@protoc_insertion_point(field_mutable_list:google.protobuf.Api.methods)
+ return &methods_;
+}
+inline const PROTOBUF_NAMESPACE_ID::Method& Api::_internal_methods(int index) const {
+ return methods_.Get(index);
+}
+inline const PROTOBUF_NAMESPACE_ID::Method& Api::methods(int index) const {
+ // @@protoc_insertion_point(field_get:google.protobuf.Api.methods)
+ return _internal_methods(index);
+}
+inline PROTOBUF_NAMESPACE_ID::Method* Api::_internal_add_methods() {
+ return methods_.Add();
+}
+inline PROTOBUF_NAMESPACE_ID::Method* Api::add_methods() {
+ // @@protoc_insertion_point(field_add:google.protobuf.Api.methods)
+ return _internal_add_methods();
+}
+inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< PROTOBUF_NAMESPACE_ID::Method >&
+Api::methods() const {
+ // @@protoc_insertion_point(field_list:google.protobuf.Api.methods)
+ return methods_;
+}
+
+// repeated .google.protobuf.Option options = 3;
+inline int Api::_internal_options_size() const {
+ return options_.size();
+}
+inline int Api::options_size() const {
+ return _internal_options_size();
+}
+inline PROTOBUF_NAMESPACE_ID::Option* Api::mutable_options(int index) {
+ // @@protoc_insertion_point(field_mutable:google.protobuf.Api.options)
+ return options_.Mutable(index);
+}
+inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< PROTOBUF_NAMESPACE_ID::Option >*
+Api::mutable_options() {
+ // @@protoc_insertion_point(field_mutable_list:google.protobuf.Api.options)
+ return &options_;
+}
+inline const PROTOBUF_NAMESPACE_ID::Option& Api::_internal_options(int index) const {
+ return options_.Get(index);
+}
+inline const PROTOBUF_NAMESPACE_ID::Option& Api::options(int index) const {
+ // @@protoc_insertion_point(field_get:google.protobuf.Api.options)
+ return _internal_options(index);
+}
+inline PROTOBUF_NAMESPACE_ID::Option* Api::_internal_add_options() {
+ return options_.Add();
+}
+inline PROTOBUF_NAMESPACE_ID::Option* Api::add_options() {
+ // @@protoc_insertion_point(field_add:google.protobuf.Api.options)
+ return _internal_add_options();
+}
+inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< PROTOBUF_NAMESPACE_ID::Option >&
+Api::options() const {
+ // @@protoc_insertion_point(field_list:google.protobuf.Api.options)
+ return options_;
+}
+
+// string version = 4;
+inline void Api::clear_version() {
+ version_.ClearToEmptyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+}
+inline const std::string& Api::version() const {
+ // @@protoc_insertion_point(field_get:google.protobuf.Api.version)
+ return _internal_version();
+}
+inline void Api::set_version(const std::string& value) {
+ _internal_set_version(value);
+ // @@protoc_insertion_point(field_set:google.protobuf.Api.version)
+}
+inline std::string* Api::mutable_version() {
+ // @@protoc_insertion_point(field_mutable:google.protobuf.Api.version)
+ return _internal_mutable_version();
+}
+inline const std::string& Api::_internal_version() const {
+ return version_.GetNoArena();
+}
+inline void Api::_internal_set_version(const std::string& value) {
+
+ version_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), value);
+}
+inline void Api::set_version(std::string&& value) {
+
+ version_.SetNoArena(
+ &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
+ // @@protoc_insertion_point(field_set_rvalue:google.protobuf.Api.version)
+}
+inline void Api::set_version(const char* value) {
+ GOOGLE_DCHECK(value != nullptr);
+
+ version_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+ // @@protoc_insertion_point(field_set_char:google.protobuf.Api.version)
+}
+inline void Api::set_version(const char* value, size_t size) {
+
+ version_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
+ ::std::string(reinterpret_cast(value), size));
+ // @@protoc_insertion_point(field_set_pointer:google.protobuf.Api.version)
+}
+inline std::string* Api::_internal_mutable_version() {
+
+ return version_.MutableNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+}
+inline std::string* Api::release_version() {
+ // @@protoc_insertion_point(field_release:google.protobuf.Api.version)
+
+ return version_.ReleaseNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+}
+inline void Api::set_allocated_version(std::string* version) {
+ if (version != nullptr) {
+
+ } else {
+
+ }
+ version_.SetAllocatedNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), version);
+ // @@protoc_insertion_point(field_set_allocated:google.protobuf.Api.version)
+}
+
+// .google.protobuf.SourceContext source_context = 5;
+inline bool Api::_internal_has_source_context() const {
+ return this != internal_default_instance() && source_context_ != nullptr;
+}
+inline bool Api::has_source_context() const {
+ return _internal_has_source_context();
+}
+inline const PROTOBUF_NAMESPACE_ID::SourceContext& Api::_internal_source_context() const {
+ const PROTOBUF_NAMESPACE_ID::SourceContext* p = source_context_;
+ return p != nullptr ? *p : *reinterpret_cast(
+ &PROTOBUF_NAMESPACE_ID::_SourceContext_default_instance_);
+}
+inline const PROTOBUF_NAMESPACE_ID::SourceContext& Api::source_context() const {
+ // @@protoc_insertion_point(field_get:google.protobuf.Api.source_context)
+ return _internal_source_context();
+}
+inline PROTOBUF_NAMESPACE_ID::SourceContext* Api::release_source_context() {
+ // @@protoc_insertion_point(field_release:google.protobuf.Api.source_context)
+
+ PROTOBUF_NAMESPACE_ID::SourceContext* temp = source_context_;
+ source_context_ = nullptr;
+ return temp;
+}
+inline PROTOBUF_NAMESPACE_ID::SourceContext* Api::_internal_mutable_source_context() {
+
+ if (source_context_ == nullptr) {
+ auto* p = CreateMaybeMessage(GetArenaNoVirtual());
+ source_context_ = p;
+ }
+ return source_context_;
+}
+inline PROTOBUF_NAMESPACE_ID::SourceContext* Api::mutable_source_context() {
+ // @@protoc_insertion_point(field_mutable:google.protobuf.Api.source_context)
+ return _internal_mutable_source_context();
+}
+inline void Api::set_allocated_source_context(PROTOBUF_NAMESPACE_ID::SourceContext* source_context) {
+ ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaNoVirtual();
+ if (message_arena == nullptr) {
+ delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(source_context_);
+ }
+ if (source_context) {
+ ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = nullptr;
+ if (message_arena != submessage_arena) {
+ source_context = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
+ message_arena, source_context, submessage_arena);
+ }
+
+ } else {
+
+ }
+ source_context_ = source_context;
+ // @@protoc_insertion_point(field_set_allocated:google.protobuf.Api.source_context)
+}
+
+// repeated .google.protobuf.Mixin mixins = 6;
+inline int Api::_internal_mixins_size() const {
+ return mixins_.size();
+}
+inline int Api::mixins_size() const {
+ return _internal_mixins_size();
+}
+inline void Api::clear_mixins() {
+ mixins_.Clear();
+}
+inline PROTOBUF_NAMESPACE_ID::Mixin* Api::mutable_mixins(int index) {
+ // @@protoc_insertion_point(field_mutable:google.protobuf.Api.mixins)
+ return mixins_.Mutable(index);
+}
+inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< PROTOBUF_NAMESPACE_ID::Mixin >*
+Api::mutable_mixins() {
+ // @@protoc_insertion_point(field_mutable_list:google.protobuf.Api.mixins)
+ return &mixins_;
+}
+inline const PROTOBUF_NAMESPACE_ID::Mixin& Api::_internal_mixins(int index) const {
+ return mixins_.Get(index);
+}
+inline const PROTOBUF_NAMESPACE_ID::Mixin& Api::mixins(int index) const {
+ // @@protoc_insertion_point(field_get:google.protobuf.Api.mixins)
+ return _internal_mixins(index);
+}
+inline PROTOBUF_NAMESPACE_ID::Mixin* Api::_internal_add_mixins() {
+ return mixins_.Add();
+}
+inline PROTOBUF_NAMESPACE_ID::Mixin* Api::add_mixins() {
+ // @@protoc_insertion_point(field_add:google.protobuf.Api.mixins)
+ return _internal_add_mixins();
+}
+inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< PROTOBUF_NAMESPACE_ID::Mixin >&
+Api::mixins() const {
+ // @@protoc_insertion_point(field_list:google.protobuf.Api.mixins)
+ return mixins_;
+}
+
+// .google.protobuf.Syntax syntax = 7;
+inline void Api::clear_syntax() {
+ syntax_ = 0;
+}
+inline PROTOBUF_NAMESPACE_ID::Syntax Api::_internal_syntax() const {
+ return static_cast< PROTOBUF_NAMESPACE_ID::Syntax >(syntax_);
+}
+inline PROTOBUF_NAMESPACE_ID::Syntax Api::syntax() const {
+ // @@protoc_insertion_point(field_get:google.protobuf.Api.syntax)
+ return _internal_syntax();
+}
+inline void Api::_internal_set_syntax(PROTOBUF_NAMESPACE_ID::Syntax value) {
+
+ syntax_ = value;
+}
+inline void Api::set_syntax(PROTOBUF_NAMESPACE_ID::Syntax value) {
+ _internal_set_syntax(value);
+ // @@protoc_insertion_point(field_set:google.protobuf.Api.syntax)
+}
+
+// -------------------------------------------------------------------
+
+// Method
+
+// string name = 1;
+inline void Method::clear_name() {
+ name_.ClearToEmptyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+}
+inline const std::string& Method::name() const {
+ // @@protoc_insertion_point(field_get:google.protobuf.Method.name)
+ return _internal_name();
+}
+inline void Method::set_name(const std::string& value) {
+ _internal_set_name(value);
+ // @@protoc_insertion_point(field_set:google.protobuf.Method.name)
+}
+inline std::string* Method::mutable_name() {
+ // @@protoc_insertion_point(field_mutable:google.protobuf.Method.name)
+ return _internal_mutable_name();
+}
+inline const std::string& Method::_internal_name() const {
+ return name_.GetNoArena();
+}
+inline void Method::_internal_set_name(const std::string& value) {
+
+ name_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), value);
+}
+inline void Method::set_name(std::string&& value) {
+
+ name_.SetNoArena(
+ &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
+ // @@protoc_insertion_point(field_set_rvalue:google.protobuf.Method.name)
+}
+inline void Method::set_name(const char* value) {
+ GOOGLE_DCHECK(value != nullptr);
+
+ name_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+ // @@protoc_insertion_point(field_set_char:google.protobuf.Method.name)
+}
+inline void Method::set_name(const char* value, size_t size) {
+
+ name_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
+ ::std::string(reinterpret_cast(value), size));
+ // @@protoc_insertion_point(field_set_pointer:google.protobuf.Method.name)
+}
+inline std::string* Method::_internal_mutable_name() {
+
+ return name_.MutableNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+}
+inline std::string* Method::release_name() {
+ // @@protoc_insertion_point(field_release:google.protobuf.Method.name)
+
+ return name_.ReleaseNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+}
+inline void Method::set_allocated_name(std::string* name) {
+ if (name != nullptr) {
+
+ } else {
+
+ }
+ name_.SetAllocatedNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name);
+ // @@protoc_insertion_point(field_set_allocated:google.protobuf.Method.name)
+}
+
+// string request_type_url = 2;
+inline void Method::clear_request_type_url() {
+ request_type_url_.ClearToEmptyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+}
+inline const std::string& Method::request_type_url() const {
+ // @@protoc_insertion_point(field_get:google.protobuf.Method.request_type_url)
+ return _internal_request_type_url();
+}
+inline void Method::set_request_type_url(const std::string& value) {
+ _internal_set_request_type_url(value);
+ // @@protoc_insertion_point(field_set:google.protobuf.Method.request_type_url)
+}
+inline std::string* Method::mutable_request_type_url() {
+ // @@protoc_insertion_point(field_mutable:google.protobuf.Method.request_type_url)
+ return _internal_mutable_request_type_url();
+}
+inline const std::string& Method::_internal_request_type_url() const {
+ return request_type_url_.GetNoArena();
+}
+inline void Method::_internal_set_request_type_url(const std::string& value) {
+
+ request_type_url_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), value);
+}
+inline void Method::set_request_type_url(std::string&& value) {
+
+ request_type_url_.SetNoArena(
+ &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
+ // @@protoc_insertion_point(field_set_rvalue:google.protobuf.Method.request_type_url)
+}
+inline void Method::set_request_type_url(const char* value) {
+ GOOGLE_DCHECK(value != nullptr);
+
+ request_type_url_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+ // @@protoc_insertion_point(field_set_char:google.protobuf.Method.request_type_url)
+}
+inline void Method::set_request_type_url(const char* value, size_t size) {
+
+ request_type_url_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
+ ::std::string(reinterpret_cast(value), size));
+ // @@protoc_insertion_point(field_set_pointer:google.protobuf.Method.request_type_url)
+}
+inline std::string* Method::_internal_mutable_request_type_url() {
+
+ return request_type_url_.MutableNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+}
+inline std::string* Method::release_request_type_url() {
+ // @@protoc_insertion_point(field_release:google.protobuf.Method.request_type_url)
+
+ return request_type_url_.ReleaseNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+}
+inline void Method::set_allocated_request_type_url(std::string* request_type_url) {
+ if (request_type_url != nullptr) {
+
+ } else {
+
+ }
+ request_type_url_.SetAllocatedNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), request_type_url);
+ // @@protoc_insertion_point(field_set_allocated:google.protobuf.Method.request_type_url)
+}
+
+// bool request_streaming = 3;
+inline void Method::clear_request_streaming() {
+ request_streaming_ = false;
+}
+inline bool Method::_internal_request_streaming() const {
+ return request_streaming_;
+}
+inline bool Method::request_streaming() const {
+ // @@protoc_insertion_point(field_get:google.protobuf.Method.request_streaming)
+ return _internal_request_streaming();
+}
+inline void Method::_internal_set_request_streaming(bool value) {
+
+ request_streaming_ = value;
+}
+inline void Method::set_request_streaming(bool value) {
+ _internal_set_request_streaming(value);
+ // @@protoc_insertion_point(field_set:google.protobuf.Method.request_streaming)
+}
+
+// string response_type_url = 4;
+inline void Method::clear_response_type_url() {
+ response_type_url_.ClearToEmptyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+}
+inline const std::string& Method::response_type_url() const {
+ // @@protoc_insertion_point(field_get:google.protobuf.Method.response_type_url)
+ return _internal_response_type_url();
+}
+inline void Method::set_response_type_url(const std::string& value) {
+ _internal_set_response_type_url(value);
+ // @@protoc_insertion_point(field_set:google.protobuf.Method.response_type_url)
+}
+inline std::string* Method::mutable_response_type_url() {
+ // @@protoc_insertion_point(field_mutable:google.protobuf.Method.response_type_url)
+ return _internal_mutable_response_type_url();
+}
+inline const std::string& Method::_internal_response_type_url() const {
+ return response_type_url_.GetNoArena();
+}
+inline void Method::_internal_set_response_type_url(const std::string& value) {
+
+ response_type_url_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), value);
+}
+inline void Method::set_response_type_url(std::string&& value) {
+
+ response_type_url_.SetNoArena(
+ &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
+ // @@protoc_insertion_point(field_set_rvalue:google.protobuf.Method.response_type_url)
+}
+inline void Method::set_response_type_url(const char* value) {
+ GOOGLE_DCHECK(value != nullptr);
+
+ response_type_url_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+ // @@protoc_insertion_point(field_set_char:google.protobuf.Method.response_type_url)
+}
+inline void Method::set_response_type_url(const char* value, size_t size) {
+
+ response_type_url_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
+ ::std::string(reinterpret_cast(value), size));
+ // @@protoc_insertion_point(field_set_pointer:google.protobuf.Method.response_type_url)
+}
+inline std::string* Method::_internal_mutable_response_type_url() {
+
+ return response_type_url_.MutableNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+}
+inline std::string* Method::release_response_type_url() {
+ // @@protoc_insertion_point(field_release:google.protobuf.Method.response_type_url)
+
+ return response_type_url_.ReleaseNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+}
+inline void Method::set_allocated_response_type_url(std::string* response_type_url) {
+ if (response_type_url != nullptr) {
+
+ } else {
+
+ }
+ response_type_url_.SetAllocatedNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), response_type_url);
+ // @@protoc_insertion_point(field_set_allocated:google.protobuf.Method.response_type_url)
+}
+
+// bool response_streaming = 5;
+inline void Method::clear_response_streaming() {
+ response_streaming_ = false;
+}
+inline bool Method::_internal_response_streaming() const {
+ return response_streaming_;
+}
+inline bool Method::response_streaming() const {
+ // @@protoc_insertion_point(field_get:google.protobuf.Method.response_streaming)
+ return _internal_response_streaming();
+}
+inline void Method::_internal_set_response_streaming(bool value) {
+
+ response_streaming_ = value;
+}
+inline void Method::set_response_streaming(bool value) {
+ _internal_set_response_streaming(value);
+ // @@protoc_insertion_point(field_set:google.protobuf.Method.response_streaming)
+}
+
+// repeated .google.protobuf.Option options = 6;
+inline int Method::_internal_options_size() const {
+ return options_.size();
+}
+inline int Method::options_size() const {
+ return _internal_options_size();
+}
+inline PROTOBUF_NAMESPACE_ID::Option* Method::mutable_options(int index) {
+ // @@protoc_insertion_point(field_mutable:google.protobuf.Method.options)
+ return options_.Mutable(index);
+}
+inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< PROTOBUF_NAMESPACE_ID::Option >*
+Method::mutable_options() {
+ // @@protoc_insertion_point(field_mutable_list:google.protobuf.Method.options)
+ return &options_;
+}
+inline const PROTOBUF_NAMESPACE_ID::Option& Method::_internal_options(int index) const {
+ return options_.Get(index);
+}
+inline const PROTOBUF_NAMESPACE_ID::Option& Method::options(int index) const {
+ // @@protoc_insertion_point(field_get:google.protobuf.Method.options)
+ return _internal_options(index);
+}
+inline PROTOBUF_NAMESPACE_ID::Option* Method::_internal_add_options() {
+ return options_.Add();
+}
+inline PROTOBUF_NAMESPACE_ID::Option* Method::add_options() {
+ // @@protoc_insertion_point(field_add:google.protobuf.Method.options)
+ return _internal_add_options();
+}
+inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< PROTOBUF_NAMESPACE_ID::Option >&
+Method::options() const {
+ // @@protoc_insertion_point(field_list:google.protobuf.Method.options)
+ return options_;
+}
+
+// .google.protobuf.Syntax syntax = 7;
+inline void Method::clear_syntax() {
+ syntax_ = 0;
+}
+inline PROTOBUF_NAMESPACE_ID::Syntax Method::_internal_syntax() const {
+ return static_cast< PROTOBUF_NAMESPACE_ID::Syntax >(syntax_);
+}
+inline PROTOBUF_NAMESPACE_ID::Syntax Method::syntax() const {
+ // @@protoc_insertion_point(field_get:google.protobuf.Method.syntax)
+ return _internal_syntax();
+}
+inline void Method::_internal_set_syntax(PROTOBUF_NAMESPACE_ID::Syntax value) {
+
+ syntax_ = value;
+}
+inline void Method::set_syntax(PROTOBUF_NAMESPACE_ID::Syntax value) {
+ _internal_set_syntax(value);
+ // @@protoc_insertion_point(field_set:google.protobuf.Method.syntax)
+}
+
+// -------------------------------------------------------------------
+
+// Mixin
+
+// string name = 1;
+inline void Mixin::clear_name() {
+ name_.ClearToEmptyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+}
+inline const std::string& Mixin::name() const {
+ // @@protoc_insertion_point(field_get:google.protobuf.Mixin.name)
+ return _internal_name();
+}
+inline void Mixin::set_name(const std::string& value) {
+ _internal_set_name(value);
+ // @@protoc_insertion_point(field_set:google.protobuf.Mixin.name)
+}
+inline std::string* Mixin::mutable_name() {
+ // @@protoc_insertion_point(field_mutable:google.protobuf.Mixin.name)
+ return _internal_mutable_name();
+}
+inline const std::string& Mixin::_internal_name() const {
+ return name_.GetNoArena();
+}
+inline void Mixin::_internal_set_name(const std::string& value) {
+
+ name_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), value);
+}
+inline void Mixin::set_name(std::string&& value) {
+
+ name_.SetNoArena(
+ &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
+ // @@protoc_insertion_point(field_set_rvalue:google.protobuf.Mixin.name)
+}
+inline void Mixin::set_name(const char* value) {
+ GOOGLE_DCHECK(value != nullptr);
+
+ name_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+ // @@protoc_insertion_point(field_set_char:google.protobuf.Mixin.name)
+}
+inline void Mixin::set_name(const char* value, size_t size) {
+
+ name_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
+ ::std::string(reinterpret_cast(value), size));
+ // @@protoc_insertion_point(field_set_pointer:google.protobuf.Mixin.name)
+}
+inline std::string* Mixin::_internal_mutable_name() {
+
+ return name_.MutableNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+}
+inline std::string* Mixin::release_name() {
+ // @@protoc_insertion_point(field_release:google.protobuf.Mixin.name)
+
+ return name_.ReleaseNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+}
+inline void Mixin::set_allocated_name(std::string* name) {
+ if (name != nullptr) {
+
+ } else {
+
+ }
+ name_.SetAllocatedNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name);
+ // @@protoc_insertion_point(field_set_allocated:google.protobuf.Mixin.name)
+}
+
+// string root = 2;
+inline void Mixin::clear_root() {
+ root_.ClearToEmptyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+}
+inline const std::string& Mixin::root() const {
+ // @@protoc_insertion_point(field_get:google.protobuf.Mixin.root)
+ return _internal_root();
+}
+inline void Mixin::set_root(const std::string& value) {
+ _internal_set_root(value);
+ // @@protoc_insertion_point(field_set:google.protobuf.Mixin.root)
+}
+inline std::string* Mixin::mutable_root() {
+ // @@protoc_insertion_point(field_mutable:google.protobuf.Mixin.root)
+ return _internal_mutable_root();
+}
+inline const std::string& Mixin::_internal_root() const {
+ return root_.GetNoArena();
+}
+inline void Mixin::_internal_set_root(const std::string& value) {
+
+ root_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), value);
+}
+inline void Mixin::set_root(std::string&& value) {
+
+ root_.SetNoArena(
+ &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
+ // @@protoc_insertion_point(field_set_rvalue:google.protobuf.Mixin.root)
+}
+inline void Mixin::set_root(const char* value) {
+ GOOGLE_DCHECK(value != nullptr);
+
+ root_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+ // @@protoc_insertion_point(field_set_char:google.protobuf.Mixin.root)
+}
+inline void Mixin::set_root(const char* value, size_t size) {
+
+ root_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
+ ::std::string(reinterpret_cast(value), size));
+ // @@protoc_insertion_point(field_set_pointer:google.protobuf.Mixin.root)
+}
+inline std::string* Mixin::_internal_mutable_root() {
+
+ return root_.MutableNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+}
+inline std::string* Mixin::release_root() {
+ // @@protoc_insertion_point(field_release:google.protobuf.Mixin.root)
+
+ return root_.ReleaseNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+}
+inline void Mixin::set_allocated_root(std::string* root) {
+ if (root != nullptr) {
+
+ } else {
+
+ }
+ root_.SetAllocatedNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), root);
+ // @@protoc_insertion_point(field_set_allocated:google.protobuf.Mixin.root)
+}
+
+#ifdef __GNUC__
+ #pragma GCC diagnostic pop
+#endif // __GNUC__
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+
+// @@protoc_insertion_point(namespace_scope)
+
+PROTOBUF_NAMESPACE_CLOSE
+
+// @@protoc_insertion_point(global_scope)
+
+#include
+#endif // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_google_2fprotobuf_2fapi_2eproto
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/google/protobuf/api.proto" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/google/protobuf/api.proto"
new file mode 100644
index 00000000..f37ee2fa
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/google/protobuf/api.proto"
@@ -0,0 +1,210 @@
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc. All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto3";
+
+package google.protobuf;
+
+import "google/protobuf/source_context.proto";
+import "google/protobuf/type.proto";
+
+option csharp_namespace = "Google.Protobuf.WellKnownTypes";
+option java_package = "com.google.protobuf";
+option java_outer_classname = "ApiProto";
+option java_multiple_files = true;
+option objc_class_prefix = "GPB";
+option go_package = "google.golang.org/genproto/protobuf/api;api";
+
+// Api is a light-weight descriptor for an API Interface.
+//
+// Interfaces are also described as "protocol buffer services" in some contexts,
+// such as by the "service" keyword in a .proto file, but they are different
+// from API Services, which represent a concrete implementation of an interface
+// as opposed to simply a description of methods and bindings. They are also
+// sometimes simply referred to as "APIs" in other contexts, such as the name of
+// this message itself. See https://cloud.google.com/apis/design/glossary for
+// detailed terminology.
+message Api {
+
+ // The fully qualified name of this interface, including package name
+ // followed by the interface's simple name.
+ string name = 1;
+
+ // The methods of this interface, in unspecified order.
+ repeated Method methods = 2;
+
+ // Any metadata attached to the interface.
+ repeated Option options = 3;
+
+ // A version string for this interface. If specified, must have the form
+ // `major-version.minor-version`, as in `1.10`. If the minor version is
+ // omitted, it defaults to zero. If the entire version field is empty, the
+ // major version is derived from the package name, as outlined below. If the
+ // field is not empty, the version in the package name will be verified to be
+ // consistent with what is provided here.
+ //
+ // The versioning schema uses [semantic
+ // versioning](http://semver.org) where the major version number
+ // indicates a breaking change and the minor version an additive,
+ // non-breaking change. Both version numbers are signals to users
+ // what to expect from different versions, and should be carefully
+ // chosen based on the product plan.
+ //
+ // The major version is also reflected in the package name of the
+ // interface, which must end in `v`, as in
+ // `google.feature.v1`. For major versions 0 and 1, the suffix can
+ // be omitted. Zero major versions must only be used for
+ // experimental, non-GA interfaces.
+ //
+ //
+ string version = 4;
+
+ // Source context for the protocol buffer service represented by this
+ // message.
+ SourceContext source_context = 5;
+
+ // Included interfaces. See [Mixin][].
+ repeated Mixin mixins = 6;
+
+ // The source syntax of the service.
+ Syntax syntax = 7;
+}
+
+// Method represents a method of an API interface.
+message Method {
+
+ // The simple name of this method.
+ string name = 1;
+
+ // A URL of the input message type.
+ string request_type_url = 2;
+
+ // If true, the request is streamed.
+ bool request_streaming = 3;
+
+ // The URL of the output message type.
+ string response_type_url = 4;
+
+ // If true, the response is streamed.
+ bool response_streaming = 5;
+
+ // Any metadata attached to the method.
+ repeated Option options = 6;
+
+ // The source syntax of this method.
+ Syntax syntax = 7;
+}
+
+// Declares an API Interface to be included in this interface. The including
+// interface must redeclare all the methods from the included interface, but
+// documentation and options are inherited as follows:
+//
+// - If after comment and whitespace stripping, the documentation
+// string of the redeclared method is empty, it will be inherited
+// from the original method.
+//
+// - Each annotation belonging to the service config (http,
+// visibility) which is not set in the redeclared method will be
+// inherited.
+//
+// - If an http annotation is inherited, the path pattern will be
+// modified as follows. Any version prefix will be replaced by the
+// version of the including interface plus the [root][] path if
+// specified.
+//
+// Example of a simple mixin:
+//
+// package google.acl.v1;
+// service AccessControl {
+// // Get the underlying ACL object.
+// rpc GetAcl(GetAclRequest) returns (Acl) {
+// option (google.api.http).get = "/v1/{resource=**}:getAcl";
+// }
+// }
+//
+// package google.storage.v2;
+// service Storage {
+// rpc GetAcl(GetAclRequest) returns (Acl);
+//
+// // Get a data record.
+// rpc GetData(GetDataRequest) returns (Data) {
+// option (google.api.http).get = "/v2/{resource=**}";
+// }
+// }
+//
+// Example of a mixin configuration:
+//
+// apis:
+// - name: google.storage.v2.Storage
+// mixins:
+// - name: google.acl.v1.AccessControl
+//
+// The mixin construct implies that all methods in `AccessControl` are
+// also declared with same name and request/response types in
+// `Storage`. A documentation generator or annotation processor will
+// see the effective `Storage.GetAcl` method after inherting
+// documentation and annotations as follows:
+//
+// service Storage {
+// // Get the underlying ACL object.
+// rpc GetAcl(GetAclRequest) returns (Acl) {
+// option (google.api.http).get = "/v2/{resource=**}:getAcl";
+// }
+// ...
+// }
+//
+// Note how the version in the path pattern changed from `v1` to `v2`.
+//
+// If the `root` field in the mixin is specified, it should be a
+// relative path under which inherited HTTP paths are placed. Example:
+//
+// apis:
+// - name: google.storage.v2.Storage
+// mixins:
+// - name: google.acl.v1.AccessControl
+// root: acls
+//
+// This implies the following inherited HTTP annotation:
+//
+// service Storage {
+// // Get the underlying ACL object.
+// rpc GetAcl(GetAclRequest) returns (Acl) {
+// option (google.api.http).get = "/v2/acls/{resource=**}:getAcl";
+// }
+// ...
+// }
+message Mixin {
+ // The fully qualified name of the interface which is included.
+ string name = 1;
+
+ // If non-empty specifies a path under which inherited HTTP paths
+ // are rooted.
+ string root = 2;
+}
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/google/protobuf/arena.cc" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/google/protobuf/arena.cc"
new file mode 100644
index 00000000..069dcdfa
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/google/protobuf/arena.cc"
@@ -0,0 +1,388 @@
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc. All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include
+
+#include
+#include
+#include
+
+#include
+
+#ifdef ADDRESS_SANITIZER
+#include
+#endif // ADDRESS_SANITIZER
+
+#include
+
+static const size_t kMinCleanupListElements = 8;
+static const size_t kMaxCleanupListElements = 64; // 1kB on 64-bit.
+
+namespace google {
+namespace protobuf {
+namespace internal {
+
+
+std::atomic ArenaImpl::lifecycle_id_generator_;
+#if defined(GOOGLE_PROTOBUF_NO_THREADLOCAL)
+ArenaImpl::ThreadCache& ArenaImpl::thread_cache() {
+ static internal::ThreadLocalStorage* thread_cache_ =
+ new internal::ThreadLocalStorage();
+ return *thread_cache_->Get();
+}
+#elif defined(PROTOBUF_USE_DLLS)
+ArenaImpl::ThreadCache& ArenaImpl::thread_cache() {
+ static GOOGLE_THREAD_LOCAL ThreadCache thread_cache_ = {-1, NULL};
+ return thread_cache_;
+}
+#else
+GOOGLE_THREAD_LOCAL ArenaImpl::ThreadCache ArenaImpl::thread_cache_ = {-1, NULL};
+#endif
+
+void ArenaImpl::Init() {
+ lifecycle_id_ =
+ lifecycle_id_generator_.fetch_add(1, std::memory_order_relaxed);
+ hint_.store(nullptr, std::memory_order_relaxed);
+ threads_.store(nullptr, std::memory_order_relaxed);
+
+ if (initial_block_) {
+ // Thread which calls Init() owns the first block. This allows the
+ // single-threaded case to allocate on the first block without having to
+ // perform atomic operations.
+ new (initial_block_) Block(options_.initial_block_size, NULL);
+ SerialArena* serial =
+ SerialArena::New(initial_block_, &thread_cache(), this);
+ serial->set_next(NULL);
+ threads_.store(serial, std::memory_order_relaxed);
+ space_allocated_.store(options_.initial_block_size,
+ std::memory_order_relaxed);
+ CacheSerialArena(serial);
+ } else {
+ space_allocated_.store(0, std::memory_order_relaxed);
+ }
+}
+
+ArenaImpl::~ArenaImpl() {
+ // Have to do this in a first pass, because some of the destructors might
+ // refer to memory in other blocks.
+ CleanupList();
+ FreeBlocks();
+}
+
+uint64 ArenaImpl::Reset() {
+ // Have to do this in a first pass, because some of the destructors might
+ // refer to memory in other blocks.
+ CleanupList();
+ uint64 space_allocated = FreeBlocks();
+ Init();
+
+ return space_allocated;
+}
+
+ArenaImpl::Block* ArenaImpl::NewBlock(Block* last_block, size_t min_bytes) {
+ size_t size;
+ if (last_block) {
+ // Double the current block size, up to a limit.
+ size = std::min(2 * last_block->size(), options_.max_block_size);
+ } else {
+ size = options_.start_block_size;
+ }
+ // Verify that min_bytes + kBlockHeaderSize won't overflow.
+ GOOGLE_CHECK_LE(min_bytes, std::numeric_limits::max() - kBlockHeaderSize);
+ size = std::max(size, kBlockHeaderSize + min_bytes);
+
+ void* mem = options_.block_alloc(size);
+ Block* b = new (mem) Block(size, last_block);
+ space_allocated_.fetch_add(size, std::memory_order_relaxed);
+ return b;
+}
+
+ArenaImpl::Block::Block(size_t size, Block* next)
+ : next_(next), pos_(kBlockHeaderSize), size_(size) {}
+
+PROTOBUF_NOINLINE
+void ArenaImpl::SerialArena::AddCleanupFallback(void* elem,
+ void (*cleanup)(void*)) {
+ size_t size = cleanup_ ? cleanup_->size * 2 : kMinCleanupListElements;
+ size = std::min(size, kMaxCleanupListElements);
+ size_t bytes = internal::AlignUpTo8(CleanupChunk::SizeOf(size));
+ CleanupChunk* list = reinterpret_cast(AllocateAligned(bytes));
+ list->next = cleanup_;
+ list->size = size;
+
+ cleanup_ = list;
+ cleanup_ptr_ = &list->nodes[0];
+ cleanup_limit_ = &list->nodes[size];
+
+ AddCleanup(elem, cleanup);
+}
+
+void* ArenaImpl::AllocateAlignedAndAddCleanup(size_t n,
+ void (*cleanup)(void*)) {
+ SerialArena* arena;
+ if (PROTOBUF_PREDICT_TRUE(GetSerialArenaFast(&arena))) {
+ return arena->AllocateAlignedAndAddCleanup(n, cleanup);
+ } else {
+ return AllocateAlignedAndAddCleanupFallback(n, cleanup);
+ }
+}
+
+void ArenaImpl::AddCleanup(void* elem, void (*cleanup)(void*)) {
+ SerialArena* arena;
+ if (PROTOBUF_PREDICT_TRUE(GetSerialArenaFast(&arena))) {
+ arena->AddCleanup(elem, cleanup);
+ } else {
+ return AddCleanupFallback(elem, cleanup);
+ }
+}
+
+PROTOBUF_NOINLINE
+void* ArenaImpl::AllocateAlignedFallback(size_t n) {
+ return GetSerialArena()->AllocateAligned(n);
+}
+
+PROTOBUF_NOINLINE
+void* ArenaImpl::AllocateAlignedAndAddCleanupFallback(size_t n,
+ void (*cleanup)(void*)) {
+ return GetSerialArena()->AllocateAlignedAndAddCleanup(n, cleanup);
+}
+
+PROTOBUF_NOINLINE
+void ArenaImpl::AddCleanupFallback(void* elem, void (*cleanup)(void*)) {
+ GetSerialArena()->AddCleanup(elem, cleanup);
+}
+
+ArenaImpl::SerialArena* ArenaImpl::GetSerialArena() {
+ SerialArena* arena;
+ if (PROTOBUF_PREDICT_TRUE(GetSerialArenaFast(&arena))) {
+ return arena;
+ } else {
+ return GetSerialArenaFallback(&thread_cache());
+ }
+}
+
+PROTOBUF_NOINLINE
+void* ArenaImpl::SerialArena::AllocateAlignedFallback(size_t n) {
+ // Sync back to current's pos.
+ head_->set_pos(head_->size() - (limit_ - ptr_));
+
+ head_ = arena_->NewBlock(head_, n);
+ ptr_ = head_->Pointer(head_->pos());
+ limit_ = head_->Pointer(head_->size());
+
+#ifdef ADDRESS_SANITIZER
+ ASAN_POISON_MEMORY_REGION(ptr_, limit_ - ptr_);
+#endif // ADDRESS_SANITIZER
+
+ return AllocateAligned(n);
+}
+
+uint64 ArenaImpl::SpaceAllocated() const {
+ return space_allocated_.load(std::memory_order_relaxed);
+}
+
+uint64 ArenaImpl::SpaceUsed() const {
+ SerialArena* serial = threads_.load(std::memory_order_acquire);
+ uint64 space_used = 0;
+ for (; serial; serial = serial->next()) {
+ space_used += serial->SpaceUsed();
+ }
+ return space_used;
+}
+
+uint64 ArenaImpl::SerialArena::SpaceUsed() const {
+ // Get current block's size from ptr_ (since we can't trust head_->pos().
+ uint64 space_used = ptr_ - head_->Pointer(kBlockHeaderSize);
+ // Get subsequent block size from b->pos().
+ for (Block* b = head_->next(); b; b = b->next()) {
+ space_used += (b->pos() - kBlockHeaderSize);
+ }
+ // Remove the overhead of the SerialArena itself.
+ space_used -= kSerialArenaSize;
+ return space_used;
+}
+
+uint64 ArenaImpl::FreeBlocks() {
+ uint64 space_allocated = 0;
+ // By omitting an Acquire barrier we ensure that any user code that doesn't
+ // properly synchronize Reset() or the destructor will throw a TSAN warning.
+ SerialArena* serial = threads_.load(std::memory_order_relaxed);
+
+ while (serial) {
+ // This is inside a block we are freeing, so we need to read it now.
+ SerialArena* next = serial->next();
+ space_allocated += ArenaImpl::SerialArena::Free(serial, initial_block_,
+ options_.block_dealloc);
+ // serial is dead now.
+ serial = next;
+ }
+
+ return space_allocated;
+}
+
+uint64 ArenaImpl::SerialArena::Free(ArenaImpl::SerialArena* serial,
+ Block* initial_block,
+ void (*block_dealloc)(void*, size_t)) {
+ uint64 space_allocated = 0;
+
+ // We have to be careful in this function, since we will be freeing the Block
+ // that contains this SerialArena. Be careful about accessing |serial|.
+
+ for (Block* b = serial->head_; b;) {
+ // This is inside the block we are freeing, so we need to read it now.
+ Block* next_block = b->next();
+ space_allocated += (b->size());
+
+#ifdef ADDRESS_SANITIZER
+ // This memory was provided by the underlying allocator as unpoisoned, so
+ // return it in an unpoisoned state.
+ ASAN_UNPOISON_MEMORY_REGION(b->Pointer(0), b->size());
+#endif // ADDRESS_SANITIZER
+
+ if (b != initial_block) {
+ block_dealloc(b, b->size());
+ }
+
+ b = next_block;
+ }
+
+ return space_allocated;
+}
+
+void ArenaImpl::CleanupList() {
+ // By omitting an Acquire barrier we ensure that any user code that doesn't
+ // properly synchronize Reset() or the destructor will throw a TSAN warning.
+ SerialArena* serial = threads_.load(std::memory_order_relaxed);
+
+ for (; serial; serial = serial->next()) {
+ serial->CleanupList();
+ }
+}
+
+void ArenaImpl::SerialArena::CleanupList() {
+ if (cleanup_ != NULL) {
+ CleanupListFallback();
+ }
+}
+
+void ArenaImpl::SerialArena::CleanupListFallback() {
+ // The first chunk might be only partially full, so calculate its size
+ // from cleanup_ptr_. Subsequent chunks are always full, so use list->size.
+ size_t n = cleanup_ptr_ - &cleanup_->nodes[0];
+ CleanupChunk* list = cleanup_;
+ while (true) {
+ CleanupNode* node = &list->nodes[0];
+ // Cleanup newest elements first (allocated last).
+ for (size_t i = n; i > 0; i--) {
+ node[i - 1].cleanup(node[i - 1].elem);
+ }
+ list = list->next;
+ if (list == nullptr) {
+ break;
+ }
+ // All but the first chunk are always full.
+ n = list->size;
+ }
+}
+
+ArenaImpl::SerialArena* ArenaImpl::SerialArena::New(Block* b, void* owner,
+ ArenaImpl* arena) {
+ GOOGLE_DCHECK_EQ(b->pos(), kBlockHeaderSize); // Should be a fresh block
+ GOOGLE_DCHECK_LE(kBlockHeaderSize + kSerialArenaSize, b->size());
+ SerialArena* serial =
+ reinterpret_cast(b->Pointer(kBlockHeaderSize));
+ b->set_pos(kBlockHeaderSize + kSerialArenaSize);
+ serial->arena_ = arena;
+ serial->owner_ = owner;
+ serial->head_ = b;
+ serial->ptr_ = b->Pointer(b->pos());
+ serial->limit_ = b->Pointer(b->size());
+ serial->cleanup_ = NULL;
+ serial->cleanup_ptr_ = NULL;
+ serial->cleanup_limit_ = NULL;
+ return serial;
+}
+
+PROTOBUF_NOINLINE
+ArenaImpl::SerialArena* ArenaImpl::GetSerialArenaFallback(void* me) {
+ // Look for this SerialArena in our linked list.
+ SerialArena* serial = threads_.load(std::memory_order_acquire);
+ for (; serial; serial = serial->next()) {
+ if (serial->owner() == me) {
+ break;
+ }
+ }
+
+ if (!serial) {
+ // This thread doesn't have any SerialArena, which also means it doesn't
+ // have any blocks yet. So we'll allocate its first block now.
+ Block* b = NewBlock(NULL, kSerialArenaSize);
+ serial = SerialArena::New(b, me, this);
+
+ SerialArena* head = threads_.load(std::memory_order_relaxed);
+ do {
+ serial->set_next(head);
+ } while (!threads_.compare_exchange_weak(
+ head, serial, std::memory_order_release, std::memory_order_relaxed));
+ }
+
+ CacheSerialArena(serial);
+ return serial;
+}
+
+} // namespace internal
+
+PROTOBUF_FUNC_ALIGN(32)
+void* Arena::AllocateAlignedNoHook(size_t n) {
+ return impl_.AllocateAligned(n);
+}
+
+void Arena::CallDestructorHooks() {
+ uint64 space_allocated = impl_.SpaceAllocated();
+ // Call the reset hook
+ if (on_arena_reset_ != NULL) {
+ on_arena_reset_(this, hooks_cookie_, space_allocated);
+ }
+
+ // Call the destruction hook
+ if (on_arena_destruction_ != NULL) {
+ on_arena_destruction_(this, hooks_cookie_, space_allocated);
+ }
+}
+
+void Arena::OnArenaAllocation(const std::type_info* allocated_type,
+ size_t n) const {
+ if (on_arena_allocation_ != NULL) {
+ on_arena_allocation_(allocated_type, n, hooks_cookie_);
+ }
+}
+
+} // namespace protobuf
+} // namespace google
diff --git "a/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/google/protobuf/arena.h" "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/google/protobuf/arena.h"
new file mode 100644
index 00000000..d73b53c7
--- /dev/null
+++ "b/ByteEdu.Com\346\226\227\345\205\275\346\243\213\345\205\250\346\240\210\350\257\276\347\250\213\357\274\210leaf\357\274\211/DSQ_Leaf/src/youyugame/modules/MsgCenter/tool/proto_init/proto/google/protobuf/arena.h"
@@ -0,0 +1,727 @@
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc. All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// This file defines an Arena allocator for better allocation performance.
+
+#ifndef GOOGLE_PROTOBUF_ARENA_H__
+#define GOOGLE_PROTOBUF_ARENA_H__
+
+
+#include
+#include
+#include
+#ifdef max
+#undef max // Visual Studio defines this macro
+#endif
+#if defined(_MSC_VER) && !defined(_LIBCPP_STD_VER) && !_HAS_EXCEPTIONS
+// Work around bugs in MSVC header when _HAS_EXCEPTIONS=0.
+#include
+#include
+namespace std {
+using type_info = ::type_info;
+}
+#else
+#include
+#endif
+
+#include
+#include
+#include
+
+#include
+
+#ifdef SWIG
+#error "You cannot SWIG proto headers"
+#endif
+
+namespace google {
+namespace protobuf {
+
+struct ArenaOptions; // defined below
+
+} // namespace protobuf
+} // namespace google
+
+namespace google {
+namespace protobuf {
+
+class Arena; // defined below
+class Message; // defined in message.h
+class MessageLite;
+template
+class Map;
+
+namespace arena_metrics {
+
+void EnableArenaMetrics(ArenaOptions* options);
+
+} // namespace arena_metrics
+
+namespace internal {
+
+struct ArenaStringPtr; // defined in arenastring.h
+class LazyField; // defined in lazy_field.h
+class EpsCopyInputStream; // defined in parse_context.h
+
+template
+class GenericTypeHandler; // defined in repeated_field.h
+
+// Templated cleanup methods.
+template
+void arena_destruct_object(void* object) {
+ reinterpret_cast(object)->~T();
+}
+template
+void arena_delete_object(void* object) {
+ delete reinterpret_cast(object);
+}
+inline void arena_free(void* object, size_t size) {
+#if defined(__GXX_DELETE_WITH_SIZE__) || defined(__cpp_sized_deallocation)
+ ::operator delete(object, size);
+#else
+ (void)size;
+ ::operator delete(object);
+#endif
+}
+
+} // namespace internal
+
+// ArenaOptions provides optional additional parameters to arena construction
+// that control its block-allocation behavior.
+struct ArenaOptions {
+ // This defines the size of the first block requested from the system malloc.
+ // Subsequent block sizes will increase in a geometric series up to a maximum.
+ size_t start_block_size;
+
+ // This defines the maximum block size requested from system malloc (unless an
+ // individual arena allocation request occurs with a size larger than this
+ // maximum). Requested block sizes increase up to this value, then remain
+ // here.
+ size_t max_block_size;
+
+ // An initial block of memory for the arena to use, or NULL for none. If
+ // provided, the block must live at least as long as the arena itself. The
+ // creator of the Arena retains ownership of the block after the Arena is
+ // destroyed.
+ char* initial_block;
+
+ // The size of the initial block, if provided.
+ size_t initial_block_size;
+
+ // A function pointer to an alloc method that returns memory blocks of size
+ // requested. By default, it contains a ptr to the malloc function.
+ //
+ // NOTE: block_alloc and dealloc functions are expected to behave like
+ // malloc and free, including Asan poisoning.
+ void* (*block_alloc)(size_t);
+ // A function pointer to a dealloc method that takes ownership of the blocks
+ // from the arena. By default, it contains a ptr to a wrapper function that
+ // calls free.
+ void (*block_dealloc)(void*, size_t);
+
+ ArenaOptions()
+ : start_block_size(kDefaultStartBlockSize),
+ max_block_size(kDefaultMaxBlockSize),
+ initial_block(NULL),
+ initial_block_size(0),
+ block_alloc(&::operator new),
+ block_dealloc(&internal::arena_free),
+ on_arena_init(NULL),
+ on_arena_reset(NULL),
+ on_arena_destruction(NULL),
+ on_arena_allocation(NULL) {}
+
+ private:
+ // Hooks for adding external functionality such as user-specific metrics
+ // collection, specific debugging abilities, etc.
+ // Init hook (if set) will always be called at Arena init time. Init hook may
+ // return a pointer to a cookie to be stored in the arena. Reset and
+ // destruction hooks will then be called with the same cookie pointer. This
+ // allows us to save an external object per arena instance and use it on the
+ // other hooks (Note: If init hook returns NULL, the other hooks will NOT be
+ // called on this arena instance).
+ // on_arena_reset and on_arena_destruction also receive the space used in the
+ // arena just before the reset.
+ void* (*on_arena_init)(Arena* arena);
+ void (*on_arena_reset)(Arena* arena, void* cookie, uint64 space_used);
+ void (*on_arena_destruction)(Arena* arena, void* cookie, uint64 space_used);
+
+ // type_info is promised to be static - its lifetime extends to
+ // match program's lifetime (It is given by typeid operator).
+ // Note: typeid(void) will be passed as allocated_type every time we
+ // intentionally want to avoid monitoring an allocation. (i.e. internal
+ // allocations for managing the arena)
+ void (*on_arena_allocation)(const std::type_info* allocated_type,
+ uint64 alloc_size, void* cookie);
+
+ // Constants define default starting block size and max block size for
+ // arena allocator behavior -- see descriptions above.
+ static const size_t kDefaultStartBlockSize = 256;
+ static const size_t kDefaultMaxBlockSize = 8192;
+
+ friend void arena_metrics::EnableArenaMetrics(ArenaOptions*);
+ friend class Arena;
+ friend class ArenaOptionsTestFriend;
+};
+
+// Support for non-RTTI environments. (The metrics hooks API uses type
+// information.)
+#if PROTOBUF_RTTI
+#define RTTI_TYPE_ID(type) (&typeid(type))
+#else
+#define RTTI_TYPE_ID(type) (NULL)
+#endif
+
+// Arena allocator. Arena allocation replaces ordinary (heap-based) allocation
+// with new/delete, and improves performance by aggregating allocations into
+// larger blocks and freeing allocations all at once. Protocol messages are
+// allocated on an arena by using Arena::CreateMessage(Arena*), below, and
+// are automatically freed when the arena is destroyed.
+//
+// This is a thread-safe implementation: multiple threads may allocate from the
+// arena concurrently. Destruction is not thread-safe and the destructing
+// thread must synchronize with users of the arena first.
+//
+// An arena provides two allocation interfaces: CreateMessage, which works
+// for arena-enabled proto2 message types as well as other types that satisfy
+// the appropriate protocol (described below), and Create, which works for
+// any arbitrary type T. CreateMessage is better when the type T supports it,
+// because this interface (i) passes the arena pointer to the created object so
+// that its sub-objects and internal allocations can use the arena too, and (ii)
+// elides the object's destructor call when possible. Create does not place
+// any special requirements on the type T, and will invoke the object's
+// destructor when the arena is destroyed.
+//
+// The arena message allocation protocol, required by CreateMessage, is as
+// follows:
+//
+// - The type T must have (at least) two constructors: a constructor with no
+// arguments, called when a T is allocated on the heap; and a constructor with
+// a Arena* argument, called when a T is allocated on an arena. If the
+// second constructor is called with a NULL arena pointer, it must be
+// equivalent to invoking the first (no-argument) constructor.
+//
+// - The type T must have a particular type trait: a nested type
+// |InternalArenaConstructable_|. This is usually a typedef to |void|. If no
+// such type trait exists, then the instantiation CreateMessage will fail
+// to compile.
+//
+// - The type T *may* have the type trait |DestructorSkippable_|. If this type
+// trait is present in the type, then its destructor will not be called if and
+// only if it was passed a non-NULL arena pointer. If this type trait is not
+// present on the type, then its destructor is always called when the
+// containing arena is destroyed.
+//
+// - One- and two-user-argument forms of CreateMessage() also exist that
+// forward these constructor arguments to T's constructor: for example,
+// CreateMessage(Arena*, arg1, arg2) forwards to a constructor T(Arena*,
+// arg1, arg2).
+//
+// This protocol is implemented by all arena-enabled proto2 message classes as
+// well as protobuf container types like RepeatedPtrField and Map. The protocol
+// is internal to protobuf and is not guaranteed to be stable. Non-proto types
+// should not rely on this protocol.
+class PROTOBUF_EXPORT alignas(8) Arena final {
+ public:
+ // Arena constructor taking custom options. See ArenaOptions below for
+ // descriptions of the options available.
+ explicit Arena(const ArenaOptions& options) : impl_(options) {
+ Init(options);
+ }
+
+ // Block overhead. Use this as a guide for how much to over-allocate the
+ // initial block if you want an allocation of size N to fit inside it.
+ //
+ // WARNING: if you allocate multiple objects, it is difficult to guarantee
+ // that a series of allocations will fit in the initial block, especially if
+ // Arena changes its alignment guarantees in the future!
+ static const size_t kBlockOverhead = internal::ArenaImpl::kBlockHeaderSize +
+ internal::ArenaImpl::kSerialArenaSize;
+
+ // Default constructor with sensible default options, tuned for average
+ // use-cases.
+ Arena() : impl_(ArenaOptions()) { Init(ArenaOptions()); }
+
+ ~Arena() {
+ if (hooks_cookie_) {
+ CallDestructorHooks();
+ }
+ }
+
+ void Init(const ArenaOptions& options) {
+ on_arena_allocation_ = options.on_arena_allocation;
+ on_arena_reset_ = options.on_arena_reset;
+ on_arena_destruction_ = options.on_arena_destruction;
+ // Call the initialization hook
+ if (options.on_arena_init != NULL) {
+ hooks_cookie_ = options.on_arena_init(this);
+ } else {
+ hooks_cookie_ = NULL;
+ }
+ }
+
+ // API to create proto2 message objects on the arena. If the arena passed in
+ // is NULL, then a heap allocated object is returned. Type T must be a message
+ // defined in a .proto file with cc_enable_arenas set to true, otherwise a
+ // compilation error will occur.
+ //
+ // RepeatedField and RepeatedPtrField may also be instantiated directly on an
+ // arena with this method.
+ //
+ // This function also accepts any type T that satisfies the arena message
+ // allocation protocol, documented above.
+ template
+ PROTOBUF_ALWAYS_INLINE static T* CreateMessage(Arena* arena, Args&&... args) {
+ static_assert(
+ InternalHelper::is_arena_constructable::value,
+ "CreateMessage can only construct types that are ArenaConstructable");
+ // We must delegate to CreateMaybeMessage() and NOT CreateMessageInternal()
+ // because protobuf generated classes specialize CreateMaybeMessage() and we
+ // need to use that specialization for code size reasons.
+ return Arena::CreateMaybeMessage(arena, std::forward(args)...);
+ }
+
+ // API to create any objects on the arena. Note that only the object will
+ // be created on the arena; the underlying ptrs (in case of a proto2 message)
+ // will be still heap allocated. Proto messages should usually be allocated
+ // with CreateMessage() instead.
+ //
+ // Note that even if T satisfies the arena message construction protocol
+ // (InternalArenaConstructable_ trait and optional DestructorSkippable_
+ // trait), as described above, this function does not follow the protocol;
+ // instead, it treats T as a black-box type, just as if it did not have these
+ // traits. Specifically, T's constructor arguments will always be only those
+ // passed to Create() -- no additional arena pointer is implicitly added.
+ // Furthermore, the destructor will always be called at arena destruction time
+ // (unless the destructor is trivial). Hence, from T's point of view, it is as
+ // if the object were allocated on the heap (except that the underlying memory
+ // is obtained from the arena).
+ template
+ PROTOBUF_ALWAYS_INLINE static T* Create(Arena* arena, Args&&... args) {
+ return CreateNoMessage(arena, is_arena_constructable(),
+ std::forward(args)...);
+ }
+
+ // Create an array of object type T on the arena *without* invoking the
+ // constructor of T. If `arena` is null, then the return value should be freed
+ // with `delete[] x;` (or `::operator delete[](x);`).
+ // To ensure safe uses, this function checks at compile time
+ // (when compiled as C++11) that T is trivially default-constructible and
+ // trivially destructible.
+ template
+ PROTOBUF_ALWAYS_INLINE static T* CreateArray(Arena* arena,
+ size_t num_elements) {
+ static_assert(std::is_pod::value,
+ "CreateArray requires a trivially constructible type");
+ static_assert(std::is_trivially_destructible::value,
+ "CreateArray requires a trivially destructible type");
+ GOOGLE_CHECK_LE(num_elements, std::numeric_limits::max() / sizeof(T))
+ << "Requested size is too large to fit into size_t.";
+ if (arena == NULL) {
+ return static_cast(::operator new[](num_elements * sizeof(T)));
+ } else {
+ return arena->CreateInternalRawArray(num_elements);
+ }
+ }
+
+ // Returns the total space allocated by the arena, which is the sum of the
+ // sizes of the underlying blocks. This method is relatively fast; a counter
+ // is kept as blocks are allocated.
+ uint64 SpaceAllocated() const { return impl_.SpaceAllocated(); }
+ // Returns the total space used by the arena. Similar to SpaceAllocated but
+ // does not include free space and block overhead. The total space returned
+ // may not include space used by other threads executing concurrently with
+ // the call to this method.
+ uint64 SpaceUsed() const { return impl_.SpaceUsed(); }
+
+ // Frees all storage allocated by this arena after calling destructors
+ // registered with OwnDestructor() and freeing objects registered with Own().
+ // Any objects allocated on this arena are unusable after this call. It also
+ // returns the total space used by the arena which is the sums of the sizes
+ // of the allocated blocks. This method is not thread-safe.
+ PROTOBUF_NOINLINE uint64 Reset() {
+ // Call the reset hook
+ if (on_arena_reset_ != NULL) {
+ on_arena_reset_(this, hooks_cookie_, impl_.SpaceAllocated());
+ }
+ return impl_.Reset();
+ }
+
+ // Adds |object| to a list of heap-allocated objects to be freed with |delete|
+ // when the arena is destroyed or reset.
+ template
+ PROTOBUF_NOINLINE void Own(T* object) {
+ OwnInternal(object, std::is_convertible());
+ }
+
+ // Adds |object| to a list of objects whose destructors will be manually
+ // called when the arena is destroyed or reset. This differs from Own() in
+ // that it does not free the underlying memory with |delete|; hence, it is
+ // normally only used for objects that are placement-newed into
+ // arena-allocated memory.
+ template
+ PROTOBUF_NOINLINE void OwnDestructor(T* object) {
+ if (object != NULL) {
+ impl_.AddCleanup(object, &internal::arena_destruct_object);
+ }
+ }
+
+ // Adds a custom member function on an object to the list of destructors that
+ // will be manually called when the arena is destroyed or reset. This differs
+ // from OwnDestructor() in that any member function may be specified, not only
+ // the class destructor.
+ PROTOBUF_NOINLINE void OwnCustomDestructor(void* object,
+ void (*destruct)(void*)) {
+ impl_.AddCleanup(object, destruct);
+ }
+
+ // Retrieves the arena associated with |value| if |value| is an arena-capable
+ // message, or NULL otherwise. If possible, the call resolves at compile time.
+ // Note that we can often devirtualize calls to `value->GetArena()` so usually
+ // calling this method is unnecessary.
+ template
+ PROTOBUF_ALWAYS_INLINE static Arena* GetArena(const T* value) {
+ return GetArenaInternal(value);
+ }
+
+ template
+ class InternalHelper {
+ template
+ static char DestructorSkippable(const typename U::DestructorSkippable_*);
+ template
+ static double DestructorSkippable(...);
+
+ typedef std::integral_constant<
+ bool, sizeof(DestructorSkippable(static_cast(0))) ==
+ sizeof(char) ||
+ std::is_trivially_destructible::value>
+ is_destructor_skippable;
+
+ template
+ static char ArenaConstructable(
+ const typename U::InternalArenaConstructable_*);
+ template
+ static double ArenaConstructable(...);
+
+ typedef std::integral_constant(
+ static_cast(0))) ==
+ sizeof(char)>
+ is_arena_constructable;
+
+ template ()
+ .GetArena())>::value,
+ int>::type = 0>
+ static char HasGetArena(decltype(&U::GetArena));
+ template
+ static double HasGetArena(...);
+
+ typedef std::integral_constant(nullptr)) ==
+ sizeof(char)>
+ has_get_arena;
+
+ template
+ static T* Construct(void* ptr, Args&&... args) {
+ return new (ptr) T(std::forward(args)...);
+ }
+
+ static Arena* GetArena(const T* p) { return p->GetArenaNoVirtual(); }
+
+ friend class Arena;
+ };
+
+ // Helper typetraits that indicates support for arenas in a type T at compile
+ // time. This is public only to allow construction of higher-level templated
+ // utilities.
+ //
+ // is_arena_constructable::value is true if the message type T has arena
+ // support enabled, and false otherwise.
+ //
+ // is_destructor_skippable::value is true if the message type T has told
+ // the arena that it is safe to skip the destructor, and false otherwise.
+ //
+ // This is inside Arena because only Arena has the friend relationships
+ // necessary to see the underlying generated code traits.
+ template
+ struct is_arena_constructable : InternalHelper::is_arena_constructable {};
+ template
+ struct is_destructor_skippable : InternalHelper::is_destructor_skippable {
+ };
+
+ private:
+ template
+ struct has_get_arena : InternalHelper