예제 #1
0
 public PDateTime(PDate date, PTime time) : this(PapillonPINVOKE.new_PDateTime__SWIG_2(PDate.getCPtr(date), PTime.getCPtr(time)), true)
 {
     if (PapillonPINVOKE.SWIGPendingException.Pending)
     {
         throw PapillonPINVOKE.SWIGPendingException.Retrieve();
     }
 }
예제 #2
0
 public PTime(PTime other) : this(PapillonPINVOKE.new_PTime__SWIG_5(PTime.getCPtr(other)), true)
 {
     if (PapillonPINVOKE.SWIGPendingException.Pending)
     {
         throw PapillonPINVOKE.SWIGPendingException.Retrieve();
     }
 }
예제 #3
0
 public PPeriod(string _Name)
 {
     Name   = _Name;
     Before = new PTime(Name + "开始前");
     Start  = new PTime(Name + "开始时");
     During = new PTime(Name);
     End    = new PTime(Name + "结束时");
     After  = new PTime(Name + "结束后");
     Next   = new PTime(Name + "的下一个时期");
 }
예제 #4
0
    public int Compare(PTime other)
    {
        int ret = PapillonPINVOKE.PTime_Compare(swigCPtr, PTime.getCPtr(other));

        if (PapillonPINVOKE.SWIGPendingException.Pending)
        {
            throw PapillonPINVOKE.SWIGPendingException.Retrieve();
        }
        return(ret);
    }
예제 #5
0
    public int GetMillisecondsTo(PTime t)
    {
        int ret = PapillonPINVOKE.PTime_GetMillisecondsTo(swigCPtr, PTime.getCPtr(t));

        if (PapillonPINVOKE.SWIGPendingException.Pending)
        {
            throw PapillonPINVOKE.SWIGPendingException.Retrieve();
        }
        return(ret);
    }
예제 #6
0
        //Ticker for Plank CountDown
        void PTimer_Tick(object sender, object e)
        {
            if (PTime > 0)
            {
                PTime--;

                if (PTime > 45)
                {
                    PlankCountdown.Text = ("Timer begins in " + (PTime - 45).ToString());
                }
                else
                {
                    PlankCountdown.Text = (PTime.ToString() + " Seconds Remaining");
                }
            }
            else
            {
                Timer.Stop();
                PTime = 50;
            }
        }
예제 #7
0
    public PTime GetTime()
    {
        PTime ret = new PTime(PapillonPINVOKE.PDateTime_GetTime(swigCPtr), true);

        return(ret);
    }
예제 #8
0
 public Position(float latitute, float lontitute, PTime time)
 {
     this.latitute  = latitute;
     this.lontitute = lontitute;
     this.time      = time;
 }
예제 #9
0
 public VecTime(Vector3 worldPosition, PTime time)
 {
     this.worldPosition = worldPosition;
     this.time          = time;
 }
예제 #10
0
    // 宣布一个时机的到来
    public void CallTime(PTime Time)
    {
        PLogger.Log("时机到来:" + Time.Name);
        if (Time.IsPeroidTime() && EndTurnDirectly)
        {
            PLogger.Log("阶段立刻结束");
            return;
        }
        List <PPlayer>  Sequence = SettleSequence();
        List <PTrigger> ValidTriggerList;
        List <PTrigger> AlreadyTriggerList = new List <PTrigger>();

        foreach (PPlayer Judger in Sequence)
        {
            AlreadyTriggerList.Clear();
            PLogger.Log("开始启动" + (Judger == null ? "null" : Judger.Name) + "的响应");
            while ((ValidTriggerList = TriggerList.FindAll((PTrigger Trigger) => {
                if (Trigger.Time.Equals(Time) && Trigger.Player == Judger && !AlreadyTriggerList.Contains(Trigger) && (Judger == null || Judger.IsAlive))
                {
                    PLogger.Log("    执行判定:" + Trigger.Name);
                    bool Condition = Trigger.Condition(Game);
                    bool AiCondition = Condition && (Judger == null || Judger.IsUser || Trigger.AICondition(Game));
                    return(AiCondition);
                }
                else
                {
                    return(false);
                }
            })).Count > 0)
            {
                PTrigger ChosenTrigger = null;
                if (Judger == null || Judger.IsAI)
                {
                    ChosenTrigger = PMath.Max(ValidTriggerList, (PTrigger Trigger) => Trigger.AIPriority).Key;
                }
                else
                {
                    if (ValidTriggerList.Count == 1 && ValidTriggerList[0].IsLocked)
                    {
                        ChosenTrigger = ValidTriggerList[0];
                    }
                    else
                    {
                        string[] TriggerNames = ValidTriggerList.ConvertAll((PTrigger Trigger) => Trigger.Name + (Trigger.IsLocked ? "(锁定)" : string.Empty)).ToArray();
                        if (ValidTriggerList.TrueForAll((PTrigger Trigger) => !Trigger.IsLocked))
                        {
                            TriggerNames = TriggerNames.Concat(new string[] { "取消" }).ToArray();
                        }
                        int ChosenResult = PNetworkManager.NetworkServer.ChooseManager.Ask(Judger, "选择以下效果发动", TriggerNames);
                        if (ChosenResult < ValidTriggerList.Count)
                        {
                            ChosenTrigger = ValidTriggerList[ChosenResult];
                        }
                    }
                }
                if (ChosenTrigger != null)
                {
                    Game.Logic.StartSettle(new PSettle("于[" + Time.Name + "]触发[" + ChosenTrigger.Name + "]", (PGame Game) => {
                        ChosenTrigger.Effect(Game);
                    }));
                    if (!ChosenTrigger.CanRepeat)
                    {
                        AlreadyTriggerList.Add(ChosenTrigger);
                    }
                    if (Time.IsPeroidTime() && EndTurnDirectly)
                    {
                        PLogger.Log("阶段立刻结束");
                        return;
                    }
                    if (Time.Equals(PTime.EnterDyingTime))
                    {
                        PDyingTag DyingTag = Game.TagManager.FindPeekTag <PDyingTag>(PDyingTag.TagName);
                        if (DyingTag.Player != null && DyingTag.Player.Money > 0)
                        {
                            PLogger.Log("脱离濒死状态");
                            return;
                        }
                    }
                }
                else
                {
                    break;
                }
            }
        }
        PLogger.Log("时机结束:" + Time.Name);
    }
예제 #11
0
 public T CallTime <T>(PTime Time, T OriginalTag) where T : PTag
 {
     Game.TagManager.CreateTag(OriginalTag);
     CallTime(Time);
     return(Game.TagManager.PopTag <T>(OriginalTag.Name));
 }
예제 #12
0
 public PTrigger FindEquipmentTrigger(PTime Time)
 {
     return(MoveInEquipTriggerList.Find((PTrigger Trigger) => Trigger.Time.Equals(Time)));
 }
예제 #13
0
 public PTrigger FindTrigger(PTime Time)
 {
     return(MoveInHandTriggerList.Find((PTrigger Trigger) => Trigger.Time.Equals(Time)));
 }
예제 #14
0
    public static PTime Current()
    {
        PTime ret = new PTime(PapillonPINVOKE.PTime_Current(), true);

        return(ret);
    }
예제 #15
0
 internal static global::System.Runtime.InteropServices.HandleRef getCPtr(PTime obj)
 {
     return((obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr);
 }
예제 #16
0
    public PTime AddMillisecond(int n)
    {
        PTime ret = new PTime(PapillonPINVOKE.PTime_AddMillisecond(swigCPtr, n), true);

        return(ret);
    }