Beispiel #1
0
 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));
 }
Beispiel #2
0
        /// <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))
Beispiel #3
0
 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);
 }