From 6f16dfb8bcebe67aeb95ded0d8b644af4932e690 Mon Sep 17 00:00:00 2001 From: chenxin <chenxin6991@163.com> Date: Mon, 26 Oct 2020 21:00:32 +0800 Subject: [PATCH] 无尽模式新手步骤到水元素放置塔位完成 --- Assets/Scripts/TowerDefense/Affectors/AttackAffector.cs | 3 Assets/Scripts/TowerDefense/Agents/Agent.cs | 8 Assets/Scripts/Common/GameConfig.cs | 14 Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGrid.cs | 6 Assets/Resources/UI/Guide/GuidePanel.prefab | 2 Assets/Scenes/Levels/Battle/Endless.unity | 4 Assets/Scripts/TowerDefense/Level/AgentInsManager.cs | 24 Assets/Scripts/TowerDefense/UI/HUD/EndlessRandomTower.cs | 8 Assets/Scripts/Event/EventType.cs | 2 Assets/StreamingAssets/Table/endless_teachport.json.meta | 7 Assets/Scripts/Net/NetExtends/Game.cs | 122 ++++ Assets/Scripts/TowerDefense/Towers/Tower.cs | 11 Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs | 32 + Assets/Scripts/TowerDefense/UI/EndlessUIStart.cs | 221 +++++-- Assets/Scripts/TowerDefense/Towers/Placement/IPlacementArea.cs | 241 ++++---- Assets/Scripts/Guide/ImageWater.cs | 3 Assets/Scripts/TowerDefense/UI/EndlessTowerGridOpen.cs | 8 Assets/Scripts/TowerDefense/Towers/Placement/SingleTowerPlacementArea.cs | 4 Assets/Scripts/Data/EndlessPortData.cs | 102 +++ Assets/Scripts/TowerDefense/Level/EndlessWave.cs | 12 Assets/Materials/Guide/RectGuidance.mat | 6 Assets/Scripts/Net/NetExtends/Common.cs | 391 ++++++-------- Assets/StreamingAssets/Table/endless_teachport.json | 1 Assets/StreamingAssets/Table/donaterule.json.meta | 7 Assets/Scripts/TowerDefense/Level/EndlessLevelManager.cs | 54 + Assets/Scripts/TowerDefense/Level/EndlessWaveManager.cs | 24 Assets/StreamingAssets/Table/donaterule.json | 1 Assets/Scripts/Net/NetExtends/Table.cs | 142 +++++ Assets/StreamingAssets/Table/battle.json | 2 Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGridEndless.cs | 66 ++ 30 files changed, 1,049 insertions(+), 479 deletions(-) diff --git a/Assets/Materials/Guide/RectGuidance.mat b/Assets/Materials/Guide/RectGuidance.mat index a80c93e..aad1323 100644 --- a/Assets/Materials/Guide/RectGuidance.mat +++ b/Assets/Materials/Guide/RectGuidance.mat @@ -69,8 +69,8 @@ - _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 @@ -83,7 +83,7 @@ - _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: [] diff --git a/Assets/Resources/UI/Guide/GuidePanel.prefab b/Assets/Resources/UI/Guide/GuidePanel.prefab index a58c1ea..da516eb 100644 --- a/Assets/Resources/UI/Guide/GuidePanel.prefab +++ b/Assets/Resources/UI/Guide/GuidePanel.prefab @@ -109,7 +109,7 @@ m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &4359018530067976343 RectTransform: m_ObjectHideFlags: 0 diff --git a/Assets/Scenes/Levels/Battle/Endless.unity b/Assets/Scenes/Levels/Battle/Endless.unity index cc0fa9b..a120fa2 100644 --- a/Assets/Scenes/Levels/Battle/Endless.unity +++ b/Assets/Scenes/Levels/Battle/Endless.unity @@ -12915,6 +12915,10 @@ 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 diff --git a/Assets/Scripts/Common/GameConfig.cs b/Assets/Scripts/Common/GameConfig.cs index aaee064..f1dfa0c 100644 --- a/Assets/Scripts/Common/GameConfig.cs +++ b/Assets/Scripts/Common/GameConfig.cs @@ -17,5 +17,19 @@ 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; } } \ No newline at end of file diff --git a/Assets/Scripts/Data/EndlessPortData.cs b/Assets/Scripts/Data/EndlessPortData.cs index e117da0..cbc772f 100644 --- a/Assets/Scripts/Data/EndlessPortData.cs +++ b/Assets/Scripts/Data/EndlessPortData.cs @@ -33,7 +33,17 @@ /// </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; @@ -52,11 +62,77 @@ /// </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; @@ -72,24 +148,8 @@ } 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> @@ -106,7 +166,9 @@ 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; diff --git a/Assets/Scripts/Event/EventType.cs b/Assets/Scripts/Event/EventType.cs index 0d5fd3d..2befada 100644 --- a/Assets/Scripts/Event/EventType.cs +++ b/Assets/Scripts/Event/EventType.cs @@ -35,6 +35,8 @@ SkillRelease, //释放技能完毕 SkillReleaseDone, + // 火元素塔充能使用结束 + FireTowerChargeEnd, } } diff --git a/Assets/Scripts/Guide/ImageWater.cs b/Assets/Scripts/Guide/ImageWater.cs index 4ba6afb..1d72d31 100644 --- a/Assets/Scripts/Guide/ImageWater.cs +++ b/Assets/Scripts/Guide/ImageWater.cs @@ -51,10 +51,9 @@ { //生成一个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 { diff --git a/Assets/Scripts/Net/NetExtends/Common.cs b/Assets/Scripts/Net/NetExtends/Common.cs index 2dd110e..9b695e6 100644 --- a/Assets/Scripts/Net/NetExtends/Common.cs +++ b/Assets/Scripts/Net/NetExtends/Common.cs @@ -23,81 +23,81 @@ 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), @@ -276,9 +276,17 @@ /// </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 { @@ -521,8 +529,6 @@ headimg_ = other.headimg_; singature_ = other.singature_; level_ = other.level_; - rank_ = other.rank_; - score_ = other.score_; exp_ = other.exp_; money_ = other.money_; gold_ = other.gold_; @@ -607,38 +613,11 @@ } } - /// <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] @@ -650,7 +629,7 @@ } /// <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 { @@ -661,7 +640,7 @@ } /// <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 { @@ -672,9 +651,9 @@ } /// <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> /// *已有宝石列表 @@ -685,9 +664,9 @@ } /// <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> /// 编队 @@ -698,9 +677,9 @@ } /// <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 { @@ -708,9 +687,9 @@ } /// <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 { @@ -718,7 +697,7 @@ } /// <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 @@ -732,7 +711,7 @@ } /// <summary>Field number for the "acceptfriend" field.</summary> - public const int AcceptfriendFieldNumber = 16; + public const int AcceptfriendFieldNumber = 14; private bool acceptfriend_; /// <summary> /// 是否接受好友申请 @@ -746,7 +725,7 @@ } /// <summary>Field number for the "namedchanged" field.</summary> - public const int NamedchangedFieldNumber = 17; + public const int NamedchangedFieldNumber = 15; private bool namedchanged_; /// <summary> /// true 表示改过名字,false没有改过 @@ -760,7 +739,7 @@ } /// <summary>Field number for the "areaexp" field.</summary> - public const int AreaexpFieldNumber = 18; + public const int AreaexpFieldNumber = 16; private int areaexp_; /// <summary> /// !竞技场经验 @@ -774,9 +753,9 @@ } /// <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> /// !竞技宝箱列表 @@ -787,7 +766,7 @@ } /// <summary>Field number for the "donate" field.</summary> - public const int DonateFieldNumber = 20; + public const int DonateFieldNumber = 18; private int donate_; /// <summary> /// 工会捐赠积分 @@ -818,8 +797,6 @@ 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; @@ -844,8 +821,6 @@ 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(); @@ -889,24 +864,16 @@ 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); @@ -914,24 +881,24 @@ 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); } } @@ -954,12 +921,6 @@ 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); } @@ -977,10 +938,10 @@ 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); @@ -1011,12 +972,6 @@ } 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; @@ -1078,65 +1033,57 @@ 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; } @@ -1178,7 +1125,7 @@ headimg_ = other.headimg_; level_ = other.level_; rank_ = other.rank_; - score_ = other.score_; + areaexp_ = other.areaexp_; online_ = other.online_; gemdeck_ = other.gemdeck_.Clone(); } @@ -1249,17 +1196,17 @@ } } - /// <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; } } @@ -1305,7 +1252,7 @@ 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; @@ -1319,7 +1266,7 @@ 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; @@ -1352,9 +1299,9 @@ 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); @@ -1381,8 +1328,8 @@ 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; @@ -1411,8 +1358,8 @@ 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; @@ -1449,7 +1396,7 @@ break; } case 56: { - Score = input.ReadInt32(); + Areaexp = input.ReadInt32(); break; } case 64: { @@ -2196,7 +2143,7 @@ headimg_ = other.headimg_; position_ = other.position_; online_ = other.online_; - score_ = other.score_; + areaexp_ = other.areaexp_; level_ = other.level_; weekDonate_ = other.weekDonate_; totalDonate_ = other.totalDonate_; @@ -2266,22 +2213,22 @@ } } - /// <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> /// 等级 @@ -2295,7 +2242,7 @@ } /// <summary>Field number for the "weekDonate" field.</summary> - public const int WeekDonateFieldNumber = 8; + public const int WeekDonateFieldNumber = 9; private int weekDonate_; /// <summary> /// 本周和总捐献数 @@ -2309,7 +2256,7 @@ } /// <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 { @@ -2320,9 +2267,9 @@ } /// <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 { @@ -2347,7 +2294,7 @@ 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; @@ -2363,7 +2310,7 @@ 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(); @@ -2398,20 +2345,20 @@ 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); @@ -2435,8 +2382,8 @@ 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); @@ -2471,8 +2418,8 @@ 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; @@ -2515,22 +2462,22 @@ 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; } diff --git a/Assets/Scripts/Net/NetExtends/Game.cs b/Assets/Scripts/Net/NetExtends/Game.cs index 139bdde..c6f26ea 100644 --- a/Assets/Scripts/Net/NetExtends/Game.cs +++ b/Assets/Scripts/Net/NetExtends/Game.cs @@ -108,12 +108,13 @@ "bmRfUzJDEhEKCWVycm9yY29kZRgBIAEoBRIjCgZmYW1pbHkYAiABKAsyEy5w", "cm90b2J1Zi5GYW1pbHlNc2ciHQoORmFtaWx5Sm9pbl9DMlMSCwoDdWlkGAEg", "ASgJIjAKDkZhbWlseUpvaW5fUzJDEhEKCWVycm9yY29kZRgBIAEoBRILCgN1", - "aWQYAiABKAkiIgoRRmFtaWx5R2V0Q2hhdF9DMlMSDQoFbGltaXQYASABKAUi", - "ZgoRRmFtaWx5R2V0Q2hhdF9TMkMSEQoJZXJyb3Jjb2RlGAEgASgFEikKCG1l", - "c3NhZ2VzGAIgAygLMhcucHJvdG9idWYuRmFtaWx5Q2hhdE1zZxITCgtvbmxp", - "bmVDb3VudBgEIAEoBSJMChNGYW1pbHlTdGFydENoYXRfQzJTEiQKCGNoYXRU", - "eXBlGAEgASgOMhIucHJvdG9idWYuQ2hhdFR5cGUSDwoHY29udGVudBgCIAEo", - "CSJSChNGYW1pbHlTdGFydENoYXRfUzJDEhEKCWVycm9yY29kZRgBIAEoBRIo", + "aWQYAiABKAkiMQoRRmFtaWx5R2V0Q2hhdF9DMlMSDQoFc3RhcnQYASABKAUS", + "DQoFbGltaXQYAiABKAUidQoRRmFtaWx5R2V0Q2hhdF9TMkMSEQoJZXJyb3Jj", + "b2RlGAEgASgFEikKCG1lc3NhZ2VzGAIgAygLMhcucHJvdG9idWYuRmFtaWx5", + "Q2hhdE1zZxINCgV0b3RhbBgDIAEoBRITCgtvbmxpbmVDb3VudBgEIAEoBSJb", + "ChNGYW1pbHlTdGFydENoYXRfQzJTEiQKCGNoYXRUeXBlGAEgASgOMhIucHJv", + "dG9idWYuQ2hhdFR5cGUSDwoHY29udGVudBgCIAEoCRINCgVnZW1JZBgDIAEo", + "BSJSChNGYW1pbHlTdGFydENoYXRfUzJDEhEKCWVycm9yY29kZRgBIAEoBRIo", "CgdtZXNzYWdlGAIgASgLMhcucHJvdG9idWYuRmFtaWx5Q2hhdE1zZyIqChVG", "YW1pbHlTdGFydERvbmF0ZV9DMlMSEQoJbWVzc2FnZUlkGAEgASgFIlQKFUZh", "bWlseVN0YXJ0RG9uYXRlX1MyQxIRCgllcnJvcmNvZGUYASABKAUSKAoHbWVz", @@ -202,9 +203,9 @@ 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), @@ -8716,6 +8717,9 @@ /// <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_; } @@ -8987,6 +8991,9 @@ /// <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_; } @@ -9258,6 +9265,9 @@ /// <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_; } @@ -9394,6 +9404,7 @@ [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public FamilyGetChat_C2S(FamilyGetChat_C2S other) : this() { + start_ = other.start_; limit_ = other.limit_; } @@ -9402,13 +9413,23 @@ 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_; } @@ -9430,6 +9451,7 @@ if (ReferenceEquals(other, this)) { return true; } + if (Start != other.Start) return false; if (Limit != other.Limit) return false; return true; } @@ -9437,6 +9459,7 @@ [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; } @@ -9448,8 +9471,12 @@ [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); } } @@ -9457,6 +9484,9 @@ [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); } @@ -9467,6 +9497,9 @@ public void MergeFrom(FamilyGetChat_C2S other) { if (other == null) { return; + } + if (other.Start != 0) { + Start = other.Start; } if (other.Limit != 0) { Limit = other.Limit; @@ -9482,6 +9515,10 @@ input.SkipLastField(); break; case 8: { + Start = input.ReadInt32(); + break; + } + case 16: { Limit = input.ReadInt32(); break; } @@ -9517,6 +9554,7 @@ public FamilyGetChat_S2C(FamilyGetChat_S2C other) : this() { errorcode_ = other.errorcode_; messages_ = other.messages_.Clone(); + total_ = other.total_; onlineCount_ = other.onlineCount_; } @@ -9546,11 +9584,21 @@ 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] @@ -9576,6 +9624,7 @@ } 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; } @@ -9585,6 +9634,7 @@ 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; } @@ -9601,6 +9651,10 @@ 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); @@ -9614,6 +9668,9 @@ 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); } @@ -9629,6 +9686,9 @@ Errorcode = other.Errorcode; } messages_.Add(other.messages_); + if (other.Total != 0) { + Total = other.Total; + } if (other.OnlineCount != 0) { OnlineCount = other.OnlineCount; } @@ -9648,6 +9708,10 @@ } case 18: { messages_.AddEntriesFrom(input, _repeated_messages_codec); + break; + } + case 24: { + Total = input.ReadInt32(); break; } case 32: { @@ -9689,6 +9753,7 @@ public FamilyStartChat_C2S(FamilyStartChat_C2S other) : this() { chatType_ = other.chatType_; content_ = other.content_; + gemId_ = other.gemId_; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -9718,6 +9783,17 @@ } } + /// <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); @@ -9733,6 +9809,7 @@ } if (ChatType != other.ChatType) return false; if (Content != other.Content) return false; + if (GemId != other.GemId) return false; return true; } @@ -9741,6 +9818,7 @@ int hash = 1; if (ChatType != 0) hash ^= ChatType.GetHashCode(); if (Content.Length != 0) hash ^= Content.GetHashCode(); + if (GemId != 0) hash ^= GemId.GetHashCode(); return hash; } @@ -9759,6 +9837,10 @@ output.WriteRawTag(18); output.WriteString(Content); } + if (GemId != 0) { + output.WriteRawTag(24); + output.WriteInt32(GemId); + } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -9769,6 +9851,9 @@ } if (Content.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(Content); + } + if (GemId != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(GemId); } return size; } @@ -9783,6 +9868,9 @@ } if (other.Content.Length != 0) { Content = other.Content; + } + if (other.GemId != 0) { + GemId = other.GemId; } } @@ -9802,6 +9890,10 @@ Content = input.ReadString(); break; } + case 24: { + GemId = input.ReadInt32(); + break; + } } } } diff --git a/Assets/Scripts/Net/NetExtends/Table.cs b/Assets/Scripts/Net/NetExtends/Table.cs index 7380e41..5ba628d 100644 --- a/Assets/Scripts/Net/NetExtends/Table.cs +++ b/Assets/Scripts/Net/NetExtends/Table.cs @@ -42,6 +42,8 @@ "endless_buff.json", "endless_enemy.json", "endless_port.json", + "endless_teachport.json", + "donaterule.json", "scoreshop.json", "donateshop.json", "gemcost.json", @@ -197,6 +199,28 @@ 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); @@ -1000,6 +1024,124 @@ } + //! 生成文件 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(){ diff --git a/Assets/Scripts/TowerDefense/Affectors/AttackAffector.cs b/Assets/Scripts/TowerDefense/Affectors/AttackAffector.cs index 5ed2192..762e8f6 100644 --- a/Assets/Scripts/TowerDefense/Affectors/AttackAffector.cs +++ b/Assets/Scripts/TowerDefense/Affectors/AttackAffector.cs @@ -8,6 +8,7 @@ using TowerDefense.Towers; using TowerDefense.Towers.Projectiles; using UnityEngine; +using KTGMGemClient; namespace TowerDefense.Affectors { @@ -112,7 +113,6 @@ protected float energyCalTime = 0; protected float fInEnergy = 0; protected float fBackupTimer = 0.0f; - /// <summary> /// Gets the search rate from the targetter /// </summary> @@ -274,6 +274,7 @@ fInEnergy -= Time.deltaTime; if( fInEnergy <= 0) { + EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.FireTowerChargeEnd); fInEnergy = 0.0f; this.energyCalTime = 0.0f; towerPtr.energyCtl.SetEnergyProgress(0); diff --git a/Assets/Scripts/TowerDefense/Agents/Agent.cs b/Assets/Scripts/TowerDefense/Agents/Agent.cs index a9d1bf3..44df4e4 100644 --- a/Assets/Scripts/TowerDefense/Agents/Agent.cs +++ b/Assets/Scripts/TowerDefense/Agents/Agent.cs @@ -193,6 +193,12 @@ 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 @@ -848,7 +854,7 @@ this.UpdateAction(); // 处理死亡状态了,不必再移动: - if (bInDeathAct) return; + if (bInDeathAct || !CanMove) return; m_Destination = initNode.GetNextNode(); updateAgentPos(Time.deltaTime); diff --git a/Assets/Scripts/TowerDefense/Level/AgentInsManager.cs b/Assets/Scripts/TowerDefense/Level/AgentInsManager.cs index 428ed8d..f8c2d16 100644 --- a/Assets/Scripts/TowerDefense/Level/AgentInsManager.cs +++ b/Assets/Scripts/TowerDefense/Level/AgentInsManager.cs @@ -223,6 +223,30 @@ 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; } diff --git a/Assets/Scripts/TowerDefense/Level/EndlessLevelManager.cs b/Assets/Scripts/TowerDefense/Level/EndlessLevelManager.cs index 03d34fa..6045c3c 100644 --- a/Assets/Scripts/TowerDefense/Level/EndlessLevelManager.cs +++ b/Assets/Scripts/TowerDefense/Level/EndlessLevelManager.cs @@ -156,6 +156,11 @@ private bool isBuffSelectCompleted = true; /// <summary> + /// 新手第一关是否完成 + /// </summary> + private bool isFirstLevelCompleted = false; + + /// <summary> /// 切换基地 /// </summary> /// <param name="index">列索引</param> @@ -306,8 +311,19 @@ // 本关卡所有波次全部生成完成 && 敌人全部被清理了,然后就去尝试进入下一关 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); + } } } @@ -344,9 +360,6 @@ ++CurrentLevel; IsAllWaveCompleted = false; - // 进入boss虚弱状态 - Debug.Log("--------------------- 进入boss虚弱状态 ---------------------"); - // 所有关卡全部结束 if (CurrentLevel > EndlessPortData.MaxLevel) return false; @@ -372,7 +385,14 @@ private void BeginLevel() { if (EndlessGameUI.instance.state == EndlessGameUI.State.GameOver) return; - ShowSelectBuffUI(); + + if (!GameConfig.IsNewbie) + ShowSelectBuffUI(); + else + { + EndlessUIStart.instance.Restart(); + WaveManager.StartWaves(CurrentLevel); + } } /// <summary> @@ -497,5 +517,27 @@ --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); + } } } \ No newline at end of file diff --git a/Assets/Scripts/TowerDefense/Level/EndlessWave.cs b/Assets/Scripts/TowerDefense/Level/EndlessWave.cs index 23f760b..9f4fe7f 100644 --- a/Assets/Scripts/TowerDefense/Level/EndlessWave.cs +++ b/Assets/Scripts/TowerDefense/Level/EndlessWave.cs @@ -99,6 +99,18 @@ 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,这个核心函数最后被规则性的数据接管 diff --git a/Assets/Scripts/TowerDefense/Level/EndlessWaveManager.cs b/Assets/Scripts/TowerDefense/Level/EndlessWaveManager.cs index 6ed6da1..4ddc5cb 100644 --- a/Assets/Scripts/TowerDefense/Level/EndlessWaveManager.cs +++ b/Assets/Scripts/TowerDefense/Level/EndlessWaveManager.cs @@ -226,6 +226,30 @@ } /// <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() diff --git a/Assets/Scripts/TowerDefense/Towers/Placement/IPlacementArea.cs b/Assets/Scripts/TowerDefense/Towers/Placement/IPlacementArea.cs index 30eb5cf..acfa4c6 100644 --- a/Assets/Scripts/TowerDefense/Towers/Placement/IPlacementArea.cs +++ b/Assets/Scripts/TowerDefense/Towers/Placement/IPlacementArea.cs @@ -3,145 +3,146 @@ 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); + } + } } \ No newline at end of file diff --git a/Assets/Scripts/TowerDefense/Towers/Placement/SingleTowerPlacementArea.cs b/Assets/Scripts/TowerDefense/Towers/Placement/SingleTowerPlacementArea.cs index 55030f5..231fbf5 100644 --- a/Assets/Scripts/TowerDefense/Towers/Placement/SingleTowerPlacementArea.cs +++ b/Assets/Scripts/TowerDefense/Towers/Placement/SingleTowerPlacementArea.cs @@ -76,7 +76,7 @@ /// </summary> /// <param name="x"></param> /// <returns></returns> - public BulletUICtl GetBulletUICtl(int x) + public BulletUICtl GetBulletUICtl(int x, int y) { return null; } @@ -87,7 +87,7 @@ /// </summary> /// <param name="x"></param> /// <returns></returns> - public EnergyUICtl GetEnergyUICtl(int x) + public EnergyUICtl GetEnergyUICtl(int x, int y) { return null; } diff --git a/Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGrid.cs b/Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGrid.cs index 3e75b17..a9a7c87 100644 --- a/Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGrid.cs +++ b/Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGrid.cs @@ -176,7 +176,7 @@ /// </summary> /// <param name="x"></param> /// <returns></returns> - public BulletUICtl GetBulletUICtl(int x) + public BulletUICtl GetBulletUICtl(int x, int y) { return this.arrTowerBulletUi[x]; } @@ -186,7 +186,7 @@ /// </summary> /// <param name="x"></param> /// <returns></returns> - public EnergyUICtl GetEnergyUICtl(int x) + public EnergyUICtl GetEnergyUICtl(int x, int y) { return this.arrTowerEnergyUi[x]; } @@ -768,7 +768,7 @@ img.transform.SetAsFirstSibling(); EnergyUICtl euc = img.GetComponent<EnergyUICtl>(); arrTowerEnergyUi[x] = euc; - euc.gameObject.SetActive(false); + // euc.gameObject.SetActive(false); } return; diff --git a/Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGridEndless.cs b/Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGridEndless.cs index 2376cf0..c2fed45 100644 --- a/Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGridEndless.cs +++ b/Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGridEndless.cs @@ -106,6 +106,26 @@ 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> @@ -147,9 +167,9 @@ /// </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> @@ -157,9 +177,9 @@ /// </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]; } @@ -618,12 +638,19 @@ 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"); @@ -631,7 +658,7 @@ 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; @@ -639,6 +666,35 @@ 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); } } } diff --git a/Assets/Scripts/TowerDefense/Towers/Tower.cs b/Assets/Scripts/TowerDefense/Towers/Tower.cs index 3709139..2c836dd 100644 --- a/Assets/Scripts/TowerDefense/Towers/Tower.cs +++ b/Assets/Scripts/TowerDefense/Towers/Tower.cs @@ -140,7 +140,7 @@ { if (!materialTowerAttackSelf) return; - if( opponentSide) + if (opponentSide) { if (attack && (this.curActionState != 2)) { @@ -150,7 +150,7 @@ if ((!attack) && (this.curActionState != 1)) { - currentTowerLevel.SetTowerMonsterMat( materialTowerWaitOppo ); + currentTowerLevel.SetTowerMonsterMat(materialTowerWaitOppo); this.curActionState = 1; } } @@ -224,9 +224,8 @@ protected void OnTowerUICtrl() { - // // 根据是否是子弹塔防来决定是否显示相应的界面 - BulletUICtl buc = this.placementArea.GetBulletUICtl(gridPosition.x); + BulletUICtl buc = this.placementArea.GetBulletUICtl(gridPosition.x, gridPosition.y); if (buc == null) return; @@ -245,8 +244,8 @@ } // 根据是否是能量充能来决定是否显示相应的界面. - 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); diff --git a/Assets/Scripts/TowerDefense/UI/EndlessTowerGridOpen.cs b/Assets/Scripts/TowerDefense/UI/EndlessTowerGridOpen.cs index 38543b2..7a663da 100644 --- a/Assets/Scripts/TowerDefense/UI/EndlessTowerGridOpen.cs +++ b/Assets/Scripts/TowerDefense/UI/EndlessTowerGridOpen.cs @@ -52,6 +52,14 @@ { 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; diff --git a/Assets/Scripts/TowerDefense/UI/EndlessUIStart.cs b/Assets/Scripts/TowerDefense/UI/EndlessUIStart.cs index ca518d0..ba0b749 100644 --- a/Assets/Scripts/TowerDefense/UI/EndlessUIStart.cs +++ b/Assets/Scripts/TowerDefense/UI/EndlessUIStart.cs @@ -1,4 +1,5 @@ -using Core.Utilities; +using TowerDefense.Towers; +using Core.Utilities; using System; using TMPro; using UnityEngine; @@ -6,6 +7,7 @@ using MoreMountains.NiceVibrations; using TowerDefense.Level; using KTGMGemClient; +using TowerDefense.UI.HUD; /// <summary> /// 无尽模式用自己的EndlessUIStart @@ -63,25 +65,89 @@ //查询是否已经做过了新手引导 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() + { } @@ -149,66 +215,85 @@ 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(); } diff --git a/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs b/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs index 6644d77..0dfc835 100644 --- a/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs +++ b/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs @@ -14,6 +14,7 @@ using UnityEngine.EventSystems; using UnityEngine.UI; using TowerDefense.Nodes; +using TowerDefense.Affectors; namespace TowerDefense.UI.HUD { @@ -284,6 +285,18 @@ 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) @@ -801,6 +814,25 @@ 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: diff --git a/Assets/Scripts/TowerDefense/UI/HUD/EndlessRandomTower.cs b/Assets/Scripts/TowerDefense/UI/HUD/EndlessRandomTower.cs index 35e5645..428c776 100644 --- a/Assets/Scripts/TowerDefense/UI/HUD/EndlessRandomTower.cs +++ b/Assets/Scripts/TowerDefense/UI/HUD/EndlessRandomTower.cs @@ -282,6 +282,8 @@ /// </summary> public void onClick() { + if (GameConfig.IsNewbie && !GameConfig.CanBuyNewTower) return; + // 还没到技能时间,忽略掉技能宝石 Tower newTower = GetRandomTower(EndlessUIStart.instance.GameStartTime <= SKILL_TOWER_TIME); @@ -295,7 +297,7 @@ /// 随机找一个空白位置放置塔防 /// </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; @@ -303,9 +305,9 @@ 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> diff --git a/Assets/StreamingAssets/Table/battle.json b/Assets/StreamingAssets/Table/battle.json index a521429..f1ee002 100644 --- a/Assets/StreamingAssets/Table/battle.json +++ b/Assets/StreamingAssets/Table/battle.json @@ -1 +1 @@ -[[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,[],"","工会创建最小等级"]] \ No newline at end of file +[[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,[],"","工会创建最小等级"]] \ No newline at end of file diff --git a/Assets/StreamingAssets/Table/donaterule.json b/Assets/StreamingAssets/Table/donaterule.json new file mode 100644 index 0000000..b5b7a05 --- /dev/null +++ b/Assets/StreamingAssets/Table/donaterule.json @@ -0,0 +1 @@ +[[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"]]] \ No newline at end of file diff --git a/Assets/StreamingAssets/Table/donaterule.json.meta b/Assets/StreamingAssets/Table/donaterule.json.meta new file mode 100644 index 0000000..a3de763 --- /dev/null +++ b/Assets/StreamingAssets/Table/donaterule.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 92ca1981883b916439a7239e6e562e5c +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/StreamingAssets/Table/endless_teachport.json b/Assets/StreamingAssets/Table/endless_teachport.json new file mode 100644 index 0000000..1cf3390 --- /dev/null +++ b/Assets/StreamingAssets/Table/endless_teachport.json @@ -0,0 +1 @@ +[[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]] \ No newline at end of file diff --git a/Assets/StreamingAssets/Table/endless_teachport.json.meta b/Assets/StreamingAssets/Table/endless_teachport.json.meta new file mode 100644 index 0000000..dc23311 --- /dev/null +++ b/Assets/StreamingAssets/Table/endless_teachport.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 557946068ebd0464e88cf9958a2485d9 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: -- Gitblit v1.9.1