/// <summary> /// 显示npc主界面 /// </summary> private void ShowMainNpcView() { mainNPCView.gameObject.SetActive(true); int randomSeed = Random.Range(0, npc.regularGreetings.Count); HLHDialog greeting = npc.regularGreetings[randomSeed]; dialogText.text = greeting.dialogContent; }
// 初始化npc界面 public void SetUpNPCView(HLHNPC npc) { this.npc = npc; npcName.text = npc.npcName; // 随机npc的问候语序号 int randomSeed = Random.Range(0, npc.regularGreetings.Count); // 获取npc的问候语 HLHDialog greeting = npc.regularGreetings[randomSeed]; dialogText.text = greeting.dialogContent; // npc交互主界面上的选项卡先全都放入缓存池 choiceButtonPool.AddChildInstancesToPool(choiceButtonContainer); // 有交谈功能的话添加一个交谈选项卡 if (npc.isChatTriggered) { AddChoice("交谈", SetUpDialogPlane); } // 有交易功能的话添加一个交易选项卡 if (npc.isTradeTriggered) { AddChoice("交易", SetUpTrade); } // 有传送功能的话添加一个传送选项卡 if (npc.isTransportTriggered) { AddChoice("传送", SetUpTransportLevelSelectView); } // 有学习技能功能的话添加一个学习技能选项卡 if (npc.isLearnSkillTriggered) { AddChoice("学习技能", SetupSkillLearningPlane); } // 有镶嵌宝石功能的话添加一个镶嵌宝石选项卡 if (npc.isAddGemStoneTriggered) { AddChoice("镶嵌宝石", SetUpSpecialOperation); } // 添加离开选项卡 AddChoice("离开", QuitNPCPlane); // 显示探索场景顶部遮罩【由于npc画布高于探索画布,且正常显示范围在顶部bar以下,所以只在npc画布上设置遮罩会导致探索界面中顶部有部分区域是高亮的】 ExploreManager.Instance.expUICtr.ShowTopBarMask(); GetComponent <Canvas>().enabled = true; mainNPCView.gameObject.SetActive(true); }
private void DrawGreeting(HLHDialog dialog) { dialog.dialogId = 0; EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("\t\t\t\t\t", new GUILayoutOption[] { GUILayout.Height(20), GUILayout.Width(20) }); EditorGUILayout.BeginVertical(); EditorGUILayout.LabelField("对话ID", dialog.dialogId.ToString(), shortLayouts); dialog.dialogContent = EditorGUILayout.TextField("对话内容", dialog.dialogContent, longLayouts); EditorGUILayout.EndVertical(); EditorGUILayout.EndHorizontal(); EditorGUILayout.Separator(); EditorGUILayout.LabelField("================================================================", seperatorLayouts); }
public void NextDialog() { if (dialogHasFinished) { return; } int nextDialogId = ++currentDialogId; if (nextDialogId < dialogGroup.dialogs.Count) { HLHDialog dialog = dialogGroup.dialogs[nextDialogId]; dialogText.text = dialog.dialogContent; return; } if (dialogGroup.isRewardTriggered) { HLHNPCReward reward = dialogGroup.reward; switch (reward.rewardType) { case HLHRewardType.Gold: int goldReward = reward.rewardValue; Player.mainPlayer.totalGold += goldReward; tintHUD.SetUpGoldTintHUD(goldReward); break; case HLHRewardType.Item: Item rewardItem = Item.NewItemWith(reward.rewardValue, reward.attachValue); if (rewardItem.itemType == ItemType.Equipment) { Equipment equipment = rewardItem as Equipment; if (equipment.defaultQuality.Equals(EquipmentDefaultQuality.Random)) { equipment.ResetPropertiesByQuality(EquipmentQuality.Gray); } } ExploreManager.Instance.newMapGenerator.SetUpRewardInMap(rewardItem, ExploreManager.Instance.battlePlayerCtr.transform.position); if (!Player.mainPlayer.CheckBagFull(rewardItem)) { Player.mainPlayer.AddItem(rewardItem); simpleItemDetail.SetupSimpleItemDetail(rewardItem); ExploreManager.Instance.expUICtr.UpdateBottomBar(); } break; } if (!dialogGroup.isMultiTimes) { List <HLHNPCChatRecord> chatRecords = GameManager.Instance.gameDataCenter.chatRecords; HLHNPCChatRecord chatRecord = new HLHNPCChatRecord(npc.npcId, dialogGroup.dialogGroupId); chatRecords.Add(chatRecord); //GameManager.Instance.persistDataManager.SaveCompletePlayerData(); } dialogHasFinished = true; QuitDialogPlane(); return; } //if(Player.mainPlayer.currentLevelIndex == CommonData.maxLevel && dialogGroup.triggerLevel == CommonData.maxLevel){ // this.gameObject.SetActive(false); // GameManager.Instance.UIManager.SetUpCanvasWith(CommonData.shareCanvasBundleName, "ShareCanvas", delegate // { // TransformManager.FindTransform("ShareCanvas").GetComponent<ShareViewController>().SetUpShareView(ShareType.WeChat, null, null, null); // }); // return; //} QuitDialogPlane(); }
private void DrawDialogs(HLHDialogGroup dg, bool[,] dgFoldoutInfoArray) { if (dg.dialogs == null) { dg.dialogs = new List <HLHDialog> (); } EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("***编辑对话数组", new GUILayoutOption[] { GUILayout.Height(20), GUILayout.Width(120) }); EditorGUILayout.BeginVertical(); //dg.isMultiOff = EditorGUILayout.Toggle ("是否可以反复触发", dg.isMultiOff, middleLayouts); EditorGUILayout.BeginHorizontal(); bool createNewDialog = GUILayout.Button("添加新的对话", buttonLayouts); bool removeLastDialog = GUILayout.Button("删除尾部对话", buttonLayouts); bool unfoldAll = GUILayout.Button("全部展开", buttonLayouts); bool foldAll = GUILayout.Button("全部合上", buttonLayouts); EditorGUILayout.EndHorizontal(); if (unfoldAll) { for (int i = 0; i < dgFoldoutInfoArray.GetLength(1); i++) { dgFoldoutInfoArray[dg.dialogGroupId, i] = true; } } if (foldAll) { for (int i = 0; i < dgFoldoutInfoArray.GetLength(1); i++) { dgFoldoutInfoArray[dg.dialogGroupId, i] = false; } } if (createNewDialog) { HLHDialog d = new HLHDialog(); dg.dialogs.Add(d); } if (removeLastDialog && dg.dialogs.Count > 0) { dg.dialogs.RemoveAt(dg.dialogs.Count - 1); } for (int j = 0; j < dg.dialogs.Count; j++) { HLHDialog d = dg.dialogs [j]; d.dialogId = j; string foldContent = string.Format("编辑对话 \t\t***对话ID: {0}\t\t\t***对话内容: {1}", d.dialogId, d.dialogContent); dgFoldoutInfoArray [dg.dialogGroupId, j] = EditorGUILayout.Foldout(dgFoldoutInfoArray [dg.dialogGroupId, j], foldContent); if (dgFoldoutInfoArray [dg.dialogGroupId, j]) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("\t\t\t\t\t", new GUILayoutOption[] { GUILayout.Height(20), GUILayout.Width(20) }); EditorGUILayout.BeginVertical(); EditorGUILayout.LabelField("对话ID", d.dialogId.ToString(), shortLayouts); d.dialogContent = EditorGUILayout.TextField("对话内容", d.dialogContent, longLayouts); if (d.choiceIds == null) { d.choiceIds = new List <int> (); } EditorGUILayout.EndVertical(); EditorGUILayout.EndHorizontal(); } } EditorGUILayout.EndVertical(); EditorGUILayout.EndHorizontal(); EditorGUILayout.Separator(); EditorGUILayout.LabelField("================================================================", seperatorLayouts); }
private void DrawRegularGreetings() { EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("***编辑寒暄", new GUILayoutOption[] { GUILayout.Height(20), GUILayout.Width(120) }); EditorGUILayout.BeginVertical(); EditorGUILayout.BeginHorizontal(); bool createNewDialog = GUILayout.Button("添加新的寒暄", buttonLayouts); bool removeLastDialog = GUILayout.Button("删除尾部寒暄", buttonLayouts); bool unfoldAll = GUILayout.Button("全部展开", buttonLayouts); bool foldAll = GUILayout.Button("全部合上", buttonLayouts); EditorGUILayout.EndHorizontal(); if (createNewDialog) { HLHDialog dg = new HLHDialog(); //dg.dialogs = new List<HLHDialog> (); //dg.choices = new List<HLHChoice> (); npc.regularGreetings.Add(dg); } if (removeLastDialog && npc.regularGreetings.Count > 0) { npc.regularGreetings.RemoveAt(npc.regularGreetings.Count - 1); } if (unfoldAll) { for (int i = 0; i < regularGreetingDialogFoldOutInfoArray.Length; i++) { regularGreetingDialogFoldOutInfoArray[i] = true; } } if (foldAll) { for (int i = 0; i < regularGreetingDialogFoldOutInfoArray.Length; i++) { regularGreetingDialogFoldOutInfoArray[i] = false; } } for (int i = 0; i < npc.regularGreetings.Count; i++) { regularGreetingDialogFoldOutInfoArray [i] = EditorGUILayout.Foldout(regularGreetingDialogFoldOutInfoArray [i], "npc寒暄:" + npc.regularGreetings[i].dialogContent); if (regularGreetingDialogFoldOutInfoArray [i]) { HLHDialog dialog = npc.regularGreetings [i]; dialog.dialogId = i; DrawGreeting(dialog); } } EditorGUILayout.EndVertical(); EditorGUILayout.EndHorizontal(); EditorGUILayout.Separator(); EditorGUILayout.Separator(); EditorGUILayout.LabelField("================================================================", seperatorLayouts); // EditorGUILayout.BeginHorizontal (); // EditorGUILayout.LabelField ("***编辑常规寒暄对话", new GUILayoutOption[] { // GUILayout.Height (20), // GUILayout.Width (120) // }); // EditorGUILayout.BeginVertical (); // // if (npc.regularGreeting == null) { // npc.regularGreeting = new HLHDialogGroup (); // } // // HLHDialogGroup dg = npc.regularGreeting; // // dg.dialogGroupId = -1; // // dg.isTaskTriggeredDg = false; // // dg.triggerLevel = -1; // // DrawDialogs (dg,regularGreetingDialogFoldOutInfoArray); // // DrawChoices (dg,regularGreetingChoiceFoldOutInfoArray); // // // EditorGUILayout.EndVertical (); // EditorGUILayout.EndHorizontal (); // // EditorGUILayout.Separator (); // EditorGUILayout.LabelField ("================================================================", seperatorLayouts); }