4 files added
26 files modified
| | |
| | | - _OcclusionStrength: 1 |
| | | - _Parallax: 0.02 |
| | | - _Slider: 81.39478 |
| | | - _SliderX: 75.32526 |
| | | - _SliderY: 80.29174 |
| | | - _SliderX: 75.0423 |
| | | - _SliderY: 0.045161847 |
| | | - _SmoothnessTextureChannel: 0 |
| | | - _SpecularHighlights: 1 |
| | | - _SrcBlend: 1 |
| | |
| | | - _UseUIAlphaClip: 0 |
| | | - _ZWrite: 1 |
| | | m_Colors: |
| | | - _Center: {r: -150, g: -198, b: 0, a: 0} |
| | | - _Center: {r: -150, g: -59.99974, b: 0, a: 0} |
| | | - _Color: {r: 1, g: 1, b: 1, a: 1} |
| | | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} |
| | | m_BuildTextureStacks: [] |
| | |
| | | m_Icon: {fileID: 0} |
| | | m_NavMeshLayer: 0 |
| | | m_StaticEditorFlags: 0 |
| | | m_IsActive: 1 |
| | | m_IsActive: 0 |
| | | --- !u!224 &4359018530067976343 |
| | | RectTransform: |
| | | m_ObjectHideFlags: 0 |
| | |
| | | x: 5 |
| | | y: 4 |
| | | gridSize: 1.109 |
| | | towerBulletUIPrefab: {fileID: 4636030447447409971, guid: f6edf4c41f0dac54d94e67945bca23f0, |
| | | type: 3} |
| | | towerEnergyUIPrefab: {fileID: 4636030447447409971, guid: 0d97566feabc1d644862df3fb52071a3, |
| | | type: 3} |
| | | --- !u!65 &1632078504 |
| | | BoxCollider: |
| | | m_ObjectHideFlags: 2 |
| | |
| | | public static string LoginUrl = "http://172.16.1.52:9000/user/login"; |
| | | public static bool OpenDebug = true; |
| | | |
| | | /// <summary> |
| | | /// PVE无尽模式,是否可以点击购买新的宝石 |
| | | /// </summary> |
| | | public static bool CanBuyNewTower = false; |
| | | |
| | | /// <summary> |
| | | /// 是否可以点击金币购买新的塔位 |
| | | /// </summary> |
| | | public static bool CanOpenNewTower = true; |
| | | |
| | | /// <summary> |
| | | /// 是否是新手 |
| | | /// </summary> |
| | | public static bool IsNewbie = true; |
| | | } |
| | | } |
| | |
| | | /// </summary> |
| | | private static List<endless_port> endlessPortList; |
| | | |
| | | /// <summary> |
| | | /// 无尽模式新手关卡配置表 |
| | | /// </summary> |
| | | private static List<endless_port> endlessTeachPortList; |
| | | |
| | | private static List<EndlessPortConfig> portConfigList; |
| | | |
| | | /// <summary> |
| | | /// 新手用 |
| | | /// </summary> |
| | | private static List<EndlessPortConfig> teachPortConfigList; |
| | | |
| | | private static Random random; |
| | | |
| | |
| | | /// </summary> |
| | | public static void Init() |
| | | { |
| | | random = new Random(); |
| | | InitPortConfig(); |
| | | InitTeachPortConfig(); |
| | | List<List<EndlessPortConfig>> list = GetLevelWaveData(1); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 初始化关卡配置 |
| | | /// </summary> |
| | | private static void InitPortConfig() |
| | | { |
| | | endlessPortList = JsonDataCenter.GetList<endless_port>(); |
| | | portConfigList = new List<EndlessPortConfig>(); |
| | | random = new Random(); |
| | | InitPortList(portConfigList, endlessPortList); |
| | | } |
| | | |
| | | foreach (endless_port data in endlessPortList) |
| | | /// <summary> |
| | | /// 初始化新手的关卡配置 |
| | | /// </summary> |
| | | private static void InitTeachPortConfig() |
| | | { |
| | | List<endless_teachport> list = JsonDataCenter.GetList<endless_teachport>(); |
| | | endlessTeachPortList = new List<endless_port>(); |
| | | |
| | | foreach (endless_teachport data in list) |
| | | { |
| | | endless_port newData = new endless_port(); |
| | | newData.id = data.id; |
| | | newData.level = data.level; |
| | | newData.boss_name = data.boss_name; |
| | | newData.resource = data.resource; |
| | | newData.wave = data.wave; |
| | | newData.tunel = data.tunel; |
| | | newData.enemy_id = data.enemy_id; |
| | | newData.amount = data.amount; |
| | | newData.interval = data.interval; |
| | | newData.b_hp = data.b_hp; |
| | | newData.b_speed = data.b_speed; |
| | | newData.b_coin = data.b_coin; |
| | | newData.cooldown = data.cooldown; |
| | | |
| | | List<reward> rewardList = new List<reward>(); |
| | | foreach (reward r in rewardList) |
| | | { |
| | | reward nr = new reward(); |
| | | nr.type = r.type; |
| | | nr.id = r.id; |
| | | nr.count = r.count; |
| | | rewardList.Add(nr); |
| | | } |
| | | |
| | | newData.drop = rewardList; |
| | | |
| | | List<int> rateList = new List<int>(); |
| | | foreach (int r in rateList) |
| | | { |
| | | rateList.Add(r); |
| | | } |
| | | |
| | | newData.drop_rate = rateList; |
| | | newData.tunel_bg = data.tunel_bg; |
| | | endlessTeachPortList.Add(newData); |
| | | } |
| | | |
| | | teachPortConfigList = new List<EndlessPortConfig>(); |
| | | InitPortList(teachPortConfigList, endlessTeachPortList); |
| | | } |
| | | |
| | | private static void InitPortList(List<EndlessPortConfig> list, List<endless_port> srcList) |
| | | { |
| | | foreach (endless_port data in srcList) |
| | | { |
| | | if (data.level > maxLevel) |
| | | maxLevel = data.level; |
| | |
| | | } |
| | | |
| | | param.DropTotalWeight = totalWeight; |
| | | portConfigList.Add(param); |
| | | list.Add(param); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 根据关卡等级获取boss资源id |
| | | /// </summary> |
| | | /// <param name="level">关卡等级</param> |
| | | /// <returns>如果返回-1查找失败</returns> |
| | | public static int GetResIdByLevel(int level) |
| | | { |
| | | foreach (endless_port data in endlessPortList) |
| | | { |
| | | if (data.level == level) |
| | | return data.resource; |
| | | } |
| | | |
| | | return -1; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | ret.Add(new List<EndlessPortConfig>()); |
| | | } |
| | | |
| | | foreach (EndlessPortConfig data in portConfigList) |
| | | List<EndlessPortConfig> list = GameConfig.IsNewbie ? teachPortConfigList : portConfigList; |
| | | |
| | | foreach (EndlessPortConfig data in list) |
| | | { |
| | | if (data.Config.level != level || data.Config.amount == 0) continue; |
| | | |
| | |
| | | SkillRelease, |
| | | //释放技能完毕 |
| | | SkillReleaseDone, |
| | | // 火元素塔充能使用结束 |
| | | FireTowerChargeEnd, |
| | | } |
| | | |
| | | } |
| | |
| | | { |
| | | //生成一个1级的水元素塔 |
| | | Debug.Log("生成一个1级的水元素塔"); |
| | | EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.CreateWaterLv1); |
| | | gameObject.SetActive(false); |
| | | target.GetComponent<Image>().sprite = tmpImage.sprite; |
| | | |
| | | EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.CreateWaterLv1); |
| | | } |
| | | else |
| | | { |
| | |
| | | byte[] descriptorData = global::System.Convert.FromBase64String( |
| | | string.Concat( |
| | | "Cgxjb21tb24ucHJvdG8SCHByb3RvYnVmIjUKBkdlbU1zZxINCgVnZW1JZBgB", |
| | | "IAEoBRINCgVsZXZlbBgCIAEoBRINCgVjb3VudBgDIAEoBSKIAwoLVXNlckRh", |
| | | "IAEoBRINCgVsZXZlbBgCIAEoBRINCgVjb3VudBgDIAEoBSLrAgoLVXNlckRh", |
| | | "dGFNc2cSEAoIdXNlcm5hbWUYASABKAkSEAoIbmlja25hbWUYAiABKAkSDwoH", |
| | | "aGVhZGltZxgDIAEoBRIRCglzaW5nYXR1cmUYBCABKAkSDQoFbGV2ZWwYBSAB", |
| | | "KAUSDAoEcmFuaxgGIAEoBRINCgVzY29yZRgHIAEoBRILCgNleHAYCCABKAUS", |
| | | "DQoFbW9uZXkYCSABKAUSDAoEZ29sZBgKIAEoBRIeCgRnZW1zGAsgAygLMhAu", |
| | | "cHJvdG9idWYuR2VtTXNnEhAKCGdlbWRlY2sxGAwgAygFEhAKCGdlbWRlY2sy", |
| | | "GA0gAygFEhAKCGdlbWRlY2szGA4gAygFEg4KBmRlY2tpZBgPIAEoBRIUCgxh", |
| | | "Y2NlcHRmcmllbmQYECABKAgSFAoMbmFtZWRjaGFuZ2VkGBEgASgIEg8KB2Fy", |
| | | "ZWFleHAYEiABKAUSKAoJYXJlYWJveGVzGBMgAygLMhUucHJvdG9idWYuQXJl", |
| | | "bmFCb3hNc2cSDgoGZG9uYXRlGBQgASgFIp8BCglGcmllbmRNc2cSEAoIdXNl", |
| | | "cm5hbWUYASABKAkSEAoIbmlja25hbWUYAiABKAkSDwoHaGVhZGltZxgDIAEo", |
| | | "BRINCgVsZXZlbBgFIAEoBRIMCgRyYW5rGAYgASgFEg0KBXNjb3JlGAcgASgF", |
| | | "Eg4KBm9ubGluZRgIIAEoCBIhCgdnZW1kZWNrGAkgAygLMhAucHJvdG9idWYu", |
| | | "R2VtTXNnIlYKDFN0b3JlQXJlYU1zZxIKCgJpZBgBIAEoBRITCgtyZWZyZXNo", |
| | | "VGltZRgCIAEoBRIlCgVpdGVtcxgDIAMoCzIWLnByb3RvYnVmLlN0b3JlSXRl", |
| | | "bU1zZyIsCgxTdG9yZUl0ZW1Nc2cSCgoCaWQYASABKAUSEAoIYnV5Q291bnQY", |
| | | "AiABKAUiOAoNUmV3YXJkSXRlbU1zZxIMCgR0eXBlGAEgASgFEgoKAmlkGAIg", |
| | | "ASgFEg0KBWNvdW50GAMgASgFIj0KC0FyZW5hQm94TXNnEgsKA3BvcxgBIAEo", |
| | | "BRINCgVib3hpZBgCIAEoBRISCgpleHBpcmVUaW1lGAMgASgFItIBCg9GYW1p", |
| | | "bHlNZW1iZXJNc2cSEAoIdXNlcm5hbWUYASABKAkSEAoIbmlja25hbWUYAiAB", |
| | | "KAkSDwoHaGVhZGltZxgDIAEoBRIQCghwb3NpdGlvbhgEIAEoBRIOCgZvbmxp", |
| | | "bmUYBSABKAgSDQoFc2NvcmUYBiABKAUSDQoFbGV2ZWwYByABKAUSEgoKd2Vl", |
| | | "a0RvbmF0ZRgIIAEoBRITCgt0b3RhbERvbmF0ZRgJIAEoBRIhCgdnZW1kZWNr", |
| | | "GAogAygLMhAucHJvdG9idWYuR2VtTXNnIjwKE0ZhbWlseURvbmF0ZUl0ZW1N", |
| | | "c2cSEAoIdXNlcm5hbWUYASABKAkSEwoLZG9uYXRlQ291bnQYAiABKAUikgMK", |
| | | "DUZhbWlseUNoYXRNc2cSEQoJbWVzc2FnZUlkGAEgASgFEhAKCHVzZXJuYW1l", |
| | | "GAIgASgJEhAKCG5pY2tuYW1lGAMgASgJEg8KB2hlYWRpbWcYBCABKAUSEgoK", |
| | | "Y3JlYXRlVGltZRgFIAEoBRIPCgdjb250ZW50GAYgASgJEiQKCGNoYXRUeXBl", |
| | | "GAcgASgOMhIucHJvdG9idWYuQ2hhdFR5cGUSDQoFZ2VtSWQYCCABKAUSMQoK", |
| | | "ZG9uYXRlbGlzdBgJIAMoCzIdLnByb3RvYnVmLkZhbWlseURvbmF0ZUl0ZW1N", |
| | | "c2cSFAoMcmVjZWl2ZUNvdW50GAogASgFEhIKClRvdGFsQ291bnQYCyABKAUS", |
| | | "EAoIbm90aWNlSWQYDCABKAUSDgoGcGFyYW1zGA0gAygJEhMKC25ld1VzZXJu", |
| | | "YW1lGA4gASgJEhMKC25ld05pY2tuYW1lGA8gASgJEhIKCm5ld0hlYWRpbWcY", |
| | | "ECABKAUSEAoIbmV3TGV2ZWwYESABKAUSEAoIbmV3U2NvcmUYEiABKAUi0gEK", |
| | | "CUZhbWlseU1zZxILCgN1aWQYASABKAkSDAoEbmFtZRgCIAEoCRIMCgRkZXNj", |
| | | "GAMgASgJEg0KBWljb25zGAQgAygFEg0KBXNjb3JlGAUgASgFEhMKC3Njb3Jl", |
| | | "c2hvcElkGAYgASgFEhgKEHNjb3Jlc2hvcEV4cGlyZWQYByABKAUSEAoIZnJl", |
| | | "ZUpvaW4YCCABKAUSEQoJbmVlZFNjb3JlGAkgASgFEioKB21lbWJlcnMYCiAD", |
| | | "KAsyGS5wcm90b2J1Zi5GYW1pbHlNZW1iZXJNc2cimgEKE0ZhbWlseVNlYXJj", |
| | | "aEl0ZW1Nc2cSCwoDdWlkGAEgASgJEgwKBG5hbWUYAiABKAkSDQoFaWNvbnMY", |
| | | "AyADKAUSEwoLbWVtYmVyQ291bnQYBCABKAUSEAoIaXNBY3RpdmUYBSABKAgS", |
| | | "EgoKaXNGcmllbmRJbhgGIAEoCBINCgVpc05ldxgHIAEoCBIPCgdpc0FwcGx5", |
| | | "GAggASgIKmgKCENVUlJFTkNZEhIKDkNVUlJFTkNZX0JFR0lOEAASCQoFTU9O", |
| | | "RVkQARIICgRHT0xEEAISBwoDUk1CEAMSBwoDR0VNEAQSBwoDQk9YEAUSDAoI", |
| | | "QVJFTkFFWFAQBhIKCgZET05BVEUQByomCglDaGFubmVsSUQSEQoNQ0hBTk5F", |
| | | "TF9CRUdJThAAEgYKAkdNEAEqrwUKCUVycm9yQ29kZRILCgdTdWNjZXNzEAAS", |
| | | "FQoRQ2hhbm5lbElkX05vRXhpc3QQARIUChBVc2VyTmFtZV9JbnZhbGlkEAIS", |
| | | "GAoUVXNlclBhc3NXb3JkX0ludmFsaWQQAxIQCgxVbmtub3dfRXJyb3IQBBIR", |
| | | "Cg1JbnB1dF9JbnZhbGlkEAUSCwoHVGltZW91dBAGEhYKElNlc3Npb25LZXlf", |
| | | "SW52YWxpZBAHEhAKDExvZ2luX05vVXNlchAIEhMKD05vdEVub3VnaF9Nb25l", |
| | | "eRAJEhIKDk5vdEVub3VnaF9Hb2xkEAoSEQoNTm90RW5vdWdoX0dlbRALEhMK", |
| | | "D05vdEZvdW5kX0ZyaWVuZBAMEhIKDkFscmVhZHlfRnJpZW5kEA0SEgoOSW5C", |
| | | "bG9ja19GcmllbmQQDhIOCgpNYXhfRnJpZW5kEA8SEAoMTWF4X05pY2tOYW1l", |
| | | "EBASFAoQSW52YWxpZF9OaWNrTmFtZRAREhIKDk1heF9TdG9yZUxpbWl0EBIS", |
| | | "FgoSTm90RW5vdWdoX1N0b3JlQnV5EBMSFAoQTm90T3Blbl9QYXNzUG9ydBAU", |
| | | "EhQKEEFscmVhZHlfUGFzc1BvcnQQFRIcChhOZWVkVmlwX1Bhc3NQb3J0VGFr", |
| | | "ZUl0ZW0QFhIeChpOZWVkTGV2ZWxfUGFzc1BvcnRUYWtlSXRlbRAXEhwKGEFs", |
| | | "cmVhZHlfUGFzc1BvcnRUYWtlSXRlbRAYEhwKGEludmFsaWRfUGFzc1BvcnRC", |
| | | "dXlMZXZlbBAZEhYKEkhhc1VubG9ja19BcmVuYUJveBAaEhsKF090aGVyVW5s", |
| | | "b2NraW5nX0FyZW5hQm94EBsSGAoUTm90VGltZVRha2VfQXJlbmFCb3gQHBIg", |
| | | "ChxOb3RFbm91Z2hfTGV2ZWxfQ3JlYXRlRmFtaWx5EB0qcQoIQ2hhdFR5cGUS", |
| | | "EgoOQ2hhdFR5cGVfQmVnaW4QABIRCg1DaGF0VHlwZV9UZXh0EAESFgoSQ2hh", |
| | | "dFR5cGVfRG9uYXRlR2VtEAISEwoPQ2hhdFR5cGVfU3lzdGVtEAMSEQoNQ2hh", |
| | | "dFR5cGVfSm9pbhAEYgZwcm90bzM=")); |
| | | "KAUSCwoDZXhwGAYgASgFEg0KBW1vbmV5GAcgASgFEgwKBGdvbGQYCCABKAUS", |
| | | "HgoEZ2VtcxgJIAMoCzIQLnByb3RvYnVmLkdlbU1zZxIQCghnZW1kZWNrMRgK", |
| | | "IAMoBRIQCghnZW1kZWNrMhgLIAMoBRIQCghnZW1kZWNrMxgMIAMoBRIOCgZk", |
| | | "ZWNraWQYDSABKAUSFAoMYWNjZXB0ZnJpZW5kGA4gASgIEhQKDG5hbWVkY2hh", |
| | | "bmdlZBgPIAEoCBIPCgdhcmVhZXhwGBAgASgFEigKCWFyZWFib3hlcxgRIAMo", |
| | | "CzIVLnByb3RvYnVmLkFyZW5hQm94TXNnEg4KBmRvbmF0ZRgSIAEoBSKhAQoJ", |
| | | "RnJpZW5kTXNnEhAKCHVzZXJuYW1lGAEgASgJEhAKCG5pY2tuYW1lGAIgASgJ", |
| | | "Eg8KB2hlYWRpbWcYAyABKAUSDQoFbGV2ZWwYBSABKAUSDAoEcmFuaxgGIAEo", |
| | | "BRIPCgdhcmVhZXhwGAcgASgFEg4KBm9ubGluZRgIIAEoCBIhCgdnZW1kZWNr", |
| | | "GAkgAygLMhAucHJvdG9idWYuR2VtTXNnIlYKDFN0b3JlQXJlYU1zZxIKCgJp", |
| | | "ZBgBIAEoBRITCgtyZWZyZXNoVGltZRgCIAEoBRIlCgVpdGVtcxgDIAMoCzIW", |
| | | "LnByb3RvYnVmLlN0b3JlSXRlbU1zZyIsCgxTdG9yZUl0ZW1Nc2cSCgoCaWQY", |
| | | "ASABKAUSEAoIYnV5Q291bnQYAiABKAUiOAoNUmV3YXJkSXRlbU1zZxIMCgR0", |
| | | "eXBlGAEgASgFEgoKAmlkGAIgASgFEg0KBWNvdW50GAMgASgFIj0KC0FyZW5h", |
| | | "Qm94TXNnEgsKA3BvcxgBIAEoBRINCgVib3hpZBgCIAEoBRISCgpleHBpcmVU", |
| | | "aW1lGAMgASgFItQBCg9GYW1pbHlNZW1iZXJNc2cSEAoIdXNlcm5hbWUYASAB", |
| | | "KAkSEAoIbmlja25hbWUYAiABKAkSDwoHaGVhZGltZxgDIAEoBRIQCghwb3Np", |
| | | "dGlvbhgEIAEoBRIOCgZvbmxpbmUYBSABKAgSDwoHYXJlYWV4cBgGIAEoBRIN", |
| | | "CgVsZXZlbBgIIAEoBRISCgp3ZWVrRG9uYXRlGAkgASgFEhMKC3RvdGFsRG9u", |
| | | "YXRlGAogASgFEiEKB2dlbWRlY2sYCyADKAsyEC5wcm90b2J1Zi5HZW1Nc2ci", |
| | | "PAoTRmFtaWx5RG9uYXRlSXRlbU1zZxIQCgh1c2VybmFtZRgBIAEoCRITCgtk", |
| | | "b25hdGVDb3VudBgCIAEoBSKSAwoNRmFtaWx5Q2hhdE1zZxIRCgltZXNzYWdl", |
| | | "SWQYASABKAUSEAoIdXNlcm5hbWUYAiABKAkSEAoIbmlja25hbWUYAyABKAkS", |
| | | "DwoHaGVhZGltZxgEIAEoBRISCgpjcmVhdGVUaW1lGAUgASgFEg8KB2NvbnRl", |
| | | "bnQYBiABKAkSJAoIY2hhdFR5cGUYByABKA4yEi5wcm90b2J1Zi5DaGF0VHlw", |
| | | "ZRINCgVnZW1JZBgIIAEoBRIxCgpkb25hdGVsaXN0GAkgAygLMh0ucHJvdG9i", |
| | | "dWYuRmFtaWx5RG9uYXRlSXRlbU1zZxIUCgxyZWNlaXZlQ291bnQYCiABKAUS", |
| | | "EgoKVG90YWxDb3VudBgLIAEoBRIQCghub3RpY2VJZBgMIAEoBRIOCgZwYXJh", |
| | | "bXMYDSADKAkSEwoLbmV3VXNlcm5hbWUYDiABKAkSEwoLbmV3Tmlja25hbWUY", |
| | | "DyABKAkSEgoKbmV3SGVhZGltZxgQIAEoBRIQCghuZXdMZXZlbBgRIAEoBRIQ", |
| | | "CghuZXdTY29yZRgSIAEoBSLSAQoJRmFtaWx5TXNnEgsKA3VpZBgBIAEoCRIM", |
| | | "CgRuYW1lGAIgASgJEgwKBGRlc2MYAyABKAkSDQoFaWNvbnMYBCADKAUSDQoF", |
| | | "c2NvcmUYBSABKAUSEwoLc2NvcmVzaG9wSWQYBiABKAUSGAoQc2NvcmVzaG9w", |
| | | "RXhwaXJlZBgHIAEoBRIQCghmcmVlSm9pbhgIIAEoBRIRCgluZWVkU2NvcmUY", |
| | | "CSABKAUSKgoHbWVtYmVycxgKIAMoCzIZLnByb3RvYnVmLkZhbWlseU1lbWJl", |
| | | "ck1zZyKaAQoTRmFtaWx5U2VhcmNoSXRlbU1zZxILCgN1aWQYASABKAkSDAoE", |
| | | "bmFtZRgCIAEoCRINCgVpY29ucxgDIAMoBRITCgttZW1iZXJDb3VudBgEIAEo", |
| | | "BRIQCghpc0FjdGl2ZRgFIAEoCBISCgppc0ZyaWVuZEluGAYgASgIEg0KBWlz", |
| | | "TmV3GAcgASgIEg8KB2lzQXBwbHkYCCABKAgqaAoIQ1VSUkVOQ1kSEgoOQ1VS", |
| | | "UkVOQ1lfQkVHSU4QABIJCgVNT05FWRABEggKBEdPTEQQAhIHCgNSTUIQAxIH", |
| | | "CgNHRU0QBBIHCgNCT1gQBRIMCghBUkVOQUVYUBAGEgoKBkRPTkFURRAHKiYK", |
| | | "CUNoYW5uZWxJRBIRCg1DSEFOTkVMX0JFR0lOEAASBgoCR00QASrNBQoJRXJy", |
| | | "b3JDb2RlEgsKB1N1Y2Nlc3MQABIVChFDaGFubmVsSWRfTm9FeGlzdBABEhQK", |
| | | "EFVzZXJOYW1lX0ludmFsaWQQAhIYChRVc2VyUGFzc1dvcmRfSW52YWxpZBAD", |
| | | "EhAKDFVua25vd19FcnJvchAEEhEKDUlucHV0X0ludmFsaWQQBRILCgdUaW1l", |
| | | "b3V0EAYSFgoSU2Vzc2lvbktleV9JbnZhbGlkEAcSEAoMTG9naW5fTm9Vc2Vy", |
| | | "EAgSEwoPTm90RW5vdWdoX01vbmV5EAkSEgoOTm90RW5vdWdoX0dvbGQQChIR", |
| | | "Cg1Ob3RFbm91Z2hfR2VtEAsSEwoPTm90Rm91bmRfRnJpZW5kEAwSEgoOQWxy", |
| | | "ZWFkeV9GcmllbmQQDRISCg5JbkJsb2NrX0ZyaWVuZBAOEg4KCk1heF9Gcmll", |
| | | "bmQQDxIQCgxNYXhfTmlja05hbWUQEBIUChBJbnZhbGlkX05pY2tOYW1lEBES", |
| | | "EgoOTWF4X1N0b3JlTGltaXQQEhIWChJOb3RFbm91Z2hfU3RvcmVCdXkQExIU", |
| | | "ChBOb3RPcGVuX1Bhc3NQb3J0EBQSFAoQQWxyZWFkeV9QYXNzUG9ydBAVEhwK", |
| | | "GE5lZWRWaXBfUGFzc1BvcnRUYWtlSXRlbRAWEh4KGk5lZWRMZXZlbF9QYXNz", |
| | | "UG9ydFRha2VJdGVtEBcSHAoYQWxyZWFkeV9QYXNzUG9ydFRha2VJdGVtEBgS", |
| | | "HAoYSW52YWxpZF9QYXNzUG9ydEJ1eUxldmVsEBkSFgoSSGFzVW5sb2NrX0Fy", |
| | | "ZW5hQm94EBoSGwoXT3RoZXJVbmxvY2tpbmdfQXJlbmFCb3gQGxIYChROb3RU", |
| | | "aW1lVGFrZV9BcmVuYUJveBAcEhMKD05vdEVub3VnaF9MZXZlbBAdEhQKEEFs", |
| | | "cmVhZHlJbl9GYW1pbHkQHhITCg9Ob3RFeGlzdF9GYW1pbHkQHypxCghDaGF0", |
| | | "VHlwZRISCg5DaGF0VHlwZV9CZWdpbhAAEhEKDUNoYXRUeXBlX1RleHQQARIW", |
| | | "ChJDaGF0VHlwZV9Eb25hdGVHZW0QAhITCg9DaGF0VHlwZV9TeXN0ZW0QAxIR", |
| | | "Cg1DaGF0VHlwZV9Kb2luEARiBnByb3RvMw==")); |
| | | descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, |
| | | new pbr::FileDescriptor[] { }, |
| | | new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Protobuf.CURRENCY), typeof(global::Protobuf.ChannelID), typeof(global::Protobuf.ErrorCode), typeof(global::Protobuf.ChatType), }, new pbr::GeneratedClrTypeInfo[] { |
| | | new pbr::GeneratedClrTypeInfo(typeof(global::Protobuf.GemMsg), global::Protobuf.GemMsg.Parser, new[]{ "GemId", "Level", "Count" }, null, null, null), |
| | | new pbr::GeneratedClrTypeInfo(typeof(global::Protobuf.UserDataMsg), global::Protobuf.UserDataMsg.Parser, new[]{ "Username", "Nickname", "Headimg", "Singature", "Level", "Rank", "Score", "Exp", "Money", "Gold", "Gems", "Gemdeck1", "Gemdeck2", "Gemdeck3", "Deckid", "Acceptfriend", "Namedchanged", "Areaexp", "Areaboxes", "Donate" }, null, null, null), |
| | | new pbr::GeneratedClrTypeInfo(typeof(global::Protobuf.FriendMsg), global::Protobuf.FriendMsg.Parser, new[]{ "Username", "Nickname", "Headimg", "Level", "Rank", "Score", "Online", "Gemdeck" }, null, null, null), |
| | | new pbr::GeneratedClrTypeInfo(typeof(global::Protobuf.UserDataMsg), global::Protobuf.UserDataMsg.Parser, new[]{ "Username", "Nickname", "Headimg", "Singature", "Level", "Exp", "Money", "Gold", "Gems", "Gemdeck1", "Gemdeck2", "Gemdeck3", "Deckid", "Acceptfriend", "Namedchanged", "Areaexp", "Areaboxes", "Donate" }, null, null, null), |
| | | new pbr::GeneratedClrTypeInfo(typeof(global::Protobuf.FriendMsg), global::Protobuf.FriendMsg.Parser, new[]{ "Username", "Nickname", "Headimg", "Level", "Rank", "Areaexp", "Online", "Gemdeck" }, null, null, null), |
| | | new pbr::GeneratedClrTypeInfo(typeof(global::Protobuf.StoreAreaMsg), global::Protobuf.StoreAreaMsg.Parser, new[]{ "Id", "RefreshTime", "Items" }, null, null, null), |
| | | new pbr::GeneratedClrTypeInfo(typeof(global::Protobuf.StoreItemMsg), global::Protobuf.StoreItemMsg.Parser, new[]{ "Id", "BuyCount" }, null, null, null), |
| | | new pbr::GeneratedClrTypeInfo(typeof(global::Protobuf.RewardItemMsg), global::Protobuf.RewardItemMsg.Parser, new[]{ "Type", "Id", "Count" }, null, null, null), |
| | | new pbr::GeneratedClrTypeInfo(typeof(global::Protobuf.ArenaBoxMsg), global::Protobuf.ArenaBoxMsg.Parser, new[]{ "Pos", "Boxid", "ExpireTime" }, null, null, null), |
| | | new pbr::GeneratedClrTypeInfo(typeof(global::Protobuf.FamilyMemberMsg), global::Protobuf.FamilyMemberMsg.Parser, new[]{ "Username", "Nickname", "Headimg", "Position", "Online", "Score", "Level", "WeekDonate", "TotalDonate", "Gemdeck" }, null, null, null), |
| | | new pbr::GeneratedClrTypeInfo(typeof(global::Protobuf.FamilyMemberMsg), global::Protobuf.FamilyMemberMsg.Parser, new[]{ "Username", "Nickname", "Headimg", "Position", "Online", "Areaexp", "Level", "WeekDonate", "TotalDonate", "Gemdeck" }, null, null, null), |
| | | new pbr::GeneratedClrTypeInfo(typeof(global::Protobuf.FamilyDonateItemMsg), global::Protobuf.FamilyDonateItemMsg.Parser, new[]{ "Username", "DonateCount" }, null, null, null), |
| | | new pbr::GeneratedClrTypeInfo(typeof(global::Protobuf.FamilyChatMsg), global::Protobuf.FamilyChatMsg.Parser, new[]{ "MessageId", "Username", "Nickname", "Headimg", "CreateTime", "Content", "ChatType", "GemId", "Donatelist", "ReceiveCount", "TotalCount", "NoticeId", "Params", "NewUsername", "NewNickname", "NewHeadimg", "NewLevel", "NewScore" }, null, null, null), |
| | | new pbr::GeneratedClrTypeInfo(typeof(global::Protobuf.FamilyMsg), global::Protobuf.FamilyMsg.Parser, new[]{ "Uid", "Name", "Desc", "Icons", "Score", "ScoreshopId", "ScoreshopExpired", "FreeJoin", "NeedScore", "Members" }, null, null, null), |
| | |
| | | /// </summary> |
| | | [pbr::OriginalName("NotTimeTake_ArenaBox")] NotTimeTakeArenaBox = 28, |
| | | /// <summary> |
| | | /// 创建公会失败,等级不足 |
| | | /// 等级不足 |
| | | /// </summary> |
| | | [pbr::OriginalName("NotEnough_Level_CreateFamily")] NotEnoughLevelCreateFamily = 29, |
| | | [pbr::OriginalName("NotEnough_Level")] NotEnoughLevel = 29, |
| | | /// <summary> |
| | | /// 已经在工会中 |
| | | /// </summary> |
| | | [pbr::OriginalName("AlreadyIn_Family")] AlreadyInFamily = 30, |
| | | /// <summary> |
| | | /// !工会不存在 |
| | | /// </summary> |
| | | [pbr::OriginalName("NotExist_Family")] NotExistFamily = 31, |
| | | } |
| | | |
| | | public enum ChatType { |
| | |
| | | headimg_ = other.headimg_; |
| | | singature_ = other.singature_; |
| | | level_ = other.level_; |
| | | rank_ = other.rank_; |
| | | score_ = other.score_; |
| | | exp_ = other.exp_; |
| | | money_ = other.money_; |
| | | gold_ = other.gold_; |
| | |
| | | } |
| | | } |
| | | |
| | | /// <summary>Field number for the "rank" field.</summary> |
| | | public const int RankFieldNumber = 6; |
| | | private int rank_; |
| | | /// <summary> |
| | | /// 段位 |
| | | /// </summary> |
| | | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] |
| | | public int Rank { |
| | | get { return rank_; } |
| | | set { |
| | | rank_ = value; |
| | | } |
| | | } |
| | | |
| | | /// <summary>Field number for the "score" field.</summary> |
| | | public const int ScoreFieldNumber = 7; |
| | | private int score_; |
| | | /// <summary> |
| | | /// 分数 |
| | | /// </summary> |
| | | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] |
| | | public int Score { |
| | | get { return score_; } |
| | | set { |
| | | score_ = value; |
| | | } |
| | | } |
| | | |
| | | /// <summary>Field number for the "exp" field.</summary> |
| | | public const int ExpFieldNumber = 8; |
| | | public const int ExpFieldNumber = 6; |
| | | private int exp_; |
| | | /// <summary> |
| | | /// int32 score =7; |
| | | /// !经验 |
| | | /// </summary> |
| | | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] |
| | |
| | | } |
| | | |
| | | /// <summary>Field number for the "money" field.</summary> |
| | | public const int MoneyFieldNumber = 9; |
| | | public const int MoneyFieldNumber = 7; |
| | | private int money_; |
| | | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] |
| | | public int Money { |
| | |
| | | } |
| | | |
| | | /// <summary>Field number for the "gold" field.</summary> |
| | | public const int GoldFieldNumber = 10; |
| | | public const int GoldFieldNumber = 8; |
| | | private int gold_; |
| | | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] |
| | | public int Gold { |
| | |
| | | } |
| | | |
| | | /// <summary>Field number for the "gems" field.</summary> |
| | | public const int GemsFieldNumber = 11; |
| | | public const int GemsFieldNumber = 9; |
| | | private static readonly pb::FieldCodec<global::Protobuf.GemMsg> _repeated_gems_codec |
| | | = pb::FieldCodec.ForMessage(90, global::Protobuf.GemMsg.Parser); |
| | | = pb::FieldCodec.ForMessage(74, global::Protobuf.GemMsg.Parser); |
| | | private readonly pbc::RepeatedField<global::Protobuf.GemMsg> gems_ = new pbc::RepeatedField<global::Protobuf.GemMsg>(); |
| | | /// <summary> |
| | | /// *已有宝石列表 |
| | |
| | | } |
| | | |
| | | /// <summary>Field number for the "gemdeck1" field.</summary> |
| | | public const int Gemdeck1FieldNumber = 12; |
| | | public const int Gemdeck1FieldNumber = 10; |
| | | private static readonly pb::FieldCodec<int> _repeated_gemdeck1_codec |
| | | = pb::FieldCodec.ForInt32(98); |
| | | = pb::FieldCodec.ForInt32(82); |
| | | private readonly pbc::RepeatedField<int> gemdeck1_ = new pbc::RepeatedField<int>(); |
| | | /// <summary> |
| | | /// 编队 |
| | |
| | | } |
| | | |
| | | /// <summary>Field number for the "gemdeck2" field.</summary> |
| | | public const int Gemdeck2FieldNumber = 13; |
| | | public const int Gemdeck2FieldNumber = 11; |
| | | private static readonly pb::FieldCodec<int> _repeated_gemdeck2_codec |
| | | = pb::FieldCodec.ForInt32(106); |
| | | = pb::FieldCodec.ForInt32(90); |
| | | private readonly pbc::RepeatedField<int> gemdeck2_ = new pbc::RepeatedField<int>(); |
| | | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] |
| | | public pbc::RepeatedField<int> Gemdeck2 { |
| | |
| | | } |
| | | |
| | | /// <summary>Field number for the "gemdeck3" field.</summary> |
| | | public const int Gemdeck3FieldNumber = 14; |
| | | public const int Gemdeck3FieldNumber = 12; |
| | | private static readonly pb::FieldCodec<int> _repeated_gemdeck3_codec |
| | | = pb::FieldCodec.ForInt32(114); |
| | | = pb::FieldCodec.ForInt32(98); |
| | | private readonly pbc::RepeatedField<int> gemdeck3_ = new pbc::RepeatedField<int>(); |
| | | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] |
| | | public pbc::RepeatedField<int> Gemdeck3 { |
| | |
| | | } |
| | | |
| | | /// <summary>Field number for the "deckid" field.</summary> |
| | | public const int DeckidFieldNumber = 15; |
| | | public const int DeckidFieldNumber = 13; |
| | | private int deckid_; |
| | | /// <summary> |
| | | /// 默认编队索引0,1,2 |
| | |
| | | } |
| | | |
| | | /// <summary>Field number for the "acceptfriend" field.</summary> |
| | | public const int AcceptfriendFieldNumber = 16; |
| | | public const int AcceptfriendFieldNumber = 14; |
| | | private bool acceptfriend_; |
| | | /// <summary> |
| | | /// 是否接受好友申请 |
| | |
| | | } |
| | | |
| | | /// <summary>Field number for the "namedchanged" field.</summary> |
| | | public const int NamedchangedFieldNumber = 17; |
| | | public const int NamedchangedFieldNumber = 15; |
| | | private bool namedchanged_; |
| | | /// <summary> |
| | | /// true 表示改过名字,false没有改过 |
| | |
| | | } |
| | | |
| | | /// <summary>Field number for the "areaexp" field.</summary> |
| | | public const int AreaexpFieldNumber = 18; |
| | | public const int AreaexpFieldNumber = 16; |
| | | private int areaexp_; |
| | | /// <summary> |
| | | /// !竞技场经验 |
| | |
| | | } |
| | | |
| | | /// <summary>Field number for the "areaboxes" field.</summary> |
| | | public const int AreaboxesFieldNumber = 19; |
| | | public const int AreaboxesFieldNumber = 17; |
| | | private static readonly pb::FieldCodec<global::Protobuf.ArenaBoxMsg> _repeated_areaboxes_codec |
| | | = pb::FieldCodec.ForMessage(154, global::Protobuf.ArenaBoxMsg.Parser); |
| | | = pb::FieldCodec.ForMessage(138, global::Protobuf.ArenaBoxMsg.Parser); |
| | | private readonly pbc::RepeatedField<global::Protobuf.ArenaBoxMsg> areaboxes_ = new pbc::RepeatedField<global::Protobuf.ArenaBoxMsg>(); |
| | | /// <summary> |
| | | /// !竞技宝箱列表 |
| | |
| | | } |
| | | |
| | | /// <summary>Field number for the "donate" field.</summary> |
| | | public const int DonateFieldNumber = 20; |
| | | public const int DonateFieldNumber = 18; |
| | | private int donate_; |
| | | /// <summary> |
| | | /// 工会捐赠积分 |
| | |
| | | if (Headimg != other.Headimg) return false; |
| | | if (Singature != other.Singature) return false; |
| | | if (Level != other.Level) return false; |
| | | if (Rank != other.Rank) return false; |
| | | if (Score != other.Score) return false; |
| | | if (Exp != other.Exp) return false; |
| | | if (Money != other.Money) return false; |
| | | if (Gold != other.Gold) return false; |
| | |
| | | if (Headimg != 0) hash ^= Headimg.GetHashCode(); |
| | | if (Singature.Length != 0) hash ^= Singature.GetHashCode(); |
| | | if (Level != 0) hash ^= Level.GetHashCode(); |
| | | if (Rank != 0) hash ^= Rank.GetHashCode(); |
| | | if (Score != 0) hash ^= Score.GetHashCode(); |
| | | if (Exp != 0) hash ^= Exp.GetHashCode(); |
| | | if (Money != 0) hash ^= Money.GetHashCode(); |
| | | if (Gold != 0) hash ^= Gold.GetHashCode(); |
| | |
| | | output.WriteRawTag(40); |
| | | output.WriteInt32(Level); |
| | | } |
| | | if (Rank != 0) { |
| | | output.WriteRawTag(48); |
| | | output.WriteInt32(Rank); |
| | | } |
| | | if (Score != 0) { |
| | | output.WriteRawTag(56); |
| | | output.WriteInt32(Score); |
| | | } |
| | | if (Exp != 0) { |
| | | output.WriteRawTag(64); |
| | | output.WriteRawTag(48); |
| | | output.WriteInt32(Exp); |
| | | } |
| | | if (Money != 0) { |
| | | output.WriteRawTag(72); |
| | | output.WriteRawTag(56); |
| | | output.WriteInt32(Money); |
| | | } |
| | | if (Gold != 0) { |
| | | output.WriteRawTag(80); |
| | | output.WriteRawTag(64); |
| | | output.WriteInt32(Gold); |
| | | } |
| | | gems_.WriteTo(output, _repeated_gems_codec); |
| | |
| | | gemdeck2_.WriteTo(output, _repeated_gemdeck2_codec); |
| | | gemdeck3_.WriteTo(output, _repeated_gemdeck3_codec); |
| | | if (Deckid != 0) { |
| | | output.WriteRawTag(120); |
| | | output.WriteRawTag(104); |
| | | output.WriteInt32(Deckid); |
| | | } |
| | | if (Acceptfriend != false) { |
| | | output.WriteRawTag(128, 1); |
| | | output.WriteRawTag(112); |
| | | output.WriteBool(Acceptfriend); |
| | | } |
| | | if (Namedchanged != false) { |
| | | output.WriteRawTag(136, 1); |
| | | output.WriteRawTag(120); |
| | | output.WriteBool(Namedchanged); |
| | | } |
| | | if (Areaexp != 0) { |
| | | output.WriteRawTag(144, 1); |
| | | output.WriteRawTag(128, 1); |
| | | output.WriteInt32(Areaexp); |
| | | } |
| | | areaboxes_.WriteTo(output, _repeated_areaboxes_codec); |
| | | if (Donate != 0) { |
| | | output.WriteRawTag(160, 1); |
| | | output.WriteRawTag(144, 1); |
| | | output.WriteInt32(Donate); |
| | | } |
| | | } |
| | |
| | | if (Level != 0) { |
| | | size += 1 + pb::CodedOutputStream.ComputeInt32Size(Level); |
| | | } |
| | | if (Rank != 0) { |
| | | size += 1 + pb::CodedOutputStream.ComputeInt32Size(Rank); |
| | | } |
| | | if (Score != 0) { |
| | | size += 1 + pb::CodedOutputStream.ComputeInt32Size(Score); |
| | | } |
| | | if (Exp != 0) { |
| | | size += 1 + pb::CodedOutputStream.ComputeInt32Size(Exp); |
| | | } |
| | |
| | | size += 1 + pb::CodedOutputStream.ComputeInt32Size(Deckid); |
| | | } |
| | | if (Acceptfriend != false) { |
| | | size += 2 + 1; |
| | | size += 1 + 1; |
| | | } |
| | | if (Namedchanged != false) { |
| | | size += 2 + 1; |
| | | size += 1 + 1; |
| | | } |
| | | if (Areaexp != 0) { |
| | | size += 2 + pb::CodedOutputStream.ComputeInt32Size(Areaexp); |
| | |
| | | } |
| | | if (other.Level != 0) { |
| | | Level = other.Level; |
| | | } |
| | | if (other.Rank != 0) { |
| | | Rank = other.Rank; |
| | | } |
| | | if (other.Score != 0) { |
| | | Score = other.Score; |
| | | } |
| | | if (other.Exp != 0) { |
| | | Exp = other.Exp; |
| | |
| | | break; |
| | | } |
| | | case 48: { |
| | | Rank = input.ReadInt32(); |
| | | break; |
| | | } |
| | | case 56: { |
| | | Score = input.ReadInt32(); |
| | | break; |
| | | } |
| | | case 64: { |
| | | Exp = input.ReadInt32(); |
| | | break; |
| | | } |
| | | case 72: { |
| | | case 56: { |
| | | Money = input.ReadInt32(); |
| | | break; |
| | | } |
| | | case 80: { |
| | | case 64: { |
| | | Gold = input.ReadInt32(); |
| | | break; |
| | | } |
| | | case 90: { |
| | | case 74: { |
| | | gems_.AddEntriesFrom(input, _repeated_gems_codec); |
| | | break; |
| | | } |
| | | case 82: |
| | | case 80: { |
| | | gemdeck1_.AddEntriesFrom(input, _repeated_gemdeck1_codec); |
| | | break; |
| | | } |
| | | case 90: |
| | | case 88: { |
| | | gemdeck2_.AddEntriesFrom(input, _repeated_gemdeck2_codec); |
| | | break; |
| | | } |
| | | case 98: |
| | | case 96: { |
| | | gemdeck1_.AddEntriesFrom(input, _repeated_gemdeck1_codec); |
| | | break; |
| | | } |
| | | case 106: |
| | | case 104: { |
| | | gemdeck2_.AddEntriesFrom(input, _repeated_gemdeck2_codec); |
| | | break; |
| | | } |
| | | case 114: |
| | | case 112: { |
| | | gemdeck3_.AddEntriesFrom(input, _repeated_gemdeck3_codec); |
| | | break; |
| | | } |
| | | case 120: { |
| | | case 104: { |
| | | Deckid = input.ReadInt32(); |
| | | break; |
| | | } |
| | | case 128: { |
| | | case 112: { |
| | | Acceptfriend = input.ReadBool(); |
| | | break; |
| | | } |
| | | case 136: { |
| | | case 120: { |
| | | Namedchanged = input.ReadBool(); |
| | | break; |
| | | } |
| | | case 144: { |
| | | case 128: { |
| | | Areaexp = input.ReadInt32(); |
| | | break; |
| | | } |
| | | case 154: { |
| | | case 138: { |
| | | areaboxes_.AddEntriesFrom(input, _repeated_areaboxes_codec); |
| | | break; |
| | | } |
| | | case 160: { |
| | | case 144: { |
| | | Donate = input.ReadInt32(); |
| | | break; |
| | | } |
| | |
| | | headimg_ = other.headimg_; |
| | | level_ = other.level_; |
| | | rank_ = other.rank_; |
| | | score_ = other.score_; |
| | | areaexp_ = other.areaexp_; |
| | | online_ = other.online_; |
| | | gemdeck_ = other.gemdeck_.Clone(); |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | /// <summary>Field number for the "score" field.</summary> |
| | | public const int ScoreFieldNumber = 7; |
| | | private int score_; |
| | | /// <summary>Field number for the "areaexp" field.</summary> |
| | | public const int AreaexpFieldNumber = 7; |
| | | private int areaexp_; |
| | | /// <summary> |
| | | /// 分数 |
| | | /// </summary> |
| | | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] |
| | | public int Score { |
| | | get { return score_; } |
| | | public int Areaexp { |
| | | get { return areaexp_; } |
| | | set { |
| | | score_ = value; |
| | | areaexp_ = value; |
| | | } |
| | | } |
| | | |
| | |
| | | if (Headimg != other.Headimg) return false; |
| | | if (Level != other.Level) return false; |
| | | if (Rank != other.Rank) return false; |
| | | if (Score != other.Score) return false; |
| | | if (Areaexp != other.Areaexp) return false; |
| | | if (Online != other.Online) return false; |
| | | if(!gemdeck_.Equals(other.gemdeck_)) return false; |
| | | return true; |
| | |
| | | if (Headimg != 0) hash ^= Headimg.GetHashCode(); |
| | | if (Level != 0) hash ^= Level.GetHashCode(); |
| | | if (Rank != 0) hash ^= Rank.GetHashCode(); |
| | | if (Score != 0) hash ^= Score.GetHashCode(); |
| | | if (Areaexp != 0) hash ^= Areaexp.GetHashCode(); |
| | | if (Online != false) hash ^= Online.GetHashCode(); |
| | | hash ^= gemdeck_.GetHashCode(); |
| | | return hash; |
| | |
| | | output.WriteRawTag(48); |
| | | output.WriteInt32(Rank); |
| | | } |
| | | if (Score != 0) { |
| | | if (Areaexp != 0) { |
| | | output.WriteRawTag(56); |
| | | output.WriteInt32(Score); |
| | | output.WriteInt32(Areaexp); |
| | | } |
| | | if (Online != false) { |
| | | output.WriteRawTag(64); |
| | |
| | | if (Rank != 0) { |
| | | size += 1 + pb::CodedOutputStream.ComputeInt32Size(Rank); |
| | | } |
| | | if (Score != 0) { |
| | | size += 1 + pb::CodedOutputStream.ComputeInt32Size(Score); |
| | | if (Areaexp != 0) { |
| | | size += 1 + pb::CodedOutputStream.ComputeInt32Size(Areaexp); |
| | | } |
| | | if (Online != false) { |
| | | size += 1 + 1; |
| | |
| | | if (other.Rank != 0) { |
| | | Rank = other.Rank; |
| | | } |
| | | if (other.Score != 0) { |
| | | Score = other.Score; |
| | | if (other.Areaexp != 0) { |
| | | Areaexp = other.Areaexp; |
| | | } |
| | | if (other.Online != false) { |
| | | Online = other.Online; |
| | |
| | | break; |
| | | } |
| | | case 56: { |
| | | Score = input.ReadInt32(); |
| | | Areaexp = input.ReadInt32(); |
| | | break; |
| | | } |
| | | case 64: { |
| | |
| | | headimg_ = other.headimg_; |
| | | position_ = other.position_; |
| | | online_ = other.online_; |
| | | score_ = other.score_; |
| | | areaexp_ = other.areaexp_; |
| | | level_ = other.level_; |
| | | weekDonate_ = other.weekDonate_; |
| | | totalDonate_ = other.totalDonate_; |
| | |
| | | } |
| | | } |
| | | |
| | | /// <summary>Field number for the "score" field.</summary> |
| | | public const int ScoreFieldNumber = 6; |
| | | private int score_; |
| | | /// <summary>Field number for the "areaexp" field.</summary> |
| | | public const int AreaexpFieldNumber = 6; |
| | | private int areaexp_; |
| | | /// <summary> |
| | | /// 分数 |
| | | /// </summary> |
| | | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] |
| | | public int Score { |
| | | get { return score_; } |
| | | public int Areaexp { |
| | | get { return areaexp_; } |
| | | set { |
| | | score_ = value; |
| | | areaexp_ = value; |
| | | } |
| | | } |
| | | |
| | | /// <summary>Field number for the "level" field.</summary> |
| | | public const int LevelFieldNumber = 7; |
| | | public const int LevelFieldNumber = 8; |
| | | private int level_; |
| | | /// <summary> |
| | | /// 等级 |
| | |
| | | } |
| | | |
| | | /// <summary>Field number for the "weekDonate" field.</summary> |
| | | public const int WeekDonateFieldNumber = 8; |
| | | public const int WeekDonateFieldNumber = 9; |
| | | private int weekDonate_; |
| | | /// <summary> |
| | | /// 本周和总捐献数 |
| | |
| | | } |
| | | |
| | | /// <summary>Field number for the "totalDonate" field.</summary> |
| | | public const int TotalDonateFieldNumber = 9; |
| | | public const int TotalDonateFieldNumber = 10; |
| | | private int totalDonate_; |
| | | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] |
| | | public int TotalDonate { |
| | |
| | | } |
| | | |
| | | /// <summary>Field number for the "gemdeck" field.</summary> |
| | | public const int GemdeckFieldNumber = 10; |
| | | public const int GemdeckFieldNumber = 11; |
| | | private static readonly pb::FieldCodec<global::Protobuf.GemMsg> _repeated_gemdeck_codec |
| | | = pb::FieldCodec.ForMessage(82, global::Protobuf.GemMsg.Parser); |
| | | = pb::FieldCodec.ForMessage(90, global::Protobuf.GemMsg.Parser); |
| | | private readonly pbc::RepeatedField<global::Protobuf.GemMsg> gemdeck_ = new pbc::RepeatedField<global::Protobuf.GemMsg>(); |
| | | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] |
| | | public pbc::RepeatedField<global::Protobuf.GemMsg> Gemdeck { |
| | |
| | | if (Headimg != other.Headimg) return false; |
| | | if (Position != other.Position) return false; |
| | | if (Online != other.Online) return false; |
| | | if (Score != other.Score) return false; |
| | | if (Areaexp != other.Areaexp) return false; |
| | | if (Level != other.Level) return false; |
| | | if (WeekDonate != other.WeekDonate) return false; |
| | | if (TotalDonate != other.TotalDonate) return false; |
| | |
| | | if (Headimg != 0) hash ^= Headimg.GetHashCode(); |
| | | if (Position != 0) hash ^= Position.GetHashCode(); |
| | | if (Online != false) hash ^= Online.GetHashCode(); |
| | | if (Score != 0) hash ^= Score.GetHashCode(); |
| | | if (Areaexp != 0) hash ^= Areaexp.GetHashCode(); |
| | | if (Level != 0) hash ^= Level.GetHashCode(); |
| | | if (WeekDonate != 0) hash ^= WeekDonate.GetHashCode(); |
| | | if (TotalDonate != 0) hash ^= TotalDonate.GetHashCode(); |
| | |
| | | output.WriteRawTag(40); |
| | | output.WriteBool(Online); |
| | | } |
| | | if (Score != 0) { |
| | | if (Areaexp != 0) { |
| | | output.WriteRawTag(48); |
| | | output.WriteInt32(Score); |
| | | output.WriteInt32(Areaexp); |
| | | } |
| | | if (Level != 0) { |
| | | output.WriteRawTag(56); |
| | | output.WriteRawTag(64); |
| | | output.WriteInt32(Level); |
| | | } |
| | | if (WeekDonate != 0) { |
| | | output.WriteRawTag(64); |
| | | output.WriteRawTag(72); |
| | | output.WriteInt32(WeekDonate); |
| | | } |
| | | if (TotalDonate != 0) { |
| | | output.WriteRawTag(72); |
| | | output.WriteRawTag(80); |
| | | output.WriteInt32(TotalDonate); |
| | | } |
| | | gemdeck_.WriteTo(output, _repeated_gemdeck_codec); |
| | |
| | | if (Online != false) { |
| | | size += 1 + 1; |
| | | } |
| | | if (Score != 0) { |
| | | size += 1 + pb::CodedOutputStream.ComputeInt32Size(Score); |
| | | if (Areaexp != 0) { |
| | | size += 1 + pb::CodedOutputStream.ComputeInt32Size(Areaexp); |
| | | } |
| | | if (Level != 0) { |
| | | size += 1 + pb::CodedOutputStream.ComputeInt32Size(Level); |
| | |
| | | if (other.Online != false) { |
| | | Online = other.Online; |
| | | } |
| | | if (other.Score != 0) { |
| | | Score = other.Score; |
| | | if (other.Areaexp != 0) { |
| | | Areaexp = other.Areaexp; |
| | | } |
| | | if (other.Level != 0) { |
| | | Level = other.Level; |
| | |
| | | break; |
| | | } |
| | | case 48: { |
| | | Score = input.ReadInt32(); |
| | | break; |
| | | } |
| | | case 56: { |
| | | Level = input.ReadInt32(); |
| | | Areaexp = input.ReadInt32(); |
| | | break; |
| | | } |
| | | case 64: { |
| | | WeekDonate = input.ReadInt32(); |
| | | Level = input.ReadInt32(); |
| | | break; |
| | | } |
| | | case 72: { |
| | | WeekDonate = input.ReadInt32(); |
| | | break; |
| | | } |
| | | case 80: { |
| | | TotalDonate = input.ReadInt32(); |
| | | break; |
| | | } |
| | | case 82: { |
| | | case 90: { |
| | | gemdeck_.AddEntriesFrom(input, _repeated_gemdeck_codec); |
| | | break; |
| | | } |
| | |
| | | "bmRfUzJDEhEKCWVycm9yY29kZRgBIAEoBRIjCgZmYW1pbHkYAiABKAsyEy5w", |
| | | "cm90b2J1Zi5GYW1pbHlNc2ciHQoORmFtaWx5Sm9pbl9DMlMSCwoDdWlkGAEg", |
| | | "ASgJIjAKDkZhbWlseUpvaW5fUzJDEhEKCWVycm9yY29kZRgBIAEoBRILCgN1", |
| | | "aWQYAiABKAkiIgoRRmFtaWx5R2V0Q2hhdF9DMlMSDQoFbGltaXQYASABKAUi", |
| | | "ZgoRRmFtaWx5R2V0Q2hhdF9TMkMSEQoJZXJyb3Jjb2RlGAEgASgFEikKCG1l", |
| | | "c3NhZ2VzGAIgAygLMhcucHJvdG9idWYuRmFtaWx5Q2hhdE1zZxITCgtvbmxp", |
| | | "bmVDb3VudBgEIAEoBSJMChNGYW1pbHlTdGFydENoYXRfQzJTEiQKCGNoYXRU", |
| | | "eXBlGAEgASgOMhIucHJvdG9idWYuQ2hhdFR5cGUSDwoHY29udGVudBgCIAEo", |
| | | "CSJSChNGYW1pbHlTdGFydENoYXRfUzJDEhEKCWVycm9yY29kZRgBIAEoBRIo", |
| | | "aWQYAiABKAkiMQoRRmFtaWx5R2V0Q2hhdF9DMlMSDQoFc3RhcnQYASABKAUS", |
| | | "DQoFbGltaXQYAiABKAUidQoRRmFtaWx5R2V0Q2hhdF9TMkMSEQoJZXJyb3Jj", |
| | | "b2RlGAEgASgFEikKCG1lc3NhZ2VzGAIgAygLMhcucHJvdG9idWYuRmFtaWx5", |
| | | "Q2hhdE1zZxINCgV0b3RhbBgDIAEoBRITCgtvbmxpbmVDb3VudBgEIAEoBSJb", |
| | | "ChNGYW1pbHlTdGFydENoYXRfQzJTEiQKCGNoYXRUeXBlGAEgASgOMhIucHJv", |
| | | "dG9idWYuQ2hhdFR5cGUSDwoHY29udGVudBgCIAEoCRINCgVnZW1JZBgDIAEo", |
| | | "BSJSChNGYW1pbHlTdGFydENoYXRfUzJDEhEKCWVycm9yY29kZRgBIAEoBRIo", |
| | | "CgdtZXNzYWdlGAIgASgLMhcucHJvdG9idWYuRmFtaWx5Q2hhdE1zZyIqChVG", |
| | | "YW1pbHlTdGFydERvbmF0ZV9DMlMSEQoJbWVzc2FnZUlkGAEgASgFIlQKFUZh", |
| | | "bWlseVN0YXJ0RG9uYXRlX1MyQxIRCgllcnJvcmNvZGUYASABKAUSKAoHbWVz", |
| | |
| | | new pbr::GeneratedClrTypeInfo(typeof(global::Protobuf.FamilyFind_S2C), global::Protobuf.FamilyFind_S2C.Parser, new[]{ "Errorcode", "Family" }, null, null, null), |
| | | new pbr::GeneratedClrTypeInfo(typeof(global::Protobuf.FamilyJoin_C2S), global::Protobuf.FamilyJoin_C2S.Parser, new[]{ "Uid" }, null, null, null), |
| | | new pbr::GeneratedClrTypeInfo(typeof(global::Protobuf.FamilyJoin_S2C), global::Protobuf.FamilyJoin_S2C.Parser, new[]{ "Errorcode", "Uid" }, null, null, null), |
| | | new pbr::GeneratedClrTypeInfo(typeof(global::Protobuf.FamilyGetChat_C2S), global::Protobuf.FamilyGetChat_C2S.Parser, new[]{ "Limit" }, null, null, null), |
| | | new pbr::GeneratedClrTypeInfo(typeof(global::Protobuf.FamilyGetChat_S2C), global::Protobuf.FamilyGetChat_S2C.Parser, new[]{ "Errorcode", "Messages", "OnlineCount" }, null, null, null), |
| | | new pbr::GeneratedClrTypeInfo(typeof(global::Protobuf.FamilyStartChat_C2S), global::Protobuf.FamilyStartChat_C2S.Parser, new[]{ "ChatType", "Content" }, null, null, null), |
| | | new pbr::GeneratedClrTypeInfo(typeof(global::Protobuf.FamilyGetChat_C2S), global::Protobuf.FamilyGetChat_C2S.Parser, new[]{ "Start", "Limit" }, null, null, null), |
| | | new pbr::GeneratedClrTypeInfo(typeof(global::Protobuf.FamilyGetChat_S2C), global::Protobuf.FamilyGetChat_S2C.Parser, new[]{ "Errorcode", "Messages", "Total", "OnlineCount" }, null, null, null), |
| | | new pbr::GeneratedClrTypeInfo(typeof(global::Protobuf.FamilyStartChat_C2S), global::Protobuf.FamilyStartChat_C2S.Parser, new[]{ "ChatType", "Content", "GemId" }, null, null, null), |
| | | new pbr::GeneratedClrTypeInfo(typeof(global::Protobuf.FamilyStartChat_S2C), global::Protobuf.FamilyStartChat_S2C.Parser, new[]{ "Errorcode", "Message" }, null, null, null), |
| | | new pbr::GeneratedClrTypeInfo(typeof(global::Protobuf.FamilyStartDonate_C2S), global::Protobuf.FamilyStartDonate_C2S.Parser, new[]{ "MessageId" }, null, null, null), |
| | | new pbr::GeneratedClrTypeInfo(typeof(global::Protobuf.FamilyStartDonate_S2C), global::Protobuf.FamilyStartDonate_S2C.Parser, new[]{ "Errorcode", "Message" }, null, null, null), |
| | |
| | | /// <summary>Field number for the "errorcode" field.</summary> |
| | | public const int ErrorcodeFieldNumber = 1; |
| | | private int errorcode_; |
| | | /// <summary> |
| | | /// NotEnough_Level,Input_Invalid |
| | | /// </summary> |
| | | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] |
| | | public int Errorcode { |
| | | get { return errorcode_; } |
| | |
| | | /// <summary>Field number for the "errorcode" field.</summary> |
| | | public const int ErrorcodeFieldNumber = 1; |
| | | private int errorcode_; |
| | | /// <summary> |
| | | /// NotEnough_Level,AlreadyIn_Family |
| | | /// </summary> |
| | | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] |
| | | public int Errorcode { |
| | | get { return errorcode_; } |
| | |
| | | /// <summary>Field number for the "errorcode" field.</summary> |
| | | public const int ErrorcodeFieldNumber = 1; |
| | | private int errorcode_; |
| | | /// <summary> |
| | | /// NotEnough_Level,AlreadyIn_Family,NotExist_Family |
| | | /// </summary> |
| | | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] |
| | | public int Errorcode { |
| | | get { return errorcode_; } |
| | |
| | | |
| | | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] |
| | | public FamilyGetChat_C2S(FamilyGetChat_C2S other) : this() { |
| | | start_ = other.start_; |
| | | limit_ = other.limit_; |
| | | } |
| | | |
| | |
| | | return new FamilyGetChat_C2S(this); |
| | | } |
| | | |
| | | /// <summary>Field number for the "limit" field.</summary> |
| | | public const int LimitFieldNumber = 1; |
| | | private int limit_; |
| | | /// <summary>Field number for the "start" field.</summary> |
| | | public const int StartFieldNumber = 1; |
| | | private int start_; |
| | | /// <summary> |
| | | /// 0是最后一页,1倒数第二页 |
| | | /// int32 start = 1; |
| | | /// </summary> |
| | | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] |
| | | public int Start { |
| | | get { return start_; } |
| | | set { |
| | | start_ = value; |
| | | } |
| | | } |
| | | |
| | | /// <summary>Field number for the "limit" field.</summary> |
| | | public const int LimitFieldNumber = 2; |
| | | private int limit_; |
| | | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] |
| | | public int Limit { |
| | | get { return limit_; } |
| | |
| | | if (ReferenceEquals(other, this)) { |
| | | return true; |
| | | } |
| | | if (Start != other.Start) return false; |
| | | if (Limit != other.Limit) return false; |
| | | return true; |
| | | } |
| | |
| | | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] |
| | | public override int GetHashCode() { |
| | | int hash = 1; |
| | | if (Start != 0) hash ^= Start.GetHashCode(); |
| | | if (Limit != 0) hash ^= Limit.GetHashCode(); |
| | | return hash; |
| | | } |
| | |
| | | |
| | | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] |
| | | public void WriteTo(pb::CodedOutputStream output) { |
| | | if (Limit != 0) { |
| | | if (Start != 0) { |
| | | output.WriteRawTag(8); |
| | | output.WriteInt32(Start); |
| | | } |
| | | if (Limit != 0) { |
| | | output.WriteRawTag(16); |
| | | output.WriteInt32(Limit); |
| | | } |
| | | } |
| | |
| | | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] |
| | | public int CalculateSize() { |
| | | int size = 0; |
| | | if (Start != 0) { |
| | | size += 1 + pb::CodedOutputStream.ComputeInt32Size(Start); |
| | | } |
| | | if (Limit != 0) { |
| | | size += 1 + pb::CodedOutputStream.ComputeInt32Size(Limit); |
| | | } |
| | |
| | | public void MergeFrom(FamilyGetChat_C2S other) { |
| | | if (other == null) { |
| | | return; |
| | | } |
| | | if (other.Start != 0) { |
| | | Start = other.Start; |
| | | } |
| | | if (other.Limit != 0) { |
| | | Limit = other.Limit; |
| | |
| | | input.SkipLastField(); |
| | | break; |
| | | case 8: { |
| | | Start = input.ReadInt32(); |
| | | break; |
| | | } |
| | | case 16: { |
| | | Limit = input.ReadInt32(); |
| | | break; |
| | | } |
| | |
| | | public FamilyGetChat_S2C(FamilyGetChat_S2C other) : this() { |
| | | errorcode_ = other.errorcode_; |
| | | messages_ = other.messages_.Clone(); |
| | | total_ = other.total_; |
| | | onlineCount_ = other.onlineCount_; |
| | | } |
| | | |
| | |
| | | get { return messages_; } |
| | | } |
| | | |
| | | /// <summary>Field number for the "total" field.</summary> |
| | | public const int TotalFieldNumber = 3; |
| | | private int total_; |
| | | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] |
| | | public int Total { |
| | | get { return total_; } |
| | | set { |
| | | total_ = value; |
| | | } |
| | | } |
| | | |
| | | /// <summary>Field number for the "onlineCount" field.</summary> |
| | | public const int OnlineCountFieldNumber = 4; |
| | | private int onlineCount_; |
| | | /// <summary> |
| | | /// int32 total=3; |
| | | /// 公会在线玩家数 |
| | | /// </summary> |
| | | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] |
| | |
| | | } |
| | | if (Errorcode != other.Errorcode) return false; |
| | | if(!messages_.Equals(other.messages_)) return false; |
| | | if (Total != other.Total) return false; |
| | | if (OnlineCount != other.OnlineCount) return false; |
| | | return true; |
| | | } |
| | |
| | | int hash = 1; |
| | | if (Errorcode != 0) hash ^= Errorcode.GetHashCode(); |
| | | hash ^= messages_.GetHashCode(); |
| | | if (Total != 0) hash ^= Total.GetHashCode(); |
| | | if (OnlineCount != 0) hash ^= OnlineCount.GetHashCode(); |
| | | return hash; |
| | | } |
| | |
| | | output.WriteInt32(Errorcode); |
| | | } |
| | | messages_.WriteTo(output, _repeated_messages_codec); |
| | | if (Total != 0) { |
| | | output.WriteRawTag(24); |
| | | output.WriteInt32(Total); |
| | | } |
| | | if (OnlineCount != 0) { |
| | | output.WriteRawTag(32); |
| | | output.WriteInt32(OnlineCount); |
| | |
| | | size += 1 + pb::CodedOutputStream.ComputeInt32Size(Errorcode); |
| | | } |
| | | size += messages_.CalculateSize(_repeated_messages_codec); |
| | | if (Total != 0) { |
| | | size += 1 + pb::CodedOutputStream.ComputeInt32Size(Total); |
| | | } |
| | | if (OnlineCount != 0) { |
| | | size += 1 + pb::CodedOutputStream.ComputeInt32Size(OnlineCount); |
| | | } |
| | |
| | | Errorcode = other.Errorcode; |
| | | } |
| | | messages_.Add(other.messages_); |
| | | if (other.Total != 0) { |
| | | Total = other.Total; |
| | | } |
| | | if (other.OnlineCount != 0) { |
| | | OnlineCount = other.OnlineCount; |
| | | } |
| | |
| | | } |
| | | case 18: { |
| | | messages_.AddEntriesFrom(input, _repeated_messages_codec); |
| | | break; |
| | | } |
| | | case 24: { |
| | | Total = input.ReadInt32(); |
| | | break; |
| | | } |
| | | case 32: { |
| | |
| | | public FamilyStartChat_C2S(FamilyStartChat_C2S other) : this() { |
| | | chatType_ = other.chatType_; |
| | | content_ = other.content_; |
| | | gemId_ = other.gemId_; |
| | | } |
| | | |
| | | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] |
| | |
| | | } |
| | | } |
| | | |
| | | /// <summary>Field number for the "gemId" field.</summary> |
| | | public const int GemIdFieldNumber = 3; |
| | | private int gemId_; |
| | | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] |
| | | public int GemId { |
| | | get { return gemId_; } |
| | | set { |
| | | gemId_ = value; |
| | | } |
| | | } |
| | | |
| | | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] |
| | | public override bool Equals(object other) { |
| | | return Equals(other as FamilyStartChat_C2S); |
| | |
| | | } |
| | | if (ChatType != other.ChatType) return false; |
| | | if (Content != other.Content) return false; |
| | | if (GemId != other.GemId) return false; |
| | | return true; |
| | | } |
| | | |
| | |
| | | int hash = 1; |
| | | if (ChatType != 0) hash ^= ChatType.GetHashCode(); |
| | | if (Content.Length != 0) hash ^= Content.GetHashCode(); |
| | | if (GemId != 0) hash ^= GemId.GetHashCode(); |
| | | return hash; |
| | | } |
| | | |
| | |
| | | output.WriteRawTag(18); |
| | | output.WriteString(Content); |
| | | } |
| | | if (GemId != 0) { |
| | | output.WriteRawTag(24); |
| | | output.WriteInt32(GemId); |
| | | } |
| | | } |
| | | |
| | | [global::System.Diagnostics.DebuggerNonUserCodeAttribute] |
| | |
| | | } |
| | | if (Content.Length != 0) { |
| | | size += 1 + pb::CodedOutputStream.ComputeStringSize(Content); |
| | | } |
| | | if (GemId != 0) { |
| | | size += 1 + pb::CodedOutputStream.ComputeInt32Size(GemId); |
| | | } |
| | | return size; |
| | | } |
| | |
| | | } |
| | | if (other.Content.Length != 0) { |
| | | Content = other.Content; |
| | | } |
| | | if (other.GemId != 0) { |
| | | GemId = other.GemId; |
| | | } |
| | | } |
| | | |
| | |
| | | Content = input.ReadString(); |
| | | break; |
| | | } |
| | | case 24: { |
| | | GemId = input.ReadInt32(); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | "endless_buff.json", |
| | | "endless_enemy.json", |
| | | "endless_port.json", |
| | | "endless_teachport.json", |
| | | "donaterule.json", |
| | | "scoreshop.json", |
| | | "donateshop.json", |
| | | "gemcost.json", |
| | |
| | | foreach (JsonData item in data) |
| | | { |
| | | endless_port tmp = endless_port.CreateFromJson(item); |
| | | allData.Add(tmp as tabledata); |
| | | } |
| | | JsonDataCenter.allData.Add(tablename, allData); |
| | | break; |
| | | |
| | | |
| | | case "endless_teachport": |
| | | //allData.Clear(); |
| | | foreach (JsonData item in data) |
| | | { |
| | | endless_teachport tmp = endless_teachport.CreateFromJson(item); |
| | | allData.Add(tmp as tabledata); |
| | | } |
| | | JsonDataCenter.allData.Add(tablename, allData); |
| | | break; |
| | | |
| | | |
| | | case "donaterule": |
| | | //allData.Clear(); |
| | | foreach (JsonData item in data) |
| | | { |
| | | donaterule tmp = donaterule.CreateFromJson(item); |
| | | allData.Add(tmp as tabledata); |
| | | } |
| | | JsonDataCenter.allData.Add(tablename, allData); |
| | |
| | | |
| | | } |
| | | |
| | | //! 生成文件 endless_teachport(无尽模式新手引导关卡).xlsx |
| | | public class endless_teachport : tabledata { |
| | | public int getid(){ |
| | | return id; |
| | | } |
| | | |
| | | // id |
| | | public int id; |
| | | |
| | | // 关卡等级 |
| | | public int level; |
| | | |
| | | // Boss名称 |
| | | public string boss_name; |
| | | |
| | | // Boss资源id |
| | | public int resource; |
| | | |
| | | // 波次 |
| | | public int wave; |
| | | |
| | | // 赛道 |
| | | public int tunel; |
| | | |
| | | // 敌人id |
| | | public int enemy_id; |
| | | |
| | | // 本波次敌人数量 |
| | | public int amount; |
| | | |
| | | // 本赛道出怪间隔 |
| | | public int interval; |
| | | |
| | | // 怪物基础血量 |
| | | public int b_hp; |
| | | |
| | | // 怪物基础速度 |
| | | public float b_speed; |
| | | |
| | | // 掉落基础金币 |
| | | public int b_coin; |
| | | |
| | | // 波次间隔 |
| | | public int cooldown; |
| | | |
| | | // 怪物掉落 |
| | | public List<reward> drop; |
| | | |
| | | // 掉落概率 |
| | | public List<int> drop_rate; |
| | | |
| | | // 法阵图片 |
| | | public int tunel_bg; |
| | | |
| | | |
| | | |
| | | public static endless_teachport CreateFromJson(JsonData item) |
| | | { |
| | | endless_teachport _endless_teachport = new endless_teachport(); |
| | | |
| | | int index = 0; |
| | | _endless_teachport.id = int.Parse(GameUtils.GetString(item[index++].ToString())); |
| | | _endless_teachport.level = int.Parse(GameUtils.GetString(item[index++].ToString())); |
| | | _endless_teachport.boss_name = GameUtils.GetString(item[index++].ToString()); |
| | | _endless_teachport.resource = int.Parse(GameUtils.GetString(item[index++].ToString())); |
| | | _endless_teachport.wave = int.Parse(GameUtils.GetString(item[index++].ToString())); |
| | | _endless_teachport.tunel = int.Parse(GameUtils.GetString(item[index++].ToString())); |
| | | _endless_teachport.enemy_id = int.Parse(GameUtils.GetString(item[index++].ToString())); |
| | | _endless_teachport.amount = int.Parse(GameUtils.GetString(item[index++].ToString())); |
| | | _endless_teachport.interval = int.Parse(GameUtils.GetString(item[index++].ToString())); |
| | | _endless_teachport.b_hp = int.Parse(GameUtils.GetString(item[index++].ToString())); |
| | | _endless_teachport.b_speed = float.Parse(GameUtils.GetString(item[index++].ToString())); |
| | | _endless_teachport.b_coin = int.Parse(GameUtils.GetString(item[index++].ToString())); |
| | | _endless_teachport.cooldown = int.Parse(GameUtils.GetString(item[index++].ToString())); |
| | | _endless_teachport.drop = GameUtils.GetRewardList(item[index++]); |
| | | _endless_teachport.drop_rate = GameUtils.GetIntList(item[index++]); |
| | | _endless_teachport.tunel_bg = int.Parse(GameUtils.GetString(item[index++].ToString())); |
| | | |
| | | return _endless_teachport; |
| | | } |
| | | |
| | | } |
| | | |
| | | //! 生成文件 G_donaterule(公会捐赠卡规则).xlsx |
| | | public class donaterule : tabledata { |
| | | public int getid(){ |
| | | return id; |
| | | } |
| | | |
| | | // 标识符 |
| | | public int id; |
| | | |
| | | // 竞技场等级 |
| | | public List<int> ranklevle; |
| | | |
| | | // 发起请求后可获得的卡牌数 |
| | | public List<string> canreward; |
| | | |
| | | // 可捐赠给他人的卡牌数 |
| | | public List<string> candonate; |
| | | |
| | | |
| | | |
| | | public static donaterule CreateFromJson(JsonData item) |
| | | { |
| | | donaterule _donaterule = new donaterule(); |
| | | |
| | | int index = 0; |
| | | _donaterule.id = int.Parse(GameUtils.GetString(item[index++].ToString())); |
| | | _donaterule.ranklevle = GameUtils.GetIntList(item[index++]); |
| | | _donaterule.canreward = GameUtils.GetStringList(item[index++]); |
| | | _donaterule.candonate = GameUtils.GetStringList(item[index++]); |
| | | |
| | | return _donaterule; |
| | | } |
| | | |
| | | } |
| | | |
| | | //! 生成文件 G_公会积分商店.xlsx |
| | | public class scoreshop : tabledata { |
| | | public int getid(){ |
| | |
| | | using TowerDefense.Towers; |
| | | using TowerDefense.Towers.Projectiles; |
| | | using UnityEngine; |
| | | using KTGMGemClient; |
| | | |
| | | namespace TowerDefense.Affectors |
| | | { |
| | |
| | | protected float energyCalTime = 0; |
| | | protected float fInEnergy = 0; |
| | | protected float fBackupTimer = 0.0f; |
| | | |
| | | /// <summary> |
| | | /// Gets the search rate from the targetter |
| | | /// </summary> |
| | |
| | | fInEnergy -= Time.deltaTime; |
| | | if( fInEnergy <= 0) |
| | | { |
| | | EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.FireTowerChargeEnd); |
| | | fInEnergy = 0.0f; |
| | | this.energyCalTime = 0.0f; |
| | | towerPtr.energyCtl.SetEnergyProgress(0); |
| | |
| | | protected bool bInDeathAct = false; |
| | | |
| | | /// <summary> |
| | | /// 原地罚站 |
| | | /// </summary> |
| | | /// <param name="can"></param> |
| | | public bool CanMove { get; set; } = true; |
| | | |
| | | /// <summary> |
| | | /// Gets the attached nav mesh agent velocity |
| | | /// </summary> |
| | | public override Vector3 velocity |
| | |
| | | this.UpdateAction(); |
| | | |
| | | // 处理死亡状态了,不必再移动: |
| | | if (bInDeathAct) return; |
| | | if (bInDeathAct || !CanMove) return; |
| | | |
| | | m_Destination = initNode.GetNextNode(); |
| | | updateAgentPos(Time.deltaTime); |
| | |
| | | return agentWaveLineArray; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 设置某条兵线的所有小兵的移动状态 |
| | | /// </summary> |
| | | /// <param name="waveLineId">兵线id 1~5, 如果是-1则设置所有兵线的状态</param> |
| | | /// <param name="canMove">是否可以移动</param> |
| | | /// <param name="isOppo">是否是敌方</param> |
| | | public void SetWaveLineCanMove(int waveLineId, bool canMove, bool isOppo) |
| | | { |
| | | WaveLineAgentInsMgr[] waveLineAgents = isOppo ? getOppoWaveLineList() : GetWaveLineList(); |
| | | |
| | | for (int i = 0; i < waveLineAgents.Length; ++i) |
| | | { |
| | | if (i == waveLineId - 1 || waveLineId == -1) |
| | | { |
| | | List<Agent> list = waveLineAgents[i].listAgent; |
| | | |
| | | for (int j = 0; j < list.Count; ++j) |
| | | { |
| | | list[j].CanMove = canMove; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | public List<Agent> agentList |
| | | { |
| | | get { return this.agentInsList; } |
| | |
| | | private bool isBuffSelectCompleted = true; |
| | | |
| | | /// <summary> |
| | | /// 新手第一关是否完成 |
| | | /// </summary> |
| | | private bool isFirstLevelCompleted = false; |
| | | |
| | | /// <summary> |
| | | /// 切换基地 |
| | | /// </summary> |
| | | /// <param name="index">列索引</param> |
| | |
| | | // 本关卡所有波次全部生成完成 && 敌人全部被清理了,然后就去尝试进入下一关 |
| | | if (EndlessLeveltate == LevelState.SpawningEnemies && IsAllWaveCompleted && NumberOfEnemies == 0) |
| | | { |
| | | if (!UpdateLevel()) |
| | | ChangeLevelState(LevelState.AllEnemiesSpawned); |
| | | // 新手的话,第一关完了暂停 |
| | | if (!GameConfig.IsNewbie) |
| | | { |
| | | if (!UpdateLevel()) |
| | | ChangeLevelState(LevelState.AllEnemiesSpawned); |
| | | } |
| | | else if (!isFirstLevelCompleted) |
| | | { |
| | | isFirstLevelCompleted = true; |
| | | EndlessUIStart.instance.Pause(); |
| | | // 第一关的怪全部被杀光 |
| | | EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.KillDone); |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | ++CurrentLevel; |
| | | IsAllWaveCompleted = false; |
| | | |
| | | // 进入boss虚弱状态 |
| | | Debug.Log("--------------------- 进入boss虚弱状态 ---------------------"); |
| | | |
| | | // 所有关卡全部结束 |
| | | if (CurrentLevel > EndlessPortData.MaxLevel) |
| | | return false; |
| | |
| | | private void BeginLevel() |
| | | { |
| | | if (EndlessGameUI.instance.state == EndlessGameUI.State.GameOver) return; |
| | | ShowSelectBuffUI(); |
| | | |
| | | if (!GameConfig.IsNewbie) |
| | | ShowSelectBuffUI(); |
| | | else |
| | | { |
| | | EndlessUIStart.instance.Restart(); |
| | | WaveManager.StartWaves(CurrentLevel); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | --WaveManager.TotalWaveLines; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 暂停波次,小怪停止移动,塔停止攻击 |
| | | /// </summary> |
| | | public void PauseWave() |
| | | { |
| | | EndlessUIStart.instance.Pause(); |
| | | AgentInsManager.instance.SetWaveLineCanMove(-1, false, false); |
| | | WaveManager.PauseAllWave(); |
| | | EndlessGameUI.instance.SetAttackingTowerState(false); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 恢复波次,小怪 |
| | | /// </summary> |
| | | public void RestartWave() |
| | | { |
| | | EndlessUIStart.instance.Restart(); |
| | | AgentInsManager.instance.SetWaveLineCanMove(-1, true, false); |
| | | WaveManager.RestartAllWave(); |
| | | EndlessGameUI.instance.SetAttackingTowerState(true); |
| | | } |
| | | } |
| | | } |
| | |
| | | isWaveStoped = true; |
| | | } |
| | | |
| | | public void PauseWave() |
| | | { |
| | | PauseTimer(spawnTimer); |
| | | isWaveStoped = true; |
| | | } |
| | | |
| | | public void RestartWave() |
| | | { |
| | | StartTimer(spawnTimer); |
| | | isWaveStoped = false; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// Handles spawning the current agent and sets up the next agent for spawning |
| | | /// 在场景内孵化出来一个Boss,这个核心函数最后被规则性的数据接管 |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 暂停所有兵线出兵 |
| | | /// </summary> |
| | | public void PauseAllWave() |
| | | { |
| | | foreach (EndlessPortConfig data in waveData) |
| | | { |
| | | if (waves[data.Config.tunel - 1].LineState == EndlessWaveLineState.Spawning) |
| | | waves[data.Config.tunel - 1].PauseWave(); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 恢复所有兵线出兵 |
| | | /// </summary> |
| | | public void RestartAllWave() |
| | | { |
| | | foreach (EndlessPortConfig data in waveData) |
| | | { |
| | | if (waves[data.Config.tunel - 1].LineState == EndlessWaveLineState.Spawning) |
| | | waves[data.Config.tunel - 1].RestartWave(); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 一波结束了 |
| | | /// </summary> |
| | | private void OneWaveCompleted() |
| | |
| | | |
| | | namespace TowerDefense.Towers.Placement |
| | | { |
| | | /// <summary> |
| | | /// An interface for a placement area that can contain a tower |
| | | /// </summary> |
| | | public interface IPlacementArea |
| | | { |
| | | /// <summary> |
| | | /// Gets this object's transform |
| | | /// </summary> |
| | | Transform transform { get; } |
| | | /// <summary> |
| | | /// An interface for a placement area that can contain a tower |
| | | /// </summary> |
| | | public interface IPlacementArea |
| | | { |
| | | /// <summary> |
| | | /// Gets this object's transform |
| | | /// </summary> |
| | | Transform transform { get; } |
| | | |
| | | /// <summary> |
| | | /// 获取当前PlaceMentArea的Size. |
| | | /// </summary> |
| | | IntVector2 getdimsize(); |
| | | /// <summary> |
| | | /// 获取当前PlaceMentArea的Size. |
| | | /// </summary> |
| | | IntVector2 getdimsize(); |
| | | |
| | | /// <summary> |
| | | /// 获取一个可以放置塔防的位置. |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | IntVector2 getFreePos(int xdim,int ydim,bool forceGet = false ); |
| | | /// <summary> |
| | | /// 获取一个可以放置塔防的位置. |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | IntVector2 getFreePos(int xdim, int ydim, bool forceGet = false); |
| | | |
| | | |
| | | /// <summary> |
| | | /// 获取对应位置的充能子弹界面指针. |
| | | /// </summary> |
| | | /// <param name="x"></param> |
| | | /// <returns></returns> |
| | | BulletUICtl GetBulletUICtl(int x); |
| | | /// <summary> |
| | | /// 获取对应位置的充能子弹界面指针. |
| | | /// </summary> |
| | | /// <param name="x"></param> |
| | | /// <param name="y"></param> |
| | | /// <returns></returns> |
| | | BulletUICtl GetBulletUICtl(int x, int y); |
| | | |
| | | /// <summary> |
| | | /// 获取对应位置的能量条界面指针. |
| | | /// </summary> |
| | | /// <param name="x"></param> |
| | | /// <returns></returns> |
| | | EnergyUICtl GetEnergyUICtl(int x); |
| | | /// <summary> |
| | | /// 获取对应位置的能量条界面指针. |
| | | /// </summary> |
| | | /// <param name="x"></param> |
| | | /// <returns></returns> |
| | | EnergyUICtl GetEnergyUICtl(int x, int y); |
| | | |
| | | /// <summary> |
| | | /// 是否空置的攻击位 |
| | | /// </summary> |
| | | /// <param name="x"></param> |
| | | /// <param name="y"></param> |
| | | /// <returns></returns> |
| | | bool isFreeAtackPos(int x, int y); |
| | | /// <summary> |
| | | /// 是否空置的攻击位 |
| | | /// </summary> |
| | | /// <param name="x"></param> |
| | | /// <param name="y"></param> |
| | | /// <returns></returns> |
| | | bool isFreeAtackPos(int x, int y); |
| | | |
| | | /// <summary> |
| | | /// 是否有已开启的可放置攻击位置。 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | bool hasFreeAttackPos(); |
| | | /// <summary> |
| | | /// 是否有已开启的可放置攻击位置。 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | bool hasFreeAttackPos(); |
| | | |
| | | /// <summary> |
| | | /// 是否是等待购买的攻击塔位. |
| | | /// </summary> |
| | | /// <param name="x"></param> |
| | | /// <param name="y"></param> |
| | | /// <returns></returns> |
| | | bool isWaitBuyGrid(int x, int y); |
| | | /// <summary> |
| | | /// 是否是等待购买的攻击塔位. |
| | | /// </summary> |
| | | /// <param name="x"></param> |
| | | /// <param name="y"></param> |
| | | /// <returns></returns> |
| | | bool isWaitBuyGrid(int x, int y); |
| | | |
| | | void startCoinGenMode(); |
| | | void startCoinGenMode(); |
| | | |
| | | /// <summary> |
| | | /// 购买对应的待购攻击塔位. |
| | | /// </summary> |
| | | /// <param name="x"></param> |
| | | /// <param name="y"></param> |
| | | /// <returns></returns> |
| | | bool buyWaitBuyGrid(int x, int y); |
| | | /// <summary> |
| | | /// 购买对应的待购攻击塔位. |
| | | /// </summary> |
| | | /// <param name="x"></param> |
| | | /// <param name="y"></param> |
| | | /// <returns></returns> |
| | | bool buyWaitBuyGrid(int x, int y); |
| | | |
| | | /// <summary> |
| | | /// 设置某一个格子为已破坏塔位。 |
| | | /// </summary> |
| | | /// <param name="x"></param> |
| | | /// <param name="y"></param> |
| | | /// <returns></returns> |
| | | bool SetDestroyedGrid(int x, int y ); |
| | | /// <summary> |
| | | /// 设置某一个格子为已破坏塔位。 |
| | | /// </summary> |
| | | /// <param name="x"></param> |
| | | /// <param name="y"></param> |
| | | /// <returns></returns> |
| | | bool SetDestroyedGrid(int x, int y); |
| | | |
| | | /// <summary> |
| | | /// 设置格子为合成状态。 |
| | | /// </summary> |
| | | /// <param name="x"></param> |
| | | /// <param name="y"></param> |
| | | /// <returns></returns> |
| | | bool SetComboGrid(int x, int y); |
| | | /// <summary> |
| | | /// 设置格子为合成状态。 |
| | | /// </summary> |
| | | /// <param name="x"></param> |
| | | /// <param name="y"></param> |
| | | /// <returns></returns> |
| | | bool SetComboGrid(int x, int y); |
| | | |
| | | /// <summary> |
| | | /// 设置塔位的血条血量数据 |
| | | /// </summary> |
| | | /// <param name="ix"></param> |
| | | /// <param name="health"></param> |
| | | void setTowerPosHealth(int ix, float health); |
| | | /// <summary> |
| | | /// 设置塔位的血条血量数据 |
| | | /// </summary> |
| | | /// <param name="ix"></param> |
| | | /// <param name="health"></param> |
| | | void setTowerPosHealth(int ix, float health); |
| | | |
| | | /// <summary> |
| | | /// Calculates the grid position from a given world position, offset to center for a specific size object |
| | | /// </summary> |
| | | IntVector2 WorldToGrid(Vector3 worldPosition, IntVector2 sizeOffset); |
| | | /// <summary> |
| | | /// Calculates the grid position from a given world position, offset to center for a specific size object |
| | | /// </summary> |
| | | IntVector2 WorldToGrid(Vector3 worldPosition, IntVector2 sizeOffset); |
| | | |
| | | /// <summary> |
| | | /// Calculates the snapped world position from a given grid position |
| | | /// </summary> |
| | | Vector3 GridToWorld(IntVector2 gridPosition, IntVector2 sizeOffset); |
| | | /// <summary> |
| | | /// Calculates the snapped world position from a given grid position |
| | | /// </summary> |
| | | Vector3 GridToWorld(IntVector2 gridPosition, IntVector2 sizeOffset); |
| | | |
| | | /// <summary> |
| | | /// 当前是否是反方的TowerPlacementGrid. |
| | | /// </summary> |
| | | bool isOpponent(); |
| | | /// <summary> |
| | | /// 当前是否是反方的TowerPlacementGrid. |
| | | /// </summary> |
| | | bool isOpponent(); |
| | | |
| | | |
| | | /// <summary> |
| | | /// Gets whether an object of a given size would fit on this grid at the given location |
| | | /// </summary> |
| | | /// <param name="gridPos">The grid location</param> |
| | | /// <param name="size">The size of the item</param> |
| | | /// <returns>True if the item would fit at <paramref name="gridPos"/></returns> |
| | | TowerFitStatus Fits(IntVector2 gridPos, IntVector2 size); |
| | | /// <summary> |
| | | /// Gets whether an object of a given size would fit on this grid at the given location |
| | | /// </summary> |
| | | /// <param name="gridPos">The grid location</param> |
| | | /// <param name="size">The size of the item</param> |
| | | /// <returns>True if the item would fit at <paramref name="gridPos"/></returns> |
| | | TowerFitStatus Fits(IntVector2 gridPos, IntVector2 size); |
| | | |
| | | /// <summary> |
| | | /// Occupy the given space on this placement area |
| | | /// </summary> |
| | | /// <param name="gridPos">The grid location</param> |
| | | /// <param name="size">The size of the item</param> |
| | | void Occupy(IntVector2 gridPos, IntVector2 size); |
| | | /// <summary> |
| | | /// Occupy the given space on this placement area |
| | | /// </summary> |
| | | /// <param name="gridPos">The grid location</param> |
| | | /// <param name="size">The size of the item</param> |
| | | void Occupy(IntVector2 gridPos, IntVector2 size); |
| | | |
| | | /// <summary> |
| | | /// Clear the given space on this placement area |
| | | /// </summary> |
| | | /// <param name="gridPos">The grid location</param> |
| | | /// <param name="size">The size of the item</param> |
| | | void Clear(IntVector2 gridPos, IntVector2 size); |
| | | } |
| | | /// <summary> |
| | | /// Clear the given space on this placement area |
| | | /// </summary> |
| | | /// <param name="gridPos">The grid location</param> |
| | | /// <param name="size">The size of the item</param> |
| | | void Clear(IntVector2 gridPos, IntVector2 size); |
| | | } |
| | | |
| | | public static class PlacementAreaExtensions |
| | | { |
| | | /// <summary> |
| | | /// Snaps a given world positionn to this grid |
| | | /// </summary> |
| | | public static Vector3 Snap(this IPlacementArea placementArea, Vector3 worldPosition, IntVector2 sizeOffset) |
| | | { |
| | | // Calculate the nearest grid location and then change that back to world space |
| | | return placementArea.GridToWorld(placementArea.WorldToGrid(worldPosition, sizeOffset), sizeOffset); |
| | | } |
| | | } |
| | | public static class PlacementAreaExtensions |
| | | { |
| | | /// <summary> |
| | | /// Snaps a given world positionn to this grid |
| | | /// </summary> |
| | | public static Vector3 Snap(this IPlacementArea placementArea, Vector3 worldPosition, IntVector2 sizeOffset) |
| | | { |
| | | // Calculate the nearest grid location and then change that back to world space |
| | | return placementArea.GridToWorld(placementArea.WorldToGrid(worldPosition, sizeOffset), sizeOffset); |
| | | } |
| | | } |
| | | } |
| | |
| | | /// </summary> |
| | | /// <param name="x"></param> |
| | | /// <returns></returns> |
| | | public BulletUICtl GetBulletUICtl(int x) |
| | | public BulletUICtl GetBulletUICtl(int x, int y) |
| | | { |
| | | return null; |
| | | } |
| | |
| | | /// </summary> |
| | | /// <param name="x"></param> |
| | | /// <returns></returns> |
| | | public EnergyUICtl GetEnergyUICtl(int x) |
| | | public EnergyUICtl GetEnergyUICtl(int x, int y) |
| | | { |
| | | return null; |
| | | } |
| | |
| | | /// </summary> |
| | | /// <param name="x"></param> |
| | | /// <returns></returns> |
| | | public BulletUICtl GetBulletUICtl(int x) |
| | | public BulletUICtl GetBulletUICtl(int x, int y) |
| | | { |
| | | return this.arrTowerBulletUi[x]; |
| | | } |
| | |
| | | /// </summary> |
| | | /// <param name="x"></param> |
| | | /// <returns></returns> |
| | | public EnergyUICtl GetEnergyUICtl(int x) |
| | | public EnergyUICtl GetEnergyUICtl(int x, int y) |
| | | { |
| | | return this.arrTowerEnergyUi[x]; |
| | | } |
| | |
| | | img.transform.SetAsFirstSibling(); |
| | | EnergyUICtl euc = img.GetComponent<EnergyUICtl>(); |
| | | arrTowerEnergyUi[x] = euc; |
| | | euc.gameObject.SetActive(false); |
| | | // euc.gameObject.SetActive(false); |
| | | } |
| | | |
| | | return; |
| | |
| | | public int AttackRowNumbers { get; } = 2; |
| | | |
| | | /// <summary> |
| | | /// 攻击塔位对应的子弹UI位置信息. |
| | | /// </summary> |
| | | private Vector2[,] m_arrTowerBulletUIPos; |
| | | |
| | | private BulletUICtl[,] arrTowerBulletUi; |
| | | |
| | | private EnergyUICtl[,] arrTowerEnergyUi; |
| | | |
| | | /// <summary> |
| | | /// 此位置上塔对应的子弹充能Prefab.塔放置到当前的塔位后,如果是对应的塔防类型,需要把 |
| | | /// 相应的界面指针传到塔防的数据结构内。 |
| | | /// </summary> |
| | | public GameObject towerBulletUIPrefab; |
| | | |
| | | /// <summary> |
| | | /// 充能条对应的界面 |
| | | /// </summary> |
| | | public GameObject towerEnergyUIPrefab; |
| | | |
| | | /// <summary> |
| | | /// Converts a location in world space into local grid coordinates. |
| | | /// </summary> |
| | | /// <param name="worldLocation"><see cref="Vector3"/> indicating world space coordinates to convert.</param> |
| | |
| | | /// </summary> |
| | | /// <param name="x"></param> |
| | | /// <returns></returns> |
| | | public BulletUICtl GetBulletUICtl(int x) |
| | | public BulletUICtl GetBulletUICtl(int x, int y) |
| | | { |
| | | return null; |
| | | return arrTowerBulletUi[x, 3 - y]; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// </summary> |
| | | /// <param name="x"></param> |
| | | /// <returns></returns> |
| | | public EnergyUICtl GetEnergyUICtl(int x) |
| | | public EnergyUICtl GetEnergyUICtl(int x, int y) |
| | | { |
| | | return null; |
| | | return arrTowerEnergyUi[x, 3 - y]; |
| | | } |
| | | |
| | | |
| | |
| | | arrTowerBloodUi = new TowerBloodVis[dimensions.x, AttackRowNumbers]; |
| | | int dy = dimensions.y - 1; |
| | | |
| | | // 处理攻击塔位对应的血条 |
| | | m_arrTowerBulletUIPos = new Vector2[dimensions.x, AttackRowNumbers]; |
| | | arrTowerBulletUi = new BulletUICtl[dimensions.x, AttackRowNumbers]; |
| | | arrTowerEnergyUi = new EnergyUICtl[dimensions.x, AttackRowNumbers]; |
| | | |
| | | for (int x = 0; x < dimensions.x; x++) |
| | | { |
| | | for (int y = 0; y < AttackRowNumbers; ++y) |
| | | { |
| | | m_arrTowerBloodUIPos[x, y].x = arrGridCentPos[x, dy - y].x; |
| | | m_arrTowerBloodUIPos[x, y].y = arrGridCentPos[x, dy - y].y; |
| | | m_arrTowerBulletUIPos[x, y].x = arrGridCentPos[x, dy - y].x; |
| | | m_arrTowerBulletUIPos[x, y].y = arrGridCentPos[x, dy - y].y; |
| | | |
| | | GameObject img = Instantiate(towerBloodUIPrefab); |
| | | GameObject container = GameObject.Find("BuyButtonContainer"); |
| | |
| | | Vector3 tpos = img.transform.position; |
| | | tpos.x = m_arrTowerBloodUIPos[x, y].x; |
| | | tpos.z = m_arrTowerBloodUIPos[x, y].y + 4.2f - y * 1.66f; |
| | | tpos.y = 30; |
| | | tpos.y = 30f; |
| | | img.transform.position = tpos; |
| | | img.transform.localScale = Vector3.one; |
| | | img.transform.localRotation = Quaternion.identity; |
| | |
| | | TowerBloodVis tbv = img.GetComponent<TowerBloodVis>(); |
| | | arrTowerBloodUi[x, y] = tbv; |
| | | tbv.gameObject.SetActive(false); |
| | | |
| | | img = Instantiate(towerBulletUIPrefab); |
| | | img.transform.SetParent(container.transform, true); |
| | | tpos = img.transform.position; |
| | | tpos.x = m_arrTowerBulletUIPos[x, y].x + 4.2f; |
| | | tpos.z = m_arrTowerBulletUIPos[x, y].y + 1.1f - y * 1.66f; |
| | | tpos.y = 30f; |
| | | img.transform.position = tpos; |
| | | img.transform.localScale = Vector3.one; |
| | | img.transform.localRotation = Quaternion.identity; |
| | | |
| | | BulletUICtl buc = img.GetComponent<BulletUICtl>(); |
| | | arrTowerBulletUi[x, y] = buc; |
| | | buc.gameObject.SetActive(false); |
| | | |
| | | // 把充能条也创建出来了. |
| | | img = Instantiate(towerEnergyUIPrefab); |
| | | img.transform.SetParent(container.transform); |
| | | tpos = img.transform.position; |
| | | tpos.x = m_arrTowerBulletUIPos[x, y].x + 4.2f; |
| | | tpos.z = m_arrTowerBulletUIPos[x, y].y + 1.1f - y * 1.66f; |
| | | tpos.y = 30f; |
| | | img.transform.position = tpos; |
| | | img.transform.localScale = Vector3.one; |
| | | img.transform.localRotation = Quaternion.identity; |
| | | |
| | | EnergyUICtl euc = img.GetComponent<EnergyUICtl>(); |
| | | arrTowerEnergyUi[x, y] = euc; |
| | | euc.gameObject.SetActive(false); |
| | | } |
| | | } |
| | | } |
| | |
| | | { |
| | | if (!materialTowerAttackSelf) return; |
| | | |
| | | if( opponentSide) |
| | | if (opponentSide) |
| | | { |
| | | if (attack && (this.curActionState != 2)) |
| | | { |
| | |
| | | |
| | | if ((!attack) && (this.curActionState != 1)) |
| | | { |
| | | currentTowerLevel.SetTowerMonsterMat( materialTowerWaitOppo ); |
| | | currentTowerLevel.SetTowerMonsterMat(materialTowerWaitOppo); |
| | | this.curActionState = 1; |
| | | } |
| | | } |
| | |
| | | |
| | | protected void OnTowerUICtrl() |
| | | { |
| | | // |
| | | // 根据是否是子弹塔防来决定是否显示相应的界面 |
| | | BulletUICtl buc = this.placementArea.GetBulletUICtl(gridPosition.x); |
| | | BulletUICtl buc = this.placementArea.GetBulletUICtl(gridPosition.x, gridPosition.y); |
| | | |
| | | if (buc == null) return; |
| | | |
| | |
| | | } |
| | | |
| | | // 根据是否是能量充能来决定是否显示相应的界面. |
| | | EnergyUICtl euc = placementArea.GetEnergyUICtl(gridPosition.x); |
| | | if( (eTowerFuntion == ETowerFuntion.ENERGY) &&(euc != null )) |
| | | EnergyUICtl euc = placementArea.GetEnergyUICtl(gridPosition.x, gridPosition.y); |
| | | if ((eTowerFuntion == ETowerFuntion.ENERGY) && (euc != null)) |
| | | { |
| | | // 设置数据 |
| | | euc.gameObject.SetActive(true); |
| | |
| | | { |
| | | if (bWaitOpen) return; |
| | | |
| | | if (GameConfig.IsNewbie) |
| | | { |
| | | if (!GameConfig.CanOpenNewTower) return; |
| | | |
| | | EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.GetOneTowerPos); |
| | | } |
| | | |
| | | |
| | | if (towerGrid != null) |
| | | { |
| | | float cashToOpen = TowerPlacementGridEndless.GRID_OPENCASH; |
| | |
| | | using Core.Utilities; |
| | | using TowerDefense.Towers; |
| | | using Core.Utilities; |
| | | using System; |
| | | using TMPro; |
| | | using UnityEngine; |
| | |
| | | using MoreMountains.NiceVibrations; |
| | | using TowerDefense.Level; |
| | | using KTGMGemClient; |
| | | using TowerDefense.UI.HUD; |
| | | |
| | | /// <summary> |
| | | /// 无尽模式用自己的EndlessUIStart |
| | |
| | | |
| | | //查询是否已经做过了新手引导 |
| | | int guide = PlayerPrefs.GetInt("GemBattleGuide"); |
| | | // if (guide == 0) |
| | | // { |
| | | // Debug.Log("需要进行新手引导"); |
| | | // Pause(); |
| | | GameConfig.IsNewbie = guide == 0; |
| | | |
| | | // uiStartMssk.gameObject.SetActive(false); |
| | | // countDownTextNew.text = ""; |
| | | // countDownTextNew.gameObject.SetActive(false); |
| | | if (guide == 0) |
| | | { |
| | | Pause(); |
| | | uiStartMssk.gameObject.SetActive(false); |
| | | countDownTextNew.text = ""; |
| | | countDownTextNew.gameObject.SetActive(false); |
| | | |
| | | // Instantiate(Resources.Load<GameObject>("UI/Guide/GuidePanel"), this.transform); |
| | | // //bGameStart = true; |
| | | // // 开始关卡 |
| | | // //EndlessLevelManager.instance.StartLevel(); |
| | | // //timeTextNew.gameObject.SetActive(true); |
| | | Instantiate(Resources.Load<GameObject>("UI/Guide/GuidePanel"), this.transform); |
| | | AddGuideEvent(); |
| | | //bGameStart = true; |
| | | // 开始关卡 |
| | | //EndlessLevelManager.instance.StartLevel(); |
| | | //timeTextNew.gameObject.SetActive(true); |
| | | |
| | | // // 开始播放背景音乐. |
| | | // // if (bgMusic != null) |
| | | // // bgMusic.Play(); |
| | | // } |
| | | // 开始播放背景音乐. |
| | | // if (bgMusic != null) |
| | | // bgMusic.Play(); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 添加新手引导事件 |
| | | /// </summary> |
| | | private void AddGuideEvent() |
| | | { |
| | | EventCenter.Ins.Add((int)KTGMGemClient.EventType.CreateFireLv2, CreateFireLv2); |
| | | EventCenter.Ins.Add((int)KTGMGemClient.EventType.CreateFirstWave, CreateFirstWave); |
| | | EventCenter.Ins.Add((int)KTGMGemClient.EventType.RestartWave, RestartWave); |
| | | EventCenter.Ins.Add<int>((int)KTGMGemClient.EventType.AddGold, AddGold); |
| | | EventCenter.Ins.Add((int)KTGMGemClient.EventType.CreateWaterLv1, CreateWaterLv1); |
| | | EventCenter.Ins.Add((int)KTGMGemClient.EventType.CreateSecondWave, CreateSecondWave); |
| | | EventCenter.Ins.Add((int)KTGMGemClient.EventType.SkillRelease, SkillRelease); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 在(2,3)位置放置一个火元素的塔 |
| | | /// </summary> |
| | | private void CreateFireLv2() |
| | | { |
| | | Tower aTower = EndlessRandomTower.instance.getTowerByName("GrowUpTower"); |
| | | EndlessGameUI.instance.PlaceTowerForce(aTower, new IntVector2(2, 3), 2); |
| | | } |
| | | |
| | | private void CreateFirstWave() |
| | | { |
| | | Restart(); |
| | | EventCenter.Ins.Add((int)KTGMGemClient.EventType.FireTowerChargeEnd, OnFireTowerChargeEnd); |
| | | } |
| | | |
| | | private void OnFireTowerChargeEnd() |
| | | { |
| | | Pause(); |
| | | EndlessLevelManager.instance.PauseWave(); |
| | | EventCenter.Ins.Remove((int)KTGMGemClient.EventType.FireTowerChargeEnd, OnFireTowerChargeEnd); |
| | | EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.ChargingEnd); |
| | | } |
| | | |
| | | private void RestartWave() |
| | | { |
| | | Restart(); |
| | | EndlessLevelManager.instance.RestartWave(); |
| | | } |
| | | |
| | | private void AddGold(int gold) |
| | | { |
| | | EndlessLevelManager.instance.Currency.AddCurrency(gold); |
| | | } |
| | | |
| | | private void CreateWaterLv1() |
| | | { |
| | | Tower aTower = EndlessRandomTower.instance.getTowerByName("CopyCatTower"); |
| | | EndlessGameUI.instance.PlaceTowerForce(aTower, new IntVector2(1, 3), 1); |
| | | } |
| | | |
| | | private void CreateSecondWave() |
| | | { |
| | | |
| | | } |
| | | |
| | | private void SkillRelease() |
| | | { |
| | | |
| | | } |
| | | |
| | |
| | | timeTextNew.text = ConvertTime((float)Math.Ceiling(startTime)); |
| | | } |
| | | |
| | | if (!bFirstLoaded && !bGameStart) |
| | | if (!GameConfig.IsNewbie) |
| | | { |
| | | bFirstLoaded = true; |
| | | secToDo = 4; |
| | | if (!bFirstLoaded && !bGameStart) |
| | | { |
| | | bFirstLoaded = true; |
| | | secToDo = 4; |
| | | } |
| | | |
| | | if (bFirstLoaded && !bGameStart) |
| | | { |
| | | secToDo -= Time.deltaTime; |
| | | countDownTextNew.gameObject.SetActive(true); |
| | | |
| | | if (secToDo >= 3) |
| | | { |
| | | countDownTextNew.text = "3"; |
| | | if (!bVibrate[3]) |
| | | { |
| | | bVibrate[3] = true; |
| | | MMVibrationManager.Haptic(HapticTypes.SoftImpact); |
| | | } |
| | | } |
| | | else if (secToDo >= 2) |
| | | { |
| | | countDownTextNew.text = "2"; |
| | | if (!bVibrate[2]) |
| | | { |
| | | bVibrate[2] = true; |
| | | MMVibrationManager.Haptic(HapticTypes.MediumImpact); |
| | | } |
| | | } |
| | | else if (secToDo >= 1) |
| | | { |
| | | countDownTextNew.text = "1"; |
| | | if (!bVibrate[1]) |
| | | { |
| | | bVibrate[1] = true; |
| | | MMVibrationManager.Haptic(HapticTypes.HeavyImpact); |
| | | } |
| | | } |
| | | else if (secToDo < 1) |
| | | { |
| | | countDownTextNew.text = "GO!"; |
| | | if (!bVibrate[0]) |
| | | { |
| | | bVibrate[0] = true; |
| | | MMVibrationManager.Haptic(HapticTypes.HeavyImpact); |
| | | } |
| | | } |
| | | |
| | | // 开启游戏,且隐藏中间的数字. |
| | | if (secToDo <= 0) |
| | | { |
| | | uiStartMssk.gameObject.SetActive(false); |
| | | countDownTextNew.text = ""; |
| | | countDownTextNew.gameObject.SetActive(false); |
| | | bGameStart = true; |
| | | // 开始关卡 |
| | | EndlessLevelManager.instance.StartLevel(); |
| | | timeTextNew.gameObject.SetActive(true); |
| | | |
| | | // 开始播放背景音乐. |
| | | if (bgMusic != null) |
| | | bgMusic.Play(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (bFirstLoaded && !bGameStart) |
| | | else |
| | | { |
| | | secToDo -= Time.deltaTime; |
| | | countDownTextNew.gameObject.SetActive(true); |
| | | // 新手走的流程 |
| | | if (!bFirstLoaded && !bGameStart) |
| | | bFirstLoaded = true; |
| | | |
| | | if (secToDo >= 3) |
| | | if (bFirstLoaded && !bGameStart) |
| | | { |
| | | countDownTextNew.text = "3"; |
| | | if (!bVibrate[3]) |
| | | { |
| | | bVibrate[3] = true; |
| | | MMVibrationManager.Haptic(HapticTypes.SoftImpact); |
| | | } |
| | | } |
| | | else if (secToDo >= 2) |
| | | { |
| | | countDownTextNew.text = "2"; |
| | | if (!bVibrate[2]) |
| | | { |
| | | bVibrate[2] = true; |
| | | MMVibrationManager.Haptic(HapticTypes.MediumImpact); |
| | | } |
| | | } |
| | | else if (secToDo >= 1) |
| | | { |
| | | countDownTextNew.text = "1"; |
| | | if (!bVibrate[1]) |
| | | { |
| | | bVibrate[1] = true; |
| | | MMVibrationManager.Haptic(HapticTypes.HeavyImpact); |
| | | } |
| | | } |
| | | else if (secToDo < 1) |
| | | { |
| | | countDownTextNew.text = "GO!"; |
| | | if (!bVibrate[0]) |
| | | { |
| | | bVibrate[0] = true; |
| | | MMVibrationManager.Haptic(HapticTypes.HeavyImpact); |
| | | } |
| | | } |
| | | |
| | | // 开启游戏,且隐藏中间的数字. |
| | | if (secToDo <= 0) |
| | | { |
| | | uiStartMssk.gameObject.SetActive(false); |
| | | countDownTextNew.text = ""; |
| | | countDownTextNew.gameObject.SetActive(false); |
| | | bGameStart = true; |
| | | // 开始关卡 |
| | | EndlessLevelManager.instance.StartLevel(); |
| | | timeTextNew.gameObject.SetActive(true); |
| | | |
| | | // 开始播放背景音乐. |
| | | if (bgMusic != null) |
| | | bgMusic.Play(); |
| | | } |
| | |
| | | using UnityEngine.EventSystems; |
| | | using UnityEngine.UI; |
| | | using TowerDefense.Nodes; |
| | | using TowerDefense.Affectors; |
| | | |
| | | namespace TowerDefense.UI.HUD |
| | | { |
| | |
| | | public bool towerInList(Tower t) |
| | | { |
| | | return m_listTower.Contains(t); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 设置已经上阵的所有塔的攻击状态,是否可以攻击 |
| | | /// </summary> |
| | | /// <param name="canAttack"></param> |
| | | public void SetAttackingTowerState(bool canAttack) |
| | | { |
| | | foreach (Tower tower in m_listTower) |
| | | { |
| | | tower.bInAttackMode = canAttack; |
| | | } |
| | | } |
| | | |
| | | public void delTower(Tower t) |
| | |
| | | CancelPlaceTower(pointerInfo); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 强制放置塔,主要是用于新手 |
| | | /// </summary> |
| | | /// <param name="newTower"></param> |
| | | /// <param name="pos"></param> |
| | | /// <param name="level">塔的等级</param> |
| | | public void PlaceTowerForce(Tower newTower, IntVector2 pos, int level) |
| | | { |
| | | TowerPlacementGhost currentTower = Instantiate(newTower.towerGhostPrefab); |
| | | currentTower.Initialize(newTower); |
| | | Tower controller = currentTower.controller; |
| | | Tower createdTower = Instantiate(controller); |
| | | createdTower.Initialize(m_CurrentArea, pos); |
| | | createdTower.SetLevel(level - 1); |
| | | |
| | | addTower(createdTower); |
| | | Destroy(currentTower.gameObject); |
| | | } |
| | | |
| | | protected bool SkillPlayEndDrag(PointerInfo pointer) |
| | | { |
| | | // 我操,终于可以了!ATTENTION TO OPP: |
| | |
| | | /// </summary> |
| | | public void onClick() |
| | | { |
| | | if (GameConfig.IsNewbie && !GameConfig.CanBuyNewTower) return; |
| | | |
| | | // 还没到技能时间,忽略掉技能宝石 |
| | | Tower newTower = GetRandomTower(EndlessUIStart.instance.GameStartTime <= SKILL_TOWER_TIME); |
| | | |
| | |
| | | /// 随机找一个空白位置放置塔防 |
| | | /// </summary> |
| | | /// <param name="tower"></param> |
| | | public bool RandomPlaceTower(Tower tower, int level = -1, int cost = -1) |
| | | public bool RandomPlaceTower(Tower tower, int level = -1, int cost = -1, int posx = - 1, int posy = -1) |
| | | { |
| | | EndlessGameUI gameUI = EndlessGameUI.instance; |
| | | |
| | |
| | | gameUI.CancelGhostPlacement(); |
| | | |
| | | if (EndlessUIStart.instance.GameStartTime >= LEVELUP_TOWER_TIME) |
| | | return gameUI.RandomPlaceTower(tower, -1, -1, level == -1 ? 1 : level, cost); |
| | | return gameUI.RandomPlaceTower(tower, posx, posy, level == -1 ? 1 : level, cost); |
| | | else |
| | | return gameUI.RandomPlaceTower(tower, -1, -1, level == -1 ? 0 : level, cost); |
| | | return gameUI.RandomPlaceTower(tower, posx, posy, level == -1 ? 0 : level, cost); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | [[1,"skilltime",30,[],"","生成技能宝石的时间(秒)"],[2,"initialgold",100,[],"","战斗内初始金币"],[3,"doublegem",180,[],"","购买宝石直接获得2级宝石的时间(秒)"],[4,"initialmoney",5000,[],"","初始金币"],[5,"initialgems","",["101:1:100","102:3:200","103:6:200","104:9:200","105:1:200","106:3:200","107:9:200","109:1:200"],"","宝石id:等级:个数 三个一组,每组用逗号分隔"],[6,"initialdeck","",["101","102","103","105","109"],"","上阵的宝石id列表.必须是初始宝石里面的"],[7,"buildtime",10,[],"","解锁塔位所需时间(秒)"],[8,"gemcountdown",10,[],"","购买获得2级宝石倒计时(秒)"],[9,"skillchance",20,[],"","购买获得技能宝石的概率(百分比)"],[10,"changenameprice",100,[],"","非首次改名的花费(100钻石)"],[11,"gemlevelup",30,[],"","塔防区宝石升级时变换类型的概率"],[12,"familymaxcount",50,[],"","工会最大人数"],[13,"scoreShopRefreshTime",7,[],"","工会积分商城刷新时间7天,从创建开始算"],[14,"SpeedUpFrist","",["180:0.75:1.5"],"","第一次提速时间,间隔倍率,移速倍率"],[15,"SpeedUpSecond","",["300:0.5:2"],"","第二次提速时间,间隔倍率,移速倍率"],[16,"donateShopRefreshTime",7,[],"","工会捐赠商城刷新时间7天,从创建开始算"],[17,"guildRankRequest","",["0","300","600","900","1200","1500","1800","2100","2400","2700","3000"],"","加入公会的排位分数限制(超过该值才能进入)"],[18,"guildNameDay",7,[],"","修改公会名:间隔7天1次"],[19,"guildNameCost",500,[],"","修改公会名:每次花费500金币(money)"],[20,"guildicon",30,[],"","修改公会图标:间隔30天1次"],[21,"guildCreateMinLevel",5,[],"","工会创建最小等级"]] |
| | | [[1,"skilltime",30,[],"","生成技能宝石的时间(秒)"],[2,"initialgold",100,[],"","战斗内初始金币"],[3,"doublegem",180,[],"","购买宝石直接获得2级宝石的时间(秒)"],[4,"initialmoney",5000,[],"","初始金币"],[5,"initialgems","",["101:1:100","102:3:200","103:6:200","104:9:200","105:1:200","106:3:200","107:9:200","109:1:200"],"","宝石id:等级:个数 三个一组,每组用逗号分隔"],[6,"initialdeck","",["101","102","103","105","109"],"","上阵的宝石id列表.必须是初始宝石里面的"],[7,"buildtime",0,[],"","解锁塔位所需时间(秒)"],[8,"gemcountdown",10,[],"","购买获得2级宝石倒计时(秒)"],[9,"skillchance",20,[],"","购买获得技能宝石的概率(百分比)"],[10,"changenameprice",100,[],"","非首次改名的花费(100钻石)"],[11,"gemlevelup",30,[],"","塔防区宝石升级时变换类型的概率"],[12,"familymaxcount",50,[],"","工会最大人数"],[13,"scoreShopRefreshTime",7,[],"","工会积分商城刷新时间7天,从创建开始算"],[14,"SpeedUpFrist","",["180:0.75:1.5"],"","第一次提速时间,间隔倍率,移速倍率"],[15,"SpeedUpSecond","",["300:0.5:2"],"","第二次提速时间,间隔倍率,移速倍率"],[16,"donateShopRefreshTime",7,[],"","工会捐赠商城刷新时间7天,从创建开始算"],[17,"guildRankRequest","",["0","300","600","900","1200","1500","1800","2100","2400","2700","3000"],"","加入公会的排位分数限制(超过该值才能进入)"],[18,"guildNameDay",7,[],"","修改公会名:间隔7天1次"],[19,"guildNameCost",500,[],"","修改公会名:每次花费500金币(money)"],[20,"guildicon",30,[],"","修改公会图标:间隔30天1次"],[21,"guildCreateMinLevel",5,[],"","工会创建最小等级"]] |
New file |
| | |
| | | [[1,[1,2,3],["10:1","1:2"],["2:1","1:2"]],[2,[4,5,6],["20:1","2:2"],["4:1","1:2"]],[3,[7,8,9],["30:1","3:2"],["6:1","2:2"]],[4,[10,11,12,13],["40:1","4:2"],["8:1","2:2"]]] |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: 92ca1981883b916439a7239e6e562e5c |
| | | DefaultImporter: |
| | | externalObjects: {} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |
New file |
| | |
| | | [[1,1,"史莱姆大王",1,1,1,0,0,0,200,1.5,2,3000,["0"],[0],0],[2,1,"史莱姆大王",1,1,2,0,0,0,200,1.5,2,3000,["0"],[0],0],[3,1,"史莱姆大王",1,1,3,1,10,1800,200,1.5,2,3000,["0"],[0],1],[4,1,"史莱姆大王",1,1,4,0,0,0,200,1.5,2,3000,["0"],[0],0],[5,1,"史莱姆大王",1,1,5,0,0,0,200,1.5,2,3000,["0"],[0],0],[6,1,"史莱姆大王",1,2,1,0,0,0,350,1.5,2,3000,["0"],[0],0],[7,1,"史莱姆大王",1,2,2,0,0,0,350,1.5,2,3000,["0"],[0],0],[8,1,"史莱姆大王",1,2,3,3,6,3000,350,1.5,2,3000,["0"],[0],3],[9,1,"史莱姆大王",1,2,4,0,0,0,350,1.5,2,3000,["0"],[0],0],[10,1,"史莱姆大王",1,2,5,0,0,0,350,1.5,2,3000,["0"],[0],0]] |
New file |
| | |
| | | fileFormatVersion: 2 |
| | | guid: 557946068ebd0464e88cf9958a2485d9 |
| | | DefaultImporter: |
| | | externalObjects: {} |
| | | userData: |
| | | assetBundleName: |
| | | assetBundleVariant: |