Пример #1
0
 /// <summary>
 /// 测试事件
 /// </summary>
 /// <param name="key"></param>
 public static void CallEvent(int key = 1)
 {
     EventHelper.CallEvent("Debug", key, 10003);
 }
Пример #2
0
        /// <summary>
        /// 结束
        /// </summary>
        /// <param name="EventID"></param>
        /// <param name="TargetActorID"></param>
        public void End(string EventID, int TargetActorID)
        {
            foreach (var i in Effects)
            {
                switch (i.Type)
                {
                case Effect.EffectTarget.Item:
                    if (i.Reduce)
                    {
                        int itemKey = -1;
                        foreach (var item in DateFile.instance.actorItemsDate[i.ValueB == 0 ? DateFile.instance.MianActorID() : TargetActorID])
                        {
                            if (DateFile.instance.GetItemDate(item.Key, 999) == i.ValueA.ToString())
                            {
                                itemKey = item.Key;
                                break;
                            }
                        }
                        if (itemKey != -1)
                        {
                            DateFile.instance.LoseItem(i.ValueB == 0 ? DateFile.instance.MianActorID() : TargetActorID, itemKey, 1, true, loseType: 0);
                        }
                    }
                    else
                    {
                        DateFile.instance.GetItem(i.ValueB == 0 ? DateFile.instance.MianActorID() : TargetActorID, i.ValueA, 1, true, 0);
                    }
                    break;

                case Effect.EffectTarget.Time:
                    UIDate.instance.ChangeTime(false, i.Reduce ? i.ValueA : -i.ValueA);
                    break;

                case Effect.EffectTarget.MoveToAround:
                    ActorMoveToAround(i.ValueA == 0 ? DateFile.instance.mianActorId : TargetActorID);
                    break;

                case Effect.EffectTarget.Favor:
                    DateFile.instance.ChangeFavor(TargetActorID, i.Reduce ? -i.ValueA : i.ValueA);
                    break;

                case Effect.EffectTarget.TaiwuResource:
                case Effect.EffectTarget.TargetResource:
                    var iActorID = i.Type == Effect.EffectTarget.TaiwuResource ? DateFile.instance.mianActorId : TargetActorID;
                    UIDate.instance.ChangeResource(iActorID, i.ValueA, i.Reduce ? -i.ValueB : i.ValueB);
                    break;

                default:
                    break;
                }
            }

            int id     = 0;
            var isNum  = int.TryParse(ToID, out id);
            var result = CallEnd?.Call(EventID, TargetActorID);

            if (isNum && id >= 0)
            {
                if (id == 0)
                {
                    ui_MessageWindow.Instance.Hide();
                }
                else if (id > 0)
                {
                    EventHelper.CallEvent(id, TargetActorID);
                }
                return;
            }
            else if (!isNum)
            {
                if (string.IsNullOrWhiteSpace(ToID))
                {
                    ui_MessageWindow.Instance.Hide();
                }
                else
                {
                    EventHelper.CallEvent(ToID, TargetActorID);
                }
                return;
            }

            var returnType = CallEnd?.GetMethod().ReturnType;

            if (returnType == null || returnType == typeof(void))
            {
                ui_MessageWindow.Instance.Hide();
            }
            else if (returnType == typeof(string) && !string.IsNullOrWhiteSpace((string)result))
            {
                if (int.TryParse((string)result, out id))
                {
                    if (id > 0)
                    {
                        EventHelper.CallEvent(id, TargetActorID);
                    }
                    else if (id > -100)
                    {
                        ui_MessageWindow.Instance.Hide();
                    }
                }
                else
                {
                    EventHelper.CallEvent((string)result, TargetActorID);
                }
            }
            else if (returnType == typeof(int))
            {
                id = (int)result;
                if (id > 0)
                {
                    EventHelper.CallEvent(id, TargetActorID);
                }
                else if (id > -100)
                {
                    ui_MessageWindow.Instance.Hide();
                }
            }
        }