public virtual string Title() { var title = "Partial: "; if (Calls.Any()) { title += Calls.Select(x => x.Description).Join(", "); return(title); } if (Tags.Contains("ActionlessView")) { var views = Output.Media().Select(x => x.Writer).OfType <IViewWriter>().Select(x => Description.For(x.View).Title); return("View(s): " + views.Join("")); } if (HasOutput() && Output.Media().Any()) { return(Output.Media().Select(x => Description.For(x.Writer).Title).Join(", ")); } if (InputType() != null) { return("Handler for " + InputType().FullName); } return("BehaviorChain " + UniqueId); }
public override string ToString() { if (Calls.Any()) { return(Calls.Select(x => x.Description).Join(", ")); } return(this.Select(x => x.Description).Join(" --> ")); }
public override string ToString() { if (Route != null) { var description = Route.Pattern; if (Route.AllowedHttpMethods.Any()) { description += " (" + Route.AllowedHttpMethods.Join(", ") + ")"; } return description; } if (Calls.Any()) { return Calls.Select(x => x.Description).Join(", "); } return this.Select(x => x.Description).Join(" --> "); }
/// <summary> /// Проверка можно ли в ячейку переместится юниту /// </summary> /// <param name="x">Координата х</param> /// <param name="y">Координата у</param> /// <param name="return">можно ли в ячейку ходить</param> public bool AllowMoveUnit(IUnit unit, int x, int y) { ///Ищем, есть ли такая ячейка if (Calls.Any(p => p.IndexLeft == x && p.IndexTop == y)) { ///Берем ячейку var call = Calls.Single(p => p.IndexLeft == x && p.IndexTop == y); ///Проверяем или ячейка не занята и не используется(тоесть в нее кто то ходит но еще не походил) if (!call.Using && !call.Used && !call.Block) { return(true); } else if (call.Used && !call.Block && !call.Using && unit.Invisibility) { if (call.IUnits.Any(p => p.GameObject.EnumCallType == EnumCallType.UnitBlock)) { return(true); } } } return(false); }
public bool IsAsynchronous() { return Calls.Any(x => x.IsAsync); }
public void Calling(object sender, ICallEventArgs e) { if ((Subscribers.ContainsKey(e.TargetNumber) && e.TargetNumber != e.Number) || e is EventOfEndCallArgs) { CallInfo callInfo = null; Port targetPort; Port port; int number = 0; int targetNumber = 0; if (e is EventOfEndCallArgs) { var callListFirst = Calls.First(x => x.Id.Equals(e.Id)); if (callListFirst.Number == e.Number) { targetPort = Subscribers[callListFirst.TargetNumber].Item1; port = Subscribers[callListFirst.Number].Item1; number = callListFirst.Number; targetNumber = callListFirst.TargetNumber; } else { port = Subscribers[callListFirst.TargetNumber].Item1; targetPort = Subscribers[callListFirst.Number].Item1; targetNumber = callListFirst.Number; number = callListFirst.TargetNumber; } } else { targetPort = Subscribers[e.TargetNumber].Item1; port = Subscribers[e.Number].Item1; targetNumber = e.TargetNumber; number = e.Number; } if (targetPort.State == States.StateOfPort.Connect && port.State == StateOfPort.Connect) { var portContract = Subscribers[number]; var targetPortContract = Subscribers[targetNumber]; if (e is EventOfAnswerArgs) { var answerArgs = (EventOfAnswerArgs)e; if (!answerArgs.Id.Equals(Guid.Empty) && Calls.Any(x => x.Id.Equals(answerArgs.Id))) { callInfo = Calls.First(x => x.Id.Equals(answerArgs.Id)); } if (callInfo != null) { targetPort.AnswerCall(answerArgs.Number, answerArgs.TargetNumber, answerArgs.StateOfCall, callInfo.Id); } else { targetPort.AnswerCall(answerArgs.Number, answerArgs.TargetNumber, answerArgs.StateOfCall, callInfo.Id); } } if (e is EventOfCallArgs) { if (portContract.Item2.Subscriber.Account > portContract.Item2.Tariff.PricePerMinute) { var callArgs = (EventOfCallArgs)e; if (callArgs.Id.Equals(Guid.Empty)) { callInfo = new CallInfo( callArgs.Number, callArgs.TargetNumber, DateTime.Now); Calls.Add(callInfo); } if (!callArgs.Id.Equals(Guid.Empty) && Calls.Any(x => x.Id.Equals(callArgs.Id))) { callInfo = Calls.First(x => x.Id.Equals(callArgs.Id)); } if (callInfo != null) { targetPort.IncomingCall(callArgs.Number, callArgs.TargetNumber, callInfo.Id); } else { targetPort.IncomingCall(callArgs.Number, callArgs.TargetNumber, callInfo.Id); } } else { Console.WriteLine("There is not enough money on the terminal {0}!", e.Number); } } if (e is EventOfEndCallArgs) { var args = (EventOfEndCallArgs)e; callInfo = Calls.First(x => x.Id.Equals(args.Id)); callInfo.EndOfCall = DateTime.Now; var sumOfCall = portContract.Item2.Tariff.PricePerMinute * TimeSpan.FromTicks((callInfo.EndOfCall - callInfo.StartOfCall).Ticks).TotalMinutes; callInfo.CostOfCall = (int)sumOfCall; targetPortContract.Item2.Subscriber.WithdrawMoney(callInfo.CostOfCall); targetPort.AnswerCall(args.Number, args.TargetNumber, StateOfCall.Reject, callInfo.Id); } } } else if (!Subscribers.ContainsKey(e.TargetNumber)) { Console.WriteLine("Trying to call a non-existent number".ToUpper()); } else { Console.WriteLine("Trying to call your own number".ToUpper()); } }
public bool ContainsCall(Func <ActionCall, bool> filter) { return(Calls.Any(filter)); }
public void Login() { // Change the polling to 10s from 20s in 1.4.3.180 if (Settings.Get("NewPolling_1.4.3", false) == false) { Settings.Set("UpdateFreq", 10); Settings.Set("NewPolling_1.4.3", true); } new Thread(() => { retry: try { account.Login(); try { account.ContactsManager.OnContactsUpdated += () => { if (OnContactsUpdated != null) { OnContactsUpdated(); } }; } catch (Exception ex) { Trace.WriteLine("Error in contacts assoc " + ex); } account.Ready += () => { foreach (var m in account.VoiceMailFeed.Messages.ToArray().Reverse()) { if (Voicemails.Any(vm => vm.Message == m)) { continue; } Voicemails.Add( new VoiceMessage(account.ContactForNumber(m.Number), (GoogleVoice.VoiceMailMessage)m)); } foreach (var m in account.PlacedCalls.Messages.ToArray()) { if (Calls.Any(cm => cm.Message == m)) { continue; } Calls.Add( new CallMessage(account.ContactForNumber(m.Number), (GoogleVoice.Message)m)); } foreach (var m in account.MissedCalls.Messages.ToArray()) { if (Calls.Any(cm => cm.Message == m)) { continue; } Calls.Add( new CallMessage(account.ContactForNumber(m.Number), (GoogleVoice.Message)m)); } foreach (var m in account.ReceivedCalls.Messages.ToArray()) { if (Calls.Any(cm => cm.Message == m)) { continue; } Calls.Add( new CallMessage(account.ContactForNumber(m.Number), (GoogleVoice.Message)m)); } Calls.Sort(new MessageComparer <CallMessage>()); Voicemails.Sort(new MessageComparer <VoiceMessage>()); }; account.OnMessage += (m) => { if (m.Class == Message.MessageType.Voicemail) { Trace.Write("Adding vm: " + m); Voicemails.Insert(0, new VoiceMessage(account.ContactForNumber(m.Number), (GoogleVoice.VoiceMailMessage)m)); } if (m.Class == Message.MessageType.Missed || m.Class == Message.MessageType.Placed || m.Class == Message.MessageType.Received) { Trace.Write("Adding call: " + m); Calls.Add( new CallMessage(account.ContactForNumber(m.Number), (GoogleVoice.Message)m)); Calls.Sort(new MessageComparer <CallMessage>()); } }; new Thread(() => { while (true) { int updateFreq = Settings.Get("UpdateFreq", 10); if (updateFreq == -1) { return; } if (updateFreq < 5) { updateFreq = 5; } Thread.Sleep(1000 * updateFreq); account.UpdateAsync(); } }).Start(); if (OnLoginSuccess != null) { OnLoginSuccess(); } } catch (GVLoginException ex) { Trace.WriteLine("Login Failed: " + ex); // bad password if (OnLoginFailure != null) { OnLoginFailure(); } } catch (Exception ex) { Trace.WriteLine("Login Failed: " + ex); if (OnLoginMessage != null) { OnLoginMessage("No Internet Connection, retrying in 10 seconds."); } Thread.Sleep(1000 * 10); goto retry; } }).Start(); }