public EntityDefinitionLoadPanel(Loadable entDef) { InitializeComponent(); // Initialise this.entDef = (EntityDefinition)entDef; DrawTimingsPanel(); // Add movement panel if (this.entDef.MovementSystem is object) { Panels.Children.Add(new MovementPanel(this.entDef)); } // Add labels for templates foreach (var template in this.entDef.Templates) { Panels.Children.Add(new TemplatePanel(this.entDef, template)); } // Add a bullet master template as needed if (this.entDef.Components.ContainsKey("+bulletMaster")) { Panels.Children.Add(new BulletMasterPanel(this.entDef)); } }
//todo - если соединение быстрое то загрузка происходит так быстро что элементы управления мигают //черная магия будь бдителен все обработчики живут дольше чем форма и могут быть вызваны после того как форма была закрыта //или с новой копией этой формы если человек ушел а затем вернулся public virtual IEnumerable <IResult> Download(Loadable loadable) { loadable.IsDownloading = true; loadable.Session = Session; loadable.Entry = Session.GetSessionImplementation().PersistenceContext.GetEntry(loadable); var result = ObserveLoad(loadable); var disposable = new CompositeDisposable(3) { Disposable.Create(() => Bus.SendMessage(loadable, "completed")) }; var progress = result.Item1 .ObserveOn(UiScheduler) .Subscribe(p => loadable.Progress = p.EventArgs.ProgressPercentage / 100d); disposable.Add(progress); Log.Debug($"Загрузка {loadable}"); var download = result.Item2 .ObserveOn(Scheduler) .SelectMany(s => Extract(s, urn => loadable.GetLocalFilename(urn, Shell.Config)).ToObservable()) .ObserveOn(UiScheduler) .Subscribe(name => { Log.Debug($"Успешно загружен {loadable}"); var notification = ""; SessionGaurd(loadable.Session, loadable, (s, a) => { var record = a.UpdateLocalFile(name); s.Save(record); Bus.SendMessage(record); notification = $"Файл '{record.Name}' загружен"; if (IsActive) { Open(a).ToObservable().CatchSubscribe(r => ResultsSink.OnNext(r)); } }); Shell.Notifications.OnNext(notification); }, e => { Log.Debug($"Ошибка во время загрузки {loadable}", e); SessionGaurd(loadable.Session, loadable, (s, a) => a.Error(e)); }, () => { //если loadable.IsDownloaded = true то значит запрос дал результаты //и состояние сохранено в обработчике он next не нужны обращаться к базе нужно просто освободить ресурсы //если ничего не было найдено то нужно открыть сессию что сохранить состояние объекта if (loadable.IsDownloaded) { loadable.Completed(); } else { SessionGaurd(loadable.Session, loadable, (s, a) => a.Completed()); } }); disposable.Add(download); loadable.RequstCancellation = disposable; Bus.SendMessage(loadable); return(Enumerable.Empty <IResult>()); }
// Update is called once per frame void Update() { if (!loaded) { if (currentLoading == null) { if (loadables.Count > 0) { currentLoading = loadables.Dequeue(); if (!currentLoading.isLoaded()) { currentLoading.load(); } else { loaded = true; } } else { loaded = true; } } else { if (currentLoading.isLoaded()) { currentLoading = null; } } } }
public void BoatCanPickUpLoadable() { //arrange Boat boat = new Boat(); Loadable loadable = new Loadable(); //act boat.PickUp(loadable); //assert Assert.AreEqual(1, boat.NumberOfLoads); }
// Use this for initialization void Start() { loaded = false; currentLoading = null; loadables = new Queue <Loadable>(); tileDataGenerator = gameObject.GetComponent <Component_TileDataGenerator>(); loadables.Enqueue(tileDataGenerator); world = gameObject.GetComponent <World>(); loadables.Enqueue(world); level = gameObject.GetComponent <Level>(); loadables.Enqueue(level); }
public override IEnumerable <IResult> Download(Loadable loadable) { var supplier = ((WaybillLine)loadable).Waybill.SafeSupplier; if (supplier == null || !supplier.HaveCertificates) { yield return(new MessageResult("Данный поставщик не предоставляет сертификаты в АналитФармация." + "\r\nОбратитесь к поставщику.", MessageResult.MessageType.Warning)); yield break; } base.Download(loadable); }
public void BoatCanDropOffLoadable() { //arrange Boat boat = new Boat(); Loadable load = new Loadable(); boat.PickUp(load); //act boat.DropOff(load); //test Assert.AreEqual(0, boat.NumberOfLoads); }
public ScriptLoadPanel(Script script) { InitializeComponent(); // Initialise this.loadable = script; ScriptBody.Text = script.ScriptBody; // Add labels for timings foreach (int cycle in script.SpawningCycles) { Label label = new Label(); label.Content = cycle.ToString(); TimingsPanel.Children.Add(label); } }
override protected void Start() { base.Start(); finishObjects = GameObject.FindGameObjectsWithTag("finishMenu"); hideFinished(); SetPee(CurrentPee); loadable = Serializer.Load <Loadable>("gamedata"); if (loadable == null) { loadable = new Loadable(); } if (loadable.Score > 0) { CurrentGoodBoy = loadable.MaxGoodBoy; CurrentPee = loadable.MaxPee; speed = loadable.Speed; } GoodBoyMeter.value = 1; }
public static async void AddTo(Producer prod, string[] fields, Loadable l, params object[] obj) { if (con.State == ConnectionState.Closed) { con.Open(); } SqlCommand sql = new SqlCommand(prod.ToString(), con); sql.CommandType = CommandType.StoredProcedure; for (int x = 0; x < fields.Length; x++) { sql.Parameters.AddWithValue("@" + fields[x], obj[x]); } await sql.ExecuteNonQueryAsync(); con.Close(); if (l != null) { l.OnFinish("DB"); } }
private System.Tuple <IObservable <EventPattern <HttpProgressEventArgs> >, IObservable <Stream> > ObserveLoad(Loadable loadable) { ProgressMessageHandler progress = null; HttpClientHandler handler = null; var client = Settings.Value.GetHttpClient(Shell.Config, ref progress, ref handler); var data = new[] { String.Format("urn:data:{0}:{1}", NHibernateUtil.GetClass(loadable).Name.ToLower(), loadable.GetId()) }; //review - я не понимаю как это может быть но если сделать dispose у observable //то ожидающий запрос тоже будет отменен и cancellationtoke не нужен //очевидного способа как это может работать нет но как то оно работает var result = Tuple.Create( Observable.FromEventPattern <HttpProgressEventArgs>(progress, "HttpReceiveProgress"), Observable .Using(() => client, c => c.PostAsJsonAsync("Download", data).ToObservable()) .Do(r => r.EnsureSuccessStatusCode()) .SelectMany(r => r.Content.ReadAsStreamAsync().ToObservable()) ); return(Env.WrapRequest(result)); }
// Scroll to a given loadable public void ScrollToLoadable(Loadable loadable) { ((FrameworkElement)loadable.GetLoadablePanel()).BringIntoView(); }
public static async void AddTo(Producer prod, Fields fields, Loadable l, params object[] obj) { AddTo(prod, fields.getFields(), l, obj); }
public static void Register(Loadable page) { loadables.Add(page); }
public DefaultTokenLoader(CompositeSettings appSettings, Loadable <CompositeSettings> userStore) { this.appSettings = appSettings; this.userStore = userStore; }
public virtual IEnumerable <IResult> Open(Loadable loadable) { return(loadable.GetFiles().Select(n => new OpenResult(n))); }
public void DropOff(Loadable load) { NumberOfLoads--; }
public AuthorizingTokenLoader(Loadable <Tokens> loader, Authorizable authorizer, ResourceStore <CompositeSettings> userStore) { this.loader = loader; this.authorizer = authorizer; this.userStore = userStore; }
public void Cancel(Loadable loadable) { loadable.IsDownloading = false; loadable.RequstCancellation.Dispose(); }
public void PickUp(Loadable load) { NumberOfLoads++; }