From a1a7388143472dd01d1fa89e52fd77fbaf810348 Mon Sep 17 00:00:00 2001 From: halloworld Date: Fri, 16 Jun 2017 17:49:45 +0800 Subject: [PATCH 01/84] add mysql and run npm install mysql and npm install generic-pool --- game-server/app.js | 8 +++++++ game-server/app/dao/mysql/mysqlHelper.js | 18 ++++++++++++++++ game-server/app/game/UToken.js | 21 +++++++++++++++++++ .../app/servers/gate/handler/gateHandler.js | 18 ++++++++++++++++ game-server/config/mysql.json | 19 +++++++++++++++++ 5 files changed, 84 insertions(+) create mode 100644 game-server/app/dao/mysql/mysqlHelper.js create mode 100644 game-server/app/game/UToken.js create mode 100644 game-server/config/mysql.json diff --git a/game-server/app.js b/game-server/app.js index 8e8255b..b154a4a 100644 --- a/game-server/app.js +++ b/game-server/app.js @@ -22,6 +22,14 @@ app.configure('production|development', 'gate', function(){ }); }); +app.loadConfig("mysql", app.getBase() + "/config/mysql.json"); // 添加配置 +//mysql 应该是对所有服务器都要生效 +app.configure('production|development', function () { + var Helper = require("./app/dao/mysql/mysqlHelper"); // 初始化dbclient + var sqlHelper = new Helper(app); + app.set("sqlHelper", sqlHelper);// dbclient 为外部数据库接口,app,get("dbclient") 来使用 +}) + // start app app.start(); diff --git a/game-server/app/dao/mysql/mysqlHelper.js b/game-server/app/dao/mysql/mysqlHelper.js new file mode 100644 index 0000000..1bb2c02 --- /dev/null +++ b/game-server/app/dao/mysql/mysqlHelper.js @@ -0,0 +1,18 @@ + + +var mysqlHelper = function(app){ + var mysqlConfig = app.get('mysql'); + var mysql = require('mysql'); + var pool = mysql.createPool(mysqlConfig); + this.pool = pool; +}; + +module.exports = mysqlHelper; + +mysqlHelper.prototype.query = function(sqlString, values, callback){ + if (values) { + this.pool.query(sqlString, values, callback); + } else { + this.pool.query(sqlString, callback); + } +}; \ No newline at end of file diff --git a/game-server/app/game/UToken.js b/game-server/app/game/UToken.js new file mode 100644 index 0000000..e0cbd0e --- /dev/null +++ b/game-server/app/game/UToken.js @@ -0,0 +1,21 @@ + +var UToken = function(userid){ + this.userid = userid; + this.exp = ''; +}; + +module.exports = UToken; + +UToken.prototype.refresh = function(){ + this.exp = ''; +}; + +UToken.prototype.encrypt = function(){ + return 'aes encrypt string'; +}; + + +UToken.prototype.decrypt = function(tokenString){ + this.userid = ''; + this.exp = ''; +} diff --git a/game-server/app/servers/gate/handler/gateHandler.js b/game-server/app/servers/gate/handler/gateHandler.js index bd459e4..0abad5f 100644 --- a/game-server/app/servers/gate/handler/gateHandler.js +++ b/game-server/app/servers/gate/handler/gateHandler.js @@ -40,3 +40,21 @@ handler.queryEntry = function(msg, session, next) { port: res.clientPort }); }; + + +handler.guestLogin = function(msg, session, next){ + var sqlHelper = this.app.get('sqlHelper');//获取全局mysql client + var sql = "insert into t_user () values ();"; + sqlHelper.query(sql, null, function(err, results, fileds){ + if (err) { + //失败 + console.log(JSON.stringify(err)); + } else { + console.log(JSON.stringify(results)); + next(null, { + code : 1, + msg : 'ok' + }); + } + }); +} \ No newline at end of file diff --git a/game-server/config/mysql.json b/game-server/config/mysql.json new file mode 100644 index 0000000..1c7351b --- /dev/null +++ b/game-server/config/mysql.json @@ -0,0 +1,19 @@ +{ + "development": { + "connectionLimit" : 10, + "host" : "localhost", + "port" : "3306", + "database" : "chess", + "user" : "halloworld", + "password" : "5815057" + }, + + "production": { + "connectionLimit" : 10, + "host" : "localhost", + "port" : "3306", + "database" : "chess", + "user" : "halloworld", + "password" : "5815057" + } +} \ No newline at end of file From c6de17d2a0787e23b9a8e28d30da42cae6e48be9 Mon Sep 17 00:00:00 2001 From: halloworld Date: Fri, 16 Jun 2017 17:58:19 +0800 Subject: [PATCH 02/84] add mysql --- game-server/app/dao/mysql/mysql.5.6.sql | 96 +++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 game-server/app/dao/mysql/mysql.5.6.sql diff --git a/game-server/app/dao/mysql/mysql.5.6.sql b/game-server/app/dao/mysql/mysql.5.6.sql new file mode 100644 index 0000000..0055446 --- /dev/null +++ b/game-server/app/dao/mysql/mysql.5.6.sql @@ -0,0 +1,96 @@ +CREATE DATABASE IF NOT EXISTS `chess` /*!40100 DEFAULT CHARACTER SET utf8 */; +USE `chess`; +-- MySQL dump 10.13 Distrib 5.7.17, for macos10.12 (x86_64) +-- +-- Host: 127.0.0.1 Database: chess +-- ------------------------------------------------------ +-- Server version 5.6.36 + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8 */; +/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; +/*!40103 SET TIME_ZONE='+00:00' */; +/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; + +-- +-- Table structure for table `t_token` +-- + +DROP TABLE IF EXISTS `t_token`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `t_token` ( + `userid` int(11) NOT NULL, + `token` varchar(256) DEFAULT NULL, + UNIQUE KEY `userid_UNIQUE` (`userid`), + CONSTRAINT `userid` FOREIGN KEY (`userid`) REFERENCES `t_user` (`userid`) ON DELETE CASCADE ON UPDATE NO ACTION +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `t_token` +-- + +LOCK TABLES `t_token` WRITE; +/*!40000 ALTER TABLE `t_token` DISABLE KEYS */; +/*!40000 ALTER TABLE `t_token` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `t_user` +-- + +DROP TABLE IF EXISTS `t_user`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `t_user` ( + `userid` int(11) NOT NULL AUTO_INCREMENT, + `username` varchar(64) DEFAULT NULL, + `usernick` varchar(45) DEFAULT '游客登录', + `phone` varchar(255) DEFAULT NULL, + `password` varchar(32) DEFAULT NULL, + `create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + `gold` int(11) NOT NULL DEFAULT '3000', + `roomcard` int(11) NOT NULL DEFAULT '0', + `sex` int(11) NOT NULL DEFAULT '0', + `image` varchar(512) DEFAULT NULL, + PRIMARY KEY (`userid`), + UNIQUE KEY `userid_UNIQUE` (`userid`), + UNIQUE KEY `username_UNIQUE` (`username`), + UNIQUE KEY `phone_UNIQUE` (`phone`) +) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `t_user` +-- + +LOCK TABLES `t_user` WRITE; +/*!40000 ALTER TABLE `t_user` DISABLE KEYS */; +INSERT INTO `t_user` VALUES (3,NULL,'游客登录',NULL,NULL,'2017-06-16 08:14:22',3000,0,0,NULL),(4,NULL,'游客登录',NULL,NULL,'2017-06-16 09:43:20',3000,0,0,NULL),(5,NULL,'游客登录',NULL,NULL,'2017-06-16 09:45:58',3000,0,0,NULL),(6,NULL,'游客登录',NULL,NULL,'2017-06-16 09:47:38',3000,0,0,NULL),(7,NULL,'游客登录',NULL,NULL,'2017-06-16 09:47:48',3000,0,0,NULL); +/*!40000 ALTER TABLE `t_user` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Dumping events for database 'chess' +-- + +-- +-- Dumping routines for database 'chess' +-- +/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; + +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; + +-- Dump completed on 2017-06-16 17:56:31 From 10960081ebff190005f30887b79ae9ae79c88e9d Mon Sep 17 00:00:00 2001 From: halloworld Date: Mon, 19 Jun 2017 17:33:17 +0800 Subject: [PATCH 03/84] add tokn --- game-server/app/dao/mysql/mysqlHelper.js | 31 ++++++++++++++++++- game-server/app/game/UToken.js | 4 +-- .../app/servers/gate/handler/gateHandler.js | 20 +++++++++--- 3 files changed, 47 insertions(+), 8 deletions(-) diff --git a/game-server/app/dao/mysql/mysqlHelper.js b/game-server/app/dao/mysql/mysqlHelper.js index 1bb2c02..2277839 100644 --- a/game-server/app/dao/mysql/mysqlHelper.js +++ b/game-server/app/dao/mysql/mysqlHelper.js @@ -1,5 +1,9 @@ - +/* +对于callback的普适性: +第一个参数是error,第二个参数是正确返回的数据 +一般情况下,两者仅有一个有效 +*/ var mysqlHelper = function(app){ var mysqlConfig = app.get('mysql'); var mysql = require('mysql'); @@ -15,4 +19,29 @@ mysqlHelper.prototype.query = function(sqlString, values, callback){ } else { this.pool.query(sqlString, callback); } +}; + + +mysqlHelper.prototype.guestLogin = function(callback) { + var sql = "insert into t_user () values ();"; + this.query(sql, null, function(err, results, fileds){ + if (err) { + callback(err, results); + } else { + var userid = results['insertId']; + this.queryUserInfo(userid, callback); + } + }.bind(this)); +}; + + +mysqlHelper.prototype.queryUserInfo = function(userid, callback) { + var sqlString = "select * from t_user where userid = '?'"; + this.query(sqlString, [userid], function(err, results, fileds){ + if (results.length > 0) { + callback(err, results[0]); + } else { + callback("没有该用户", null); + } + }); }; \ No newline at end of file diff --git a/game-server/app/game/UToken.js b/game-server/app/game/UToken.js index e0cbd0e..072fb50 100644 --- a/game-server/app/game/UToken.js +++ b/game-server/app/game/UToken.js @@ -1,13 +1,13 @@ var UToken = function(userid){ this.userid = userid; - this.exp = ''; + this.exp = new Date().getTime() + 1000 * 60 * 60; //毫秒级 }; module.exports = UToken; UToken.prototype.refresh = function(){ - this.exp = ''; + this.exp = new Date().getTime() + 1000 * 60 * 60; }; UToken.prototype.encrypt = function(){ diff --git a/game-server/app/servers/gate/handler/gateHandler.js b/game-server/app/servers/gate/handler/gateHandler.js index 0abad5f..9c84b6b 100644 --- a/game-server/app/servers/gate/handler/gateHandler.js +++ b/game-server/app/servers/gate/handler/gateHandler.js @@ -1,3 +1,6 @@ +var UToken = require('../../../game/UToken.js'); + + module.exports = function(app) { return new Handler(app); }; @@ -44,16 +47,23 @@ handler.queryEntry = function(msg, session, next) { handler.guestLogin = function(msg, session, next){ var sqlHelper = this.app.get('sqlHelper');//获取全局mysql client - var sql = "insert into t_user () values ();"; - sqlHelper.query(sql, null, function(err, results, fileds){ + sqlHelper.guestLogin(function(err, userinfo){ + console.log(userinfo); + var token = new UToken(userinfo.userid); if (err) { //失败 - console.log(JSON.stringify(err)); + next(null, { + code : -101, + msg : '游客登录失败,请重试' + }); } else { - console.log(JSON.stringify(results)); next(null, { code : 1, - msg : 'ok' + msg : 'ok', + data : { + userinfo : userinfo, + token : token + } }); } }); From 75cbeef7a4cee881d3d88553cabc8c740622a419 Mon Sep 17 00:00:00 2001 From: halloworld Date: Mon, 19 Jun 2017 18:00:27 +0800 Subject: [PATCH 04/84] token encrypto and decrypto --- game-server/app/game/UToken.js | 17 ++++++++++++++--- .../app/servers/gate/handler/gateHandler.js | 2 +- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/game-server/app/game/UToken.js b/game-server/app/game/UToken.js index 072fb50..aebcc1e 100644 --- a/game-server/app/game/UToken.js +++ b/game-server/app/game/UToken.js @@ -1,4 +1,6 @@ +var secret_key = 'InmbuvP6Z8'; + var UToken = function(userid){ this.userid = userid; this.exp = new Date().getTime() + 1000 * 60 * 60; //毫秒级 @@ -11,11 +13,20 @@ UToken.prototype.refresh = function(){ }; UToken.prototype.encrypt = function(){ - return 'aes encrypt string'; + var crypto = require('crypto'); + var cipher = crypto.createCipher('aes-256-cbc',secret_key); + var str = JSON.stringify(this); + var crypted = cipher.update(str,'utf8','hex'); + crypted += cipher.final('hex'); + return crypted; }; UToken.prototype.decrypt = function(tokenString){ - this.userid = ''; - this.exp = ''; + var decipher = crypto.createDecipher('aes-256-cbc', secret_key); + var dec = decipher.update(tokenString,'hex','utf8'); + dec += decipher.final('utf8'); + var obj = JSON.parse(dec); + this.userid = obj.userid; + this.exp = obj.exp; } diff --git a/game-server/app/servers/gate/handler/gateHandler.js b/game-server/app/servers/gate/handler/gateHandler.js index 9c84b6b..937acc5 100644 --- a/game-server/app/servers/gate/handler/gateHandler.js +++ b/game-server/app/servers/gate/handler/gateHandler.js @@ -49,7 +49,7 @@ handler.guestLogin = function(msg, session, next){ var sqlHelper = this.app.get('sqlHelper');//获取全局mysql client sqlHelper.guestLogin(function(err, userinfo){ console.log(userinfo); - var token = new UToken(userinfo.userid); + var token = new UToken(userinfo.userid).encrypt(); if (err) { //失败 next(null, { From f098ce06d3d89e3350b083a0c9ae2bdd2829ec44 Mon Sep 17 00:00:00 2001 From: halloworld Date: Mon, 19 Jun 2017 18:01:34 +0800 Subject: [PATCH 05/84] token encrypto and decrypto --- game-server/app/game/UToken.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game-server/app/game/UToken.js b/game-server/app/game/UToken.js index aebcc1e..9055eed 100644 --- a/game-server/app/game/UToken.js +++ b/game-server/app/game/UToken.js @@ -3,7 +3,7 @@ var secret_key = 'InmbuvP6Z8'; var UToken = function(userid){ this.userid = userid; - this.exp = new Date().getTime() + 1000 * 60 * 60; //毫秒级 + this.exp = new Date().getTime() + 1000 * 60 * 60; //过期时间点毫秒级 }; module.exports = UToken; From 4c2ad3a7d0942dc8ab852a8e026df83d005ab208 Mon Sep 17 00:00:00 2001 From: halloworld Date: Wed, 21 Jun 2017 17:46:52 +0800 Subject: [PATCH 06/84] =?UTF-8?q?token=E9=AA=8C=E8=AF=81=E6=9C=BA=E5=88=B6?= =?UTF-8?q?=E9=80=9A=E8=BF=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game-server/app/game/DouniuRoom.js | 2 +- game-server/app/game/GMResponse.js | 7 +++ game-server/app/game/UToken.js | 9 +++ .../app/servers/brnn/remote/brnnRemote.js | 32 +++++------ .../servers/connector/handler/entryHandler.js | 57 +++++++++++++++++-- .../app/servers/gate/handler/gateHandler.js | 29 +++++++--- 6 files changed, 102 insertions(+), 34 deletions(-) create mode 100644 game-server/app/game/GMResponse.js diff --git a/game-server/app/game/DouniuRoom.js b/game-server/app/game/DouniuRoom.js index 1487fcd..662a603 100644 --- a/game-server/app/game/DouniuRoom.js +++ b/game-server/app/game/DouniuRoom.js @@ -4,7 +4,7 @@ var PokerManager = require('./PokerManager.js'); var DouniuRoom = function(channel) { this.channel = channel; this.userList = []; - this.maxWillWait = 5; //sec + this.maxWillWait = 10; //sec this.willWait = 0; }; diff --git a/game-server/app/game/GMResponse.js b/game-server/app/game/GMResponse.js new file mode 100644 index 0000000..61322d5 --- /dev/null +++ b/game-server/app/game/GMResponse.js @@ -0,0 +1,7 @@ +var GMResponse = function(code, msg, data) { + this.code = code; + this.msg = msg; + this.data = data; +}; + +module.exports = GMResponse; \ No newline at end of file diff --git a/game-server/app/game/UToken.js b/game-server/app/game/UToken.js index 9055eed..b2ce98a 100644 --- a/game-server/app/game/UToken.js +++ b/game-server/app/game/UToken.js @@ -12,6 +12,14 @@ UToken.prototype.refresh = function(){ this.exp = new Date().getTime() + 1000 * 60 * 60; }; +UToken.prototype.isValid = function(){ + if (this.userid && this.exp) { + var now = new Date().getTime(); + return (now < this.exp); + } + return false; +}; + UToken.prototype.encrypt = function(){ var crypto = require('crypto'); var cipher = crypto.createCipher('aes-256-cbc',secret_key); @@ -23,6 +31,7 @@ UToken.prototype.encrypt = function(){ UToken.prototype.decrypt = function(tokenString){ + var crypto = require('crypto'); var decipher = crypto.createDecipher('aes-256-cbc', secret_key); var dec = decipher.update(tokenString,'hex','utf8'); dec += decipher.final('utf8'); diff --git a/game-server/app/servers/brnn/remote/brnnRemote.js b/game-server/app/servers/brnn/remote/brnnRemote.js index c6ca853..4229e03 100644 --- a/game-server/app/servers/brnn/remote/brnnRemote.js +++ b/game-server/app/servers/brnn/remote/brnnRemote.js @@ -13,18 +13,17 @@ var BrnnRemote = function(app) { /** * Add user into brnn channel. * - * @param {String} uid unique id for user + * @param {String} userid unique id for user * @param {String} sid server id * @param {String} name channel name * @param {boolean} flag channel parameter * */ -BrnnRemote.prototype.add = function(uid, sid, name, flag, cb) { +BrnnRemote.prototype.add = function(userid, sid, name, flag, cb) { var channel = this.channelService.getChannel(name, flag); - var userid = uid.split('*')[0]; var param = { route: 'brnn.onAdd', - user: userid + userid: userid }; channel.pushMessage(param); @@ -34,8 +33,8 @@ BrnnRemote.prototype.add = function(uid, sid, name, flag, cb) { channel.gameRoom = room; channel.gameRoom.startGame(); } - channel.add(uid, sid); - channel.gameRoom.joinUser(uid); + channel.add(userid, sid); + channel.gameRoom.joinUser(userid); } cb(this.get(name, flag)); @@ -47,7 +46,7 @@ BrnnRemote.prototype.add = function(uid, sid, name, flag, cb) { * @param {Object} opts parameters for request * @param {String} name channel name * @param {boolean} flag channel parameter - * @return {Array} users uids in channel + * @return {Array} users userids in channel * */ BrnnRemote.prototype.get = function(name, flag) { @@ -56,28 +55,24 @@ BrnnRemote.prototype.get = function(name, flag) { if( !! channel) { users = channel.getMembers(); } - for(var i = 0; i < users.length; i++) { - users[i] = users[i].split('*')[0]; - } return users; }; /** * Kick user out brnn channel. * - * @param {String} uid unique id for user + * @param {String} userids unique id for user * @param {String} sid server id * @param {String} name channel name * */ -BrnnRemote.prototype.kick = function(uid, sid, name) { +BrnnRemote.prototype.kick = function(userid, sid, name) { var channel = this.channelService.getChannel(name, false); // leave channel if( !! channel) { - channel.leave(uid, sid); - channel.gameRoom.kickUser(uid); + channel.leave(userid, sid); + channel.gameRoom.kickUser(userid); } - var userid = uid.split('*')[0]; var param = { route: 'brnn.onLeave', user: userid @@ -86,9 +81,8 @@ BrnnRemote.prototype.kick = function(uid, sid, name) { }; -BrnnRemote.prototype.exit = function(uid, sid, name, cb) { +BrnnRemote.prototype.exit = function(userid, sid, name, cb) { var rid = name; - var userid = uid.split('*')[0]; var channelService = this.app.get('channelService'); var channel = channelService.getChannel(rid, false); if (!channel) { @@ -98,8 +92,8 @@ BrnnRemote.prototype.exit = function(uid, sid, name, cb) { }); return ; } - channel.leave(uid, sid); - channel.gameRoom.kickUser(uid); + channel.leave(userid, sid); + channel.gameRoom.kickUser(userid); if (channel.getUserAmount() == 0) { channel.destroy(); cb({ diff --git a/game-server/app/servers/connector/handler/entryHandler.js b/game-server/app/servers/connector/handler/entryHandler.js index eb755c2..d21c751 100644 --- a/game-server/app/servers/connector/handler/entryHandler.js +++ b/game-server/app/servers/connector/handler/entryHandler.js @@ -1,3 +1,7 @@ + +var UToken = require('../../../game/UToken.js'); +var GMResponse = require('../../../game/GMResponse.js'); + module.exports = function(app) { return new Handler(app); }; @@ -11,16 +15,15 @@ var handler = Handler.prototype; /** * New client entry brnn server. * - * @param {Object} msg request message + * @param {Object} msg request message{userid, rid} * @param {Object} session current session object * @param {Function} next next stemp callback * @return {Void} */ handler.enter = function(msg, session, next) { - var self = this; var rid = msg.rid; var uid = msg.userid + '*' + rid; - var sessionService = self.app.get('sessionService'); + var sessionService = this.app.get('sessionService'); //duplicate log in if(!sessionService.getByUid(uid)) { @@ -31,17 +34,61 @@ handler.enter = function(msg, session, next) { console.error('set rid for session service failed! error is : %j', err.stack); } }); - session.on('closed', onUserLeave.bind(null, self.app)); + session.on('closed', onUserLeave.bind(null, this.app)); } //put user into channel - self.app.rpc.brnn.brnnRemote.add(session, uid, self.app.get('serverId'), rid, true, function(users){ + this.app.rpc.brnn.brnnRemote.add(session, uid, this.app.get('serverId'), rid, true, function(users){ next(null, { users:users }); }); }; + +/* +msg.rid 房间id(百人类型的大房间可以不需要rid,因为只有一个这样的房间) +msg.rtype 房间类型:brnn(百人牛牛) +msg.token 必须有效的token才能建立session + */ +handler.enterRoom = function(msg, session, next) { + var tokenStr = msg.token; + var token = new UToken(); + token.decrypt(tokenStr); + var sessionService = this.app.get('sessionService'); + if (token.isValid() == false) { + next(null, { + code : -102, + msg : '无效的token' + }); + sessionService.kickBySessionId(session.id); + return ; + } + + var rid = msg.rid; + + //duplicate log in + if(!sessionService.getByUid(token.userid)) { + session.bind(token.userid); + session.set('rid', rid); + session.push('rid', function(err) { + if(err) { + console.error('set rid for session service failed! error is : %j', err.stack); + } + }); + session.on('closed', onUserLeave.bind(null, this.app)); + } + + if (msg.rtype == 'brnn') { + //put user into channel + this.app.rpc.brnn.brnnRemote.add(session, token.userid, this.app.get('serverId'), rid, true, function(users){ + next(null, { + users:users + }); + }); + } +}; + /** * User log out handler * diff --git a/game-server/app/servers/gate/handler/gateHandler.js b/game-server/app/servers/gate/handler/gateHandler.js index 937acc5..e9a98ad 100644 --- a/game-server/app/servers/gate/handler/gateHandler.js +++ b/game-server/app/servers/gate/handler/gateHandler.js @@ -1,5 +1,5 @@ var UToken = require('../../../game/UToken.js'); - +var GMResponse = require('../../../game/GMResponse.js'); module.exports = function(app) { return new Handler(app); @@ -57,14 +57,25 @@ handler.guestLogin = function(msg, session, next){ msg : '游客登录失败,请重试' }); } else { - next(null, { - code : 1, - msg : 'ok', - data : { + // get all connectors + var connectors = this.app.getServersByType('connector'); + if(!connectors || connectors.length === 0) { + var response = new GMResponse(-103, '没有找到connector'); + next(null, response); + return; + } + // here we just start `ONE` connector server, so we return the connectors[0] + var res = connectors[0]; + var data = { userinfo : userinfo, - token : token - } - }); + token : token, + connector : { + host: res.host, + port: res.clientPort + } + }; + var response = new GMResponse(1, 'ok', data); + next(null, response); } - }); + }.bind(this)); } \ No newline at end of file From db43d80f99bfb9b951639883645fb38ebae9fc63 Mon Sep 17 00:00:00 2001 From: halloworld Date: Thu, 22 Jun 2017 11:14:43 +0800 Subject: [PATCH 07/84] change rid -> brnn --- game-server/app/servers/connector/handler/entryHandler.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game-server/app/servers/connector/handler/entryHandler.js b/game-server/app/servers/connector/handler/entryHandler.js index d21c751..9ebd0de 100644 --- a/game-server/app/servers/connector/handler/entryHandler.js +++ b/game-server/app/servers/connector/handler/entryHandler.js @@ -81,7 +81,7 @@ handler.enterRoom = function(msg, session, next) { if (msg.rtype == 'brnn') { //put user into channel - this.app.rpc.brnn.brnnRemote.add(session, token.userid, this.app.get('serverId'), rid, true, function(users){ + this.app.rpc.brnn.brnnRemote.add(session, token.userid, this.app.get('serverId'), msg.rtype, true, function(users){ next(null, { users:users }); From 2382295ce1e9011171df4ea87ea0b8db31a64773 Mon Sep 17 00:00:00 2001 From: halloworld Date: Thu, 22 Jun 2017 18:01:11 +0800 Subject: [PATCH 08/84] =?UTF-8?q?=E7=BB=A7=E7=BB=AD=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Client_iOS/Client/ViewController.m | 19 ++++++++---- game-server/app/game/DouniuRoom.js | 29 ++++++++++++++----- .../app/servers/brnn/handler/brnnHandler.js | 23 ++++++++++++++- 3 files changed, 57 insertions(+), 14 deletions(-) diff --git a/Client_iOS/Client/ViewController.m b/Client_iOS/Client/ViewController.m index b70f660..c411e5d 100644 --- a/Client_iOS/Client/ViewController.m +++ b/Client_iOS/Client/ViewController.m @@ -13,6 +13,8 @@ @interface ViewController () @property (nonatomic, copy) NSString *connectorIP; @property (nonatomic, copy) NSString *connectorPort; +@property (nonatomic, copy) NSString *token; + @end @implementation ViewController @@ -83,10 +85,11 @@ - (void)viewDidLoad //1、连接gate服务器,返回connector服务器地址 - (void)connectGate{ - [client connectToHost:@"39.108.83.192" onPort:@"3101" params:nil withCallback:^(id arg) { - [client requestWithRoute:@"gate.gateHandler.queryEntry" andParams:@{@"userid" : @"ligun123"} andCallback:^(id arg) { - self.connectorIP = arg[@"host"]; - self.connectorPort = [arg[@"port"] stringValue]; + [client connectToHost:@"127.0.0.1" onPort:@"3101" params:nil withCallback:^(id arg) { + [client requestWithRoute:@"gate.gateHandler.guestLogin" andParams:@{@"userid" : @"ligun123"} andCallback:^(id arg) { + self.connectorIP = arg[@"data"][@"connector"][@"host"]; + self.connectorPort = [arg[@"data"][@"connector"][@"port"] stringValue]; + self.token = arg[@"data"][@"token"]; [client disconnect]; }]; }]; @@ -101,14 +104,18 @@ - (void)enterConnector{ //3、request——> connector.entryHandler.enter进入房间 - (void)enterRoom{ - [client requestWithRoute:@"connector.entryHandler.enter" andParams:@{@"userid" : @"ligun", - @"rid" : @"111"} andCallback:^(id arg) { + [client requestWithRoute:@"connector.entryHandler.enterRoom" andParams:@{@"token" : self.token, + @"rtype" : @"brnn"} andCallback:^(id arg) { NSLog(@"%s -> %@", __FUNCTION__, arg); }]; } //废弃的方法 - (void)sendProto{ + [client requestWithRoute:@"connector.entryHandler.enterRoom" andParams:@{@"token" : self.token, + @"rtype" : @"brnn"} andCallback:^(id arg) { + NSLog(@"%s -> %@", __FUNCTION__, arg); + }]; } diff --git a/game-server/app/game/DouniuRoom.js b/game-server/app/game/DouniuRoom.js index 662a603..5eeff3c 100644 --- a/game-server/app/game/DouniuRoom.js +++ b/game-server/app/game/DouniuRoom.js @@ -3,23 +3,28 @@ var PokerManager = require('./PokerManager.js'); //绑定的room var DouniuRoom = function(channel) { this.channel = channel; - this.userList = []; + this.userList = []; //所有在房间中的玩家的userid + this.chipPk1 = {}; //第一幅牌下注玩家{userid, gold} + this.chipPk2 = {}; //第一幅牌下注玩家 + this.chipPk3 = {}; //第一幅牌下注玩家 + this.chipPk4 = {}; //第一幅牌下注玩家 + this.maxWillWait = 10; //sec this.willWait = 0; }; module.exports = DouniuRoom; -//需要在外部对channel新增uid -DouniuRoom.prototype.joinUser = function(usermodel) { - this.userList.push(usermodel); +//需要在外部对channel新增userid +DouniuRoom.prototype.joinUser = function(userid) { + this.userList.push(userid); }; //需要在外部对channel删除uid -DouniuRoom.prototype.kickUser = function(usermodel) { +DouniuRoom.prototype.kickUser = function(userid) { for (var index = 0; index < this.userList.length; index++) { var element = this.userList[index]; - if (element == usermodel) { + if (element == userid) { this.userList.splice(index, 1); } } @@ -203,4 +208,14 @@ var calculateResult = function(pokers) { res.pIndex2 = -1; } return res; -} \ No newline at end of file +} + + +DouniuRoom.prototype.chipIn = function(userid, gold, pkindex) { + if (pkindex == 0) { + return false; + } + if (pkindex == 1) { + //todo + } +}; \ No newline at end of file diff --git a/game-server/app/servers/brnn/handler/brnnHandler.js b/game-server/app/servers/brnn/handler/brnnHandler.js index eb91388..7dec226 100644 --- a/game-server/app/servers/brnn/handler/brnnHandler.js +++ b/game-server/app/servers/brnn/handler/brnnHandler.js @@ -1,14 +1,35 @@ + +var GMResponse = require('../../../game/GMResponse.js'); + module.exports = function(app) { return new Handler(app); }; var Handler = function(app) { this.app = app; + this.channelService = app.get('channelService'); }; var handler = Handler.prototype; -handler.test = function(msg, session, next) { + +/* +下注 +一个玩家可以对多付牌下注 + */ +handler.chipIn = function(msg, session, next) { + var userid = msg.userid; + var gold = msg.gold; + var pkindex = msg.pkindex; + var channel = this.channelService.getChannel(name, flag); + var room = channel.gameRoom; + //TODO 判断余额 + var sqlHelper = this.app.get('sqlHelper'); + sqlHelper.queryUserInfo(userid, function(err, userinfo) { + if (userinfo.gold) { + + } + }.bind(this)); next(null, { code : 1, msg : 'Test' From 32a8c576733f00f514939644377f5817c5f1b105 Mon Sep 17 00:00:00 2001 From: halloworld Date: Fri, 23 Jun 2017 17:59:49 +0800 Subject: [PATCH 09/84] =?UTF-8?q?fix=20=E4=B8=8B=E6=B3=A8=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game-server/app/game/DouniuRoom.js | 61 ++++++++++++------- .../app/servers/brnn/handler/brnnHandler.js | 8 +-- 2 files changed, 41 insertions(+), 28 deletions(-) diff --git a/game-server/app/game/DouniuRoom.js b/game-server/app/game/DouniuRoom.js index 5eeff3c..9eac32d 100644 --- a/game-server/app/game/DouniuRoom.js +++ b/game-server/app/game/DouniuRoom.js @@ -1,16 +1,16 @@ var PokerManager = require('./PokerManager.js'); +var GMResponse = require('./GMResponse.js'); //百人牛牛 //绑定的room var DouniuRoom = function(channel) { this.channel = channel; this.userList = []; //所有在房间中的玩家的userid - this.chipPk1 = {}; //第一幅牌下注玩家{userid, gold} - this.chipPk2 = {}; //第一幅牌下注玩家 - this.chipPk3 = {}; //第一幅牌下注玩家 - this.chipPk4 = {}; //第一幅牌下注玩家 + this.chipList = {}; this.maxWillWait = 10; //sec this.willWait = 0; + + this.state = 0; //state: 0,下注时间等待开始 | 1,游戏开始计算输赢 | 2,其他场景 }; module.exports = DouniuRoom; @@ -34,6 +34,7 @@ DouniuRoom.prototype.kickUser = function(userid) { //发5副牌,其中一个庄家 //房间所有玩家向非庄家下注 DouniuRoom.prototype.startGame = function() { + this.state = 0; this.willWait = this.maxWillWait; this.willStartTimer = setInterval(this.willStartTimerCall.bind(this), 1000); }; @@ -42,23 +43,20 @@ DouniuRoom.prototype.willStartTimerCall = function() { this.willWait --; this.pushWillStartMessage(); if (this.willWait == 0) { + this.state = 1; clearInterval(this.willStartTimer); this.dealPokers(); } }; -//state: 0,下注时间等待开始 | 1,游戏开始计算输赢 | 2,其他场景 DouniuRoom.prototype.pushWillStartMessage = function() { var data = { - state : 0, + state : this.state, time : this.willWait } - this.channel.pushMessage('brnn.willstart', { - code : 200, - msg : "下注时间", - data : data - }); + var response = new GMResponse(1, 'ok', data); + this.channel.pushMessage('brnn.willstart', response); } //给所有人push发牌结果消息 @@ -91,11 +89,12 @@ DouniuRoom.prototype.dealPokers = function() { } pokerRes.push(dic); } - this.channel.pushMessage('brnn.dealpoker', { - code : 200, - msg : '发牌啦', - data : pokerRes - }) + var data = { + state : this.state, + pokerRes : pokerRes + }; + var response = new GMResponse(1, 'ok', data); + this.channel.pushMessage('brnn.dealpoker', response); setTimeout(this.startGame.bind(this), 3000); }; @@ -211,11 +210,31 @@ var calculateResult = function(pokers) { } -DouniuRoom.prototype.chipIn = function(userid, gold, pkindex) { - if (pkindex == 0) { +//return 下注成功true,否则false(可能余额不够) +//pkindex > 0 +//balance : 余额 +DouniuRoom.prototype.chipIn = function(userid, gold, pkindex, balance) { + if (pkindex <= 0) { + return false; + } + + var goldBefore = this.getGoldChipedForUser(userid); + if (goldBefore >= balance) { return false; } - if (pkindex == 1) { - //todo + var key = 'pk' + pkindex; + this.chipList[userid][key] = gold; +}; + + +DouniuRoom.prototype.getGoldChipedForUser = function(userid) { + var chipinfo = this.chipList[userid]; + var goldnow = 0; + for (var key in chipinfo) { + if (chipinfo.hasOwnProperty(key)) { + var element = chipinfo[key]; + goldnow += element; + } } -}; \ No newline at end of file + return goldnow; +} \ No newline at end of file diff --git a/game-server/app/servers/brnn/handler/brnnHandler.js b/game-server/app/servers/brnn/handler/brnnHandler.js index 7dec226..722dc9c 100644 --- a/game-server/app/servers/brnn/handler/brnnHandler.js +++ b/game-server/app/servers/brnn/handler/brnnHandler.js @@ -26,12 +26,6 @@ handler.chipIn = function(msg, session, next) { //TODO 判断余额 var sqlHelper = this.app.get('sqlHelper'); sqlHelper.queryUserInfo(userid, function(err, userinfo) { - if (userinfo.gold) { - - } + var cpr = room.chipIn(userid, gold, pkindex, userinfo.gold); }.bind(this)); - next(null, { - code : 1, - msg : 'Test' - }); }; \ No newline at end of file From 1b1ef321710d23ea12b84bab414b84607cc3ce1d Mon Sep 17 00:00:00 2001 From: halloworld Date: Mon, 26 Jun 2017 13:56:26 +0800 Subject: [PATCH 10/84] =?UTF-8?q?add=20=E8=AE=A1=E7=AE=97=E8=B4=A7?= =?UTF-8?q?=E5=B8=81=E8=BE=93=E8=B5=A2=E7=BB=93=E6=9E=9C=E7=9A=84push?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game-server/app/game/DouniuRoom.js | 68 ++++++++++++++++++------------ 1 file changed, 40 insertions(+), 28 deletions(-) diff --git a/game-server/app/game/DouniuRoom.js b/game-server/app/game/DouniuRoom.js index 9eac32d..29e7900 100644 --- a/game-server/app/game/DouniuRoom.js +++ b/game-server/app/game/DouniuRoom.js @@ -96,9 +96,49 @@ DouniuRoom.prototype.dealPokers = function() { var response = new GMResponse(1, 'ok', data); this.channel.pushMessage('brnn.dealpoker', response); + setTimeout(function() { + this.pushGoldResult(pokerRes); + }.bind(this), 3000); +}; + +//return 下注成功true,否则false(可能余额不够) +//pkindex > 0 +//balance : 余额 +DouniuRoom.prototype.chipIn = function(userid, gold, pkindex, balance) { + if (pkindex <= 0) { + return false; + } + + var goldBefore = this.getGoldChipedForUser(userid); + if (goldBefore >= balance) { + return false; + } + var key = 'pk' + pkindex; + this.chipList[userid][key] = gold; +}; + + +DouniuRoom.prototype.getGoldChipedForUser = function(userid) { + var chipinfo = this.chipList[userid]; + var goldnow = 0; + for (var key in chipinfo) { + if (chipinfo.hasOwnProperty(key)) { + var element = chipinfo[key]; + goldnow += element; + } + } + return goldnow; +} + +DouniuRoom.prototype.pushGoldResult = function (pokerRes) { + var res = new GMResponse(1, 'ok', {pk : pokerRes, list : this.userList}); + this.channel.pushMessage('brnn.goldresult', res); + setTimeout(this.startGame.bind(this), 3000); }; + +//计算牌面大小 var calculateResult = function(pokers) { //1 遍历所有元素,设置nnValue(大于10都设置为10) //顺便统计五花、四花(>10)、五小(<10)、炸弹条件满足情况 @@ -210,31 +250,3 @@ var calculateResult = function(pokers) { } -//return 下注成功true,否则false(可能余额不够) -//pkindex > 0 -//balance : 余额 -DouniuRoom.prototype.chipIn = function(userid, gold, pkindex, balance) { - if (pkindex <= 0) { - return false; - } - - var goldBefore = this.getGoldChipedForUser(userid); - if (goldBefore >= balance) { - return false; - } - var key = 'pk' + pkindex; - this.chipList[userid][key] = gold; -}; - - -DouniuRoom.prototype.getGoldChipedForUser = function(userid) { - var chipinfo = this.chipList[userid]; - var goldnow = 0; - for (var key in chipinfo) { - if (chipinfo.hasOwnProperty(key)) { - var element = chipinfo[key]; - goldnow += element; - } - } - return goldnow; -} \ No newline at end of file From c9ab6e2ba0022db2753962a5f9b03dabc535625a Mon Sep 17 00:00:00 2001 From: halloworld Date: Mon, 26 Jun 2017 16:42:22 +0800 Subject: [PATCH 11/84] =?UTF-8?q?add=20=E8=AE=A1=E7=AE=97=E8=B4=A7?= =?UTF-8?q?=E5=B8=81=E8=BE=93=E8=B5=A2=E7=BB=93=E6=9E=9C=E7=9A=84push=20in?= =?UTF-8?q?g?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Client_iOS/Client/ViewController.m | 13 +++-- game-server/app/game/DouniuRoom.js | 57 +++++++++++++++++++ .../app/servers/brnn/handler/brnnHandler.js | 7 +++ 3 files changed, 73 insertions(+), 4 deletions(-) diff --git a/Client_iOS/Client/ViewController.m b/Client_iOS/Client/ViewController.m index c411e5d..442fb37 100644 --- a/Client_iOS/Client/ViewController.m +++ b/Client_iOS/Client/ViewController.m @@ -14,6 +14,7 @@ @interface ViewController () @property (nonatomic, copy) NSString *connectorPort; @property (nonatomic, copy) NSString *token; +@property (nonatomic, strong) NSString *userid; @end @@ -112,10 +113,14 @@ - (void)enterRoom{ //废弃的方法 - (void)sendProto{ - [client requestWithRoute:@"connector.entryHandler.enterRoom" andParams:@{@"token" : self.token, - @"rtype" : @"brnn"} andCallback:^(id arg) { - NSLog(@"%s -> %@", __FUNCTION__, arg); - }]; + //pkindex,gold,userid + [client requestWithRoute:@"connector.brnnHandler.chipIn" + andParams:@{@"pkindex" : @(1), + @"userid" : self.userid, + @"gold" : @(1000)} + andCallback:^(id arg) { + NSLog(@"%s -> %@", __FUNCTION__, arg); + }]; } diff --git a/game-server/app/game/DouniuRoom.js b/game-server/app/game/DouniuRoom.js index 29e7900..b34eb3b 100644 --- a/game-server/app/game/DouniuRoom.js +++ b/game-server/app/game/DouniuRoom.js @@ -115,6 +115,7 @@ DouniuRoom.prototype.chipIn = function(userid, gold, pkindex, balance) { } var key = 'pk' + pkindex; this.chipList[userid][key] = gold; + return true; }; @@ -250,3 +251,59 @@ var calculateResult = function(pokers) { } +//pk1 > pk2 -> 1; +//pk1 = pk2 -> 0; +//pk1 < pk2 -> -1; +var comparePoker = function(pk1, pk2) { + if (pk1.nntype > pk2.nntype) { + return 1; + } else if (pk1,nntype == pk2.nntype) { + if (pk1.niuN > pk2.niuN) { + return 1; + } else if (pk1.niuN == pk2.niuN) { + return 0; + } else { + return -1; + } + } else { + return -1; + } +} + + +/* +nntype表示用户牌型 +炸弹(6) > 五小(5) > 五花(4) > 四花(3) > 牛牛(2) > 有分(1) > 没分(0) +牌型翻倍情况: +无分和牛1,牛2,牛3,牛4,牛5,牛6: 1倍 +牛7,牛8,牛9: 2倍 +牛牛: 3倍 +四花: 4倍 +五花: 5倍 +五小: 6倍 +炸弹: 8倍 +*/ +var doubleCountForPoker = function(poker) { + switch (poker.nntype) { + case 6: + return 8; + case 5: + return 6; + case 4: + return 5; + case 3: + return 4; + case 2: + return 3; + case 1: + { + if (poker.niuN > 6) { + return 2; + } else return 1; + } + case 0: + return 1; + default: + return 1; + } +} \ No newline at end of file diff --git a/game-server/app/servers/brnn/handler/brnnHandler.js b/game-server/app/servers/brnn/handler/brnnHandler.js index 722dc9c..a450b38 100644 --- a/game-server/app/servers/brnn/handler/brnnHandler.js +++ b/game-server/app/servers/brnn/handler/brnnHandler.js @@ -27,5 +27,12 @@ handler.chipIn = function(msg, session, next) { var sqlHelper = this.app.get('sqlHelper'); sqlHelper.queryUserInfo(userid, function(err, userinfo) { var cpr = room.chipIn(userid, gold, pkindex, userinfo.gold); + if (cpr) { + var response = new GMResponse(1, 'ok'); + next(null,response); + } else { + var response = new GMResponse(-105, '下注失败,可能余额不够'); + next(null,response); + } }.bind(this)); }; \ No newline at end of file From db28c44926b9674d56acbafcdbed09789236d384 Mon Sep 17 00:00:00 2001 From: halloworld Date: Mon, 26 Jun 2017 17:18:23 +0800 Subject: [PATCH 12/84] =?UTF-8?q?add=20=E8=AE=A1=E7=AE=97=E8=B4=A7?= =?UTF-8?q?=E5=B8=81=E8=BE=93=E8=B5=A2=E7=BB=93=E6=9E=9C=E7=9A=84push=20in?= =?UTF-8?q?g?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game-server/app/game/DouniuRoom.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/game-server/app/game/DouniuRoom.js b/game-server/app/game/DouniuRoom.js index b34eb3b..9f980b9 100644 --- a/game-server/app/game/DouniuRoom.js +++ b/game-server/app/game/DouniuRoom.js @@ -132,6 +132,9 @@ DouniuRoom.prototype.getGoldChipedForUser = function(userid) { } DouniuRoom.prototype.pushGoldResult = function (pokerRes) { + var compareResult = []; + //todo... + var res = new GMResponse(1, 'ok', {pk : pokerRes, list : this.userList}); this.channel.pushMessage('brnn.goldresult', res); From e845bb93ffd55fe56095edf8af251e760b1b90a9 Mon Sep 17 00:00:00 2001 From: halloworld Date: Mon, 26 Jun 2017 18:03:38 +0800 Subject: [PATCH 13/84] =?UTF-8?q?add=20=E8=AE=A1=E7=AE=97=E8=B4=A7?= =?UTF-8?q?=E5=B8=81=E8=BE=93=E8=B5=A2=E7=BB=93=E6=9E=9C=E7=9A=84push=20in?= =?UTF-8?q?g?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game-server/app/game/DouniuRoom.js | 35 +++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/game-server/app/game/DouniuRoom.js b/game-server/app/game/DouniuRoom.js index 9f980b9..1d93ce7 100644 --- a/game-server/app/game/DouniuRoom.js +++ b/game-server/app/game/DouniuRoom.js @@ -113,8 +113,7 @@ DouniuRoom.prototype.chipIn = function(userid, gold, pkindex, balance) { if (goldBefore >= balance) { return false; } - var key = 'pk' + pkindex; - this.chipList[userid][key] = gold; + this.chipList[userid][pkindex] = gold; return true; }; @@ -132,10 +131,36 @@ DouniuRoom.prototype.getGoldChipedForUser = function(userid) { } DouniuRoom.prototype.pushGoldResult = function (pokerRes) { - var compareResult = []; - //todo... + var compareResult = {}; + for (var index = 1; index < pokerRes.length; index++) { + var pkn = pokerRes[index]['result']; + var pk0 = pokerRes[0]['result']; + var dbcount = doubleCountForPoker(result); + if (comparePoker(pk0, pkn) >= 0) { + dbcount *= -1; //赢钱是正,输钱是负 + } + compareResult[index] = dbcount; + } + + var userGoldResult = []; + for (var userid in this.chipList) { + if (this.chipList.hasOwnProperty(userid)) { + var chipinfo = this.chipList[userid]; + var goldResult = 0; + for (var pkindex in chipinfo) { + if (chipinfo.hasOwnProperty(pkindex)) { + var goldChiped = chipinfo[pkindex]; + //todo .. 计算所有下注的牌输赢 + dbcount = compareResult[pkindex]; + goldResult += (dbcount * goldChiped); + } + } + var allGoldInfo = {getGold : goldResult, userid : userid}; + userGoldResult.push(allGoldInfo); + } + } - var res = new GMResponse(1, 'ok', {pk : pokerRes, list : this.userList}); + var res = new GMResponse(1, 'ok', userGoldResult); this.channel.pushMessage('brnn.goldresult', res); setTimeout(this.startGame.bind(this), 3000); From c1406c48424ae9474ef97778befbcd5c9d6b1719 Mon Sep 17 00:00:00 2001 From: halloworld Date: Tue, 27 Jun 2017 13:35:18 +0800 Subject: [PATCH 14/84] =?UTF-8?q?=E9=87=91=E5=B8=81=E8=BE=93=E8=B5=A2?= =?UTF-8?q?=E7=BB=93=E6=9E=9C=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Client_iOS/Client/ViewController.m | 5 +++-- game-server/app/game/DouniuRoom.js | 14 +++++++++++--- .../app/servers/brnn/handler/brnnHandler.js | 11 ++++++----- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/Client_iOS/Client/ViewController.m b/Client_iOS/Client/ViewController.m index 442fb37..15cba0e 100644 --- a/Client_iOS/Client/ViewController.m +++ b/Client_iOS/Client/ViewController.m @@ -91,6 +91,7 @@ - (void)connectGate{ self.connectorIP = arg[@"data"][@"connector"][@"host"]; self.connectorPort = [arg[@"data"][@"connector"][@"port"] stringValue]; self.token = arg[@"data"][@"token"]; + self.userid = arg[@"data"][@"userinfo"][@"userid"]; [client disconnect]; }]; }]; @@ -111,10 +112,10 @@ - (void)enterRoom{ }]; } -//废弃的方法 +//chipin - (void)sendProto{ //pkindex,gold,userid - [client requestWithRoute:@"connector.brnnHandler.chipIn" + [client requestWithRoute:@"brnn.brnnHandler.chipIn" andParams:@{@"pkindex" : @(1), @"userid" : self.userid, @"gold" : @(1000)} diff --git a/game-server/app/game/DouniuRoom.js b/game-server/app/game/DouniuRoom.js index 1d93ce7..34cc004 100644 --- a/game-server/app/game/DouniuRoom.js +++ b/game-server/app/game/DouniuRoom.js @@ -113,6 +113,9 @@ DouniuRoom.prototype.chipIn = function(userid, gold, pkindex, balance) { if (goldBefore >= balance) { return false; } + if (!this.chipList[userid]) { + this.chipList[userid] = {}; + } this.chipList[userid][pkindex] = gold; return true; }; @@ -135,11 +138,14 @@ DouniuRoom.prototype.pushGoldResult = function (pokerRes) { for (var index = 1; index < pokerRes.length; index++) { var pkn = pokerRes[index]['result']; var pk0 = pokerRes[0]['result']; - var dbcount = doubleCountForPoker(result); if (comparePoker(pk0, pkn) >= 0) { + var dbcount = doubleCountForPoker(pk0); dbcount *= -1; //赢钱是正,输钱是负 + compareResult[index] = dbcount; + } else { + var dbcount = doubleCountForPoker(pkn); + compareResult[index] = dbcount; } - compareResult[index] = dbcount; } var userGoldResult = []; @@ -283,9 +289,11 @@ var calculateResult = function(pokers) { //pk1 = pk2 -> 0; //pk1 < pk2 -> -1; var comparePoker = function(pk1, pk2) { + console.log(pk1); + console.log(pk2); if (pk1.nntype > pk2.nntype) { return 1; - } else if (pk1,nntype == pk2.nntype) { + } else if (pk1.nntype == pk2.nntype) { if (pk1.niuN > pk2.niuN) { return 1; } else if (pk1.niuN == pk2.niuN) { diff --git a/game-server/app/servers/brnn/handler/brnnHandler.js b/game-server/app/servers/brnn/handler/brnnHandler.js index a450b38..062482d 100644 --- a/game-server/app/servers/brnn/handler/brnnHandler.js +++ b/game-server/app/servers/brnn/handler/brnnHandler.js @@ -10,18 +10,19 @@ var Handler = function(app) { this.channelService = app.get('channelService'); }; -var handler = Handler.prototype; - - /* 下注 一个玩家可以对多付牌下注 */ -handler.chipIn = function(msg, session, next) { +Handler.prototype.chipIn = function(msg, session, next) { var userid = msg.userid; var gold = msg.gold; var pkindex = msg.pkindex; - var channel = this.channelService.getChannel(name, flag); + var channel = this.channelService.getChannel('brnn', false); + if (!channel) { + next(null, new GMResponse(-101, '未找到房间')); + return ; + } var room = channel.gameRoom; //TODO 判断余额 var sqlHelper = this.app.get('sqlHelper'); From 5caeae1ba8c001dabb8ba41a86c92c330ea715f9 Mon Sep 17 00:00:00 2001 From: halloworld Date: Tue, 27 Jun 2017 16:26:11 +0800 Subject: [PATCH 15/84] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E8=BE=93=E8=B5=A2=E7=9A=84gold=E5=B9=B6=E4=B8=94?= =?UTF-8?q?=E8=8E=B7=E5=BE=97=E6=80=BB=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game-server/app/dao/mysql/mysqlHelper.js | 50 +++++++++++++++++++ game-server/app/game/DouniuRoom.js | 21 ++++++-- .../app/servers/brnn/handler/brnnHandler.js | 1 - .../app/servers/brnn/remote/brnnRemote.js | 3 +- 4 files changed, 68 insertions(+), 7 deletions(-) diff --git a/game-server/app/dao/mysql/mysqlHelper.js b/game-server/app/dao/mysql/mysqlHelper.js index 2277839..4acc238 100644 --- a/game-server/app/dao/mysql/mysqlHelper.js +++ b/game-server/app/dao/mysql/mysqlHelper.js @@ -44,4 +44,54 @@ mysqlHelper.prototype.queryUserInfo = function(userid, callback) { callback("没有该用户", null); } }); +}; + + +//事务入口 +mysqlHelper.prototype.beginTransaction = function(callback) { + this.pool.getConnection(callback); +} + +//根据用户输赢更新数据库,并返回用户的金币总额 +mysqlHelper.prototype.updateUsersGold = function(ugoldResults, callback){ + this.beginTransaction(function(err, connection) { + if (err) { + if (callback) { + callback(err); + } + return; + } + var userids = []; + for (var index = 0; index < ugoldResults.length; index++) { + var element = ugoldResults[index]; + var userid = element.userid; + userids.push(userid); + var getGold = element.getGold; + var sqlString = "update t_user set gold = IF(gold + '?' < 0, 0, gold + '?') where userid = ?;"; + connection.query(sqlString, [getGold, getGold, userid]); + } + + var useridString = userids.join(','); + var sqlString = "select userid, gold from t_user where userid in(" + useridString + ");"; + console.log(sqlString); + connection.query(sqlString, function(err, results, fileds) { + if (!err) { + for (var index = 0; index < ugoldResults.length; index++) { + var element = ugoldResults[index]; + var dbElement = results[index]; + element.totalGold = dbElement.gold; + } + } + }); + connection.commit(function(err) { + if (err) { + connection.rollback(); + callback(err, ugoldResults); + } else { + if (callback) { + callback(null, ugoldResults); + } + } + }); + }); }; \ No newline at end of file diff --git a/game-server/app/game/DouniuRoom.js b/game-server/app/game/DouniuRoom.js index 34cc004..811b281 100644 --- a/game-server/app/game/DouniuRoom.js +++ b/game-server/app/game/DouniuRoom.js @@ -2,8 +2,9 @@ var PokerManager = require('./PokerManager.js'); var GMResponse = require('./GMResponse.js'); //百人牛牛 //绑定的room -var DouniuRoom = function(channel) { +var DouniuRoom = function(channel, sqlHelper) { this.channel = channel; + this.sqlHelper = sqlHelper; this.userList = []; //所有在房间中的玩家的userid this.chipList = {}; @@ -165,11 +166,21 @@ DouniuRoom.prototype.pushGoldResult = function (pokerRes) { userGoldResult.push(allGoldInfo); } } + //根据userid排序,方便查询这些用户的总金币并显示 + userGoldResult.sort(function(a, b){ + return a.userid > b.userid; + }); + this.sqlHelper.updateUsersGold(userGoldResult, function(err, allGoldResult) { + if (err) { + var res = new GMResponse(-1001, '无法正确结算', err); + this.channel.pushMessage('brnn.goldresult', res); + } else { + var res = new GMResponse(1, 'ok', allGoldResult); + this.channel.pushMessage('brnn.goldresult', res); + } - var res = new GMResponse(1, 'ok', userGoldResult); - this.channel.pushMessage('brnn.goldresult', res); - - setTimeout(this.startGame.bind(this), 3000); + setTimeout(this.startGame.bind(this), 3000); + }.bind(this)); }; diff --git a/game-server/app/servers/brnn/handler/brnnHandler.js b/game-server/app/servers/brnn/handler/brnnHandler.js index 062482d..d12c25f 100644 --- a/game-server/app/servers/brnn/handler/brnnHandler.js +++ b/game-server/app/servers/brnn/handler/brnnHandler.js @@ -24,7 +24,6 @@ Handler.prototype.chipIn = function(msg, session, next) { return ; } var room = channel.gameRoom; - //TODO 判断余额 var sqlHelper = this.app.get('sqlHelper'); sqlHelper.queryUserInfo(userid, function(err, userinfo) { var cpr = room.chipIn(userid, gold, pkindex, userinfo.gold); diff --git a/game-server/app/servers/brnn/remote/brnnRemote.js b/game-server/app/servers/brnn/remote/brnnRemote.js index 4229e03..00207ab 100644 --- a/game-server/app/servers/brnn/remote/brnnRemote.js +++ b/game-server/app/servers/brnn/remote/brnnRemote.js @@ -29,7 +29,8 @@ BrnnRemote.prototype.add = function(userid, sid, name, flag, cb) { if( !! channel) { if (!channel.gameRoom) { - var room = new DouniuRoom(channel); + var sqlHelper = this.app.get('sqlHelper'); + var room = new DouniuRoom(channel, sqlHelper); channel.gameRoom = room; channel.gameRoom.startGame(); } From 7bd94a6dcd50aade89648dd9a567693ca9e33d26 Mon Sep 17 00:00:00 2001 From: halloworld Date: Wed, 28 Jun 2017 17:26:49 +0800 Subject: [PATCH 16/84] =?UTF-8?q?=E5=8D=87=E7=BA=A7pomelo=202.2.x?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game-server/app/game/DouniuRoom.js | 1 + game-server/package.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/game-server/app/game/DouniuRoom.js b/game-server/app/game/DouniuRoom.js index 811b281..03568d4 100644 --- a/game-server/app/game/DouniuRoom.js +++ b/game-server/app/game/DouniuRoom.js @@ -37,6 +37,7 @@ DouniuRoom.prototype.kickUser = function(userid) { DouniuRoom.prototype.startGame = function() { this.state = 0; this.willWait = this.maxWillWait; + this.chipList = {}; this.willStartTimer = setInterval(this.willStartTimerCall.bind(this), 1000); }; diff --git a/game-server/package.json b/game-server/package.json index 891c311..de31baf 100644 --- a/game-server/package.json +++ b/game-server/package.json @@ -3,7 +3,7 @@ "version": "0.0.1", "private": false, "dependencies": { - "pomelo": "1.2.0", + "pomelo": "2.2.x", "crc": "0.2.0" } } From de5db211159b6876c6f5dbbfc13c56daddbe6263 Mon Sep 17 00:00:00 2001 From: halloworld Date: Wed, 28 Jun 2017 17:30:00 +0800 Subject: [PATCH 17/84] add unity ignore --- .gitignore | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/.gitignore b/.gitignore index 474f06d..fe1dec7 100644 --- a/.gitignore +++ b/.gitignore @@ -75,3 +75,35 @@ fastlane/screenshots iOSInjectionProject/ .DS_Store + +# Unity +/[Ll]ibrary/ +/[Tt]emp/ +/[Oo]bj/ +/[Bb]uild/ +/[Bb]uilds/ +/Assets/AssetStoreTools* + +# Autogenerated VS/MD solution and project files +ExportedObj/ +*.csproj +*.unityproj +*.sln +*.suo +*.tmp +*.user +*.userprefs +*.pidb +*.booproj +*.svd + + +# Unity3D generated meta files +*.pidb.meta + +# Unity3D Generated File On Crash Reports +sysinfo.txt + +# Builds +*.apk +*.unitypackage From 95ff116b8a6c4c1f699fb2f863f665784baa2c42 Mon Sep 17 00:00:00 2001 From: halloworld Date: Wed, 28 Jun 2017 17:34:24 +0800 Subject: [PATCH 18/84] add pomelo-unity --- client_unity/.gitignore | 12 + client_unity/.gitmodules | 3 + client_unity/Assets/chatofpomelo.cs | 110 ++ client_unity/Assets/chatofpomelo.cs.meta | 12 + client_unity/Assets/logicclient.cs | 110 ++ client_unity/Assets/logicclient.cs.meta | 12 + client_unity/Assets/scenes.meta | 7 + client_unity/Assets/scenes/Login.meta | 9 + client_unity/Assets/scenes/Login/Login.unity | 606 +++++++ .../Assets/scenes/Login/Login.unity.meta | 8 + .../Assets/scenes/Login/LoginController.cs | 20 + .../scenes/Login/LoginController.cs.meta | 12 + client_unity/Assets/scenes/chat.unity | 1432 +++++++++++++++++ client_unity/Assets/scenes/chat.unity.meta | 8 + client_unity/Assets/scripts.meta | 7 + client_unity/Assets/scripts/pomelo.meta | 9 + .../Assets/scripts/pomelo/LitJson.meta | 9 + .../scripts/pomelo/LitJson/IJsonWrapper.cs | 64 + .../pomelo/LitJson/IJsonWrapper.cs.meta | 12 + .../Assets/scripts/pomelo/LitJson/JsonData.cs | 1096 +++++++++++++ .../scripts/pomelo/LitJson/JsonData.cs.meta | 12 + .../scripts/pomelo/LitJson/JsonException.cs | 60 + .../pomelo/LitJson/JsonException.cs.meta | 12 + .../scripts/pomelo/LitJson/JsonMapper.cs | 927 +++++++++++ .../scripts/pomelo/LitJson/JsonMapper.cs.meta | 12 + .../scripts/pomelo/LitJson/JsonMockWrapper.cs | 108 ++ .../pomelo/LitJson/JsonMockWrapper.cs.meta | 12 + .../scripts/pomelo/LitJson/JsonReader.cs | 473 ++++++ .../scripts/pomelo/LitJson/JsonReader.cs.meta | 12 + .../scripts/pomelo/LitJson/JsonWriter.cs | 463 ++++++ .../scripts/pomelo/LitJson/JsonWriter.cs.meta | 12 + .../Assets/scripts/pomelo/LitJson/Lexer.cs | 912 +++++++++++ .../scripts/pomelo/LitJson/Lexer.cs.meta | 12 + .../scripts/pomelo/LitJson/ParserToken.cs | 44 + .../pomelo/LitJson/ParserToken.cs.meta | 12 + .../Assets/scripts/pomelo/PomeloSingleton.cs | 61 + .../scripts/pomelo/PomeloSingleton.cs.meta | 12 + .../Assets/scripts/pomelo/clientProtos.cs | 235 +++ .../scripts/pomelo/clientProtos.cs.meta | 12 + .../scripts/pomelo/pomelo-dotnetclient.meta | 9 + .../pomelo/pomelo-dotnetclient/client.meta | 9 + .../client/EventManager.cs | 81 + .../client/EventManager.cs.meta | 12 + .../client/PomeloClient.cs | 279 ++++ .../client/PomeloClient.cs.meta | 12 + .../pomelo/pomelo-dotnetclient/protobuf.meta | 9 + .../pomelo-dotnetclient/protobuf/Decoder.cs | 43 + .../protobuf/Decoder.cs.meta | 12 + .../pomelo-dotnetclient/protobuf/Encoder.cs | 83 + .../protobuf/Encoder.cs.meta | 12 + .../protobuf/MsgDecoder.cs | 241 +++ .../protobuf/MsgDecoder.cs.meta | 12 + .../protobuf/MsgEncoder.cs | 322 ++++ .../protobuf/MsgEncoder.cs.meta | 12 + .../pomelo-dotnetclient/protobuf/Protobuf.cs | 26 + .../protobuf/Protobuf.cs.meta | 12 + .../pomelo-dotnetclient/protobuf/util.meta | 9 + .../pomelo-dotnetclient/protobuf/util/Util.cs | 86 + .../protobuf/util/Util.cs.meta | 12 + .../pomelo/pomelo-dotnetclient/protocol.meta | 9 + .../protocol/HandShakeService.cs | 66 + .../protocol/HandShakeService.cs.meta | 12 + .../protocol/HeartBeatService.cs | 64 + .../protocol/HeartBeatService.cs.meta | 12 + .../pomelo-dotnetclient/protocol/Message.cs | 22 + .../protocol/Message.cs.meta | 12 + .../protocol/MessageProtocol.cs | 210 +++ .../protocol/MessageProtocol.cs.meta | 12 + .../protocol/MessageType.cs | 15 + .../protocol/MessageType.cs.meta | 12 + .../pomelo-dotnetclient/protocol/Package.cs | 19 + .../protocol/Package.cs.meta | 12 + .../protocol/PackageProtocol.cs | 48 + .../protocol/PackageProtocol.cs.meta | 12 + .../protocol/PackageTypes.cs | 14 + .../protocol/PackageTypes.cs.meta | 12 + .../pomelo-dotnetclient/protocol/Protocol.cs | 268 +++ .../protocol/Protocol.cs.meta | 12 + .../protocol/ProtocolState.cs | 23 + .../protocol/ProtocolState.cs.meta | 12 + .../pomelo/pomelo-dotnetclient/transport.meta | 9 + .../transport/ITransporter.cs | 16 + .../transport/ITransporter.cs.meta | 12 + .../transport/TransportState.cs | 18 + .../transport/TransportState.cs.meta | 12 + .../transport/TransporterSSL.cs | 297 ++++ .../transport/TransporterSSL.cs.meta | 12 + .../transport/TransporterTCP.cs | 294 ++++ .../transport/TransporterTCP.cs.meta | 12 + .../Assets/scripts/pomelo/pomeloBehaviour.cs | 126 ++ .../scripts/pomelo/pomeloBehaviour.cs.meta | 12 + client_unity/LICENSE | 21 + .../ProjectSettings/AudioManager.asset | 15 + .../ProjectSettings/ClusterInputManager.asset | 6 + .../ProjectSettings/DynamicsManager.asset | 15 + .../ProjectSettings/EditorBuildSettings.asset | 9 + .../ProjectSettings/EditorSettings.asset | 15 + .../ProjectSettings/GraphicsSettings.asset | 64 + .../ProjectSettings/InputManager.asset | 295 ++++ .../ProjectSettings/NavMeshAreas.asset | 71 + .../ProjectSettings/NavMeshLayers.asset | Bin 0 -> 9196 bytes .../ProjectSettings/NetworkManager.asset | 8 + .../ProjectSettings/Physics2DSettings.asset | 25 + .../ProjectSettings/ProjectSettings.asset | 607 +++++++ .../ProjectSettings/ProjectVersion.txt | 1 + .../ProjectSettings/QualitySettings.asset | 165 ++ client_unity/ProjectSettings/TagManager.asset | 43 + .../ProjectSettings/TimeManager.asset | 8 + .../UnityConnectSettings.asset | 32 + client_unity/README.md | 70 + .../clientProtos.json | 19 + .../serverProtos.json | 22 + ...bly-CSharp.csproj.FilesWrittenAbsolute.txt | 23 + client_unity/obj/Debug/Assembly-CSharp.dll | Bin 0 -> 99840 bytes .../obj/Debug/Assembly-CSharp.dll.mdb | Bin 0 -> 44669 bytes 115 files changed, 11486 insertions(+) create mode 100644 client_unity/.gitignore create mode 100644 client_unity/.gitmodules create mode 100644 client_unity/Assets/chatofpomelo.cs create mode 100644 client_unity/Assets/chatofpomelo.cs.meta create mode 100644 client_unity/Assets/logicclient.cs create mode 100644 client_unity/Assets/logicclient.cs.meta create mode 100644 client_unity/Assets/scenes.meta create mode 100644 client_unity/Assets/scenes/Login.meta create mode 100644 client_unity/Assets/scenes/Login/Login.unity create mode 100644 client_unity/Assets/scenes/Login/Login.unity.meta create mode 100644 client_unity/Assets/scenes/Login/LoginController.cs create mode 100644 client_unity/Assets/scenes/Login/LoginController.cs.meta create mode 100644 client_unity/Assets/scenes/chat.unity create mode 100644 client_unity/Assets/scenes/chat.unity.meta create mode 100644 client_unity/Assets/scripts.meta create mode 100644 client_unity/Assets/scripts/pomelo.meta create mode 100644 client_unity/Assets/scripts/pomelo/LitJson.meta create mode 100644 client_unity/Assets/scripts/pomelo/LitJson/IJsonWrapper.cs create mode 100644 client_unity/Assets/scripts/pomelo/LitJson/IJsonWrapper.cs.meta create mode 100644 client_unity/Assets/scripts/pomelo/LitJson/JsonData.cs create mode 100644 client_unity/Assets/scripts/pomelo/LitJson/JsonData.cs.meta create mode 100644 client_unity/Assets/scripts/pomelo/LitJson/JsonException.cs create mode 100644 client_unity/Assets/scripts/pomelo/LitJson/JsonException.cs.meta create mode 100644 client_unity/Assets/scripts/pomelo/LitJson/JsonMapper.cs create mode 100644 client_unity/Assets/scripts/pomelo/LitJson/JsonMapper.cs.meta create mode 100644 client_unity/Assets/scripts/pomelo/LitJson/JsonMockWrapper.cs create mode 100644 client_unity/Assets/scripts/pomelo/LitJson/JsonMockWrapper.cs.meta create mode 100644 client_unity/Assets/scripts/pomelo/LitJson/JsonReader.cs create mode 100644 client_unity/Assets/scripts/pomelo/LitJson/JsonReader.cs.meta create mode 100644 client_unity/Assets/scripts/pomelo/LitJson/JsonWriter.cs create mode 100644 client_unity/Assets/scripts/pomelo/LitJson/JsonWriter.cs.meta create mode 100644 client_unity/Assets/scripts/pomelo/LitJson/Lexer.cs create mode 100644 client_unity/Assets/scripts/pomelo/LitJson/Lexer.cs.meta create mode 100644 client_unity/Assets/scripts/pomelo/LitJson/ParserToken.cs create mode 100644 client_unity/Assets/scripts/pomelo/LitJson/ParserToken.cs.meta create mode 100644 client_unity/Assets/scripts/pomelo/PomeloSingleton.cs create mode 100644 client_unity/Assets/scripts/pomelo/PomeloSingleton.cs.meta create mode 100644 client_unity/Assets/scripts/pomelo/clientProtos.cs create mode 100644 client_unity/Assets/scripts/pomelo/clientProtos.cs.meta create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient.meta create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/client.meta create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/client/EventManager.cs create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/client/EventManager.cs.meta create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/client/PomeloClient.cs create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/client/PomeloClient.cs.meta create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf.meta create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/Decoder.cs create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/Decoder.cs.meta create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/Encoder.cs create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/Encoder.cs.meta create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/MsgDecoder.cs create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/MsgDecoder.cs.meta create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/MsgEncoder.cs create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/MsgEncoder.cs.meta create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/Protobuf.cs create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/Protobuf.cs.meta create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/util.meta create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/util/Util.cs create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/util/Util.cs.meta create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol.meta create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/HandShakeService.cs create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/HandShakeService.cs.meta create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/HeartBeatService.cs create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/HeartBeatService.cs.meta create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/Message.cs create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/Message.cs.meta create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/MessageProtocol.cs create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/MessageProtocol.cs.meta create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/MessageType.cs create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/MessageType.cs.meta create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/Package.cs create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/Package.cs.meta create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/PackageProtocol.cs create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/PackageProtocol.cs.meta create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/PackageTypes.cs create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/PackageTypes.cs.meta create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/Protocol.cs create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/Protocol.cs.meta create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/ProtocolState.cs create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/ProtocolState.cs.meta create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/transport.meta create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/transport/ITransporter.cs create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/transport/ITransporter.cs.meta create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/transport/TransportState.cs create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/transport/TransportState.cs.meta create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/transport/TransporterSSL.cs create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/transport/TransporterSSL.cs.meta create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/transport/TransporterTCP.cs create mode 100644 client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/transport/TransporterTCP.cs.meta create mode 100644 client_unity/Assets/scripts/pomelo/pomeloBehaviour.cs create mode 100644 client_unity/Assets/scripts/pomelo/pomeloBehaviour.cs.meta create mode 100644 client_unity/LICENSE create mode 100644 client_unity/ProjectSettings/AudioManager.asset create mode 100644 client_unity/ProjectSettings/ClusterInputManager.asset create mode 100644 client_unity/ProjectSettings/DynamicsManager.asset create mode 100644 client_unity/ProjectSettings/EditorBuildSettings.asset create mode 100644 client_unity/ProjectSettings/EditorSettings.asset create mode 100644 client_unity/ProjectSettings/GraphicsSettings.asset create mode 100644 client_unity/ProjectSettings/InputManager.asset create mode 100644 client_unity/ProjectSettings/NavMeshAreas.asset create mode 100644 client_unity/ProjectSettings/NavMeshLayers.asset create mode 100644 client_unity/ProjectSettings/NetworkManager.asset create mode 100644 client_unity/ProjectSettings/Physics2DSettings.asset create mode 100644 client_unity/ProjectSettings/ProjectSettings.asset create mode 100644 client_unity/ProjectSettings/ProjectVersion.txt create mode 100644 client_unity/ProjectSettings/QualitySettings.asset create mode 100644 client_unity/ProjectSettings/TagManager.asset create mode 100644 client_unity/ProjectSettings/TimeManager.asset create mode 100644 client_unity/ProjectSettings/UnityConnectSettings.asset create mode 100644 client_unity/README.md create mode 100644 client_unity/chatofpomelo-proto-patch/clientProtos.json create mode 100644 client_unity/chatofpomelo-proto-patch/serverProtos.json create mode 100644 client_unity/obj/Debug/Assembly-CSharp.csproj.FilesWrittenAbsolute.txt create mode 100755 client_unity/obj/Debug/Assembly-CSharp.dll create mode 100644 client_unity/obj/Debug/Assembly-CSharp.dll.mdb diff --git a/client_unity/.gitignore b/client_unity/.gitignore new file mode 100644 index 0000000..44a921d --- /dev/null +++ b/client_unity/.gitignore @@ -0,0 +1,12 @@ +player_win_x64.pdb +player_win_x64_s.pdb +Temp +Library +/pomelo-unitychat_Data +/pomelo-unitychat.exe +/player_win_x64.pdb +/player_win_x64_s.pdb +/.vs +/pomelo-unitychat.CSharp.csproj +/pomelo-unitychat.CSharp.csproj.user +/pomelo-unitychat.sln diff --git a/client_unity/.gitmodules b/client_unity/.gitmodules new file mode 100644 index 0000000..bb55d33 --- /dev/null +++ b/client_unity/.gitmodules @@ -0,0 +1,3 @@ +[submodule "chatofpomelo-websocket"] + path = chatofpomelo-websocket + url = https://github.com/NetEase/chatofpomelo-websocket diff --git a/client_unity/Assets/chatofpomelo.cs b/client_unity/Assets/chatofpomelo.cs new file mode 100644 index 0000000..4268fa7 --- /dev/null +++ b/client_unity/Assets/chatofpomelo.cs @@ -0,0 +1,110 @@ +using UnityEngine; +using System.Collections; +using Proto.chat; +using Proto.connector; +using System; +using Proto; +using Proto.gate; + +[RequireComponent(typeof(pomeloBehaviour))] +public class chatofpomelo : MonoBehaviour +{ + + + [TextArea(3, 10)] + public string HandShakeCache; + + public string host = "127.0.0.1"; + public int port = 3101; + pomeloBehaviour client; + public string uid = "1"; + + + public Action connectToConnector; + public Action disconnectConnector; + public Action connectGateFailed; + + void Awake() + { + + client = GetComponent(); + client.updateClientEvent += OnUpdateClient; + } + // Use this for initialization + + + public void ConnectToGate() + { + client.connectEvent += OnConnectToGate; + client.closeEvent += OnGateServerDisconnect; + client.ConnectServer(host, port, Pomelo.DotNetClient.ClientProtocolType.NORMAL, HandShakeCache); + } + + public void OnConnectToConnector() + { + client.closeEvent += OnServerDisconnect; + + + this.HandShakeCache = client.GetHandShakeCache(); + + if(connectToConnector != null) + { + connectToConnector.Invoke(); + } + + + Debug.Log("Connector Connected"); + + } + public void OnConnectToGate() + { + this.HandShakeCache = client.GetHandShakeCache(); + //gate logic can moveto logicclient + gateHandler.queryEntry(uid, delegate (gateHandler.queryEntry_result result) + { + Debug.Log(result.ToString()); + client.connectEvent -= OnConnectToGate; + client.closeEvent -= OnGateServerDisconnect; + + client.CloseClient(); + + if (result.code == 500) + { + //TODO + } + + if (result.code == 200) + { + client.connectEvent += OnConnectToConnector; + client.ConnectServer(result.host, result.port, Pomelo.DotNetClient.ClientProtocolType.NORMAL, HandShakeCache); + } + + //TODO other event + }); + Debug.Log("Gate Connected"); + } + + + private void OnUpdateClient() + { + Proto.Version.resetClient(client.pc); + } + + private void OnServerDisconnect() + { + client.connectEvent -= OnConnectToConnector; + client.closeEvent -= OnServerDisconnect; + + if (disconnectConnector != null) disconnectConnector.Invoke(); + + } + + private void OnGateServerDisconnect() + { + client.connectEvent -= OnConnectToGate; + client.closeEvent -= OnGateServerDisconnect; + + if (connectGateFailed != null) connectGateFailed.Invoke(); + + } +} diff --git a/client_unity/Assets/chatofpomelo.cs.meta b/client_unity/Assets/chatofpomelo.cs.meta new file mode 100644 index 0000000..6f18403 --- /dev/null +++ b/client_unity/Assets/chatofpomelo.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2c4a93b8eca5103488a9b0475065bd4b +timeCreated: 1464157426 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/logicclient.cs b/client_unity/Assets/logicclient.cs new file mode 100644 index 0000000..8baca16 --- /dev/null +++ b/client_unity/Assets/logicclient.cs @@ -0,0 +1,110 @@ +using UnityEngine; +using System.Collections; +using Proto; +using Proto.connector; +using Proto.chat; +using System; + +public class logicclient : MonoBehaviour +{ + public UnityEngine.UI.Text text; + public UnityEngine.UI.InputField input; + public UnityEngine.UI.Button loginBtn; + public UnityEngine.UI.Button sendBtn; + + public string uid; + + string user; + + + chatofpomelo baseClient; + void Awake() + { + baseClient = GetComponent(); + baseClient.connectToConnector += onConnectToConnector; + baseClient.disconnectConnector += onDisconnectConnector; + baseClient.connectGateFailed += onConnectGateFailed; + } + + // Use this for initialization + void Start() + { + if (sendBtn) { sendBtn.interactable = true; } + baseClient.uid = uid; + baseClient.ConnectToGate(); + } + + + public void send() + { + this.send(input.text); + } + + public void send(string message) + { + chatHandler.send( + "pomelo", + message, + user, + "*" + ); + } + + public void login() + { + user = "pomelo" + DateTime.Now.Millisecond; + + entryHandler.enter(user, "pomelo", delegate (entryHandler.enter_result result) + { + if (sendBtn) { sendBtn.interactable = true; } + }); + } + + void onConnectToConnector() + { + ServerEvent.onChat(delegate (ServerEvent.onChat_event ret) + { + string strMsg = string.Format("{0} : {1}.", ret.from, ret.msg); + if (text) + { + text.text = text.text.Insert(text.text.Length, strMsg); + text.text = text.text.Insert(text.text.Length, "\n"); + } + }); + + ServerEvent.onAdd(delegate (ServerEvent.onAdd_event msg) + { + string strMsg = string.Format("{0} Joined.", msg.user); + if (text) + { + text.text = text.text.Insert(text.text.Length, strMsg); + text.text = text.text.Insert(text.text.Length, "\n"); + } + }); + + ServerEvent.onLeave(delegate (ServerEvent.onLeave_event msg) + { + string strMsg = string.Format("{0} Leaved.", msg.user); + if (text) + { + text.text = text.text.Insert(text.text.Length, strMsg); + text.text = text.text.Insert(text.text.Length, "\n"); + } + }); + + + login(); + } + + void onDisconnectConnector() + { + if (loginBtn) { loginBtn.gameObject.SetActive(true); } + if (sendBtn) { sendBtn.interactable = false; } + } + + void onConnectGateFailed() + { + if (loginBtn) { loginBtn.gameObject.SetActive(true); } + if (sendBtn) { sendBtn.interactable = false; } + } +} diff --git a/client_unity/Assets/logicclient.cs.meta b/client_unity/Assets/logicclient.cs.meta new file mode 100644 index 0000000..f246ddb --- /dev/null +++ b/client_unity/Assets/logicclient.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b5dd7fb9c0f72134486dff19aa4c5c48 +timeCreated: 1464346460 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scenes.meta b/client_unity/Assets/scenes.meta new file mode 100644 index 0000000..a951942 --- /dev/null +++ b/client_unity/Assets/scenes.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 1901d1beeccd7884a87efa25189b3366 +folderAsset: yes +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scenes/Login.meta b/client_unity/Assets/scenes/Login.meta new file mode 100644 index 0000000..baa3dc3 --- /dev/null +++ b/client_unity/Assets/scenes/Login.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 996749531032c4f48b6da6f592026b8e +folderAsset: yes +timeCreated: 1498631245 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scenes/Login/Login.unity b/client_unity/Assets/scenes/Login/Login.unity new file mode 100644 index 0000000..c5316ce --- /dev/null +++ b/client_unity/Assets/scenes/Login/Login.unity @@ -0,0 +1,606 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 7 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0.44657826, g: 0.49641263, b: 0.57481676, a: 1} +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 7 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_TemporalCoherenceThreshold: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 4 + m_Resolution: 2 + m_BakeResolution: 40 + m_TextureWidth: 1024 + m_TextureHeight: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_DirectLightInLightProbes: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_LightingDataAsset: {fileID: 0} + m_RuntimeCPUUsage: 25 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + accuratePlacement: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &289162723 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 289162724} + - component: {fileID: 289162727} + - component: {fileID: 289162726} + - component: {fileID: 289162725} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &289162724 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 289162723} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 943322447} + m_Father: {fileID: 667689072} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -100} + m_SizeDelta: {x: 200, y: 60} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &289162725 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 289162723} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 289162726} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 667689073} + m_MethodName: guestLogin + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &289162726 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 289162723} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &289162727 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 289162723} +--- !u!1 &667689068 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 667689072} + - component: {fileID: 667689071} + - component: {fileID: 667689070} + - component: {fileID: 667689069} + - component: {fileID: 667689073} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &667689069 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 667689068} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1301386320, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &667689070 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 667689068} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 1 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 1334, y: 750} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &667689071 +Canvas: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 667689068} + m_Enabled: 1 + serializedVersion: 2 + m_RenderMode: 1 + m_Camera: {fileID: 1980029547} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &667689072 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 667689068} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 289162724} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &667689073 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 667689068} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 31fe837f174f847d8bed960ead7dee38, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &943322446 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 943322447} + - component: {fileID: 943322449} + - component: {fileID: 943322448} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &943322447 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 943322446} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 289162724} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &943322448 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 943322446} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u6E38\u5BA2\u767B\u5F55" +--- !u!222 &943322449 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 943322446} +--- !u!1 &1012992417 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1012992419} + - component: {fileID: 1012992418} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1012992418 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1012992417} + m_Enabled: 1 + serializedVersion: 7 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 4 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1012992419 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1012992417} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &1110823567 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1110823570} + - component: {fileID: 1110823569} + - component: {fileID: 1110823568} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1110823568 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1110823567} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1077351063, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1110823569 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1110823567} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -619905303, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &1110823570 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1110823567} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1980029543 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1980029548} + - component: {fileID: 1980029547} + - component: {fileID: 1980029546} + - component: {fileID: 1980029545} + - component: {fileID: 1980029544} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &1980029544 +AudioListener: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1980029543} + m_Enabled: 1 +--- !u!124 &1980029545 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1980029543} + m_Enabled: 1 +--- !u!92 &1980029546 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1980029543} + m_Enabled: 1 +--- !u!20 &1980029547 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1980029543} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 + m_StereoMirrorMode: 0 +--- !u!4 &1980029548 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1980029543} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/client_unity/Assets/scenes/Login/Login.unity.meta b/client_unity/Assets/scenes/Login/Login.unity.meta new file mode 100644 index 0000000..3bf3b86 --- /dev/null +++ b/client_unity/Assets/scenes/Login/Login.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: eb30b39efcff847049ff65c0e5f24294 +timeCreated: 1498628593 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scenes/Login/LoginController.cs b/client_unity/Assets/scenes/Login/LoginController.cs new file mode 100644 index 0000000..8f3860b --- /dev/null +++ b/client_unity/Assets/scenes/Login/LoginController.cs @@ -0,0 +1,20 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class LoginController : MonoBehaviour { + + void Start() + { + } + + void Update() + { + PomeloSingleton.CreateInstance ().updatePerFrame (); + } + + public void guestLogin() { + PomeloSingleton pml = PomeloSingleton.CreateInstance (); + pml.connectGate (); + } +} diff --git a/client_unity/Assets/scenes/Login/LoginController.cs.meta b/client_unity/Assets/scenes/Login/LoginController.cs.meta new file mode 100644 index 0000000..afd6302 --- /dev/null +++ b/client_unity/Assets/scenes/Login/LoginController.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 31fe837f174f847d8bed960ead7dee38 +timeCreated: 1498631264 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scenes/chat.unity b/client_unity/Assets/scenes/chat.unity new file mode 100644 index 0000000..03c1598 --- /dev/null +++ b/client_unity/Assets/scenes/chat.unity @@ -0,0 +1,1432 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 7 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0.44657826, g: 0.49641263, b: 0.57481676, a: 1} +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 7 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_TemporalCoherenceThreshold: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 4 + m_Resolution: 2 + m_BakeResolution: 40 + m_TextureWidth: 1024 + m_TextureHeight: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_DirectLightInLightProbes: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 1024 + m_ReflectionCompression: 2 + m_LightingDataAsset: {fileID: 0} + m_RuntimeCPUUsage: 25 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + accuratePlacement: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &77625748 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 77625749} + - component: {fileID: 77625752} + - component: {fileID: 77625751} + - component: {fileID: 77625750} + m_Layer: 5 + m_Name: Send + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &77625749 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 77625748} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1952633823} + m_Father: {fileID: 792474753} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -18, y: -178} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &77625750 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 77625748} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 77625751} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1801203199} + m_MethodName: send + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &77625751 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 77625748} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &77625752 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 77625748} +--- !u!1 &101171220 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 101171221} + - component: {fileID: 101171223} + - component: {fileID: 101171222} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &101171221 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 101171220} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 717768067} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &101171222 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 101171220} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &101171223 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 101171220} +--- !u!1 &181040365 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 181040370} + - component: {fileID: 181040369} + - component: {fileID: 181040368} + - component: {fileID: 181040367} + - component: {fileID: 181040366} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &181040366 +AudioListener: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 181040365} + m_Enabled: 1 +--- !u!124 &181040367 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 181040365} + m_Enabled: 1 +--- !u!92 &181040368 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 181040365} + m_Enabled: 1 +--- !u!20 &181040369 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 181040365} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 + m_StereoMirrorMode: 0 +--- !u!4 &181040370 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 181040365} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &643877502 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 643877503} + - component: {fileID: 643877505} + - component: {fileID: 643877504} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &643877503 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 643877502} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1393912090} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &643877504 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 643877502} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'Disconnect + +' +--- !u!222 &643877505 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 643877502} +--- !u!1 &652328406 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 652328408} + - component: {fileID: 652328407} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &652328407 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 652328406} + m_Enabled: 1 + serializedVersion: 7 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 4 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &652328408 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 652328406} + m_LocalRotation: {x: 0.40821794, y: -0.23456973, z: 0.109381676, w: 0.87542605} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &717768066 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 717768067} + - component: {fileID: 717768070} + - component: {fileID: 717768069} + - component: {fileID: 717768068} + m_Layer: 5 + m_Name: InputField + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &717768067 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 717768066} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1213633398} + - {fileID: 101171221} + m_Father: {fileID: 792474753} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -296, y: -194} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &717768068 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 717768066} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 575553740, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 717768069} + m_TextComponent: {fileID: 101171222} + m_Placeholder: {fileID: 1213633399} + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 0 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.InputField+SubmitEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.InputField+OnChangeEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 +--- !u!114 &717768069 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 717768066} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &717768070 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 717768066} +--- !u!1 &751160344 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 751160348} + - component: {fileID: 751160347} + - component: {fileID: 751160346} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &751160346 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 751160344} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1077351063, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &751160347 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 751160344} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -619905303, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &751160348 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 751160344} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &757331350 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 757331351} + - component: {fileID: 757331353} + - component: {fileID: 757331352} + m_Layer: 5 + m_Name: OutPut + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &757331351 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 757331350} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 792474753} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -55, y: 27} + m_SizeDelta: {x: 477, y: 330} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &757331352 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 757331350} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: New Text +--- !u!222 &757331353 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 757331350} +--- !u!1 &792474749 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 792474753} + - component: {fileID: 792474752} + - component: {fileID: 792474751} + - component: {fileID: 792474750} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &792474750 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 792474749} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1301386320, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &792474751 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 792474749} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 1 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 1334, y: 750} + m_ScreenMatchMode: 1 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &792474752 +Canvas: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 792474749} + m_Enabled: 1 + serializedVersion: 2 + m_RenderMode: 1 + m_Camera: {fileID: 181040369} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &792474753 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 792474749} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 757331351} + - {fileID: 717768067} + - {fileID: 77625749} + - {fileID: 1743597618} + - {fileID: 1393912090} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &1213633397 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1213633398} + - component: {fileID: 1213633400} + - component: {fileID: 1213633399} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1213633398 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1213633397} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 717768067} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1213633399 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1213633397} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 2 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Enter text... +--- !u!222 &1213633400 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1213633397} +--- !u!1 &1393912089 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1393912090} + - component: {fileID: 1393912093} + - component: {fileID: 1393912092} + - component: {fileID: 1393912091} + m_Layer: 5 + m_Name: Disconnect + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1393912090 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1393912089} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 643877503} + m_Father: {fileID: 792474753} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -18, y: -239.5} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1393912091 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1393912089} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1393912092} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1801203198} + m_MethodName: CloseClient + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &1393912092 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1393912089} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &1393912093 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1393912089} +--- !u!1 &1743597617 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1743597618} + - component: {fileID: 1743597621} + - component: {fileID: 1743597620} + - component: {fileID: 1743597619} + m_Layer: 5 + m_Name: Login + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1743597618 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1743597617} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1904275011} + m_Father: {fileID: 792474753} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 206, y: -178} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1743597619 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1743597617} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1743597620} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1801203196} + m_MethodName: ConnectToGate + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 + - m_Target: {fileID: 1743597617} + m_MethodName: SetActive + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &1743597620 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1743597617} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &1743597621 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1743597617} +--- !u!1 &1801203195 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1801203197} + - component: {fileID: 1801203198} + - component: {fileID: 1801203196} + - component: {fileID: 1801203199} + m_Layer: 0 + m_Name: pomelo_client + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1801203196 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1801203195} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2c4a93b8eca5103488a9b0475065bd4b, type: 3} + m_Name: + m_EditorClassIdentifier: + HandShakeCache: + host: 127.0.0.1 + port: 3101 + uid: 1 +--- !u!4 &1801203197 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1801203195} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1801203198 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1801203195} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a25f4e11c54f9834d9e3a8668fc3dd4e, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1801203199 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1801203195} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b5dd7fb9c0f72134486dff19aa4c5c48, type: 3} + m_Name: + m_EditorClassIdentifier: + text: {fileID: 757331352} + input: {fileID: 717768068} + loginBtn: {fileID: 1743597619} + sendBtn: {fileID: 77625750} + uid: 1 +--- !u!1 &1904275010 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1904275011} + - component: {fileID: 1904275013} + - component: {fileID: 1904275012} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1904275011 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1904275010} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1743597618} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1904275012 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1904275010} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Login +--- !u!222 &1904275013 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1904275010} +--- !u!1 &1952633822 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1952633823} + - component: {fileID: 1952633825} + - component: {fileID: 1952633824} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1952633823 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1952633822} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 77625749} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1952633824 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1952633822} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Send +--- !u!222 &1952633825 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1952633822} diff --git a/client_unity/Assets/scenes/chat.unity.meta b/client_unity/Assets/scenes/chat.unity.meta new file mode 100644 index 0000000..60ee0be --- /dev/null +++ b/client_unity/Assets/scenes/chat.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1985175677e82e1468ba6eb65ecb0478 +timeCreated: 1462854540 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts.meta b/client_unity/Assets/scripts.meta new file mode 100644 index 0000000..7d02d60 --- /dev/null +++ b/client_unity/Assets/scripts.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: de0cc7ee43804c140ac0ad26ec77c6ba +folderAsset: yes +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo.meta b/client_unity/Assets/scripts/pomelo.meta new file mode 100644 index 0000000..c752114 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a26bd4f5c67119c4d88caa4fb384cb1d +folderAsset: yes +timeCreated: 1464161552 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/LitJson.meta b/client_unity/Assets/scripts/pomelo/LitJson.meta new file mode 100644 index 0000000..3538795 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/LitJson.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: bf46c37708c082841b45e81e90f693b0 +folderAsset: yes +timeCreated: 1462854600 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/LitJson/IJsonWrapper.cs b/client_unity/Assets/scripts/pomelo/LitJson/IJsonWrapper.cs new file mode 100644 index 0000000..0b3fc02 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/LitJson/IJsonWrapper.cs @@ -0,0 +1,64 @@ +#region Header +/** + * IJsonWrapper.cs + * Interface that represents a type capable of handling all kinds of JSON + * data. This is mainly used when mapping objects through JsonMapper, and + * it's implemented by JsonData. + * + * The authors disclaim copyright to this source code. For more details, see + * the COPYING file included with this distribution. + **/ +#endregion + + +using System.Collections; +using System.Collections.Specialized; + + +namespace LitJson +{ + public enum JsonType + { + None, + + Object, + Array, + String, + Int, + Long, + Double, + Boolean, + Float + } + + public interface IJsonWrapper : IList, IOrderedDictionary + { + bool IsArray { get; } + bool IsBoolean { get; } + bool IsDouble { get; } + bool IsInt { get; } + bool IsLong { get; } + bool IsObject { get; } + bool IsString { get; } + bool IsFloat { get; } + + bool GetBoolean (); + float GetFloat(); + double GetDouble (); + int GetInt (); + JsonType GetJsonType (); + long GetLong (); + string GetString (); + + void SetBoolean (bool val); + void SetDouble (double val); + void SetFloat (float val); + void SetInt (int val); + void SetJsonType (JsonType type); + void SetLong (long val); + void SetString (string val); + + string ToJson (); + void ToJson (JsonWriter writer); + } +} diff --git a/client_unity/Assets/scripts/pomelo/LitJson/IJsonWrapper.cs.meta b/client_unity/Assets/scripts/pomelo/LitJson/IJsonWrapper.cs.meta new file mode 100644 index 0000000..9fa93fd --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/LitJson/IJsonWrapper.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e33786ad43e6a704c866adafd8f8b8ef +timeCreated: 1462854602 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/LitJson/JsonData.cs b/client_unity/Assets/scripts/pomelo/LitJson/JsonData.cs new file mode 100644 index 0000000..c6ee43f --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/LitJson/JsonData.cs @@ -0,0 +1,1096 @@ +#region Header +/** + * JsonData.cs + * Generic type to hold JSON data (objects, arrays, and so on). This is + * the default type returned by JsonMapper.ToObject(). + * + * The authors disclaim copyright to this source code. For more details, see + * the COPYING file included with this distribution. + **/ +#endregion + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.Specialized; +using System.IO; + + +namespace LitJson +{ + public class JsonData : IJsonWrapper, IEquatable + { + #region Fields + private IList inst_array; + private bool inst_boolean; + private double inst_double; + private float inst_float; + private int inst_int; + private long inst_long; + private IDictionary inst_object; + private string inst_string; + private string json; + private JsonType type; + + // Used to implement the IOrderedDictionary interface + private IList> object_list; + #endregion + + + #region Properties + public int Count { + get { return EnsureCollection ().Count; } + } + + public bool IsArray { + get { return type == JsonType.Array; } + } + + public bool IsBoolean { + get { return type == JsonType.Boolean; } + } + + public bool IsDouble { + get { return type == JsonType.Double; } + } + + public bool IsFloat{ + get { return type == JsonType.Float; } + } + + public bool IsInt { + get { return type == JsonType.Int; } + } + + public bool IsLong { + get { return type == JsonType.Long; } + } + + public bool IsObject { + get { return type == JsonType.Object; } + } + + public bool IsString { + get { return type == JsonType.String; } + } + + public ICollection Keys { + get { EnsureDictionary (); return inst_object.Keys; } + } + + public bool ContainsKey(string key) + { + return this.Keys.Contains(key); + } + + public bool TryGetValue(string key, out object value) + { + if (this.Keys.Contains(key)) + { + value = inst_object[key]; + return true; + } + value = null; + return false; + } + #endregion + + + #region ICollection Properties + int ICollection.Count { + get { + return Count; + } + } + + bool ICollection.IsSynchronized { + get { + return EnsureCollection ().IsSynchronized; + } + } + + object ICollection.SyncRoot { + get { + return EnsureCollection ().SyncRoot; + } + } + #endregion + + + #region IDictionary Properties + bool IDictionary.IsFixedSize { + get { + return EnsureDictionary ().IsFixedSize; + } + } + + bool IDictionary.IsReadOnly { + get { + return EnsureDictionary ().IsReadOnly; + } + } + + ICollection IDictionary.Keys { + get { + EnsureDictionary (); + IList keys = new List (); + + foreach (KeyValuePair entry in + object_list) { + keys.Add (entry.Key); + } + + return (ICollection) keys; + } + } + + ICollection IDictionary.Values { + get { + EnsureDictionary (); + IList values = new List (); + + foreach (KeyValuePair entry in + object_list) { + values.Add (entry.Value); + } + + return (ICollection) values; + } + } + #endregion + + + + #region IJsonWrapper Properties + bool IJsonWrapper.IsArray { + get { return IsArray; } + } + + bool IJsonWrapper.IsBoolean { + get { return IsBoolean; } + } + + bool IJsonWrapper.IsDouble { + get { return IsDouble; } + } + + bool IJsonWrapper.IsInt { + get { return IsInt; } + } + + bool IJsonWrapper.IsLong { + get { return IsLong; } + } + + bool IJsonWrapper.IsObject { + get { return IsObject; } + } + + bool IJsonWrapper.IsString { + get { return IsString; } + } + #endregion + + + #region IList Properties + bool IList.IsFixedSize { + get { + return EnsureList ().IsFixedSize; + } + } + + bool IList.IsReadOnly { + get { + return EnsureList ().IsReadOnly; + } + } + #endregion + + + #region IDictionary Indexer + object IDictionary.this[object key] { + get { + return EnsureDictionary ()[key]; + } + + set { + if (! (key is String)) + throw new ArgumentException ( + "The key has to be a string"); + + JsonData data = ToJsonData (value); + + this[(string) key] = data; + } + } + #endregion + + + #region IOrderedDictionary Indexer + object IOrderedDictionary.this[int idx] { + get { + EnsureDictionary (); + return object_list[idx].Value; + } + + set { + EnsureDictionary (); + JsonData data = ToJsonData (value); + + KeyValuePair old_entry = object_list[idx]; + + inst_object[old_entry.Key] = data; + + KeyValuePair entry = + new KeyValuePair (old_entry.Key, data); + + object_list[idx] = entry; + } + } + #endregion + + + #region IList Indexer + object IList.this[int index] { + get { + return EnsureList ()[index]; + } + + set { + EnsureList (); + JsonData data = ToJsonData (value); + + this[index] = data; + } + } + #endregion + + + #region Public Indexers + public JsonData this[string prop_name] { + get { + EnsureDictionary (); + return inst_object[prop_name]; + } + + set { + EnsureDictionary (); + + KeyValuePair entry = + new KeyValuePair (prop_name, value); + + if (inst_object.ContainsKey (prop_name)) { + for (int i = 0; i < object_list.Count; i++) { + if (object_list[i].Key == prop_name) { + object_list[i] = entry; + break; + } + } + } else + object_list.Add (entry); + + inst_object[prop_name] = value; + + json = null; + } + } + + public JsonData this[int index] { + get { + EnsureCollection (); + + if (type == JsonType.Array) + return inst_array[index]; + + return object_list[index].Value; + } + + set { + EnsureCollection (); + + if (type == JsonType.Array) + inst_array[index] = value; + else { + KeyValuePair entry = object_list[index]; + KeyValuePair new_entry = + new KeyValuePair (entry.Key, value); + + object_list[index] = new_entry; + inst_object[entry.Key] = value; + } + + json = null; + } + } + #endregion + + + #region Constructors + public JsonData () + { + } + + public JsonData (bool boolean) + { + type = JsonType.Boolean; + inst_boolean = boolean; + } + + public JsonData (double number) + { + type = JsonType.Double; + inst_double = number; + } + + public JsonData (float number) + { + type = JsonType.Float; + inst_float = number; + } + + public JsonData (int number) + { + type = JsonType.Int; + inst_int = number; + } + + public JsonData (long number) + { + type = JsonType.Long; + inst_long = number; + } + + public JsonData (object obj) + { + if (obj is Boolean) { + type = JsonType.Boolean; + inst_boolean = (bool) obj; + return; + } + + if (obj is Double) { + type = JsonType.Double; + inst_double = (double) obj; + return; + } + + if (obj is Int32) { + type = JsonType.Int; + inst_int = (int) obj; + return; + } + + if (obj is Int64) { + type = JsonType.Long; + inst_long = (long) obj; + return; + } + + if (obj is String) { + type = JsonType.String; + inst_string = (string) obj; + return; + } + + if (obj is float) + { + type = JsonType.Float; + inst_float = (float)obj; + return; + } + + if (obj is JsonData) + { + JsonData dd = (JsonData)obj; + inst_array = dd.inst_array; + inst_boolean = dd.inst_boolean; + inst_double = dd.inst_double; + inst_float = dd.inst_float; + inst_int = dd.inst_int; + inst_long = dd.inst_long; + inst_object = dd.inst_object; + inst_string = dd.inst_string; + json = dd.json; + type = dd.type; + object_list = dd.object_list; + return; + } + + throw new ArgumentException ( + "Unable to wrap the given object with JsonData"); + } + + public JsonData (string str) + { + type = JsonType.String; + inst_string = str; + } + #endregion + + + #region Implicit Conversions + public static implicit operator JsonData (Boolean data) + { + return new JsonData (data); + } + + public static implicit operator JsonData (Double data) + { + return new JsonData (data); + } + + public static implicit operator JsonData (Int32 data) + { + return new JsonData (data); + } + + public static implicit operator JsonData (Int64 data) + { + return new JsonData (data); + } + + public static implicit operator JsonData (String data) + { + return new JsonData (data); + } + #endregion + + + #region Explicit Conversions + public static explicit operator Boolean (JsonData data) + { + if (data.type != JsonType.Boolean) + throw new InvalidCastException ( + "Instance of JsonData doesn't hold a double"); + + return data.inst_boolean; + } + + public static explicit operator Double (JsonData data) + { + if (data.type != JsonType.Double) + throw new InvalidCastException ( + "Instance of JsonData doesn't hold a double"); + + return data.inst_double; + } + + public static explicit operator float(JsonData data) + { + if (data.type != JsonType.Float) + throw new InvalidCastException( + "Instance of JsonData doesn't hold a float"); + + return data.inst_float; + } + + public static explicit operator Int32 (JsonData data) + { + if (data.type != JsonType.Int) + throw new InvalidCastException ( + "Instance of JsonData doesn't hold an int"); + + return data.inst_int; + } + + public static explicit operator Int64 (JsonData data) + { + if (data.type != JsonType.Long) + throw new InvalidCastException ( + "Instance of JsonData doesn't hold an int"); + + return data.inst_long; + } + + public static explicit operator String (JsonData data) + { + if (data.type != JsonType.String) + throw new InvalidCastException ( + "Instance of JsonData doesn't hold a string"); + + return data.inst_string; + } + #endregion + + + #region ICollection Methods + void ICollection.CopyTo (Array array, int index) + { + EnsureCollection ().CopyTo (array, index); + } + #endregion + + + #region IDictionary Methods + void IDictionary.Add (object key, object value) + { + JsonData data = ToJsonData (value); + + EnsureDictionary ().Add (key, data); + + KeyValuePair entry = + new KeyValuePair ((string) key, data); + object_list.Add (entry); + + json = null; + } + + void IDictionary.Clear () + { + EnsureDictionary ().Clear (); + object_list.Clear (); + json = null; + } + + bool IDictionary.Contains (object key) + { + return EnsureDictionary ().Contains (key); + } + + IDictionaryEnumerator IDictionary.GetEnumerator () + { + return ((IOrderedDictionary) this).GetEnumerator (); + } + + void IDictionary.Remove (object key) + { + EnsureDictionary ().Remove (key); + + for (int i = 0; i < object_list.Count; i++) { + if (object_list[i].Key == (string) key) { + object_list.RemoveAt (i); + break; + } + } + + json = null; + } + #endregion + + + #region IEnumerable Methods + IEnumerator IEnumerable.GetEnumerator () + { + return EnsureCollection ().GetEnumerator (); + } + #endregion + + + #region IJsonWrapper Methods + bool IJsonWrapper.GetBoolean () + { + if (type != JsonType.Boolean) + throw new InvalidOperationException ( + "JsonData instance doesn't hold a boolean"); + + return inst_boolean; + } + + double IJsonWrapper.GetDouble () + { + if (type != JsonType.Double) + throw new InvalidOperationException ( + "JsonData instance doesn't hold a double"); + + return inst_double; + } + + float IJsonWrapper.GetFloat() + { + if (type != JsonType.Float) + throw new InvalidOperationException( + "JsonData instance doesn't hold a float"); + + return inst_float; + } + + int IJsonWrapper.GetInt () + { + if (type != JsonType.Int) + throw new InvalidOperationException ( + "JsonData instance doesn't hold an int"); + + return inst_int; + } + + long IJsonWrapper.GetLong () + { + if (type != JsonType.Long) + throw new InvalidOperationException ( + "JsonData instance doesn't hold a long"); + + return inst_long; + } + + string IJsonWrapper.GetString () + { + if (type != JsonType.String) + throw new InvalidOperationException ( + "JsonData instance doesn't hold a string"); + + return inst_string; + } + + void IJsonWrapper.SetBoolean (bool val) + { + type = JsonType.Boolean; + inst_boolean = val; + json = null; + } + + void IJsonWrapper.SetDouble (double val) + { + type = JsonType.Double; + inst_double = val; + json = null; + } + + void IJsonWrapper.SetFloat(float val) + { + type = JsonType.Float; + inst_float = val; + json = null; + } + + void IJsonWrapper.SetInt (int val) + { + type = JsonType.Int; + inst_int = val; + json = null; + } + + void IJsonWrapper.SetLong (long val) + { + type = JsonType.Long; + inst_long = val; + json = null; + } + + void IJsonWrapper.SetString (string val) + { + type = JsonType.String; + inst_string = val; + json = null; + } + + string IJsonWrapper.ToJson () + { + return ToJson (); + } + + void IJsonWrapper.ToJson (JsonWriter writer) + { + ToJson (writer); + } + #endregion + + + #region IList Methods + int IList.Add (object value) + { + return Add (value); + } + + void IList.Clear () + { + EnsureList ().Clear (); + json = null; + } + + bool IList.Contains (object value) + { + return EnsureList ().Contains (value); + } + + int IList.IndexOf (object value) + { + return EnsureList ().IndexOf (value); + } + + void IList.Insert (int index, object value) + { + EnsureList ().Insert (index, value); + json = null; + } + + void IList.Remove (object value) + { + EnsureList ().Remove (value); + json = null; + } + + void IList.RemoveAt (int index) + { + EnsureList ().RemoveAt (index); + json = null; + } + #endregion + + + #region IOrderedDictionary Methods + IDictionaryEnumerator IOrderedDictionary.GetEnumerator () + { + EnsureDictionary (); + + return new OrderedDictionaryEnumerator ( + object_list.GetEnumerator ()); + } + + void IOrderedDictionary.Insert (int idx, object key, object value) + { + string property = (string) key; + JsonData data = ToJsonData (value); + + this[property] = data; + + KeyValuePair entry = + new KeyValuePair (property, data); + + object_list.Insert (idx, entry); + } + + void IOrderedDictionary.RemoveAt (int idx) + { + EnsureDictionary (); + + inst_object.Remove (object_list[idx].Key); + object_list.RemoveAt (idx); + } + #endregion + + + #region Private Methods + private ICollection EnsureCollection () + { + if (type == JsonType.Array) + return (ICollection) inst_array; + + if (type == JsonType.Object) + return (ICollection) inst_object; + + throw new InvalidOperationException ( + "The JsonData instance has to be initialized first"); + } + + private IDictionary EnsureDictionary () + { + if (type == JsonType.Object) + return (IDictionary) inst_object; + + if (type != JsonType.None) + throw new InvalidOperationException ( + "Instance of JsonData is not a dictionary"); + + type = JsonType.Object; + inst_object = new Dictionary (); + object_list = new List> (); + + return (IDictionary) inst_object; + } + + private IList EnsureList () + { + if (type == JsonType.Array) + return (IList) inst_array; + + if (type != JsonType.None) + throw new InvalidOperationException ( + "Instance of JsonData is not a list"); + + type = JsonType.Array; + inst_array = new List (); + + return (IList) inst_array; + } + + private JsonData ToJsonData (object obj) + { + if (obj == null) + return null; + + if (obj is JsonData) + return (JsonData) obj; + + return new JsonData (obj); + } + + private static void WriteJson (IJsonWrapper obj, JsonWriter writer) + { + if (obj == null) { + writer.Write (null); + return; + } + + if (obj.IsString) { + writer.Write (obj.GetString ()); + return; + } + + if (obj.IsBoolean) { + writer.Write (obj.GetBoolean ()); + return; + } + + if (obj.IsDouble) { + writer.Write (obj.GetDouble ()); + return; + } + + if (obj.IsInt) { + writer.Write (obj.GetInt ()); + return; + } + + if (obj.IsLong) { + writer.Write (obj.GetLong ()); + return; + } + + if (obj.IsArray) { + writer.WriteArrayStart (); + foreach (object elem in (IList) obj) + WriteJson ((JsonData) elem, writer); + writer.WriteArrayEnd (); + + return; + } + + if (obj.IsObject) + { + writer.WriteObjectStart(); + + foreach (DictionaryEntry entry in ((IDictionary)obj)) + { + writer.WritePropertyName((string)entry.Key); + WriteJson((JsonData)entry.Value, writer); + } + writer.WriteObjectEnd(); + + return; + } + else + { + writer.WriteObjectStart(); + writer.WriteObjectEnd(); + } + } + #endregion + + + public int Add (object value) + { + JsonData data = ToJsonData (value); + + json = null; + + return EnsureList ().Add (data); + } + + public void Clear () + { + if (IsObject) { + ((IDictionary) this).Clear (); + return; + } + + if (IsArray) { + ((IList) this).Clear (); + return; + } + } + + public bool Equals (JsonData x) + { + if (x == null) + return false; + + if (x.type != this.type) + return false; + + switch (this.type) { + case JsonType.None: + return true; + + case JsonType.Object: + return this.inst_object.Equals (x.inst_object); + + case JsonType.Array: + return this.inst_array.Equals (x.inst_array); + + case JsonType.String: + return this.inst_string.Equals (x.inst_string); + + case JsonType.Int: + return this.inst_int.Equals (x.inst_int); + + case JsonType.Long: + return this.inst_long.Equals (x.inst_long); + + case JsonType.Double: + return this.inst_double.Equals (x.inst_double); + + case JsonType.Boolean: + return this.inst_boolean.Equals (x.inst_boolean); + + case JsonType.Float: + return this.inst_float.Equals(x.inst_float); + } + + return false; + } + + public JsonType GetJsonType () + { + return type; + } + + public void SetJsonType (JsonType type) + { + if (this.type == type) + return; + + switch (type) { + case JsonType.None: + break; + + case JsonType.Object: + inst_object = new Dictionary (); + object_list = new List> (); + break; + + case JsonType.Array: + inst_array = new List (); + break; + + case JsonType.String: + inst_string = default (String); + break; + + case JsonType.Int: + inst_int = default (Int32); + break; + + case JsonType.Long: + inst_long = default (Int64); + break; + + case JsonType.Double: + inst_double = default (Double); + break; + + case JsonType.Boolean: + inst_boolean = default (Boolean); + break; + + case JsonType.Float: + inst_float = default(float); + break; + } + + this.type = type; + } + + public string ToJson () + { + if (json != null) + return json; + + StringWriter sw = new StringWriter (); + JsonWriter writer = new JsonWriter (sw); + writer.Validate = false; + + WriteJson (this, writer); + json = sw.ToString (); + + return json; + } + + public void ToJson (JsonWriter writer) + { + bool old_validate = writer.Validate; + + writer.Validate = false; + + WriteJson (this, writer); + + writer.Validate = old_validate; + } + + public override string ToString () + { + switch (type) { + case JsonType.Array: + return "JsonData array"; + + case JsonType.Boolean: + return inst_boolean.ToString (); + + case JsonType.Double: + return inst_double.ToString (); + + case JsonType.Float: + return inst_float.ToString(); + + case JsonType.Int: + return inst_int.ToString (); + + case JsonType.Long: + return inst_long.ToString (); + + case JsonType.Object: + return "JsonData object"; + + case JsonType.String: + return inst_string; + } + + return "Uninitialized JsonData"; + } + } + + + internal class OrderedDictionaryEnumerator : IDictionaryEnumerator + { + IEnumerator> list_enumerator; + + + public object Current { + get { return Entry; } + } + + public DictionaryEntry Entry { + get { + KeyValuePair curr = list_enumerator.Current; + return new DictionaryEntry (curr.Key, curr.Value); + } + } + + public object Key { + get { return list_enumerator.Current.Key; } + } + + public object Value { + get { return list_enumerator.Current.Value; } + } + + + public OrderedDictionaryEnumerator ( + IEnumerator> enumerator) + { + list_enumerator = enumerator; + } + + + public bool MoveNext () + { + return list_enumerator.MoveNext (); + } + + public void Reset () + { + list_enumerator.Reset (); + } + + } +} diff --git a/client_unity/Assets/scripts/pomelo/LitJson/JsonData.cs.meta b/client_unity/Assets/scripts/pomelo/LitJson/JsonData.cs.meta new file mode 100644 index 0000000..9759850 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/LitJson/JsonData.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 73c01bce1537cc3419d374b2a2fd8ff5 +timeCreated: 1462854600 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/LitJson/JsonException.cs b/client_unity/Assets/scripts/pomelo/LitJson/JsonException.cs new file mode 100644 index 0000000..f7f8db0 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/LitJson/JsonException.cs @@ -0,0 +1,60 @@ +#region Header +/** + * JsonException.cs + * Base class throwed by LitJSON when a parsing error occurs. + * + * The authors disclaim copyright to this source code. For more details, see + * the COPYING file included with this distribution. + **/ +#endregion + + +using System; + + +namespace LitJson +{ + public class JsonException : ApplicationException + { + public JsonException () : base () + { + } + + internal JsonException (ParserToken token) : + base (String.Format ( + "Invalid token '{0}' in input string", token)) + { + } + + internal JsonException (ParserToken token, + Exception inner_exception) : + base (String.Format ( + "Invalid token '{0}' in input string", token), + inner_exception) + { + } + + internal JsonException (int c) : + base (String.Format ( + "Invalid character '{0}' in input string", (char) c)) + { + } + + internal JsonException (int c, Exception inner_exception) : + base (String.Format ( + "Invalid character '{0}' in input string", (char) c), + inner_exception) + { + } + + + public JsonException (string message) : base (message) + { + } + + public JsonException (string message, Exception inner_exception) : + base (message, inner_exception) + { + } + } +} diff --git a/client_unity/Assets/scripts/pomelo/LitJson/JsonException.cs.meta b/client_unity/Assets/scripts/pomelo/LitJson/JsonException.cs.meta new file mode 100644 index 0000000..746e3b6 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/LitJson/JsonException.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d3ed5d4e49665894cbaaeb7843be31ac +timeCreated: 1462854600 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/LitJson/JsonMapper.cs b/client_unity/Assets/scripts/pomelo/LitJson/JsonMapper.cs new file mode 100644 index 0000000..41d67af --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/LitJson/JsonMapper.cs @@ -0,0 +1,927 @@ +#region Header +/** + * JsonMapper.cs + * JSON to .Net object and object to JSON conversions. + * + * The authors disclaim copyright to this source code. For more details, see + * the COPYING file included with this distribution. + **/ +#endregion + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Reflection; + + +namespace LitJson +{ + internal struct PropertyMetadata + { + public MemberInfo Info; + public bool IsField; + public Type Type; + } + + + internal struct ArrayMetadata + { + private Type element_type; + private bool is_array; + private bool is_list; + + + public Type ElementType { + get { + if (element_type == null) + return typeof (JsonData); + + return element_type; + } + + set { element_type = value; } + } + + public bool IsArray { + get { return is_array; } + set { is_array = value; } + } + + public bool IsList { + get { return is_list; } + set { is_list = value; } + } + } + + + internal struct ObjectMetadata + { + private Type element_type; + private bool is_dictionary; + + private IDictionary properties; + + + public Type ElementType { + get { + if (element_type == null) + return typeof (JsonData); + + return element_type; + } + + set { element_type = value; } + } + + public bool IsDictionary { + get { return is_dictionary; } + set { is_dictionary = value; } + } + + public IDictionary Properties { + get { return properties; } + set { properties = value; } + } + } + + + internal delegate void ExporterFunc (object obj, JsonWriter writer); + public delegate void ExporterFunc (T obj, JsonWriter writer); + + internal delegate object ImporterFunc (object input); + public delegate TValue ImporterFunc (TJson input); + + public delegate IJsonWrapper WrapperFactory (); + + + public class JsonMapper + { + #region Fields + private static int max_nesting_depth; + + private static IFormatProvider datetime_format; + + private static IDictionary base_exporters_table; + private static IDictionary custom_exporters_table; + + private static IDictionary> base_importers_table; + private static IDictionary> custom_importers_table; + + private static IDictionary array_metadata; + private static readonly object array_metadata_lock = new Object (); + + private static IDictionary> conv_ops; + private static readonly object conv_ops_lock = new Object (); + + private static IDictionary object_metadata; + private static readonly object object_metadata_lock = new Object (); + + private static IDictionary> type_properties; + private static readonly object type_properties_lock = new Object (); + + private static JsonWriter static_writer; + private static readonly object static_writer_lock = new Object (); + #endregion + + + #region Constructors + static JsonMapper () + { + max_nesting_depth = 100; + + array_metadata = new Dictionary (); + conv_ops = new Dictionary> (); + object_metadata = new Dictionary (); + type_properties = new Dictionary> (); + + static_writer = new JsonWriter (); + + datetime_format = DateTimeFormatInfo.InvariantInfo; + + base_exporters_table = new Dictionary (); + custom_exporters_table = new Dictionary (); + + base_importers_table = new Dictionary> (); + custom_importers_table = new Dictionary> (); + + RegisterBaseExporters (); + RegisterBaseImporters (); + } + #endregion + + + #region Private Methods + private static void AddArrayMetadata (Type type) + { + if (array_metadata.ContainsKey (type)) + return; + + ArrayMetadata data = new ArrayMetadata (); + + data.IsArray = type.IsArray; + + if (type.GetInterface ("System.Collections.IList") != null) + data.IsList = true; + + foreach (PropertyInfo p_info in type.GetProperties ()) { + if (p_info.Name != "Item") + continue; + + ParameterInfo[] parameters = p_info.GetIndexParameters (); + + if (parameters.Length != 1) + continue; + + if (parameters[0].ParameterType == typeof (int)) + data.ElementType = p_info.PropertyType; + } + + lock (array_metadata_lock) { + try { + array_metadata.Add (type, data); + } catch (ArgumentException) { + return; + } + } + } + + private static void AddObjectMetadata (Type type) + { + if (object_metadata.ContainsKey (type)) + return; + + ObjectMetadata data = new ObjectMetadata (); + + if (type.GetInterface ("System.Collections.IDictionary") != null) + data.IsDictionary = true; + + data.Properties = new Dictionary (); + + foreach (PropertyInfo p_info in type.GetProperties ()) { + if (p_info.Name == "Item") { + ParameterInfo[] parameters = p_info.GetIndexParameters (); + + if (parameters.Length != 1) + continue; + + if (parameters[0].ParameterType == typeof (string)) + data.ElementType = p_info.PropertyType; + + continue; + } + + PropertyMetadata p_data = new PropertyMetadata (); + p_data.Info = p_info; + p_data.Type = p_info.PropertyType; + + data.Properties.Add (p_info.Name, p_data); + } + + foreach (FieldInfo f_info in type.GetFields ()) { + PropertyMetadata p_data = new PropertyMetadata (); + p_data.Info = f_info; + p_data.IsField = true; + p_data.Type = f_info.FieldType; + + data.Properties.Add (f_info.Name, p_data); + } + + lock (object_metadata_lock) { + try { + object_metadata.Add (type, data); + } catch (ArgumentException) { + return; + } + } + } + + private static void AddTypeProperties (Type type) + { + if (type_properties.ContainsKey (type)) + return; + + IList props = new List (); + + foreach (PropertyInfo p_info in type.GetProperties ()) { + if (p_info.Name == "Item") + continue; + + PropertyMetadata p_data = new PropertyMetadata (); + p_data.Info = p_info; + p_data.IsField = false; + props.Add (p_data); + } + + foreach (FieldInfo f_info in type.GetFields ()) { + PropertyMetadata p_data = new PropertyMetadata (); + p_data.Info = f_info; + p_data.IsField = true; + + props.Add (p_data); + } + + lock (type_properties_lock) { + try { + type_properties.Add (type, props); + } catch (ArgumentException) { + return; + } + } + } + + private static MethodInfo GetConvOp (Type t1, Type t2) + { + lock (conv_ops_lock) { + if (! conv_ops.ContainsKey (t1)) + conv_ops.Add (t1, new Dictionary ()); + } + + if (conv_ops[t1].ContainsKey (t2)) + return conv_ops[t1][t2]; + + MethodInfo op = t1.GetMethod ( + "op_Implicit", new Type[] { t2 }); + + lock (conv_ops_lock) { + try { + conv_ops[t1].Add (t2, op); + } catch (ArgumentException) { + return conv_ops[t1][t2]; + } + } + + return op; + } + + private static object ReadValue (Type inst_type, JsonReader reader) + { + reader.Read (); + + if (reader.Token == JsonToken.ArrayEnd) + return null; + + Type underlying_type = Nullable.GetUnderlyingType(inst_type); + Type value_type = underlying_type ?? inst_type; + + if (reader.Token == JsonToken.Null) { + if (inst_type.IsClass || underlying_type != null) { + return null; + } + + throw new JsonException (String.Format ( + "Can't assign null to an instance of type {0}", + inst_type)); + } + + if (reader.Token == JsonToken.Double || + reader.Token == JsonToken.Int || + reader.Token == JsonToken.Long || + reader.Token == JsonToken.String || + reader.Token == JsonToken.Boolean) { + + Type json_type = reader.Value.GetType (); + + if (value_type.IsAssignableFrom (json_type)) + return reader.Value; + + // If there's a custom importer that fits, use it + if (custom_importers_table.ContainsKey (json_type) && + custom_importers_table[json_type].ContainsKey ( + value_type)) { + + ImporterFunc importer = + custom_importers_table[json_type][value_type]; + + return importer (reader.Value); + } + + // Maybe there's a base importer that works + if (base_importers_table.ContainsKey (json_type) && + base_importers_table[json_type].ContainsKey ( + value_type)) { + + ImporterFunc importer = + base_importers_table[json_type][value_type]; + + return importer (reader.Value); + } + + // Maybe it's an enum + if (value_type.IsEnum) + return Enum.ToObject (value_type, reader.Value); + + // Try using an implicit conversion operator + MethodInfo conv_op = GetConvOp (value_type, json_type); + + if (conv_op != null) + return conv_op.Invoke (null, + new object[] { reader.Value }); + + // No luck + throw new JsonException (String.Format ( + "Can't assign value '{0}' (type {1}) to type {2}", + reader.Value, json_type, inst_type)); + } + + object instance = null; + + if (reader.Token == JsonToken.ArrayStart) { + + AddArrayMetadata (inst_type); + ArrayMetadata t_data = array_metadata[inst_type]; + + if (! t_data.IsArray && ! t_data.IsList) + throw new JsonException (String.Format ( + "Type {0} can't act as an array", + inst_type)); + + IList list; + Type elem_type; + + if (! t_data.IsArray) { + list = (IList) Activator.CreateInstance (inst_type); + elem_type = t_data.ElementType; + } else { + list = new ArrayList (); + elem_type = inst_type.GetElementType (); + } + + while (true) { + object item = ReadValue (elem_type, reader); + if (item == null && reader.Token == JsonToken.ArrayEnd) + break; + + list.Add (item); + } + + if (t_data.IsArray) { + int n = list.Count; + instance = Array.CreateInstance (elem_type, n); + + for (int i = 0; i < n; i++) + ((Array) instance).SetValue (list[i], i); + } else + instance = list; + + } else if (reader.Token == JsonToken.ObjectStart) { + AddObjectMetadata (value_type); + ObjectMetadata t_data = object_metadata[value_type]; + + instance = Activator.CreateInstance (value_type); + + while (true) { + reader.Read (); + + if (reader.Token == JsonToken.ObjectEnd) + break; + + string property = (string) reader.Value; + + if (t_data.Properties.ContainsKey (property)) { + PropertyMetadata prop_data = + t_data.Properties[property]; + + if (prop_data.IsField) { + ((FieldInfo) prop_data.Info).SetValue ( + instance, ReadValue (prop_data.Type, reader)); + } else { + PropertyInfo p_info = + (PropertyInfo) prop_data.Info; + + if (p_info.CanWrite) + p_info.SetValue ( + instance, + ReadValue (prop_data.Type, reader), + null); + else + ReadValue (prop_data.Type, reader); + } + + } else { + if (! t_data.IsDictionary) { + + if (! reader.SkipNonMembers) { + throw new JsonException (String.Format ( + "The type {0} doesn't have the " + + "property '{1}'", + inst_type, property)); + } else { + ReadSkip (reader); + continue; + } + } + + ((IDictionary) instance).Add ( + property, ReadValue ( + t_data.ElementType, reader)); + } + + } + + } + + return instance; + } + + private static IJsonWrapper ReadValue (WrapperFactory factory, + JsonReader reader) + { + reader.Read (); + + if (reader.Token == JsonToken.ArrayEnd || + reader.Token == JsonToken.Null) + return null; + + IJsonWrapper instance = factory (); + + if (reader.Token == JsonToken.String) { + instance.SetString ((string) reader.Value); + return instance; + } + + if (reader.Token == JsonToken.Double) { + instance.SetDouble ((double) reader.Value); + return instance; + } + + if (reader.Token == JsonToken.Int) { + instance.SetInt ((int) reader.Value); + return instance; + } + + if (reader.Token == JsonToken.Long) { + instance.SetLong ((long) reader.Value); + return instance; + } + + if (reader.Token == JsonToken.Boolean) { + instance.SetBoolean ((bool) reader.Value); + return instance; + } + + if (reader.Token == JsonToken.ArrayStart) { + instance.SetJsonType (JsonType.Array); + + while (true) { + IJsonWrapper item = ReadValue (factory, reader); + if (item == null && reader.Token == JsonToken.ArrayEnd) + break; + + ((IList) instance).Add (item); + } + } + else if (reader.Token == JsonToken.ObjectStart) { + instance.SetJsonType (JsonType.Object); + + while (true) { + reader.Read (); + + if (reader.Token == JsonToken.ObjectEnd) + break; + + string property = (string) reader.Value; + + ((IDictionary) instance)[property] = ReadValue ( + factory, reader); + } + + } + + return instance; + } + + private static void ReadSkip (JsonReader reader) + { + ToWrapper ( + delegate { return new JsonMockWrapper (); }, reader); + } + + private static void RegisterBaseExporters () + { + base_exporters_table[typeof (byte)] = + delegate (object obj, JsonWriter writer) { + writer.Write (Convert.ToInt32 ((byte) obj)); + }; + + base_exporters_table[typeof (char)] = + delegate (object obj, JsonWriter writer) { + writer.Write (Convert.ToString ((char) obj)); + }; + + base_exporters_table[typeof (DateTime)] = + delegate (object obj, JsonWriter writer) { + writer.Write (Convert.ToString ((DateTime) obj, + datetime_format)); + }; + + base_exporters_table[typeof (decimal)] = + delegate (object obj, JsonWriter writer) { + writer.Write ((decimal) obj); + }; + + base_exporters_table[typeof (sbyte)] = + delegate (object obj, JsonWriter writer) { + writer.Write (Convert.ToInt32 ((sbyte) obj)); + }; + + base_exporters_table[typeof (short)] = + delegate (object obj, JsonWriter writer) { + writer.Write (Convert.ToInt32 ((short) obj)); + }; + + base_exporters_table[typeof (ushort)] = + delegate (object obj, JsonWriter writer) { + writer.Write (Convert.ToInt32 ((ushort) obj)); + }; + + base_exporters_table[typeof (uint)] = + delegate (object obj, JsonWriter writer) { + writer.Write (Convert.ToUInt64 ((uint) obj)); + }; + + base_exporters_table[typeof (ulong)] = + delegate (object obj, JsonWriter writer) { + writer.Write ((ulong) obj); + }; + } + + private static void RegisterBaseImporters () + { + ImporterFunc importer; + + importer = delegate (object input) { + return Convert.ToByte ((int) input); + }; + RegisterImporter (base_importers_table, typeof (int), + typeof (byte), importer); + + importer = delegate (object input) { + return Convert.ToUInt64 ((int) input); + }; + RegisterImporter (base_importers_table, typeof (int), + typeof (ulong), importer); + + importer = delegate (object input) { + return Convert.ToSByte ((int) input); + }; + RegisterImporter (base_importers_table, typeof (int), + typeof (sbyte), importer); + + importer = delegate (object input) { + return Convert.ToInt16 ((int) input); + }; + RegisterImporter (base_importers_table, typeof (int), + typeof (short), importer); + + importer = delegate (object input) { + return Convert.ToUInt16 ((int) input); + }; + RegisterImporter (base_importers_table, typeof (int), + typeof (ushort), importer); + + importer = delegate (object input) { + return Convert.ToUInt32 ((int) input); + }; + RegisterImporter (base_importers_table, typeof (int), + typeof (uint), importer); + + importer = delegate (object input) { + return Convert.ToSingle ((int) input); + }; + RegisterImporter (base_importers_table, typeof (int), + typeof (float), importer); + + importer = delegate (object input) { + return Convert.ToDouble ((int) input); + }; + RegisterImporter (base_importers_table, typeof (int), + typeof (double), importer); + + importer = delegate (object input) { + return Convert.ToDecimal ((double) input); + }; + RegisterImporter (base_importers_table, typeof (double), + typeof (decimal), importer); + + + importer = delegate (object input) { + return Convert.ToUInt32 ((long) input); + }; + RegisterImporter (base_importers_table, typeof (long), + typeof (uint), importer); + + importer = delegate (object input) { + return Convert.ToChar ((string) input); + }; + RegisterImporter (base_importers_table, typeof (string), + typeof (char), importer); + + importer = delegate (object input) { + return Convert.ToDateTime ((string) input, datetime_format); + }; + RegisterImporter (base_importers_table, typeof (string), + typeof (DateTime), importer); + } + + private static void RegisterImporter ( + IDictionary> table, + Type json_type, Type value_type, ImporterFunc importer) + { + if (! table.ContainsKey (json_type)) + table.Add (json_type, new Dictionary ()); + + table[json_type][value_type] = importer; + } + + private static void WriteValue (object obj, JsonWriter writer, + bool writer_is_private, + int depth) + { + if (depth > max_nesting_depth) + throw new JsonException ( + String.Format ("Max allowed object depth reached while " + + "trying to export from type {0}", + obj.GetType ())); + + if (obj == null) { + writer.Write (null); + return; + } + + if (obj is IJsonWrapper) { + if (writer_is_private) + writer.TextWriter.Write (((IJsonWrapper) obj).ToJson ()); + else + ((IJsonWrapper) obj).ToJson (writer); + + return; + } + + if (obj is String) { + writer.Write ((string) obj); + return; + } + + if (obj is Double) { + writer.Write ((double) obj); + return; + } + + if (obj is Int32) { + writer.Write ((int) obj); + return; + } + + if (obj is Boolean) { + writer.Write ((bool) obj); + return; + } + + if (obj is Int64) { + writer.Write ((long) obj); + return; + } + + if (obj is Array) { + writer.WriteArrayStart (); + + foreach (object elem in (Array) obj) + WriteValue (elem, writer, writer_is_private, depth + 1); + + writer.WriteArrayEnd (); + + return; + } + + if (obj is IList) { + writer.WriteArrayStart (); + foreach (object elem in (IList) obj) + WriteValue (elem, writer, writer_is_private, depth + 1); + writer.WriteArrayEnd (); + + return; + } + + if (obj is IDictionary) { + writer.WriteObjectStart (); + foreach (DictionaryEntry entry in (IDictionary) obj) { + writer.WritePropertyName ((string) entry.Key); + WriteValue (entry.Value, writer, writer_is_private, + depth + 1); + } + writer.WriteObjectEnd (); + + return; + } + + Type obj_type = obj.GetType (); + + // See if there's a custom exporter for the object + if (custom_exporters_table.ContainsKey (obj_type)) { + ExporterFunc exporter = custom_exporters_table[obj_type]; + exporter (obj, writer); + + return; + } + + // If not, maybe there's a base exporter + if (base_exporters_table.ContainsKey (obj_type)) { + ExporterFunc exporter = base_exporters_table[obj_type]; + exporter (obj, writer); + + return; + } + + // Last option, let's see if it's an enum + if (obj is Enum) { + Type e_type = Enum.GetUnderlyingType (obj_type); + + if (e_type == typeof (long) + || e_type == typeof (uint) + || e_type == typeof (ulong)) + writer.Write ((ulong) obj); + else + writer.Write ((int) obj); + + return; + } + + // Okay, so it looks like the input should be exported as an + // object + AddTypeProperties (obj_type); + IList props = type_properties[obj_type]; + + writer.WriteObjectStart (); + foreach (PropertyMetadata p_data in props) { + if (p_data.IsField) { + writer.WritePropertyName (p_data.Info.Name); + WriteValue (((FieldInfo) p_data.Info).GetValue (obj), + writer, writer_is_private, depth + 1); + } + else { + PropertyInfo p_info = (PropertyInfo) p_data.Info; + + if (p_info.CanRead) { + writer.WritePropertyName (p_data.Info.Name); + WriteValue (p_info.GetValue (obj, null), + writer, writer_is_private, depth + 1); + } + } + } + writer.WriteObjectEnd (); + } + #endregion + + + public static string ToJson (object obj) + { + lock (static_writer_lock) { + static_writer.Reset (); + + WriteValue (obj, static_writer, true, 0); + + return static_writer.ToString (); + } + } + + public static void ToJson (object obj, JsonWriter writer) + { + WriteValue (obj, writer, false, 0); + } + + public static JsonData ToObject (JsonReader reader) + { + return (JsonData) ToWrapper ( + delegate { return new JsonData (); }, reader); + } + + public static JsonData ToObject (TextReader reader) + { + JsonReader json_reader = new JsonReader (reader); + + return (JsonData) ToWrapper ( + delegate { return new JsonData (); }, json_reader); + } + + public static JsonData ToObject (string json) + { + return (JsonData) ToWrapper ( + delegate { return new JsonData (); }, json); + } + + public static T ToObject (JsonReader reader) + { + return (T) ReadValue (typeof (T), reader); + } + + public static T ToObject (TextReader reader) + { + JsonReader json_reader = new JsonReader (reader); + + return (T) ReadValue (typeof (T), json_reader); + } + + public static T ToObject (string json) + { + JsonReader reader = new JsonReader (json); + + return (T) ReadValue (typeof (T), reader); + } + + public static IJsonWrapper ToWrapper (WrapperFactory factory, + JsonReader reader) + { + return ReadValue (factory, reader); + } + + public static IJsonWrapper ToWrapper (WrapperFactory factory, + string json) + { + JsonReader reader = new JsonReader (json); + + return ReadValue (factory, reader); + } + + public static void RegisterExporter (ExporterFunc exporter) + { + ExporterFunc exporter_wrapper = + delegate (object obj, JsonWriter writer) { + exporter ((T) obj, writer); + }; + + custom_exporters_table[typeof (T)] = exporter_wrapper; + } + + public static void RegisterImporter ( + ImporterFunc importer) + { + ImporterFunc importer_wrapper = + delegate (object input) { + return importer ((TJson) input); + }; + + RegisterImporter (custom_importers_table, typeof (TJson), + typeof (TValue), importer_wrapper); + } + + public static void UnregisterExporters () + { + custom_exporters_table.Clear (); + } + + public static void UnregisterImporters () + { + custom_importers_table.Clear (); + } + } +} diff --git a/client_unity/Assets/scripts/pomelo/LitJson/JsonMapper.cs.meta b/client_unity/Assets/scripts/pomelo/LitJson/JsonMapper.cs.meta new file mode 100644 index 0000000..0c1e997 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/LitJson/JsonMapper.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: cd44d9aec75d43c4da58b238dbca19b1 +timeCreated: 1462854600 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/LitJson/JsonMockWrapper.cs b/client_unity/Assets/scripts/pomelo/LitJson/JsonMockWrapper.cs new file mode 100644 index 0000000..959482f --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/LitJson/JsonMockWrapper.cs @@ -0,0 +1,108 @@ +#region Header +/** + * JsonMockWrapper.cs + * Mock object implementing IJsonWrapper, to facilitate actions like + * skipping data more efficiently. + * + * The authors disclaim copyright to this source code. For more details, see + * the COPYING file included with this distribution. + **/ +#endregion + + +using System; +using System.Collections; +using System.Collections.Specialized; + + +namespace LitJson +{ + public class JsonMockWrapper : IJsonWrapper + { + public bool IsArray { get { return false; } } + public bool IsBoolean { get { return false; } } + public bool IsDouble { get { return false; } } + public bool IsInt { get { return false; } } + public bool IsLong { get { return false; } } + public bool IsObject { get { return false; } } + public bool IsString { get { return false; } } + public bool IsFloat { get { return false; } } + + public bool GetBoolean () { return false; } + public double GetDouble () { return 0.0; } + public float GetFloat() { return 0.0f; } + public int GetInt () { return 0; } + public JsonType GetJsonType () { return JsonType.None; } + public long GetLong () { return 0L; } + public string GetString () { return ""; } + + public void SetBoolean (bool val) {} + public void SetDouble (double val) {} + public void SetFloat (float val) {} + public void SetInt (int val) {} + public void SetJsonType (JsonType type) {} + public void SetLong (long val) {} + public void SetString (string val) {} + + public string ToJson () { return ""; } + public void ToJson (JsonWriter writer) {} + + + bool IList.IsFixedSize { get { return true; } } + bool IList.IsReadOnly { get { return true; } } + + object IList.this[int index] { + get { return null; } + set {} + } + + int IList.Add (object value) { return 0; } + void IList.Clear () {} + bool IList.Contains (object value) { return false; } + int IList.IndexOf (object value) { return -1; } + void IList.Insert (int i, object v) {} + void IList.Remove (object value) {} + void IList.RemoveAt (int index) {} + + + int ICollection.Count { get { return 0; } } + bool ICollection.IsSynchronized { get { return false; } } + object ICollection.SyncRoot { get { return null; } } + + void ICollection.CopyTo (Array array, int index) {} + + + IEnumerator IEnumerable.GetEnumerator () { return null; } + + + bool IDictionary.IsFixedSize { get { return true; } } + bool IDictionary.IsReadOnly { get { return true; } } + + ICollection IDictionary.Keys { get { return null; } } + ICollection IDictionary.Values { get { return null; } } + + object IDictionary.this[object key] { + get { return null; } + set {} + } + + void IDictionary.Add (object k, object v) {} + void IDictionary.Clear () {} + bool IDictionary.Contains (object key) { return false; } + void IDictionary.Remove (object key) {} + + IDictionaryEnumerator IDictionary.GetEnumerator () { return null; } + + + object IOrderedDictionary.this[int idx] { + get { return null; } + set {} + } + + IDictionaryEnumerator IOrderedDictionary.GetEnumerator () { + return null; + } + void IOrderedDictionary.Insert (int i, object k, object v) {} + void IOrderedDictionary.RemoveAt (int i) {} + } +} diff --git a/client_unity/Assets/scripts/pomelo/LitJson/JsonMockWrapper.cs.meta b/client_unity/Assets/scripts/pomelo/LitJson/JsonMockWrapper.cs.meta new file mode 100644 index 0000000..7b8d359 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/LitJson/JsonMockWrapper.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: af2920652cd459f4e8eac9ea32b09b80 +timeCreated: 1462854600 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/LitJson/JsonReader.cs b/client_unity/Assets/scripts/pomelo/LitJson/JsonReader.cs new file mode 100644 index 0000000..4fac3a0 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/LitJson/JsonReader.cs @@ -0,0 +1,473 @@ +#region Header +/** + * JsonReader.cs + * Stream-like access to JSON text. + * + * The authors disclaim copyright to this source code. For more details, see + * the COPYING file included with this distribution. + **/ +#endregion + + +using System; +using System.Collections.Generic; +using System.IO; +using System.Text; + + +namespace LitJson +{ + public enum JsonToken + { + None, + + ObjectStart, + PropertyName, + ObjectEnd, + + ArrayStart, + ArrayEnd, + + Int, + Long, + Double, + + String, + + Boolean, + Null + } + + + public class JsonReader + { + #region Fields + private static IDictionary> parse_table; + + private Stack automaton_stack; + private int current_input; + private int current_symbol; + private bool end_of_json; + private bool end_of_input; + private Lexer lexer; + private bool parser_in_string; + private bool parser_return; + private bool read_started; + private TextReader reader; + private bool reader_is_owned; + private bool skip_non_members; + private object token_value; + private JsonToken token; + #endregion + + + #region Public Properties + public bool AllowComments { + get { return lexer.AllowComments; } + set { lexer.AllowComments = value; } + } + + public bool AllowSingleQuotedStrings { + get { return lexer.AllowSingleQuotedStrings; } + set { lexer.AllowSingleQuotedStrings = value; } + } + + public bool SkipNonMembers { + get { return skip_non_members; } + set { skip_non_members = value; } + } + + public bool EndOfInput { + get { return end_of_input; } + } + + public bool EndOfJson { + get { return end_of_json; } + } + + public JsonToken Token { + get { return token; } + } + + public object Value { + get { return token_value; } + } + #endregion + + + #region Constructors + static JsonReader () + { + PopulateParseTable (); + } + + public JsonReader (string json_text) : + this (new StringReader (json_text), true) + { + } + + public JsonReader (TextReader reader) : + this (reader, false) + { + } + + private JsonReader (TextReader reader, bool owned) + { + if (reader == null) + throw new ArgumentNullException ("reader"); + + parser_in_string = false; + parser_return = false; + + read_started = false; + automaton_stack = new Stack (); + automaton_stack.Push ((int) ParserToken.End); + automaton_stack.Push ((int) ParserToken.Text); + + lexer = new Lexer (reader); + + end_of_input = false; + end_of_json = false; + + skip_non_members = true; + + this.reader = reader; + reader_is_owned = owned; + } + #endregion + + + #region Static Methods + private static void PopulateParseTable () + { + // See section A.2. of the manual for details + parse_table = new Dictionary> (); + + TableAddRow (ParserToken.Array); + TableAddCol (ParserToken.Array, '[', + '[', + (int) ParserToken.ArrayPrime); + + TableAddRow (ParserToken.ArrayPrime); + TableAddCol (ParserToken.ArrayPrime, '"', + (int) ParserToken.Value, + + (int) ParserToken.ValueRest, + ']'); + TableAddCol (ParserToken.ArrayPrime, '[', + (int) ParserToken.Value, + (int) ParserToken.ValueRest, + ']'); + TableAddCol (ParserToken.ArrayPrime, ']', + ']'); + TableAddCol (ParserToken.ArrayPrime, '{', + (int) ParserToken.Value, + (int) ParserToken.ValueRest, + ']'); + TableAddCol (ParserToken.ArrayPrime, (int) ParserToken.Number, + (int) ParserToken.Value, + (int) ParserToken.ValueRest, + ']'); + TableAddCol (ParserToken.ArrayPrime, (int) ParserToken.True, + (int) ParserToken.Value, + (int) ParserToken.ValueRest, + ']'); + TableAddCol (ParserToken.ArrayPrime, (int) ParserToken.False, + (int) ParserToken.Value, + (int) ParserToken.ValueRest, + ']'); + TableAddCol (ParserToken.ArrayPrime, (int) ParserToken.Null, + (int) ParserToken.Value, + (int) ParserToken.ValueRest, + ']'); + + TableAddRow (ParserToken.Object); + TableAddCol (ParserToken.Object, '{', + '{', + (int) ParserToken.ObjectPrime); + + TableAddRow (ParserToken.ObjectPrime); + TableAddCol (ParserToken.ObjectPrime, '"', + (int) ParserToken.Pair, + (int) ParserToken.PairRest, + '}'); + TableAddCol (ParserToken.ObjectPrime, '}', + '}'); + + TableAddRow (ParserToken.Pair); + TableAddCol (ParserToken.Pair, '"', + (int) ParserToken.String, + ':', + (int) ParserToken.Value); + + TableAddRow (ParserToken.PairRest); + TableAddCol (ParserToken.PairRest, ',', + ',', + (int) ParserToken.Pair, + (int) ParserToken.PairRest); + TableAddCol (ParserToken.PairRest, '}', + (int) ParserToken.Epsilon); + + TableAddRow (ParserToken.String); + TableAddCol (ParserToken.String, '"', + '"', + (int) ParserToken.CharSeq, + '"'); + + TableAddRow (ParserToken.Text); + TableAddCol (ParserToken.Text, '[', + (int) ParserToken.Array); + TableAddCol (ParserToken.Text, '{', + (int) ParserToken.Object); + + TableAddRow (ParserToken.Value); + TableAddCol (ParserToken.Value, '"', + (int) ParserToken.String); + TableAddCol (ParserToken.Value, '[', + (int) ParserToken.Array); + TableAddCol (ParserToken.Value, '{', + (int) ParserToken.Object); + TableAddCol (ParserToken.Value, (int) ParserToken.Number, + (int) ParserToken.Number); + TableAddCol (ParserToken.Value, (int) ParserToken.True, + (int) ParserToken.True); + TableAddCol (ParserToken.Value, (int) ParserToken.False, + (int) ParserToken.False); + TableAddCol (ParserToken.Value, (int) ParserToken.Null, + (int) ParserToken.Null); + + TableAddRow (ParserToken.ValueRest); + TableAddCol (ParserToken.ValueRest, ',', + ',', + (int) ParserToken.Value, + (int) ParserToken.ValueRest); + TableAddCol (ParserToken.ValueRest, ']', + (int) ParserToken.Epsilon); + } + + private static void TableAddCol (ParserToken row, int col, + params int[] symbols) + { + parse_table[(int) row].Add (col, symbols); + } + + private static void TableAddRow (ParserToken rule) + { + parse_table.Add ((int) rule, new Dictionary ()); + } + #endregion + + + #region Private Methods + private void ProcessNumber (string number) + { + if (number.IndexOf ('.') != -1 || + number.IndexOf ('e') != -1 || + number.IndexOf ('E') != -1) { + + double n_double; + if (Double.TryParse (number, out n_double)) { + token = JsonToken.Double; + token_value = n_double; + + return; + } + } + + int n_int32; + if (Int32.TryParse (number, out n_int32)) { + token = JsonToken.Int; + token_value = n_int32; + + return; + } + + long n_int64; + if (Int64.TryParse (number, out n_int64)) { + token = JsonToken.Long; + token_value = n_int64; + + return; + } + + ulong n_uint64; + if (UInt64.TryParse(number, out n_uint64)) + { + token = JsonToken.Long; + token_value = n_uint64; + + return; + } + + // Shouldn't happen, but just in case, return something + token = JsonToken.Int; + token_value = 0; + } + + private void ProcessSymbol () + { + if (current_symbol == '[') { + token = JsonToken.ArrayStart; + parser_return = true; + + } else if (current_symbol == ']') { + token = JsonToken.ArrayEnd; + parser_return = true; + + } else if (current_symbol == '{') { + token = JsonToken.ObjectStart; + parser_return = true; + + } else if (current_symbol == '}') { + token = JsonToken.ObjectEnd; + parser_return = true; + + } else if (current_symbol == '"') { + if (parser_in_string) { + parser_in_string = false; + + parser_return = true; + + } else { + if (token == JsonToken.None) + token = JsonToken.String; + + parser_in_string = true; + } + + } else if (current_symbol == (int) ParserToken.CharSeq) { + token_value = lexer.StringValue; + + } else if (current_symbol == (int) ParserToken.False) { + token = JsonToken.Boolean; + token_value = false; + parser_return = true; + + } else if (current_symbol == (int) ParserToken.Null) { + token = JsonToken.Null; + parser_return = true; + + } else if (current_symbol == (int) ParserToken.Number) { + ProcessNumber (lexer.StringValue); + + parser_return = true; + + } else if (current_symbol == (int) ParserToken.Pair) { + token = JsonToken.PropertyName; + + } else if (current_symbol == (int) ParserToken.True) { + token = JsonToken.Boolean; + token_value = true; + parser_return = true; + + } + } + + private bool ReadToken () + { + if (end_of_input) + return false; + + lexer.NextToken (); + + if (lexer.EndOfInput) { + Close (); + + return false; + } + + current_input = lexer.Token; + + return true; + } + #endregion + + + public void Close () + { + if (end_of_input) + return; + + end_of_input = true; + end_of_json = true; + + if (reader_is_owned) + reader.Close (); + + reader = null; + } + + public bool Read () + { + if (end_of_input) + return false; + + if (end_of_json) { + end_of_json = false; + automaton_stack.Clear (); + automaton_stack.Push ((int) ParserToken.End); + automaton_stack.Push ((int) ParserToken.Text); + } + + parser_in_string = false; + parser_return = false; + + token = JsonToken.None; + token_value = null; + + if (! read_started) { + read_started = true; + + if (! ReadToken ()) + return false; + } + + + int[] entry_symbols; + + while (true) { + if (parser_return) { + if (automaton_stack.Peek () == (int) ParserToken.End) + end_of_json = true; + + return true; + } + + current_symbol = automaton_stack.Pop (); + + ProcessSymbol (); + + if (current_symbol == current_input) { + if (! ReadToken ()) { + if (automaton_stack.Peek () != (int) ParserToken.End) + throw new JsonException ( + "Input doesn't evaluate to proper JSON text"); + + if (parser_return) + return true; + + return false; + } + + continue; + } + + try { + + entry_symbols = + parse_table[current_symbol][current_input]; + + } catch (KeyNotFoundException e) { + throw new JsonException ((ParserToken) current_input, e); + } + + if (entry_symbols[0] == (int) ParserToken.Epsilon) + continue; + + for (int i = entry_symbols.Length - 1; i >= 0; i--) + automaton_stack.Push (entry_symbols[i]); + } + } + + } +} diff --git a/client_unity/Assets/scripts/pomelo/LitJson/JsonReader.cs.meta b/client_unity/Assets/scripts/pomelo/LitJson/JsonReader.cs.meta new file mode 100644 index 0000000..9c3d1c9 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/LitJson/JsonReader.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7715ee80c56ff2642b5f165c41461601 +timeCreated: 1462854600 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/LitJson/JsonWriter.cs b/client_unity/Assets/scripts/pomelo/LitJson/JsonWriter.cs new file mode 100644 index 0000000..ae38adb --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/LitJson/JsonWriter.cs @@ -0,0 +1,463 @@ +#region Header +/** + * JsonWriter.cs + * Stream-like facility to output JSON text. + * + * The authors disclaim copyright to this source code. For more details, see + * the COPYING file included with this distribution. + **/ +#endregion + + +using System; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Text; + + +namespace LitJson +{ + internal enum Condition + { + InArray, + InObject, + NotAProperty, + Property, + Value + } + + internal class WriterContext + { + public int Count; + public bool InArray; + public bool InObject; + public bool ExpectingValue; + public int Padding; + } + + public class JsonWriter + { + #region Fields + private static NumberFormatInfo number_format; + + private WriterContext context; + private Stack ctx_stack; + private bool has_reached_end; + private char[] hex_seq; + private int indentation; + private int indent_value; + private StringBuilder inst_string_builder; + private bool pretty_print; + private bool validate; + private TextWriter writer; + #endregion + + + #region Properties + public int IndentValue { + get { return indent_value; } + set { + indentation = (indentation / indent_value) * value; + indent_value = value; + } + } + + public bool PrettyPrint { + get { return pretty_print; } + set { pretty_print = value; } + } + + public TextWriter TextWriter { + get { return writer; } + } + + public bool Validate { + get { return validate; } + set { validate = value; } + } + #endregion + + + #region Constructors + static JsonWriter () + { + number_format = NumberFormatInfo.InvariantInfo; + } + + public JsonWriter () + { + inst_string_builder = new StringBuilder (); + writer = new StringWriter (inst_string_builder); + + Init (); + } + + public JsonWriter (StringBuilder sb) : + this (new StringWriter (sb)) + { + } + + public JsonWriter (TextWriter writer) + { + if (writer == null) + throw new ArgumentNullException ("writer"); + + this.writer = writer; + + Init (); + } + #endregion + + + #region Private Methods + private void DoValidation (Condition cond) + { + if (! context.ExpectingValue) + context.Count++; + + if (! validate) + return; + + if (has_reached_end) + throw new JsonException ( + "A complete JSON symbol has already been written"); + + switch (cond) { + case Condition.InArray: + if (! context.InArray) + throw new JsonException ( + "Can't close an array here"); + break; + + case Condition.InObject: + if (! context.InObject || context.ExpectingValue) + throw new JsonException ( + "Can't close an object here"); + break; + + case Condition.NotAProperty: + if (context.InObject && ! context.ExpectingValue) + throw new JsonException ( + "Expected a property"); + break; + + case Condition.Property: + if (! context.InObject || context.ExpectingValue) + throw new JsonException ( + "Can't add a property here"); + break; + + case Condition.Value: + if (! context.InArray && + (! context.InObject || ! context.ExpectingValue)) + throw new JsonException ( + "Can't add a value here"); + + break; + } + } + + private void Init () + { + has_reached_end = false; + hex_seq = new char[4]; + indentation = 0; + indent_value = 4; + pretty_print = false; + validate = true; + + ctx_stack = new Stack (); + context = new WriterContext (); + ctx_stack.Push (context); + } + + private static void IntToHex (int n, char[] hex) + { + int num; + + for (int i = 0; i < 4; i++) { + num = n % 16; + + if (num < 10) + hex[3 - i] = (char) ('0' + num); + else + hex[3 - i] = (char) ('A' + (num - 10)); + + n >>= 4; + } + } + + private void Indent () + { + if (pretty_print) + indentation += indent_value; + } + + + private void Put (string str) + { + if (pretty_print && ! context.ExpectingValue) + for (int i = 0; i < indentation; i++) + writer.Write (' '); + + writer.Write (str); + } + + private void PutNewline () + { + PutNewline (true); + } + + private void PutNewline (bool add_comma) + { + if (add_comma && ! context.ExpectingValue && + context.Count > 1) + writer.Write (','); + + if (pretty_print && ! context.ExpectingValue) + writer.Write ('\n'); + } + + private void PutString (string str) + { + Put (String.Empty); + + writer.Write ('"'); + + int n = str.Length; + for (int i = 0; i < n; i++) { + switch (str[i]) { + case '\n': + writer.Write ("\\n"); + continue; + + case '\r': + writer.Write ("\\r"); + continue; + + case '\t': + writer.Write ("\\t"); + continue; + + case '"': + case '\\': + writer.Write ('\\'); + writer.Write (str[i]); + continue; + + case '\f': + writer.Write ("\\f"); + continue; + + case '\b': + writer.Write ("\\b"); + continue; + } + + if ((int) str[i] >= 32 && (int) str[i] <= 126) { + writer.Write (str[i]); + continue; + } + + // Default, turn into a \uXXXX sequence + IntToHex ((int) str[i], hex_seq); + writer.Write ("\\u"); + writer.Write (hex_seq); + } + + writer.Write ('"'); + } + + private void Unindent () + { + if (pretty_print) + indentation -= indent_value; + } + #endregion + + + public override string ToString () + { + if (inst_string_builder == null) + return String.Empty; + + return inst_string_builder.ToString (); + } + + public void Reset () + { + has_reached_end = false; + + ctx_stack.Clear (); + context = new WriterContext (); + ctx_stack.Push (context); + + if (inst_string_builder != null) + inst_string_builder.Remove (0, inst_string_builder.Length); + } + + public void Write (bool boolean) + { + DoValidation (Condition.Value); + PutNewline (); + + Put (boolean ? "true" : "false"); + + context.ExpectingValue = false; + } + + public void Write (decimal number) + { + DoValidation (Condition.Value); + PutNewline (); + + Put (Convert.ToString (number, number_format)); + + context.ExpectingValue = false; + } + + public void Write (double number) + { + DoValidation (Condition.Value); + PutNewline (); + + string str = Convert.ToString (number, number_format); + Put (str); + + if (str.IndexOf ('.') == -1 && + str.IndexOf ('E') == -1) + writer.Write (".0"); + + context.ExpectingValue = false; + } + + public void Write (int number) + { + DoValidation (Condition.Value); + PutNewline (); + + Put (Convert.ToString (number, number_format)); + + context.ExpectingValue = false; + } + + public void Write (long number) + { + DoValidation (Condition.Value); + PutNewline (); + + Put (Convert.ToString (number, number_format)); + + context.ExpectingValue = false; + } + + public void Write (string str) + { + DoValidation (Condition.Value); + PutNewline (); + + if (str == null) + Put ("null"); + else + PutString (str); + + context.ExpectingValue = false; + } + + //[CLSCompliant(false)] + public void Write (ulong number) + { + DoValidation (Condition.Value); + PutNewline (); + + Put (Convert.ToString (number, number_format)); + + context.ExpectingValue = false; + } + + public void WriteArrayEnd () + { + DoValidation (Condition.InArray); + PutNewline (false); + + ctx_stack.Pop (); + if (ctx_stack.Count == 1) + has_reached_end = true; + else { + context = ctx_stack.Peek (); + context.ExpectingValue = false; + } + + Unindent (); + Put ("]"); + } + + public void WriteArrayStart () + { + DoValidation (Condition.NotAProperty); + PutNewline (); + + Put ("["); + + context = new WriterContext (); + context.InArray = true; + ctx_stack.Push (context); + + Indent (); + } + + public void WriteObjectEnd () + { + DoValidation (Condition.InObject); + PutNewline (false); + + ctx_stack.Pop (); + if (ctx_stack.Count == 1) + has_reached_end = true; + else { + context = ctx_stack.Peek (); + context.ExpectingValue = false; + } + + Unindent (); + Put ("}"); + } + + public void WriteObjectStart () + { + DoValidation (Condition.NotAProperty); + PutNewline (); + + Put ("{"); + + context = new WriterContext (); + context.InObject = true; + ctx_stack.Push (context); + + Indent (); + } + + public void WritePropertyName (string property_name) + { + DoValidation (Condition.Property); + PutNewline (); + + PutString (property_name); + + if (pretty_print) { + if (property_name.Length > context.Padding) + context.Padding = property_name.Length; + + for (int i = context.Padding - property_name.Length; + i >= 0; i--) + writer.Write (' '); + + writer.Write (": "); + } else + writer.Write (':'); + + context.ExpectingValue = true; + } + } +} diff --git a/client_unity/Assets/scripts/pomelo/LitJson/JsonWriter.cs.meta b/client_unity/Assets/scripts/pomelo/LitJson/JsonWriter.cs.meta new file mode 100644 index 0000000..3e5cab5 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/LitJson/JsonWriter.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8a18cdfcab209b34890299bd56c1a5f1 +timeCreated: 1462854600 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/LitJson/Lexer.cs b/client_unity/Assets/scripts/pomelo/LitJson/Lexer.cs new file mode 100644 index 0000000..07023b5 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/LitJson/Lexer.cs @@ -0,0 +1,912 @@ +#region Header +/** + * Lexer.cs + * JSON lexer implementation based on a finite state machine. + * + * The authors disclaim copyright to this source code. For more details, see + * the COPYING file included with this distribution. + **/ +#endregion + + +using System; +using System.Collections.Generic; +using System.IO; +using System.Text; + + +namespace LitJson +{ + internal class FsmContext + { + public bool Return; + public int NextState; + public Lexer L; + public int StateStack; + } + + + internal class Lexer + { + #region Fields + private delegate bool StateHandler (FsmContext ctx); + + private static int[] fsm_return_table; + private static StateHandler[] fsm_handler_table; + + private bool allow_comments; + private bool allow_single_quoted_strings; + private bool end_of_input; + private FsmContext fsm_context; + private int input_buffer; + private int input_char; + private TextReader reader; + private int state; + private StringBuilder string_buffer; + private string string_value; + private int token; + private int unichar; + #endregion + + + #region Properties + public bool AllowComments { + get { return allow_comments; } + set { allow_comments = value; } + } + + public bool AllowSingleQuotedStrings { + get { return allow_single_quoted_strings; } + set { allow_single_quoted_strings = value; } + } + + public bool EndOfInput { + get { return end_of_input; } + } + + public int Token { + get { return token; } + } + + public string StringValue { + get { return string_value; } + } + #endregion + + + #region Constructors + static Lexer () + { + PopulateFsmTables (); + } + + public Lexer (TextReader reader) + { + allow_comments = true; + allow_single_quoted_strings = true; + + input_buffer = 0; + string_buffer = new StringBuilder (128); + state = 1; + end_of_input = false; + this.reader = reader; + + fsm_context = new FsmContext (); + fsm_context.L = this; + } + #endregion + + + #region Static Methods + private static int HexValue (int digit) + { + switch (digit) { + case 'a': + case 'A': + return 10; + + case 'b': + case 'B': + return 11; + + case 'c': + case 'C': + return 12; + + case 'd': + case 'D': + return 13; + + case 'e': + case 'E': + return 14; + + case 'f': + case 'F': + return 15; + + default: + return digit - '0'; + } + } + + private static void PopulateFsmTables () + { + // See section A.1. of the manual for details of the finite + // state machine. + fsm_handler_table = new StateHandler[28] { + State1, + State2, + State3, + State4, + State5, + State6, + State7, + State8, + State9, + State10, + State11, + State12, + State13, + State14, + State15, + State16, + State17, + State18, + State19, + State20, + State21, + State22, + State23, + State24, + State25, + State26, + State27, + State28 + }; + + fsm_return_table = new int[28] { + (int) ParserToken.Char, + 0, + (int) ParserToken.Number, + (int) ParserToken.Number, + 0, + (int) ParserToken.Number, + 0, + (int) ParserToken.Number, + 0, + 0, + (int) ParserToken.True, + 0, + 0, + 0, + (int) ParserToken.False, + 0, + 0, + (int) ParserToken.Null, + (int) ParserToken.CharSeq, + (int) ParserToken.Char, + 0, + 0, + (int) ParserToken.CharSeq, + (int) ParserToken.Char, + 0, + 0, + 0, + 0 + }; + } + + private static char ProcessEscChar (int esc_char) + { + switch (esc_char) { + case '"': + case '\'': + case '\\': + case '/': + return Convert.ToChar (esc_char); + + case 'n': + return '\n'; + + case 't': + return '\t'; + + case 'r': + return '\r'; + + case 'b': + return '\b'; + + case 'f': + return '\f'; + + default: + // Unreachable + return '?'; + } + } + + private static bool State1 (FsmContext ctx) + { + while (ctx.L.GetChar ()) { + if (ctx.L.input_char == ' ' || + ctx.L.input_char >= '\t' && ctx.L.input_char <= '\r') + continue; + + if (ctx.L.input_char >= '1' && ctx.L.input_char <= '9') { + ctx.L.string_buffer.Append ((char) ctx.L.input_char); + ctx.NextState = 3; + return true; + } + + switch (ctx.L.input_char) { + case '"': + ctx.NextState = 19; + ctx.Return = true; + return true; + + case ',': + case ':': + case '[': + case ']': + case '{': + case '}': + ctx.NextState = 1; + ctx.Return = true; + return true; + + case '-': + ctx.L.string_buffer.Append ((char) ctx.L.input_char); + ctx.NextState = 2; + return true; + + case '0': + ctx.L.string_buffer.Append ((char) ctx.L.input_char); + ctx.NextState = 4; + return true; + + case 'f': + ctx.NextState = 12; + return true; + + case 'n': + ctx.NextState = 16; + return true; + + case 't': + ctx.NextState = 9; + return true; + + case '\'': + if (! ctx.L.allow_single_quoted_strings) + return false; + + ctx.L.input_char = '"'; + ctx.NextState = 23; + ctx.Return = true; + return true; + + case '/': + if (! ctx.L.allow_comments) + return false; + + ctx.NextState = 25; + return true; + + default: + return false; + } + } + + return true; + } + + private static bool State2 (FsmContext ctx) + { + ctx.L.GetChar (); + + if (ctx.L.input_char >= '1' && ctx.L.input_char<= '9') { + ctx.L.string_buffer.Append ((char) ctx.L.input_char); + ctx.NextState = 3; + return true; + } + + switch (ctx.L.input_char) { + case '0': + ctx.L.string_buffer.Append ((char) ctx.L.input_char); + ctx.NextState = 4; + return true; + + default: + return false; + } + } + + private static bool State3 (FsmContext ctx) + { + while (ctx.L.GetChar ()) { + if (ctx.L.input_char >= '0' && ctx.L.input_char <= '9') { + ctx.L.string_buffer.Append ((char) ctx.L.input_char); + continue; + } + + if (ctx.L.input_char == ' ' || + ctx.L.input_char >= '\t' && ctx.L.input_char <= '\r') { + ctx.Return = true; + ctx.NextState = 1; + return true; + } + + switch (ctx.L.input_char) { + case ',': + case ']': + case '}': + ctx.L.UngetChar (); + ctx.Return = true; + ctx.NextState = 1; + return true; + + case '.': + ctx.L.string_buffer.Append ((char) ctx.L.input_char); + ctx.NextState = 5; + return true; + + case 'e': + case 'E': + ctx.L.string_buffer.Append ((char) ctx.L.input_char); + ctx.NextState = 7; + return true; + + default: + return false; + } + } + return true; + } + + private static bool State4 (FsmContext ctx) + { + ctx.L.GetChar (); + + if (ctx.L.input_char == ' ' || + ctx.L.input_char >= '\t' && ctx.L.input_char <= '\r') { + ctx.Return = true; + ctx.NextState = 1; + return true; + } + + switch (ctx.L.input_char) { + case ',': + case ']': + case '}': + ctx.L.UngetChar (); + ctx.Return = true; + ctx.NextState = 1; + return true; + + case '.': + ctx.L.string_buffer.Append ((char) ctx.L.input_char); + ctx.NextState = 5; + return true; + + case 'e': + case 'E': + ctx.L.string_buffer.Append ((char) ctx.L.input_char); + ctx.NextState = 7; + return true; + + default: + return false; + } + } + + private static bool State5 (FsmContext ctx) + { + ctx.L.GetChar (); + + if (ctx.L.input_char >= '0' && ctx.L.input_char <= '9') { + ctx.L.string_buffer.Append ((char) ctx.L.input_char); + ctx.NextState = 6; + return true; + } + + return false; + } + + private static bool State6 (FsmContext ctx) + { + while (ctx.L.GetChar ()) { + if (ctx.L.input_char >= '0' && ctx.L.input_char <= '9') { + ctx.L.string_buffer.Append ((char) ctx.L.input_char); + continue; + } + + if (ctx.L.input_char == ' ' || + ctx.L.input_char >= '\t' && ctx.L.input_char <= '\r') { + ctx.Return = true; + ctx.NextState = 1; + return true; + } + + switch (ctx.L.input_char) { + case ',': + case ']': + case '}': + ctx.L.UngetChar (); + ctx.Return = true; + ctx.NextState = 1; + return true; + + case 'e': + case 'E': + ctx.L.string_buffer.Append ((char) ctx.L.input_char); + ctx.NextState = 7; + return true; + + default: + return false; + } + } + + return true; + } + + private static bool State7 (FsmContext ctx) + { + ctx.L.GetChar (); + + if (ctx.L.input_char >= '0' && ctx.L.input_char<= '9') { + ctx.L.string_buffer.Append ((char) ctx.L.input_char); + ctx.NextState = 8; + return true; + } + + switch (ctx.L.input_char) { + case '+': + case '-': + ctx.L.string_buffer.Append ((char) ctx.L.input_char); + ctx.NextState = 8; + return true; + + default: + return false; + } + } + + private static bool State8 (FsmContext ctx) + { + while (ctx.L.GetChar ()) { + if (ctx.L.input_char >= '0' && ctx.L.input_char<= '9') { + ctx.L.string_buffer.Append ((char) ctx.L.input_char); + continue; + } + + if (ctx.L.input_char == ' ' || + ctx.L.input_char >= '\t' && ctx.L.input_char<= '\r') { + ctx.Return = true; + ctx.NextState = 1; + return true; + } + + switch (ctx.L.input_char) { + case ',': + case ']': + case '}': + ctx.L.UngetChar (); + ctx.Return = true; + ctx.NextState = 1; + return true; + + default: + return false; + } + } + + return true; + } + + private static bool State9 (FsmContext ctx) + { + ctx.L.GetChar (); + + switch (ctx.L.input_char) { + case 'r': + ctx.NextState = 10; + return true; + + default: + return false; + } + } + + private static bool State10 (FsmContext ctx) + { + ctx.L.GetChar (); + + switch (ctx.L.input_char) { + case 'u': + ctx.NextState = 11; + return true; + + default: + return false; + } + } + + private static bool State11 (FsmContext ctx) + { + ctx.L.GetChar (); + + switch (ctx.L.input_char) { + case 'e': + ctx.Return = true; + ctx.NextState = 1; + return true; + + default: + return false; + } + } + + private static bool State12 (FsmContext ctx) + { + ctx.L.GetChar (); + + switch (ctx.L.input_char) { + case 'a': + ctx.NextState = 13; + return true; + + default: + return false; + } + } + + private static bool State13 (FsmContext ctx) + { + ctx.L.GetChar (); + + switch (ctx.L.input_char) { + case 'l': + ctx.NextState = 14; + return true; + + default: + return false; + } + } + + private static bool State14 (FsmContext ctx) + { + ctx.L.GetChar (); + + switch (ctx.L.input_char) { + case 's': + ctx.NextState = 15; + return true; + + default: + return false; + } + } + + private static bool State15 (FsmContext ctx) + { + ctx.L.GetChar (); + + switch (ctx.L.input_char) { + case 'e': + ctx.Return = true; + ctx.NextState = 1; + return true; + + default: + return false; + } + } + + private static bool State16 (FsmContext ctx) + { + ctx.L.GetChar (); + + switch (ctx.L.input_char) { + case 'u': + ctx.NextState = 17; + return true; + + default: + return false; + } + } + + private static bool State17 (FsmContext ctx) + { + ctx.L.GetChar (); + + switch (ctx.L.input_char) { + case 'l': + ctx.NextState = 18; + return true; + + default: + return false; + } + } + + private static bool State18 (FsmContext ctx) + { + ctx.L.GetChar (); + + switch (ctx.L.input_char) { + case 'l': + ctx.Return = true; + ctx.NextState = 1; + return true; + + default: + return false; + } + } + + private static bool State19 (FsmContext ctx) + { + while (ctx.L.GetChar ()) { + switch (ctx.L.input_char) { + case '"': + ctx.L.UngetChar (); + ctx.Return = true; + ctx.NextState = 20; + return true; + + case '\\': + ctx.StateStack = 19; + ctx.NextState = 21; + return true; + + default: + ctx.L.string_buffer.Append ((char) ctx.L.input_char); + continue; + } + } + + return true; + } + + private static bool State20 (FsmContext ctx) + { + ctx.L.GetChar (); + + switch (ctx.L.input_char) { + case '"': + ctx.Return = true; + ctx.NextState = 1; + return true; + + default: + return false; + } + } + + private static bool State21 (FsmContext ctx) + { + ctx.L.GetChar (); + + switch (ctx.L.input_char) { + case 'u': + ctx.NextState = 22; + return true; + + case '"': + case '\'': + case '/': + case '\\': + case 'b': + case 'f': + case 'n': + case 'r': + case 't': + ctx.L.string_buffer.Append ( + ProcessEscChar (ctx.L.input_char)); + ctx.NextState = ctx.StateStack; + return true; + + default: + return false; + } + } + + private static bool State22 (FsmContext ctx) + { + int counter = 0; + int mult = 4096; + + ctx.L.unichar = 0; + + while (ctx.L.GetChar ()) { + + if (ctx.L.input_char >= '0' && ctx.L.input_char <= '9' || + ctx.L.input_char >= 'A' && ctx.L.input_char <= 'F' || + ctx.L.input_char >= 'a' && ctx.L.input_char <= 'f') { + + ctx.L.unichar += HexValue (ctx.L.input_char) * mult; + + counter++; + mult /= 16; + + if (counter == 4) { + ctx.L.string_buffer.Append ( + Convert.ToChar (ctx.L.unichar)); + ctx.NextState = ctx.StateStack; + return true; + } + + continue; + } + + return false; + } + + return true; + } + + private static bool State23 (FsmContext ctx) + { + while (ctx.L.GetChar ()) { + switch (ctx.L.input_char) { + case '\'': + ctx.L.UngetChar (); + ctx.Return = true; + ctx.NextState = 24; + return true; + + case '\\': + ctx.StateStack = 23; + ctx.NextState = 21; + return true; + + default: + ctx.L.string_buffer.Append ((char) ctx.L.input_char); + continue; + } + } + + return true; + } + + private static bool State24 (FsmContext ctx) + { + ctx.L.GetChar (); + + switch (ctx.L.input_char) { + case '\'': + ctx.L.input_char = '"'; + ctx.Return = true; + ctx.NextState = 1; + return true; + + default: + return false; + } + } + + private static bool State25 (FsmContext ctx) + { + ctx.L.GetChar (); + + switch (ctx.L.input_char) { + case '*': + ctx.NextState = 27; + return true; + + case '/': + ctx.NextState = 26; + return true; + + default: + return false; + } + } + + private static bool State26 (FsmContext ctx) + { + while (ctx.L.GetChar ()) { + if (ctx.L.input_char == '\n') { + ctx.NextState = 1; + return true; + } + } + + return true; + } + + private static bool State27 (FsmContext ctx) + { + while (ctx.L.GetChar ()) { + if (ctx.L.input_char == '*') { + ctx.NextState = 28; + return true; + } + } + + return true; + } + + private static bool State28 (FsmContext ctx) + { + while (ctx.L.GetChar ()) { + if (ctx.L.input_char == '*') + continue; + + if (ctx.L.input_char == '/') { + ctx.NextState = 1; + return true; + } + + ctx.NextState = 27; + return true; + } + + return true; + } + #endregion + + + private bool GetChar () + { + if ((input_char = NextChar ()) != -1) + return true; + + end_of_input = true; + return false; + } + + private int NextChar () + { + if (input_buffer != 0) { + int tmp = input_buffer; + input_buffer = 0; + + return tmp; + } + + return reader.Read (); + } + + public bool NextToken () + { + StateHandler handler; + fsm_context.Return = false; + + while (true) { + handler = fsm_handler_table[state - 1]; + + if (! handler (fsm_context)) + throw new JsonException (input_char); + + if (end_of_input) + return false; + + if (fsm_context.Return) { + string_value = string_buffer.ToString (); + string_buffer.Remove (0, string_buffer.Length); + token = fsm_return_table[state - 1]; + + if (token == (int) ParserToken.Char) + token = input_char; + + state = fsm_context.NextState; + + return true; + } + + state = fsm_context.NextState; + } + } + + private void UngetChar () + { + input_buffer = input_char; + } + } +} diff --git a/client_unity/Assets/scripts/pomelo/LitJson/Lexer.cs.meta b/client_unity/Assets/scripts/pomelo/LitJson/Lexer.cs.meta new file mode 100644 index 0000000..dbf1702 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/LitJson/Lexer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: bf23bec0fd4a4d743846fa2cc7951a68 +timeCreated: 1462854600 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/LitJson/ParserToken.cs b/client_unity/Assets/scripts/pomelo/LitJson/ParserToken.cs new file mode 100644 index 0000000..b48186b --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/LitJson/ParserToken.cs @@ -0,0 +1,44 @@ +#region Header +/** + * ParserToken.cs + * Internal representation of the tokens used by the lexer and the parser. + * + * The authors disclaim copyright to this source code. For more details, see + * the COPYING file included with this distribution. + **/ +#endregion + + +namespace LitJson +{ + internal enum ParserToken + { + // Lexer tokens (see section A.1.1. of the manual) + None = System.Char.MaxValue + 1, + Number, + True, + False, + Null, + CharSeq, + // Single char + Char, + + // Parser Rules (see section A.2.1 of the manual) + Text, + Object, + ObjectPrime, + Pair, + PairRest, + Array, + ArrayPrime, + Value, + ValueRest, + String, + + // End of input + End, + + // The empty rule + Epsilon + } +} diff --git a/client_unity/Assets/scripts/pomelo/LitJson/ParserToken.cs.meta b/client_unity/Assets/scripts/pomelo/LitJson/ParserToken.cs.meta new file mode 100644 index 0000000..8070a38 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/LitJson/ParserToken.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3e423943575c62a4fb2dd9c4d96bd322 +timeCreated: 1462854600 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/PomeloSingleton.cs b/client_unity/Assets/scripts/pomelo/PomeloSingleton.cs new file mode 100644 index 0000000..7a9032d --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/PomeloSingleton.cs @@ -0,0 +1,61 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using Pomelo.DotNetClient; +using LitJson; + +public class PomeloSingleton { + + PomeloClient pmlClient; + + private volatile static PomeloSingleton _instance = null; + private static readonly object lockHelper = new object(); + + public static PomeloSingleton CreateInstance() + { + if(_instance == null) + { + lock(lockHelper) + { + if(_instance == null) + _instance = new PomeloSingleton(); + } + } + return _instance; + } + + private PomeloSingleton(){ + pmlClient = new PomeloClient (ClientProtocolType.NORMAL, null, "", null); + } + + public void connectGate() { + pmlClient.Connect ("127.0.0.1", 3101, "", + delegate { + //必须要handshake之后才能正常通信 + pmlClient.HandShake(null, delegate(JsonData obj) { + onConnectToGate(); + }); + }, + delegate () { + Debug.Log("disconnect gate"); + }); + } + + + public void updatePerFrame () { + if (pmlClient != null) { + pmlClient.poll (); + } + } + + public void onConnectToGate() { + JsonData data = new JsonData(); + data["userid"] = "abc"; + pmlClient.request ("gate.gateHandler.guestLogin", data, onGuestLogin); + } + + + public void onGuestLogin(JsonData obj) { + Debug.Log(obj.ToJson()); + } +} diff --git a/client_unity/Assets/scripts/pomelo/PomeloSingleton.cs.meta b/client_unity/Assets/scripts/pomelo/PomeloSingleton.cs.meta new file mode 100644 index 0000000..25234b2 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/PomeloSingleton.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d03e5c4f93ccd4c5294a6f93aab12cb6 +timeCreated: 1498629983 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/clientProtos.cs b/client_unity/Assets/scripts/pomelo/clientProtos.cs new file mode 100644 index 0000000..7c3f6d0 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/clientProtos.cs @@ -0,0 +1,235 @@ +using System; +using LitJson; +using Pomelo.DotNetClient; +namespace Proto +{ + public static class Version + { + public static void resetClient(PomeloClient pc) + { + gate.gateHandler.pc = pc; + connector.entryHandler.pc = pc; + chat.chatHandler.pc = pc; + ServerEvent.pc = pc; + } + } + namespace chat + { + public class chatHandler + { + public static PomeloClient pc = null; + public static bool send(string rid,string content,string from,string target) + { + JsonData data = new JsonData(); + data["rid"] = rid; + data["content"] = content; + data["from"] = from; + data["target"] = target; + pc.notify("chat.chatHandler.send", data); + return true; + } + } + } + namespace connector + { + public class entryHandler + { + public static PomeloClient pc = null; + public class enter_result + { + public string[] users; + public JsonData ToJson() + { + JsonData data = new JsonData(); + for(int i=0; + i 0) + { + this.users = new string[ret["users"].Count]; + for(int i=0; + i cb) + { + JsonData data = new JsonData(); + data["username"] = username; + data["rid"] = rid; + pc.request("connector.entryHandler.enter", data, delegate (JsonData ret) + { + enter_result result = new enter_result(); + if(ret.ContainsKey("users") && ret["users"].IsArray && ret["users"].Count > 0) + { + result.users = new string[ret["users"].Count]; + for(int i=0; + i cb) + { + JsonData data = new JsonData(); + data["uid"] = uid; + pc.request("gate.gateHandler.guestLogin", data, delegate (JsonData ret) + { + queryEntry_result result = new queryEntry_result(); + result.code= ret.ContainsKey("code")?(int)ret["code"]:0; + result.host= ret.ContainsKey("host")?(string)ret["host"]:""; + result.port= ret.ContainsKey("port")?(int)ret["port"]:0; + cb(result); + } + ); + return true; + } + } + } + public class ServerEvent + { + public static PomeloClient pc = null; + public class onAdd_event + { + public string user; + public JsonData ToJson() + { + JsonData data = new JsonData(); + data["user"] = user; + return data; + } + public void FromJson(JsonData ret) + { + this.user= ret.ContainsKey("user")?(string)ret["user"]:""; + } + } + public static bool onAdd(System.Action cb) + { + pc.on("onAdd", delegate (JsonData ret) + { + onAdd_event result = new onAdd_event(); + if(ret.ContainsKey("user")) + { + result.user = (string)ret["user"]; + } + cb(result); + } + ); + return true; + } + public class onChat_event + { + public string msg; + public string from; + public string target; + public JsonData ToJson() + { + JsonData data = new JsonData(); + data["msg"] = msg; + data["from"] = from; + data["target"] = target; + return data; + } + public void FromJson(JsonData ret) + { + this.msg= ret.ContainsKey("msg")?(string)ret["msg"]:""; + this.from= ret.ContainsKey("from")?(string)ret["from"]:""; + this.target= ret.ContainsKey("target")?(string)ret["target"]:""; + } + } + public static bool onChat(System.Action cb) + { + pc.on("onChat", delegate (JsonData ret) + { + onChat_event result = new onChat_event(); + if(ret.ContainsKey("msg")) + { + result.msg = (string)ret["msg"]; + } + if(ret.ContainsKey("from")) + { + result.from = (string)ret["from"]; + } + if(ret.ContainsKey("target")) + { + result.target = (string)ret["target"]; + } + cb(result); + } + ); + return true; + } + public class onLeave_event + { + public string user; + public JsonData ToJson() + { + JsonData data = new JsonData(); + data["user"] = user; + return data; + } + public void FromJson(JsonData ret) + { + this.user= ret.ContainsKey("user")?(string)ret["user"]:""; + } + } + public static bool onLeave(System.Action cb) + { + pc.on("onLeave", delegate (JsonData ret) + { + onLeave_event result = new onLeave_event(); + if(ret.ContainsKey("user")) + { + result.user = (string)ret["user"]; + } + cb(result); + } + ); + return true; + } + } +} diff --git a/client_unity/Assets/scripts/pomelo/clientProtos.cs.meta b/client_unity/Assets/scripts/pomelo/clientProtos.cs.meta new file mode 100644 index 0000000..b6c0d81 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/clientProtos.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1c100346b60962a448c9e8c4432e752d +timeCreated: 1464142004 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient.meta b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient.meta new file mode 100644 index 0000000..44387a2 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 553310ee716a3914fa59b4728eb06419 +folderAsset: yes +timeCreated: 1462854654 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/client.meta b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/client.meta new file mode 100644 index 0000000..77dc4e4 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/client.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: d38744056f359fd42b04cc05951a4df0 +folderAsset: yes +timeCreated: 1462854654 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/client/EventManager.cs b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/client/EventManager.cs new file mode 100644 index 0000000..a33ee99 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/client/EventManager.cs @@ -0,0 +1,81 @@ +using System; +using System.Collections.Generic; +using System.Text; +using LitJson; + +namespace Pomelo.DotNetClient +{ + public class EventManager : IDisposable + { + private Dictionary> callBackMap; + private Dictionary>> eventMap; + + public EventManager() + { + this.callBackMap = new Dictionary>(); + this.eventMap = new Dictionary>>(); + } + + //Adds callback to callBackMap by id. + public void AddCallBack(uint id, Action callback) + { + if (id > 0 && callback != null) { + this.callBackMap.Add(id, callback); + } + } + + /// + /// Invoke the callback when the server return messge . + /// + /// + /// Pomelo message. + /// + public void InvokeCallBack(uint id, JsonData data) + { + if (!callBackMap.ContainsKey(id)) return; + callBackMap[id].Invoke(data); + } + + //Adds the event to eventMap by name. + public void AddOnEvent(string eventName, Action callback) + { + List> list = null; + if (this.eventMap.TryGetValue(eventName, out list)) { + list.Add(callback); + } else { + list = new List>(); + list.Add(callback); + this.eventMap.Add(eventName, list); + } + } + + /// + /// If the event exists,invoke the event when server return messge. + /// + /// + /// + /// + /// + public void InvokeOnEvent (string route, JsonData msg) { + if (!this.eventMap.ContainsKey(route)) return; + + List> list = eventMap[route]; + foreach(Action action in list) action.Invoke(msg); + } + + // Dispose() calls Dispose(true) + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } + + // The bulk of the clean-up code is implemented in Dispose(bool) + protected void Dispose(bool disposing) + { + this.callBackMap.Clear(); + this.eventMap.Clear(); + } + } +} + diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/client/EventManager.cs.meta b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/client/EventManager.cs.meta new file mode 100644 index 0000000..79fce38 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/client/EventManager.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 220a7efed0418ce4d8270c4cd8764b64 +timeCreated: 1462854654 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/client/PomeloClient.cs b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/client/PomeloClient.cs new file mode 100644 index 0000000..50d029f --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/client/PomeloClient.cs @@ -0,0 +1,279 @@ +using LitJson; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Net; +using System.Net.Sockets; +using System.Text; +using System.Threading; +using UnityEngine; + +namespace Pomelo.DotNetClient +{ + public enum NetWorkState + { + [Description("initial state")] + CLOSED, + + [Description("connecting server")] + CONNECTING, + + [Description("server connected")] + CONNECTED, + + [Description("disconnected with server")] + DISCONNECTED, + + [Description("connect timeout")] + TIMEOUT, + + [Description("network error")] + ERROR + } + public class PomeloClient + { + private ITransporter transport; + private Protocol protocol; + + EventManager eventManager; + + private List msgQueue = new List(); + + private ClientProtocolType client_type; + + private event Action connectCB; + private event Action disconnectCB; + private event Action handShakeCallBack; + + private object guard = new object(); + private JsonData handShakeCallBackData; + + private bool handShakeCallBackCanCall; + private bool bDisconnCallBack; + private bool bConnectCallBack; + + public PomeloClient(ClientProtocolType type = ClientProtocolType.NORMAL, + byte[] clientcert = null, string clientpwd = "", string cathumbprint = null) + { + this.client_type = type; + + switch (this.client_type) + { + case ClientProtocolType.TLS: + { + transport = new TransporterSSL(clientcert, clientpwd, cathumbprint); + } + break; + case ClientProtocolType.NORMAL: + { + transport = new TransporterTCP(); + } + break; + default: + break; + } + + this.protocol = new Protocol(transport, processMessage, OnProtocolClose); + this.transport.setOnStateChanged(OnTransportStateChange); + + eventManager = new EventManager(); + } + + void OnTransportStateChange() + { + NetWorkState state = this.transport.NetworkState(); + switch (state) + { + case NetWorkState.CLOSED: + bDisconnCallBack = true; + break; + case NetWorkState.CONNECTING: + break; + case NetWorkState.CONNECTED: + bConnectCallBack = true; + break; + case NetWorkState.DISCONNECTED: + bDisconnCallBack = true; + break; + case NetWorkState.TIMEOUT: + bDisconnCallBack = true; + break; + case NetWorkState.ERROR: + bDisconnCallBack = true; + break; + default: + break; + } + } + + void OnProtocolClose() + { + if(this.IsConnected) + { + this.transport.close(); + } + } + + void processMessage(Message msg) + { + lock (guard) + { + msgQueue.Add(msg); + } + } + + public void poll() + { + lock (guard) + { + foreach (var msg in msgQueue) + { + if (msg.type == MessageType.MSG_RESPONSE) + { + eventManager.InvokeCallBack(msg.id, msg.data); + } + else if (msg.type == MessageType.MSG_PUSH) + { + eventManager.InvokeOnEvent(msg.route, msg.data); + } + } + msgQueue.Clear(); + + if (this.bConnectCallBack == true) + { + if (connectCB != null) connectCB(); + this.bConnectCallBack = false; + + } + + if (this.handShakeCallBackCanCall == true) + { + this.handShakeCallBack(this.handShakeCallBackData); + this.handShakeCallBackCanCall = false; + } + + if (this.bDisconnCallBack == true) + { + if (disconnectCB != null) disconnectCB(); + this.bDisconnCallBack = false; + } + } + } + + public void close() + { + //cycle call + this.protocol.close(); + this.transport.close(); + } + + public bool IsConnected + { + get { return this.transport.NetworkState() == NetWorkState.CONNECTED; } + } + + public string HandShakeCache + { + get { return this.protocol.HandShakeCache; } + } + + public bool Connect( + string host, int port, string handshake = "", + Action callback = null, Action disconnCallBack = null, int nTimeoutMS = 5000 + ) + { + this.protocol.HandShakeCache = handshake; + this.connectCB = callback; + this.disconnectCB = disconnCallBack; + + IPAddress ipAddress = new IPAddress(0); + if (!IPAddress.TryParse(host, out ipAddress)) + { + ipAddress = null; + } + + if (ipAddress == null) + { + try + { + IPAddress[] addresses = Dns.GetHostEntry(host).AddressList; + foreach (var item in addresses) + { + if (item.AddressFamily == AddressFamily.InterNetwork) + { + ipAddress = item; + break; + } + } + } + catch (Exception e) + { + Debug.Log(e); + return false; + } + } + + if (ipAddress == null) + { + throw new Exception("can not parse host : " + host); + } + + IPEndPoint ie = new IPEndPoint(ipAddress, port); + + this.transport.Connect(ie, nTimeoutMS); + + return true; + + } + + public bool HandShake(JsonData user, Action handshakeCallback) + { + try + { + this.handShakeCallBack = handshakeCallback; + protocol.start(user, delegate (JsonData data) + { + lock (guard) + { + this.handShakeCallBackData = new JsonData(); + this.handShakeCallBackData = data; + this.handShakeCallBackCanCall = true; + } + }); + return true; + } + catch (Exception e) + { + Debug.Log(e); + return false; + } + } + + private JsonData emptyMsg = new JsonData(); + private uint reqId = 1; + + public void request(string route, Action action) + { + this.request(route, emptyMsg, action); + } + + public void request(string route, JsonData msg, Action action) + { + this.eventManager.AddCallBack(reqId, action); + protocol.send(route, reqId, msg); + + reqId++; + } + + public void notify(string route, JsonData msg) + { + protocol.send(route, msg); + } + + public void on(string eventName, Action action) + { + eventManager.AddOnEvent(eventName, action); + } + } +} \ No newline at end of file diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/client/PomeloClient.cs.meta b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/client/PomeloClient.cs.meta new file mode 100644 index 0000000..c14a679 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/client/PomeloClient.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6675e88424fa0ed4287761950345486c +timeCreated: 1465374469 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf.meta b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf.meta new file mode 100644 index 0000000..3946910 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 943789edc0080ce41b6de660df21530c +folderAsset: yes +timeCreated: 1462854654 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/Decoder.cs b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/Decoder.cs new file mode 100644 index 0000000..b6097a1 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/Decoder.cs @@ -0,0 +1,43 @@ +using System; + +namespace Pomelo.Protobuf +{ + public class Decoder + { + /// + /// Decodes the UInt32. + /// + public static uint decodeUInt32(int offset, byte[] bytes, out int length){ + uint n = 0; + length = 0; + + for(int i = offset; i < bytes.Length; i++) { + length++; + uint m = Convert.ToUInt32(bytes[i]); + n = n + Convert.ToUInt32((m & 0x7f) * Math.Pow(2, (7 * (i - offset)))); + if(m < 128) { + break; + } + } + + return n; + } + + public static uint decodeUInt32(byte[] bytes){ + int length; + return decodeUInt32(0, bytes, out length); + } + + /// + /// Decodes the SInt32. + /// + public static int decodeSInt32(byte[] bytes){ + uint n = decodeUInt32(bytes); + int flag = ((n % 2) == 1) ? -1 : 1; + + int result = Convert.ToInt32(((n % 2 + n) / 2) * flag); + return result; + } + } +} + diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/Decoder.cs.meta b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/Decoder.cs.meta new file mode 100644 index 0000000..d8c91f3 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/Decoder.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8d65499ea0220594e8a7966c967cde8a +timeCreated: 1462854654 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/Encoder.cs b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/Encoder.cs new file mode 100644 index 0000000..be806da --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/Encoder.cs @@ -0,0 +1,83 @@ +using System; +using System.Collections; +using System.Collections.Generic; + +namespace Pomelo.Protobuf +{ + public class Encoder + { + + //Encode the UInt32. + public static byte[] encodeUInt32(string n) { + return encodeUInt32(Convert.ToUInt32(n)); + } + + /// + /// Encode the UInt32. + /// + /// + /// byte[] + /// + /// + /// int + /// + public static byte [] encodeUInt32(uint n){ + List byteList = new List(); + do{ + uint tmp = n % 128; + uint next = n >> 7; + if (next != 0) { + tmp = tmp + 128; + } + byteList.Add(Convert.ToByte(tmp)); + n = next; + } while (n != 0); + + return byteList.ToArray(); + } + + //Encode SInt32 + public static byte [] encodeSInt32(string n){ + return encodeSInt32(Convert.ToInt32(n)); + } + + /// + /// Encodes the SInt32. + /// + /// + /// byte [] + /// + /// + /// int + /// + public static byte [] encodeSInt32(int n){ + UInt32 num = (uint)(n < 0 ? (Math.Abs(n) * 2 - 1) : n * 2); + return encodeUInt32(num); + } + + /// + /// Encodes the float. + /// + /// + /// byte [] + /// + /// + /// float. + /// + public static byte [] encodeFloat(float n){ + byte[] bytes = BitConverter.GetBytes(n); + if (!BitConverter.IsLittleEndian) { + Util.Reverse(bytes); + } + return bytes; + } + + //Get the byte length of message. + public static int byteLength(string msg){ + return System.Text.Encoding.UTF8.GetBytes(msg).Length; + } + + + } +} + diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/Encoder.cs.meta b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/Encoder.cs.meta new file mode 100644 index 0000000..5cd8976 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/Encoder.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 43ce470ba42d595438951a0dd1ab4541 +timeCreated: 1462854654 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/MsgDecoder.cs b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/MsgDecoder.cs new file mode 100644 index 0000000..dc11696 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/MsgDecoder.cs @@ -0,0 +1,241 @@ +using System; +using System.Text; +using LitJson; +using System.Collections; +using System.Collections.Generic; + +namespace Pomelo.Protobuf +{ + public class MsgDecoder + { + private JsonData protos{set; get;}//The message format(like .proto file) + private int offset { set; get; } + private byte[] buffer { set; get; }//The binary message from server. + private Util util { set; get; } + + public MsgDecoder (JsonData protos) + { + if(protos == null) protos = new JsonData(); + + this.protos = protos; + this.util = new Util(); + } + + /// + /// Decode message from server. + /// + /// + /// Route. + /// + /// + /// JsonData. + /// + public JsonData decode(string route, byte [] buf){ + this.buffer = buf; + this.offset = 0; + object proto = null; + if (this.protos.TryGetValue(route, out proto)){ + JsonData msg = new JsonData(); + return this.decodeMsg(msg, (JsonData)proto, this.buffer.Length); + } + return null; + } + + + /// + /// Decode the message. + /// + /// + /// The message. + /// + /// + /// JsonData. + /// + /// + /// JsonData. + /// + /// + /// int. + /// + private JsonData decodeMsg(JsonData msg, JsonData proto, int length){ + while(this.offset < length) { + Dictionary head = this.getHead(); + int tag; + if (head.TryGetValue("tag", out tag)) { + object _tags = null; + if (proto.TryGetValue("__tags", out _tags)){ + object name; + if(((JsonData)_tags).TryGetValue(tag.ToString(), out name)) { + object value; + if(proto.TryGetValue(name.ToString(), out value)) { + object option; + if (((JsonData)(value)).TryGetValue("option", out option)) { + switch(option.ToString()){ + case "optional": + case "required": + object type; + if (((JsonData)(value)).TryGetValue("type", out type)) { + msg[name.ToString()] = new JsonData(this.decodeProp(type.ToString(), proto)); + //msg.Add(name.ToString(), this.decodeProp(type.ToString(), proto)); + } + break; + case "repeated": + object _name; + if (!msg.TryGetValue(name.ToString(), out _name)) { + msg[name.ToString()] = new JsonData(); + //msg[name.ToString()] = new JsonData(new List()); + //msg.Add(name.ToString(), new List()); + } + object value_type; + if (msg.TryGetValue(name.ToString(), out _name) && ((JsonData)(value)).TryGetValue("type", out value_type)) { + //decodeArray((List)_name, value_type.ToString(), proto); + decodeArray((JsonData)_name, value_type.ToString(), proto); + } + break; + } + } + } + } + } + } + } + return msg; + } + + /// + /// Decode array in message. + /// + private void decodeArray(JsonData list, string type, JsonData proto) + { + if (this.util.isSimpleType(type)) + { + int length = (int)Decoder.decodeUInt32(this.getBytes()); + for (int i = 0; i < length; i++) + { + list.Add(this.decodeProp(type, null)); + } + } + else { + list.Add(this.decodeProp(type, proto)); + } + } + + /// + /// Decode array in message. + /// + //private void decodeArray(List list, string type, JsonData proto){ + // if (this.util.isSimpleType(type)) { + // int length = (int)Decoder.decodeUInt32(this.getBytes()); + // for(int i = 0; i < length; i++) { + // list.Add(this.decodeProp(type, null)); + // } + // } else { + // list.Add(this.decodeProp(type, proto)); + // } + // } + + /// + /// Decode each simple type in message. + /// + private object decodeProp(string type, JsonData proto){ + switch(type) { + case "uInt32": + return Decoder.decodeUInt32(this.getBytes()); + case "int32": + case "sInt32": + return Decoder.decodeSInt32(this.getBytes()); + case "float": + //object xx = this.decodeFloat(); + //return System.Convert.ToDouble(xx); + return this.decodeFloat(); + case "double": + return this.decodeDouble(); + case "string": + return this.decodeString(); + default: + return this.decodeObject(type, proto); + } + } + + //Decode the user-defined object type in message. + private JsonData decodeObject(string type, JsonData proto){ + if (proto != null) { + object __messages; + if (proto.TryGetValue("__messages", out __messages)) { + object _type; + if (((JsonData)__messages).TryGetValue(type, out _type) || protos.TryGetValue("message " + type, out _type)) { + int l = (int)Decoder.decodeUInt32(this.getBytes()); + JsonData msg = new JsonData(); + return this.decodeMsg(msg, (JsonData)_type, this.offset + l); + } + } + } + return new JsonData(); + } + + //Decode string type. + private string decodeString(){ + int length = (int)Decoder.decodeUInt32(this.getBytes()); + string msg_string = Encoding.UTF8.GetString(this.buffer, this.offset, length); + this.offset += length; + return msg_string; + } + + //Decode double type. + private double decodeDouble(){ + double msg_double = BitConverter.Int64BitsToDouble((long)this.ReadRawLittleEndian64()); + this.offset += 8; + return msg_double; + } + + //Decode float type + private float decodeFloat(){ + float msg_float = BitConverter.ToSingle(this.buffer, this.offset); + this.offset += 4; + return msg_float; + } + + //Read long in littleEndian + private ulong ReadRawLittleEndian64() { + ulong b1 = buffer[this.offset]; + ulong b2 = buffer[this.offset + 1]; + ulong b3 = buffer[this.offset + 2]; + ulong b4 = buffer[this.offset + 3]; + ulong b5 = buffer[this.offset + 4]; + ulong b6 = buffer[this.offset + 5]; + ulong b7 = buffer[this.offset + 6]; + ulong b8 = buffer[this.offset + 7]; + return b1 | (b2 << 8) | (b3 << 16) | (b4 << 24) + | (b5 << 32) | (b6 << 40) | (b7 << 48) | (b8 << 56); + } + + //Get the type and tag. + private Dictionary getHead(){ + int tag = (int)Decoder.decodeUInt32(this.getBytes()); + Dictionary head = new Dictionary(); + head.Add("type", tag & 0x7); + head.Add("tag", tag >> 3); + return head; + } + + //Get bytes. + private byte[] getBytes(){ + List arrayList = new List(); + int pos = this.offset; + byte b; + do{ + b = this.buffer[pos]; + arrayList.Add(b); + pos++; + } while (b >= 128); + this.offset = pos; + int length = arrayList.Count; + byte[] bytes = new byte[length]; + for (int i = 0; i < length; i++) { + bytes[i] = arrayList[i]; + } + return bytes; + } + } +} + diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/MsgDecoder.cs.meta b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/MsgDecoder.cs.meta new file mode 100644 index 0000000..72c1056 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/MsgDecoder.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 932790a9dde02cf4f9ff2eed98ec9fcb +timeCreated: 1462854654 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/MsgEncoder.cs b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/MsgEncoder.cs new file mode 100644 index 0000000..a110afc --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/MsgEncoder.cs @@ -0,0 +1,322 @@ +using System; +using System.Text; +using LitJson; +using System.Collections; +using System.Collections.Generic; + +namespace Pomelo.Protobuf +{ + public class MsgEncoder + { + private JsonData protos{set; get;}//The message format(like .proto file) + private Encoder encoder { set; get; } + private Util util { set; get; } + + public MsgEncoder (JsonData protos) + { + if(protos == null) protos = new JsonData(); + + this.protos = protos; + this.util = new Util(); + } + + /// + /// Encode the message from server. + /// + /// + /// Route. + /// + /// + /// Message. + /// + public byte [] encode(string route, JsonData msg){ + byte[] returnByte = null; + object proto; + if (this.protos.TryGetValue(route, out proto)) + { + if (!checkMsg(msg, (JsonData)proto)) { + return null; + } + int length = Encoder.byteLength(msg.ToJson()) * 2; + int offset = 0; + byte[] buff = new byte[length]; + offset = encodeMsg(buff, offset, (JsonData)proto, msg); + returnByte = new byte[offset]; + for (int i = 0; i < offset; i++) { + returnByte[i] = buff[i]; + } + } + return returnByte; + } + + /// + /// Check the message. + /// + private bool checkMsg(JsonData msg, JsonData proto){ + ICollection protoKeys = proto.Keys; + foreach(string key in protoKeys) { + JsonData value = (JsonData)proto[key]; + object proto_option; + if (value.TryGetValue("option", out proto_option)) { + switch(proto_option.ToString()) { + case "required": + if(!msg.Keys.Contains(key)) { + return false; + }else{ + + } + break; + case "optional": + object value_type; + + JsonData messages = (JsonData)proto["__messages"]; + + value_type = value["type"]; + + if(msg.Keys.Contains(key)){ + Object value_proto; + + if(messages.TryGetValue(value_type.ToString(), out value_proto) || protos.TryGetValue("message " + value_type.ToString(), out value_proto)){ + checkMsg ((JsonData)msg[key], (JsonData)value_proto); + } + } + break; + case "repeated": + object msg_name; + object msg_type; + if (msg.Keys.Contains(key)) + { + if(value.TryGetValue("type", out value_type) && msg.TryGetValue(key, out msg_name)) + { + if (((JsonData)proto["__messages"]).TryGetValue(value_type.ToString(), out msg_type) || protos.TryGetValue("message " + value_type.ToString(), out msg_type)) + { + JsonData msg_arr = (JsonData)msg_name; + if (!msg_arr.IsArray) + { + return false; + } + for (int i = 0; i < msg_arr.Count; ++i) + { + if (!checkMsg(msg_arr[i], (JsonData)msg_type)) + { + return false; + } + } + } + } + } + //if (value.TryGetValue("type", out value_type) && msg.TryGetValue(key, out msg_name)) { + //if(((JsonData)proto["__messages"]).TryGetValue(value_type.ToString(), out msg_type) || protos.TryGetValue("message " + value_type.ToString(), out msg_type)){ + + // List o = (List)msg_name; + // foreach (object item in o) + // { + // if (!checkMsg((JsonData)item, (JsonData)msg_type)) + // { + // return false; + // } + // } + // } + // } + break; + } + } + } + return true; + } + + /// + /// Encode the message. + /// + private int encodeMsg(byte [] buffer, int offset, JsonData proto, JsonData msg){ + ICollection msgKeys = msg.Keys; + foreach(string key in msgKeys) { + object value; + if (proto.TryGetValue(key, out value)) { + object value_option; + if (((JsonData)value).TryGetValue("option", out value_option)) { + switch(value_option.ToString()){ + case "required": + case "optional": + object value_type, value_tag; + if (((JsonData)value).TryGetValue("type", out value_type) && ((JsonData)value).TryGetValue("tag", out value_tag)) { + offset = this.writeBytes(buffer, offset, this.encodeTag(value_type.ToString(), Convert.ToInt32(value_tag.ToString()))); + offset = this.encodeProp(msg[key], value_type.ToString(), offset, buffer, proto); + } + break; + case "repeated": + object msg_key; + if (msg.TryGetValue(key, out msg_key)) { + JsonData msg_arr = (JsonData)msg_key; + if(msg_arr.IsArray && msg_arr.Count > 0) + { + offset = encodeArray(msg_arr, (JsonData)value, offset, buffer, proto); + } + //if (((List)msg_key).Count > 0) { + // offset = encodeArray((List)msg_key, (JsonData)value, offset, buffer, proto); + // } + } + break; + } + } + + } + } + return offset; + } + + /// + /// Encode the array type. + /// + private int encodeArray(JsonData msg, JsonData value, int offset, byte[] buffer, JsonData proto) + { + object value_type, value_tag; + if (value.TryGetValue("type", out value_type) && value.TryGetValue("tag", out value_tag)) + { + if (this.util.isSimpleType(value_type.ToString())) + { + offset = this.writeBytes(buffer, offset, this.encodeTag(value_type.ToString(), Convert.ToInt32(value_tag.ToString()))); + offset = this.writeBytes(buffer, offset, Encoder.encodeUInt32((uint)msg.Count)); + //foreach (object item in msg) + for(int i=0;i + /// Encode the array type. + /// + //private int encodeArray(List msg, JsonData value, int offset, byte[] buffer, JsonData proto){ + // object value_type, value_tag; + // if (value.TryGetValue("type", out value_type) && value.TryGetValue("tag", out value_tag)) { + // if (this.util.isSimpleType(value_type.ToString())) { + // offset = this.writeBytes(buffer, offset, this.encodeTag(value_type.ToString(), Convert.ToInt32(value_tag))); + // offset = this.writeBytes(buffer, offset, Encoder.encodeUInt32((uint)msg.Count)); + // foreach(object item in msg) { + // offset = this.encodeProp(item, value_type.ToString(), offset, buffer, null); + // } + // } else { + // foreach(object item in msg) { + // offset = this.writeBytes(buffer, offset, this.encodeTag(value_type.ToString(), Convert.ToInt32(value_tag))); + // offset = this.encodeProp(item, value_type.ToString(), offset, buffer, proto); + // } + // } + // } + // return offset; + // } + + /// + /// Encode each item in message. + /// + private int encodeProp(object value, string type, int offset, byte [] buffer, JsonData proto){ + switch(type) { + case "uInt32": + this.writeUInt32(buffer, ref offset, value); + break; + case "int32": + case "sInt32": + this.writeInt32(buffer, ref offset, value); + break; + case "float": + this.writeFloat(buffer, ref offset, value); + break; + case "double": + this.writeDouble(buffer, ref offset, value); + break; + case "string": + this.writeString(buffer, ref offset, value); + break; + default: + object __messages; + object __message_type; + + if (proto.TryGetValue("__messages", out __messages)) { + if (((JsonData)__messages).TryGetValue(type, out __message_type) || protos.TryGetValue("message " + type, out __message_type)) { + byte[] tembuff = new byte[Encoder.byteLength(value.ToString()) * 3]; + int length = 0; + length = this.encodeMsg(tembuff, length, (JsonData)__message_type, (JsonData)value); + offset = writeBytes(buffer, offset, Encoder.encodeUInt32((uint)length)); + for (int i = 0; i < length; i++) { + buffer[offset] = tembuff[i]; + offset++; + } + } + } + break; + } + return offset; + } + + //Encode string. + private void writeString(byte [] buffer, ref int offset, object value) { + int le = Encoding.UTF8.GetByteCount(value.ToString()); + offset = writeBytes(buffer, offset, Encoder.encodeUInt32((uint)le)); + byte[] bytes = Encoding.UTF8.GetBytes(value.ToString()); + this.writeBytes(buffer, offset, bytes); + offset += le; + } + + //Encode double. + private void writeDouble(byte [] buffer, ref int offset, object value) { + WriteRawLittleEndian64(buffer, offset, (ulong)BitConverter.DoubleToInt64Bits(double.Parse(value.ToString()))); + offset += 8; + } + + //Encode float. + private void writeFloat(byte [] buffer, ref int offset, object value) { + this.writeBytes(buffer, offset, Encoder.encodeFloat(float.Parse(value.ToString()))); + offset += 4; + } + + ////Encode UInt32. + private void writeUInt32(byte [] buffer, ref int offset, object value){ + offset = writeBytes(buffer, offset, Encoder.encodeUInt32(value.ToString())); + } + + //Encode Int32 + private void writeInt32(byte [] buffer, ref int offset, object value) { + offset = writeBytes(buffer, offset, Encoder.encodeSInt32(value.ToString())); + } + + //Write bytes to buffer. + private int writeBytes(byte [] buffer, int offset, byte [] bytes){ + for(int i = 0; i < bytes.Length; i++){ + buffer[offset] = bytes[i]; + offset++; + } + return offset; + } + + //Encode tag. + private byte[] encodeTag(string type, int tag) { + int flag = this.util.containType(type); + return Encoder.encodeUInt32((uint)(tag << 3 | flag)); + } + + + private void WriteRawLittleEndian64(byte[] buffer, int offset, ulong value) { + buffer[offset++] = ((byte)value); + buffer[offset++] = ((byte)(value >> 8)); + buffer[offset++] = ((byte)(value >> 16)); + buffer[offset++] = ((byte)(value >> 24)); + buffer[offset++] = ((byte)(value >> 32)); + buffer[offset++] = ((byte)(value >> 40)); + buffer[offset++] = ((byte)(value >> 48)); + buffer[offset++] = ((byte)(value >> 56)); + } + } +} + diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/MsgEncoder.cs.meta b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/MsgEncoder.cs.meta new file mode 100644 index 0000000..a385436 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/MsgEncoder.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 14f2dd712b7d1294a9bb7776e12247d6 +timeCreated: 1462854654 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/Protobuf.cs b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/Protobuf.cs new file mode 100644 index 0000000..92727e1 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/Protobuf.cs @@ -0,0 +1,26 @@ +using System; +using LitJson; + +namespace Pomelo.Protobuf +{ + public class Protobuf + { + private MsgDecoder decoder; + private MsgEncoder encoder; + + public Protobuf (JsonData encodeProtos, JsonData decodeProtos) + { + this.encoder = new MsgEncoder(encodeProtos); + this.decoder = new MsgDecoder(decodeProtos); + } + + public byte[] encode(string route, JsonData msg){ + return encoder.encode(route, msg); + } + + public JsonData decode(string route, byte[] buffer){ + return decoder.decode(route, buffer); + } + } +} + diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/Protobuf.cs.meta b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/Protobuf.cs.meta new file mode 100644 index 0000000..679bf01 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/Protobuf.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e607e21738d9f944691871097ef24954 +timeCreated: 1462854654 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/util.meta b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/util.meta new file mode 100644 index 0000000..ff033de --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/util.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 39b093c15892dd1418910e5c8a0de7fb +folderAsset: yes +timeCreated: 1462854654 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/util/Util.cs b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/util/Util.cs new file mode 100644 index 0000000..a30d1fa --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/util/Util.cs @@ -0,0 +1,86 @@ +using System; +using System.Collections; +using System.Collections.Generic; + +namespace Pomelo.Protobuf +{ + public class Util + { + //Simple type + private string[] types; + private Dictionary typeMap; + + public Util() + { + this.initTypeMap(); + this.types = new string[] { "uInt32", "sInt32", "int32", "uInt64", "sInt64", "float", "double" }; + } + + /// + /// Check out the given type. If it is simple, return ture. + /// + /// + /// The simple type. + /// + /// + /// If set to true type. + /// + public bool isSimpleType(string type){ + int length = types.Length; + bool flag = false; + for( int i = 0; i < length; i++) { + if (type == types[i]) { + flag = true; + break; + } + } + return flag; + } + + /// + /// Check out the given type. If the type exist in typeMap, return true. + /// + /// + /// The type. + /// + /// + /// Type. + /// + public int containType(string type){ + int value, returnInt = 2; + if(this.typeMap.TryGetValue(type, out value)) { + returnInt = value; + } + return returnInt; + } + + //Init the typeMap + private void initTypeMap(){ + Dictionary dic = new Dictionary(); + dic.Add("uInt32", 0); + dic.Add("sInt32", 0); + dic.Add("int32", 0); + dic.Add("double", 1); + dic.Add("string", 2); + dic.Add("float", 5); + dic.Add("message", 2); + + this.typeMap = dic; + } + + /// + /// Reverses the order of bytes in the array + /// + public static void Reverse(byte[] bytes) + { + byte temp; + for (int first = 0, last = bytes.Length - 1; first < last; first++, last--) + { + temp = bytes[first]; + bytes[first] = bytes[last]; + bytes[last] = temp; + } + } + } +} + diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/util/Util.cs.meta b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/util/Util.cs.meta new file mode 100644 index 0000000..c7f1a91 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protobuf/util/Util.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: afb337f0860645d4e9f361d325f54125 +timeCreated: 1462854654 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol.meta b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol.meta new file mode 100644 index 0000000..9d5d664 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: aac621877d764a04588ad55c6f28c52d +folderAsset: yes +timeCreated: 1462854654 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/HandShakeService.cs b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/HandShakeService.cs new file mode 100644 index 0000000..3d6bf2b --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/HandShakeService.cs @@ -0,0 +1,66 @@ +using System; +using System.Text; +using LitJson; +using System.Net; +using System.Net.Sockets; + +namespace Pomelo.DotNetClient +{ + public class HandShakeService + { + private Protocol protocol; + private Action callback; + + public const string Version = "0.3.0"; + public const string Type = "unity-socket"; + //private ProtocolNew protocolNew; + + //public HandShakeService(Protocol protocol) + //{ + // this.protocol = protocol; + //} + + public HandShakeService(Protocol protocolNew) + { + this.protocol = protocolNew; + } + + public void request(JsonData user, Action callback){ + byte[] body = Encoding.UTF8.GetBytes(JsonMapper.ToJson(buildMsg(user))); + + protocol.send(PackageType.PKG_HANDSHAKE, body); + + this.callback = callback; + } + + internal void invokeCallback(JsonData data){ + //Invoke the handshake callback + if (callback != null) callback.Invoke(data); + } + + public void ack(){ + protocol.send(PackageType.PKG_HANDSHAKE_ACK, new byte[0]); + } + + private JsonData buildMsg(JsonData user) { + if (user == null) user = new JsonData(); + + JsonData msg = new JsonData(); + + //Build sys option + JsonData sys = new JsonData(); + sys["version"] = Version; + sys["type"] = Type; + sys["dictVersion"] = protocol.getDictVersion(); + sys["protoVersion"] = protocol.getProtoVersion(); + //sys["handshakeVersion"] = protocol.HandShakeVersion; + + //Build handshake message + msg["sys"] = sys; + msg["user"] = user; + + return msg; + } + } +} + diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/HandShakeService.cs.meta b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/HandShakeService.cs.meta new file mode 100644 index 0000000..ff0aed9 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/HandShakeService.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a4406f74e545d1a43b6d7ccff4600708 +timeCreated: 1462854654 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/HeartBeatService.cs b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/HeartBeatService.cs new file mode 100644 index 0000000..f3ac3ea --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/HeartBeatService.cs @@ -0,0 +1,64 @@ +using System; +using System.Timers; + +namespace Pomelo.DotNetClient +{ + public class HeartBeatService + { + int interval; + public int timeout; + Timer timer; + DateTime lastTime; + + Protocol protocol; + + public HeartBeatService(int interval, Protocol protocol){ + this.interval = interval * 1000; + this.protocol = protocol; + } + + public void resetTimeout(){ + this.timeout = 0; + lastTime = DateTime.Now; + } + + public void sendHeartBeat(object source, ElapsedEventArgs e) { + TimeSpan span = DateTime.Now - lastTime; + timeout = (int)span.TotalMilliseconds; + + //check timeout + if (timeout > interval * 2) + { + //protocol.getPomeloClient().disconnect(); + protocol.close(); + //stop(); + return; + } + + //Send heart beat + protocol.send(PackageType.PKG_HEARTBEAT); + } + + public void start(){ + if (interval < 1000) return; + + //start hearbeat + this.timer = new Timer(); + timer.Interval = interval; + timer.Elapsed += new ElapsedEventHandler(sendHeartBeat); + timer.Enabled = true; + + //Set timeout + timeout = 0; + lastTime = DateTime.Now; + } + + public void stop(){ + if(this.timer != null) { + this.timer.Enabled = false; + this.timer.Dispose(); + } + } + } +} + diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/HeartBeatService.cs.meta b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/HeartBeatService.cs.meta new file mode 100644 index 0000000..e2b33d6 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/HeartBeatService.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5b33eb63b05ab8242a8927e5a914f126 +timeCreated: 1462854654 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/Message.cs b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/Message.cs new file mode 100644 index 0000000..822f067 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/Message.cs @@ -0,0 +1,22 @@ +using System; +using LitJson; + +namespace Pomelo.DotNetClient +{ + public class Message + { + public MessageType type; + public string route; + public uint id; + public JsonData data; + + public Message (MessageType type, uint id, string route, JsonData data) + { + this.type = type; + this.id = id; + this.route = route; + this.data = data; + } + } +} + diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/Message.cs.meta b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/Message.cs.meta new file mode 100644 index 0000000..3fb4863 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/Message.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0d77ed8da9291bf4bbea16385d732b73 +timeCreated: 1462854654 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/MessageProtocol.cs b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/MessageProtocol.cs new file mode 100644 index 0000000..6e1d2c8 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/MessageProtocol.cs @@ -0,0 +1,210 @@ +using System; +using System.Text; +using System.Collections.Generic; +using LitJson; +using Pomelo.Protobuf; +using UnityEngine; + +namespace Pomelo.DotNetClient +{ + public class MessageProtocol + { + public Dictionary dict = new Dictionary(); + public Dictionary abbrs = new Dictionary(); + public JsonData encodeProtos = new JsonData(); + public JsonData decodeProtos = new JsonData(); + private Dictionary reqMap; + private Protobuf.Protobuf protobuf; + public string protoVersion = ""; + public string dictVersion = ""; + + public const int MSG_Route_Limit = 255; + public const int MSG_Route_Mask = 0x01; + public const int MSG_Type_Mask = 0x07; + + public MessageProtocol(JsonData dict, JsonData serverProtos, JsonData clientProtos, string dictVersion, string protoVersion) + { + ICollection keys = dict.Keys; + + foreach(string key in keys){ + ushort value = Convert.ToUInt16(dict[key].ToString()); + this.dict[key] = value; + this.abbrs[value] = key; + } + + protobuf = new Protobuf.Protobuf(clientProtos, serverProtos); + this.encodeProtos = clientProtos; + this.decodeProtos = serverProtos; + + this.protoVersion = protoVersion; + this.dictVersion = dictVersion; + + this.reqMap = new Dictionary(); + } + + public byte[] encode(string route, JsonData msg){ + return encode(route, 0, msg); + } + + public byte[] encode(string route, uint id, JsonData msg){ + int routeLength = byteLength(route); + if (routeLength > MSG_Route_Limit) { + throw new Exception("Route is too long!"); + } + + //Encode head + //The maximus length of head is 1 byte flag + 4 bytes message id + route string length + 1byte + byte[] head = new byte[routeLength + 6]; + int offset = 1; + byte flag = 0; + + if (id > 0) { + byte[] bytes = Protobuf.Encoder.encodeUInt32(id); + + writeBytes(bytes, offset, head); + flag |= ((byte)MessageType.MSG_REQUEST) << 1; + offset += bytes.Length; + } else { + flag |= ((byte)MessageType.MSG_NOTIFY) << 1; + } + + //Compress head + if (dict.ContainsKey(route)) { + ushort cmpRoute = dict[route]; + writeShort(offset, cmpRoute, head); + flag |= MSG_Route_Mask; + offset += 2; + } else { + //Write route length + head[offset++] = (byte)routeLength; + + //Write route + writeBytes(Encoding.UTF8.GetBytes(route), offset, head); + offset += routeLength; + } + + head[0] = flag; + + //Encode body + byte[] body; + if (encodeProtos.ContainsKey (route)) { + body = protobuf.encode(route, msg); + } else { + body = Encoding.UTF8.GetBytes(JsonMapper.ToJson(msg)); + } + + //Construct the result + byte[] result = new byte[offset + body.Length]; + for (int i = 0; i < offset; i++) { + result[i] = head[i]; + } + + for (int i = 0; i < body.Length; i++) { + result[offset + i] = body[i]; + } + + //Add id to route map + if (id > 0) reqMap.Add(id, route); + + return result; + } + + public Message decode(byte[] buffer){ + //Decode head + //Get flag + byte flag = buffer[0]; + //Set offset to 1, for the 1st byte will always be the flag + int offset = 1; + + //Get type from flag; + MessageType type = (MessageType)((flag >> 1) & MSG_Type_Mask); + uint id = 0; + string route; + + if (type == MessageType.MSG_RESPONSE) { + int length; + id = (uint)Protobuf.Decoder.decodeUInt32(offset, buffer, out length); + if(id <= 0 || !reqMap.ContainsKey(id)){ + return null; + }else{ + route = reqMap[id]; + reqMap.Remove(id); + } + + offset += length; + } else if (type == MessageType.MSG_PUSH) { + //Get route + if((flag & 0x01) == 1){ + ushort routeId = readShort(offset, buffer); + if(!abbrs.ContainsKey(routeId)) + { + offset += 2; + Debug.LogError("error route id " + routeId); + return null; + //throw new System.Exception("error router id " + routeId); + } + route = abbrs[routeId]; + + offset += 2; + }else{ + byte length = buffer[offset]; + offset += 1; + + route = Encoding.UTF8.GetString(buffer, offset, length); + offset += length; + } + } else { + return null; + } + + //Decode body + byte[] body = new byte[buffer.Length - offset]; + for (int i = 0; i < body.Length; i++) { + body[i] = buffer[i + offset]; + } + + JsonData msg; + if (decodeProtos.ContainsKey(route)) { + msg = protobuf.decode(route, body); + } else { + msg = LitJson.JsonMapper.ToObject(Encoding.UTF8.GetString(body)); + //msg = (JsonData)SimpleJson.SimpleJson.DeserializeObject(Encoding.UTF8.GetString(body)); + } + + //Construct the message + return new Message(type, id, route, msg); + } + + private void writeInt(int offset, uint value, byte[] bytes){ + bytes[offset] = (byte)(value >> 24 & 0xff); + bytes[offset + 1] = (byte)(value >> 16 & 0xff); + bytes[offset + 2] = (byte)(value >> 8 & 0xff); + bytes[offset + 3] = (byte)(value & 0xff); + } + + private void writeShort(int offset, ushort value, byte[] bytes){ + bytes[offset] = (byte)(value >> 8 & 0xff); + bytes[offset + 1] = (byte)(value & 0xff); + } + + private ushort readShort(int offset, byte[] bytes){ + ushort result = 0; + + result += (ushort)(bytes[offset] << 8); + result += (ushort)(bytes[offset + 1]); + + return result; + } + + private int byteLength(string msg){ + return Encoding.UTF8.GetBytes(msg).Length; + } + + private void writeBytes(byte [] source, int offset, byte [] target){ + for(int i = 0; i < source.Length; i++){ + target[offset + i] = source[i]; + } + } + } +} + diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/MessageProtocol.cs.meta b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/MessageProtocol.cs.meta new file mode 100644 index 0000000..029b15b --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/MessageProtocol.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d90a9a9293fd4db4da32ccb67869877f +timeCreated: 1462854654 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/MessageType.cs b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/MessageType.cs new file mode 100644 index 0000000..d0a086d --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/MessageType.cs @@ -0,0 +1,15 @@ +using System; + +namespace Pomelo.DotNetClient +{ + public enum MessageType + { + MSG_REQUEST = 0, + MSG_NOTIFY = 1, + MSG_RESPONSE = 2, + MSG_PUSH = 3, + + MSG_LOCAL_CALLBACK = 999, + } +} + diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/MessageType.cs.meta b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/MessageType.cs.meta new file mode 100644 index 0000000..d6e84a1 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/MessageType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 77ee11c2f92974f41be0ffd40994ae5b +timeCreated: 1462854654 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/Package.cs b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/Package.cs new file mode 100644 index 0000000..5be9235 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/Package.cs @@ -0,0 +1,19 @@ +using System; + +namespace Pomelo.DotNetClient +{ + public class Package + { + public PackageType type; + public int length; + public byte[] body; + + public Package(PackageType type, byte[] body) + { + this.type = type; + this.length = body.Length; + this.body = body; + } + } +} + diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/Package.cs.meta b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/Package.cs.meta new file mode 100644 index 0000000..28832e5 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/Package.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ff0eb600f52970d428e7298727e2e030 +timeCreated: 1462854656 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/PackageProtocol.cs b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/PackageProtocol.cs new file mode 100644 index 0000000..12c0ea6 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/PackageProtocol.cs @@ -0,0 +1,48 @@ +using System; + +namespace Pomelo.DotNetClient +{ + public class PackageProtocol + { + public const int HEADER_LENGTH = 4; + + public static byte[] encode(PackageType type){ + return new byte[] { Convert.ToByte(type), 0, 0, 0 }; + } + + public static byte[] encode(PackageType type, byte[] body){ + int length = HEADER_LENGTH; + + if (body != null) length += body.Length; + + byte[] buf = new byte[length]; + + int index = 0; + + buf[index++] = Convert.ToByte(type); + buf[index++] = Convert.ToByte(body.Length >> 16 & 0xFF); + buf[index++] = Convert.ToByte(body.Length >> 8 & 0xFF); + buf[index++] = Convert.ToByte(body.Length & 0xFF); + + while(index < length) { + buf[index] = body[index - HEADER_LENGTH]; + index++; + } + + return buf; + } + + public static Package decode(byte[] buf){ + PackageType type = (PackageType)buf[0]; + + byte[] body = new byte[buf.Length - HEADER_LENGTH]; + + for(int i = 0; i < body.Length; i++) { + body[i] = buf[i + HEADER_LENGTH]; + } + + return new Package(type, body); + } + } +} + diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/PackageProtocol.cs.meta b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/PackageProtocol.cs.meta new file mode 100644 index 0000000..f93710b --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/PackageProtocol.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7f0090b39122231478801f62b231e80e +timeCreated: 1462854654 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/PackageTypes.cs b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/PackageTypes.cs new file mode 100644 index 0000000..923655e --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/PackageTypes.cs @@ -0,0 +1,14 @@ +using System; + +namespace Pomelo.DotNetClient +{ + public enum PackageType + { + PKG_HANDSHAKE = 1, + PKG_HANDSHAKE_ACK = 2, + PKG_HEARTBEAT = 3, + PKG_DATA = 4, + PKG_KICK = 5 + } +} + diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/PackageTypes.cs.meta b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/PackageTypes.cs.meta new file mode 100644 index 0000000..c4d6e14 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/PackageTypes.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c9a6ba5d7dc107247a6e065661d77c40 +timeCreated: 1462854654 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/Protocol.cs b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/Protocol.cs new file mode 100644 index 0000000..59b0a41 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/Protocol.cs @@ -0,0 +1,268 @@ +using System; +using LitJson; +using System.Text; +using UnityEngine; +using System.Net.Sockets; + +namespace Pomelo.DotNetClient +{ + public class Protocol + { + private ITransporter transporter; + private MessageProtocol messageProtocol; + private ProtocolState state; + + private HandShakeService handshake; + private HeartBeatService heartBeatService = null; + + private event Action messageProcessor; + private event Action onProtocolClose; + + + public string HandShakeCache{ get; set; } + + public string getDictVersion() + { + if(messageProtocol != null) + { + return messageProtocol.dictVersion; + } + + return ""; + } + + public string getProtoVersion() + { + if (messageProtocol != null) + { + return messageProtocol.protoVersion; + } + + return ""; + } + + + + public Protocol(ITransporter transproter, Action messageProcessor, Action onProtoClose) + { + + this.transporter = transproter; + this.transporter.onReceive(this.processMessage); + this.onProtocolClose += onProtoClose; + this.messageProcessor += messageProcessor; + + this.handshake = new HandShakeService(this); + this.state = ProtocolState.ready; + + } + + public void start(JsonData user, Action callback){ + this.transporter.receive(); + this.handshake.request(user, callback); + + this.state = ProtocolState.handshaking; + } + + //Send notify, do not need id + public void send(string route, JsonData msg){ + send(route, 0, msg); + } + + //Send request, user request id + public void send(string route, uint id, JsonData msg){ + if (this.state != ProtocolState.working) return; + + byte[] body = messageProtocol.encode(route, id, msg); + + send(PackageType.PKG_DATA, body); + } + + public void send(PackageType type){ + if (this.state == ProtocolState.closed) return; + transporter.send(PackageProtocol.encode(type)); + } + + //Send system message, these message do not use messageProtocol + public void send(PackageType type, JsonData msg){ + //This method only used to send system package + if (type == PackageType.PKG_DATA) return; + + byte[] body = Encoding.UTF8.GetBytes(msg.ToString()); + + send(type, body); + } + + //Send message use the transporter + public void send(PackageType type, byte[] body){ + if (this.state == ProtocolState.closed) return; + + byte[] pkg = PackageProtocol.encode(type, body); + + transporter.send(pkg); + } + + //Invoke by Transporter, process the message + void processMessage(byte[] bytes){ + Package pkg = PackageProtocol.decode(bytes); + + //Ignore all the message except handshading at handshake stage + if (pkg.type == PackageType.PKG_HANDSHAKE && this.state == ProtocolState.handshaking) { + + //Ignore all the message except handshading + JsonData data = LitJson.JsonMapper.ToObject(Encoding.UTF8.GetString(pkg.body)); + + processHandshakeData(data); + + this.state = ProtocolState.working; + + } + else if (pkg.type == PackageType.PKG_HEARTBEAT && this.state == ProtocolState.working){ + this.heartBeatService.resetTimeout(); + } + else if (pkg.type == PackageType.PKG_DATA && this.state == ProtocolState.working) { + this.heartBeatService.resetTimeout(); + if(messageProcessor != null) + { + messageProcessor(messageProtocol.decode(pkg.body)); + } + } + else if (pkg.type == PackageType.PKG_KICK) { + this.close(); + } + } + + public void InitProtoCache(string data) + { + JsonData handshake = JsonMapper.ToObject(data); + this.InitProtoCache(handshake); + } + + private void InitProtoCache(JsonData sys) + { + JsonData dict = new JsonData(); + //JsonData routeToCode = new JsonData(); + //JsonData codeToRoute = new JsonData(); + if (sys.ContainsKey("dict")) dict = (JsonData)sys["dict"]; + //if (sys.ContainsKey("routeToCode")) routeToCode = (JsonData)sys["routeToCode"]; + //if (sys.ContainsKey("codeToRoute")) codeToRoute = (JsonData)sys["codeToRoute"]; + + + string dictVersion = ""; + if (sys.ContainsKey("dictVersion")) dictVersion = sys["dictVersion"].ToString(); + + JsonData protos = new JsonData(); + JsonData serverProtos = new JsonData(); + JsonData clientProtos = new JsonData(); + + string protoVersion = ""; + + if (sys.ContainsKey("protos")) + { + protos = (JsonData)sys["protos"]; + serverProtos = (JsonData)protos["server"]; + clientProtos = (JsonData)protos["client"]; + if (protos.ContainsKey("version")) protoVersion = protos["version"].ToString(); + } + + if(messageProtocol != null) + { + if ((dictVersion != "" && messageProtocol.dictVersion != dictVersion) + || (protoVersion != "" && messageProtocol.protoVersion != protoVersion)) + { + //update cache + JsonData sysNew = JsonMapper.ToObject(this.HandShakeCache); + if(sys.ContainsKey("dict")) + { + sysNew["dict"] = new JsonData(); + sysNew["dict"] = sys["dict"]; + } + if (sys.ContainsKey("dictVersion")) + { + sysNew["dictVersion"] = sys["dictVersion"]; + } + if (sys.ContainsKey("protos")) + { + sysNew["protos"] = new JsonData(); + sysNew["protos"] = sys["protos"]; + } + this.HandShakeCache = sysNew.ToJson(); + this.messageProtocol = null; + this.InitProtoCache(this.HandShakeCache); + + //MessageProtocol messageProtocolNew = new MessageProtocol(dict, serverProtos, clientProtos, dictVersion, protoVersion); + + //if (dictVersion == "" && !sys.ContainsKey("dict")) + //{ + // messageProtocolNew.dict = messageProtocol.dict; + // messageProtocolNew.abbrs = messageProtocol.abbrs; + // messageProtocolNew.dictVersion = messageProtocol.dictVersion; + //} + + //if(protoVersion == "" && !sys.ContainsKey("protos")) + //{ + // messageProtocolNew.encodeProtos = messageProtocol.encodeProtos; + // messageProtocolNew.decodeProtos = messageProtocol.decodeProtos; + + // messageProtocolNew.protoVersion = messageProtocol.protoVersion; + //} + + //messageProtocol = messageProtocolNew; + } + } + else + { + messageProtocol = new MessageProtocol(dict, serverProtos, clientProtos, dictVersion, protoVersion); + this.HandShakeCache = sys.ToJson(); + } + + } + + + + private void processHandshakeData(JsonData msg){ + //Handshake error + if(!msg.ContainsKey("code") || !msg.ContainsKey("sys") || Convert.ToInt32(msg["code"].ToString()) != 200){ + throw new Exception("Handshake error! Please check your handshake config."); + } + //Debug.Log(msg.ToJson()); + + //Set compress data + JsonData sys = (JsonData)msg["sys"]; + + + //Init heartbeat service + int interval = 0; + if (sys.ContainsKey("heartbeat")) interval = Convert.ToInt32(sys["heartbeat"].ToString()); + heartBeatService = new HeartBeatService(interval, this); + + if (interval > 0) + { + heartBeatService.start(); + } + + this.InitProtoCache(sys); + + //send ack and change protocol state + handshake.ack(); + this.state = ProtocolState.working; + + //Invoke handshake callback + JsonData user = new JsonData(); + if(msg.ContainsKey("user")) user = (JsonData)msg["user"]; + handshake.invokeCallback(user); + } + + public void close(){ + + if (heartBeatService != null) heartBeatService.stop(); + + this.state = ProtocolState.closed; + + if(onProtocolClose != null) + { + onProtocolClose(); + } + } + } +} + diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/Protocol.cs.meta b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/Protocol.cs.meta new file mode 100644 index 0000000..9fc4c05 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/Protocol.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1c4c6289075b979499ad846b9856d350 +timeCreated: 1465374469 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/ProtocolState.cs b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/ProtocolState.cs new file mode 100644 index 0000000..dc7bcef --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/ProtocolState.cs @@ -0,0 +1,23 @@ +using System; +using System.ComponentModel; + +namespace Pomelo.DotNetClient +{ + public enum ClientProtocolType + { + [Description("normal")] + NORMAL, + + [Description("TLS")] + TLS + } + + public enum ProtocolState + { + ready = 1, // Just open, need to send handshaking + handshaking = 2, // on handshaking process + working = 3, // can receive and send data + closed = 4, // on read body + } +} + diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/ProtocolState.cs.meta b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/ProtocolState.cs.meta new file mode 100644 index 0000000..3035ec1 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/protocol/ProtocolState.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e6ee9fa6f1101244ab276dea1094a113 +timeCreated: 1462854654 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/transport.meta b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/transport.meta new file mode 100644 index 0000000..ce378dc --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/transport.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: c5c7a87d7b88c5e4f9e1fa524557140b +folderAsset: yes +timeCreated: 1462854654 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/transport/ITransporter.cs b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/transport/ITransporter.cs new file mode 100644 index 0000000..60d3b0c --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/transport/ITransporter.cs @@ -0,0 +1,16 @@ +using System; + + +namespace Pomelo.DotNetClient +{ + public interface ITransporter + { + void receive(); + void send(byte[] buffer); + void onReceive(Action messageProcessor); + void close(); + void Connect(System.Net.IPEndPoint ep, int nTimeout = 5000); + void setOnStateChanged(Action cb); + NetWorkState NetworkState(); + } +} \ No newline at end of file diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/transport/ITransporter.cs.meta b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/transport/ITransporter.cs.meta new file mode 100644 index 0000000..24e8310 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/transport/ITransporter.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d1f1072bb3518754e8cf69ccc2569b90 +timeCreated: 1464142004 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/transport/TransportState.cs b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/transport/TransportState.cs new file mode 100644 index 0000000..24eacae --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/transport/TransportState.cs @@ -0,0 +1,18 @@ +using System; + +namespace Pomelo.DotNetClient +{ + class StateObject + { + public const int BufferSize = 1024; + internal byte[] buffer = new byte[BufferSize]; + } + + public enum TransportState + { + readHead = 1, // on read head + readBody = 2, // on read body + closed = 3 // connection closed, will ignore all the message and wait for clean up + } +} + diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/transport/TransportState.cs.meta b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/transport/TransportState.cs.meta new file mode 100644 index 0000000..a6d3d88 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/transport/TransportState.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: df733a8cd0355d64c8e4ff3bd24d0c25 +timeCreated: 1462854654 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/transport/TransporterSSL.cs b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/transport/TransporterSSL.cs new file mode 100644 index 0000000..75fbdd3 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/transport/TransporterSSL.cs @@ -0,0 +1,297 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Net.Security; +using System.Net.Sockets; +using System.Security.Authentication; +using System.Security.Cryptography.X509Certificates; +using System.Text; +using UnityEngine; + +namespace Pomelo.DotNetClient +{ + class TransporterSSL : TransporterTCP + { + private SslStream sslstream; + private byte[] clientcert = null; + private string clientpwd = ""; + private static List ca_thumbprints = new List(); + private static List target_hosts = new List(); + private string target_host; + + private bool tryAuthed = false; + private bool authed = false; + private NetworkStream tcpStream; + + public static void clearCAThumbprintList() + { + ca_thumbprints.Clear(); + } + + public bool ValidateServerCertificate( + object sender, + X509Certificate certificate, + X509Chain chain, + SslPolicyErrors sslPolicyErrors) + { + if (sslPolicyErrors == SslPolicyErrors.None) + { + authed = true; + return true; + } + + if (chain.ChainElements.Count < 1) + { + Debug.LogError("certificate failed. empty chain!"); + authed = false; + return false; + } + + //check cert validity + bool cert_is_ok = false; + X509Certificate2 root = chain.ChainElements[chain.ChainElements.Count - 1].Certificate; + for (int i = 0; i < ca_thumbprints.Count; ++i) + { + if (root.Thumbprint == ca_thumbprints[i]) + { + cert_is_ok = true; + break; + } + } + if (!cert_is_ok) + { + Debug.LogError("certificate failed. unknown cert printer: " + root.Thumbprint); + authed = false; + return false; + } + + cert_is_ok = false; + //check host + for (int i = 0; i < target_hosts.Count; ++i) + { + if (root.Subject.Contains("CN=" + target_hosts[i])) + { + cert_is_ok = true; + break; + } + } + if (!cert_is_ok) + { + Debug.LogError("certificate failed. mismatch host: " + root.Subject); + authed = false; + return false; + } + authed = true; + return true; + //Console.WriteLine("{0}", root.Thumbprint); + //// Do not allow this client to communicate with unauthenticated servers. + //X509Chain customChain = new X509Chain + //{ + // ChainPolicy = { + // VerificationFlags = X509VerificationFlags.AllowUnknownCertificateAuthority + // } + //}; + //Boolean retValue = customChain.Build(chain.ChainElements[0].Certificate); + //chain.Reset(); + //return retValue; + } + public TransporterSSL(byte[] clientcert = null, string clientpwd = "", string cathumbprint = null) + { + this.sslstream = null; + + + ca_thumbprints.Add(cathumbprint); + this.clientcert = clientcert; + this.clientpwd = clientpwd; + } + + public override void Connect(IPEndPoint ep, int nTimeout = 8000) + { + target_hosts.Add(ep.Address.ToString()); + this.target_host = ep.Address.ToString(); + base.Connect(ep, nTimeout); + } + + protected override void OnConnected(IAsyncResult result) + { + try + { + this.socket.EndConnect(result); + tcpStream = new NetworkStream(socket); + + + this.sslstream = new SslStream( + tcpStream, + false, + new RemoteCertificateValidationCallback(ValidateServerCertificate), + null + ); + + + NetWorkChanged(NetWorkState.CONNECTED); + } + catch (SocketException e) + { + if (netWorkState != NetWorkState.TIMEOUT) + { + NetWorkChanged(NetWorkState.ERROR); + } + + Debug.Log(e); + } + finally + { + this.CheckTimeOutEvent(); + } + + } + + bool authorized() + { + if (null == sslstream) + { + return false; + } + + if (tryAuthed == false) + { + try + { + if (this.clientcert != null) + { + X509CertificateCollection certs = new X509CertificateCollection(); + X509Certificate2 cert = new X509Certificate2(this.clientcert, this.clientpwd); + certs.Add(cert); + sslstream.AuthenticateAsClient(this.target_host, certs, SslProtocols.Tls, true); + } + else + { + sslstream.AuthenticateAsClient(this.target_host); + } + + // return true; + } + catch (AuthenticationException e) + { + Console.WriteLine("Exception: {0}", e.Message); + if (e.InnerException != null) + { + Console.WriteLine("Inner exception: {0}", e.InnerException.Message); + } + Console.WriteLine("Authentication failed - closing the connection."); + sslstream.Close(); + this.close(); + } + finally + { + tryAuthed = true; + } + } + + + + return authed; + } + + public override void receive() + { + if (!this.authorized()) + { + return; + } + this._receive(); + } + + private void _receive() + { + //Console.WriteLine("receive state : {0}, {1}", this.transportState, socket.Available); + try + { + this.asyncReceive = sslstream.BeginRead(stateObject.buffer, 0, stateObject.buffer.Length, new AsyncCallback(endReceive), stateObject); + } + catch (Exception e) + { + + Debug.Log(e); + + this.close(); + } + } + + protected override void endReceive(IAsyncResult asyncReceive) + { + StateObject state = (StateObject)asyncReceive.AsyncState; + + + try + { + int length = sslstream.EndRead(asyncReceive); + if (length > 0) + { + processBytes(state.buffer, 0, length); + + //Receive next message + if (this.transportState != TransportState.closed) receive(); + } + else + { + this.close(); + } + + } + catch (SocketException e) + { + Debug.Log(e); + + this.close(); + } + } + + public override void send(byte[] buffer) + { + if (this.transportState != TransportState.closed) + { + try + { + this.asyncSend = sslstream.BeginWrite(buffer, 0, buffer.Length, new AsyncCallback(sendCallback), stateObject); + } + catch (Exception e) + { + Debug.Log(e); + this.close(); + } + } + } + + protected override void sendCallback(IAsyncResult asyncSend) + { + try + { + sslstream.EndWrite(asyncSend); + } + catch (Exception e) + { + Debug.Log(e); + } + } + + public override void close() + { + if (this.sslstream != null) + { + this.sslstream.Close(); + this.sslstream = null; + } + + if(this.tcpStream != null) + { + this.tcpStream.Close(); + this.tcpStream = null; + } + + base.close(); + } + + } +} diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/transport/TransporterSSL.cs.meta b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/transport/TransporterSSL.cs.meta new file mode 100644 index 0000000..3bf9f20 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/transport/TransporterSSL.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0c3f5e70eb36bfc40b47a8dac855de51 +timeCreated: 1465374469 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/transport/TransporterTCP.cs b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/transport/TransporterTCP.cs new file mode 100644 index 0000000..d154bbb --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/transport/TransporterTCP.cs @@ -0,0 +1,294 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Net.Sockets; +using System.Text; +using System.Threading; +using System.Timers; +using UnityEngine; + +namespace Pomelo.DotNetClient +{ + class TransporterTCP : ITransporter + { + public const int HeadLength = 4; + + protected NetWorkState netWorkState = NetWorkState.CLOSED; //current network state + protected Socket socket; + protected event Action networkEventCB; + protected event Action messageProcesserCB; + + + protected int timeoutMSec = 8000; + + + protected StateObject stateObject = new StateObject(); + protected IAsyncResult asyncReceive; + protected IAsyncResult asyncSend; + protected IAsyncResult asyncConnect; + + protected TransportState transportState; + protected byte[] headBuffer = new byte[4]; + protected byte[] buffer; + protected int bufferOffset = 0; + protected int pkgLength = 0; + + private System.Timers.Timer timer; + + public TransporterTCP() + { + this.socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); + this.transportState = TransportState.readHead; + } + + protected void NetWorkChanged(NetWorkState state) + { + if (netWorkState != state) + { + netWorkState = state; + + if (networkEventCB != null) + { + networkEventCB(); + } + } + } + public virtual void close() + { + this.transportState = TransportState.closed; + + if (this.socket != null) + { + if (this.socket.Connected) + { + this.socket.Shutdown(SocketShutdown.Both); + } + + this.socket.Close(); + this.socket = null; + } + + NetWorkChanged(NetWorkState.CLOSED); + } + + protected void CheckTimeOutEvent() + { + timer.Stop(); + timer.Enabled = false; + timer.Dispose(); + timer = null; + + if (netWorkState != NetWorkState.CONNECTED && netWorkState != NetWorkState.ERROR) + { + NetWorkChanged(NetWorkState.TIMEOUT); + } + + if (netWorkState == NetWorkState.ERROR) + { + + } + } + + public virtual void Connect(IPEndPoint ep, int nTimeout) + { + Debug.Log("Transport connect " + ep.Address.ToString() + " with timeout:"+nTimeout); + if (nTimeout != 0) + { + timeoutMSec = nTimeout; + } + + this.timer = new System.Timers.Timer(); + timer.Interval = timeoutMSec; + timer.Elapsed += new ElapsedEventHandler(ConnectTimeout); + timer.Enabled = true; + + asyncConnect = socket.BeginConnect(ep, new AsyncCallback(OnConnected), this.socket); + + } + + virtual protected void OnConnected(IAsyncResult result) + { + try + { + this.socket.EndConnect(result); + NetWorkChanged(NetWorkState.CONNECTED); + } + catch (SocketException e) + { + if (netWorkState != NetWorkState.TIMEOUT) + { + NetWorkChanged(NetWorkState.ERROR); + } + + Debug.Log(e); + } + finally + { + this.CheckTimeOutEvent(); + } + } + + public void ConnectTimeout(object source, ElapsedEventArgs e) + { + Debug.Log("ConnectTimeout"); + this.CheckTimeOutEvent(); + } + + public NetWorkState NetworkState() + { + return netWorkState; + } + protected bool readHead(byte[] bytes, int offset, int limit) + { + int length = limit - offset; + int headNum = HeadLength - bufferOffset; + + if (length >= headNum) + { + //Write head buffer + writeBytes(bytes, offset, headNum, bufferOffset, headBuffer); + //Get package length + pkgLength = (headBuffer[1] << 16) + (headBuffer[2] << 8) + headBuffer[3]; + + //Init message buffer + buffer = new byte[HeadLength + pkgLength]; + writeBytes(headBuffer, 0, HeadLength, buffer); + offset += headNum; + bufferOffset = HeadLength; + this.transportState = TransportState.readBody; + + if (offset <= limit) processBytes(bytes, offset, limit); + return true; + } + else + { + writeBytes(bytes, offset, length, bufferOffset, headBuffer); + bufferOffset += length; + return false; + } + } + protected void readBody(byte[] bytes, int offset, int limit) + { + int length = pkgLength + HeadLength - bufferOffset; + if ((offset + length) <= limit) + { + writeBytes(bytes, offset, length, bufferOffset, buffer); + offset += length; + + //Invoke the protocol api to handle the message + this.messageProcesserCB.Invoke(buffer); + this.bufferOffset = 0; + this.pkgLength = 0; + + if (this.transportState != TransportState.closed) + this.transportState = TransportState.readHead; + if (offset < limit) + processBytes(bytes, offset, limit); + } + else + { + writeBytes(bytes, offset, limit - offset, bufferOffset, buffer); + bufferOffset += limit - offset; + this.transportState = TransportState.readBody; + } + } + protected void writeBytes(byte[] source, int start, int length, byte[] target) + { + writeBytes(source, start, length, 0, target); + } + protected void writeBytes(byte[] source, int start, int length, int offset, byte[] target) + { + for (int i = 0; i < length; i++) + { + target[offset + i] = source[start + i]; + } + } + protected void processBytes(byte[] bytes, int offset, int limit) + { + if (this.transportState == TransportState.readHead) + { + readHead(bytes, offset, limit); + } + else if (this.transportState == TransportState.readBody) + { + readBody(bytes, offset, limit); + } + } + protected virtual void endReceive(IAsyncResult asyncReceive) + { + StateObject state = (StateObject)asyncReceive.AsyncState; + Socket socket = this.socket; + + try + { + int length = socket.EndReceive(asyncReceive); + if (length > 0) + { + processBytes(state.buffer, 0, length); + + //Receive next message + if (this.transportState != TransportState.closed) receive(); + } + else + { + this.close(); + } + + } + catch (SocketException e) + { + Debug.Log(e); + + this.close(); + } + } + public virtual void receive() + { + try + { + this.asyncReceive = socket.BeginReceive(stateObject.buffer, 0, stateObject.buffer.Length, SocketFlags.None, new AsyncCallback(endReceive), stateObject); + } + catch (Exception e) + { + Debug.Log(e); + this.close(); + } + } + public virtual void send(byte[] buffer) + { + if (this.transportState != TransportState.closed) + { + try + { + this.asyncSend = socket.BeginSend(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(sendCallback), socket); + } + catch (Exception e) + { + Debug.Log(e); + this.close(); + } + } + } + protected virtual void sendCallback(IAsyncResult asyncSend) + { + try + { + socket.EndSend(asyncSend); + } + catch (Exception e) + { + Debug.Log(e); + } + } + + public void setOnStateChanged(Action cb) + { + networkEventCB += cb; + } + public void onReceive(Action messageProcessor) + { + this.messageProcesserCB += messageProcessor; + } + } +} diff --git a/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/transport/TransporterTCP.cs.meta b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/transport/TransporterTCP.cs.meta new file mode 100644 index 0000000..50d15b8 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomelo-dotnetclient/transport/TransporterTCP.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a032a8d5dd6f82f42bb6ad4dec9e6c06 +timeCreated: 1465374469 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/pomeloBehaviour.cs b/client_unity/Assets/scripts/pomelo/pomeloBehaviour.cs new file mode 100644 index 0000000..3ae62b8 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomeloBehaviour.cs @@ -0,0 +1,126 @@ +using UnityEngine; +using System.Collections; + +using Pomelo.DotNetClient; +using LitJson; +using System; +using System.Threading; +using System.Collections.Generic; +using System.IO; + +using Proto; +using Proto.gate; +using Proto.connector; +using Proto.chat; + + +public class pomeloBehaviour : MonoBehaviour +{ + + [HideInInspector] + public PomeloClient pc; + + public event Action connectEvent; + public event Action closeEvent; + public event Action updateClientEvent; + + // Use this for initialization + void Start() + { + + } + + [ExecuteInEditMode] + void OnDestroy() + { + CloseClient(); + } + + // Update is called once per frame + void Update() + { + if (pc != null) + { + pc.poll(); + } + } + + public void CloseClient() + { + if (pc != null) + { + pc.close(); + //pc.poll(); + if (this.closeEvent != null) + { + this.closeEvent(); + } + pc = null; + + this.UpdateClient(); + } + } + + public string GetHandShakeCache() + { + if(pc != null) + { + return pc.HandShakeCache; + } + return ""; + } + + //TODO TLS "C7773B9D1BF0C5C956C88C60440FA23C3889A403" + public bool ConnectServer(string host, int port, + ClientProtocolType eProtoType = ClientProtocolType.NORMAL, + string HandShakeCache = "", + byte[] clientcert = null, string clientpwd = "", string cathumbprint = null) + { + //if (eProtoType == ClientProtocolType.TLS) + //{ + // if (clientcert == null || cathumbprint == null) + // { + // return false; + // } + //} + + //this.CloseClient(); + pc = new PomeloClient(eProtoType, clientcert, "", cathumbprint); + pc.Connect(host, port, HandShakeCache, delegate () + { + if (pc.IsConnected) + { + this.UpdateClient(); + pc.HandShake(null, delegate (JsonData data) + { + if (this.connectEvent != null) + { + this.connectEvent(); + } + }); + } + }, + delegate () + { + if (this.closeEvent != null) + { + this.closeEvent(); + } + + } + ); + + return true; + } + + + private void UpdateClient() + { + if (this.updateClientEvent != null) + { + this.updateClientEvent(); + } + } + + +} diff --git a/client_unity/Assets/scripts/pomelo/pomeloBehaviour.cs.meta b/client_unity/Assets/scripts/pomelo/pomeloBehaviour.cs.meta new file mode 100644 index 0000000..cc5bbd7 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/pomeloBehaviour.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a25f4e11c54f9834d9e3a8668fc3dd4e +timeCreated: 1464155602 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/LICENSE b/client_unity/LICENSE new file mode 100644 index 0000000..817767f --- /dev/null +++ b/client_unity/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016 2012-2016 NetDragon Websoft Inc. flamefox and other contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/client_unity/ProjectSettings/AudioManager.asset b/client_unity/ProjectSettings/AudioManager.asset new file mode 100644 index 0000000..faf901c --- /dev/null +++ b/client_unity/ProjectSettings/AudioManager.asset @@ -0,0 +1,15 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!11 &1 +AudioManager: + m_ObjectHideFlags: 0 + m_Volume: 1 + Rolloff Scale: 1 + Doppler Factor: 1 + Default Speaker Mode: 2 + m_SampleRate: 0 + m_DSPBufferSize: 0 + m_VirtualVoiceCount: 512 + m_RealVoiceCount: 32 + m_SpatializerPlugin: + m_DisableAudio: 0 diff --git a/client_unity/ProjectSettings/ClusterInputManager.asset b/client_unity/ProjectSettings/ClusterInputManager.asset new file mode 100644 index 0000000..e7886b2 --- /dev/null +++ b/client_unity/ProjectSettings/ClusterInputManager.asset @@ -0,0 +1,6 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!236 &1 +ClusterInputManager: + m_ObjectHideFlags: 0 + m_Inputs: [] diff --git a/client_unity/ProjectSettings/DynamicsManager.asset b/client_unity/ProjectSettings/DynamicsManager.asset new file mode 100644 index 0000000..3534236 --- /dev/null +++ b/client_unity/ProjectSettings/DynamicsManager.asset @@ -0,0 +1,15 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!55 &1 +PhysicsManager: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Gravity: {x: 0, y: -9.81, z: 0} + m_DefaultMaterial: {fileID: 0} + m_BounceThreshold: 2 + m_SleepThreshold: 0.005 + m_DefaultContactOffset: 0.01 + m_SolverIterationCount: 6 + m_QueriesHitTriggers: 1 + m_EnableAdaptiveForce: 0 + m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff diff --git a/client_unity/ProjectSettings/EditorBuildSettings.asset b/client_unity/ProjectSettings/EditorBuildSettings.asset new file mode 100644 index 0000000..c8e4e4a --- /dev/null +++ b/client_unity/ProjectSettings/EditorBuildSettings.asset @@ -0,0 +1,9 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1045 &1 +EditorBuildSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Scenes: + - enabled: 0 + path: Assets/scenes/chat.unity diff --git a/client_unity/ProjectSettings/EditorSettings.asset b/client_unity/ProjectSettings/EditorSettings.asset new file mode 100644 index 0000000..7726ac9 --- /dev/null +++ b/client_unity/ProjectSettings/EditorSettings.asset @@ -0,0 +1,15 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!159 &1 +EditorSettings: + m_ObjectHideFlags: 0 + serializedVersion: 3 + m_ExternalVersionControlSupport: Hidden Meta Files + m_SerializationMode: 2 + m_WebSecurityEmulationEnabled: 0 + m_WebSecurityEmulationHostUrl: http://www.mydomain.com/mygame.unity3d + m_DefaultBehaviorMode: 0 + m_SpritePackerMode: 2 + m_SpritePackerPaddingPower: 1 + m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd + m_ProjectGenerationRootNamespace: diff --git a/client_unity/ProjectSettings/GraphicsSettings.asset b/client_unity/ProjectSettings/GraphicsSettings.asset new file mode 100644 index 0000000..06dbecc --- /dev/null +++ b/client_unity/ProjectSettings/GraphicsSettings.asset @@ -0,0 +1,64 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!30 &1 +GraphicsSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Deferred: + m_Mode: 1 + m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} + m_DeferredReflections: + m_Mode: 1 + m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} + m_ScreenSpaceShadows: + m_Mode: 1 + m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} + m_LegacyDeferred: + m_Mode: 1 + m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} + m_DepthNormals: + m_Mode: 1 + m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} + m_MotionVectors: + m_Mode: 1 + m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} + m_LightHalo: + m_Mode: 1 + m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} + m_LensFlare: + m_Mode: 1 + m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} + m_AlwaysIncludedShaders: + - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 10782, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 16000, guid: 0000000000000000f000000000000000, type: 0} + m_PreloadedShaders: [] + m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, + type: 0} + m_TierSettings_Tier1: + renderingPath: 1 + useCascadedShadowMaps: 1 + m_TierSettings_Tier2: + renderingPath: 1 + useCascadedShadowMaps: 1 + m_TierSettings_Tier3: + renderingPath: 1 + useCascadedShadowMaps: 1 + m_DefaultRenderingPath: 1 + m_DefaultMobileRenderingPath: 1 + m_TierSettings: [] + m_LightmapStripping: 0 + m_FogStripping: 0 + m_LightmapKeepPlain: 1 + m_LightmapKeepDirCombined: 1 + m_LightmapKeepDirSeparate: 1 + m_LightmapKeepDynamicPlain: 1 + m_LightmapKeepDynamicDirCombined: 1 + m_LightmapKeepDynamicDirSeparate: 1 + m_FogKeepLinear: 1 + m_FogKeepExp: 1 + m_FogKeepExp2: 1 diff --git a/client_unity/ProjectSettings/InputManager.asset b/client_unity/ProjectSettings/InputManager.asset new file mode 100644 index 0000000..9e606dc --- /dev/null +++ b/client_unity/ProjectSettings/InputManager.asset @@ -0,0 +1,295 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!13 &1 +InputManager: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Axes: + - serializedVersion: 3 + m_Name: Horizontal + descriptiveName: + descriptiveNegativeName: + negativeButton: left + positiveButton: right + altNegativeButton: a + altPositiveButton: d + gravity: 3 + dead: 0.001 + sensitivity: 3 + snap: 1 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Vertical + descriptiveName: + descriptiveNegativeName: + negativeButton: down + positiveButton: up + altNegativeButton: s + altPositiveButton: w + gravity: 3 + dead: 0.001 + sensitivity: 3 + snap: 1 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire1 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left ctrl + altNegativeButton: + altPositiveButton: mouse 0 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire2 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left alt + altNegativeButton: + altPositiveButton: mouse 1 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire3 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left cmd + altNegativeButton: + altPositiveButton: mouse 2 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Jump + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: space + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Mouse X + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 1 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Mouse Y + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 1 + axis: 1 + joyNum: 0 + - serializedVersion: 3 + m_Name: Mouse ScrollWheel + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 1 + axis: 2 + joyNum: 0 + - serializedVersion: 3 + m_Name: Horizontal + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.19 + sensitivity: 1 + snap: 0 + invert: 0 + type: 2 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Vertical + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.19 + sensitivity: 1 + snap: 0 + invert: 1 + type: 2 + axis: 1 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire1 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 0 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire2 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 1 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire3 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 2 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Jump + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 3 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Submit + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: return + altNegativeButton: + altPositiveButton: joystick button 0 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Submit + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: enter + altNegativeButton: + altPositiveButton: space + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Cancel + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: escape + altNegativeButton: + altPositiveButton: joystick button 1 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 diff --git a/client_unity/ProjectSettings/NavMeshAreas.asset b/client_unity/ProjectSettings/NavMeshAreas.asset new file mode 100644 index 0000000..a04f35c --- /dev/null +++ b/client_unity/ProjectSettings/NavMeshAreas.asset @@ -0,0 +1,71 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!126 &1 +NavMeshAreas: + m_ObjectHideFlags: 0 + serializedVersion: 2 + areas: + - name: Walkable + cost: 1 + - name: Not Walkable + cost: 1 + - name: Jump + cost: 2 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 diff --git a/client_unity/ProjectSettings/NavMeshLayers.asset b/client_unity/ProjectSettings/NavMeshLayers.asset new file mode 100644 index 0000000000000000000000000000000000000000..0f38d2f38dfe10227e7e66f067fd6a8039c7660d GIT binary patch literal 9196 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 literal 0 HcmV?d00001 diff --git a/client_unity/obj/Debug/Assembly-CSharp.dll.mdb b/client_unity/obj/Debug/Assembly-CSharp.dll.mdb new file mode 100644 index 0000000000000000000000000000000000000000..5f690592be0b937731f7541e191a46986508d3f5 GIT binary patch literal 44669 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 Date: Thu, 29 Jun 2017 15:37:37 +0800 Subject: [PATCH 19/84] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=88=B7=E6=96=B0token?= =?UTF-8?q?=E7=9A=84=E9=80=9A=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client_unity/Assets/scenes/Home.meta | 9 + client_unity/Assets/scenes/Home/Home.unity | 583 ++++++++++++++++++ .../Assets/scenes/Home/Home.unity.meta | 8 + .../Assets/scenes/Home/HomeController.cs | 21 + .../Assets/scenes/Home/HomeController.cs.meta | 12 + .../Assets/scenes/Login/LoginController.cs | 11 +- client_unity/Assets/scripts/model.meta | 9 + .../Assets/scripts/model/MUserInfo.cs | 19 + .../Assets/scripts/model/MUserInfo.cs.meta | 12 + .../Assets/scripts/pomelo/PomeloSingleton.cs | 74 ++- ...bly-CSharp.csproj.FilesWrittenAbsolute.txt | 21 + client_unity/obj/Debug/Assembly-CSharp.dll | Bin 99840 -> 101376 bytes .../obj/Debug/Assembly-CSharp.dll.mdb | Bin 44669 -> 46269 bytes game-server/app/game/UToken.js | 11 +- .../app/servers/gate/handler/gateHandler.js | 41 +- 15 files changed, 817 insertions(+), 14 deletions(-) create mode 100644 client_unity/Assets/scenes/Home.meta create mode 100644 client_unity/Assets/scenes/Home/Home.unity create mode 100644 client_unity/Assets/scenes/Home/Home.unity.meta create mode 100644 client_unity/Assets/scenes/Home/HomeController.cs create mode 100644 client_unity/Assets/scenes/Home/HomeController.cs.meta create mode 100644 client_unity/Assets/scripts/model.meta create mode 100644 client_unity/Assets/scripts/model/MUserInfo.cs create mode 100644 client_unity/Assets/scripts/model/MUserInfo.cs.meta diff --git a/client_unity/Assets/scenes/Home.meta b/client_unity/Assets/scenes/Home.meta new file mode 100644 index 0000000..824e860 --- /dev/null +++ b/client_unity/Assets/scenes/Home.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 3dbe1ca5030954cd98c5669b5a0d8380 +folderAsset: yes +timeCreated: 1498717300 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scenes/Home/Home.unity b/client_unity/Assets/scenes/Home/Home.unity new file mode 100644 index 0000000..fd67b32 --- /dev/null +++ b/client_unity/Assets/scenes/Home/Home.unity @@ -0,0 +1,583 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 7 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0.44657826, g: 0.49641263, b: 0.57481676, a: 1} +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 7 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_TemporalCoherenceThreshold: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 4 + m_Resolution: 2 + m_BakeResolution: 40 + m_TextureWidth: 1024 + m_TextureHeight: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_DirectLightInLightProbes: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_LightingDataAsset: {fileID: 0} + m_RuntimeCPUUsage: 25 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + accuratePlacement: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &430005132 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 430005135} + - component: {fileID: 430005134} + - component: {fileID: 430005133} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &430005133 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 430005132} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1077351063, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &430005134 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 430005132} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -619905303, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &430005135 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 430005132} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &523367798 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 523367800} + - component: {fileID: 523367799} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &523367799 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 523367798} + m_Enabled: 1 + serializedVersion: 7 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 4 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &523367800 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 523367798} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &733446617 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 733446622} + - component: {fileID: 733446621} + - component: {fileID: 733446620} + - component: {fileID: 733446619} + - component: {fileID: 733446618} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &733446618 +AudioListener: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 733446617} + m_Enabled: 1 +--- !u!124 &733446619 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 733446617} + m_Enabled: 1 +--- !u!92 &733446620 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 733446617} + m_Enabled: 1 +--- !u!20 &733446621 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 733446617} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 + m_StereoMirrorMode: 0 +--- !u!4 &733446622 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 733446617} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1576925400 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1576925404} + - component: {fileID: 1576925403} + - component: {fileID: 1576925402} + - component: {fileID: 1576925401} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1576925401 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1576925400} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1301386320, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1576925402 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1576925400} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 1 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 1334, y: 750} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &1576925403 +Canvas: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1576925400} + m_Enabled: 1 + serializedVersion: 2 + m_RenderMode: 1 + m_Camera: {fileID: 733446621} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1576925404 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1576925400} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 2117064928} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &2010971672 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 2010971673} + - component: {fileID: 2010971675} + - component: {fileID: 2010971674} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2010971673 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2010971672} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2117064928} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2010971674 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2010971672} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u725B\u725B" +--- !u!222 &2010971675 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2010971672} +--- !u!1 &2117064927 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 2117064928} + - component: {fileID: 2117064931} + - component: {fileID: 2117064930} + - component: {fileID: 2117064929} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2117064928 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2117064927} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2010971673} + m_Father: {fileID: 1576925404} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -240, y: -225} + m_SizeDelta: {x: 200, y: 60} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2117064929 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2117064927} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 2117064930} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &2117064930 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2117064927} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &2117064931 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2117064927} diff --git a/client_unity/Assets/scenes/Home/Home.unity.meta b/client_unity/Assets/scenes/Home/Home.unity.meta new file mode 100644 index 0000000..fc4a087 --- /dev/null +++ b/client_unity/Assets/scenes/Home/Home.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6370e16374f5f47e5952712aa9e65730 +timeCreated: 1498717311 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scenes/Home/HomeController.cs b/client_unity/Assets/scenes/Home/HomeController.cs new file mode 100644 index 0000000..7b304a4 --- /dev/null +++ b/client_unity/Assets/scenes/Home/HomeController.cs @@ -0,0 +1,21 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.SceneManagement; + +public class HomeController : MonoBehaviour { + + // Use this for initialization + void Start () { + + } + + // Update is called once per frame + void Update () { + PomeloSingleton.CreateInstance ().updatePerFrame (); + } + + public void playBrnn () { + PomeloSingleton pml = PomeloSingleton.CreateInstance (); + } +} diff --git a/client_unity/Assets/scenes/Home/HomeController.cs.meta b/client_unity/Assets/scenes/Home/HomeController.cs.meta new file mode 100644 index 0000000..750519a --- /dev/null +++ b/client_unity/Assets/scenes/Home/HomeController.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: fbb3b5dc787e041f98bd2117940a236a +timeCreated: 1498717569 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scenes/Login/LoginController.cs b/client_unity/Assets/scenes/Login/LoginController.cs index 8f3860b..cac5ae7 100644 --- a/client_unity/Assets/scenes/Login/LoginController.cs +++ b/client_unity/Assets/scenes/Login/LoginController.cs @@ -1,11 +1,18 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; +using UnityEngine.SceneManagement; public class LoginController : MonoBehaviour { void Start() { + PomeloSingleton pml = PomeloSingleton.CreateInstance (); + if (pml.getToken() == null) { + pml.refreshToken (delegate { + SceneManager.LoadScene("Home"); + }); + } } void Update() @@ -15,6 +22,8 @@ void Update() public void guestLogin() { PomeloSingleton pml = PomeloSingleton.CreateInstance (); - pml.connectGate (); + pml.guestLogin(delegate { + SceneManager.LoadScene("Home"); + }); } } diff --git a/client_unity/Assets/scripts/model.meta b/client_unity/Assets/scripts/model.meta new file mode 100644 index 0000000..4c01075 --- /dev/null +++ b/client_unity/Assets/scripts/model.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 01dd0e3dbb1e84c3989fde627d73c6ae +folderAsset: yes +timeCreated: 1498706993 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/model/MUserInfo.cs b/client_unity/Assets/scripts/model/MUserInfo.cs new file mode 100644 index 0000000..8d0966c --- /dev/null +++ b/client_unity/Assets/scripts/model/MUserInfo.cs @@ -0,0 +1,19 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class MUserInfo { + public int userid; + public string username; + public string usernick; + public string phone; + public string password; + public string create_time; + public int gold; + public int roomcard; + public int sex; + public string image; + public string roominfo; + + public MUserInfo () {} +} diff --git a/client_unity/Assets/scripts/model/MUserInfo.cs.meta b/client_unity/Assets/scripts/model/MUserInfo.cs.meta new file mode 100644 index 0000000..075c604 --- /dev/null +++ b/client_unity/Assets/scripts/model/MUserInfo.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 224d358e395de40e8946e3b81813beed +timeCreated: 1498707018 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/PomeloSingleton.cs b/client_unity/Assets/scripts/pomelo/PomeloSingleton.cs index 7a9032d..4b830c9 100644 --- a/client_unity/Assets/scripts/pomelo/PomeloSingleton.cs +++ b/client_unity/Assets/scripts/pomelo/PomeloSingleton.cs @@ -3,11 +3,17 @@ using UnityEngine; using Pomelo.DotNetClient; using LitJson; +using System; public class PomeloSingleton { PomeloClient pmlClient; + MUserInfo userinfoModel; + + string connectorHost; + int connectorPort; + private volatile static PomeloSingleton _instance = null; private static readonly object lockHelper = new object(); @@ -25,20 +31,27 @@ public static PomeloSingleton CreateInstance() } private PomeloSingleton(){ + resetPomeloClient (); + } + + private void resetPomeloClient () { pmlClient = new PomeloClient (ClientProtocolType.NORMAL, null, "", null); } - public void connectGate() { + public string getToken() { + return PlayerPrefs.GetString ("token"); + } + + //连接到gate之后会主动断开连接,届时会调用callback + public void guestLogin(Action callback) { pmlClient.Connect ("127.0.0.1", 3101, "", delegate { //必须要handshake之后才能正常通信 pmlClient.HandShake(null, delegate(JsonData obj) { - onConnectToGate(); + requestGuestLogin(); }); }, - delegate () { - Debug.Log("disconnect gate"); - }); + callback); } @@ -48,14 +61,55 @@ public void updatePerFrame () { } } - public void onConnectToGate() { + //游客登录、刷新token成功后回调方法 + public void onLoginSeccuss(JsonData obj) { + handleLoginResponse (obj); + + pmlClient.close (); + pmlClient = null; + resetPomeloClient (); + } + + //刷新token + public void refreshToken (Action callback) { + if (getToken() == null) { + return; + } + pmlClient.Connect ("127.0.0.1", 3101, "", + delegate { + //必须要handshake之后才能正常通信 + pmlClient.HandShake(null, delegate(JsonData obj) { + requestRefreshToken(); + }); + }, + callback); + } + + private void handleLoginResponse (JsonData obj) { + int code = (int)obj ["code"]; + if (code < 0) { + Debug.Log (obj["msg"]); + return; + } + string token = (string)obj ["data"] ["token"]; + PlayerPrefs.SetString ("token", token); + + connectorHost = (string)obj ["data"] ["connector"] ["host"]; + connectorPort = (int)obj ["data"] ["connector"] ["port"]; + + string userinfoJson = obj ["data"] ["userinfo"].ToJson(); + userinfoModel = JsonMapper.ToObject (userinfoJson); + } + + public void requestGuestLogin() { JsonData data = new JsonData(); data["userid"] = "abc"; - pmlClient.request ("gate.gateHandler.guestLogin", data, onGuestLogin); + pmlClient.request ("gate.gateHandler.guestLogin", data, onLoginSeccuss); } - - public void onGuestLogin(JsonData obj) { - Debug.Log(obj.ToJson()); + public void requestRefreshToken() { + JsonData data = new JsonData(); + data["token"] = getToken(); + pmlClient.request ("gate.gateHandler.refreshToken", data, onLoginSeccuss); } } diff --git a/client_unity/obj/Debug/Assembly-CSharp.csproj.FilesWrittenAbsolute.txt b/client_unity/obj/Debug/Assembly-CSharp.csproj.FilesWrittenAbsolute.txt index 99fed0c..ae5407c 100644 --- a/client_unity/obj/Debug/Assembly-CSharp.csproj.FilesWrittenAbsolute.txt +++ b/client_unity/obj/Debug/Assembly-CSharp.csproj.FilesWrittenAbsolute.txt @@ -21,3 +21,24 @@ /Users/gunli/develop/pomelo-unitychat/Temp/bin/Debug/Mono.Cecil.Mdb.dll /Users/gunli/develop/pomelo-unitychat/Temp/bin/Debug/UnityEngine.Purchasing.dll /Users/gunli/develop/pomelo-unitychat/Temp/bin/Debug/UnityEngine.Advertisements.dll +/Users/gunli/develop/chatofpomelo-websocket/client_unity/obj/Debug/Assembly-CSharp.dll +/Users/gunli/develop/chatofpomelo-websocket/client_unity/obj/Debug/Assembly-CSharp.dll.mdb +/Users/gunli/develop/chatofpomelo-websocket/client_unity/Temp/bin/Debug/UnityEngine.dll +/Users/gunli/develop/chatofpomelo-websocket/client_unity/Temp/bin/Debug/UnityEditor.dll +/Users/gunli/develop/chatofpomelo-websocket/client_unity/Temp/bin/Debug/UnityEngine.Analytics.dll +/Users/gunli/develop/chatofpomelo-websocket/client_unity/Temp/bin/Debug/UnityEngine.PlaymodeTestsRunner.dll +/Users/gunli/develop/chatofpomelo-websocket/client_unity/Temp/bin/Debug/UnityEngine.Networking.dll +/Users/gunli/develop/chatofpomelo-websocket/client_unity/Temp/bin/Debug/UnityEngine.UI.dll +/Users/gunli/develop/chatofpomelo-websocket/client_unity/Temp/bin/Debug/UnityEngine.HoloLens.dll +/Users/gunli/develop/chatofpomelo-websocket/client_unity/Temp/bin/Debug/UnityEngine.VR.dll +/Users/gunli/develop/chatofpomelo-websocket/client_unity/Temp/bin/Debug/Mono.Cecil.dll +/Users/gunli/develop/chatofpomelo-websocket/client_unity/Temp/bin/Debug/Unity.SerializationLogic.dll +/Users/gunli/develop/chatofpomelo-websocket/client_unity/Temp/bin/Debug/Unity.DataContract.dll +/Users/gunli/develop/chatofpomelo-websocket/client_unity/Temp/bin/Debug/ICSharpCode.NRefactory.dll +/Users/gunli/develop/chatofpomelo-websocket/client_unity/Temp/bin/Debug/Unity.UNetWeaver.dll +/Users/gunli/develop/chatofpomelo-websocket/client_unity/Temp/bin/Debug/Unity.UNetWeaver.dll.mdb +/Users/gunli/develop/chatofpomelo-websocket/client_unity/Temp/bin/Debug/Unity.CecilTools.dll +/Users/gunli/develop/chatofpomelo-websocket/client_unity/Temp/bin/Debug/Mono.Cecil.Pdb.dll +/Users/gunli/develop/chatofpomelo-websocket/client_unity/Temp/bin/Debug/Mono.Cecil.Mdb.dll +/Users/gunli/develop/chatofpomelo-websocket/client_unity/Temp/bin/Debug/Assembly-CSharp.dll.mdb +/Users/gunli/develop/chatofpomelo-websocket/client_unity/Temp/bin/Debug/Assembly-CSharp.dll diff --git a/client_unity/obj/Debug/Assembly-CSharp.dll b/client_unity/obj/Debug/Assembly-CSharp.dll index f75541299d09f4467b5afab2f559c313fd4bce68..715ebbd82e27a96a7e9234fed0983919bf51db5a 100755 GIT binary patch literal 101376 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

_Lwk^t&I~=Y|-q2FY^lgEDYM_?|deuOUyR(G0 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 diff --git a/client_unity/obj/Debug/Assembly-CSharp.dll.mdb b/client_unity/obj/Debug/Assembly-CSharp.dll.mdb index 5f690592be0b937731f7541e191a46986508d3f5..6bfc1058df6625b91ac67725845d95f27a05e6ac 100644 GIT binary patch literal 46269 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 literal 44669 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 this.exp); +}; + UToken.prototype.encrypt = function(){ var crypto = require('crypto'); var cipher = crypto.createCipher('aes-256-cbc',secret_key); diff --git a/game-server/app/servers/gate/handler/gateHandler.js b/game-server/app/servers/gate/handler/gateHandler.js index e9a98ad..2bd4827 100644 --- a/game-server/app/servers/gate/handler/gateHandler.js +++ b/game-server/app/servers/gate/handler/gateHandler.js @@ -78,4 +78,43 @@ handler.guestLogin = function(msg, session, next){ next(null, response); } }.bind(this)); -} \ No newline at end of file +} + + +handler.refreshToken = function(msg, session, next){ + var tokenStr = msg.token; + var token = new UToken(); + token.decrypt(tokenStr); + if (token.isValid() == false) { + next(null, new GMResponse(-101, '非法token')); + return ; + } + token.refresh(); + var sqlHelper = this.app.get('sqlHelper'); + sqlHelper.queryUserInfo(token.userid, function(err, userinfo){ + if (userinfo) { + // get all connectors + var connectors = this.app.getServersByType('connector'); + if(!connectors || connectors.length === 0) { + var response = new GMResponse(-103, '没有找到connector'); + next(null, response); + return; + } + // here we just start `ONE` connector server, so we return the connectors[0] + var res = connectors[0]; + var tokenString = token.encrypt(); + var data = { + userinfo : userinfo, + token : tokenString, + connector : { + host: res.host, + port: res.clientPort + } + }; + var response = new GMResponse(1, 'ok', data); + next(null, response); + } else { + next(null, new GMResponse(-102, '无此用户数据')); + } + }.bind(this)); +}; \ No newline at end of file From cd51ab6cbd39a1186cdb550cd86b845c8ddc3316 Mon Sep 17 00:00:00 2001 From: halloworld Date: Thu, 29 Jun 2017 17:38:17 +0800 Subject: [PATCH 20/84] =?UTF-8?q?=E5=AE=A2=E6=88=B7=E7=AB=AF=E5=B0=81?= =?UTF-8?q?=E8=A3=85=E9=80=BB=E8=BE=91=E5=8A=A8=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client_unity/Assets/scenes/Home/Home.unity | 12 ++++ .../Assets/scenes/Home/HomeController.cs | 1 - .../Assets/scenes/Login/LoginController.cs | 9 ++- .../Assets/scripts/pomelo/PomeloProtocol.cs | 27 ++++++++ .../scripts/pomelo/PomeloProtocol.cs.meta | 12 ++++ .../Assets/scripts/pomelo/PomeloSingleton.cs | 63 +++++++++++++------ .../servers/connector/handler/entryHandler.js | 2 +- 7 files changed, 100 insertions(+), 26 deletions(-) create mode 100644 client_unity/Assets/scripts/pomelo/PomeloProtocol.cs create mode 100644 client_unity/Assets/scripts/pomelo/PomeloProtocol.cs.meta diff --git a/client_unity/Assets/scenes/Home/Home.unity b/client_unity/Assets/scenes/Home/Home.unity index fd67b32..a324808 100644 --- a/client_unity/Assets/scenes/Home/Home.unity +++ b/client_unity/Assets/scenes/Home/Home.unity @@ -314,6 +314,7 @@ GameObject: - component: {fileID: 1576925403} - component: {fileID: 1576925402} - component: {fileID: 1576925401} + - component: {fileID: 1576925405} m_Layer: 5 m_Name: Canvas m_TagString: Untagged @@ -396,6 +397,17 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0, y: 0} +--- !u!114 &1576925405 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1576925400} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fbb3b5dc787e041f98bd2117940a236a, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1 &2010971672 GameObject: m_ObjectHideFlags: 0 diff --git a/client_unity/Assets/scenes/Home/HomeController.cs b/client_unity/Assets/scenes/Home/HomeController.cs index 7b304a4..9d4422b 100644 --- a/client_unity/Assets/scenes/Home/HomeController.cs +++ b/client_unity/Assets/scenes/Home/HomeController.cs @@ -16,6 +16,5 @@ void Update () { } public void playBrnn () { - PomeloSingleton pml = PomeloSingleton.CreateInstance (); } } diff --git a/client_unity/Assets/scenes/Login/LoginController.cs b/client_unity/Assets/scenes/Login/LoginController.cs index cac5ae7..858ad7d 100644 --- a/client_unity/Assets/scenes/Login/LoginController.cs +++ b/client_unity/Assets/scenes/Login/LoginController.cs @@ -5,18 +5,17 @@ public class LoginController : MonoBehaviour { - void Start() - { + void Start() { PomeloSingleton pml = PomeloSingleton.CreateInstance (); - if (pml.getToken() == null) { + if (pml.getToken() != null) { pml.refreshToken (delegate { + Debug.Log("resfresh token over"); SceneManager.LoadScene("Home"); }); } } - void Update() - { + void Update() { PomeloSingleton.CreateInstance ().updatePerFrame (); } diff --git a/client_unity/Assets/scripts/pomelo/PomeloProtocol.cs b/client_unity/Assets/scripts/pomelo/PomeloProtocol.cs new file mode 100644 index 0000000..77d5640 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/PomeloProtocol.cs @@ -0,0 +1,27 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using Pomelo.DotNetClient; +using LitJson; + +namespace pp { + namespace connector { + class entryHandler { + public static void enterRoom(string token, string rtype, string rid, Action callback) { + JsonData data = new JsonData (); + data ["token"] = token; + data ["rtype"] = rtype; + if (rid!= null) { + data ["rid"] = rid; + } + PomeloClient pml = PomeloSingleton.CreateInstance ().getPomeloClient (); + pml.request ("connector.entryHandler.enterRoom", data, callback); + } + + public static void exit(Action callback) { + PomeloClient pml = PomeloSingleton.CreateInstance ().getPomeloClient (); + pml.request ("connector.entryHandler.exit", callback); + } + } + } +} \ No newline at end of file diff --git a/client_unity/Assets/scripts/pomelo/PomeloProtocol.cs.meta b/client_unity/Assets/scripts/pomelo/PomeloProtocol.cs.meta new file mode 100644 index 0000000..1059383 --- /dev/null +++ b/client_unity/Assets/scripts/pomelo/PomeloProtocol.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3828e67171d6d41ec96264d8fb0a3cb6 +timeCreated: 1498723680 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scripts/pomelo/PomeloSingleton.cs b/client_unity/Assets/scripts/pomelo/PomeloSingleton.cs index 4b830c9..0a22d7f 100644 --- a/client_unity/Assets/scripts/pomelo/PomeloSingleton.cs +++ b/client_unity/Assets/scripts/pomelo/PomeloSingleton.cs @@ -42,6 +42,14 @@ public string getToken() { return PlayerPrefs.GetString ("token"); } + public void setToken (string token) { + PlayerPrefs.SetString ("token", token); + } + + public PomeloClient getPomeloClient() { + return pmlClient; + } + //连接到gate之后会主动断开连接,届时会调用callback public void guestLogin(Action callback) { pmlClient.Connect ("127.0.0.1", 3101, "", @@ -54,6 +62,36 @@ public void guestLogin(Action callback) { callback); } + //刷新token + public void refreshToken (Action callback) { + if (getToken() == null) { + return; + } + pmlClient.Connect ("127.0.0.1", 3101, "", + delegate { + //必须要handshake之后才能正常通信 + pmlClient.HandShake(null, delegate(JsonData obj) { + requestRefreshToken(); + }); + }, + callback); + } + + //连接到gate返回的connector + public void connectToConnector(Action callback){ + pmlClient.Connect (connectorHost, connectorPort, "", + delegate { + //必须要handshake之后才能正常通信 + pmlClient.HandShake(null, delegate(JsonData obj) { + callback(); + }); + }, + delegate { + pmlClient.close(); + pmlClient = null; + resetPomeloClient(); + }); + } public void updatePerFrame () { if (pmlClient != null) { @@ -62,7 +100,7 @@ public void updatePerFrame () { } //游客登录、刷新token成功后回调方法 - public void onLoginSeccuss(JsonData obj) { + void onLoginSeccuss(JsonData obj) { handleLoginResponse (obj); pmlClient.close (); @@ -70,29 +108,16 @@ public void onLoginSeccuss(JsonData obj) { resetPomeloClient (); } - //刷新token - public void refreshToken (Action callback) { - if (getToken() == null) { - return; - } - pmlClient.Connect ("127.0.0.1", 3101, "", - delegate { - //必须要handshake之后才能正常通信 - pmlClient.HandShake(null, delegate(JsonData obj) { - requestRefreshToken(); - }); - }, - callback); - } - private void handleLoginResponse (JsonData obj) { + + void handleLoginResponse (JsonData obj) { int code = (int)obj ["code"]; if (code < 0) { Debug.Log (obj["msg"]); return; } string token = (string)obj ["data"] ["token"]; - PlayerPrefs.SetString ("token", token); + setToken (token); connectorHost = (string)obj ["data"] ["connector"] ["host"]; connectorPort = (int)obj ["data"] ["connector"] ["port"]; @@ -101,13 +126,13 @@ private void handleLoginResponse (JsonData obj) { userinfoModel = JsonMapper.ToObject (userinfoJson); } - public void requestGuestLogin() { + void requestGuestLogin() { JsonData data = new JsonData(); data["userid"] = "abc"; pmlClient.request ("gate.gateHandler.guestLogin", data, onLoginSeccuss); } - public void requestRefreshToken() { + void requestRefreshToken() { JsonData data = new JsonData(); data["token"] = getToken(); pmlClient.request ("gate.gateHandler.refreshToken", data, onLoginSeccuss); diff --git a/game-server/app/servers/connector/handler/entryHandler.js b/game-server/app/servers/connector/handler/entryHandler.js index 9ebd0de..ca72624 100644 --- a/game-server/app/servers/connector/handler/entryHandler.js +++ b/game-server/app/servers/connector/handler/entryHandler.js @@ -65,7 +65,7 @@ handler.enterRoom = function(msg, session, next) { return ; } - var rid = msg.rid; + var rid = msg.rid; //brnn不需要rid,用rtype作为rid //duplicate log in if(!sessionService.getByUid(token.userid)) { From b017aef529084586bbea8dd30772d847333ebab9 Mon Sep 17 00:00:00 2001 From: halloworld Date: Fri, 30 Jun 2017 13:31:12 +0800 Subject: [PATCH 21/84] add brnn room --- client_unity/Assets/scenes/BrnnRoom.meta | 9 + .../Assets/scenes/BrnnRoom/BrnnRoom.unity | 583 ++++++++++++++++++ .../scenes/BrnnRoom/BrnnRoom.unity.meta | 8 + .../scenes/BrnnRoom/BrnnRoomController.cs | 16 + .../BrnnRoom/BrnnRoomController.cs.meta | 12 + client_unity/Assets/scenes/Home/Home.unity | 13 +- .../Assets/scripts/model/MUserInfo.cs | 2 +- .../Assets/scripts/pomelo/PomeloProtocol.cs | 49 +- .../ProjectSettings/EditorBuildSettings.asset | 4 + client_unity/obj/Debug/Assembly-CSharp.dll | Bin 101376 -> 102400 bytes .../obj/Debug/Assembly-CSharp.dll.mdb | Bin 46269 -> 47230 bytes game-server/app/game/DouniuRoom.js | 8 +- 12 files changed, 697 insertions(+), 7 deletions(-) create mode 100644 client_unity/Assets/scenes/BrnnRoom.meta create mode 100644 client_unity/Assets/scenes/BrnnRoom/BrnnRoom.unity create mode 100644 client_unity/Assets/scenes/BrnnRoom/BrnnRoom.unity.meta create mode 100644 client_unity/Assets/scenes/BrnnRoom/BrnnRoomController.cs create mode 100644 client_unity/Assets/scenes/BrnnRoom/BrnnRoomController.cs.meta diff --git a/client_unity/Assets/scenes/BrnnRoom.meta b/client_unity/Assets/scenes/BrnnRoom.meta new file mode 100644 index 0000000..c7a68ba --- /dev/null +++ b/client_unity/Assets/scenes/BrnnRoom.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 1bb21d55372144cda81381daf3ab5b4f +folderAsset: yes +timeCreated: 1498800364 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scenes/BrnnRoom/BrnnRoom.unity b/client_unity/Assets/scenes/BrnnRoom/BrnnRoom.unity new file mode 100644 index 0000000..b383ec2 --- /dev/null +++ b/client_unity/Assets/scenes/BrnnRoom/BrnnRoom.unity @@ -0,0 +1,583 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 7 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0.44657826, g: 0.49641263, b: 0.57481676, a: 1} +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 7 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_TemporalCoherenceThreshold: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 4 + m_Resolution: 2 + m_BakeResolution: 40 + m_TextureWidth: 1024 + m_TextureHeight: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_DirectLightInLightProbes: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_LightingDataAsset: {fileID: 0} + m_RuntimeCPUUsage: 25 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + accuratePlacement: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &309472373 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 309472378} + - component: {fileID: 309472377} + - component: {fileID: 309472376} + - component: {fileID: 309472375} + - component: {fileID: 309472374} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &309472374 +AudioListener: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 309472373} + m_Enabled: 1 +--- !u!124 &309472375 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 309472373} + m_Enabled: 1 +--- !u!92 &309472376 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 309472373} + m_Enabled: 1 +--- !u!20 &309472377 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 309472373} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 100 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 + m_StereoMirrorMode: 0 +--- !u!4 &309472378 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 309472373} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &829107460 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 829107464} + - component: {fileID: 829107463} + - component: {fileID: 829107462} + - component: {fileID: 829107461} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &829107461 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 829107460} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1301386320, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &829107462 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 829107460} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 1 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 1334, y: 750} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &829107463 +Canvas: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 829107460} + m_Enabled: 1 + serializedVersion: 2 + m_RenderMode: 1 + m_Camera: {fileID: 309472377} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &829107464 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 829107460} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 2093551550} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &950272269 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 950272272} + - component: {fileID: 950272271} + - component: {fileID: 950272270} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &950272270 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 950272269} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1077351063, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &950272271 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 950272269} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -619905303, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &950272272 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 950272269} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1402234902 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1402234903} + - component: {fileID: 1402234905} + - component: {fileID: 1402234904} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1402234903 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1402234902} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2093551550} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1402234904 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1402234902} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Button +--- !u!222 &1402234905 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1402234902} +--- !u!1 &2093551549 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 2093551550} + - component: {fileID: 2093551553} + - component: {fileID: 2093551552} + - component: {fileID: 2093551551} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2093551550 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2093551549} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1402234903} + m_Father: {fileID: 829107464} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -240, y: -225} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2093551551 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2093551549} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 2093551552} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &2093551552 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2093551549} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &2093551553 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2093551549} +--- !u!1 &2106679981 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 2106679983} + - component: {fileID: 2106679982} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &2106679982 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2106679981} + m_Enabled: 1 + serializedVersion: 7 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 4 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &2106679983 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2106679981} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} diff --git a/client_unity/Assets/scenes/BrnnRoom/BrnnRoom.unity.meta b/client_unity/Assets/scenes/BrnnRoom/BrnnRoom.unity.meta new file mode 100644 index 0000000..3b29d46 --- /dev/null +++ b/client_unity/Assets/scenes/BrnnRoom/BrnnRoom.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a8bfd005754c74d2eb2a8b7d6b63643b +timeCreated: 1498800430 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scenes/BrnnRoom/BrnnRoomController.cs b/client_unity/Assets/scenes/BrnnRoom/BrnnRoomController.cs new file mode 100644 index 0000000..f235346 --- /dev/null +++ b/client_unity/Assets/scenes/BrnnRoom/BrnnRoomController.cs @@ -0,0 +1,16 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class BrnnRoomController : MonoBehaviour { + + // Use this for initialization + void Start () { + + } + + // Update is called once per frame + void Update () { + + } +} diff --git a/client_unity/Assets/scenes/BrnnRoom/BrnnRoomController.cs.meta b/client_unity/Assets/scenes/BrnnRoom/BrnnRoomController.cs.meta new file mode 100644 index 0000000..bddfacc --- /dev/null +++ b/client_unity/Assets/scenes/BrnnRoom/BrnnRoomController.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f6ce64d91a695412b8451471b742d99b +timeCreated: 1498800440 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/scenes/Home/Home.unity b/client_unity/Assets/scenes/Home/Home.unity index a324808..8615b4d 100644 --- a/client_unity/Assets/scenes/Home/Home.unity +++ b/client_unity/Assets/scenes/Home/Home.unity @@ -557,7 +557,18 @@ MonoBehaviour: m_TargetGraphic: {fileID: 2117064930} m_OnClick: m_PersistentCalls: - m_Calls: [] + m_Calls: + - m_Target: {fileID: 1576925405} + m_MethodName: playBrnn + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null --- !u!114 &2117064930 diff --git a/client_unity/Assets/scripts/model/MUserInfo.cs b/client_unity/Assets/scripts/model/MUserInfo.cs index 8d0966c..3787204 100644 --- a/client_unity/Assets/scripts/model/MUserInfo.cs +++ b/client_unity/Assets/scripts/model/MUserInfo.cs @@ -3,7 +3,7 @@ using UnityEngine; public class MUserInfo { - public int userid; + public string userid; public string username; public string usernick; public string phone; diff --git a/client_unity/Assets/scripts/pomelo/PomeloProtocol.cs b/client_unity/Assets/scripts/pomelo/PomeloProtocol.cs index 77d5640..d1d6780 100644 --- a/client_unity/Assets/scripts/pomelo/PomeloProtocol.cs +++ b/client_unity/Assets/scripts/pomelo/PomeloProtocol.cs @@ -18,10 +18,57 @@ public static void enterRoom(string token, string rtype, string rid, Action callback) { PomeloClient pml = PomeloSingleton.CreateInstance ().getPomeloClient (); pml.request ("connector.entryHandler.exit", callback); } } } + + namespace brnn { + class brnnHandler { + public static void chipIn(string userid, string gold, int pkindex, Action callback) { + JsonData data = new JsonData (); + data ["userid"] = userid; + data ["gold"] = gold; + data ["pkindex"] = pkindex; + PomeloClient pml = PomeloSingleton.CreateInstance ().getPomeloClient (); + pml.request ("brnn.brnnHandler.chipIn", data, callback); + } + } + } + + namespace observer { + class brnn { + //有用户离开房间 + public static void onLeave (Action callback) { + PomeloClient pml = PomeloSingleton.CreateInstance ().getPomeloClient (); + pml.on ("brnn.onLeave", callback); + } + + //有用户加入房间 + public static void onAdd (Action callback) { + PomeloClient pml = PomeloSingleton.CreateInstance ().getPomeloClient (); + pml.on ("brnn.onAdd", callback); + } + + //即将发牌的下注时期 + public static void onWillStart (Action callback) { + PomeloClient pml = PomeloSingleton.CreateInstance ().getPomeloClient (); + pml.on ("brnn.onWillStart", callback); + } + + //发牌 + public static void onDealPoker (Action callback) { + PomeloClient pml = PomeloSingleton.CreateInstance ().getPomeloClient (); + pml.on ("brnn.onDealPoker", callback); + } + + //计算输赢结果 + public static void onGoldResult (Action callback) { + PomeloClient pml = PomeloSingleton.CreateInstance ().getPomeloClient (); + pml.on ("brnn.onGoldResult", callback); + } + } + } } \ No newline at end of file diff --git a/client_unity/ProjectSettings/EditorBuildSettings.asset b/client_unity/ProjectSettings/EditorBuildSettings.asset index c8e4e4a..df7e71c 100644 --- a/client_unity/ProjectSettings/EditorBuildSettings.asset +++ b/client_unity/ProjectSettings/EditorBuildSettings.asset @@ -7,3 +7,7 @@ EditorBuildSettings: m_Scenes: - enabled: 0 path: Assets/scenes/chat.unity + - enabled: 1 + path: Assets/scenes/Home/Home.unity + - enabled: 1 + path: Assets/scenes/Login/Login.unity diff --git a/client_unity/obj/Debug/Assembly-CSharp.dll b/client_unity/obj/Debug/Assembly-CSharp.dll index 715ebbd82e27a96a7e9234fed0983919bf51db5a..711b3075320068294fe9c91db6bb66bafb720bc2 100755 GIT binary patch delta 44215 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 z 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�FKcQ0mtcY0r%(>(2E#m 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 delta 43003 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 E00NEre*gdg diff --git a/client_unity/obj/Debug/Assembly-CSharp.dll.mdb b/client_unity/obj/Debug/Assembly-CSharp.dll.mdb index 6bfc1058df6625b91ac67725845d95f27a05e6ac..b9b0a933b549d4db781b2f55124dfcf8a64e3e94 100644 GIT binary patch literal 47230 zcmc${2S8NE_CG#z@4|9{tL)xgkOdTwj*9FqsJqy9!9-AFGjRRgY4+X{ zHL>^JV%KPly_dw2Vox;9Xo@LntiR99y}Ju)-uwRl-}myR+_^jF%sDe>X3or3a*C>q$0+x>b+{aG~qKie4}D z?$raI>b_cBSl+9sTX98NQTLMKo)w*6?padNH?4Vjd2vN~71Vk~2fvq-*gyZT`0myZ3srq)5%lBlyWfTzw)Bup2g*9k3$&z;qKM5qO4cW$N@Er0ah%Bd!0cN)~=`Oc=9mz`fT^ zr&@k;(@~$4{5Nv}ZS~i!qyE|7^Y$$L{fX1JGdo&ab(r;E6-c|{g07EjqxU~)^7hP4 zIfo{Nw`upm!O|7~)m%JNR#NfETx_1TWqnDXV;^^E_HNs42hU~vC)AayEgtBxt&00R zG6QdI-VpuS*yxZMTL+oPFBguH;{Q^+Xj@PQ#r0ILZpDx4B&}~JU-|I-`DfpnGW71e zMyofFF8|?dwB=wK*m(QCX!87jI1B2a&4p0@2odb)dfIxo<&8^u@3vdzyk}`Z z`u>OcYx9||y()SZSE!lMrZj0euV7-+x}ayli;rxkQSV5j&TWpGdc?L**ZsL4-G67+ z)TZO+Q?ExzZO?^%>%OoqlKR>Dq#o`&?J@Go-ypT#tRWY^{6boGaS^5kkD3X6@z#jY z_b*U;ce2&91faySlG;4ixKLTwVOPRHav5t;=8hYmt5R zs`%RaOF#V4wCK#0vXXws{`Rc>wbWL=8TIX$)L*B4{XxUtQj1-a$*X^7E8{8y&FvA* zze(EZ)V(!pZi?<0(7xs~Yc`QSe`m&Ct|;lA_B0-k$eDEc$)_UvSSGo;UuquRIW>*E z^>^hABTU-k1wFgAf2p8bar@%3S4xVCACbY)mRai)f_`^@7`d<7uQ|iV{mmIHE-0&T z6&Ffaedf2q+~xH*bgCXX=C#^?Z=GuS`WJN?_tFO+ zo_oXmV{udRF5P=Ji@f%C)~S|1R;Q1exg8jIqjT`xMxiAKo5cNcWZJub-{`

c5bh z@v9b{x3zsNeckqizNOukA0)5;ty0sb`|T?VDjwArhAmk2(&D#AR9iW?{H^bI@A~s^ z$z4TRLC^Buy~--mT0Z4@edGkrGHTa0|Bk=yZgao$kptVur2Z{E!k0U5=Ke~0Ur!mj zZklv4_P1BZUR|`K$Nc}R{1unAZ{O+>qeQDNXGj3HLi`EQ69RKJtkr>p1Q8NUh)hT|LaGxILWqG7BOwYQCPK`Fgc1@) zNDV^539%3oK}aMaFoM@4q!uC3gv1aMOGs@(;s}W+B!Q4b)pQP~A+)F~p)^<_v-d$L`(&0hO1+d;;@;mb`3p2lH_Pfs_sWWP9vYBozloUsp9H5RWu9!)T**h zkjxBgP<=AE{*d}A^Jl42s6xa1=#u(mY5ipyq!Z7Uz0l#|6C$NF@uR!ylil_AXgDuC zjFaT>quYtr49eu@rAx$vf6*R?Z2S36P*By6|d#!Y(V>ZQbLA zqAuQP#yOh(gs-gRqV6;J73y)K9o;CHJiNy%-QesThd5@jQd@Zd5a5 zMm?D&$xoPNBeQLDY(6;}YHMwwIV(vKFNwop)e6M9$zkEKb(=`6P?>(h2^%?S`{pkx zl>B=NlkDVO`y%^;Qf%arBA80D!4etQND@A`lP~OF0hbd0@`^I7Q~~9UH)#lEIc^S_ zIUV^*X`$6&wc**pYEw9cIN2Z@Vr>l*L)E7&34=1on2h%_9ziYkEk-O4P4|CH>{tdl zlkxRm6MOpq3$dA*WO3%|Ox{kAd+|ypxtjT-`dKH60n~)p5J9}1N$zCc^~TFo;mygQ z#0%nt24rG`Ne$GtCW;2i4BMjtrbD%6s`i~ls zZH=~j!6zO7pKCr7M4)j^{E$P^+4?UAG63$SwDLrnI4EuKddns z-grb~4=;xYV%5)SOy)M8=Y=%!KBnAZzpBtHP07`!KYF44X;tuuW@Kcu zQO$^eme{ShZ#kiUFkF}QrJ}$!OSSftMrTqXF@u$EC`;|kQXB<}Ly5K8#CvQmB49th zNjF{;LxRDApG0%K1uq6!zqlFM)a(GK@Bd0c_m_+R4Tp*UmP3lhAu&?rFuXaL+I(4a zkLVUs)T7pDYwLe#POdb+>IE*X1dP`YbCKb$5iU>4m6d>T`uQ%hz_ri|TvG`cqu=2o zJ6*fHzzvmvvHJ5aa>4bb7r40+FiwBlMeexndVwER0Zw+4DekFmPlonXuB!xDzurwY zxHo#ihaLc*bdyirpLxM28JIU%w6IiJ|C^iq?*0Q{jJ;j4$INuOUi<=BMb^fatXvzf zKy!p4#$cB9?_`sy+0(K;S^16;bGmZXHfb=_PL}oCv&oL^oj?&af>i3&y=!OQe2Abn zBbCWjp4yV-%F1=vQyq4VmjSFEGoT*bW<#W`zm!exXZO$Xu)JS6|M9YZZ4OzNvmW3o z`5z>(j9Ic`)$B8p$o=sgaysXXm()0p@3F~``SJ%< z(zEzgRk&2sI0;28Z|hVdx%rCA$z_}Cu$jDBsTFE|%mh`rx#Z*APrL|2br7qIHAzX9 zVhblKb6T)YuUaukwb4jhj1kIf@9^Je9FGB=Hp zw%QyvR>h1uM>?2C4&@#8BF$w;+F)f$0{=YnOWrjvco74uwO$_#T9I+B# zw7%j+`0^oyk!{GRHly2k@^JYfgk^2W@-{2H2){mraJUUQ(&nfa;WiN5e7cJIfee0Z zLw;)Wvll$juPS)-6J*R2W1sNwAMpTq*%M^>6Dz#n@ehCxK0yvWao7uf?*Z`TC&&*^ zT=9ZuJ^&uxmW*gSvaN^r0)Tz$U{PDLxa|@za4CQmtxZe%-EGO9wtKz6H4LcLE2cVa z$;Gypyugi&tku(EBOsD{ZOQ$%{h##k-O3O=?KM`?&w7%~esYc%yz>F@M^BP%Pj2^u z_c5@mGWl~)lJieq@FE=H=_@1Ldy?FLvVS`d{}T@(%xXtwx0~ZdILi>SoaxMVl`p!lxEJ>-g)o+8JdIu0bLx#I4{Jpx2^a1E-aDiys+4Qr*VVOAS8e6E`szA{`J*(T5h+S@8R zR1owV>1|2_cGJ(b*tdnzq7XP)7$DN1g#s3M!E1#tH0#o6aSA3RdT|Z1=s<(bz>?Tv z{kMV9hG`?FIE@1AMtg=aUoqN^#!^d>65GLMDYS`q_+T&6fF}S}fNfK_JZr)(C7Wv* zYO^3(4YW^@>Zd3*V2J7ImUOc@ohM-it>(=w%?;+PNOPLm(458MA4V?yA5W1XPyg}s z19P2gD3K*A+tX1nMwrl7K6-}ieP-V?s2NQF!8KHA)=pz$xP?TJfRPKpXk+F(G?xfW z)M2MFL>nai56_S*&)i`IH0jozhWgWs!ban)Z{-?M7RtRmTvg#QFX zBAzLRB;MHmdV@N1~)Th-zX{H8odram_xLRwWx)W(}bSPrWijxNA5m%56LMBW>Z)!R7x;R7pv*7A-ypRiIJR3FNr5adtcFk zZ0+z-2VYqN4)U_xK?+yE;7T$p?xE^Nlpr3&@6?O zHbg?c7Uz>C`AhRXz_|ff+KdDc>+u-MGzy`V}3?%8u`Q!CM&%wK#E- z{%}Wfq~lR9a3=$*Vv3UVmphUlI$qI$0iqG+24t(YBn1rZM22-5-brN{AcoP>jtnGQ z0Gr*3%;_}O3#&;>i@mT9JCUuOKJvoiX_+tG7oEtdPN%)FR9fas_j@PuN2lvvn3cL2 z$#ifV|2%p7`FEc8P%L5 zUgL$pgrf3^lMZ$!hdLkjLb9vo@9WOwo6g^Qp?RKk$Hj| zou8lIsbk0djvYJMY!FP7hE1C`mgJf>YSoIeCM3iqV9q2BE+9h+h8FNV0!P|jKz0=D z#Aokf)4zA;61a_1U10BmvVtDPa7Zl|{Z*@l8^$);4hwqWA1gGac7T2j`{_Y8gy_!W zo#-TSK9-n{e0!@{tKE?w3w>Xf0$rJJH)iMCQm2F5M|m|G~lzZ6Nqc zxFgVji^9)%UdKBt@?NdTth^Shr^px|v?ALx^73LkS{yE$_>-sXCY0T19OzQ=+UKQo zw73BK(*u(P!-H~(fn1nSY8gFpsbg+r4mT%;+iIGjuM-TRbz>l)w6xI1Op&Xf)8u5c zIbIXkm?E;bXjE5N5r`j~T9p&(m6%6JewvVU0a}c|qzWUl52dNysE}5we(tjyRX&2Q z#eUm(3Of$6e!u#0`XiAS#2U*y}o1U@;`sC0G@wYtj0gsYF zT~Fazkul}+l{ZYTQr3@($(7xksc;~0bRF5aR8df8Xq@;|!3GdXjx}J>UsHy)5^FL!T8=fFqhgtWyrQ6IQ85Ydui&lOU($6iDX;Jkl-QJzlkpGI!GF95Hb#2}%Csb? znuZ!&-8+$%LnK!5oI*8&R{0^?{IOA2O7q&Q0-8&AiB$ZN!bBr(7QWJ&{&Dd$Kk7eC zw?;?(H|h4{c~Ex)&k=ry{b=A!_Ty%)bG<% z`KTU4uHlS+7zV`e^tbiYcpLAm3f6F=i?Jx%=cwHp)u7q)JbiSU`}(G>qZ(?~-2xqMA?G81l+K{iG;=ASi5I_h!> zUF$){^*rCxGwjcTl_DUJZ6skmDoGQ1lZm}2_4Ys)FlfI9{I8+sMg53pCQlWEDRh-z zNm|{Ttm(ZLR4DPP2R1R4#Lslp93Y?0_&5KVmEh`H1#|R&_ajL+dXqu_9Q;pD?iXTp zY(Yn}TeM|#xFInNVv(eu|4DxN=QSV(s!LQ!>(z(U%Am9?W$Kn9l1OkEirr52~7 zc|fa5pG)~dyMw*zLfe?bOz!R!d!{EuZ^;f=?*h*T7Mm*@#4M#27skU}tF5eq-Ko3| z4T<-Z4t7NmukkTjqzAd+;~*sI+W< z;A1?XY!TnW+$7SRs4e1SrqASrCI&Xe0kb%8GGhxsmb1{Y)6+xK8ye!x&PcP< zYzQ@*qm#p%Mu*o4hb~J`hbcvxTtvY}+6WMy$ z0H>eruaX_F9>m&L?QVO3n8Ie)ymMcBmHhhZZ(iU*00RO?b7(C|8rz4A>odL&>$E|9 zs4wG(%v3_3F#AE42RlIq{_;L#OP>#cuVQ>rmD<@p6J(&j*Ox5pyQnYAnSbR>{ZJV*hGFjQOFrp)447)3eg%Tp94Y%(Mjaxxko%mI=#rXP8)-{gK^NJBimzw@i=!BCa*eScb}ygHJL7P7@!c4I$ssNZ2V zjc0aLHO)vpOLLm*Go*pGz0!}|@7Mn|Pj)B4V89(JBsor!X1zvczc$AUoLU9=;cH~; zYae-mb99vNc3NsXrBknw)32TJf|!+G^;mM4QzH%1@2`fJ?bonVNdd>tyZg>%8ENEHx8?1Fc#*_BuKK`Ux-a!v{$J^g8+Z^?KJ)Q6N8%Mn0PZ-#nu^-+bSKhel1)c)X!5U+I zL$oXndy@=*bHtk-z89(h=f6o7yt&W|{H6+U$D3s5o4dTgD^-B!-y|2_{L%}&Rt0$b zO>*bWyIvsXq?Ix>`7JW#t*LK$GIX~JaQ$0k!&@7@z(G*RzM>p|i=24tq!-Bc5PZO& z-y*-fbC+9=}*TZ(E851Rp843Ska%Z^uebC&O0d=;$Z-e^ruIC@WXIj zW40wrZM$?8(LeU5Klz|1D?vvNpk&klIvRn-`*bDfVni<)K$mJzPz>CQ_k9ECeoulx zxGHgTNPJ>O;3>qO9zf6dfT2F%b;RBnKyUhhVLsr5fs{-fNGBoS`3Mwi_<*YryLup9 z;{%5KfJYE}bRhlM2ekNrKOpwXKzh{&jPL=64WeZDAUXnp#xv3foR8QAgXlsZu%-%3 zN@*Cl1F<^?(Oo`ZE!C+dDJ3)TJYp{lqF?%e(Q0iZr8EeC3!$Q5w~jy-R%Pw|t;f4`{+r)c#O934xXk*z(j=D-rkpP`b(og4Yvk+g5wizypXqIFugp z0n>Oot1a+b#C52x=S z&@z+dN!K`V8Df_Yrz?EG#vY&}a6e)X45tTuKzM2~hV=r!LEN{)>32R*QxB;B2ucQw zpaT(T{F-?{(-1d(1fAgnxm9lIw#I=Q5W8^%-Q)vidw|UYPayW>2>PiHnBxI93;YGK z*GAA^eZa>!M~5?T%t%Vcj-=xdXqka~7!#V+-aK$IVwa4hOMSrBDzHvHXW$;h?j1?@ z`G9aAV<{Q%B4RI%q+k1hnjy7b{lbTSKp0vXS%VTC z_yJ-!kD^X z{WymH&wX78MCDML1mR|Ic zXpTLZLba;Xg655*Wd1n10D+b}I6Jzm92{OhXeZ)#jibAL;1<5rj-am)e{meWGmpp?_D6Eq94v&YjpK42?P{nZWn5V2dw(~o>Wv}`qHQqU>H zo*qxn_<-JBg2bTfh`lkM-t+;{Le-QpK@;AF27a4PLZD@+qX(E6v1ef`&a~PNHaM6$)qXJZqWarFi_M&x!C?5$T%*0Mv9mWk@q1AHWsuA@d{!R8tK~oP zkb;gNt4H6aANz9rC$lVTridDGQqcW(padq+0Ta9hzQ-`MB|u8J6f_5*xfAF-hM^+? zJv(>p^>ShNVpywtVr!tnW+j69mT4y96+Nt)0E`8O|XX08;_rQ)E zBo2iUGxoLD3eB+{6nA&K8f5YhnX&nZ%5<~sE{Pcd>lz{(o6TswVa&LvJ!`0L#!}EO zWb>y9^u39!JhIBKT9g{rZ>omv3e>P-khY?Im!5!0elA^&=SF&5i@nUY`ne(GZ2?v{ z{;4I5vfX#I-0+nc~iNJoG43va=mZQ7gB}F%rjM@W|_y z&7SPxvf5d|KX=P!3P6&RQAAVy2Oo)Mv!MnyG62gl#LK2^CJB?9J#t{V6Grm-p>a*sFUv7P7?wA}#UQJ!?Lx z%CYYRElZOq#3;@|i(p3dP1r^HlR}W&&j>%@c}JMd1w5W*AsasG4jXhFoD8$w z_>^tTcZV6_zwQ{6jnWwH?=XJ@#~^FtqU@XuQ&C|Sb|qYm%k4$&(o?e8sV3&Gf-U?Q z_N#U|__2qfZCMO)=48m%3Nd7wBa*}GM%50F3P-z(vl|pEd{fP#=J;j}QRtsg+F_IF zzR9Y9KsET%6iU9HLcc-4Wfm;9r%FEKS5FGQj@TPh=uIE+8K`VyJ~GTk1Z=n0mP4^J z51ud;x@an$gg~RxgpA!wV$V;b z7kofyel=xm@GZpNo<{HZfL^^H7yRCIN+wUIQxIrb^6LHg;B|;yKb>yiK&|EEo`Ur| zSS+K;sQE>9I2i?)Mp?5m0wStDrdu1UcHD5(x*-fz2p@2MW>M z4Q_O3U&j1WCR}DZVL#z;+6a?^*UX?~?F_mO0UVCRo-g+RP6^dC1$Dz?r~%92`;?kp zial>|g-yJ{?SXLF#c3-&{2i%eL|;e0mgAzN;BP_d+6;P+QDoMhU~wCAQ8bV9Hb}vn zW>WIOOu89?z?~&EQA9RlxNK|nk~=p&rH7{JL(P#^W>pIQ0twE|q~Ef1D&3EPt9g^4 zt&E?AN%$=K4gw9%oVNp>%C%q0RSS-eZm1yzuL8#ES#%9UgjVUv3#?grqj6G&Cc+m= zsQ)WA3&#ozdHrCYSb@j2-RN{F7DvGDLYQgUUuLciR#Npn!_tr2Pcz}@RA?);iKo3{ zN`jcQJiy&Z4u`lRV_?ek{v~+c4K?k}%=iRTCyb&sAW&BHQ^@MYS@e#tXycjs^NMuT z97;ydp<@teMW4*zT{Q<2gPbGJ-)}@N3A9mx4bA z>L+vPF<*-1NMW%V?VIiDkfydIDR{tKEXL;2K?pSd8#GLe3qDi}>(a}Bw0tgI!EkZ@ z3TN8X%G|D{fZvTh_O+tIO6g+3hm9IY{W+4IpGz;W)LJ9>OHPyKQS$CQ`W^xe7xl{X z|8TB$0BPquy32=qNyBwII$A2_1*!!DQ}B;K{AnKj*@u7aFKN%1Psz;rbQS{dAlC37 ztg+wbX)Jb!(^1q-apiY2VHeWZNyFp_gAuMyT+CAN0T4JipPt}!c*h!zv4qu!!*0y) zR%++U)6>79K=CI9zrBExcNWkI2p-@*m8brna^D96`xnq-oDS!{?0>+0+(JsmFQjiH zKyBl6fTmcY;iO0(@56-ffkwt+$F9a&SI5%s=>0i`HfL@nv18^BmynFmCg#YRp}ZfX zXnR2Q;6nNZBaX&^ek{*jM9I8GbUp%J=d#$wyIPUgBX+|gy3q%0hhYZ;up^&qNY+v@ zhT#WZfy}*Al8*!T#3Fjqm&EH-lp+sVOv%v2bQl7Snb*vaD$hmiyv20B59l4b8pzua zyL~a;;RC{!-~xMt(ojB&*mH~Nc^?o9e{JBB|3vJq#q_ohh=EH5#>nq3q2#?KbTR@h zL*9WaNnVTCbxY`a4%Bom9f&!sEMk!;JSMkcKdn0=7g8i^=J=81Pk?@G2|eQ@IRqnt zFiS7iqGC-UjH`dNGkNGz%q5o6;Rw9#jACI1^82AZg?81A#jRVn&S}$%F{lNnNsYt% zNU>@u-OLkevr+%|b(FsF4%)~}`o50Q_!cy*O2A=zfJ52obmx=`uLtM3#QyW$ zu>U;%J1V<8&z&?y-( zSNK;~AXA3L%nnp>$#dFEFkgR583LkPUm4$orJ zzRUAmT9M~%hKZ;nNuIMBQ{vTh8G;8=jAFYaSr4Z;0o0SL>A5N?T#UyQEd?5+r%^B_ z;4)+l)Z!XC4#5Ll7XJm84}iLP4c+x{iVc5};tEi&uAzTCoMQK1q?oZ5qwrd~2!StG zyd=l}vLqh^`IEKuRFyPb!e9LbmqF_&8N7~;LEz)UQ~dlFDb@pZ!#cXHN(!DYzH@~- zd04{V0r~rN^cqj2HCz9IXljb8&qrf($*PpDLz{v|%!6vw_VE3n2$f0=OVbcsN$@r` zZ9UA#>*+ECzWnpt%m+=@LLSb|A3(mop5CvL<^$f)*Q$wxe+1`=K~U9O(zCi%X)bV9 zWKCwt21=H0pz9D|N)AW3mwUoH4(C96yxhHlXoG^~E=o9zUdO!rLwb$V{}}WmvbtMM zLib?P&I+6@gufP8WQbS19jS)5ycp9Hp!pL}+{Ezsy5Y%pgbXs-J4(<-b9Zg@Kr*4-s#j->)1F~ zrPm?VEui1tLt;$r)cDyGp9hDB9B^c6}U5ZI#6$q^UfPPek zPBQ2uGddeJI(dIZr=Ew-O%V9=13Gkb<@{intKXE-*~RHhvm-}2dE#|%ZOPu+V#73u zVT540+72>1Hq)b=8m6DJ_&F$8=Bf5!3DZM12^qVEl5tz;cm$YkiWNP2qsf5w{p!K7 zEX|il1Jg@(j>q*Ltxt}Sk;RZ~wwkkQ^O*!2<*tJGjV*NOhfE&41f$@S zpstQE&qDOE59x6YirGW;pYZZV)|}|7ixLi)zy$$+un<{oiq*-N znqAF)p@Hnr>~9Y8!xb`;uKIwj5YJXR837XyyZZtesVVVG?vK1I1ibBX8K<;j(_c(&qW#nequC_5`(Cfy2yOk^DNFs=$PKPTlSi%_} zK@ERImm$z7$5EvnGcd)8)rFAH5dZl{^a~$233)35I6@2+LjFMf^^fQcAGi*>5zAHr zOFeNLC6l(%cM)jB>#Gt@0_U}eUAK*{_W^OGOh7wKA^q7THU-}4A)f$vY#Tk!aXc-@ z$cogQ9{{rZ@au~D2pvoFJCOg_M(_FPwxvszfX!mCN;o~8VJ+T{jj-)>DFSbw4z9r{ zcVbxI><2+M{*c(zqjWc7p-O<5{CAX_X2WviibmX5| zg`|jK)kK5N7^o9#CK|!7R#K)SM#kF|F)G1^$$!ZF9Wa{ipobBlJ?Z$NT%O(j7>b;Q z*co6|6QPJEJ(Iz_os=xwNtYw2iawN~yQ~_1lp-n$PjDQVr+3mbEP>h#Luei-S}Y-h zc4461MTa2JKnnTVgYi_Z3eTT}*bMf^v*=r$i1m+x@dX8Qa4g`7qF zxn17sWO&cjV#grh7;K0&8%(hKeS)N4?53wQqPQ4FVJ$bp@Xj7eChVaT z5qP*Q!~60*bOnoo=f0lw~kZA87x=$kqK5;6a zTZp;6hu+ZutW*>B!qU5!PD0>QQa%Hs-braS3_u1k86wJ29A!@NE?4%HCcnkXX^0Ou zheu&ofT{Y0AhTvK-NvYaWeH62ywzq+fd+mS525p$jF=tmccgWswFnw-P>xcD#_S{O zvUX;j3BH02nm_TJIo#ePDm*H)X=-?Qc+Dg*`5n~%+)GFA^GWLz-cRqNXINAfX;o;_ z+9^tvL{-b|7XUe31^Vy%=pPy(flPEl5K_oS8V{e?<@q(_An5R9H2*ic$-u_V^zH0f$+xxdfkV2 z_L20aAH-JtK{^uw%L@3St0Tu@hTVwTbCB-UAgmPU@qXbT{gOph5z#279v~pCTcAV8 zhHJq3^B}#Yr3dA=fyIOZQnDessa-bAJOm|hh|Wgf5yVcs?>aA$ne;1%B9ZHo6 zAA3X@KLysg!}PqC9z1dG>VYy2JVME!BXlqVE@7h>%(rBWOoN9=x-gwdGA;yk(Gj|s zBWVLcwMe2fvXQzB*Kn}@BJ1J|v9e@51gyhH=%+r4F<{!k=F%*aHPhr8QIhc{;C~*W zw-_2q!cM2)h4@j0lYMyPP;|Y;jmzJDK8j$kBFPiY_rRII*rh zF;O!92wL}!(ovYVX_9esYbhI&n2|3;GHwTK$H#Q14<(mPCp-nk%+PoVu&+O+-*6O7 z8#R8N(kGCa;(rpIg7O(LhX};;Fl9l$xEUAvRL5#3OUZUmSFHJp9eZSoJtM%FKNXf* z@W%6ZGIu=wt+1!%=SI{mv)!Zl$QP$I!fv(eVg8 zSaa|`_ZXd5DQX?w*B_%BDn;$X`~G9}K&7bDct3NDo@G&#_~G;s4(@6#MSg`96Wf3= z;Mm=E{Hed{j#N5K^S&QR`4J?pAEWm^IcbzN|X?R|O#W5+3q?HqcKG7Fa?zR5_#QN-fJEOn~Q$sUTf2odQ{ELHuf!(OBm zI&9gdBBj*k#uFdhd^(H9V~CHp;KYqNJi%;X4}8X15rer-9d=L+aqO9f^XSO*gcI<| zIYAF0;O$UhCninaRu;i3eE&(fft{oW5okEeai@`^A8RT~a(m?}06(6jKl$L$J}3Z( zCpA8EteXT08Nv1b>7CaJkf!WN~%OvEO|J(rKv*$Sp}>I&I_ znqjmIk}~RZ>_&V}=OEC;+#j~icB)1&O3DcUPJT{5^}&Y#US{j39agP{-EB$v4dCBD zr+@gc#sEv(-wTzLDPN$%zo63)Xk6a$!7Y;V0RWr7pj$ZHqm3~~Qp78eDjFtsBUr0v z?JJWRDU?${J^cl}q)`OSH0l(#{7%s^2r%>4HZcX-!!u*@hklZuq(a`4L}y}a#E3YT z;*51}cDM@_Uj?N=S`wcEwvy$5Gy@LQXT|v8ELjS6+e|Y-ec37cA!CBW1Ko>zzF6@R z8^=vzI5njdAtUv%KWQ3t8qM!C9g9HAjP8Z*1vnLn^9JS2g2R(w7%@607CPB5p2qwH zFxr@wA|0UX ziVZ)MFZcyr&*DB6o*itxjrmX$5W$6tP9-nZq2#ffENZi(V&GP{w!gvPXF`WfKr^W> zM@i(4AEKENN4TW9EPhJa->+cQT2&1_bhJB?GVgVU+V=+v{6%sETv zB4ApTWt3Gc?@7jRmc+$m0v8sW!lY7HPS)WdFBTByT}X5IEd7)vRjK1{P6tb!np{sZ z-$VTUv$X#?4IC;~$FPr+k2a%~HRnJ{7cCpH(=3I~0M5*Fbe0b_kk3*>_ao-OIePE` zKy>I=h`D%F(r;`xy+=gNnf)p{K%Mr8UJYD$! zAR%-QV)mY=`+NYIrHBeWkC+SR>6Z@xVnc5r=H_|&Cj;QZF&u2I=!GiBAOOv-P7qoU zT_`LSP&XD^gfX{+;%w*Y$^>hNER3>FHd#%6nNZ51<1b)pc!4fPAV@^_63*&iK&dEr zkqUmD5tIv}t|!jJi#k7kh!@Aod-3n`^3&_s;a+`!UuOo_OO+1!>I2n$_+wv}M&E)H zLB^l({CWDOKy@WI;1x8GUdIv0(d?F;r7OOrBgq(`qctby%%-C4-$#wOFkgfFJB&>fo?piot%wFCd8O;BFL?g&@9G zeoPl_$ndL{YW5FF*Vl=32gDj2QcQMWjoQI+?sP|KhsW)8>jo#7o1{DN794MC-zWXK z^tyFp;4);8b=4uPbCA-aFX^Q(x#Tr90HJ&DdNaBxt>vOZLZ&K!$Dd`T>5jIITO2Vk zxRsPj3$&CLPWD+ry{I=kHckySm}^@MIM8l1)Pjl)9eELcG#BY=1m0Nz#o!03Y%w5o z3pQHE7_DQCqw(7{wkt?AGMF>t*k6qLD}~-c>bn=|uuCAKBY~Ye_fWq(qMTCHF)9(m zNOzbu(1Jv5W~YA*+M*w{W#IxjSH@ECDoh#(7Mbj^VXQMBYdz0qXQX3WsBd^OiE(|Qd#?hn ze?z$&ju9(mEm=+3@mL)--C88r{tey1(ghHqFr84L5YCZ8p^b<_p&eHP7iJJYp)iy9 z3xy4cUMOs+=43C+i6am7?D;Fg%{uB|06QC(EZ2y8^q&-Z1^gy{ODBEHrNw$5EdH!3 zsE3x?XV`+7p>c)IFWI3q(3GU z5p1k5%5kz34=2WG6S6epJE+s|=y?QO2Zo8&{z4^(t@<7&_V4K$1RAQUlEcm*=IrnnJ)GLxJr%++lH9!m+6iN z0I^|TAm-F%dYS?JNnlxV#mi+qT^O@qQdG6AN2FBe-|K}J@I|B4Plqo6dV%`W5>eao z3>^l|kerUy5njX|uM%AtTm_U!Bkop&V#_vK^J?dnx*^>5KG{Cahd(>6yoi$h0#k4W z2s}aksu=eUP!IUq2A^%SPg{et)_Qx1N?dKQb86^z>zs)eX)(14k6OfV17 zQ6aLwj*1QLi&WPf55KqB=DpukIt|amSZ2_GA;L7M{I$ZLA`Lt#+{7hY?}|5Y+<3XT z9?$jcz1mjsqDZTs!jp+96Mc!TY2oULt3*|;A8dq&Yo1BTbY$ax0!IgPimR}+w1W~` z>Qt0WreAaWVNvB`vH41SI9ayJQ>=Jx<-JB+4c<-`LE8#h?Ag^j%e=di2v;#JgK0AWIX zWWA{sqSl+vzf!&V>m}_Tje-~b19+vN#{DHv^#o`)mPl7oy3mg?>P8*Ks9Wau`-ohGfb*H#;-AabF z1LRtYWuQA$v6~d}E3f#XHSx8R)42F*`&F;wADN?%NRVnh`&#@6COMBrw7lnejaZY9>y&h53D zrdXbLny^p<-0g73Iy$($`-CZ$E{eihi6n<*@F zF^Psyyt`idN8Rv5Zxrjfmwv(G;2Pa@O)X^QVYr(210Rp6pvMB0DHPG8X`od~uwv!Y zJNi8e{4u?V8t%{TC=owoPu*_eIIqnMs7*`^9JUMxHZ`=r2CzJ7qj!14Kqm^9tK`|d zrFOJY;M0ntbzzJ4%76YLPXCzPCx_6ewoRh~LZezH$jLD=QE@fk7sP7rR~VOmrL%uS zp|IQ9o#{w*dXMovOoaT|28;TKAq*UHYc+_I8->O?4s~i;z(?{55VC}q4cQIr(?uUu%ftBB_oc{pv z30MO7j}-PDkiNf8FMDunU}fl3a7P8RsRc^hcvfS=4a_QT&`Ah5!5a7u5ryBmYy-a< zn-KrO4Z7I}h7FX1Ga2}E#D8&vp7MahReP#U$PNMz80;YI@auryxIu3+B+)m`(-yrD znl_yb#_orbhI_xU=@yQ!EK%A=xD>QVSV+9r9zV{6$L?({92i?k3%V zfUR}7E`Ux@hvb$$vD8(&L?{-K;UYFUnT0ii526V*bS5j?3=hA9)NlVur~U~dSf+L@ zDPr;s7qQia&E87C{47LNDswHb^ect$K+64p(gTbD1}OB+-e~48l$4cYd9CYSzyhsn z*2OkY6eFIC?`0`cQk|*35~e(k>`F#l#ft{=_>&GPeBdpdlD$P2BH&eI5kparOb`&T zWI2QQv$yCu21ffS?A5g|%ejR~5PCUFy(GFtgwr0)3^JBmKpc3R4!Z3nSDTs&`F?gi zxpp1NvJ{YIx9M^p0*umSY@KY9LnX^0#2>y*k1#NN;4wmBU0IH6+&NRW!<^li?PlVy z6#WzbnUEfrS{*q-QRJE-azu!nni?Y4sS|>Y6l|qfegL%_x9Lp}&j?Hh9ZESXWS|q( z6S3_M=3#f}4g_2X5!lUBaPkcZ?BZf6;!8ljxdz^kIc0U8O|g&Z)XE<4X#ciq^QHl z&&7N6x+m{ZA}X7kwQMloL|wWM+y8y~4FcSB6I9mgWf+=N8<@6E5wv+Q5!Jr04bg&M zKv9q0?HIn!Uv0m7k0~sGmIO$&Brr(rIi_eev}-qUJ=aqA3)2-}CYB6L!xU zfBTkAX87AMVKF8&M%WR#F4sGQ$0lG0_L!~&E-|5=52D7ZoY~7i>_RIdsJ+eTuTS{PY6;MVn|2F zHt2$2Ex?``cLKx*Lp%(*0K=XeqYH|0unP&{${uZ!a8XP=4ne^BA2qPQKu+`*)(*fJ z8l;UB)FV@YTUxLHE$K>heq8#*&trYi>v=@Wu6_YplwMLL9f*TkLA((W9w?9vgM@K|AyKBkqWC`LYoi9C!_g*;g%q`6h(IL>Ma7$OcE3+Y9A6F9x9yj(67bE ze0O_ov_O7q4I3tq;lqRx2v~WLI(jMImkkq^Yf-vr=AzM$iMhUn5dJ_{bd4-@XGtkfn=)s~8hy=MRosfSJRXvQd(Ds{S65ywCH-8!kT&nM%A zm4aH1-Zxwzr-uvQA>cI_3-d1=a`Y5)_^B{{;+EZfw)??%7;9qAV#H?{KvtwoDnfF$w}y-!1J3c0!kLFrA)czJcYt$u zq%d@pHy_v?cG%Q8LK74lgH-GyKo^e^miUld+RaXBXh5-t5r1TqaFl^7O*mr3$8dd* zy`B2K7)|6%8I>T#UIE%~qlDjm#GU|}4gNbQK&qS}*9(_or;HZJ)X~B;1XW2sO-(Ml z!>ZD3B&Wq?CNrWR0denWVV{aG_U^_lg|W;#tkjM#{a~~kf_4h7F^~NTSbvNbt}|pz zSQxVE;zPBiQgn{mc#C?e;TXCTOT_tfhbH!u^bE=wi_`jwvGGB3A?{kVXFCr_%^>N+@@CNV8`xmbkR@Y;lL$~;i8)Y~ zv+p@(DkxU_#v2PO0|sQ-D8;TAE0E1&g)ImKT#bggDdx06Ecgd*poQrMCMa&4DJNnu z+}K_zE^Et7KIJ$uRQU_*iJxll@uc$i$Gojg@vHb6FW!4AKGaIQpI#EF@SXsB3l4)B;tp-HepwujlP0m^XsDyc4wTo4hc(OT#Ia{AoSpb}vlzA)?ASbEXFjf| z#K|Eja9bIqg*PqGB4VvJx5X-&;5nmYDY^L;tIfm&fa?oVpoq=su6DKJa*76o?_z8Q#=jZf3>l!0?n>;dN`_%29YRsX?7u;c0lYVzpY2?`zgJq_PS)2T86O zCwxB+0u^zrj!m#|g(JMEv3P*}oB0BwYPe9EwNk^0bT)4Vuzli8_eiUCAf^hACK0TZ zR%dKSH`;^Ag5`7$6NTy^+E5pq^kjz?Jq%&kV3N>@B;D6&2qzCqu`C;c%lVxiQX_ z#;$x@Ap71HP9yMI@RM=-TC9je`X+n>VmAB6MFj#0l~c1=v01!hfGd@F z)FV)g@xLSHk9UOY9zX&Xb?z74Vjk0ZxHc3gK!C^QA)BJHkwW`cK&{gaLQFcM;Bo`HAQf;7*4Ysl{*uJLleESgVz}vh0S8k zk5#*IOtMABm+Tm&ggcX%x7~^2C8+|A9~ zMi~s@*eM8=;SA1NaECO$z2!?lYf{2R)xQmccl`Rh7GQl37jM?#I;Vc4G zuv-76+GP+qI1`W{Vj^o+0@ma!P7^MPiZB@gRD;L2$1{<} z-3B_X!r(7JV{ziUWm{E*&lEHI?Ci7g1#E@5m3A4WY89Cv7#}kyE`vnj&F04*L%_6> zhxGyQyf8($$yl?d;n`=C+reJY5EIf?jKghk=w?#j9>vH)#M<5< zPNk?ZGoasQ2;&eiPAuVUyw8~-%;iy9`DB=8qU#V{qF9%C<*RC!>0PcQP-_rv;##Cw zH$&J_IiZqGX2!jzzhM~>|za_Ux8^|G4d`}o|oq(ku%{%cbQvWzZxK){mD_3hu z*bz=-UoYygxoq&NI>fp=>YV38vpz7L#R;vRiLq>^unU2=pESYVexisk(0#}HgUzX+ zW>hnV{USfGDyKJs{Q~Jdwv5_R;w_}VJyRGwi`8{yy<}GN6w#0h*r?*Iph*rR-;+0; z2lY_|GKr=b!yJ?$FL>nen-?qwDRBpA@0}%FVl3EHCs7=X`h~_&`>}$?k~n|1Ko-mv z79!AaMzZ$KOD-kuNA!W&!a)YDv}3Gi+n{aWSfbUU8KVu)=o|`fQ1BTG8mUjYO(X3A zIr9c$U7zhrvE?WuZLhI;Kk63J@ctyQ?qDK>9QXJZ{}>hH}H$mDs#5(MxH@M^>IUPaxC;lb)r zix^2fYSGjl9U%vorE7NqJ@+ExavEHWML96A{0qGZM?uzP9#V{npM(ANdBV8)suX-4 zZOzmwXz>)|fun9vi<`Y_k=LxD4y#+P+7r(q{l)phZyqvU{faDCYeZ?&){M+RC^e>E zEnY$%shI1s>QnV=;`{}e!!HmvBdDrhtE+i3!@!#;zRmTkQ(>A~)33~)#`J6AH6*>h zKp3_V6x6z(0oERM0W|}_x`o1eADnGKXmE6u69AlCD155HQQV~8@c#Qk;g3pDLl81DR`f{NSIbBYB}ClED}~$irR+v?TdsRm7U2CBl%Ul}c^ExRE422X&th`OL-sGY;N?0lSYK9^Y`6 zNLmd1B};`hm6NGFUQ~JT#S$;Clym`DUoI6cKaBjmFGEZ>W zAK-oSGGU7rg*%`J;Ot!)t2qbMx^x(TBg=%Nm6BY=`;W_npL|J1BT4BfBuQqs_1*`d z|8il#axa&VS$LnlT$rOp;ha@FYC7mWle7l$YnKb_d|>`f@!cFO8#uM(=jW#jIR@zQ z<-!Rc(o<~E1O`8ubRF?GmJ2sEFrp2UR$x-ILU<2>fDuIVxMbd0+QQZ~i&FYL9zyY8 zD0Tz0YB>M(@fohJaeshzf+n*WPS7-LjuW%&1PvPp7lYe|6~aNrRPBR?87l=cbEPl~ z0n~>l9~cx3Vjs5SRO!r$O1{21!R0U~S1l91{J~qMQ%HGfm2g!hK>P=X5z-g`D4_pbgm2?t#QPqE@8e&G_dgMy#=jrl zYt_Jm{o}6@!aDfZ_y5BcDqcltWJ<>*q(c}TV|0v$(IX^ebjM(H3 z!dFmDXSR{Yy1Fi{^Pq-~NKyY8YZ=v?Tk;~7roXuPI(aVk8W8_w`@D0E4C34OSj&WS#{K37Cv-IH76bv=;>!%u04S8xgv z^nTuo{`xAPzySSZL37pvb)?RSK{|#@!*ALO_vGgA&F%2y;C=A=(C~gQAB75Zb|f|dGvK7v&`O-ZxWt97K#j5Ru%OJl9>!m(JV$8tZc*Nb=tHt6lV1{?L4 zybqi7k9;1Rb+}Y0^oQP}^XaVEsw;B|ysg`DJ#5p1xhLMy$vhtK>h+w8_w;_=f$jPn zp9n7NKlvth>MW%l8?j3l=e*dh>vAQ$ue)+fe4s~j0#4}NJPlv!!+a1Y^`tV^ZJg3O z%UbvFm0nrSeT}d6ORxIx`Wt<-g6l7D|IleGT9cweq0_psj=&k6z^~#veVwP^d!3<@ z$EiN6cRTpRI2fJNH}!Fx*J-MTLJ#x>T|j5XMcsm{;gTN6U2s{?=5e^9_wYts)i?NS z{6{}kEfo4y|Da3g?6{`mxe2c8g`9*NdOQ0u{m@N)lK0`3{*f=>woY5!KA?ZpMRWvy z()GAJ?&u!e3U~D+9)x>(HP6L;{VBhL|LQCJC4SbA_%43YIchk*;8z{Rh4DbQ;u!p< z2XQ=p*K;@#f9Nf|6o2X?`~e>7>wFr2=_hO2j{aNc)fw?WU4u*Ek?z8=_(zZ90eGyJ z@@#~hrGCg;;K!%KU+_@`XOFk}0-n<0TDGs#=tv!br*%y(hp_I%&EWe4;nAFcXZ2#9 ziL`nrZ-5u2hri;_;8o?}dwdn?^z+eful7?r;UYRGGUz&75gBziZjDTOJP$@@{U)a% zi{8bXkyW4KLwG^|#8=>(%HeQr^V1PJzmC9*x+<5!OFE7lBfB2TeUL-X9(nXrG45xbSLe}Lkxy6QlE|;yaU&GaL%260^&Fmrm-QxIj)M9ye~3c* z2R?(sIyhPTRTt4Ybtb%`D{?Uu)vdXHa9I!Lo+z$Ucp^&Zt-Jyy^-is z_3THeqAPG=RMjoHE~@E8+#S{RE?$os`ddDPn)+A1hFUsHefvA2btx`@+PX2g&M`ti!s2UZ5wUq2A4F(Mb1bXkSBPJ))5{OgGWHbPAg4 zt9%Ht`b=Zjjb{2b-#~L6ZsKvOTj)|c0xfk@_KaPql^(&J(ONIyX=tN&@LIIhr}!Y+ z>AQRdar(KY))n1e7uGq@LC0_uI_h=YDL|j)UFfWf#aerG7u`r#L03JAdm&!0;rZyM zzu+C{t`nQtuI{0i>pAGD5AZg;rXTRv=%w>Cw^pIIZpbCkM^ERj=&N_~61=Xj@Mq|! zGqtd;>jYg@=RklijMDwM3r6c1JQid0dQJ^4>w~--Z(M8%jCSa~^&owbm&*8y%L*L@9n6Gnn z2>ts%ZVPl5T^Rb#ko3Qk}%HcuQ~K zd03_|^C2wPwLANGtkCh?5^MEP9)xxJFsEX@zRwr1L1*gXv7E0ZN&3YP- z#1_4t7h|hF$h+~jzRBNUo6gzQb?SF?EnN)n>i!&u_w-^;#C9DK@0?Wc&~yx}6ALx6086WEO-5l%nN4m7mjgNJ0u8BQ*3b)56dO0t|Ui}_# z!#;hNk6^zJcehsPPjz-3fdjf1*Tg~n1^Xk$q0jVXzJNnITMx%*eOQ;&1@XDA#no{{ zkK%SXs<-kC9Mk)F502}bd=g*ij6I#x=@U9i=f#)0IoHEU?U!qX;&DpP<1zS3@8VVX zS|8y<_(nhRni=YEb$Oi`r*(av-Gn6>+`y+ zu7nGE2PfmAKEnrbNk8NpxUBp4c7B8_I*Ai;RWIOq_>bPeYw?5rh~LLGeS(kSy1v2} zaYGmF6Z-c_jGH=6N8^^B%7buQSLtiU`bXVGH^NVPJP*Jfy@FG4S0}!1-M~G4m{;Sz zzQJekU!AU>eL(-Li|btYMK|WE_*Exz4?NKGcn*Hkzw;;fUFS(~E`&dH97p3%-H-d= zp`OiS@t3~CpW<(wzQ1#M{XbnnN8*tl#BK18p36yitUumz zp;LJ-Uew!p6JFBC`2e!(YkVF#bkZ>QFLLTCBb;{(ci-zaBR%F^&KgKux^660=kNkQS&p-ivh~Gn`zRjocvMw>kEKyLm=NJ^yQ@Jk+>n*$pMf5TL z7_aEtd=5o*hOzc3T}%(q(I~F{QOM9zl+eHNF_hFz$GL8l(h1xdrS&qNj52yJzm2l` zB7cc;x@@9t=~s129gXsOD0fE%y_4r7O5f(sP*LX?Z{I{EU4x6FvOdEjP(}a7H&9i# zO>&%>;CxQtj^QeZ)dRRA zn&~%r8k*~UycsR@B|eFkI^9(3jc%pO=v-*60GnSP50KbbYt|$DlcR+uAm^Wg8&M?Qmp$F<$bRG=S?YR;L>jdtLA$kIj z!%#h+=VF*%&ucJTU*-cCpNswMary|S zAW;{c=NO{L>xQ~ACg_>m7fJdUZ^lI3><#-lCh5gI6qEHe{uonqq50NhOx1O{0;cKL zxDBT3Q9K+obaG(K)GPQc%+lNW9VF{Rd;qic_k0?2^iO;XDLTBseDqvhP)A^%Zo$>? zhMv#;F<)D)uCmgZ|{(IPVzQj+Vxp$^v=YpZ9gUe5v z6QAH`xU~;@md|op?&gD^<6HbZ5AjLq_#vm~@jf{N2cMjgrg0`t>q;_nGH2m*t}H8W z;1@XBm1g5}9KnNK`HP(1mA}LrIXl;~ksN%UbMjal%f-2EEI04sJlxtw^YYJ}k7w9; zetyNq3-Do%WWQoF^fEu&(IY;yIXK4-V$ni-Y;~J zWOpG)$ZX)(hbxf)uyE|}0seG=g7l4$CsUp+FDxrhd9_cklA@IEg|8Qul=e<3c&%GS z=_|cUd*WO28-@Ahr3F0-D^dzdiVAyGbnVltsG?s=tMc-~it-wy4GYR&UeK%Mf$oFb zt^Un*WKh|{sZAEm4B+UxFVjz^Y8I^Oe~)zdzfG{D^wpvQIVX=vPd_$r_UTtjDo_9U z{rbq(_otJt|F`Lt7Zmm?EKg~NWP8bPcWJMRveJ^0!m`I?U|>ku$d$1)`prE(ef&>! z)sfu)`wWy7^#-SVmUb^JNomjOt8K4WN*|MU?vxjI4J|op{kZYI5th~`=95?cQ)$ah zA*EeWMRs{VGj0S$zu%dsh^d_IgZ4k_POlH7Ka($k!_a$A2+x zMo-fHznGEse^(_7jvwO2Y#Q{}o2Ced}m+`uCh2AN~I1$-C*D zt?hDW{Z|>%v9MeB$F|W22b;e)b8Xg_6GJ<6{Cscm$N$w_JYQB+@z`9foAt%2qP~X? zyxelqQ=9glN&8QTD_L4R)MMKf_I+#y-dVRg^61#eS|4l}Vjj1YJ46cqOYP#RZedUk`m<+WcxURc`*WKvUroCGhqLjNG?sNL>h)?#VZ~$n>B_e|JrTL6 ze)5Apvut_j> z-AgNa6;{ZZQAYHXtk*HFx9`@g+pCXlBoX6aY9{|C6%o7G`{pI1^c3kxtPKW-Xu{GE}(pI*2?*9H%I zvFvQfoqsl8S-t))U)sJCKdigv`{Xyf`tc1eEHC^=s#4`w`|?-+o@L*@!4Ft<@yZ`9 z3Qk=uE9!sfAJ5v~bM2G2BfcAxbbb1z&ztlXT5p>|-uNe5nItmM+#b{Xo2Q&i+F7U0 z+Q`njPIaDNv6l4xCo|TkqNpV0S-c*TGvUXlp9$-0ndmCH*ebGXQVMzJpUPQ5X-Ucx z-FkKJ^jfzbg`En^UN0&rd`t#MTV}0__y66!K73c;^{f%^{=*q8>{eFcD(qJA_ZjSU zHu>mN$Lki6j2Ub0uJ1GFpA#XBgY65;%P|~0hH(eRuN?LIa~-J!N4WAfL%&Ih&jzQFkm6!Q}EOX9yE{r?~2@0otRAIH0QHoxj@cB$N;f zAz_3-0USX{9YX375=lrDA<=}y5E4sBoUAiOa!hNq^EBSfX{l9CI$kg{s(Z=ge)3-m z)eBV2m$4x}bWTGux8b~oa<;li*|O(5Jn7UD5}W(b^$p2}h8q={S01IQ@9?4L8;tkYK^YK0e%q6ml`;5~EW%XsAO#Ux$j0 zT%*e>zVDC=t`DvqnI^ChRgK7~MiUxIDSDVlw_ zla0u!MyFL=8q&yKy0y84j;${Q`*1fKkz0*!s}x{DG4F@E@x1-vHp&??qn^xy;KNNx zB~w$UrF!{jh*8=?D^`*MsU!}ERVk2^nm!~nI=Q*P3YG4|?Mo&5Q_ucw3`PGwhOt)i zuJuFf!(43Y;UW?h^ae|KY*T?dXeEcNCqYYzw!ESYYgAyR##?_VWjSsIo;e+PVsXCJ zVYT6%Yqg0|46%BH-VkkTQZHD3>jmzfl?=0uvppuZ=yzCTIcU27>&W)n$PwF_zmM$M z|1XhEwv*ZRkL*%ALGJlWc5>PN9loP=_wHHZDYP-2Xn0;nMW-=W)cK{cl5z>We_f4^ z=lI|4S&FZ=|Bs);KYa;}@rqkJ6R^r$h)j#`D352(ciNums+h<9DQyeQEpE z2>g`@>iQTp{FO9vHSH%AS6jh_X$(9+ES(HbACWF6tle3Pr+#U zJsfqiJl7Hg?fP`GA$_BY+RspKw}jN|1?{nPayiAJ?>S&5bWjsOS5LkyofRw4Ejj+s;j=FuX^^C zy}W;VQP5s*Ol~(`+r(4!g?vrEe%h2QYr4Ft2c1ZbMr%G&GKiLjY1*%vk^@Z-s@R6q zI9S42wLdi_KR5kF#aKNUyLOm^40nuhcw$WVU~JkC9b~p+j*4-3Fjnn42l>LWUd1%` zU>a$UILJ4SqbkPb!K7+`agbjfzp0qk9*j*p!bwIttDK%3WP34loMf(Zo{H&!(mEV+ zamD)1R@(JWvcb7g#dpL&;wV6g1$}58L3`Rs&N$C9tWulC`m8RWXH(~Qh*HVO1Z2bLrYUp;f21rCE=yQLX9)a-&3 zzxMTRC4CD2O$rnKZ3>A>3iZO}6lOOkE1Pd`?kV5`ih5KUZH#tE3sTu)XbTVWqiV=F z?T0PM>=tuWDlU8UwjIJp_gp?{J>TQXc3*$#V>!>*)d zKvHcCs7JTi5U$tWYelBGrn)>yKB%7mIK6hCi|luO1$2%458+tGEE&;q_F0t3{Z$va z;rd;T>RpM*rDk5Qo$Mx4+*94G*(({Pw20HlLOZ&g(wK6}C3c~Fb{EE_2`qw)B)cnD zbcwEPN3NJ{v-5YQ#!qRY>t(0Qo^5x_UBF;AL^&+2LhCnZ&^)4kggGNF&0vl)grhgC zb(0ISQ}6JKRiM(zYST?W}!-O z?Gb{VZOE=RyH$ceA0ha@4f&zXk1D}14cO{pO;XV7qXg}UC&nV`4>Jx);zHmVP)d!ENZLGVPjRyVwZ?6K0z)$aakpr z!-$l@%2Xfewl|1PiBlw4Uw_2P0dkey*(lsx!>NF>}h*aO?iWqd!@l4W3#i#ob0*T zo{a4Px@PTf&L&&3x2gnRJwotpHo1^}Q6)I`2*KbSG9;%m$CJeQM+oNTka;=tRe~QM zA=sWncI50-39dgva5;y3m-D?!a2Et_X}XH~0S|_?Bg5N`Xy?hnV4s@k`R&Mpb_-SX z$cNC|+mRjZcB<%c51}u%BbVA;R?(9mLJw|FhP1D2?@4>+L+IJ<$(;6cRrGwIz2abV zd$OhdRu%aXkQSv)3)(a7$=UYjROAYVRO%H|o%ZBz`+F*K4U5+5X|Z8o$>a`XN{6W( zJlWd72t4gITF|cTKtAuVPDO8h2z{&rIo{!fir&T0uIka>>_BdHxUCZGm%>*knEWJ} z^5oPfJ?Ve_2*KJX$>&e5QwdHpf(&OWQ@F57jexW~@gzC<Xc-ZPcegRm*!g`~rZTCj55q^$zWX#8 z_w;*DdlH}GC9gqj0qMr4$)=|_tE3A->dY)CQ5p+N9vu1cX>#T1t02N;vaqDEr;e8g zSN}j+sQ8*>ST|LM869N!Vhv!NC9#RDajc5Fv7v*XxK56yM1p+uI9OixF_7-2$RIra=W_sscc zP>Biy0&2_Lj7ec^_!EJ^0i(nKqm8N8&|JbWQHLJI5NQy!L!Kp-&rW<65h&bEo-Qp* zhx@WRem~Qtn~+spSo0&xdsgk3RU{bd}jK;2;0M;Ax@Je&zlan?C?}9WXxiEvFEDJNN>e+ zWaV=k5GhBw@;3;leM2(bl2gBcmrwKioO)-W)PbNJ-`FY0f z05*liLZt}9bfFyn8p0bh5E#KF?$wt9qP_2Yo*aGt7{Yltr`s!)9lL+FAngwdDn}^@VLJa*hs5n<^l&9*@$V zeSw^N;XIH?vY<~{nVi`LPyjic7MGQ!XTbE@nt|oz-51D^7b{=%r1CK$a%9Vkq(p0D z?ZOwyq8Asd=;bxgO|?5;B)eYRt)e%uB;?}63fjvrlJ8#pUPW$YNSRF$f_88&8IoI> zE2rxVt&^nTi4g?fS-IrH+}SE7gcf%ekz>6DxX*LRy4){RTpe0msN%lKB}a3Qskk^= z<_&i(mt4=iq2iKgnK#^+JTf-#-8@fDtklh-Ohsyo^T%QyRTvzQDd=$iPcT)OeS@n+*!_r zj!*T3iPL@BnJnwPT*ah$!o=wIbS8T{f2m@iLXp#n)m`jNE_J@FVlr#y?|x_USLX*R zHpde#K{ve%nbGBgE}mRG=}9X=x2g+S-DQo6dCC(eQFovVIoRcpih0HpCSLbr7jmV` zRTcBBCrmxvke5j1OG97sq*G2`>he;Tm&MGyyu2=*JLh%o+{I=CW12T<(W054uT#5j z-3V)Zd~7`COu7$VA~Ro_C5Hu#?!-&vIt!E(&HOqOe zthI1M*+x5JLC-z+u_Dy=&`XqR_Oc;Fa~5s_wdg!7F&%mKcF|V5BQF~AzAO>4GS6knrt=8a7LwLB^fR&yh#++i& zTlMwL=2(N6Y(`;ze2EP2y1Xmol4qs-xXf#O;LBDAyjJ^)R5l+$@$vPO%jLpKnm!Hv zA@}TAXo7ouOlAL{D0HAc_vu!SYAd-d%0TcfcaNjG3*4`G--MeLd8bljR$hzMQ)G+} zN|EhpIXTgtEe@BB|HV^w6UuHh4t9w-opKU8TU@~1@!$l`@GxJZz!%1px<(IQ8kn1! zL(TO?u4eGNxSK@`mVZl=WCXsVvxB06ETa zrM-!wgU~mW^I1hVpteWRnRw5Ko8@yFR{X_ixY*RFZ~!>ES2ZgZMbsG@C%#p%0YuP8 z8?flFqldN`*0L$~pi|CvHX!>{AMRhs@`{-_VtPS>o^Q0-dHZoKzuZs9%BXP*!Co5|i%Gx))0 zv5p1|)y~yX{YLF>UmAEydrwOP2m9{wrTVXYG2|Lf`3}c`_`UC4UuwJyH>-jblG4Rk zkZE*wHWrJ2XR#JqGTl9zzLKG+ zPkpJiMXWL3WVAUlEybu-EUC5Bf==1P;&zB`quXQ@qutpB_C#j}ye;m;%$$5zs^b}F z1BWpmb2~?-G1G`iim||MEU`dK73Rt;7QaZfJH)pvc_m6ZTG}<+X~LX1*Mu2iwzWAz zrgv|enr6x{n8ZVhjzE8poSc9OmS3Lt;W& zyg9iEb4Hq*N1+#+U9pBp1ku-Sj2546sADy!g&FG9GdDEXH`ER{Ct>1djxje1HCqgZ z@Hlg{Io=ZLXwV=I8aq?n76{V>vD7h#nPJO| zn!`im?GcHNs8;o2qwu|cJu3!dH0Li0$#<_@eH8-)^|nDyYG=N@+N=aYuJ?>*W!SC1 z42RKKieOkmAugo0afn_~TsP^*5UdaALZx+WVha!5ZjNo===d|x27&cGdSv2V4DQ;p zP$`cAUYy-1TAZ!|yT$2rGFp6>E3bQ^)t(_~@1T$a^9}kqeQlc|4XShxXk2J1{z~7U&oxlm|NeVH%2s*zAKz`BugBs>OmIuxYffm9M6K5Lg&XelCT~XbW3}Z zk9&U7(}SJQu>BiL|4lp&`77S(Qm80Qp=*2u-QJ$$%bxoX3ni*}U=vdve^f)wI{nGC zfAgeQ!^>+G%+dedpP(Dpi_GZtK`&447hrX4K}WM&lx1|Np?=(m1=-iUa1BNy3+h&S?>Ai3j4~k&gic?#Q<%ggf{7wktt9ae$2HLDHUpw+fV&8 z8MgH71&&ji({$>Yl&qzD6~AvNRP0i-yG|>WX7(=kBgg3`ac4OyEaKKFzQ1!vc+USW zw}+CD8H(NS!1I$G)4Rr_8nEwpp(H5b~(ET(dIC)(3J5WOW+ zx5|Yy8(VCyOhjfWwzx1JW?OA#xpt@cCL|=>iMe)BPwLBINSpC)y57A5O zb_lI-cRh0=TgIZVNw2!h6~$hXi@mBX+aLNG2P|8}w>CEqH`h}Z@lpEvEe%Yb>EoLl z*c1ne#Udp$wgB|{40P<&)Zo-6hB&h`-0UY;#0$C;735^a#R^Xk*a5;sHoKNOcU2!U zs?X>?9^_sib$+8IY+XUOun$?(XECsp_)9~5nRNI{?zab-{vg9c9j^!djy~i_pKsLI zj@OLsk3QsPpIa*SEU@{bq@-#Ky7ylv6JDSA`s0(jC?%y3$Lm49>~*r~_01BwwtA+n zRHuw$l;>V2KfZnilya`GgFsbB>PEgns@@m{y#Oplsz-BMibkP>IzZ4Zc!Ml^V>zRw zwLHDQ>l^ZcNjc^RT3RN)Q6;e!yp0ib2j3u<-ncA>@yw2DhN<#pVNOc&3}GN`EBlfu zeW&*IWOpJI29iC7ppO-FYx|PV`>s=w(`q2U=}V6GJ*FaOYpAr_X^C;_uJ zn3i9*C~}yS!VS7H{m9sU@AmVg$#nYF(M$W0kNbV1qL%|*ELnZYp}*`$_VwGZqSvs{ zj0q03YTcE7n@;AwfH&?32`!$eX zy-5zdc~C_Tfk5^aY zGbgK|R=iDCzWteuVgh6T+vKaa4=AJpOz$MkM_j!$;mq6Q?Azy5Ot2So>uqxT?K>(a z#EW_F9Wwr%_ur8d7Wmp;%#wG=(sw>qF`-_}j(5n;cXp{5ix+e59diDiZ&gf~7jx$w z^5;8uRZO@S^Zr0eCJdw#0VFXcz&cPWQvJjx!ZP?SA4petk#%KLmHLV4!hZOEHIN?g zA|qvH*H3ILT!HV^f%GRYGRhOJT^K%yk`aUGNB||xXb-ZbFb}@-2hjyyWDGTCgZ1?j z(}XSX-8zVF^CDwCX{HHh;d^cnJ?}-vQ)btdY8CFn@7^GK-;1i}K}{M=$>hOw3V@QC z`X1DB_^lXBS9(zi9@IYg?H^3P@}gjvB&YQ~{C*frfApe~JgC7#C>b(@Rstw#K|?2p z`T%}2htOGG6l|GT)3w@L2y5Z{`4GC!i%gNiS#82M@H;w$9`mAL>BN+A@%7V$-{5;~ z2)*t_+Pugym6VLFr0)VKnNihvk-|stT~bMxdXbH#6b(jU7yNct(mh@j?4($V$tg{R z3-G;INiTVkPAOb+L*W7Z1`efzUC2WQ7wqbO;7n$WjwiM36_xv#WtryuwO3~pI?!oW=F#4Al1*0#MtM$Lp@;QQ-v`kNQ| zv>cKlM~$Fl^awfzKuHtoQx>g3j1(5Zcku}NkrxRKD#ICt9q`*Zg6{I7UXV~WyKo+U z-;SUcyr>sFsJrmHH-g^xqH^WbY-w&`(n$2ck#q`xl9fD9xRvnxY$RRfMRk$GWi-zb zzJl+8k@TP!+09#otML74B>mZo%=Z*wL=`0?t7sK~l3pS9LQy=oUJ&NOcU~2p??t{Q zg=^hL*bKidRdlNtRV1O%3s1rCbQL}0LHRMuWO=45_}zr>ttxuki+qh@4-W}qdsOgy ze-tF}C^`{9%8no3Q&so-t$^>!QS>t}@?Y4ma9T6mnb<$gx8>U{o!yz4(#F04s|aX1 z^!mCm)rioWnNu(L9YENFqv#=T6s@q+k}p?vir@Irl)OKhP5@AnhY6$0DxpIg`7MY4 ziqUkX7v0($+TnK){)a}>!(KF+yeG8N?^pQ$Hkw}ZqM`DaHy#@JjU7YDyJP4$043#i zp88AnTLRyuW9Y|TBwDr{vcBJL`0g1)_j-}4?!TVjW%zzKhJNowqJ_#Kqx=Ssg#;c; zD*===JA07z{AR)T!?AR>7dZw7C!MXflj&C5-o|^=r`h+WUywhI72ot}X$*%aeTCv$ zVP`J9@!2bX7$$v%G}jK3s^vfO68zR9s~g7BjouvJVftc4!B9I^@cZRm2!VI$ZvaYx z|6&x%#6B@p@EbRdlJ~~Z@c^8L=z4YSUfL(Wq!2pjUQqZ~*kH^qyVC812f7bD;Z)Y_ zNgXL|+ELaLyxdQQUd7c?x&zu_KYkcglhFeP?N#fFhb2J^ZR?HXCYVdjhyD zL!91}$v9zhvsV`Mk&;{bj*Vu&^Wep|@6m6@GnObNN@>RO`3v${km<;PZJ^Pf~2X&@-KSYUT&7C02cFQy@2CIEiRCqNiXpeq5O($q^< zm0ipG^~^6VDaZ1(P{-3Ek2bT;(=s3Xy{}|xA_W`y*=P|=HNF;mLw6_`$*<+U!TS_< z1@C*@hZ2Lwu`Fc5^4wvAjDzW5rW@Zfjd|`6BdpRLLo!hsqkTNHB5(|`HY>=?N;4JY zXJD_v)vVlJ&@nYJlbt1kM1-CL8{7EET@KdiA!u6`L##Og{I!A&>E^J6(Bz1i(1=j9 zyI8wHw8G-l9Bhtj*#w0?gVNrdKvz$c8H8B<4^N`x>q+zofW$L@z7rMmSb7Zw|I6_G zZW8_8i+mm;+n9$8vk?KC=rQ_W2xkAmlOc;H(@Fp(mY1m|&oeIgFMopWlRB6wH;@gBFKj=iNB-=M&R zs4XZl4~>R zbuZ;=g%aa}m(;>U!?an*$1FMn0M*aqB$-^9o0Sl-rm;s4D9EoCE*j~uQ3IiOBG~>} z^eYxxX#{_pQssw~4E>M}15jvDuTuUW&DAmxE&q_N@X}sXXq}GEmTGx{Xu-hbe;R~m zKBQ;8^w<72?$NU;88e%X1yBdECeN|Pepd=(u{)fOf*ztPuZIbHi{4Heq7O3|VZbD@ zS@2(r2tJ=pw@UFy9cwhk5>_7$yD_gvv0W0Lp8k#LGX4esfpaJsG=~lbcqsL0Qt1C} z>Z=jKnmKf{6pxhplK(~Oe}VkL96E3=QfHkV7Gu&BBod~F^ohQV37;#`SnSxVSn29q zT!P-8m2Y!qS7SS7{xI}N3vO->uM;fwV-)Q(#QOPMx{F1Q#(;ht@ZLO1#?Pbg14wlq zz;{qrD*^N1JAWQs;6--Cu!8~Ektaz=)>1Ks;SaWc%xF^x*aF(E^XN8j5Y<#DG2nOj z{xOf<^deO?LsGzd^O2MJ^nCy&C+g7EIN%fbemb8n^CF>3a3Ohv*d*Xf`0kre_j{38 z_$vcfzz^{KaX!7`MPlHRkx>Cd7f>>60UZvYq^S;E^#kU>ckTi@PeLj(mk!1pHh{+> zk!z#x!2a5IMlOVK*39uI1Z)EN<^^=GH_D+H3AkCld|k@d;X)+wk9HRD2PkeXptov7 zkI6ft-wo->bqq2Vwr}4)t3x}MKwX$ZDk;odNXe{)bTI%1Ah~&HKh;qB%6PPqne^g_I)#=VE=H3j*aq~JzR<}Eg`LHKP`i#mf&v9ps%FM~)H%c$7M zs1_isS^=J5RhnI`N~O%t`WW+=kLfx9mD`~ijNA96JQr8wsLik*>PQF}_X(!NpU`Ol z4}}=T_C7Km4Y3uZ+diTDYJ_mHG^Q#c&>%gHf+d1feh2X%pU}T*gpu;K=x((OOJ-w{x=~;qdLbdqmux_C5 zH>q3)>5XOd-lHLY{hJW;mSa#_PCo&7C|}Zk6zb$r4j%>avE}r<6h>*b+QDdQqAbrx zW8=sw7Jr5|1&Npg(Wvaq`#=zi)f$!}AtWIowW+EVP#>?L(*PdI%{;`(TF9fhxdh_N zE9fsZ!h9|@^p$cT?zw;*-XEg+i`0xBHJS@d5LuI%vXYXiE9qPSOvz#1)~6S2-f+63 zXP=S^&!Awrj}i{2H!&|?Pp?VwA3*$J86{Q|R}x^_T7eUTu);zTY5Y~SBh^;Ri!nVO zl0P2Btrr@X9LkgsOv0Z+vOlk+Lq21LehfR=DUttw>^y-ePku&!lwwxK+|Vak_Zf-3 zaK_H^hxrL^tXu`v@G80iz*`BOq)sP?`izZpHF_OF{Rr|atLP0Wl&2K+DGkLz=>UES zLR!UXnC+_;~lEoWRm|lu;W7cYjmDTiP053NZ5KjV&XN?k1&fmq;&=b%1h~S6S z^p6_xV3=#vg2l5qJWS8Iz6(})Zs1k2T@Yp`HnLpJ~@Q=4Om!7^9Y z4-1$cvPsB&p#NG!A22E`E-HHVMw3C@4}t=sS*qs|2CA3LERR7wTAw~l2$;K;l8@HX zl>i9m`x>sr!?o3(wh(w8v2-~gwYZ=D_wbxjDk!kzVfhiS~{v^Le~4r3JTVC zAxz0)NHAN?88OmKf{k*g5czj&=^rc&wsZ;LN5RrSUL9ecg$}d%bGijU!Upn@)B)Qa z43&OiJkJH50p{%I^qfSXRIk1z_J3_e6Udto6Z`Zi7t0ZZ<9UsST@`_Ve<8$!&*|uO zYRs`z?8sC)v3w90xCZ`f*U`_t==x|W1we=K!Cc@`_#azGk9*O{SX6h!#7oPjeu=Qu z4*Ubio9pN;iN?e4+ALeRNCYY^n+VEC-U1IUaOxM7O#6b)1yBmw67^_@sFDhs!1KHw z4;Q!-6uZ8lyCp(TtVR}VTj_|6-J6SK-ZxCca`G#PfBS;oVPT+cW4C+agnb3OO_y*1 zeQ>ibvteh~VIxOUy9mXpoj`VtfWwNlJ(S0GN3PZBz|rGeYaV-bX5TH0T~*<#OXhs_8=qYMCkbf0Nd-9C#YRkg*;m1MNy(Z2*TqV=m|#88c-mvB+5aA7E9p3jacMu zq=NwzR0=iWt^w@B_ylPJr^A27M*4vl-Jv>q9sIx8NY{JOso*fnYr0nJ6L;i70Qvq1^fCyR#_ZOS!dgfJ)RYB~= z9~9oE{^#4+bP*O}b(yI@j9(4WW`oI~5898Q-)y2sl}I%~yvSN)SkSwhDH*q!z6an* zZ4umyH`9-p7p&7g6%)j}U@4>|w-q*PKGMlroHKw9l_kj1`2vBqZKm6m=#WmVoX#!y z+}=#@CeVavQN9(P!R#^+6h98n8mZ2$o zqjg!kvhD|axW=uXe9;_gZypgEk=`OHG&HnMeI#-XvEST6M{f0U>nPmEw$kIws|L3! z6mD(hg=(y-YxdEBPd|eE+E#j9i3s_6N#@h6Z5U9t(b)i=`dAD1=iBHy=2fHi3&EFS zTplF-%M3BchARJtpf3^N>uvOi5*5-wUvX7gN8wq*pj6V>mQBpDZagiU7=ngur=)T_ z9SYz{eKp)`w$rtW7h;)2QL=SVXUYu#cW%|v3qgB8uy;HC(o45irZd*0y9R>m+vyE2 z-RZ~1H+2U@-wrw*fMo^g4x@}kAwgT&KfE>7+4%#iJp{d0ONE;MJCckS5nh=dis5KYZ zdAsR+iAWg+0>cT2F^ZPqstML#^qN>hv|gyS8&rFC)5G2vqmXE>&86t+>ZIsvM+mk4 z0RHA~dW(^vB`h9aL}m*AMQ{NXEQ~NW@WXo_Wgw4Vhf8aMF!#?8Gu<;pYo2Jwj*)0j z(;4%oL2rrlaf&q(ssKs#W)6*m?2}&5!iDR@1;dap(SyIF69JTlW4I0XoiFL1)x1XS zL-X24#{hV!X2LydAN{bJ*K)X5?4v8Id2NS#$3D8Vn%6P7kME-=m=`5JIAMdssY*-H zzs`z@O);o5>~1^$<&V5SlL|$(_fIffK@>Ok(R)(lo=FU*Mh3nY#?U-vZY02>0Tz;i z;j{g)h}lm!0;n_pz%WMsIu*-dXjv{-mjP2^!$nYC+E0IG#MpT3S^g@g9JdJk0D9IS zHb6x6r+h*`s!8uaH810!)~9qo#*Pydn;Y~m%Je-3{%saD%qA>O%pj-Poa`kkQ*xee z#llTX9rgk--(kx%6^O+)H{ST-mZq9$JchV93r>}oL*vaB_QH3ZhcK8MG+>9Z;K$x6 zICG6mkNXN1F<;T$0IZsj{5%*UsI4rFRrn4}wRaw%y8slLrMS1p(VsOHF`<*;M?$nh<+CapA8hUVaz%wi zVVzYuMUXKC+-o)vGwJMs7z3Z}O?`4psrJ=U$_=ByNquk@w%u6~Ff5>Ma@tv((RpH+ z$!QXeR$L2b!{rWQnB9ANPsi25ejGY~I}>goYi7yJwM*JisG4EgjMgq~N1IbK&53o) zq0ylc5wMj9@4}eD3${dAhY$>lQLe)WY1JXA-f5vnr%vn3xvGy1I|Eagnnd>;X{62+ zF`bjwiw4vTi_0JwMjVDl%}xhXP+_>#rQhtc$%~ z!SEZ<*ACO`UaB#mQg*w71;eDTQQ=?HDF8|;rny=|v3Gb1{m?IhZtKcdc zCUoVgWMJ2)lL0f#0C{eM3h9D4Ef`Qqm1arCDFOA6iA*8fG!?{M2Al?M#);IJvBf!-d z`TZ&i+p*z?O3PnP)2py=g=at4*TxKn2_gx>Btpzda)>$XwuTsX915u=$7l@(9}}1y zk7g32j}XMkN3rleN;d#V^(XT69!ejWTSw__Mu0Up+d)PFMK&wVo-W1O04Fe!(aFbP z2YQUo0$@^=Wt3H{)RT;%EQpKo1O^>8k#QwipP<2ERjlj9%?PvS7(L8_%CX~qNCyj@ zl+aKR@52AyF?!#FHt|6i_Hnw;X0)>A>?dd<^+xQw3Z`ktvHf_Q&H#{NGJ&0-2s7<~ z&(7m?*F%U%(^>eOJ5JAg5&kSh9n&rN+&)h4JcNibjXQx=zzI4YKuIHjg@`gOhR;VQ z=#qyJ@usct*>-|%_agKxM1<)Sd`_RBXC6XCn|_DSA1CNdhQOs-IJ{X=iYmt-0Ld;- z5Ly$B30ee*8;dQ>n4K#+JG#0v#@fLPqh6yoSxr9a5Xz=8CowfVN#_G_0@1vN^C%cl zD!RQ&IiIcoAGq_LiKFR%tammEPn!}2-FvxgV zcCM+vE7ydhmZtugJh`|QfedCltX8|2#!g^btkyK(_vV^%9X3oc*dKo!j9`WeMm~Y_ zm)6Q{G?9ihpTH!uwpOZdgK)Pl+TakPGW}}D1jM>i9mTm%*prh3;?2!d9dHH2nL71N zeK9pTISK|e2E8T-%sL4!%{xWUpOQGQhygHNz0b_(qO`7ya`EXh1D<$+m8Jx38#fhV zU~r3x)fQ-pt)1+ES!#T`Kg3*`7jma@@<6Y^6j{uHb0H{aQW#( z%jGvFzFdA2IVa3`#puXEJ$wEOaC?mWuN#eWCFpC%KK@@Y{ebk|`<9OXR^k@xeb9fi zt|-SX-7mkuxZW)0iO|b1b$bV*%u-GbbAt-YEwXvA$^E3B?JI)rV^_ zp$KDRg;5`?7vf;j7imJ4rd@zIy+BU^NHWmO2mXynHh+APl20zuPXQECStOf}!{@|B zdh#Jer1=_ru3w}#ya-7o$C#@wVf*3|9SxvFB_ZmY=fY>+B|6`WkVJBXc|CkKT%sEv zLPVRtfzQ!P^cX{EiCE{s`FD9X~-!&0izmcH@|e&vz+Xz=qhuTU*5;+4(a z;Ng%A38`2e!NK=@gJ{gyI2Xf>xIYkrEz@YtiODH;gSnl&ynR+0{_MEcAwuutmxyaF zU>E5VXz;_-8aKV^1@kY+)$Gf3?PX-npRl9*6{R`Sb)r0O6{Wl^rg=?(guzV#Y~{%N zR+G*?I-N%V_z3>;^#c;I&QHgB3KQo({*sdk2cH06=8KjUfExq?YsqU+-AruLn+Itq z7d}u!`Nj`;s%eFn&wFeu+h-b`j`uz+GpKGTHyt8>C3lCXen+_5xJYUee+x%ym-4Id zUd7yj8~6)64LX50V^cc%5?j;4@DbN#%2GeT2z$>QlbG(v#2I`?t~t?_UtF9kMi)Cp zF`dcR?EY9(xtMRB*a;?w?Q%pbobA->BOHm+wg*OsK#UA_k>4N<61Y>9&%{E9DOA(- zHjTv+V2SgI^9gFAwZ!XcnPa2$5fQqih!kBAZh>lGZudr~3DhsjFDfD;A}%o^D)HH< zxTY_+eQOc6@#7K_(i4&!CM3J8$*BqLnr6j;3fmZ1w3$bJ2W|X!^xXHTIUQk4eQdqS z6(ZN0Mq91kw7!CJS46j0wK}O%P~%#`Q$0H6Ru17OlrH!HM%{?7FzPngk5M;sAF7}O zURtQgDb6@KwajiPpqM`&tqqw+6 z?zjYNTvQa>g=4JQ@gvk@SLlH&V2ux{R%Wc*)G|Yu6=8fT(kgPySGf^7ZUoAku@H;4 zK6vqOLZgRc-@{ShPuN?#3j2nvluNKI%ASUC*a1xhZdXUS@MOBhXh%o4sx?ityyP@t zp$5F$;f{9Xy478?M9a&f$Xbb@56Q%xUXAM-%rCrM;*K$QX&nRQZCX}6b8=KYLonQ~ z*Pcrbt*3gio_qc(76(7kRX@pvtUe3}s$Zn>m~y_jw1Wv0-Xm!sRf@1;m8N&}2Nd`K zy?`1X$nN3b*R!`~J9k*B&2y+tObi^hGzYdcl>f%iJSn4hdDvhl3YRVB*wj)xI*73F zMA2Smi}vdO+FDL+RQA(DX~a`4B6PtKZR7O`QBe`GwP7X0YVKz!mwu)n{DMMZ&#;8a zNO^jX@!iaW|7?3j{>Ko86te3!j@35}j%%981~BuqU$M0Ml`aNQ&R%h%|49@=0mWt<}JVPHBnKS5HS1&_OqS;cia9zcpP7@J0-bg!@t=>@NX|LW^> zjTa3asDw^u=p*p|<~lvuO`UfN8z0*8p(F>+2)5!qr zeuyc!+ZtPLA$%AWJB7JKv`A=3)T@1;V9aCp<;3|2FkX`85+PG=Q1bB&x)Fe_btG8; znII3zZF^yDo@(RA0Gv|p!C;~GarmG3 zgPvq)w4eOa?)_vca1e4iL%s;Pb(qs0$rLiRZ-MZ^A9Nt(of2IPHRVgz)D8794TRbY zfmw8uF7^^YDP6|a$tHcUP@@YoL!8MSY!G`mkF1q@-H<1`TRqBL!P2wZBJfzu%;Pc+w2TbkHG|v)cA^qIyEt z-@-iX7TpLS?-X+nAY3_`v$x^S+^ zf!ixsY1+rf_fY0A-X98e>C>g)H7C2nMxGu) zuE7x9b7>}~GA*O?+?hG;V$w+X z9h=NZuHoDwOlaQarYaqA5r+wo-!g6khQu%?7%a|w(b}R@Shx!}uvu+3T=!%%Lwn$I z<4cmm^sEsF%#utE;gt=X!|FDd*O;1j$QFBeC+e@dvhAHvu^IZh8W=-@k(yeDRCH{E z#vj@O?3qa>ark10gCZAb=yRhq{!tEg=^hNbBTWJ>Ly5zY0BHZi9)Pt6@6u)Wz+r!7 zq@W(2a+0P63(%tOMB^iIpZIvR55B&VN89c`I>pOZkU8y#V@v*0Ck~K#6b#i)Qx~PK zmlW3i4)ykcuP{-c!hSPDbA;YdxcMj3$w+*Cm%}I|Oy=e)-*>S)U?t2s?uNwMQfh7x z;f!#Z5}i=Y>_#0?&#M#gjklBO~)B3cNW z2gLkA+yaKLF`=l7359{RQru942}O>|n#5-jduttn--`$C2 zLE1kPA}R-SWawaS7yv5|5Oo&9y=XAESn<--VI~^=8JipF6NEbJ;Qz&7ZaqU+8^C$Y zJuwq6!ew=RK`PaE`9R2_IuL4NxFaJoyx2L-Io>%q!wOZhI*n|@GSiHm)zw2KAbm90 z4nltr>YP9t*9LQU<)q{$P34w~iM?k4t^F|_S zxz6?>962_Gy96NBU?kMPFvszwn8Qzl@)I}7=CR!mX@{{6<}5~B2rWcTt>nnGN^UxU z!l=lDa38AV4p;NK2=}E*?s7G+n{eN%|Dg}VXx4Xa2tkQIm%3lN;`ts$ddf#$$a?)ammU{6ibJD~Y8a?)^)Odifn0jL?}v()6WJFIe? zP4y|U=?N^-FF?3$IJaG<=X>{%G=-6TSC#|(umy{|3F1z~Ro#(SL3MpNcY_gQ!orAU z6CbK9l_Im`##>M-!!dL#mWcD{7KQCcD0I1C{A-wxH`{B@$9;nKOy^$kO?nlG)2ud_ zT!=<#u#eRzX>uJc>N6>CEHKp57`rktZ%&6CGGZGa*`G3kBMU}whX7DqfteGQvtQX| zqiQ5G`haEwc6+RXll4X+@}rR)Su>Jb3&7#}FU(Cbr}byxIoz@e)eTfol5(b;@BuJl zd%dviDW>u%hZSMx=EL@a9qZoTnulu`agGK8 z+*Sr|!KDDjBid?nTdceZmNR08n4M>_+DwcAILx02L2OQSb*vi~2ZtWaY=lp^z3sCQ zAckOPXbXe6r4?u8LKEwTCfCKany_M$L4&%XDR5b_T5TxpYsMIoSOuH}CqJ#?E?0q} zJPw($2^Ov?giSFP572)zOF&eOB+^>8li>vVq0|bX`@{+7DywxcrV5VcVXTx^XLM&b z+Jni0<#ZNf1=b9#4Qc}FKb_mUry&FzOnP%l`#cwJ{={#c=^GiHI>+pOnFh&HDWpV>q&Y47US75-KsMN01m} zuEFQ}819A#5sO8g`&Boe!(<+=#>9CD(6M<48xz9OqhhPZa%9w4ZZv=tS1enANqrOx zMIm+r{5Ou}HZin@`W4`E{jNpjT}yF&p{A^~l-Xc2oo10|Q%4sfGp&9r8FrhE9`za; zi>8v|EirZ>{Zeu5XDUG7Z`e(Hx_jzas%0y#=BM zb{G~L&H_RKZwr@7V2Ch8u;boR(=eL_Og053YGN0>$B`xPak~Mq+3mwBu3W=u7}W5z zP^*(u3h?|Cz(p)3BHxBWun;Sbw5^P*DOQCAKd%c46hn9U@lv5IlJu{jwA3%Di^56f=jQ1IQ{>Zu5WArw0W z!FrfRvlcmVJVzFf=S~2qeIfw%y|Fxw(Mu*mMwz!bj>;H&;C+r9e4jf3ATw6!zf`#z zAqy7ru{L2yPjs4a5u&6$!by3IYpnJe!yX`fU>qW50Ee^K~OzW zXneWE&2~NWn3NJlF&Pg870z46tpw#~letw&0N~>;!F_o$_gyuwTX5f=%-yNxRW$|j zZ3;IUfThF&egOB(Dcmf{ODUfos+q_JL=(rujJ<~_i(MvnB_V-Y18d`!A;j`2+{Wqw z#Y{?LQ&~VLj94%XbvD>7xlPJI4yNL_uy6+hH2rAaaX%vTl_}h<>XEpzm8OIp;W+ja zmkyiD2CJ$sS$9XBOZiZ=4@_oB5q&ZhW7$-0Gl1GpnqzN2j>nIyXY^#F6xj+f-%OWz8Lo zb$zBQ(Uv7v*#@wAKk63TQ2*lDZ*kyHh`We%ZcXP#!43{Q@$8T)iCEr{(|BvClms>o z#8I6PWf~0NGI6IuB4pn*+bFlvdZZ|!^o4Z803v-uD>#g(PtV|fVJXNg*^YRmxdU<~ z#C`SwM^=5ntp;GVqOO2w6xM@gRy1~a)(xeD$4)%4H7gN@Dt$tP5O)LtPkg|A$HIHK zqgQ^ABoRB+aXh;up@*30gjrvrO>OCHtYb}m!c2}#oXIT!fK`CU(otJpTF|2q7OWnz zh>^r27EPVd5wdV0xNZ=XYfsFuy;K9`7<4j9mkQud=d@l11v05Czt92r-{u=u$mAmg3IU+r z3$icgar-1{MexW4=~J^HEFZT)b!Q$ocz(4~8!&Ff^Djc&=YcBd_g8T^gl?B{YZ;;UlQalQ5N?>{e%N5&4W+$aAF7@5 z8_W%*>#2f9FXqUk#oR0aPn`SV{%SFIfO&Z{sxT`=`GJZSo*!G6PX0g{uBM?RRU^fE zEX8E}^pTPuQ-|5mu;@c6?09AFDP zI=K4-7T^)!-VHbfk00E}0l&fH4>zez$Yr<#;I_hT#-oS(DZmzZ0^u$J?1CoD69)G^z@PDi!(AI50-gxCt$=ZO(&26o*aA;u zxJv+Y@ic*Z6ktC*P2v6sa0(s=+B2Do$gL^yR3Ovo>z5sX# zPYby30se}oCEUTth=8XR+>HQZ@VMa425g4M4R?3I=ka91{Wjpg@MOU~1#lFe)^M)? zoR6ms+=l@-;duh?-vH0yX$yCB9kdHP*>E=pOu>@_cV`Ciw1c}pU=g17a8Cgoj;90M zYXIlt`9B@q34G7>AHeZnf3=b$xpUaunt0|NQoN^zwTBer><+Z|~pt_xXPN?U!GyF7aR}bVhg5={g#n z^h$Apa$8$6W>kLl85WSpdB2~Z3ufUtW!;bS_ z4Ar;!9ERz#;cg$pbv!r52tA2Y;BSBmTfy1zYv!=+ybj)}8CIgQpHYv|4Rkoh>h2tc zaXO9rAx$skETrr0ycQYyD1VCa`X>K^3A%I@`!go$CLDoDI-Xl&vQFa^Owmg?3sdzL zUV~}+5PyVB{Rf}KbX}loD0E9_>6*F}X6O#w6f<=yC*WzF!|9l%H}Epd)(3b8vh`&? zhB>-ngtY`Yx(~O)Gdhc(!d$(X7hs+(XKu9L7xZ|B8$ zRu_0E6gn7O))BfCmgtH67@pJb2F6l-mA}I>-SA=SG?weG+zQX@5uAh-dIe|U1^q6s z!;AVT@5M@eoqxe9U95)n0jqT_u85a(dv1m`dI0yp%Q}-sW37IX=OI^b`$7WrmmOrqUV!1p%)4e$npX)NU-G=@`cc|lMb$Op|T-Rgm@_zlM9)tsW$|G*S zp2t$JZV(Dxclk@bQ*XpqI?RD(pFX4~>2mm5=W;f_(XkFJ#~pMI>nXY)zSS!@2jA%( zybj;%-}o?&=)6sBS0B|?ba5Qh-M9sg>&ZL>C-n0?2S4af_${2&|L|Fy(lwjeCvjT0 z=cYKL2XYVms55yCe$uOX9?t4ryb(X^le{0l=v#aNzv?oN+J|vYH|1*hO($?0oY(0* z02lOPo`H*c6TgJt^+Dc=KlBAYj!XL9#~feuWnER5z!lw!>*K0U;?DR}PvW8YOE2ea zT+>_m6Jai`AP+;;R`x{@xAFx{N%!7KJ*J-HL^(HZ;{^6Di#8{Qrs zwwZI`{oP?-^2f-pFY+n)|7XJTws7BdK^?9iz!XlP;8@(R$M9ej*7GP+SKmL05DMT~-%DN!^5N-~ru@+o6;m$^B7U=kPR?(d&2x%IZ&f zJId+P{4E~TxA-#3>ylA^R#ebFw>1=jinA`vI!}zXM0e2@brHnrNUn>nI+0`1O{a4zp3sYV7P{+AycRul(GHGFI$pQY z;YiTScqpFK+j$)l^<_Scp1N>HYYBSkrd$!d^#x8vA6+2UTBVb89bFcEbuza=vd-aA z=%=^w3iQ|4_yAILrB2o!4A8M$4+HgN?u|iuJiSrw-{P@Yt`G8uSg9}ZNvzV~ zyrye#IlQi8_)%=oLpTu|^=uxGH}vbg3~%b4{2t!Y|Lf!Ur8nu)x-d5Dn*0#n)`K}3 zTXZI8;2ph~7hA5M-8RX&0JiHyj>itYfJfn7y`ER&J^eoK!29|y{stfDYJHu9 zV5e@zjj>Dj;~0FX=kREJq&M^P_*m}`jNSSapTH-&V6yWs{i&|2%VCd>=9bv2CvhS^ z({J%J_+0Pi5AlV*%*U`#7w>01#D3kBtKfhh$Z-XzS6b(JBPv{9mmb_ zwI0jK_(uQ6i*Z=r<{S7{-=E^RkMDFiSHSnWA=k$d-Hu!1sP4%LIHq%XB980B`~gnr zJOivV`UkyLx5Y_)jQ8M_zRBltT9+B<{0?XI4bH}oI%<$}BK)M2ISyy_EFOiQ^{c!T zzv#WZ4ZrFedkZ>=Q+5b5Az4OsDI_N_+8&S#QC-ULl4rA;ga?V zprLeJ)|+@GuIP(=2v>E1RL6Avr*5Rn;xFBq+u)iW%-*&Xx~?-h1Apu1c_IGMZ}V%o zq4)D{+|)nw3Ea}bi!|5tZQVgv!M{3Vs5$76m+8;zjkrVC8Ri@Y!OQn+csTL|U&Ei_ zPF-oZ{R(&KCpi*f`YT?DyLEvP=A`e@D|I6B>d*NN+^c`&qsXUk@m1v4#Yb8L19UB} zf`YmYN8&!6#63_*-{x(&UvC|4pBiPY(TB!3-$9Y!`mxR#QB>!Q^V~!+y`R^ixc-Yz zpoA`$=4V1l-I8nK0iD8KP)e`k87QrNTwrJy%IG}l_CZ}%N9ZCbr(1I)Jg8H+JId>9 z9*YXvC;WvzKt)|A!}d{0kL1<}*PrtmRMzMCD5~gE<2{C`s+)3kMCb%=k7{}&k41HT zkbV4K=plWHPvT)+XM(w+hECxYsHvCmB-GOHaxQA?xQQM+T}O}9$*8Npp5!{z(^aN8 zK2NrG=ytjR9?^q2A-JrUa3&h+cQ_Y~^fmq#jdiK1_AfNiHMlyO>KJ|$&Gb7wA-Jsb zPqR+w$8?k~gGl`Z$Dz3%#3^W@CvZAi>bX1zQTi2r5v}wt-il~_p1;TAx7L9ftV&{6N>ZHU$7X1LE;_HVsG_dsX; zBY%Q;eT%OmLD!z?`GhBREH_7@PJP;ON%z!C^#t_N_snv=?yW!63FxCQ^ARNJ#T~=v2I*V;4+iT(bKHLn(UrJ7 zQgtFn;wim~(=b$@<6Ri0>*QF^FkCOr~D4a z>bvK!R~Qp-VbLC+S8QuV3OUOwb?kCQQ_4_z))PzxWC!>%8-= zMVO+?@B^5tYw^RFrdx6(GIclZg6Vo7_eYk_I1wTPwPSp91ry@{iu$> zY(0cKAX`7jnV6#w@Egd{H~D8gqpK~n)?%)1#*HygCvptt>tURV1$r(|#zMWCUxfF} zg_T(3Tt+{utLv&*tW!A(OY~%(famm1UWujp5Ff-c-TYb4O)S@O+zHR?MLZgJg#PM(*deT$o$9u_F9E7v&Ldv>4}iqs2LwOK@{HUXqXS13cbFN^uz*Db1U? z40pA$vit{^pl+VRhWZ$72{xDB{`T^X%6O9j)Qqs;9y?i9L%dK2lJ}V z!Mtj4Ft6Gi%&Q&;^J>7syc)BALe2aU%qxI!N5j diff --git a/game-server/app/game/DouniuRoom.js b/game-server/app/game/DouniuRoom.js index 03568d4..a2c43c1 100644 --- a/game-server/app/game/DouniuRoom.js +++ b/game-server/app/game/DouniuRoom.js @@ -58,7 +58,7 @@ DouniuRoom.prototype.pushWillStartMessage = function() { time : this.willWait } var response = new GMResponse(1, 'ok', data); - this.channel.pushMessage('brnn.willstart', response); + this.channel.pushMessage('brnn.onWillStart', response); } //给所有人push发牌结果消息 @@ -96,7 +96,7 @@ DouniuRoom.prototype.dealPokers = function() { pokerRes : pokerRes }; var response = new GMResponse(1, 'ok', data); - this.channel.pushMessage('brnn.dealpoker', response); + this.channel.pushMessage('brnn.onDealPoker', response); setTimeout(function() { this.pushGoldResult(pokerRes); @@ -174,10 +174,10 @@ DouniuRoom.prototype.pushGoldResult = function (pokerRes) { this.sqlHelper.updateUsersGold(userGoldResult, function(err, allGoldResult) { if (err) { var res = new GMResponse(-1001, '无法正确结算', err); - this.channel.pushMessage('brnn.goldresult', res); + this.channel.pushMessage('brnn.onGoldResult', res); } else { var res = new GMResponse(1, 'ok', allGoldResult); - this.channel.pushMessage('brnn.goldresult', res); + this.channel.pushMessage('brnn.onGoldResult', res); } setTimeout(this.startGame.bind(this), 3000); From 10452c9ce289635719d21df43a11463c8f3bec85 Mon Sep 17 00:00:00 2001 From: halloworld Date: Fri, 30 Jun 2017 13:48:13 +0800 Subject: [PATCH 22/84] =?UTF-8?q?=E5=90=84=E7=A7=8D=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E7=9B=91=E5=90=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scenes/BrnnRoom/BrnnRoomController.cs | 37 ++++++++++++++++++- .../Assets/scenes/Home/HomeController.cs | 5 +++ .../Assets/scripts/pomelo/PomeloProtocol.cs | 2 +- .../Assets/scripts/pomelo/PomeloSingleton.cs | 2 +- game-server/app/game/DouniuRoom.js | 8 ++-- .../app/servers/brnn/handler/brnnHandler.js | 4 +- 6 files changed, 49 insertions(+), 9 deletions(-) diff --git a/client_unity/Assets/scenes/BrnnRoom/BrnnRoomController.cs b/client_unity/Assets/scenes/BrnnRoom/BrnnRoomController.cs index f235346..02bb22f 100644 --- a/client_unity/Assets/scenes/BrnnRoom/BrnnRoomController.cs +++ b/client_unity/Assets/scenes/BrnnRoom/BrnnRoomController.cs @@ -1,16 +1,51 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; +using UnityEngine.SceneManagement; public class BrnnRoomController : MonoBehaviour { // Use this for initialization void Start () { - + pp.observer.brnn.onAdd (delegate(LitJson.JsonData obj) { + //提示用户加入房间 + }); + + pp.observer.brnn.onLeave (delegate(LitJson.JsonData obj) { + //用户离开了放假 + }); + + pp.observer.brnn.onWillStart (delegate(LitJson.JsonData obj) { + //下注时间倒计时 + }); + + pp.observer.brnn.onDealPoker (delegate(LitJson.JsonData obj) { + //发牌 + }); + + pp.observer.brnn.onGoldResult (delegate(LitJson.JsonData obj) { + //计算输赢结果 + }); } // Update is called once per frame void Update () { } + + + public void exitRoom() { + pp.connector.entryHandler.exit (delegate(LitJson.JsonData obj) { + //退出当前房间 + }); + } + + + public void chipIn(){ + MUserInfo userinfo = PomeloSingleton.CreateInstance ().userinfoModel; + pp.brnn.brnnHandler.chipIn (userinfo.userid, 2000, 1, + delegate(LitJson.JsonData obj) { + //下注 + }); + } } diff --git a/client_unity/Assets/scenes/Home/HomeController.cs b/client_unity/Assets/scenes/Home/HomeController.cs index 9d4422b..da409bf 100644 --- a/client_unity/Assets/scenes/Home/HomeController.cs +++ b/client_unity/Assets/scenes/Home/HomeController.cs @@ -16,5 +16,10 @@ void Update () { } public void playBrnn () { + string token = PomeloSingleton.CreateInstance ().getToken(); + pp.connector.entryHandler.enterRoom (token, "brnn", null, + delegate(LitJson.JsonData obj) { + SceneManager.LoadScene("BrnnRoom"); + }); } } diff --git a/client_unity/Assets/scripts/pomelo/PomeloProtocol.cs b/client_unity/Assets/scripts/pomelo/PomeloProtocol.cs index d1d6780..0f89a93 100644 --- a/client_unity/Assets/scripts/pomelo/PomeloProtocol.cs +++ b/client_unity/Assets/scripts/pomelo/PomeloProtocol.cs @@ -27,7 +27,7 @@ public static void exit(Action callback) { namespace brnn { class brnnHandler { - public static void chipIn(string userid, string gold, int pkindex, Action callback) { + public static void chipIn(string userid, int gold, int pkindex, Action callback) { JsonData data = new JsonData (); data ["userid"] = userid; data ["gold"] = gold; diff --git a/client_unity/Assets/scripts/pomelo/PomeloSingleton.cs b/client_unity/Assets/scripts/pomelo/PomeloSingleton.cs index 0a22d7f..89bdcec 100644 --- a/client_unity/Assets/scripts/pomelo/PomeloSingleton.cs +++ b/client_unity/Assets/scripts/pomelo/PomeloSingleton.cs @@ -9,7 +9,7 @@ public class PomeloSingleton { PomeloClient pmlClient; - MUserInfo userinfoModel; + public MUserInfo userinfoModel; string connectorHost; int connectorPort; diff --git a/game-server/app/game/DouniuRoom.js b/game-server/app/game/DouniuRoom.js index a2c43c1..18a86b4 100644 --- a/game-server/app/game/DouniuRoom.js +++ b/game-server/app/game/DouniuRoom.js @@ -103,23 +103,23 @@ DouniuRoom.prototype.dealPokers = function() { }.bind(this), 3000); }; -//return 下注成功true,否则false(可能余额不够) +//return 下注成功返回该用户目前的下注情况,否则null(可能余额不够) //pkindex > 0 //balance : 余额 DouniuRoom.prototype.chipIn = function(userid, gold, pkindex, balance) { if (pkindex <= 0) { - return false; + return null; } var goldBefore = this.getGoldChipedForUser(userid); if (goldBefore >= balance) { - return false; + return null; } if (!this.chipList[userid]) { this.chipList[userid] = {}; } this.chipList[userid][pkindex] = gold; - return true; + return this.chipList[userid]; }; diff --git a/game-server/app/servers/brnn/handler/brnnHandler.js b/game-server/app/servers/brnn/handler/brnnHandler.js index d12c25f..0c95f37 100644 --- a/game-server/app/servers/brnn/handler/brnnHandler.js +++ b/game-server/app/servers/brnn/handler/brnnHandler.js @@ -27,8 +27,8 @@ Handler.prototype.chipIn = function(msg, session, next) { var sqlHelper = this.app.get('sqlHelper'); sqlHelper.queryUserInfo(userid, function(err, userinfo) { var cpr = room.chipIn(userid, gold, pkindex, userinfo.gold); - if (cpr) { - var response = new GMResponse(1, 'ok'); + if (cpr != null) { + var response = new GMResponse(1, 'ok', cpr); next(null,response); } else { var response = new GMResponse(-105, '下注失败,可能余额不够'); From c7e5527d8ec1bf86c4b472fdbd6c26b0be17edca Mon Sep 17 00:00:00 2001 From: halloworld Date: Mon, 3 Jul 2017 18:05:32 +0800 Subject: [PATCH 23/84] =?UTF-8?q?=E6=B7=BB=E5=8A=A0png=E5=92=8Cmp3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client_unity/Assets/Resources.meta | 9 + client_unity/Assets/Resources/mp3.meta | 9 + client_unity/Assets/Resources/mp3/click.mp3 | Bin 0 -> 2760 bytes .../Assets/Resources/mp3/click.mp3.meta | 22 + client_unity/Assets/Resources/png.meta | 9 + client_unity/Assets/Resources/png/10A.png | Bin 0 -> 23386 bytes .../Assets/Resources/png/10A.png.meta | 68 + client_unity/Assets/Resources/png/10B.png | Bin 0 -> 23386 bytes .../Assets/Resources/png/10B.png.meta | 68 + client_unity/Assets/Resources/png/10C.png | Bin 0 -> 23386 bytes .../Assets/Resources/png/10C.png.meta | 68 + client_unity/Assets/Resources/png/10D.png | Bin 0 -> 23386 bytes .../Assets/Resources/png/10D.png.meta | 68 + client_unity/Assets/Resources/png/11A.png | Bin 0 -> 23386 bytes .../Assets/Resources/png/11A.png.meta | 68 + client_unity/Assets/Resources/png/11B.png | Bin 0 -> 23386 bytes .../Assets/Resources/png/11B.png.meta | 68 + client_unity/Assets/Resources/png/11C.png | Bin 0 -> 23386 bytes .../Assets/Resources/png/11C.png.meta | 68 + client_unity/Assets/Resources/png/11D.png | Bin 0 -> 23386 bytes .../Assets/Resources/png/11D.png.meta | 68 + client_unity/Assets/Resources/png/12A.png | Bin 0 -> 23386 bytes .../Assets/Resources/png/12A.png.meta | 68 + client_unity/Assets/Resources/png/12B.png | Bin 0 -> 23386 bytes .../Assets/Resources/png/12B.png.meta | 68 + client_unity/Assets/Resources/png/12C.png | Bin 0 -> 23386 bytes .../Assets/Resources/png/12C.png.meta | 68 + client_unity/Assets/Resources/png/12D.png | Bin 0 -> 23386 bytes .../Assets/Resources/png/12D.png.meta | 68 + client_unity/Assets/Resources/png/13A.png | Bin 0 -> 23386 bytes .../Assets/Resources/png/13A.png.meta | 68 + client_unity/Assets/Resources/png/13B.png | Bin 0 -> 23386 bytes .../Assets/Resources/png/13B.png.meta | 68 + client_unity/Assets/Resources/png/13C.png | Bin 0 -> 23386 bytes .../Assets/Resources/png/13C.png.meta | 68 + client_unity/Assets/Resources/png/13D.png | Bin 0 -> 23386 bytes .../Assets/Resources/png/13D.png.meta | 68 + client_unity/Assets/Resources/png/1A.png | Bin 0 -> 23386 bytes client_unity/Assets/Resources/png/1A.png.meta | 68 + client_unity/Assets/Resources/png/1B.png | Bin 0 -> 23386 bytes client_unity/Assets/Resources/png/1B.png.meta | 68 + client_unity/Assets/Resources/png/1C.png | Bin 0 -> 23386 bytes client_unity/Assets/Resources/png/1C.png.meta | 68 + client_unity/Assets/Resources/png/1D.png | Bin 0 -> 23386 bytes client_unity/Assets/Resources/png/1D.png.meta | 68 + client_unity/Assets/Resources/png/2A.png | Bin 0 -> 23386 bytes client_unity/Assets/Resources/png/2A.png.meta | 68 + client_unity/Assets/Resources/png/2B.png | Bin 0 -> 23386 bytes client_unity/Assets/Resources/png/2B.png.meta | 68 + client_unity/Assets/Resources/png/2C.png | Bin 0 -> 23386 bytes client_unity/Assets/Resources/png/2C.png.meta | 68 + client_unity/Assets/Resources/png/2D.png | Bin 0 -> 23386 bytes client_unity/Assets/Resources/png/2D.png.meta | 68 + client_unity/Assets/Resources/png/3A.png | Bin 0 -> 23386 bytes client_unity/Assets/Resources/png/3A.png.meta | 68 + client_unity/Assets/Resources/png/3B.png | Bin 0 -> 23386 bytes client_unity/Assets/Resources/png/3B.png.meta | 68 + client_unity/Assets/Resources/png/3C.png | Bin 0 -> 23386 bytes client_unity/Assets/Resources/png/3C.png.meta | 68 + client_unity/Assets/Resources/png/3D.png | Bin 0 -> 23386 bytes client_unity/Assets/Resources/png/3D.png.meta | 68 + client_unity/Assets/Resources/png/4A.png | Bin 0 -> 23386 bytes client_unity/Assets/Resources/png/4A.png.meta | 68 + client_unity/Assets/Resources/png/4B.png | Bin 0 -> 23386 bytes client_unity/Assets/Resources/png/4B.png.meta | 68 + client_unity/Assets/Resources/png/4C.png | Bin 0 -> 23386 bytes client_unity/Assets/Resources/png/4C.png.meta | 68 + client_unity/Assets/Resources/png/4D.png | Bin 0 -> 23386 bytes client_unity/Assets/Resources/png/4D.png.meta | 68 + client_unity/Assets/Resources/png/5A.png | Bin 0 -> 23386 bytes client_unity/Assets/Resources/png/5A.png.meta | 68 + client_unity/Assets/Resources/png/5B.png | Bin 0 -> 23386 bytes client_unity/Assets/Resources/png/5B.png.meta | 68 + client_unity/Assets/Resources/png/5C.png | Bin 0 -> 23386 bytes client_unity/Assets/Resources/png/5C.png.meta | 68 + client_unity/Assets/Resources/png/5D.png | Bin 0 -> 23386 bytes client_unity/Assets/Resources/png/5D.png.meta | 68 + client_unity/Assets/Resources/png/6A.png | Bin 0 -> 23386 bytes client_unity/Assets/Resources/png/6A.png.meta | 68 + client_unity/Assets/Resources/png/6B.png | Bin 0 -> 23386 bytes client_unity/Assets/Resources/png/6B.png.meta | 68 + client_unity/Assets/Resources/png/6C.png | Bin 0 -> 23386 bytes client_unity/Assets/Resources/png/6C.png.meta | 68 + client_unity/Assets/Resources/png/6D.png | Bin 0 -> 23386 bytes client_unity/Assets/Resources/png/6D.png.meta | 68 + client_unity/Assets/Resources/png/7A.png | Bin 0 -> 23386 bytes client_unity/Assets/Resources/png/7A.png.meta | 68 + client_unity/Assets/Resources/png/7B.png | Bin 0 -> 23386 bytes client_unity/Assets/Resources/png/7B.png.meta | 68 + client_unity/Assets/Resources/png/7C.png | Bin 0 -> 23386 bytes client_unity/Assets/Resources/png/7C.png.meta | 68 + client_unity/Assets/Resources/png/7D.png | Bin 0 -> 23386 bytes client_unity/Assets/Resources/png/7D.png.meta | 68 + client_unity/Assets/Resources/png/8A.png | Bin 0 -> 23386 bytes client_unity/Assets/Resources/png/8A.png.meta | 68 + client_unity/Assets/Resources/png/8B.png | Bin 0 -> 23386 bytes client_unity/Assets/Resources/png/8B.png.meta | 68 + client_unity/Assets/Resources/png/8C.png | Bin 0 -> 23386 bytes client_unity/Assets/Resources/png/8C.png.meta | 68 + client_unity/Assets/Resources/png/8D.png | Bin 0 -> 23386 bytes client_unity/Assets/Resources/png/8D.png.meta | 68 + client_unity/Assets/Resources/png/9A.png | Bin 0 -> 23386 bytes client_unity/Assets/Resources/png/9A.png.meta | 68 + client_unity/Assets/Resources/png/9B.png | Bin 0 -> 23386 bytes client_unity/Assets/Resources/png/9B.png.meta | 68 + client_unity/Assets/Resources/png/9C.png | Bin 0 -> 23386 bytes client_unity/Assets/Resources/png/9C.png.meta | 68 + client_unity/Assets/Resources/png/9D.png | Bin 0 -> 23386 bytes client_unity/Assets/Resources/png/9D.png.meta | 68 + .../Assets/Resources/png/longhu21_n.png | Bin 0 -> 8235 bytes .../Assets/Resources/png/longhu21_n.png.meta | 68 + .../Assets/Resources/png/longhu22_n.png | Bin 0 -> 8235 bytes .../Assets/Resources/png/longhu22_n.png.meta | 68 + .../Assets/Resources/png/longhu23_n.png | Bin 0 -> 8235 bytes .../Assets/Resources/png/longhu23_n.png.meta | 68 + .../Assets/Resources/png/longhu31_n.png | Bin 0 -> 9174 bytes .../Assets/Resources/png/longhu31_n.png.meta | 68 + .../Assets/Resources/png/longhu31_s.png | Bin 0 -> 9174 bytes .../Assets/Resources/png/longhu31_s.png.meta | 68 + client_unity/Assets/Resources/png/nao1_n.png | Bin 0 -> 4197 bytes .../Assets/Resources/png/nao1_n.png.meta | 68 + client_unity/Assets/Resources/png/nao2_n.png | Bin 0 -> 4197 bytes .../Assets/Resources/png/nao2_n.png.meta | 68 + client_unity/Assets/Resources/png/nao3_n.png | Bin 0 -> 4197 bytes .../Assets/Resources/png/nao3_n.png.meta | 68 + client_unity/Assets/Resources/png/nt1_n.png | Bin 0 -> 7536 bytes .../Assets/Resources/png/nt1_n.png.meta | 68 + client_unity/Assets/Resources/png/nt_n.png | Bin 0 -> 7536 bytes .../Assets/Resources/png/nt_n.png.meta | 68 + client_unity/Assets/Resources/png/po9_n.png | Bin 0 -> 26185 bytes .../Assets/Resources/png/po9_n.png.meta | 68 + client_unity/Assets/Resources/png/px2_n.png | Bin 0 -> 311386 bytes .../Assets/Resources/png/px2_n.png.meta | 68 + client_unity/Assets/Resources/png/x1_n.png | Bin 0 -> 1919 bytes .../Assets/Resources/png/x1_n.png.meta | 68 + client_unity/Assets/Resources/png/x2_n.png | Bin 0 -> 1919 bytes .../Assets/Resources/png/x2_n.png.meta | 68 + .../Assets/Resources/png/xiao10_n.png | Bin 0 -> 15301 bytes .../Assets/Resources/png/xiao10_n.png.meta | 68 + .../Assets/Resources/png/xiao11_n.png | Bin 0 -> 15301 bytes .../Assets/Resources/png/xiao11_n.png.meta | 68 + .../Assets/Resources/png/xiao12_n.png | Bin 0 -> 15301 bytes .../Assets/Resources/png/xiao12_n.png.meta | 68 + .../Assets/Resources/png/xiao13_n.png | Bin 0 -> 42284 bytes .../Assets/Resources/png/xiao13_n.png.meta | 68 + .../Assets/Resources/png/xiao14_n.png | Bin 0 -> 42284 bytes .../Assets/Resources/png/xiao14_n.png.meta | 68 + .../Assets/Resources/png/xiao15_n.png | Bin 0 -> 42284 bytes .../Assets/Resources/png/xiao15_n.png.meta | 68 + .../Assets/Resources/png/xiao16_n.png | Bin 0 -> 28035 bytes .../Assets/Resources/png/xiao16_n.png.meta | 68 + .../Assets/Resources/png/xiao17_n.png | Bin 0 -> 38291 bytes .../Assets/Resources/png/xiao17_n.png.meta | 68 + client_unity/Assets/Resources/png/xiao1_n.png | Bin 0 -> 158633 bytes .../Assets/Resources/png/xiao1_n.png.meta | 68 + client_unity/Assets/Resources/png/xiao2_n.png | Bin 0 -> 53884 bytes .../Assets/Resources/png/xiao2_n.png.meta | 68 + client_unity/Assets/Resources/png/xiao3_n.png | Bin 0 -> 15301 bytes .../Assets/Resources/png/xiao3_n.png.meta | 68 + client_unity/Assets/Resources/png/xiao4_n.png | Bin 0 -> 15301 bytes .../Assets/Resources/png/xiao4_n.png.meta | 68 + client_unity/Assets/Resources/png/xiao5_n.png | Bin 0 -> 15301 bytes .../Assets/Resources/png/xiao5_n.png.meta | 68 + client_unity/Assets/Resources/png/xiao6_n.png | Bin 0 -> 15301 bytes .../Assets/Resources/png/xiao6_n.png.meta | 68 + client_unity/Assets/Resources/png/xiao7_n.png | Bin 0 -> 15301 bytes .../Assets/Resources/png/xiao7_n.png.meta | 68 + client_unity/Assets/Resources/png/xiao8_n.png | Bin 0 -> 15301 bytes .../Assets/Resources/png/xiao8_n.png.meta | 68 + client_unity/Assets/Resources/png/xiao9_n.png | Bin 0 -> 15301 bytes .../Assets/Resources/png/xiao9_n.png.meta | 68 + .../Assets/Resources/png/xiaolight_n.png | Bin 0 -> 409467 bytes .../Assets/Resources/png/xiaolight_n.png.meta | 68 + .../Assets/scenes/BrnnRoom/BrnnRoom.unity | 2173 ++++++++++++++++- .../scenes/BrnnRoom/BrnnRoomController.cs | 86 +- .../ProjectSettings/EditorBuildSettings.asset | 2 + client_unity/ProjectSettings/TagManager.asset | 3 +- 177 files changed, 7900 insertions(+), 125 deletions(-) create mode 100644 client_unity/Assets/Resources.meta create mode 100644 client_unity/Assets/Resources/mp3.meta create mode 100755 client_unity/Assets/Resources/mp3/click.mp3 create mode 100644 client_unity/Assets/Resources/mp3/click.mp3.meta create mode 100644 client_unity/Assets/Resources/png.meta create mode 100755 client_unity/Assets/Resources/png/10A.png create mode 100644 client_unity/Assets/Resources/png/10A.png.meta create mode 100755 client_unity/Assets/Resources/png/10B.png create mode 100644 client_unity/Assets/Resources/png/10B.png.meta create mode 100755 client_unity/Assets/Resources/png/10C.png create mode 100644 client_unity/Assets/Resources/png/10C.png.meta create mode 100755 client_unity/Assets/Resources/png/10D.png create mode 100644 client_unity/Assets/Resources/png/10D.png.meta create mode 100755 client_unity/Assets/Resources/png/11A.png create mode 100644 client_unity/Assets/Resources/png/11A.png.meta create mode 100755 client_unity/Assets/Resources/png/11B.png create mode 100644 client_unity/Assets/Resources/png/11B.png.meta create mode 100755 client_unity/Assets/Resources/png/11C.png create mode 100644 client_unity/Assets/Resources/png/11C.png.meta create mode 100755 client_unity/Assets/Resources/png/11D.png create mode 100644 client_unity/Assets/Resources/png/11D.png.meta create mode 100755 client_unity/Assets/Resources/png/12A.png create mode 100644 client_unity/Assets/Resources/png/12A.png.meta create mode 100755 client_unity/Assets/Resources/png/12B.png create mode 100644 client_unity/Assets/Resources/png/12B.png.meta create mode 100755 client_unity/Assets/Resources/png/12C.png create mode 100644 client_unity/Assets/Resources/png/12C.png.meta create mode 100755 client_unity/Assets/Resources/png/12D.png create mode 100644 client_unity/Assets/Resources/png/12D.png.meta create mode 100755 client_unity/Assets/Resources/png/13A.png create mode 100644 client_unity/Assets/Resources/png/13A.png.meta create mode 100755 client_unity/Assets/Resources/png/13B.png create mode 100644 client_unity/Assets/Resources/png/13B.png.meta create mode 100755 client_unity/Assets/Resources/png/13C.png create mode 100644 client_unity/Assets/Resources/png/13C.png.meta create mode 100755 client_unity/Assets/Resources/png/13D.png create mode 100644 client_unity/Assets/Resources/png/13D.png.meta create mode 100755 client_unity/Assets/Resources/png/1A.png create mode 100644 client_unity/Assets/Resources/png/1A.png.meta create mode 100755 client_unity/Assets/Resources/png/1B.png create mode 100644 client_unity/Assets/Resources/png/1B.png.meta create mode 100755 client_unity/Assets/Resources/png/1C.png create mode 100644 client_unity/Assets/Resources/png/1C.png.meta create mode 100755 client_unity/Assets/Resources/png/1D.png create mode 100644 client_unity/Assets/Resources/png/1D.png.meta create mode 100755 client_unity/Assets/Resources/png/2A.png create mode 100644 client_unity/Assets/Resources/png/2A.png.meta create mode 100755 client_unity/Assets/Resources/png/2B.png create mode 100644 client_unity/Assets/Resources/png/2B.png.meta create mode 100755 client_unity/Assets/Resources/png/2C.png create mode 100644 client_unity/Assets/Resources/png/2C.png.meta create mode 100755 client_unity/Assets/Resources/png/2D.png create mode 100644 client_unity/Assets/Resources/png/2D.png.meta create mode 100755 client_unity/Assets/Resources/png/3A.png create mode 100644 client_unity/Assets/Resources/png/3A.png.meta create mode 100755 client_unity/Assets/Resources/png/3B.png create mode 100644 client_unity/Assets/Resources/png/3B.png.meta create mode 100755 client_unity/Assets/Resources/png/3C.png create mode 100644 client_unity/Assets/Resources/png/3C.png.meta create mode 100755 client_unity/Assets/Resources/png/3D.png create mode 100644 client_unity/Assets/Resources/png/3D.png.meta create mode 100755 client_unity/Assets/Resources/png/4A.png create mode 100644 client_unity/Assets/Resources/png/4A.png.meta create mode 100755 client_unity/Assets/Resources/png/4B.png create mode 100644 client_unity/Assets/Resources/png/4B.png.meta create mode 100755 client_unity/Assets/Resources/png/4C.png create mode 100644 client_unity/Assets/Resources/png/4C.png.meta create mode 100755 client_unity/Assets/Resources/png/4D.png create mode 100644 client_unity/Assets/Resources/png/4D.png.meta create mode 100755 client_unity/Assets/Resources/png/5A.png create mode 100644 client_unity/Assets/Resources/png/5A.png.meta create mode 100755 client_unity/Assets/Resources/png/5B.png create mode 100644 client_unity/Assets/Resources/png/5B.png.meta create mode 100755 client_unity/Assets/Resources/png/5C.png create mode 100644 client_unity/Assets/Resources/png/5C.png.meta create mode 100755 client_unity/Assets/Resources/png/5D.png create mode 100644 client_unity/Assets/Resources/png/5D.png.meta create mode 100755 client_unity/Assets/Resources/png/6A.png create mode 100644 client_unity/Assets/Resources/png/6A.png.meta create mode 100755 client_unity/Assets/Resources/png/6B.png create mode 100644 client_unity/Assets/Resources/png/6B.png.meta create mode 100755 client_unity/Assets/Resources/png/6C.png create mode 100644 client_unity/Assets/Resources/png/6C.png.meta create mode 100755 client_unity/Assets/Resources/png/6D.png create mode 100644 client_unity/Assets/Resources/png/6D.png.meta create mode 100755 client_unity/Assets/Resources/png/7A.png create mode 100644 client_unity/Assets/Resources/png/7A.png.meta create mode 100755 client_unity/Assets/Resources/png/7B.png create mode 100644 client_unity/Assets/Resources/png/7B.png.meta create mode 100755 client_unity/Assets/Resources/png/7C.png create mode 100644 client_unity/Assets/Resources/png/7C.png.meta create mode 100755 client_unity/Assets/Resources/png/7D.png create mode 100644 client_unity/Assets/Resources/png/7D.png.meta create mode 100755 client_unity/Assets/Resources/png/8A.png create mode 100644 client_unity/Assets/Resources/png/8A.png.meta create mode 100755 client_unity/Assets/Resources/png/8B.png create mode 100644 client_unity/Assets/Resources/png/8B.png.meta create mode 100755 client_unity/Assets/Resources/png/8C.png create mode 100644 client_unity/Assets/Resources/png/8C.png.meta create mode 100755 client_unity/Assets/Resources/png/8D.png create mode 100644 client_unity/Assets/Resources/png/8D.png.meta create mode 100755 client_unity/Assets/Resources/png/9A.png create mode 100644 client_unity/Assets/Resources/png/9A.png.meta create mode 100755 client_unity/Assets/Resources/png/9B.png create mode 100644 client_unity/Assets/Resources/png/9B.png.meta create mode 100755 client_unity/Assets/Resources/png/9C.png create mode 100644 client_unity/Assets/Resources/png/9C.png.meta create mode 100755 client_unity/Assets/Resources/png/9D.png create mode 100644 client_unity/Assets/Resources/png/9D.png.meta create mode 100755 client_unity/Assets/Resources/png/longhu21_n.png create mode 100644 client_unity/Assets/Resources/png/longhu21_n.png.meta create mode 100755 client_unity/Assets/Resources/png/longhu22_n.png create mode 100644 client_unity/Assets/Resources/png/longhu22_n.png.meta create mode 100755 client_unity/Assets/Resources/png/longhu23_n.png create mode 100644 client_unity/Assets/Resources/png/longhu23_n.png.meta create mode 100755 client_unity/Assets/Resources/png/longhu31_n.png create mode 100644 client_unity/Assets/Resources/png/longhu31_n.png.meta create mode 100755 client_unity/Assets/Resources/png/longhu31_s.png create mode 100644 client_unity/Assets/Resources/png/longhu31_s.png.meta create mode 100755 client_unity/Assets/Resources/png/nao1_n.png create mode 100644 client_unity/Assets/Resources/png/nao1_n.png.meta create mode 100755 client_unity/Assets/Resources/png/nao2_n.png create mode 100644 client_unity/Assets/Resources/png/nao2_n.png.meta create mode 100755 client_unity/Assets/Resources/png/nao3_n.png create mode 100644 client_unity/Assets/Resources/png/nao3_n.png.meta create mode 100755 client_unity/Assets/Resources/png/nt1_n.png create mode 100644 client_unity/Assets/Resources/png/nt1_n.png.meta create mode 100755 client_unity/Assets/Resources/png/nt_n.png create mode 100644 client_unity/Assets/Resources/png/nt_n.png.meta create mode 100755 client_unity/Assets/Resources/png/po9_n.png create mode 100644 client_unity/Assets/Resources/png/po9_n.png.meta create mode 100755 client_unity/Assets/Resources/png/px2_n.png create mode 100644 client_unity/Assets/Resources/png/px2_n.png.meta create mode 100755 client_unity/Assets/Resources/png/x1_n.png create mode 100644 client_unity/Assets/Resources/png/x1_n.png.meta create mode 100755 client_unity/Assets/Resources/png/x2_n.png create mode 100644 client_unity/Assets/Resources/png/x2_n.png.meta create mode 100755 client_unity/Assets/Resources/png/xiao10_n.png create mode 100644 client_unity/Assets/Resources/png/xiao10_n.png.meta create mode 100755 client_unity/Assets/Resources/png/xiao11_n.png create mode 100644 client_unity/Assets/Resources/png/xiao11_n.png.meta create mode 100755 client_unity/Assets/Resources/png/xiao12_n.png create mode 100644 client_unity/Assets/Resources/png/xiao12_n.png.meta create mode 100755 client_unity/Assets/Resources/png/xiao13_n.png create mode 100644 client_unity/Assets/Resources/png/xiao13_n.png.meta create mode 100755 client_unity/Assets/Resources/png/xiao14_n.png create mode 100644 client_unity/Assets/Resources/png/xiao14_n.png.meta create mode 100755 client_unity/Assets/Resources/png/xiao15_n.png create mode 100644 client_unity/Assets/Resources/png/xiao15_n.png.meta create mode 100755 client_unity/Assets/Resources/png/xiao16_n.png create mode 100644 client_unity/Assets/Resources/png/xiao16_n.png.meta create mode 100755 client_unity/Assets/Resources/png/xiao17_n.png create mode 100644 client_unity/Assets/Resources/png/xiao17_n.png.meta create mode 100755 client_unity/Assets/Resources/png/xiao1_n.png create mode 100644 client_unity/Assets/Resources/png/xiao1_n.png.meta create mode 100755 client_unity/Assets/Resources/png/xiao2_n.png create mode 100644 client_unity/Assets/Resources/png/xiao2_n.png.meta create mode 100755 client_unity/Assets/Resources/png/xiao3_n.png create mode 100644 client_unity/Assets/Resources/png/xiao3_n.png.meta create mode 100755 client_unity/Assets/Resources/png/xiao4_n.png create mode 100644 client_unity/Assets/Resources/png/xiao4_n.png.meta create mode 100755 client_unity/Assets/Resources/png/xiao5_n.png create mode 100644 client_unity/Assets/Resources/png/xiao5_n.png.meta create mode 100755 client_unity/Assets/Resources/png/xiao6_n.png create mode 100644 client_unity/Assets/Resources/png/xiao6_n.png.meta create mode 100755 client_unity/Assets/Resources/png/xiao7_n.png create mode 100644 client_unity/Assets/Resources/png/xiao7_n.png.meta create mode 100755 client_unity/Assets/Resources/png/xiao8_n.png create mode 100644 client_unity/Assets/Resources/png/xiao8_n.png.meta create mode 100755 client_unity/Assets/Resources/png/xiao9_n.png create mode 100644 client_unity/Assets/Resources/png/xiao9_n.png.meta create mode 100755 client_unity/Assets/Resources/png/xiaolight_n.png create mode 100644 client_unity/Assets/Resources/png/xiaolight_n.png.meta diff --git a/client_unity/Assets/Resources.meta b/client_unity/Assets/Resources.meta new file mode 100644 index 0000000..51257fa --- /dev/null +++ b/client_unity/Assets/Resources.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: f9467c05ca9a94b47a8300fa9f95f053 +folderAsset: yes +timeCreated: 1499076175 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/Resources/mp3.meta b/client_unity/Assets/Resources/mp3.meta new file mode 100644 index 0000000..7434470 --- /dev/null +++ b/client_unity/Assets/Resources/mp3.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a0e55b55eae934ee79fb1f0054d0594d +folderAsset: yes +timeCreated: 1499076212 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/Resources/mp3/click.mp3 b/client_unity/Assets/Resources/mp3/click.mp3 new file mode 100755 index 0000000000000000000000000000000000000000..53ed88f95d0cf878c3c82cc18b68f4570027534a GIT binary patch literal 2760 zcmdUvX;ji#8^Hf4nh7MzsEJtanwdLp*(fRrhNifTTO&r|QfXzDW=%*`;F20@+Gru7 zhFfNPnR{Al2Ii8QHI_3JHCdT0PWFH0yjXpBKfLqyewp7n_uS{6`<#28-?`7dL{D3J zK#D?bGw++)zYodGW%lp&C!=VQv9%0U zWTl95G3*8IF8H?F5H%x)_{!&hJ_t|q^_z>Q$Rz+wz^^KvE|h~++Rxh_cBhxK{BmK0 zd#UyvSx3+;-?eRSZLzvr+R6^(v)#ZM#uk6ApO@k+`-Bic>O%(r77T(iSqeB*;^F46 zni#ikW{phWzNkmUtL^95=tC&2?dhlwX|4C&x*$6a+;GJ?7m$_we1K(&>okPi%i&zk zL5aubLwa+TWYs%xMH9PTj#m!u1auMv-zUBU+r>&VkU9n3B7& zsl|3}9Nm85Ob}ikb!mM2CE-#^VL>lNfl&S1dGsyQORZ5&!kUIPou<+H?XV3HVnN0m zj&AE#7$9snc4Y1{r}DkH<5D4aO@)g|-wHkckeS7zmr)OMUg{}@wkc}dL9lkB(|jg{S2Ne8wH!XC~emffv9RW&%5=j8!D zMXIGYLN_V&=RW>e^`4h;5}f_99=|cccSS((j?&;_$F$fh+}X!3W~(7ZOX4m=cW;)! zEIi-JA)nEH@?h1|Cc;lmzWcoL$E)Yq>iYa!$8guU4|MMjomfda$AE|a|By`e)R z>*&fC<+7d^vlWe}cKB7m*bpPR3upY)E4neSKh=4c2PP+uy>vKNRk0`9zbbC*gq2v> z^2cH7sJ1*qA>qRL;}eqRXR+};38USY3n>EORs|f_$`7r(DylJ822E1wd>@aLDEwK36E`mN{L(j zX0+@*cKR2A_>Va1-iy8Vt_3MSEKS!mcU*xkL;0GQQsWOC%JFLAAHmz(Dco`bXc=8?r}mnc|EpTj0)$aACDPKf6@gd@U}gnYp2L< z0Z1slBX&ea*(;Grz>=&Wr{#j*E8oTCN$S(AIVHEt>(q1hNkS*!Ic2k_P9%;e*EKxn zT`%y859nLbw-ddgH|HI1wTCS%KzRqjB6FfmY7-746 zm2a)18He;U?2x<=_l%*h cLVxRb`!-oB)UI-~>j40zei8aM;hz@&3kMUukN^Mx literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/mp3/click.mp3.meta b/client_unity/Assets/Resources/mp3/click.mp3.meta new file mode 100644 index 0000000..278d0ef --- /dev/null +++ b/client_unity/Assets/Resources/mp3/click.mp3.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: b945c7084a7904b6cbb028027616c444 +timeCreated: 1499076241 +licenseType: Free +AudioImporter: + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/Resources/png.meta b/client_unity/Assets/Resources/png.meta new file mode 100644 index 0000000..59e4ec3 --- /dev/null +++ b/client_unity/Assets/Resources/png.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: df1e294afcc524876ba27fb8a99987a8 +folderAsset: yes +timeCreated: 1499076238 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/client_unity/Assets/Resources/png/10A.png b/client_unity/Assets/Resources/png/10A.png new file mode 100755 index 0000000000000000000000000000000000000000..0840ece4c6670a05ce70f209c6263b957d65bbdc GIT binary patch literal 23386 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Π(s033 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 literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/10B.png.meta b/client_unity/Assets/Resources/png/10B.png.meta new file mode 100644 index 0000000..15d0e59 --- /dev/null +++ b/client_unity/Assets/Resources/png/10B.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 923c3ad04e5fe4725af4fb4820e3a1ab +timeCreated: 1499076240 +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/client_unity/Assets/Resources/png/10C.png b/client_unity/Assets/Resources/png/10C.png new file mode 100755 index 0000000000000000000000000000000000000000..e22a047c6391619174ca9ecfdfb90c4324b6c00a GIT binary patch literal 23386 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 literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/10C.png.meta b/client_unity/Assets/Resources/png/10C.png.meta new file mode 100644 index 0000000..a19c392 --- /dev/null +++ b/client_unity/Assets/Resources/png/10C.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: b410e939ebde543e08b7661e4762fec5 +timeCreated: 1499076240 +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/client_unity/Assets/Resources/png/10D.png b/client_unity/Assets/Resources/png/10D.png new file mode 100755 index 0000000000000000000000000000000000000000..a469022f885f74ffd0428cb6a3dfd31522f1e94e GIT binary patch literal 23386 zcmeI4OKcoT8OPi9*gLM7$;@~j_B_@$)AROtJmayQNt_&lHcD1uAKL69aRcprg&+sS zW04{dLZB7mh>(KzfB>-|4iOiSxFRH^0OXF`~nnYrpLUA=ns?YG~)ckkXi@4WNYTW`Jp{`+_C z+WO z;RhdlaIo6HwphNFtKazJpAL?mzW?Vp55DxZ+h70o?H|8>{Wkg-e$%UA%bl^5x5K zyz$2GzyAZ;)K5M?>48V^VZM%vK#ir~`j$0Z8lX9-rVBjxXVU$M_B8b~*@cObt#eUSB%CK+xcPe4Hj{ z9ph`LoyqK=;gs>2_4GIneEe@=pU{c-HPp#uI;b{nd}e(gyYFD=j`ED?n3cqc z$K3{@=QH+dB%`+H=R`*ABu4yl7q&ZYmm}JQj!>ItMaAqS8vf|fU8s4l)et=OdPC}v z2)w04!yBsIqFs-BptfZwH)PpLEbx1H2(!=>I>mtXvaBW1_}mUdljBY6`GHeNX+&n5shB0&kPr!r{BYp$lVPXE3JnUFgc1R&Mz+qQ98CDW1gijNm%+>?y zVAo|#|LAsoHHmc9bhN~;z<`Iv1_y8S_0-DTo-d}6!9dA~miPjWU(V6cqjZ?ylO&@d z^WBDL#|~QvZLv5#9*L50^JV|S^YB8`H>jDA0}D})YiSGyif716A|%{U!{?4NZ#VWl zvo1Lq^rOqAGzM1*auxS;xloBvg^tg8O>c86aL@~ypE*(%kWEB-8Lv2Jz~|`5r)Qp+ z?y@DXwkt?Uv_;$1QuBA&e5Ff7QxhJ0RG0dbt=`&+PkO6iQ)n!$K2Rdk1@Dg}{eWjZ zKS3h2`#0oFNNuvSqS!-GkVLBEh(GcHpYwi_o!TBx;aohxV1&t;xg@{B+=f~fAYlx8 zl<=%!xmJfo*%8nFTIMzz6Hr*&W~S_Dl(0hYDB)SllDS>gmu(lh0ALp6xGQdhP*c$) zO%l0+WKP0+P0A@vB*_h=p7}jxD=>f)#sgHMOL(ytlkm(pwT+NYHjr|5^DFGNw`>u z<=E4WNW4^WOB!{&2~E-eq$ClbJZg`ZCzh(oeRs3UYlfICk&3*8HGT_EI%4qm1-|d~ zo>-oQxk{19#W-b+-&E(}WJ{QIa1&}$$3xw^MC04yt2I=Udp4Q$c4eOTb(LbX5bks*wit)Ka5FF|x!L@$x+^D&nfY;32fBmIX*;GfO<>Xo#vm?+)Z@Ar&N% z4DImrmpiZrk+hKT3W7^?iByFhp55&1NLrl0Cm4b@EULj0u?{PImmtg-GW|8hDoH#{ zA{cXgG8GhBe13OZlF`Z3zrV`93jhV=O6W-zkO-E`mPvp9ho)4GKf*H`{Gdm%Nx?`Q zsM2tWfRXTW%e<7lzkv;oVl_f&q+~@&xVeNEn&tbrt*&#;ZQ0jUtp?SJQjETlReOy|Ku;v0*2p;ewYDg3BY3-zw(ZK_3@!^D9SW*{9!yx%4kDbm{p zjgK~p%tSp-C<(=V$zavwE zQ9%A>SjtXfhcD7!61Bs4YMGV962FaSpZd0n2uoW@ z1bj9u;63bSn1NnqBN6e%Z14~GQs2&o80byyjU*Bu z-IH3Qq9xXNc*dtyACX}pvBq0mMQUp-B(`{O+EEE%X&Z?x-ev|>+F~QI#Dgbz$x#5I zNh^tfUkM4`>KS686Nfdr0 z_B_4Ss*g-eo;Qgk9KTKH4vOWU?QITIW0Ofj@s+@bD;1T>(i2KT@vEx=kCqsW92@dr zu#xzBAHSTfm_md7PM&xDupt|EI&#`V;tR6N-exNRU)f?4F5@@1d@+sGYDz}5#1};3 zOUg6K=C-e;5t!gca#o~-n@8d+6=@Qw^|_YD@FQh4FG9l2E$|iog#qL$=e<&)57c>u zG!`lmjBW6hE<5k2D@aMSM21GQq~?c6L{kA@3J&bIM+42o!*sQRV2NmIhwsy=x84_} zIPMjoz!JScs=^Lm!n;;@z930)g87K_ehHFDby(sH386 z4399kujZO0Y4#N#m-}ylAMx+g07+;%Wr9nBgEY@5;eE&}iN^Dbi}am1H`TOwvPh4?qD&-o#pnw1 zia+uV_fiBL(qAqk@Ji9DMuyz`EB0y~~n941LKBYKR) zCzK7&Ad;S#K;q+bm3%;uHaN|6fR&VOEve+ZeP1v>&u-|U`|EuP6PU1-*x>VQ?S|)B zfk36eDCv)SxbynmF0;16=hUE+1fXmWhM zOD;RV&sgKbj+$hE>OFYuKX?Ru9`EUzVKlu=mB1Tb@-QdY%=l6|Ea09Sg&F8&ss!-q zG~m;4?wNJTzwk=we8^9Fh=!mEGf~SV323A6tVzZr{0Rc4PZAVKBwlU5nC{p67%gT+ z#i@i^fiw~y>ROk;Lrv5|SrUp*Rw6tjT_5GJTrNqB-dB=z&Y!DPB2FwWjxbTZmn8=8 z^OedRc^AuUe|5sTRaRu$gkSB?Vm!PCD4U3^;KLah@QEzE1_Egek|v!#lv@iwooZay7eJDwhk&J^M$Iqz}K!<v+P!fqoKxeDQEzc)1w&=?qUhAij7AL4f<-la6p=u~>Y{ p0T5oli=9v6xC^EqJQO{Y6X#y}>Fcv+G4|=x&p!35Pk;X6{{aA3Ba;9C literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/10D.png.meta b/client_unity/Assets/Resources/png/10D.png.meta new file mode 100644 index 0000000..d2f63c2 --- /dev/null +++ b/client_unity/Assets/Resources/png/10D.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 88eef66cbb4a54e3c874ace0f1b5d877 +timeCreated: 1499076240 +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/client_unity/Assets/Resources/png/11A.png b/client_unity/Assets/Resources/png/11A.png new file mode 100755 index 0000000000000000000000000000000000000000..ee46453b32013333477396bcf443ac0681099034 GIT binary patch literal 23386 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 literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/11A.png.meta b/client_unity/Assets/Resources/png/11A.png.meta new file mode 100644 index 0000000..94f61a2 --- /dev/null +++ b/client_unity/Assets/Resources/png/11A.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 1aee339924f8b4fd19747abb3f4534f0 +timeCreated: 1499076239 +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/client_unity/Assets/Resources/png/11B.png b/client_unity/Assets/Resources/png/11B.png new file mode 100755 index 0000000000000000000000000000000000000000..c46cd2490cabfe30f25c90970515952a238e3509 GIT binary patch literal 23386 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 literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/11C.png.meta b/client_unity/Assets/Resources/png/11C.png.meta new file mode 100644 index 0000000..0effd23 --- /dev/null +++ b/client_unity/Assets/Resources/png/11C.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 22a3488689132447bbd1f2858efbaee7 +timeCreated: 1499076239 +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/client_unity/Assets/Resources/png/11D.png b/client_unity/Assets/Resources/png/11D.png new file mode 100755 index 0000000000000000000000000000000000000000..2d5e6a8aa2f4bb66f2bf077b4a3baaeab6cd39e4 GIT binary patch literal 23386 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 literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/11D.png.meta b/client_unity/Assets/Resources/png/11D.png.meta new file mode 100644 index 0000000..75edc1f --- /dev/null +++ b/client_unity/Assets/Resources/png/11D.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 2b7871d52c71b4a91a5b6de550af750e +timeCreated: 1499076239 +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/client_unity/Assets/Resources/png/12A.png b/client_unity/Assets/Resources/png/12A.png new file mode 100755 index 0000000000000000000000000000000000000000..fa7c63ecea21870f51329abb6820fe53cf9c8e86 GIT binary patch literal 23386 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 BQP2PY literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/12A.png.meta b/client_unity/Assets/Resources/png/12A.png.meta new file mode 100644 index 0000000..ee6f63d --- /dev/null +++ b/client_unity/Assets/Resources/png/12A.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 0e20a883a6a4e437f87350bbc72a8c1c +timeCreated: 1499076238 +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/client_unity/Assets/Resources/png/12B.png b/client_unity/Assets/Resources/png/12B.png new file mode 100755 index 0000000000000000000000000000000000000000..6e2bb23ff95903bce3b519cbf121c169f6038405 GIT binary patch literal 23386 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 He)JyzA93en literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/12C.png.meta b/client_unity/Assets/Resources/png/12C.png.meta new file mode 100644 index 0000000..0ac28ac --- /dev/null +++ b/client_unity/Assets/Resources/png/12C.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 2f801d0124826404f96cd6823136df21 +timeCreated: 1499076239 +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/client_unity/Assets/Resources/png/12D.png b/client_unity/Assets/Resources/png/12D.png new file mode 100755 index 0000000000000000000000000000000000000000..7c20d8ac176775ca15291cc5f0ec8029003ef5c1 GIT binary patch literal 23386 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 OeCaK}`*rX7@&5rAH%&7D literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/13A.png.meta b/client_unity/Assets/Resources/png/13A.png.meta new file mode 100644 index 0000000..158c097 --- /dev/null +++ b/client_unity/Assets/Resources/png/13A.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 4af193c91a9f743539c32066bf4179ff +timeCreated: 1499076239 +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/client_unity/Assets/Resources/png/13B.png b/client_unity/Assets/Resources/png/13B.png new file mode 100755 index 0000000000000000000000000000000000000000..96656cd273561d4f275272d0ba55dec882145c9b GIT binary patch literal 23386 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 literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/13B.png.meta b/client_unity/Assets/Resources/png/13B.png.meta new file mode 100644 index 0000000..73fe427 --- /dev/null +++ b/client_unity/Assets/Resources/png/13B.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 4621430141d894fbba0cf7005d6ce70d +timeCreated: 1499076239 +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/client_unity/Assets/Resources/png/13C.png b/client_unity/Assets/Resources/png/13C.png new file mode 100755 index 0000000000000000000000000000000000000000..d18fae831cdfe1a46f5dfef9928aefb212c7d60c GIT binary patch literal 23386 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 literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/13D.png.meta b/client_unity/Assets/Resources/png/13D.png.meta new file mode 100644 index 0000000..71ea6f0 --- /dev/null +++ b/client_unity/Assets/Resources/png/13D.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 1f14a7f527e124cbeb531deebfef96b6 +timeCreated: 1499076239 +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/client_unity/Assets/Resources/png/1A.png b/client_unity/Assets/Resources/png/1A.png new file mode 100755 index 0000000000000000000000000000000000000000..0fcab5aa3490d161a0c38fdd4a0574fe4f546387 GIT binary patch literal 23386 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 literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/1A.png.meta b/client_unity/Assets/Resources/png/1A.png.meta new file mode 100644 index 0000000..8744e7b --- /dev/null +++ b/client_unity/Assets/Resources/png/1A.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 854f26ce52fc1417490a20f5acc3192c +timeCreated: 1499076240 +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/client_unity/Assets/Resources/png/1B.png b/client_unity/Assets/Resources/png/1B.png new file mode 100755 index 0000000000000000000000000000000000000000..65c56e1250f03968747445c5ebbe1a8bede4a413 GIT binary patch literal 23386 zcmeI4&yVCr702y%59zkYzq{?W+tY(Mph!q47ld-)K(r&WTC^L5076`H;K%{Q9#AB5 z;Itf(I7D#Z%t{FoIlwJa{)0pzhX_uqWtU~MDA8)QTCrNbuk3P{yKQ&b)8!c{^E}=D z+4ZUKd#}nrx~G2g%GK}KW@>7hW?z2!(yN%iiPxVe2Hp?<`1=<$&Cp)??rSGlee&eV zzqH`~{re{;Cs(dqx$&)+un{(yOddUYbocJvJ9q9pe*E~sg9i^EKD>47*6rK3KmY8r zd-v`=efsp;wQK+V=;ME1{{DY{{>G>8z5nUkf4TR&KivK5H*Vaxar5TQ>({U6MP0mK zc;I|`;Pbz}dri}H?fR=%zxSnQ&z}AEgTHCBuVJCa&ZmO?)#~qWe1+QU^k*;s=ogx1 z1@zKC{O6nh)3h&ZmoI($wO{J`2S51wpS0&h+aJHVB$4-A6<^sk#LBtCH@j?qdn!&9 z)FV^I2Xn=CFrI26lUGKYjORxyFVJTSO%J@)(R@59D^M(G+IYTl6oQ4Koz;BIJ&@x; zKlX5hK7aw^9dkazgMI|3Gj=u_MY=vyIDupz6@0=Iohvs+qfx5V2c&W~EBFjQKDN2v zQ{Wd$@vQKf4gZsJ{7vQ_r|S#gWA%7_=FKVp>2JI$>3Tdu@XaCkE0V8~c%#JIaQ$eM z41qUDJ|^T{iHnf;qtUWlSGX`cn&x=H_sh}9jt2?8J|pkrR^VWrc*wkry%ehEMbEs0 z2~K2_dBC^mdWKeqwr8xjs9OpUe8TIxU6_No+X#NjHz=IzdV!w-uVb=Fcw$rbvvu00 zaGDADTqYV_6h+8Ag{pbcx`=1$k@SV(7=^m?vPFDeCr%$lypHPT+v=&uf%B08%d=3A zPKRWhlzYmpqMm3DGS8%iY?RSVt!?31&KrTpYf@Mdwb6%RnKQEytg z@2xY!n=JX4L(uEgo8r5%fF6(ByUu*mEzMjk%4M|+X4&w7H;c&)g7pgD zsAOKjbESeK_$Ed33Z4rbNIHC7AA3bww~MV;&)uMWUcnc&8!q&2iPr~&u7hCmryCde zwNr*#x^RB}T<`2NKX8Yh&Qt7Vw7YH)(E|vak~a@`-H@J5glIOKyPDR!st=d^sbjo| zD$O%UxJ*=EyjQn||=#+eUw|;4Sy+B|fzinT;2W0V00`U+!2)1<>TgWx7CW~(r2=6yn zEzgXW3P|GV`|SqHg7WFW_7QMRt4ZSN$y<|^ePYc4St}ejR&wpW+4nU}ag))`SB>A% z_etU#8oj8qe!1+G>%CCHJ3-Ub+xbx6R3>c~@lJgWX=`u11xB+uBEF@bTj#xcS8r{l z%$HZ+cw|e@vV{~kpxbLKllD~9w|J>?VIczAmpgSk%@yq%{2iGms(0F~rDJW;AGZ}r z`vm7VYsVg^m-kbrwa`lJ+iTj^>o@7o+Kb#!-&)h!E4?Oeu{~`qaU=70RJD8C+ZlQJ z*dzK~yPnM36?q}{HUK-U<9P>px6=Z<_!)@=zMK0OJJ~p(3*PCH{aLtoJpIZ+)*=~t zH}y`#olZ@aWCGvS`HmAwc79TU?~Zrm`u^CEa(yNB3@MXo{aGYc6b=$H-!L4BNhbUW z3YIC$sp4ho>{vU)za+Svbysif>U|cBtV+FMwD&$)$Q-Xsy<@cYK1JFoQqNSioP1I_ z*~L+n*h_!XZ%n^D@X`hK!y8S#Pb>}25A2CI>U*Ee8wg*Ye$?M|vcBq#y50xd9ek&(P0Y1&E6+F>{bHND)=t7H^OkE_ldfEJU`Z`;Jc|e!b!VXvw0=ZIFp_mdy?`xyIF z1%IKwy9f3Xd(${Y2z!6jFpEb^7x>;j?EAq_-u>pUG%flEjSFB69SGmARC{RrVsVyu zoT?L%FQ`8pz;K}yi?U<7@CU^g_h`|YKPbMqMityYB)+^sOiTGg;>)KqSq(n) z6AS0@ZjGsF#m_<`6?~1>}2% zpUwwJKDy1KPA50t@#a&8hxff67E3;Y1X{(;W%GzQodgC1J0W6;z3 z@)mrb3;9DWe39u|81%59Gv~tx7>*bfz>tsh&t3{GWJ5kq5qHv_JD+AW9P)HL#DJGj zUeXKoyaJP{as!)7U#rIwJU}i`Zom*NH(?PQuuHjdGMoS8ho5}>ZNyH Idi~e`2W;C_NdN!< literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/1B.png.meta b/client_unity/Assets/Resources/png/1B.png.meta new file mode 100644 index 0000000..ef14512 --- /dev/null +++ b/client_unity/Assets/Resources/png/1B.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 408aea67852ba4edea34a6c5f88492b0 +timeCreated: 1499076239 +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/client_unity/Assets/Resources/png/1C.png b/client_unity/Assets/Resources/png/1C.png new file mode 100755 index 0000000000000000000000000000000000000000..acd4b74a4456184d09773cada0ca35d0db008f95 GIT binary patch literal 23386 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 literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/1C.png.meta b/client_unity/Assets/Resources/png/1C.png.meta new file mode 100644 index 0000000..9559fcc --- /dev/null +++ b/client_unity/Assets/Resources/png/1C.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: ff8458c30781a4675b38a9298be7bc74 +timeCreated: 1499076241 +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/client_unity/Assets/Resources/png/1D.png b/client_unity/Assets/Resources/png/1D.png new file mode 100755 index 0000000000000000000000000000000000000000..aeb452e1db04c20fc923d9473efc1e114c2d6c6c GIT binary patch literal 23386 zcmeI4&5Pv58OFQO%=ENMAKfjr)KY&;a!Yau@jqabWxesRX4g1QAh$pcNgxD+a|kT> z;9CN@F2om~dt)d%a$G`pV_kv3?uBe?Io`8oc-JcX~aq_u8v(yo|S3 zuU`G@OQ%ntKJEAW*RNl{bmz!Wy?i;`E_dovOxBqZXxaZY;)je=D>>p-U?XW*Q>h{uLn5|Ao z;!Q1@mynZHHXLlW;3!)r7QsT*$uisUz;H!ygy+D3A*-RRf4GFx8M_#bLeHC8TtJGK z5`VaCl>4L6XlB(1RONIk@{d+=XHK{|_?K(7ieE3;TF)O0p*Y;d%~S zjL`W3e`{}pyMK`R93PKH(4X6*@|vf9E&pi6>0Sja1ncm z{u4I%2K_ehyb^IY9~Blw^Qxz$PlIo8nDAX*0p;+3-|n%ul^imB=6P{#335(M=!<>x zJQjO{Yzn-GC8omjI7aNT_jI4dWh&q+wRF%CvKTGwi;q1K&(tI6D=UDvsJp6L#8+~W z@hU?X*tQMzH0jI(*F4??W$44bDhY$MabXT+>r3Ke4KP}m*b@O zC48l`O80QT1KY&cbR>QU;kSXW&NbBiqtd?o4SXuXc77 z`3`!%8y{T6xDO`WLfqo;H&!Jzo)dxZ1MtmUQ zt#)%~J(X1p&N%%>mzu=w#^8k@SNy?J&CL-uZ52J-iNm@q4 z>r08o4!;hN(1&C@#7`tM^^S?<` z>L{R*2v-=`et0$nDBM*3UU*y`w`L@NFFcZ8YesosAG~m9N?U<6sBQb;o6jI>4-{i< zdL-eKDAM@hgRbcS|hD6)p{bvUDX18_e*%Kwy(LKHh{Tbs}c#Xqh1*Djq?o# zzlc|EHx68j`lbbNzj7_~$QB4Q~D$rhE3NCj6W3<`+j$O^E1c0$fnyxt|C6s zQqO0e*I`}n=SToMO;W$Lzan+%RcqjY9sWdeXtG`m_EsA!JHGJ+<8Q4qiQ@X-NOs~A ze`~U9nC-e$2tN&clJL)5TE>}M#caFo>aSY(Bvc%C7yR!v)c*U%Pycg~yvjcST zyE8uRj=35f14BLZ>M9iiK&ji;)%%LJlRs0e2!{#keLqoHP-X|8(p74r$4GdER?{;6 z8JD@$Ae<}I!Vi(~Ds5&Zx195l>NOS#&l`32MqT%r39vl7XxCpPyh^)SCCORm{Y9wW z@08Z!(We>~cAkKWT%!tlXu`+69=<#LHHKW(PGh{^5q?@h&-mu}&F-fiuW5VWH*Pa^ zJ04Bl1HbNmeb-C)P}h7Z`irq{c^ogO4?|ybk&^FBzq~KwwVN*_zlC;T6cGDfzxAOI zeYt*df6e)t0#KaGHxj?E`c}S?_51Pc;j#AakH?9(G?R`}0)A{}NIkh(NtBZC;n-v;3)Ev$5M?C1k%(|M z2i(vkyqSbC^}Siq^H9&=7pR`PeqZ&0Zzy1|Vt!ChE&YGsiR>)b>Psm_eejB0H}PUjWbk`KVz?_@+l}tO;g>7L1DPEvy}@ zC)Di}kC_?zz5mK2_03K@YvlVGYNlzQ103S{WOTvl?m`d9>LW+`FD~31s;AG`z_;$J z$g3OR5?_wsb__ro0qgil*zB^l205pZCji1pb+3Pjsao3xzt1rIgvcXdSUn1+Pkh^S zns`bC08KiL`SpWvh9^mVGHU)}VU5^B__s-iq{#_;2-@Ii6^$(bM1-ODst2sSyAo#*JKlt!>KYQu$?;p~J PoW6YR@}DmK_?`a&O^yUC literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/1D.png.meta b/client_unity/Assets/Resources/png/1D.png.meta new file mode 100644 index 0000000..62de9c5 --- /dev/null +++ b/client_unity/Assets/Resources/png/1D.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: bf76753288dfe4203b1a8a6978b4c062 +timeCreated: 1499076240 +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/client_unity/Assets/Resources/png/2A.png b/client_unity/Assets/Resources/png/2A.png new file mode 100755 index 0000000000000000000000000000000000000000..bd055b60cb56490d01d8c0e236cab90315669ab1 GIT binary patch literal 23386 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 literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/2A.png.meta b/client_unity/Assets/Resources/png/2A.png.meta new file mode 100644 index 0000000..1744048 --- /dev/null +++ b/client_unity/Assets/Resources/png/2A.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 8d84621eebe9c4da7bb3ab1ca2697bad +timeCreated: 1499076240 +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/client_unity/Assets/Resources/png/2B.png b/client_unity/Assets/Resources/png/2B.png new file mode 100755 index 0000000000000000000000000000000000000000..6f8871d796b1c45769095486b915e9aa2493fe8d GIT binary patch literal 23386 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 QpF8vV`BT3>`L*x<7pH)aYybcN literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/2B.png.meta b/client_unity/Assets/Resources/png/2B.png.meta new file mode 100644 index 0000000..b5bc9b9 --- /dev/null +++ b/client_unity/Assets/Resources/png/2B.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: aa6a5759df3dc4d188c6e349f46e291c +timeCreated: 1499076240 +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/client_unity/Assets/Resources/png/2C.png b/client_unity/Assets/Resources/png/2C.png new file mode 100755 index 0000000000000000000000000000000000000000..80e074681c7dc891d621734ed5b16d26985cceeb GIT binary patch literal 23386 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 S-1xcEZ=Bov)$8B<-v0pR)hyNk literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/3B.png.meta b/client_unity/Assets/Resources/png/3B.png.meta new file mode 100644 index 0000000..0c80073 --- /dev/null +++ b/client_unity/Assets/Resources/png/3B.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 94b9d0563076c44d2adc5996976d3b2f +timeCreated: 1499076240 +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/client_unity/Assets/Resources/png/3C.png b/client_unity/Assets/Resources/png/3C.png new file mode 100755 index 0000000000000000000000000000000000000000..bf774fb99644eea110b7180278e4339f629a7184 GIT binary patch literal 23386 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 T&cXlUkj|VsK6>fPPd@)YR>boV literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/4A.png.meta b/client_unity/Assets/Resources/png/4A.png.meta new file mode 100644 index 0000000..7c5e9b3 --- /dev/null +++ b/client_unity/Assets/Resources/png/4A.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: d3446e60a11d04e6eb3c5d291f2af774 +timeCreated: 1499076240 +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/client_unity/Assets/Resources/png/4B.png b/client_unity/Assets/Resources/png/4B.png new file mode 100755 index 0000000000000000000000000000000000000000..05206665cb43e03cb29601ba4a97b97e1351724c GIT binary patch literal 23386 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 K_N(9i@&5rPFY3Pl literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/4B.png.meta b/client_unity/Assets/Resources/png/4B.png.meta new file mode 100644 index 0000000..028f621 --- /dev/null +++ b/client_unity/Assets/Resources/png/4B.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: cc9f97407d3524211b5cfd5dad669f31 +timeCreated: 1499076240 +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/client_unity/Assets/Resources/png/4C.png b/client_unity/Assets/Resources/png/4C.png new file mode 100755 index 0000000000000000000000000000000000000000..ac0a366d462e0bdf68916b1b02422b2ff6341569 GIT binary patch literal 23386 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 G!T$gm_;XVL literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/4C.png.meta b/client_unity/Assets/Resources/png/4C.png.meta new file mode 100644 index 0000000..a775397 --- /dev/null +++ b/client_unity/Assets/Resources/png/4C.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 3a5161c1e62f44d55ae8212a8b26d54b +timeCreated: 1499076239 +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/client_unity/Assets/Resources/png/4D.png b/client_unity/Assets/Resources/png/4D.png new file mode 100755 index 0000000000000000000000000000000000000000..20c93341c96fe64d61d8961d2455c8a091ba0763 GIT binary patch literal 23386 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 Qe3vfVdj7W`yX*e{0!(^zWB>pF literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/5A.png.meta b/client_unity/Assets/Resources/png/5A.png.meta new file mode 100644 index 0000000..a285b15 --- /dev/null +++ b/client_unity/Assets/Resources/png/5A.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 60e18b7efa6a04dee9fdaef2ae24115e +timeCreated: 1499076240 +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/client_unity/Assets/Resources/png/5B.png b/client_unity/Assets/Resources/png/5B.png new file mode 100755 index 0000000000000000000000000000000000000000..7157f0c10502f264742e72cef9634fa1839fe9ca GIT binary patch literal 23386 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 literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/5B.png.meta b/client_unity/Assets/Resources/png/5B.png.meta new file mode 100644 index 0000000..946e77b --- /dev/null +++ b/client_unity/Assets/Resources/png/5B.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 62e3fb6f43e124be7ac9d9cb32c57b43 +timeCreated: 1499076240 +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/client_unity/Assets/Resources/png/5C.png b/client_unity/Assets/Resources/png/5C.png new file mode 100755 index 0000000000000000000000000000000000000000..40d0530ae849a3405b43cb59f3ed9b6082d20aa4 GIT binary patch literal 23386 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 literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/5C.png.meta b/client_unity/Assets/Resources/png/5C.png.meta new file mode 100644 index 0000000..c98c98a --- /dev/null +++ b/client_unity/Assets/Resources/png/5C.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: dd25d4c8ceb954bafa4386bc617e33e5 +timeCreated: 1499076241 +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/client_unity/Assets/Resources/png/5D.png b/client_unity/Assets/Resources/png/5D.png new file mode 100755 index 0000000000000000000000000000000000000000..1cb88aef7d475a058fff57cf2f50c524225b070e GIT binary patch literal 23386 zcmeI4OKc-a8OPg6oH%jCPV6|2<2cTE-R<`yj-A+fNrSSQ9cJgDofT*#4qT9c69OcV z2CY_H&~jog1LDA35E23wgfs^ZD+HX7xGV?uvPg)TNivgpW_C20(P-eS>Q}YFnK76>lySulyck$xI zmoHzwdiCn&&6|4@3w!_i^zN0f?Z45u`}J>s{_$V-W^+&f^WR5*|Hu9pzr4S4`rv!- z@BZ$Odw=@)(Qp26@WF>ij}H%jcKzD5Ygeycy?pudvx9rPzxd_uPkwr5`|TSyZhZ8k zAB$Z*c|D1My9oU1uiyL|Om*(N?_9V%_WmaihC|o6SmDb5+?cx_yhf^>;jch%#=rH} zmG5v|FoJ)5|NQrRFF9_BJG*oG-S7K+pM0tMYi^9Pk&zLvJpcp+9Mj%>rjpN=zs9q#i@eVGwoSANu@yGZ;CrC!UjL?eLT)F*BuoHmk$6@E!#5q?% zs3;eE{+?OG?gKv1Ns9O)LaX&^u37e+4S-A%yU&er6K#ch8egu7hkD8>d zx|XXPDZ$bA!;AF-eT^f^^QS0KAmzGSyU^6m!Ut$(0>>k9f(dkKvJ`a_8d~KO+e4``tT!zS$fozE&F~9zOoAxaRjBeE6$2 zcO3WyR|d|5`>v!QqP%z41lj+sy3_WK7e72gD=zsxdOs)a0OjZ0@q5H8`(K4Y;HA*x z+2=0&l=q8{jowJ*D~{zL=mlSvxBjsAC|`EL?*U&XA3YK@d8xVJyT=O}---W%WB*;_ zSL8i-)qPZ2amsgxUl5ExaX~qU0Z{PMGYJP~j(5-qRGpcYzDD8!zb~d8E)y6_X}}%1|K&T-6=t} zpv-)?_;{`6ntmMkW^;Q}k z{s8E+C-{@GKNU*M4Zsr0nty`td-&OdFF5a;y@VZKb&j`}DEP_bl%+LL!?N61-ybUQ925Rp(I_Z(_LZ3OWz08NNo-bCCx4$*t~B@d&mw>1Vf1cd(xWOtm5NK zrk0iW(eqi;I$Z^Zk~I0>mkp|FTsa9X@ak4}j*?m?4JG297~fEpEci`o`+ifETBVF6 zLAgu3>OTX1S^g?J?ghVWMU~48B{CgaQT(^ZH)uNW6{*b9zZ*-^@_uAVZNe6>afHo( zQ;F5sN76>Nsr8-kH;pQ)dFGN7*$~`NtEMB$%s0Xd`u|nJ9jFRa3tdS|30?_vw7?oK zj}~UqR-l{ErcEU&To12$bbV`lx*;z(G(6v+Tj)+(O0p$w&u#E&gIHRH9{0skQm<&b zYllxOi-qieE~sh1;J`|f)z-Jgr-Rz*SGA?59Y_>>ERr&@EdA+KEo)Lslg%uN#H9N^ zb9@S4CM7Eg8jR@ytAqugl0LqGE-ae@y9!Js!t!#3uE~T?$tQDxmRhHcBo#7^Y7JG% zhR=%OFEI_g*tmhD0j==3r45D8hEHvfu~%h^-aMg`zd=Q>+AZu9PyCm=r zU^*o;zKJ$jcbrp(Nm>O8~DQJ!X8+vGYN#Bx~t?G-BgR&&7FE z(6teXifjIGB$Cn<9&bhgN#mDo%7c=MM25+;ScZgnD(kJmC%;up5VlZVBBkQO5a97+ zfELr<(z97uck+dL4sJI$B~*G*dJND+J31BgoG;(CZ-}JeRJ1)o9s?BUOnDxChBAv)~ z#{J~^TU@}`o{4zNZ!8mo8xfHnpK1F7CSNqaf{lv`FF@WFIE3ZVz*A^7n0 zGygd7lS>}*6?_TkOG%)Q`|+dq#0TF6#z))P`N&er!yb^RXM?Gw$b7avI*vmx;=%vG zI6U-lF1i?>otvA|ZyNNPBW=XZ&CSLaqjT`kLy1njC-H{>;72~rn*GP^@#N3qM?Qk< zB=WNNA|E2qj|X0Y=L%i&9{4Z;1A*~A7=hz)$A+h#Xt)D@=z_Nf2&2b+k}mZBVW%Iq Z`Kz0MKKdL!+T_l@d12?HFMRcf{|C)1{b>LI literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/5D.png.meta b/client_unity/Assets/Resources/png/5D.png.meta new file mode 100644 index 0000000..d715469 --- /dev/null +++ b/client_unity/Assets/Resources/png/5D.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 97346b2b137544893a0524008737bd3b +timeCreated: 1499076240 +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/client_unity/Assets/Resources/png/6A.png b/client_unity/Assets/Resources/png/6A.png new file mode 100755 index 0000000000000000000000000000000000000000..52612eebb79ddf5a614a389a4cdfaa37bf667d31 GIT binary patch literal 23386 zcmeHPOKc=Z8J_WD*7k0BcE;0VduKczd!9}|W~S%;v^H_HiNbC|5+NnxzyXA~@DLz! z3Md>99N+-r07$t7AtX3}loLTYL|hU?P&g4dB%61#c|Vr~{_3u-$8`0>s~tNM{w2Gs z{`&v_tG`}d{dZ6O@QzCt(8{@$NF;)8z2)FexZV$czh9b%|7RZjMLiOkkKFN@yKjc< z+}vC=8a+5Tfb@k67h2diL38-+lMp7hinwl~-Q* z@WT(^e*5jqmoLBb&O2|t_14QTzx>imFTMHZo3Fn5>IWZu@WvZ&Jonsl@4x^4Yp=cb z`s=S>xpL+C=byj*_S@fk@4XjZc;V{RtIs_1%*P*p{K+Su7=@jm{^ZAdxy++~ex#%A z{q>2*AO7PX{_)gP_ulo{uYUPU5B}E8A==bqjWfe$6dRr+s_L17d*%?x0ZEW>F zhF@wb6%4KM8;t|5B_&d_xWzqf+nW2d(WJfQDaVFC=1Zq67RyT5fh2D_VB zadmagB7m>sM81Z`Hi!K0CxvX7OtK#&wYplwk77&3Jqq8obq1)$D`&d{J{u}M=w<`t zR`-fa0(=dPY!w3`g;Q=IHO^(jBo!4k0_0rqT|~UBlU}e5q+mLToe^LdipMaF*8Rm? z@Iy4THNg7<)74;1punzV@{sCd6-{8dGA{TwQuCJ72<7TtOuSwRV?zD;dE zNjH3&c&gT^UQZ>aP&Y-H{)x2J^jJ;p`AE9qvndUuHJPI+Y6_u&k1f6k+R!1tDofzA z*>v6Dt2}ZH;cJ5j@k}>(m64}dRthhQ3#L%5DwaxfRk&ku1hd>vD;lJH2u8cB;=-tRD$2AcJsS?-m>S{`=)~^Ugf$+OHRAP%~3+c>oOKQtzwkYgSM=Vp5s<_~}t}{z)^_=vP%4&ui#*5gJ zXR4@Ad#@>#cfsR0G%HA~Qo zol*lE+m}1S>_TJ&p<1H^^=Oq$++?Z-<48sfe)}w?4s1|qW~Xo944539J-c2v>SS$Fz(xXU9J~p)d&agY`!&_2@f8b|4rX2hlAg$+Z51~LPboXvn6n+ zGU4E-l&)Wv!I#p;JV>Wy;v$vnTNOEcm}}{MGciW1#dZiE@3~;XCG`TgU7Ksf6}EIcWvi za+S9x8!n#62n~-Pwnf#z9Ddji5DE*AgHO$^0Ao|d5b0EVQ@p7xgHLVwkrlA%_({0R ztdK*?#TFPTI`Vzt?HET*5p?}CiXG!He5Jy{Z{pYm(Ad|OSV%%N`F@0$wnM^ggHUmF(+ypi=U#axlCTS9FX`6faQ9S7=z3C>gY9DiH`@ zo;HPAQzqP57E~tild@aL;snCeIp=r}u{IA|4x3FBsxxxRrmjKoaNBUvWMj&RnB8!- z7g(r^GER=dudVOOh{f}{TC`=7l*fhVna+?F3yJkLvfGiv%bbTuYhJJ+X7V!U!F^GR z6DqsB$4N&q}txdr!IQd>6DHS286 znp7nKUKdbl#$zB^2-3j{FKey^o_PxHX{%|pU-T7Xa)wM)qM#MLn7Off`L=Z0DlAjlT!$IOA)VS zYFTc>gImVa#_%X4YzDuT@gr;0wf!VqW!4lJy4V6^i;jF>czYqA#06ddOx&IUhObmO z_;OdZXyj{4EF9S?-Ll9QbK&4co$Hu8fwux{*`4Gu&`y?Ywoc%WzV%NUpN#yCV<4{a zj{$w-1pcJ&i`m`HW1wBS=AXbHdGnt%zBTW+^9gT?8#eX5MO-C)q7!$OaE$ym+3onk zmq}Px<1~Yk)BQ}r`TdPBz(gDbWqd{$l0F``U?H~ z;?Ez7MAA>=a{&@ztAc}llfyJbB4I^_>r+)}Xj+?N1;ba32DX7ercWda{YF2y5@nDo zBog?iVxU=X7*&c0J=&p}M4BLObvKM)|{6zEnE!E(H%5l zNOh}3IzuO+6yEs~8I5q5$q8AhCdG0m;EQdWx;V^4WAmMI+4}aoS=6D}aUcMmzS5Z( zNTne!q`6TkhsL!K#G4E!1Wu{xAV3=in!=_4cvfG*nl+Fd6H`~_y`WM9u{e1ztJfVJ2A?cQi1xi; z3ciQ;ChDT7(!?4h`q-x0NjmbS@E*4MRNtN81{hxfyT;Z`8Z)H;c>A`)o5ATW)0d>2 z=_zRGrY#9wvtMOO0q_O#N?b67I!s@ZqH6`O>fBiE9ST0@@@2s5OVjKX2&s87CzUG{sQ0C0PEI7C zPn)0^m&|776mUbp=Y-MkZHmVbsyyaO z`mp!lvSHxqjTSm!#OeAa>5UfO+^Jw6_li1Tj4<#yvQ~mBXNuaCCRml#J{2&?R-j4o zL&4{q*{3s8)TT#*&OVI_z>-sIn+DtxX&Z)vSIDi0nW8p56Qs&bg-Q&NZr}`T9h~vY z;5QT>s_W45uv+_wOczzHyQ^Mj{CzaGGVm#yMz|Yv;`zcW)=JV~rb48wjp=|1!d8zM z7^3DO;d`)YYcW%yQgC;h^q3@Ud<{DX=PeL+Snn11^_s~{g-St>bvQxro@B@HYh{~4 z!^gWL&Q!SMs2k@6;iwNg3p)bBr|{_{FDXek4(q&D+`u_Cg9ic-rqKyOD0d_!%$)?W+oS(HNjF)Yr*axzH6|dav5_4j)GZ;EjD%v zvqq1{+t#YPKSDJdtFY5pgoAM4z_&pvq0AoN)W)MuRYP41N=c*!a0nd0&lM9#(E7x` z78+ZrTqaSR1Nc*srN#F8%-!$REmSyUqKy+uV!ge%1mLF@qRY*Ae#X7uRwpKg)!<8F zd@bx&o6Aw_{H@5+{CGV%TYOjrCmpk{>1br3XV%B_OV;sU;QrjAmQEICI{Z3#&H**S zd8Lp^Ym3nH`0z70{VWFfseD<9S7%547JO5(ul1^NrJPRzdJG@EXCHhA_~YuiWH~p} z8h~$cC09FUH!?e^O*r(>_TBd0ZvW*)IP%fl zxPHHYm08*_;mF6uWe45%9^*%s=9cG=;=s%K<+-IOIdai~KLw|(LIviQXHIh#I5}{V z!b1Z<1){Oo(o889i-PA4xYPIKT-T#N?DX-cF8}B&Kl|IGaO02Mdh?}&-`)6y2mS}2 Cy0NhU literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/6A.png.meta b/client_unity/Assets/Resources/png/6A.png.meta new file mode 100644 index 0000000..7a90a77 --- /dev/null +++ b/client_unity/Assets/Resources/png/6A.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: beb5577e982574c8b9809803d7eb7f99 +timeCreated: 1499076240 +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/client_unity/Assets/Resources/png/6B.png b/client_unity/Assets/Resources/png/6B.png new file mode 100755 index 0000000000000000000000000000000000000000..a422db73d7eb4ae8ee381e0278a1e6595d6ca494 GIT binary patch literal 23386 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 TQt*mHd+Nf|=YMzZ8$b9z9eeBi literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/6B.png.meta b/client_unity/Assets/Resources/png/6B.png.meta new file mode 100644 index 0000000..7d2a084 --- /dev/null +++ b/client_unity/Assets/Resources/png/6B.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 38f45488d9cbf400ea0da7ded8ef6dcc +timeCreated: 1499076239 +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/client_unity/Assets/Resources/png/6C.png b/client_unity/Assets/Resources/png/6C.png new file mode 100755 index 0000000000000000000000000000000000000000..4235612d46c4c1938868eb983eec7fa1446a7456 GIT binary patch literal 23386 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 Mwi|zU!{r~^~ literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/7C.png.meta b/client_unity/Assets/Resources/png/7C.png.meta new file mode 100644 index 0000000..573f3fd --- /dev/null +++ b/client_unity/Assets/Resources/png/7C.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 2b35b28cea654424d8797826bb9e328f +timeCreated: 1499076239 +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/client_unity/Assets/Resources/png/7D.png b/client_unity/Assets/Resources/png/7D.png new file mode 100755 index 0000000000000000000000000000000000000000..98747891c36d003fba687987d526f45d1e12230e GIT binary patch literal 23386 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 XpSt_ammk5vk3V|h?CXzw@x}iFglJvg literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/8B.png.meta b/client_unity/Assets/Resources/png/8B.png.meta new file mode 100644 index 0000000..1536de5 --- /dev/null +++ b/client_unity/Assets/Resources/png/8B.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: dfb8f4a38370b4899b1502f5de71ba31 +timeCreated: 1499076241 +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/client_unity/Assets/Resources/png/8C.png b/client_unity/Assets/Resources/png/8C.png new file mode 100755 index 0000000000000000000000000000000000000000..26de0a7e423dac13f21e64ab57408a291774c979 GIT binary patch literal 23386 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 YogMSLckl;pANb(Ix4(Vg?|te20eBB76#xJL literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/8C.png.meta b/client_unity/Assets/Resources/png/8C.png.meta new file mode 100644 index 0000000..1cf8820 --- /dev/null +++ b/client_unity/Assets/Resources/png/8C.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 79efaff072c504f2b8a9b2577207fdf7 +timeCreated: 1499076240 +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/client_unity/Assets/Resources/png/8D.png b/client_unity/Assets/Resources/png/8D.png new file mode 100755 index 0000000000000000000000000000000000000000..09de8b0dd836a45eab78fec97a0642569fc2ab67 GIT binary patch literal 23386 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 literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/8D.png.meta b/client_unity/Assets/Resources/png/8D.png.meta new file mode 100644 index 0000000..4b3b842 --- /dev/null +++ b/client_unity/Assets/Resources/png/8D.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: e896c18fdeb1247b6be2de66e76c134a +timeCreated: 1499076241 +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/client_unity/Assets/Resources/png/9A.png b/client_unity/Assets/Resources/png/9A.png new file mode 100755 index 0000000000000000000000000000000000000000..e845746bbf692a5a15b5bd24721c653a829c6fa9 GIT binary patch literal 23386 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 literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/9A.png.meta b/client_unity/Assets/Resources/png/9A.png.meta new file mode 100644 index 0000000..806e462 --- /dev/null +++ b/client_unity/Assets/Resources/png/9A.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 0143e23668a194555a1506e05f128abf +timeCreated: 1499076238 +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/client_unity/Assets/Resources/png/9B.png b/client_unity/Assets/Resources/png/9B.png new file mode 100755 index 0000000000000000000000000000000000000000..a2944486a9134ec0663053e821d858d83246cec0 GIT binary patch literal 23386 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 LbH6$Jtsnjm%qA}; literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/9D.png.meta b/client_unity/Assets/Resources/png/9D.png.meta new file mode 100644 index 0000000..33da56a --- /dev/null +++ b/client_unity/Assets/Resources/png/9D.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: b9a4f4265cb5042e0855e552589d3aec +timeCreated: 1499076240 +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/client_unity/Assets/Resources/png/longhu21_n.png b/client_unity/Assets/Resources/png/longhu21_n.png new file mode 100755 index 0000000000000000000000000000000000000000..d743191f91cc58da797e508d4cb5a25cc32f0768 GIT binary patch literal 8235 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 literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/longhu21_n.png.meta b/client_unity/Assets/Resources/png/longhu21_n.png.meta new file mode 100644 index 0000000..b798aa3 --- /dev/null +++ b/client_unity/Assets/Resources/png/longhu21_n.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 49b946f0ce0994931bca771a9ef59432 +timeCreated: 1499076239 +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/client_unity/Assets/Resources/png/longhu22_n.png b/client_unity/Assets/Resources/png/longhu22_n.png new file mode 100755 index 0000000000000000000000000000000000000000..e84dc425f42365440ad868aaa247b887c025db66 GIT binary patch literal 8235 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 BNlpL& literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/nao2_n.png.meta b/client_unity/Assets/Resources/png/nao2_n.png.meta new file mode 100644 index 0000000..e8413be --- /dev/null +++ b/client_unity/Assets/Resources/png/nao2_n.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 6319ecd47780e4befafb2394efb2ec4e +timeCreated: 1499076240 +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/client_unity/Assets/Resources/png/nao3_n.png b/client_unity/Assets/Resources/png/nao3_n.png new file mode 100755 index 0000000000000000000000000000000000000000..70bfd243e4683b7557b8cfecd490599ffb415c68 GIT binary patch literal 4197 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 AZU6uP literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/nt1_n.png.meta b/client_unity/Assets/Resources/png/nt1_n.png.meta new file mode 100644 index 0000000..61945ec --- /dev/null +++ b/client_unity/Assets/Resources/png/nt1_n.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: c07eec19a3b4f432788fa4e53c4ec413 +timeCreated: 1499076240 +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/client_unity/Assets/Resources/png/nt_n.png b/client_unity/Assets/Resources/png/nt_n.png new file mode 100755 index 0000000000000000000000000000000000000000..bc848651a5e22f5b81430f245190c62ba5452c11 GIT binary patch literal 7536 zcmdU!d0Z3sy2hiZfYuEcT&uXCZLQ0(o|z$;$(|6hLG}d#2?PUSlO04r1`tFL6tIXA zP()Bvzc1!R20Zlz-usk%e_3{r&!)~gGTe91xr+Xc)MuAB>xekSQDpCAMUeo+(e1r ztOesH&?ih>FnZjy;UnK1_KUwVO&zt0@ zoa!(1om`fnVosbYnc^>Tx1`fFiu`RntoZ@v{gb(TXBwjtP9#+TR0bQOUixwybGXJMx~zA{h|HfwJ3 zB0MXA)1(Tom1vgId9K^L*957|um2?#VWy+3Ql2z+K3XmaPJD||#1_ZQN8%R-xbEyL zUE}c14gPPsx?5fM_x-#x^UKXCMKTsL%;(FtY>v+q*R>77vuBfP z(N7&!zno}%a-{gz3tPT#O^ps%XyY($H7$K|vf{IIEnBC}d%QpQw{!Kso~(UxrFra- zp^*1M?noi=6Z1G@#A0jS;XJBm)yO3_W@g3TesoSH{YB*dh8#!y8d=!`_D(K-i{0H zXlt80YV?seFcpg-o9e$x!`oA2asBxDMZ(0N;dg2t>&BI<>EY(IMTEj{_AmGMe{yW2 z>)R`53zhltaaRsEiQbxb_`m^&Rs74{>t{PxKfZjZAw}^pC~mP@yJ*2%m(QPRtIlpH zE-f!EC8tfV6JjlYWpu1Bxp#K&9YOZG(xPmi$ro4E-f8c=n^gb>mra~y@Hl;mM(amQ zRmhaI5sRrwQ-bsP_6dG-a5B1&e=Kb8?XteQzMLf1j=iSdW zj`jt7=Kphec@7*fs{at55o3l99XeyQ&y>Nh_Ve`mUuNVvaM+x2BRnSJsi~yCAV!Zif`H07fCt?WyIGRwLnT%U zRK5fLEpdPkP9O+WPoZ!ynN%AfK@g^rNaXGi^n_e4ktijCS%d#g+OLjg5+pQ&5Q4T| zaR38U4<{BP%nlJ2W)F*%OTr9;{xI!VJyLNr2!QU=QK|OQC=M_n^bj_++Gew)=wCR}b4Y3siXb?l0G>_>xG+1g+?ZaH z2m(+s@D(NNCC1vt)U@{d@EVLL+&sczvWlUDVNfe7J3fVRM+nejAn5E6zKjW2T`j((W1muJxE zDDN?%3l9G}F5(UaAwlvPnmO&k5Z@x6DJ%r=;7id<61~SN+&lsyjInBd6vx7L^XPQ8lse)` zQ{vzjJZVIrG{zDb5f>O}4pAB1Nn2!U=+KK*^cqFw3mGE_Q>Ew1I2KDUkIIQUGzUgV z-M}SrGU*ZvCnYeBC&wi`HWZY@<%&ey7v>$$A(W?K)Sll0IWwKh8UCrZWISR z!shV#DR8-&Ll<#5DN6zaEzo%jC;_u2YBx}YIOH6TC53Ib^SPqeo=uFNz6`3z zXg4afiUs@_Q4BpssWJm3P|B9+!r0Vd1WzBrhVFtwsh$F|`6@zT3;}mr?6F$DTJ>sQ z&Ym-17~?q0i8HO@SQtq$YO6^`@gQM|NhXDs1e&?A6mUrjT^c2~u>(^$S{317+SzoA zMK9-y^kMz`2DJB362%deg$1Q*lzP3LYd0ujBYJptVHn2(ycCXH9>RvI#?hsErJ5aK z=BahKL80Q&rDna#CbHQ^^cB&sI|ycejD->=t3)n|m8TM74gljgQDG*dj1I*#TSDXl z5jzEp&ErT^YK~bNVvjW_m*AYg(!yN0MroOLZw|V5EH0_z^KI_OdwaK1|dw1 zSP#pv%9x61RC0lYv?i`iTw7Acgdz)2lg%b~%zmnHLJ$Bk2JA028i$kAsZ?SniYgGN zNvBl7MvLi0Tec8Pv0SOrrCKpu1DhQtc6|Mc6~&F2WSEF9VL0@9iDTqb;OHQXBryg` zFb%1w)1VX^2yi;Kn1G#<(P+ZbiN=##7!KGXY8)E0++h&w6pY68EAq37cU7m$`E(_N zX}7C{L;HXP1$2T9O@tHIS%nDV#H!12*k>A;SSI$~)~cf}lBuzpm_g}jFr2K4^zz26 z9m&Z%A!qQA4r7MJDxU#82nGo1MinLpiV2wnj%5-hCls)oLtUAymg8&JZ*ED4^`A** zW_CFh4wEbMy;~LA4sOWJFFus1)P`uVRDnP#ocL7XSV$Qm7h^&P4(0}2dd2<{T)}i^ zvWS-BD~dN4A9p$lCXwmd@>K~!FdbVOi>sQapRA8hUVqf75pi+MAeW1Y7l0($jS&iz z#d2k)8yj!6UbkBeuK@5^4K?I)JhM7u^c6Qd>$XJ|_Rz)!MAAtaT?{nVDtypZOM#cx-u3Q*0p^C6BSnG`T<)mJ}U@2aRy%P4KXR(|R9?Tyiq zk~g+PrCXL0%6qAUH26!L85zBYaK4 zYU&fK3kvFMPjtf?3}RR>Y&boq5GXhiDcjvt<(AlU|K$nc;AzT()Yx;sP(Pz{@+u1; zDl0d1T-)7EEtv?qc+%5>?0)rQfD>_)(N@z867!Rjb8`#gmoH7o0f|%{A%MC!G{^1m z=;+As@SKFar26LSGK4{`!Hkj5c83(Pp9dHRCmETU)7OE-{N&vDq$D>mJlZ|(LPPiN z4ZYmld^rGaKq(H6%vqY$ajVS*{X|iW_0q$cXMY8h7QvitHJwxy^K-M~0hpHnk=^M& zOv-M4=j7X=!R{LbM@Hu4C3SSxlsYj0VvM1~UdR}pMY~}sg~i@k+PVtHGf1R}c}s!$ z(ScfsgSE8>KKgKP&qP6`oUlB8RZ}U80YD60{Jdw}=z%^Cup-utl$HNiU(z6P>C%MI zy_YF7U-|Ix;oxwprUAgqp?C+dG6n;792hqBWq~x>U<9m)EoP8yT|i9iDI@613D3#N zi4H9)3JqVgCI@g}cHreD#jiS8T?Q9WCH%cW_{*h-g8^q)7+Tu(Umflt4UJiv08L3q zitmYp$mrl;C}Iu_;`&tws@qToi^`ZW=Jx_=Ui}p$Mmnhvw3WAZuHOtp5bC%*4=CXY zOCj_7cRaMoF9Uv3B zosf_NMh2N1H^P>obK3YL@-A5nb!DKL43}Pzv-y<3z$4`4_W&XN# z9UUDTsHk5B5#M=m+W5)C;E80o6YRVg^o@Kr5B9O#2k>{6ASWwmW)Ba3=ho3P3nq^m);sSFV!+mbWQ^%snqI`gJIagQ$aBwt6tv$k|6l%g=98nJ zeDe3d)z$4A_w1^H6PzG$=<~DIvy(kX13VOru`l1yYth|(XLfB(%=&xX`R)4_`cLY6 z0Gl+Eg-!gY4ekSvnyVPn_xax6dcA&r-_adeSL@H*+*7x&?&ceR8R6e^%6kN3=pXaI zjLzqBa$n}{TX+7)+6~!jiq71n;ufN{2{rvo0`AIpES167DG}d%HmYrGfRs(fX M1b-FW$%!cVANdDaeE;xV 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 Ie(=oy1KVwUmjD0& literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/po9_n.png.meta b/client_unity/Assets/Resources/png/po9_n.png.meta new file mode 100644 index 0000000..3b0769c --- /dev/null +++ b/client_unity/Assets/Resources/png/po9_n.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 875478a3924ff453a8943f0fcee56408 +timeCreated: 1499076240 +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/client_unity/Assets/Resources/png/px2_n.png b/client_unity/Assets/Resources/png/px2_n.png new file mode 100755 index 0000000000000000000000000000000000000000..23e885f7937a173fd8d989d153843979a8b1706e GIT binary patch literal 311386 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

jLNYiH?Kv-PdwKJf zVw^9aZ_J4Z5AkMYFl2VPz?)`A{QvEpdr%Zty1+-|5fj}+!w_pI2Z2C*+(eBeLPSP| zXvFDZZEulL5u-#!ROB(>SXaeW0gaDH@DWi#489^hBFZC)M%;^1r5J-Qu{K80+E`|* ztlHYzfA-$3y7&9e>F()frn_evH|Q|mAJeB#pRfDO`F-DaPM^~~1Lxwe=8h5I55+n2 zKmLfDQyq0~ygP0!;vY8)qXCt*Pfzzw`K|q3q%+Gke@&IA{57ctU_c5%3)ndSt2GwO zpFjTiV+)M|z#n$@Sd2zvIQ2xMbg=M+x;m}wKG3#Uj1I#Iw^&ZY$v6WD zwAkT7%0a*t|1p4#^MuXr5R8u>BMb<~6!P$Ko9KqRd%7F{SfA2Gj%0Dym2?OiE06p& zsuKP>o!-czM6jPho3jzbEsePIG0A6%0q9xwD+zpV=d1H@0|DhkEM=iP4urGzs~bU$ z4*}sUyKmmS&sZZ@gk|U9u2Lr;$3OlUMgTYQi}{aR3*6TpJ`8gLQ@?Qozni*$&#k}E zdAsulv4H~k_mPwodHxzI&-2%y8sMil7{Y-;I9NagY4d$-1aV3u+cIz7Z1(iNmh)^F zLNTzX0Lko)8_&0V1_`OmKA$U~b3j%|84&mEVwTz#oE-P(&0|?kht#EoURit^(I7yU zfBeBwqaL}#56g&rIDT8&)HgG#wru+*Co{txefM;)=GK3C`*!oX^+!@tZbjXK|A0~A z?|J0~{+_D_gb)We8o&fXBH1*#06l07G2?-4iHIn@n z2IX||z7{xz6Du*duIWIA$;A_*0T{ST0sb(427vIN%`jc{RQSh_^Hkym|Nl4XF1UEQ z{>YuGw%Y~GDJd7C4jX?A1vm@fKb3w2L6!2Fn;=wP@^#{%oxcZ>55EdKgeJ!YxxMI#omsa9|?Z`WhutC z4D!5z|KE4+Tu+AnUJTQq=WQ~-aN_yHg|Jsf!6`R^(^IcH~a?G-}(&h0O6 zHBu*p5x!RoZO^KpAeU`*hi-;G(?ygGIDMQD;Eza2Lv;0ep(G z9r5#hKOP4DknMbW<^KQe_&62W(Diuy+uZ%1nr_B|Et?Kak*KTb-e_#x*?hhDX!#us z{YSn%lJYI>0B-G$qq<`MSF1o=oa@Si|7%qx^MBzsf^u0IkN?M->T-w$Hd`5Z=Z}Ox z@UWL7BT;~^>B3(y4FRuu0#5q}lu8>D>)OFt2f4^X3UFtocMn1~ayH$SNeX{}ab6O3A8Gt4gFLCJOOiK{t=558KQs z!UYv6D>rpn7}YATm*-+t2>mvS^P zuyre!E?s&PKUUU-o?P)d|11D2HU^f3)8sHbk)S)wiDHtOS2DqsQ zn=ph!k8fb?OW{B^W28g0aB3>V3dl!xI~=}QS&8bL)JfyHvLV0#lWn;9;fEitY^Yla zo0|>Xx)4!gS;(sNbS+TDC&(h@OsFx$GKYEeWV=oX1}eHSJJx)CsrB!t_pG_H z<`Aq07myo)8;gI{#9y}Z>ilI@145}cRw91r=k;NXy$tCZV3Ob_cwh}o{*XQz_N(`z zv{!&BH$Jhm6bJntFs&E@?b=;!+{0Na*1$DLpm_7uvmhFEtU#MrZ-r)$BuM* zOBrNb@|6F(6DG+Eyf4bhBT=CV?{aei^16~|gn<7hUR_pqPF5^>xye*fVLEYgF}xji zrKrfLpN05C0_78CD!fZrD#E@W*mIERzm*&o$3(SW^28CMe>9FJAt+!;u{sH<} zqS%6z$A3!gP#`=c3cn-A6P(0xfVlv9-N{}2zlhhC;a`~5%)bxP(Q4W~w)}e1*XEpE zRc4SC1i#1pl`5~oUr9B<(l8hNZ0=q=KA5Kmx3iS(y$Lx)ZdPM1o&5>K2L`2*4Tbi? z^P2!3$VZ044TLaLBu3^stxqij!gI4zqcQXZry}pU_Eau_=*j+pRPtD=_yn5yi@qNEwTm!z(+L8E^!915G{avJ~xOwyvbQW#E>CFEXe-=JV_oJ0(Xuckf%6- zaC&L0D_}R9f7yT@%}y1T9(Ws2<3B}49FI!VKH%JBuAqpajOvsrI|THY z_(mw_tXsI{*1n&Ul0JTH{i%uYZ|yLh-3ETY=gOY-8FPjd;q{tGAWl2EQZ z;on6=*i}{y(5I$WW8?)%r^B!C2unjH&B4!`*$@J_#@B|BSPI*Dq}UR6^UxnW4~jLLx)L zf0K~kMR!Kg@-;2wR{&~PKCzZI!Qj85_L}ML<4m&|ejVn@;=K1aUG55@!O%wkT?tLKvJ|;ddARN0e6xi~K=_eNyZ4*xbtesP|plFw~Zei8B z+&>`w2M?~9I+7k*OFL>?JFWrm&4r827n5os3al-9>-bOkTbn%bf7Qy%^H)`cxnRFw zuz+d|z7_bYZ&0colIiKy@Oof2=3V*LYjnFQ7Xcg>^!|+2C(b2*JU|=xWrFR=p zC~^oMm8=h-stW(O87^eAXyhk0fk(+uI8GSwB zh&VqYuSfy|c-TRmz3Cqd7N0qK6!=G9$vJ#7-fBI*fxE6G{=2Hc4E4$*e~qfR7NiRq z0<7)T2O6-qrC8I;;AP?H)YLM;E*#jnRQLJA#X?0-f52=rbS>iRz)|roNqf$}bgP)T zB)z&+h5xQJp1RX^);6i`YrlT~7wbdl`;$2SNl&bsDSy+_f8_yu^O~<~%VG20+U18A zxXIt0%FFO~N0so`>HNU=K%#*^-z`T6N9r**`%*==%bx&&f)E?ZW;!EsVy2Mc!F&Nd zi!%Rr#!q&VvohWfmayvV5^APozT;ab%he$ttL~`iD{2#Cne#)uLJDh z=l`7snWhI7*Y9l|z3DyR55EkDX7ER|Ig8U3`@gFSxKnxHuT_=f53UyiBYNU)`0FoV z3Vg4BLo(=T_6~_IqBd>) zi}kOy4=P$)uVYUz-&z7a!95%UZ2j)!Ec2D5i$~3izfQWi!fpQUR9=R^JE{VIAQPw$ zA%id4Ek|;m85u3=qb2Zia`*YWQF%H3Zm5d+JD>$hx@Esm{>P&n zC1^??3iCc5NARv^@oZm({|D1uN&#K@LF$5>pd~*L;=i+QmwBJA)=((crTk4zCDwTe z|9UHY{A?{XRggho>-CQO?~-@qVEDgSx5B)9I@OiLf9DF2Dymf;`D;{l&EI_@ftua| zmpT9WGkwSK&jQF4k!EYNh3O@$1skA=RmV7^5%c7-gpG@9j0p? zt+h|Acdy;UP;d_ii1{1dK9sfsR|Y+@1+~g6*n*mBcWpt+=C|0>$bb4S=^eqUQXaCH zA)m)@m4<>-r{=_nb$26Xlzi)xq@-FL5MHaDZ++B6?hRl{5ad|ga$pa4136h9#DeK6 zl~>}gqUv@0Cnd{?!~j;63dJS~eSx#?CUNx7+c7n5(@;^)@?^2Dz~5AAoe%C00^Pym z3-?+vNut0{$!iJzbs5vX<8&o`fpZ1;S}Il^`D;||Mf{UDIK~633iyUimN0bW($p@| z98gwr(bTNu1tR{3B)Sg%Tdhy-JpliI0NudDf6<{}6Wk%58%^=2jXP^P=NW&+$}96% zRP9atlS_q3fz2Y&VjmV|)8rxHA;516lQ&IGOHOvo3Rg*O$HCvU!3raQ>kn`=_nQt&o3@ED0RTAi;m=7+em@=XAyK-(>}a zs>)X$_-j?|UHlX2q|oXZp;5aq6z6m4T??`@GY=oaJ-8b<37d>9%QKg6nS(hp{I^;k z^8Aym=S z17h7z5G$1?>py`1^=tRw^PdN~o4>P#I1yytQbL{)(7<1|^6LC$RlSb?lmtb=Nx_5C z5>tfuucC_&gshE`D2sJP{7uInCndohe-n%Vo`Ac<17Rjp30V%xiKpfA6R55v{;O0# zuJXuVqiS#CAG3PYYAHgF13U|;(uNsiQFxOqfBxYw3<2Lg2JgqjgW88b!6!@s-LT{BA()UbMY#W0)a6!%XKfR!i*=7su;df? zSC9#ydr1$E!Sg^JCe!Zsry~E1v$WU|?z&?C*IIetuT|CC_{UF5h*6f!T@EKqn#hg+ zm36m~KM`86ph%=I(cLAw0eB1ge^>*;0l>qDWG&G2J^Y`%*_`wKp9ufmyEt7jf8`3` zbzN5;_-j@5GX6s|;u1xC+({aMu;_*IWUAf6c01#s5G2-pCt0LoEPEjUr*j=)9lv3Bz`uA#90(?2L6 zZO+6QiSAoKLgI{xbJAW!{(by=L|174?o>WNd)t({t2SRfgY-xmNe-<-7+Nw zThI;j^M4~PFJt^z(f|4=CC84>$V-dr*U#U-Pf$>wp3&u>gYQn|{kl4;x_-~2b*lzS{QCz2 z#D4u=^h6LpxPM?^AT(kR=yF|wPS=gf4;!Yv?!xumYWpveUMg9n}Pk_Jw3+@X3Id(uFh=TpW|9VDOX!dSYpc|^f<)4#; zB7XwWuMf=ZfDyPMSg;TD{bWFnjo1^qLc@2X0^Lv*F8_Qal=*`J07by)uJ{E3eeQm& zr*wse??wf>p(EpNWDP5uEyHSB|s0x>V4ic*Tfg&`8 z+tOb;0PZPWq2;?#fo`Y@mw)CHZt#ERzk{!W+FQWKUwhkmgQkzaH&E369en(?x1Bd= z`uKYTMeX0g$6tHfd4r~pzc)~H`5oT4^60w8X94=?-uu56UDqFqc6k+Frgyb~FCcgq zPfx#%kH4oa=3V8*{Ee{#26)%E^L-n&76AUnR|gGzrSHqSzIq>jwdV4=j8QVe~A9}*bx~1;r1W-_Z_5%9>6yQ=p7aS_=m@aQv8HJ1c1S@XaK%3KrgTW zCX|CfOOz!B5{e0Kp}ZUL`T{3QC5@Q?gC1As9A*oMypo?jCP*!<2~_;31H zH+~lY4FSgiI1r#CftOzbTYz8y(O_hFtdShYGCuLv78q`f4TX+?;D?a_x(6 z$Pu~_um1kM_{)Xp5I#CT%mQ%UPvSrFCk8MOEa25wp^Q(wv;_b!(5Lt@`g8n=0l*+| zAXosJfKR-#1qK0ppbs~J(DzgPH2%{r07ikt1keb4;*BjZkoZ2qPn=)ye_{Y|AIO;i z*oaTOu?4`x0kYuyV*Yd#07uaVeBy;I&==WD>GSFpM-QJD)=f$IT`w3hDoA$mX>D1(p*8e{~ CWcfV+ literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/px2_n.png.meta b/client_unity/Assets/Resources/png/px2_n.png.meta new file mode 100644 index 0000000..2704f37 --- /dev/null +++ b/client_unity/Assets/Resources/png/px2_n.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 249ab87bd7d8241fea217a8636eaf77d +timeCreated: 1499076239 +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/client_unity/Assets/Resources/png/x1_n.png b/client_unity/Assets/Resources/png/x1_n.png new file mode 100755 index 0000000000000000000000000000000000000000..2cd1dcae243e4b81c53910ed48d26192e73bd692 GIT binary patch literal 1919 zcmeHHOG_J36uy&5Y7&js_&D>-WM-0#G3Na=iJJHz3PnZTR9qASB2pok;=)CwDTs9; z#eyJ6Ed&AzDd<8FA{2x!yXd0OMWL&1y6U1kp}jMSKcFCm(tdE~-t%!dbI$i&?(^B{ zoW;zT5ki)!$?-Y7_u?fPN&J2M^wT*)B$|D&FoDB6LA6@l*w{EeKHlHoKRP-(I5^nd z-90=!ESJk`Yis#@zECLa?Cg|ErOnMvmSwN6uP-hxwzs#JmzV4H`s(WH%F4>(;$kL~ ziN#`PXJ@rq?d0U7QmO3i?G=l~_4V~!E*A&{tXAvQ)z#M4*6Hc#($dn*%uG6+cDY=a zmzQ@k$p0e$lmf}xtNREM=*islJbL%`y!b3%dHLh(*q3U+!M*No`#7Kd`8)WV#hV0u2(?<(MSS>Ny1|bHJvE+P=<6Zc$?rJ)Q|K`0NPY8XdQzwByr%{oCcq%E zZ`e8Y*a!^ZrI;iTT?iQTagRkf z!3NN-(&!$5gXeiB;tn%BuQj6aMo0=Q%QFzXeW@^w|9U}qIdYg({ObHZgcRHPRzp70GYJ(B3A3vflr!5J_ z25SItMmUFyR^fCu%V51-6lUX6Fp)^aheotAdI;Jm!9mMj1^lus$L(4f5{4MQpBBX+ zfFg^cNYh~Iz>e72A=&2}1QQ7v(dYBhgJ3|NAlpTcXAq#L6+rZPJYEmzuzV@6N5U-j zz6C}_Ns|1SR&5wnG!}Ic5FC**3NC_>u^WKU?g?r)YnP)rXm7&~oMLTh147Nc3%s}q U*WcG?Eo!Z)iRtk-qmRnJ0B(lHdjJ3c literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/x1_n.png.meta b/client_unity/Assets/Resources/png/x1_n.png.meta new file mode 100644 index 0000000..d4f4045 --- /dev/null +++ b/client_unity/Assets/Resources/png/x1_n.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 74d67b26d9db74dad997248cc9986b7c +timeCreated: 1499076240 +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/client_unity/Assets/Resources/png/x2_n.png b/client_unity/Assets/Resources/png/x2_n.png new file mode 100755 index 0000000000000000000000000000000000000000..03b9c80755438b1af8dc25e3103dd89374fff40e GIT binary patch literal 1919 zcmeAS@N?(olHy`uVBq!ia0vp^VnD3K!3-pG8gFi5U|?nl@Ck7Rax)baC`UaB;a@g8 zzU^0faP83VD>0u}TfOO&ds!{~ESK%y=Tm>5^!+>+{^LZ@t6K3F<^2Eu-2MOa%Kx7i z{=HxH=WfZL8_D1H2Yo;2^L3YdcbN0XMb;men7o~6^nRAXhq-$1rfIxtR%tVnecdei zyol@Hmka;C9J+pb=k-&Ye?MG*{lvOocUFA8yZrp#rT<<{|8=?Q@5AC>mkYk^%=^40 z=g;lTT|G&kwhg7XBLG%?zMV1-LllmywuXT)J*S9m&PJr*z?0Oeed+@e{YxmdA8)omAU_3 z&-!_7*6(}M&aUfydaC>H;8;i7n9$f zN`A35{_*zMPaDE^b%%XF9J0JP`0KX7+mixc?G5OO^}F2dv%TK?;}Wk%f6uL@Ztpg^ zT%6^wsoDO{WRp%$lX+=I$C?ah2OG?d)v34EI$xxDsz|NGKzV|_!u2Y-C$*BdbAkS|}b;pzY0S?owYvKHx_-L) zom0hOzGqkx`GhI0sxcvv_c9 ze6gXasi|QrC~P1A=s*X>tQr$DGcyw(17O&I0gJe}v$dm-i4+JJmOzaGhPShZy+@GT z^l&*jIjJ^pura`3OR%>0Ft(gwAwEUU(lX2!Yzz<3Tt`o1Rrzpn@kxQI@~XyV;+z7& z7)j0W4U<=k5a;9;?=V+WlMkvFXJHT$&+#;$Z8b|=T#Q3pJW$QbO0`9t2^f5#jq(Z+ z;^M%#XA|!=S5Q!x3={@M!!!%9D1!*2_=K4Xb1Z;{0E1OjT$~Y{P8j&Pz=;FuQ4UCS i0F?-{@rpBn)KUYiQ4d^uN+@#!$ShA+KbLh*2~7Z`?h3yE literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/x2_n.png.meta b/client_unity/Assets/Resources/png/x2_n.png.meta new file mode 100644 index 0000000..d783a10 --- /dev/null +++ b/client_unity/Assets/Resources/png/x2_n.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 03adc0d14cd11446b99204cc8e7f9a2e +timeCreated: 1499076238 +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/client_unity/Assets/Resources/png/xiao10_n.png b/client_unity/Assets/Resources/png/xiao10_n.png new file mode 100755 index 0000000000000000000000000000000000000000..bfba910f520d7a1981a0522c55826807f529438a GIT binary patch literal 15301 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 literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/xiao10_n.png.meta b/client_unity/Assets/Resources/png/xiao10_n.png.meta new file mode 100644 index 0000000..8845065 --- /dev/null +++ b/client_unity/Assets/Resources/png/xiao10_n.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 7fb90fa17d6724ca1b2e51ca8ead86af +timeCreated: 1499076240 +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/client_unity/Assets/Resources/png/xiao11_n.png b/client_unity/Assets/Resources/png/xiao11_n.png new file mode 100755 index 0000000000000000000000000000000000000000..0e32cbb07e951eb011b49c0321e05512b081ea88 GIT binary patch literal 15301 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 literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/xiao12_n.png.meta b/client_unity/Assets/Resources/png/xiao12_n.png.meta new file mode 100644 index 0000000..4c1dedd --- /dev/null +++ b/client_unity/Assets/Resources/png/xiao12_n.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 59395c64462d5448f95b6781bfbb6e76 +timeCreated: 1499076239 +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/client_unity/Assets/Resources/png/xiao13_n.png b/client_unity/Assets/Resources/png/xiao13_n.png new file mode 100755 index 0000000000000000000000000000000000000000..5c57b68d695b69be21cc6de36ce10098f115a495 GIT binary patch literal 42284 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%0Able!9U%4ZNj^Mo?7X3b)T;=Z#xkNFyV zmA3ZU^{8<^K6E;&B@)U4h2MzUS7JWoXfhNKKyKSMxn(o%5>=bEi~*p)Q}Up~w+OIF zIJiyUcPL=s(44HlE|;6B$r(FG8XRSuK(nDYw6y`v{w*~b%_eW#7BhLWv4eKm?$ST5 zUzeVI0Z5_@j3`za9#MCoxnc5aJYimw&8>Q_$=ime&L6ZD3df)RNkc%dHf+;(*akFp zb0SL@jWAh)CjYZ^v}5wI`GX#k zNE4itEFCw*f*c ztkkqT`C$rX!co|anLFy0mUe7gG5-b$)M*{Nc?j=e#|&~OFEDTci7STd@)Qhcf+;he zo7;|KWDYFvqRT%0>vIf_RRw5v-Mo2UM#kX5>hYdcFvC{S8NEVbGamjqX#Vkf|5IwJ zS9omx4HBog57`iqHmurakXtA~Q!uOnP27`2{~boIddF!zwl|`~@UA|)jn^Hk)zi=f zh#47~gA*atKrXzdV2RQnINv}Pbc3GAS;AH=x$)`lGj^A|tpB|_A?BKWxS0D_s?LS@4@bTGQm*cR%`udJZK3zBGLlYw)OF%B= zwLgrN6@|ViRt_IDf5nOw^MNSQAM;T=cD!&${nsCd>hCxUB}$>olC1@F@r5>&Tv1)PU^E#=g z)5yVUMl@L%n#i$DJWh_94aXj>XF@wchj#DW*<599zH{e;-Te=-E7HeG^_s3=98Rc* zqDG8=eB#?riB?h$sBe#K*q%5usz)&0r|5@6OD`$&3=>P zVEk_z(4;VwZ(?J^$%p#np)E-noov$PeVIv?mB#rq z37LM%fF|78o#SsC8AWIsIasZ^0Zl0k@odeflc~!Gr)4Ry1JAzd3=IXOKZBEqL%jUv z)7drghd4VTRRw=;t5VR;-G>ab>(ptdKuYd<{c#{^)cWZk8~Jjvwb13kh%X15Sm(wM7izFT#ieC=EochRa+U+#CB)!ZqtCd z$C1D*=f_S~{)iltFc3c>Hh8PtU#I?Rps57xxg{_*i9~O~lWz9^(g6aJee~2fe+2Ei z5;Ob$_PJS1&hL6OVd#ga=WtwvrY=yCZt^VDgF}Ve&_Bc>!*x> z;j2t}x5~5!&E=)Add_r4xiX83!^r$#i%ruOBS_;N;~-LytNl~E3G!3#3Y$Rt&3_!N*bK+j1Q z&;ODM#O>?z;C*|j@opJSBa$x8Ze(}sa|JST`s&bx)xpp?uEs#ggeJ#BRpQgxuoIqK zjM!=7`;?Lh{fiGgklfo>VQ~*{iso$+tTiNPJ`disgBp{^L}G#E zD^#XjW!if%t;-RJ$iZ`M#nLOI)B4=T99QGrXx6Qn=_bcRRUSpoy zoskIw0XubQVkFDW9G)rR5Sn%CCNxEo-sE%>8-a-3Z}QR_Jd*q}_u29xP7m>o^ z4iJ(*Pn$L}OEj8EF5mEePS&)a&rvus966GaW&+N>ht9lL0wrXCS0Wvfm@m`1tOn-p z4IV&|<-HKapj9Iic&3C-Xjj+F&a@7in9zwwlg2#sCNJ&1gpr7goa4lAXz2rygyhc* z$()3QHwE)Hi8VJgcr$0D1gDbU(jwSt@jimHZ{JRbcI`R?+O=y}*E3B_^Z<$mDpO7u zG#CyZXuX+W;&0OAy+azB#B?<4J)SFJpYfQ9=_b#FdIL^3Y0KZqJZ6KeRm^c#R{omX z_%_;MrjtN&By=(%p@Co^yPMui$eMN=voI(prPN7XBsg`Su}zwC)Pxkxqq6Re7g?ob zt>f6K+JF>KvOBtKhesxum=bV{^kD;N{%+=K+O!FWCJX9j#wH2mIJsYtL<{H+9?!tI zWh4QlX)X>nG-;4EjSi?~7^E-EAI82#ha{x&e)=(g9-1{;V2gS8li)y%x7c*$IYs{)~JI)HNyl<@9?*Xp(&8n z6ezI_X=sfIyuB^`8v)8X5a5y@m^;O0VR)jr^$%~ak2`g0#`@cmdLsD1(qo&N`;@*V zfpT4CM$)$oEdu7?5hF78?aLT3BJ)bZt31W_LQlcQpJLkOtXQ5M^*V>3gpx^HW2$oq zhdO$n&X5(!Qjk^VP62+GnXyjRRm>;sA(T=jL~(MNv9Wc`{Eyf2P8J4JW~6*qf)*KR zWNdAou2Fbbdg#8f6GuGaxv3tz1<&)P)RUM-ZhY0m6^o6NK9QHK-o#eBb{!r~x<9+> zm^n8V!(ILY`_2N51Z8Dy+z24eoKK=~(G1;P(Q83g zEYD5#U0raEDINtaAyaHWT+s(Prkes`ubwgPi`dWUo)!!ndk|nw%L0J0b?`sv)!G7i zPpD}Zrf+~lso>W+>8CB&k6WzY_##g)A3{J>--v=Ej$KcGO=!MClcKW}iX zICFR>t-CtX%#QA>dm+7&9$&JcC184S7d)#Wc_ZCi&5w=x%O*78okj>muFg6>Gi&KEbH5{+bLeB727_Ac(#i+q_7MWqpXv|!^)HF-KinUCJXN&L`| z!y~Wp%v68rG#NU}<4N7u#R`~K)4kP)bY|(R1)MLK(1iDhI3wVU9U+{KfV0$1Z|vQ> z`0SQmAX=gVoaoyf*VkWr#YAM2hPMt_XO{VFTy5e;!+0`u$tPmrhqDAsZ=4CoXojqd z>83#3OC~gtA|>vsX=c5)WwE*Ov04D$-o>DKAci5~$fygF7K7X85v`2%om~9}Pc_LV z%|Qr@x2(IyGqd_)vH~eT0@s3#uL!snBTq2iTZX29v*tp6-jq!2s%d6jeY)3PbF1Sm z3_;+hASd_^2PW$2BM&62LyrPwl=y74?St1qS;Kr(c4 z#Y^{?x&F17Zjte&NQS1F^@BYo-J~D0$P|pdXJIms=(YG;ffPa0BQf829h#ljtXY!` ziU1)^)RWb@q{HVoF>4M~ly%o!6^N7ctkhF3>*$Fp;Kcg`|I$ z!wjO@LPwuV_k7FK-hOD;Y!W|{QVGA7LZ`t?$Md|bzPK}{A%{DlnRrdWwP)ced794Z zg9wJEfcFElZc>W0*UZ}Dnk8vXXNl&WUHs^gp5@Ua2I9P4G6TN$w$L*u0z=w-!n`%Qvvd#7OZ9K(tpShxcmZf$9WUV8v-FqS z3lb$+p7QUXGBgFeEzD@bX-6#k*33&lB=^(cDxtK{yjsW{uPqTJ`mG{p4}K}evEPcp zY8H%dUxT9-^C+Yk29PTYvQ5m?cW-AhVmWFtG&zZ=wr`QWZp<>j9ZbjM$%O!+cNg zG4s|Cpb4>-#VyRd42UFq@m#Y|AfiSM65@;(4)JS6rr2xLKU+0Gc6z*NhUxvJ2qrC? zKCfQAT73EP=_FN{Ww z8Z~B)nHini_X;9z?4IZ!$ilLdrtl)Adi#M>=Byj_%k9gGf}+pwB9Q_#DMjif;GIGP zOB9hDv}TPSQbgwa(ys*7!Y9z!i#B4Fq{mxGJ=BVAgpgX57A2>=F5`>_2>y|E^ zGiOfrz;+xjs}5Xxv{=Rm|3DUmChirnp{-rJ^eILKO`KyIAAB{;x=Al|h7UB$B_P~{ zZb^ce`&?MVEW+FSNuimTZ2~AgdlbP)AOgee>?u>G3?xcVPdD+hsSTV%28=g|iJS?| zWu_@#Xrwf?ADBG{9`yEl_Ttof^W6kvyJc#MplSo9NCGtXVoWD@?);n0#Q5Qf-+KY* z%Y;iPC7SMKrQZ}s&??6s=wF@U-Ik;DY^WkbQ9+Pn;H&KzKBI15PLvmrG>;d0pNN?jMTM~;GgD1bY`(dIu2uKs$F%3QlaT; ze1bu1zca8APu`Ludbi~-Sg(7h4pVdL!?2iZDl+ z`C2-jHHc_*F`VdPLrqSjw&??>z>B0C7?tZHG;tgl8GcsbP`fdK6f(n&axunPF9(1iG~4PYrj#8)(|JtIF2@N{`C0na15%Jdz#cVf z^9QYaDenRx@+{5vZusP=QF`{$Q3tTzwD9l(O)Su@Wr?gs`l@TyuA57Z1n|-UVJ$ci z1NVh+%GQi3X}w19HZt^=D~`ac0(GuFpD;B{&mMCb%Gr@9yr^h4D`3f>2-bGNjuERZHisoTYqlhl z)Pns?#Qp*jj#SJFt8k?ZMd^d|hf!oL zYA7gq0@cn6&?HZ4VGJS#x5W`?F{bjQ#{x?wqh^rYcORi8SwPR}OS zNm?Y47X#A+ZE|bT{*orq5Qz}`p-uxfI0A#eP{gutI)34Ppx4mFSRphUipF*r%{%L+ zH2Mp$q`9UqCEya1y=cK+$!yzP)=B!yz6fdz|4FnYU0WlZ?VF#WvY&;vq%pA!%Z}_o zT05CFVrQ-qnxE)~QH$xAubJIi3v{zMyHVBW{~BtTO=yCW5)idxr&~% zITi093;XeHZaq?xl9VQyd#z+9T=}C0j#pF#nrB;!27ZKzi8_eefaZeqzY5IftCHd9 zN%_~q$yDVC75Qd;rs}BJ0z6{w&ZG!^EE-aerVSTD;bVM|VXH1;bW#WWUND=0;u+ zh$v~fzlfge$j}ro3T6UItVMXv{z*Ke3tq5e)7ug{dGrX!q2K$L`r*@K^L zba9oyurd?YECr(^m|J3`SA}^-f4h3riX4Wh8ieQjeN27LPJlX^p zUNp5Xf?Z*8FuAl~)d~_4izFtQwQ5mPZ6zYB)0EWH5~0YLT|hVZrvms1FE4sT@)!@g z)j{|IJ+w`P{EI4{``LK7`-We6;`{M+X%~?gRLd>`c4=v85s@H_QvyXsMx>9^a(LiT{*y}Ei+MOn@#FAv95y{Hk3zA+8 zDOJd;AovG}6aevE22b?yLyAu!ZMLyW6;Itn9CKnegqttP9?wECLG@~-0+VFpcL$(K zIxQ{3{%yOme=&yoWx8qyBn(k2KiRME@)%|97)rT)Pj|e>m}+Ue;-@8~8;pP8$oO)1 zX(ig|XMF9ZOeOV%%SNC7Ub2AzJ2hb+HkkfDzw~1DUuR;8X{|r{(C2^0Qa1#=zVMl9 S=YOKvv~KyuN3)uDPWXQgozUd~ literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/xiao13_n.png.meta b/client_unity/Assets/Resources/png/xiao13_n.png.meta new file mode 100644 index 0000000..6f68474 --- /dev/null +++ b/client_unity/Assets/Resources/png/xiao13_n.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 4550a56ac81e84a0db534e2554bc745e +timeCreated: 1499076239 +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/client_unity/Assets/Resources/png/xiao14_n.png b/client_unity/Assets/Resources/png/xiao14_n.png new file mode 100755 index 0000000000000000000000000000000000000000..1ed31ffa4d3723285313dcc93ffd05ce7ce31f96 GIT binary patch literal 42284 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 OKABvMe}D9rkNzKjWp`Qt literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/xiao16_n.png.meta b/client_unity/Assets/Resources/png/xiao16_n.png.meta new file mode 100644 index 0000000..4579e83 --- /dev/null +++ b/client_unity/Assets/Resources/png/xiao16_n.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: b506d288e730944afb1b2df9816b3ce9 +timeCreated: 1499076240 +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/client_unity/Assets/Resources/png/xiao17_n.png b/client_unity/Assets/Resources/png/xiao17_n.png new file mode 100755 index 0000000000000000000000000000000000000000..bee78dd67ae7b32150c3350aabc8bb49ebc43b15 GIT binary patch literal 38291 zcmds=2|yJ`w*E28jM+#;WyWYGCeFkpv!=s~Xrc%@D2f_2xJ3MmKEMTeVlpnl!R@&V ziE)FgA_AI#+aM4W!IfQuxF9Nu3W6Jm2HX{S-#Jy)-51c9|4U}_=3MOC-M4Rd{pve) z>Qr@u^FQp}?S*Gwe%8ju<^{LzUHjqvHvTPZ{3MnxK3O|#Y@W3F(EX#oV)M?88?}#N z-JWei@{YokWppM3H`O$|Qk_uR8sx;^>C=nn7J+`o_YfEM;& z&zb4=^wSeswb;69CHCORzcsZjJ(-{LP2!3DIn(;|8E@Zok+1JUFRyR6ZQHSS?e>U> zPo11xZEW6o)~3JhFMXRlH~7WI7bZP3`>(&K3~P2R`emG?wzlT#O8fGKFD8HfO3AQB z_ev0?x!T%$-+k5k%2KjUj??(Kdn$FcqM zPu5=k>x1j>)mHSsTi{hw;&dzRo!YDZH5E&HJpE+NmDT4)>|O`2OvTHZ|u1!iL)oYyE`F6E^QX+o+~0;XzrS zdxafmHn*GKvvJL}*otMZPWqs6YL6j zn|}9?ZkZu}%3b`*KR#-FHR?Yu6)w+M{Z8_yzdE|*qw>$SuReMELQspZXSx+eym~79 z-NKMpk4*VZQO>;ce`~RC_%qcN2QL@J?hETxS+>*r_it8MTrWlpx;Xuf@BZ

63* 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 literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/xiao17_n.png.meta b/client_unity/Assets/Resources/png/xiao17_n.png.meta new file mode 100644 index 0000000..d2ea158 --- /dev/null +++ b/client_unity/Assets/Resources/png/xiao17_n.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: fee9a0e9b3bc14d5f8fbf8534130a187 +timeCreated: 1499076241 +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/client_unity/Assets/Resources/png/xiao1_n.png b/client_unity/Assets/Resources/png/xiao1_n.png new file mode 100755 index 0000000000000000000000000000000000000000..97cc76cd7db403f9263997bb0daed1dea5d013e0 GIT binary patch literal 158633 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 literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/xiao2_n.png.meta b/client_unity/Assets/Resources/png/xiao2_n.png.meta new file mode 100644 index 0000000..964e8e4 --- /dev/null +++ b/client_unity/Assets/Resources/png/xiao2_n.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: ef33d1325f77948e6985e302a9088abf +timeCreated: 1499076241 +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/client_unity/Assets/Resources/png/xiao3_n.png b/client_unity/Assets/Resources/png/xiao3_n.png new file mode 100755 index 0000000000000000000000000000000000000000..86602998f54d3caf8e248b7af0c5cc4b41aac87e GIT binary patch literal 15301 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 literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/xiao3_n.png.meta b/client_unity/Assets/Resources/png/xiao3_n.png.meta new file mode 100644 index 0000000..74d9152 --- /dev/null +++ b/client_unity/Assets/Resources/png/xiao3_n.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: abeb3a74b22df404abc1bb89dcfad537 +timeCreated: 1499076240 +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/client_unity/Assets/Resources/png/xiao4_n.png b/client_unity/Assets/Resources/png/xiao4_n.png new file mode 100755 index 0000000000000000000000000000000000000000..50230b63e51367628295d2b820f3b56b7b24763e GIT binary patch literal 15301 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 literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/xiao6_n.png.meta b/client_unity/Assets/Resources/png/xiao6_n.png.meta new file mode 100644 index 0000000..e762fa0 --- /dev/null +++ b/client_unity/Assets/Resources/png/xiao6_n.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 4efc94bc893a54124a2c6b2eaf42a1ab +timeCreated: 1499076239 +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/client_unity/Assets/Resources/png/xiao7_n.png b/client_unity/Assets/Resources/png/xiao7_n.png new file mode 100755 index 0000000000000000000000000000000000000000..f15e40a65917c4444686ef6e16b2454d338539b2 GIT binary patch literal 15301 zcmeI3d0Z4%62}LI;ZQ&wlW4rfctr(oO*AGN+~}HBaAY&6i3fs!hzKkof*f8b7%#%D z2%=#HMFZa8ZM+veVmxC+LBI>qc$?X(*WJ+7JwWs$`_KCO$V|Vg_v+hKukUFW*^T_l zqF%Fl3WdUA_%Pei@a+SCfu>6M+`S^Hg+ifJ*nK@_C^UzE@FxFsrCqL%Ros|lczv8= z-j~KVrYPsz8tY0v{>MR*!RA{;{*=!>kW0GCzEA zp~Lh1c4hM|{=C`w)wNEqu6BBPrQ^#>9bTMoUm9-yb86dT>#dHYS?Nl<#!j#-@=(Q1 zv@8j%rz`EQdlasFI6Hn)gOZ?nG2<Em^``$vznDDpJVP9B{y!e~@;g|2*(?#}0~Hii#2IiF1&ue&!o z)kCeT@Z4dq{Ih7le77D;{%&$7|BF}G`cLR$sJlDjd~gHZ1J|+zU0+=6|MX~|CkMKf zhFg`)XaoK_VQBKo5wocjS(W)0oGYT(oB z-OAItKF;m@D5q2T+LqI7n{D%GG_Hr)iLK*boE>mu&!@j_=zU>V`@1XK75Oz;J;KPd zkMb9-!Q(5oYi11kWk;`T$ub_T^;TnUc4%!@AH8C(=Ki`%7Lqju_%0ykA>KnWbtSN%bYvNG8k)a-{(pY80x~WtK zc)g=v4U`s!hAO@%jViRFgMxxC%&1gR&>qfXg4aw$#=;Qxt&&g?1xb-Uq6T1!X3TiF zbm>h;PGd!Kbi7%_VGRjUL6K^;k-3Gko)VKXQ`Hwm7cK5V&|RK`3^&lMS+nMPgQir; zd#>Bq+cOx|SPV7CSV4Q2-gaENv?x~;SiTq?bbiK+rO?ySkq0phF#N;9+}+)Md|W^t zuDm=vT-?K^%o=+$2t$dW^{~CyaV)H+o7-5&rFy7{f~2r?EF}QVg>3x&frA(iplG!k zO=Gz-V5_2_LpD7$v*m{9^eu|5R z@1${chh$-E!17`JV4f;b;y|ypta0&o!}6N&+YvCgxeLg~jWJmlA2Ls`6<&X5jfcM* z&KO@^WV-0@`4+7jmnnCEX~ZRpOpmu1y_!%OA8)L#1%m?fH`i)9zD=_>3==gIn31#J zX7FlaX*{N!2dKa-y`-t8kqpNn^0uh+w1G|TDFiY+2FKgs|UdN)j zEWm{COY-3^zwjFoFi%gmzowOUsor99>eN~r;@0{|p=&jy12#MaCZ1O|j2`{hio1R7 z+JgtLj7B{sFn>q@(Ok$PeNgcY&$EOVel4QfMA? z5$whD2B(L)n*=D`NHnhg+cw;YjD%QBH}o(YS22~)sZ?4D%_Bax_;>+lU++5t^9q^J z#u|5aEx;qy>UepcA|@t!`h-g}BJHusysl_O4k+QK$&<6w(>G*K-Y&AkBHI%6#18Tb zg()n?&$b~FF|QEEYzU3oFgcmnZM4TK&&dk7ew``_h@C}DEbhhG!-;I>YyjPeEX~f& z)`~r@{#>4Wvab;Pa2wd;`Rf3M0W!s-xaHZfu6&*fEXC~RL^g9+HtN&Qva=tFJvL!* zq{jVg{U$oZCRxH1kK&faOjZioWhKv4?@6c3m9sCxks6p$5+;rydD4K`5;L(BA%7=g z5e)Gd6_q__rPvjMX9v8;xlf1Sh=zRS^aR8ZGUf;(ZmsJfbp4!_Vpj;vn@Iz($A^f` zBV-wH9&7uq4~ti8uM{&#a;SP@p&>P^{|nU=f(NNz8RRpO%U#U)XTa` znVb6&^${`W^dT;Rxs47HGqLj2%OXga>o+~U5((@S7(q;_QD1+}Fi zdz2lwi;lvUl)1~6s29hC>AbL_m(0WRET(p3s*EciGRH{*VhkB`DA78`#L~XlMI1xd z{ecyNzZJH`fy^r9{vjELeOG{AT-#lr5OGY{I$=7A& z>h?@*Z{qlLT>#Hak=QdckhUr#<6LHJY|1*xFzlRyBSqV7LQkUI$b>Ez&Pg0S6UN}R z7PwN#fS#Ww#Acp5mzf!xl8~^Qx`dX5`C~#iB4mR0WW??!_HNxymg18oWJ(;}cJBt- zZfSo}FB!8fQ8$k1mzhA!(0E$FGj~WmwYGP_nu==sV?swFj(PUnj<&?yvE%RQ?6?Y} zcSt<7H>J$qt%%x|L)5bwze>zjRwV&Z_;eDy$u7ehhVH|KL34aSS=crhm3JExjPiNm{3nggR^s9 zPWUJs8;;7!$;r#hgO$@4P0CCgRioPEIQKxo!GZmDfv3DEW~t_5n4WMlW}6xmp2rb; zz;Rb?#NGnHQ+q)*JT#~22`6P<*V6}0*J}y|HJf8u^3XgCo)E89T&zkVeC? zmWa2N85sN?(xR{l-diC<<%cd>AMZ$3nF%ym{ zp@&-#IYhj05)pHcpY;P8gRRcWnisJsG4b%>#fukvGC4T3XyM?%78fr*d^mB@yokjl z9M=#tmB4%;>65tJ?|3u_Ce4rGAT>w}SpWh?jdIZ2L(0r^=uG4pv3weokxd!HMKD+k z(&;rDiBLIVJ~7W%o=u55doId?nSm+8%TU8;3qu$YOz938Q?4nA6!%vKdm#7vyfnbrXP{=K?Wp>+~r znnP;|K&=DojCnNJ8m_2>U!C9(h==Y#NCNGJ8W>)m;3jj!KxB_7B z_3+1Bym0hICdez0jsi|$V4#;5jCvh;d5P9O5C%7aYaIST`}|x5VZ_}G`V{nzP1Ydl}J5vNt3!0rYYQb@KjUw=-0Pv zT|txZidFIswSt4r^iAqogOZkje3_i2VpjC)8_$r!?*)~`RhVLVK~6{LDBv9N^>uQ> z6@3jkIf>T(2o4tC>{Mb6s%}6|b6LD5N3u#zzHIH27*RhGUbiuXqhQUduTrVZxc_Vb zZ}C(K?wQ#C4yg79LvNN`x=M4t#3HnbN@Z+ls8mWffyx5O7nGKgwKuQ4ag}#w7W}Uh wylU%OO$0DoR;|5>@oTJZ^%38B-c^8Apq;&Sgz0zdY_TzX=t$d5Lnem*7nR1i&j0`b literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/xiao7_n.png.meta b/client_unity/Assets/Resources/png/xiao7_n.png.meta new file mode 100644 index 0000000..4b1bdfb --- /dev/null +++ b/client_unity/Assets/Resources/png/xiao7_n.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 10c467e3c8e054fb2835431dad706d92 +timeCreated: 1499076239 +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/client_unity/Assets/Resources/png/xiao8_n.png b/client_unity/Assets/Resources/png/xiao8_n.png new file mode 100755 index 0000000000000000000000000000000000000000..4ad6b60a4590b622f7bb3f5523898f5f42deec64 GIT binary patch literal 15301 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 n?QDW_(9!mf-r80CKawkP_r>tefszN z^*X2b-c_~t+H0@%S>I>9@4x!z{_MZ7vpL-S^5x6U@BH>}{qC19%YVqf^`G#~u>Jqy zi=V#yxj*xJ{~SL4lmG9(`Uw9Kl27*;1MeIIfBoU*@E?EqGXC;AzxAho z@84ef@|!>UlRtikpnTrqGX_3m;4=n3W8gCeK4aiB20mlpGX_3m;4=n3Yz!=ZoiMsr> zhd+wYRRu9^7R0X^+NIUy!qqG`&wV;BKF|2>7^qZb<>Mwn1HYA|e$NW>QUTxca*f}2 zN9CsnFNlFc{#I5NkU!m`DsjEwrq92miJuqT*#Gv3tA9j+ufh-frOzL_-u1{6{@j0B zE(=wU%3qO|9|k`b+`cRp8U(+IUxE)x_;XLkpK17)D*PUkzrasr_4j_-WiR&a_`X?f z1%!cNgmXHGKNP>e`q%#EUx={)(?R?E1~HJOaA#-dQ7Ke(d8P5aqi%U+X9dC2A81^k zLNR3!YU6B&7MMc&>ce^0%=YQ?+gFPLNud%J`0YF@g%q1`uXg{%JX&Vpz@P8dBN&hE zn?Bc-kP5#~JKT({cl%5m7wP(_{8dT)Zo$)ymK;B$Z)fKdzxR#*H@w>t@q=4a+Rl-` z3O#*z!w^k-y#(W%+}he=_(hn*yH)S+sdUdieA?cKr1#%L{z#wUH(mORRBZ0wGoVzz zH4hz;p*&4*-thC%dIP@*hy-vk6=Vxjp?vx9 z6Tdf1xkbEQPP&4FLjEF=XYUvB`IXLDT`5DjwkG2X>ez+LfmCo$DxtSxXYA6^r|o^E zWO|`DOI7NI{7pmGNa7dX?FE-Pel3S^XIbQtzRaBQ3x(hb%0%X;9e%fDoPQ&e!cZC}oSY?N#xK%UN&0^HtvrQaWQdT$ z*jsq9EjsYLCr=8v$bg^uk@oq^tHpqqv@D%NT`Jm=qDW6Ti2dF8OZaUR>PKNqnMC

a!M$XVdf%qwYi@@>r=d7CiSrYFUc}zhi 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 z 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 literal 0 HcmV?d00001 diff --git a/client_unity/Assets/Resources/png/xiaolight_n.png.meta b/client_unity/Assets/Resources/png/xiaolight_n.png.meta new file mode 100644 index 0000000..bda7be8 --- /dev/null +++ b/client_unity/Assets/Resources/png/xiaolight_n.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: b9abe93229be34c8a94872ec7d9d0204 +timeCreated: 1499076240 +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/client_unity/Assets/scenes/BrnnRoom/BrnnRoom.unity b/client_unity/Assets/scenes/BrnnRoom/BrnnRoom.unity index b383ec2..f222ab9 100644 --- a/client_unity/Assets/scenes/BrnnRoom/BrnnRoom.unity +++ b/client_unity/Assets/scenes/BrnnRoom/BrnnRoom.unity @@ -91,6 +91,265 @@ NavMeshSettings: cellSize: 0.16666667 accuratePlacement: 0 m_NavMeshData: {fileID: 0} +--- !u!1 &170344678 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 170344679} + - component: {fileID: 170344682} + - component: {fileID: 170344681} + - component: {fileID: 170344680} + m_Layer: 5 + m_Name: Button (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &170344679 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 170344678} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.9999797, y: 0.9999797, z: 0.9999797} + m_Children: + - {fileID: 2119729647} + m_Father: {fileID: 829107464} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 145, y: -108} + m_SizeDelta: {x: 201, y: 257} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &170344680 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 170344678} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 170344681} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &170344681 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 170344678} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &170344682 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 170344678} +--- !u!1 &171061122 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 171061123} + - component: {fileID: 171061125} + - component: {fileID: 171061124} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &171061123 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 171061122} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1341378830} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &171061124 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 171061122} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Button +--- !u!222 &171061125 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 171061122} +--- !u!1 &229117839 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 229117840} + - component: {fileID: 229117842} + - component: {fileID: 229117841} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &229117840 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 229117839} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 555617296} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0.0000076293945, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &229117841 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 229117839} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: PK2 +--- !u!222 &229117842 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 229117839} --- !u!1 &309472373 GameObject: m_ObjectHideFlags: 0 @@ -178,171 +437,1767 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &829107460 +--- !u!1 &468954675 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 468954676} + - component: {fileID: 468954678} + - component: {fileID: 468954677} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &468954676 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 468954675} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 727969244} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &468954677 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 468954675} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: PK1 +--- !u!222 &468954678 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 468954675} +--- !u!1 &555617295 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 555617296} + - component: {fileID: 555617299} + - component: {fileID: 555617298} + - component: {fileID: 555617297} + m_Layer: 5 + m_Name: Button (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &555617296 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 555617295} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.9999797, y: 0.9999797, z: 0.9999797} + m_Children: + - {fileID: 229117840} + m_Father: {fileID: 829107464} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -141, y: -108} + m_SizeDelta: {x: 201, y: 257} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &555617297 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 555617295} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 555617298} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &555617298 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 555617295} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &555617299 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 555617295} +--- !u!1 &656320497 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 656320498} + - component: {fileID: 656320500} + - component: {fileID: 656320499} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &656320498 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 656320497} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1477592863} + - {fileID: 996387892} + - {fileID: 1136773018} + - {fileID: 1341378830} + - {fileID: 1060130425} + m_Father: {fileID: 829107464} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 700, y: 80} + m_Pivot: {x: 0.5, y: 0} +--- !u!114 &656320499 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 656320497} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0.392} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &656320500 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 656320497} +--- !u!1 &727969243 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 727969244} + - component: {fileID: 727969247} + - component: {fileID: 727969246} + - component: {fileID: 727969245} + m_Layer: 5 + m_Name: Button (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &727969244 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 727969243} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 468954676} + m_Father: {fileID: 829107464} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -436, y: -108} + m_SizeDelta: {x: 201, y: 257} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &727969245 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 727969243} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 727969246} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &727969246 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 727969243} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &727969247 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 727969243} +--- !u!1 &829107460 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 829107464} + - component: {fileID: 829107463} + - component: {fileID: 829107462} + - component: {fileID: 829107461} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &829107461 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 829107460} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1301386320, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &829107462 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 829107460} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 1 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 1334, y: 750} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &829107463 +Canvas: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 829107460} + m_Enabled: 1 + serializedVersion: 2 + m_RenderMode: 1 + m_Camera: {fileID: 309472377} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &829107464 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 829107460} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 2093551550} + - {fileID: 727969244} + - {fileID: 555617296} + - {fileID: 170344679} + - {fileID: 1394602158} + - {fileID: 1613347540} + - {fileID: 656320498} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &950272269 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 950272272} + - component: {fileID: 950272271} + - component: {fileID: 950272270} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &950272270 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 950272269} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1077351063, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &950272271 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 950272269} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -619905303, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &950272272 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 950272269} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &996387891 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 996387892} + - component: {fileID: 996387895} + - component: {fileID: 996387894} + - component: {fileID: 996387893} + m_Layer: 5 + m_Name: Button (1) + m_TagString: chip_in_gold + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &996387892 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 996387891} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.9999797, y: 0.9999797, z: 0.9999797} + m_Children: + - {fileID: 1267584356} + m_Father: {fileID: 656320498} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 140, y: 0} + m_SizeDelta: {x: 140, y: 80} + m_Pivot: {x: 0, y: 0} +--- !u!114 &996387893 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 996387891} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 996387894} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &996387894 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 996387891} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &996387895 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 996387891} +--- !u!1 &1060130424 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1060130425} + - component: {fileID: 1060130428} + - component: {fileID: 1060130427} + - component: {fileID: 1060130426} + m_Layer: 5 + m_Name: Button (4) + m_TagString: chip_in_gold + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1060130425 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1060130424} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.9999797, y: 0.9999797, z: 0.9999797} + m_Children: + - {fileID: 1707738366} + m_Father: {fileID: 656320498} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 560, y: 0} + m_SizeDelta: {x: 140, y: 80} + m_Pivot: {x: 0, y: 0} +--- !u!114 &1060130426 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1060130424} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1060130427} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &1060130427 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1060130424} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &1060130428 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1060130424} +--- !u!1 &1136773017 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1136773018} + - component: {fileID: 1136773021} + - component: {fileID: 1136773020} + - component: {fileID: 1136773019} + m_Layer: 5 + m_Name: Button (2) + m_TagString: chip_in_gold + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1136773018 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1136773017} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.9999797, y: 0.9999797, z: 0.9999797} + m_Children: + - {fileID: 1695004277} + m_Father: {fileID: 656320498} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 280, y: 0} + m_SizeDelta: {x: 140, y: 80} + m_Pivot: {x: 0, y: 0} +--- !u!114 &1136773019 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1136773017} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1136773020} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &1136773020 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1136773017} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &1136773021 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1136773017} +--- !u!1 &1267584355 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1267584356} + - component: {fileID: 1267584358} + - component: {fileID: 1267584357} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1267584356 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1267584355} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 996387892} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1267584357 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1267584355} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Button +--- !u!222 &1267584358 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1267584355} +--- !u!1 &1288331127 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1288331128} + - component: {fileID: 1288331130} + - component: {fileID: 1288331129} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1288331128 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1288331127} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1477592863} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1288331129 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1288331127} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Button +--- !u!222 &1288331130 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1288331127} +--- !u!1 &1341378829 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1341378830} + - component: {fileID: 1341378833} + - component: {fileID: 1341378832} + - component: {fileID: 1341378831} + m_Layer: 5 + m_Name: Button (3) + m_TagString: chip_in_gold + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1341378830 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1341378829} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.9999797, y: 0.9999797, z: 0.9999797} + m_Children: + - {fileID: 171061123} + m_Father: {fileID: 656320498} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 420, y: 0} + m_SizeDelta: {x: 140, y: 80} + m_Pivot: {x: 0, y: 0} +--- !u!114 &1341378831 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1341378829} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1341378832} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &1341378832 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1341378829} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &1341378833 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1341378829} +--- !u!1 &1394602157 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1394602158} + - component: {fileID: 1394602161} + - component: {fileID: 1394602160} + - component: {fileID: 1394602159} + m_Layer: 5 + m_Name: Button (4) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1394602158 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1394602157} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.9999797, y: 0.9999797, z: 0.9999797} + m_Children: + - {fileID: 1534824060} + m_Father: {fileID: 829107464} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 407, y: -108} + m_SizeDelta: {x: 201, y: 257} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1394602159 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1394602157} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1394602160} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &1394602160 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1394602157} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &1394602161 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1394602157} +--- !u!1 &1402234902 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1402234903} + - component: {fileID: 1402234905} + - component: {fileID: 1402234904} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1402234903 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1402234902} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2093551550} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1402234904 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1402234902} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u9000\u51FA" +--- !u!222 &1402234905 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1402234902} +--- !u!1 &1477592862 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1477592863} + - component: {fileID: 1477592866} + - component: {fileID: 1477592865} + - component: {fileID: 1477592864} + m_Layer: 5 + m_Name: Button + m_TagString: chip_in_gold + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1477592863 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1477592862} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1288331128} + m_Father: {fileID: 656320498} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 140, y: 80} + m_Pivot: {x: 0, y: 0} +--- !u!114 &1477592864 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1477592862} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1477592865} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &1477592865 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1477592862} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &1477592866 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1477592862} +--- !u!1 &1534824059 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1534824060} + - component: {fileID: 1534824062} + - component: {fileID: 1534824061} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1534824060 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1534824059} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1394602158} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1534824061 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1534824059} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: PK4 +--- !u!222 &1534824062 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1534824059} +--- !u!1 &1613347539 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1613347540} + - component: {fileID: 1613347543} + - component: {fileID: 1613347542} + - component: {fileID: 1613347541} + m_Layer: 5 + m_Name: Button (5) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1613347540 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1613347539} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.9999797, y: 0.9999797, z: 0.9999797} + m_Children: + - {fileID: 1877738514} + m_Father: {fileID: 829107464} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 188} + m_SizeDelta: {x: 201, y: 257} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1613347541 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1613347539} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1613347542} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &1613347542 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1613347539} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &1613347543 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1613347539} +--- !u!1 &1695004276 GameObject: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} serializedVersion: 5 m_Component: - - component: {fileID: 829107464} - - component: {fileID: 829107463} - - component: {fileID: 829107462} - - component: {fileID: 829107461} + - component: {fileID: 1695004277} + - component: {fileID: 1695004279} + - component: {fileID: 1695004278} m_Layer: 5 - m_Name: Canvas + m_Name: Text m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!114 &829107461 -MonoBehaviour: +--- !u!224 &1695004277 +RectTransform: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 829107460} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 1301386320, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreReversedGraphics: 1 - m_BlockingObjects: 0 - m_BlockingMask: - serializedVersion: 2 - m_Bits: 4294967295 ---- !u!114 &829107462 + m_GameObject: {fileID: 1695004276} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1136773018} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1695004278 MonoBehaviour: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 829107460} + m_GameObject: {fileID: 1695004276} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 1980459831, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} m_Name: m_EditorClassIdentifier: - m_UiScaleMode: 1 - m_ReferencePixelsPerUnit: 1 - m_ScaleFactor: 1 - m_ReferenceResolution: {x: 1334, y: 750} - m_ScreenMatchMode: 0 - m_MatchWidthOrHeight: 0 - m_PhysicalUnit: 3 - m_FallbackScreenDPI: 96 - m_DefaultSpriteDPI: 96 - m_DynamicPixelsPerUnit: 1 ---- !u!223 &829107463 -Canvas: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 829107460} - m_Enabled: 1 - serializedVersion: 2 - m_RenderMode: 1 - m_Camera: {fileID: 309472377} - m_PlaneDistance: 100 - m_PixelPerfect: 0 - m_ReceivesEvents: 1 - m_OverrideSorting: 0 - m_OverridePixelPerfect: 0 - m_SortingBucketNormalizedSize: 0 - m_SortingLayerID: 0 - m_SortingOrder: 0 - m_TargetDisplay: 0 ---- !u!224 &829107464 -RectTransform: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Button +--- !u!222 &1695004279 +CanvasRenderer: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 829107460} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0, y: 0, z: 0} - m_Children: - - {fileID: 2093551550} - m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0, y: 0} ---- !u!1 &950272269 + m_GameObject: {fileID: 1695004276} +--- !u!1 &1707738365 GameObject: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} serializedVersion: 5 m_Component: - - component: {fileID: 950272272} - - component: {fileID: 950272271} - - component: {fileID: 950272270} - m_Layer: 0 - m_Name: EventSystem + - component: {fileID: 1707738366} + - component: {fileID: 1707738368} + - component: {fileID: 1707738367} + m_Layer: 5 + m_Name: Text m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!114 &950272270 -MonoBehaviour: +--- !u!224 &1707738366 +RectTransform: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 950272269} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 1077351063, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_HorizontalAxis: Horizontal - m_VerticalAxis: Vertical - m_SubmitButton: Submit - m_CancelButton: Cancel - m_InputActionsPerSecond: 10 - m_RepeatDelay: 0.5 - m_ForceModuleActive: 0 ---- !u!114 &950272271 + m_GameObject: {fileID: 1707738365} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1060130425} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1707738367 MonoBehaviour: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 950272269} + m_GameObject: {fileID: 1707738365} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: -619905303, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} m_Name: m_EditorClassIdentifier: - m_FirstSelected: {fileID: 0} - m_sendNavigationEvents: 1 - m_DragThreshold: 5 ---- !u!4 &950272272 -Transform: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Button +--- !u!222 &1707738368 +CanvasRenderer: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 950272269} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1402234902 + m_GameObject: {fileID: 1707738365} +--- !u!1 &1877738513 GameObject: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} serializedVersion: 5 m_Component: - - component: {fileID: 1402234903} - - component: {fileID: 1402234905} - - component: {fileID: 1402234904} + - component: {fileID: 1877738514} + - component: {fileID: 1877738516} + - component: {fileID: 1877738515} m_Layer: 5 m_Name: Text m_TagString: Untagged @@ -350,17 +2205,17 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!224 &1402234903 +--- !u!224 &1877738514 RectTransform: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1402234902} + m_GameObject: {fileID: 1877738513} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] - m_Father: {fileID: 2093551550} + m_Father: {fileID: 1613347540} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -368,12 +2223,12 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1402234904 +--- !u!114 &1877738515 MonoBehaviour: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1402234902} + m_GameObject: {fileID: 1877738513} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} @@ -400,13 +2255,15 @@ MonoBehaviour: m_HorizontalOverflow: 0 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: Button ---- !u!222 &1402234905 + m_Text: 'PK0 + +' +--- !u!222 &1877738516 CanvasRenderer: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1402234902} + m_GameObject: {fileID: 1877738513} --- !u!1 &2093551549 GameObject: m_ObjectHideFlags: 0 @@ -439,11 +2296,11 @@ RectTransform: m_Father: {fileID: 829107464} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -240, y: -225} - m_SizeDelta: {x: 160, y: 30} - m_Pivot: {x: 0.5, y: 0.5} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 48, y: -39} + m_SizeDelta: {x: 94, y: 30} + m_Pivot: {x: 0, y: 1} --- !u!114 &2093551551 MonoBehaviour: m_ObjectHideFlags: 0 @@ -581,3 +2438,77 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &2119729646 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 2119729647} + - component: {fileID: 2119729649} + - component: {fileID: 2119729648} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2119729647 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2119729646} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 170344679} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2119729648 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2119729646} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: PK3 +--- !u!222 &2119729649 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2119729646} diff --git a/client_unity/Assets/scenes/BrnnRoom/BrnnRoomController.cs b/client_unity/Assets/scenes/BrnnRoom/BrnnRoomController.cs index 02bb22f..bd31181 100644 --- a/client_unity/Assets/scenes/BrnnRoom/BrnnRoomController.cs +++ b/client_unity/Assets/scenes/BrnnRoom/BrnnRoomController.cs @@ -5,8 +5,22 @@ public class BrnnRoomController : MonoBehaviour { + int goldIndex; //选中的金币额度索引100~2000 + + int goldOnPk1; + int goldOnPk2; + int goldOnPk3; + int goldOnPk4; + // Use this for initialization void Start () { + //init + goldIndex = 4; + goldOnPk1 = 0; + goldOnPk2 = 0; + goldOnPk3 = 0; + goldOnPk4 = 0; + pp.observer.brnn.onAdd (delegate(LitJson.JsonData obj) { //提示用户加入房间 }); @@ -37,15 +51,81 @@ void Update () { public void exitRoom() { pp.connector.entryHandler.exit (delegate(LitJson.JsonData obj) { //退出当前房间 + SceneManager.LoadScene("Home"); }); } - public void chipIn(){ + public void chipIn(int gold, int pkindex){ MUserInfo userinfo = PomeloSingleton.CreateInstance ().userinfoModel; - pp.brnn.brnnHandler.chipIn (userinfo.userid, 2000, 1, + pp.brnn.brnnHandler.chipIn (userinfo.userid, gold, pkindex, delegate(LitJson.JsonData obj) { - //下注 + //下注成功后服务器将返回用户的下注情况 }); } + + + //选择下注牌 + public void chipInPk1Choose() { + int gold = goldOnIndex (this.goldIndex); + goldOnPk1 += gold; + chipIn (goldOnPk1, 1); + } + + public void chipInPk2Choose() { + int gold = goldOnIndex (this.goldIndex); + goldOnPk2 += gold; + chipIn (goldOnPk2, 2); + } + + public void chipInPk3Choose() { + int gold = goldOnIndex (this.goldIndex); + goldOnPk3 += gold; + chipIn (goldOnPk3, 3); + } + + public void chipInPk4Choose() { + int gold = goldOnIndex (this.goldIndex); + goldOnPk4 += gold; + chipIn (goldOnPk4, 4); + } + + //选择金币,重复选择累加下注 + public void chipInGold1Choose() { + this.goldIndex = 0; //100 + } + + public void chipInGold2Choose() { + this.goldIndex = 1; //200 + } + + public void chipInGold3Choose() { + this.goldIndex = 2; //500 + } + + public void chipInGold4Choose() { + this.goldIndex = 3; //1000 + } + + public void chipInGold5Choose() { + this.goldIndex = 4; //2000 + } + + int goldOnIndex(int index) { + switch (index) { + case(0): + return 100; + case(1): + return 200; + case(2): + return 500; + case(3): + return 1000; + case(4): + return 2000; + default: + return 2000; + } + } + } diff --git a/client_unity/ProjectSettings/EditorBuildSettings.asset b/client_unity/ProjectSettings/EditorBuildSettings.asset index df7e71c..0cdeb2c 100644 --- a/client_unity/ProjectSettings/EditorBuildSettings.asset +++ b/client_unity/ProjectSettings/EditorBuildSettings.asset @@ -11,3 +11,5 @@ EditorBuildSettings: path: Assets/scenes/Home/Home.unity - enabled: 1 path: Assets/scenes/Login/Login.unity + - enabled: 1 + path: Assets/scenes/BrnnRoom/BrnnRoom.unity diff --git a/client_unity/ProjectSettings/TagManager.asset b/client_unity/ProjectSettings/TagManager.asset index 1c92a78..c4409f0 100644 --- a/client_unity/ProjectSettings/TagManager.asset +++ b/client_unity/ProjectSettings/TagManager.asset @@ -3,7 +3,8 @@ --- !u!78 &1 TagManager: serializedVersion: 2 - tags: [] + tags: + - chip_in_gold layers: - Default - TransparentFX From 00ffec01cdd9de780cb005e3cfcc766c240cae78 Mon Sep 17 00:00:00 2001 From: halloworld Date: Tue, 4 Jul 2017 17:24:31 +0800 Subject: [PATCH 24/84] ui fix --- .../Assets/scenes/BrnnRoom/BrnnRoom.unity | 71 ++++++++-- .../scenes/BrnnRoom/BrnnRoomController.cs | 125 +++++++++++++++--- client_unity/obj/Debug/Assembly-CSharp.dll | Bin 102400 -> 105984 bytes .../obj/Debug/Assembly-CSharp.dll.mdb | Bin 47230 -> 49038 bytes game-server/app/game/PokerManager.js | 15 ++- 5 files changed, 181 insertions(+), 30 deletions(-) diff --git a/client_unity/Assets/scenes/BrnnRoom/BrnnRoom.unity b/client_unity/Assets/scenes/BrnnRoom/BrnnRoom.unity index f222ab9..f5cecae 100644 --- a/client_unity/Assets/scenes/BrnnRoom/BrnnRoom.unity +++ b/client_unity/Assets/scenes/BrnnRoom/BrnnRoom.unity @@ -269,7 +269,7 @@ MonoBehaviour: m_HorizontalOverflow: 0 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: Button + m_Text: 1000 --- !u!222 &171061125 CanvasRenderer: m_ObjectHideFlags: 0 @@ -817,6 +817,7 @@ GameObject: - component: {fileID: 829107463} - component: {fileID: 829107462} - component: {fileID: 829107461} + - component: {fileID: 829107465} m_Layer: 5 m_Name: Canvas m_TagString: Untagged @@ -905,6 +906,27 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0, y: 0} +--- !u!114 &829107465 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 829107460} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f6ce64d91a695412b8451471b742d99b, type: 3} + m_Name: + m_EditorClassIdentifier: + buttonExit: {fileID: 2093551549} + buttonPkChoose1: {fileID: 727969243} + buttonPkChoose2: {fileID: 555617295} + buttonPkChoose3: {fileID: 170344678} + buttonPkChoose4: {fileID: 1394602157} + buttonGoldChoose1: {fileID: 1477592862} + buttonGoldChoose2: {fileID: 996387891} + buttonGoldChoose3: {fileID: 1136773017} + buttonGoldChoose4: {fileID: 1341378829} + buttonGoldChoose5: {fileID: 1060130424} --- !u!1 &950272269 GameObject: m_ObjectHideFlags: 0 @@ -1042,7 +1064,18 @@ MonoBehaviour: m_TargetGraphic: {fileID: 996387894} m_OnClick: m_PersistentCalls: - m_Calls: [] + m_Calls: + - m_Target: {fileID: 0} + m_MethodName: + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null --- !u!114 &996387894 @@ -1264,7 +1297,18 @@ MonoBehaviour: m_TargetGraphic: {fileID: 1136773020} m_OnClick: m_PersistentCalls: - m_Calls: [] + m_Calls: + - m_Target: {fileID: 0} + m_MethodName: + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null --- !u!114 &1136773020 @@ -1367,7 +1411,7 @@ MonoBehaviour: m_HorizontalOverflow: 0 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: Button + m_Text: 200 --- !u!222 &1267584358 CanvasRenderer: m_ObjectHideFlags: 0 @@ -1441,7 +1485,7 @@ MonoBehaviour: m_HorizontalOverflow: 0 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: Button + m_Text: 100 --- !u!222 &1288331130 CanvasRenderer: m_ObjectHideFlags: 0 @@ -1819,7 +1863,18 @@ MonoBehaviour: m_TargetGraphic: {fileID: 1477592865} m_OnClick: m_PersistentCalls: - m_Calls: [] + m_Calls: + - m_Target: {fileID: 0} + m_MethodName: + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null --- !u!114 &1477592865 @@ -2107,7 +2162,7 @@ MonoBehaviour: m_HorizontalOverflow: 0 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: Button + m_Text: 500 --- !u!222 &1695004279 CanvasRenderer: m_ObjectHideFlags: 0 @@ -2181,7 +2236,7 @@ MonoBehaviour: m_HorizontalOverflow: 0 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: Button + m_Text: 2000 --- !u!222 &1707738368 CanvasRenderer: m_ObjectHideFlags: 0 diff --git a/client_unity/Assets/scenes/BrnnRoom/BrnnRoomController.cs b/client_unity/Assets/scenes/BrnnRoom/BrnnRoomController.cs index bd31181..a092133 100644 --- a/client_unity/Assets/scenes/BrnnRoom/BrnnRoomController.cs +++ b/client_unity/Assets/scenes/BrnnRoom/BrnnRoomController.cs @@ -2,20 +2,45 @@ using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; +using UnityEngine.UI; + + +enum EnumGoldChoose +{ + gc100, + gc200, + gc500, + gc1000, + gc2000 +} public class BrnnRoomController : MonoBehaviour { - int goldIndex; //选中的金币额度索引100~2000 + EnumGoldChoose goldIndex; //选中的金币额度索引100~2000 int goldOnPk1; int goldOnPk2; int goldOnPk3; int goldOnPk4; + //iboutlet + public GameObject buttonExit; + public GameObject buttonPkChoose1; + public GameObject buttonPkChoose2; + public GameObject buttonPkChoose3; + public GameObject buttonPkChoose4; + + public GameObject buttonGoldChoose1; + public GameObject buttonGoldChoose2; + public GameObject buttonGoldChoose3; + public GameObject buttonGoldChoose4; + public GameObject buttonGoldChoose5; + + // Use this for initialization void Start () { //init - goldIndex = 4; + goldIndex = EnumGoldChoose.gc2000; goldOnPk1 = 0; goldOnPk2 = 0; goldOnPk3 = 0; @@ -39,7 +64,77 @@ void Start () { pp.observer.brnn.onGoldResult (delegate(LitJson.JsonData obj) { //计算输赢结果 + resetUIState(); }); + + initUI (); + resetUIState (); + } + + //reset state + void resetUIState () { + goldOnPk1 = 0; + goldOnPk2 = 0; + goldOnPk3 = 0; + goldOnPk4 = 0; + resetUIState (); + } + + void resetGoldButtonSelect () { + switch (this.goldIndex) { + case(EnumGoldChoose.gc100): + buttonGoldChoose1.GetComponent