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));
            }
        }
Example #2
0
        //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>());
        }
Example #3
0
    // 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;
                }
            }
        }
    }
Example #4
0
        public void BoatCanPickUpLoadable()
        {
            //arrange
            Boat     boat     = new Boat();
            Loadable loadable = new Loadable();

            //act
            boat.PickUp(loadable);

            //assert
            Assert.AreEqual(1, boat.NumberOfLoads);
        }
Example #5
0
    // 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);
        }
Example #7
0
        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);
        }
Example #8
0
        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);
            }
        }
Example #9
0
    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;
    }
Example #10
0
        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");
            }
        }
Example #11
0
        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));
        }
Example #12
0
 // Scroll to a given loadable
 public void ScrollToLoadable(Loadable loadable)
 {
     ((FrameworkElement)loadable.GetLoadablePanel()).BringIntoView();
 }
Example #13
0
 public static async void AddTo(Producer prod, Fields fields, Loadable l,
                                params object[] obj)
 {
     AddTo(prod, fields.getFields(), l, obj);
 }
Example #14
0
 public static void Register(Loadable page)
 {
     loadables.Add(page);
 }
Example #15
0
 public DefaultTokenLoader(CompositeSettings appSettings, Loadable <CompositeSettings> userStore)
 {
     this.appSettings = appSettings;
     this.userStore   = userStore;
 }
Example #16
0
 public virtual IEnumerable <IResult> Open(Loadable loadable)
 {
     return(loadable.GetFiles().Select(n => new OpenResult(n)));
 }
Example #17
0
 public void DropOff(Loadable load)
 {
     NumberOfLoads--;
 }
Example #18
0
 public AuthorizingTokenLoader(Loadable <Tokens> loader, Authorizable authorizer, ResourceStore <CompositeSettings> userStore)
 {
     this.loader     = loader;
     this.authorizer = authorizer;
     this.userStore  = userStore;
 }
Example #19
0
 public void Cancel(Loadable loadable)
 {
     loadable.IsDownloading = false;
     loadable.RequstCancellation.Dispose();
 }
Example #20
0
 public void PickUp(Loadable load)
 {
     NumberOfLoads++;
 }