public static void Chance(Player pPlayer, eActionType pChance, object[] pObject) { WriteLineInPlayerColor("Spieler {0} löst Event {1} mit {2} aus", pPlayer, pPlayer, pChance.ToString(), string.Join(", ", pObject)); }
/// <summary> /// 设置(添加)技能片段(不会设置普攻!) /// </summary> /// <param name="skill">要设置的技能</param> private void SetSkillParameter(Skill skill) { //忽略普攻,因为普攻已经设置过了 if (skill.SkillId == 1) { InitializeAction(skill); return; } if (MainManager.Instance.SkillDataDic.TryGetValue(skill.SkillId, out SkillData skillData)) { //如果是UB,设置UB音效 skill.skillAreaWidth = skillData.areawidth == 0 ? Owner.SearchAreaWidth : skillData.areawidth; for (int i = 0; i < skillData.skillactions.Length; i++) { int actionid = skillData.skillactions[i]; if (actionid == 0) { break; } SkillAction actionData = MainManager.Instance.SkillActionDic[actionid]; //构造与actionType对应的派生类 ActionParameter action; eActionType actionType = (eActionType)actionData.type; switch (actionType) { case eActionType.ATTACK: action = new AttackAction(); break; default: Debug.LogError("技能种类" + actionType.ToString() + "鸽了!"); action = new ActionParameter(); break; } //ActionParameter action = new ActionParameter(); action.ActionType = actionType; action.TargetSort = (PirorityPattern)actionData.target_type; action.TargetNth = actionData.target_number; action.TargetNum = actionData.target_count; action.TargetWidth = actionData.target_range < 1 ? Owner.SearchAreaWidth : actionData.target_range; action.ActionDetail1 = actionData.details[0]; action.ActionDetail2 = actionData.details[1]; action.ActionDetail3 = actionData.details[2]; action.Value = new Dictionary <int, float>(); for (int j = 0; j < actionData.values.Length; j++) { action.Value.Add(j + 1, actionData.values[j]); } action.MasterData_mine = actionData; //维护actiontype字典 ActionParameterOnPrefab ac_pr = skill.ActionParametersOnPrefab.Find(a => (int)a.ActionType == actionData.type); if (ac_pr == null) { skill.ActionParametersOnPrefab.Add(new ActionParameterOnPrefab { ActionType = (eActionType)actionData.type }); } List <ActionParameterOnPerferbDetail> p = ac_pr.Details.FindAll(a => a.ActionId == actionid); action.ActionExecTimeList = new List <ActionExecTime>(); float weightsum = 0; foreach (ActionParameterOnPerferbDetail a in p) { foreach (ActionExecTime b in a.ExecTimeForPrefab) { action.ActionExecTimeList.Add(b); weightsum += b.Weight; } } List <float> exTimeList = new List <float>(); foreach (ActionExecTime actionExecTime in action.ActionExecTimeList) { exTimeList.Add(actionExecTime.Time); } action.ExecTime = exTimeList.ToArray(); action.ActionWeightSum = weightsum; action.DependActionId = skillData.dependactions[i]; action.ActionId = actionid; action.TargetList = new List <BasePartsData>(); action.ActionChildrenIndexes = new List <int>(); action.TargetAssignment = (eTargetAssignment)actionData.target_assigment; action.Direction = (DirectionType)actionData.target_area; skill.ActionParmeters.Add(action); } skill.CastTime = skillData.casttime; if (MainManager.Instance.SkillNameAndDescribe_cn.TryGetValue(skill.SkillId, out string[] str))
void Chance(Player pPlayer, eActionType pEvent, object[] pObject) { MessageBox.Show(this, $"Spieler {pPlayer} löst Event {pEvent.ToString()} mit {string.Join(", ", pObject)} aus", $"Event Spieler {pPlayer}", MessageBoxButtons.OK, MessageBoxIcon.Information); }