Clase encargada del sistema de target del Personaje Principal
Inheritance: MonoBehaviour
Exemplo n.º 1
0
 // Use this for initialization
 void Start()
 {
     se = this.GetComponent<SelectTarget>();
     distMinAtaque = 5;
     attackTimer = 0;
     CD = 2.0f;
 }
Exemplo n.º 2
0
        public DialogResult SelectTarget(FormStartPosition startPosition = FormStartPosition.CenterParent)
        {
            SelectTarget SelectTarget = new SelectTarget(PS4);

            SelectTarget.StartPosition = startPosition;
            DialogResult Result = SelectTarget.ShowDialog();

            if (Result == DialogResult.OK)
            {
                SelectTarget.SelectCurrentTarget();
            }

            SelectTarget.Close();
            return(Result);
        }
Exemplo n.º 3
0
    /// <summary>
    /// Sent when a mouse button (or touch event) gets pressed over the collider (with ‘true’)
    /// and when it gets released (with ‘false’, sent to the same collider even if it’s released elsewhere).
    /// </summary>
    /// <param name="isDown"></param>
    void OnPress(bool isDown)
    {
        if (isDown)
        {
            var        ray = Camera.main.ScreenPointToRay(new Vector3(UICamera.lastTouchPosition.x, UICamera.lastTouchPosition.y));
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit))
            {
                if (SelectTarget.Select(hit.collider.gameObject) == false)
                {
                    // 没有选中目标,就移动
                    if (hit.collider.gameObject.GetComponent <MapNav>())
                    {
                    }
                }
            }
        }

        pressing = isDown;
    }
Exemplo n.º 4
0
 // Token: 0x06001F1E RID: 7966 RVA: 0x0009E408 File Offset: 0x0009C608
 public static ConfigDataBehavior.ParamData InitParamData(SelectTarget t, string param)
 {
     ConfigDataBehavior.ParamData paramData = new ConfigDataBehavior.ParamData();
     if (t == SelectTarget.SelectTarget_PositionNearest)
     {
         if (!ConfigDataBehavior.TryParsePositionList(param, out paramData._GridPositions))
         {
             return(null);
         }
     }
     else if (t == SelectTarget.SelectTarget_MemberHeroID || t == SelectTarget.SelectTarget_MemberIndex || t == SelectTarget.SelectTarget_EnemyWithBuffN)
     {
         if (!int.TryParse(param, out paramData._int))
         {
             return(null);
         }
     }
     else if (t == SelectTarget.SelectTarget_EnemyIDFilter)
     {
         string[] array = param.Split(new char[]
         {
             '/'
         });
         if (array == null || array.Length == 0)
         {
             return(null);
         }
         if (array.Length > 0)
         {
             ConfigDataBehavior.TryParseIntArray(array[0], out paramData._ints);
         }
         if (array.Length > 1)
         {
             ConfigDataBehavior.TryParseIntArray(array[1], out paramData._ints2);
         }
     }
     return(paramData);
 }
Exemplo n.º 5
0
 public void OnSelectTargetTrigger(Mingming target, Card card)
 {
     SelectTarget?.Invoke(target, card);
 }
Exemplo n.º 6
0
 public void RegisterCallback(TTarget type, SelectTarget callback)
 {
     selectTargetCallbacks[type] = callback;
 }
Exemplo n.º 7
0
    /// <summary>
    /// 释放给定的技能
    /// </summary>
    /// <param name="skillID"></param>
    /// <returns>是否成功释放技能</returns>
    public static bool Fire(uint skillID)
    {
        var skill = SkillManager.Instance.GetSkill(skillID);

        if (skill == null)
        {
            return(false);
        }
        // CD检测
        if (SkillManager.Instance.CoolDown(skillID) > 0)
        {
            return(false);
        }
        //主角检查
        if (MainRole.Instance == null)
        {
            return(false);
        }

        // 如果有选择目标,则检查目标距离,超出范围就跑向目标后再攻击
        GameObject goSelect = null;

        if (SelectTarget.Selected != null)
        {
            var go = SelectTarget.Selected.GetGameObject();
            if (go != null && go.GetComponent <HpProtocol>().hp > 0)
            {
                goSelect = go;
                if (Vector3.Distance(goSelect.transform.position, MainRole.Instance.transform.position) > skill.radius)
                {
                    MainRole.Instance.runToTarget.Target(goSelect, skill.radius, () =>
                    {
                        SkillManager.Fire(skillID);
                    });
                    return(false);
                }
            }
        }

        // 收集目标
        List <GameObject> listSelect = new List <GameObject>();

        listSelect = SkillManager.GetMultiTargets(skill.radius, skill.maxTarget, goSelect);
        if (listSelect.Count == 0)
        {
            // 找到屏幕内最近的目标,自动跑过去
            GameObject goNearest = SkillManager.GetNearestTarget();
            if (goNearest != null)
            {
                MainRole.Instance.runToTarget.Target(goNearest, skill.radius, () =>
                {
                    SkillManager.Fire(skillID);
                });
                return(false);
            }
            else
            {
                Debug.Log("没有攻击目标!");
            }

            return(false);
        }

        // 如果第一个目标不是当前目标,则发送选择目标消息
        if (goSelect == null)
        {
            SelectTarget.Select(listSelect[0]);
        }

        Debug.Log("FireSkill: " + skill);

        // 发送攻击请求
        var cmd = new RequestUseSkillUserCmd_C()
        {
            skillid = skill.id
        };

        foreach (var go in listSelect)
        {
            cmd.hurts.Add(go.GetComponent <Entry>().uid);
        }
        SkillManager.Instance.lastFireTime[skillID] = Time.realtimeSinceStartup;         // 记录施法时戳
        WebSocketClient.Instance.Send(cmd);
        return(true);
    }