Exemplo n.º 1
0
        private void AddDependence(object sender, RoutedEventArgs e)
        {
            var depObj     = cbDepObj.SelectedItem as DependenceObject;
            var dependency = cbDependency.SelectedItem as DependenceObject;

            if (depObj == null || dependency == null)
            {
                return;
            }

            var curDepObj = dB.Dependencies
                            .SingleOrDefault(d => d.ЗависимыйОбъект.ObjectType == depObj.ObjectType &&
                                             d.ЗависимыйОбъект.ObjectName == depObj.ObjectName);

            if (curDepObj != null)
            {
                var curDependency = curDepObj.Зависимости
                                    .SingleOrDefault(d => d.ObjectType == dependency.ObjectType &&
                                                     d.ObjectName == dependency.ObjectName);

                if (curDependency == null)
                {
                    curDepObj.Зависимости.Add(dependency);
                }
            }
            else
            {
                var NewDependence = new Dependence();
                NewDependence.ЗависимыйОбъект = depObj;
                NewDependence.Зависимости.Add(dependency);
                dB.Dependencies.Add(NewDependence);
            }
        }
Exemplo n.º 2
0
        public Task Build()
        {
            if (_buildTask != null) // Concurrent builds may still occur, but for simplicity reasons I've chosen to ignore this case.
            {
                return(_buildTask);
            }
            if (Dependence.Count == 0)
            {
                return(Task.Run(() =>
                {
                    if (!IsBuilt)
                    {
                        Thread.Sleep(1000);
                        Console.WriteLine("Build " + ID);
                        IsBuilt = true;
                    }
                }));
            }
            var dependenciesTask = Dependence.Select(dependency => dependency.Build()).ToArray();

            _buildTask = Task.Factory.ContinueWhenAll(dependenciesTask, tasks => {
                if (!IsBuilt)
                {
                    Thread.Sleep(1000);
                    Console.WriteLine("Build " + ID);
                    IsBuilt = true;
                }
            });
            return(_buildTask);
        }
Exemplo n.º 3
0
        static void Main(string[] args)
        {
            function fnc = new function(DateTime.Now, e_Direction.Fixed);
            Dependence dpn = new Dependence(DateTime.Now, e_Direction.Fixed, e_Dot.Start);
            dpn.SetDirection(fnc.GetDirection);
            dpn.SetDate(fnc.GetDate);
            #region Вспомогательные функции
            Action<string, string, string> dOut = (Obj, Old, New) =>
            {
                Console.WriteLine
                ("Dependance changed: {0}\noldValue: {1}\nnewValue: {2}", Obj, Old, New);
            };
            #endregion
            #region Функции для подписки
            Func<EventHandler<ea_ValueChange<e_Direction>>, Action> fncDir =
                (eHnd) =>
                {
                    fnc.event_DirectionChanged += eHnd;
                    return () => fnc.event_DirectionChanged -= eHnd;
                };
            Func<EventHandler<ea_ValueChange<DateTime>>, Action> fncDate =
                (eHnd) =>
                {
                    fnc.event_DateChanged += eHnd;
                    return () => fnc.event_DateChanged -= eHnd;
                };
            #endregion
            #region Автообновление зависимости
            dpn.setAutoupdate(fncDate, fncDir);
            #endregion
            #region отслеживание
            dpn.event_DependDotChanged += (s, e) =>
            { dOut("dependDot", e.OldValue.ToString(), e.NewValue.ToString()); };
            dpn.event_DateChanged += (s, e) =>
            { dOut("manageDate", e.OldValue.ToString(), e.NewValue.ToString()); };
            dpn.event_DirectionChanged += (s, e) =>
            { dOut("Direction", e.OldValue.ToString(), e.NewValue.ToString()); };
            #endregion

            #region testing
            fnc.SetDate(new DateTime(2000,1,1));
            fnc.SetDirection(e_Direction.Left);
            dpn.SetDependDot(e_Dot.Finish);
            Console.WriteLine("Unsuscribe...");
            fnc.SetDate(new DateTime(2001,10,12));
            #endregion

            #region default
            Console.WriteLine("\nPress Enter to exit...");
            Console.ReadLine();
            #endregion
        }
    IEnumerator UpdatePluginInfo()
    {
        if (!Main.Ins.CombatData.PluginUpdated)
        {
            UnityWebRequest vFile = new UnityWebRequest();
            vFile.url     = string.Format(Main.strFile, Main.strHost, Main.port, Main.strProjectUrl, Main.strPlugins);
            vFile.timeout = 5;
            DownloadHandlerBuffer dH = new DownloadHandlerBuffer();
            vFile.downloadHandler = dH;
            yield return(vFile.Send());

            if (vFile.isError || vFile.responseCode != 200)
            {
                Debug.LogError(string.Format("update version file error:{0} or responseCode:{1}", vFile.error, vFile.responseCode));
                Control("Warning").SetActive(true);
                vFile.Dispose();
                Update      = null;
                pluginCount = 0;
                //显示出存档中保存得DLC信息
                Main.Ins.DlcMng.ClearModel();
                for (int i = 0; i < Main.Ins.GameStateMgr.gameStatus.pluginModel.Count; i++)
                {
                    Main.Ins.DlcMng.Models.Add(Main.Ins.GameStateMgr.gameStatus.pluginModel[i]);
                }
                //for (int i = 0; i < DlcMng.Instance.Models.Count; i++)
                //{
                //InsertModel(DlcMng.Instance.Models[i]);
                //}
                pluginCount = Main.Ins.DlcMng.Models.Count;
                Main.Ins.DlcMng.ClearDlc();
                for (int i = 0; i < Main.Ins.GameStateMgr.gameStatus.pluginChapter.Count; i++)
                {
                    Main.Ins.DlcMng.Dlcs.Add(Main.Ins.GameStateMgr.gameStatus.pluginChapter[i]);
                }
                pluginCount += Main.Ins.DlcMng.Dlcs.Count;
                //for (int i = 0; i < DlcMng.Instance.Dlcs.Count; i++)
                //{
                //    InsertDlc(DlcMng.Instance.Dlcs[i]);
                //}
                pluginPage = 0;
                pageMax    = pluginCount / pluginPerPage + ((pluginCount % pluginPerPage == 0) ? 0 : 1);
                Main.Ins.DlcMng.CollectAll(this.showInstallPlugin);
                Control("Pages").GetComponent <Text>().text = (pluginPage + 1) + "/" + pageMax;
                PluginPageUpdate = Main.Ins.StartCoroutine(PluginPageRefresh());
                yield break;
            }

            Control("Warning").SetActive(false);
            pluginCount = 0;
            CleanModelList();
            LitJson.JsonData js = LitJson.JsonMapper.ToObject(dH.text);
            for (int i = 0; i < js["Scene"].Count; i++)
            {
                //ServerInfo s = new ServerInfo();
                //if (!int.TryParse(js["services"][i]["port"].ToString(), out s.ServerPort))
                //    continue;
                //if (!int.TryParse(js["services"][i]["type"].ToString(), out s.type))
                //    continue;
                //if (s.type == 0)
                //    s.ServerHost = js["services"][i]["addr"].ToString();
                //else
                //    s.ServerIP = js["services"][i]["addr"].ToString();
                //s.ServerName = js["services"][i]["name"].ToString();
                //Global.Instance.Servers.Add(s);
            }

            for (int i = 0; i < js["Weapon"].Count; i++)
            {
                //ServerInfo s = new ServerInfo();
                //if (!int.TryParse(js["services"][i]["port"].ToString(), out s.ServerPort))
                //    continue;
                //if (!int.TryParse(js["services"][i]["type"].ToString(), out s.type))
                //    continue;
                //if (s.type == 0)
                //    s.ServerHost = js["services"][i]["addr"].ToString();
                //else
                //    s.ServerIP = js["services"][i]["addr"].ToString();
                //s.ServerName = js["services"][i]["name"].ToString();
                //Global.Instance.Servers.Add(s);
            }

            Main.Ins.DlcMng.ClearModel();
            for (int i = 0; i < js["Model"].Count; i++)
            {
                int modelIndex = int.Parse(js["Model"][i]["Idx"].ToString());
                Debug.LogError(modelIndex + js["Model"][i]["name"].ToString());
                ModelItem Info = new ModelItem();
                Info.ModelId = modelIndex;
                Info.Name    = js["Model"][i]["name"].ToString();
                Info.Path    = js["Model"][i]["zip"].ToString();
                if (js["Model"][i]["desc"] != null)
                {
                    Info.Desc = js["Model"][i]["desc"].ToString();
                }
                Info.useFemalePos = js["Model"][i]["gender"] != null;
                Main.Ins.DlcMng.AddModel(Info);
            }

            pluginCount += Main.Ins.DlcMng.Models.Count;
            //for (int i = 0; i < DlcMng.Instance.Models.Count; i++)
            //{
            //    InsertModel(DlcMng.Instance.Models[i]);
            //}
            Main.Ins.DlcMng.ClearDlc();
            for (int i = 0; i < js["Dlc"].Count; i++)
            {
                Chapter c = new Chapter();
                c.Installed = false;
                c.ChapterId = int.Parse(js["Dlc"][i]["Idx"].ToString());
                c.Name      = js["Dlc"][i]["name"].ToString();
                c.Path      = js["Dlc"][i]["zip"].ToString();
                if (js["Dlc"][i]["desc"] != null)
                {
                    c.Desc = js["Dlc"][i]["desc"].ToString();
                }
                if (js["Dlc"][i]["reference"] != null)
                {
                    Dependence dep = new Dependence();
                    for (int j = 0; j < js["Dlc"][i]["reference"].Count; j++)
                    {
                        if (js["Dlc"][i]["reference"][j]["Scene"] != null)
                        {
                            dep.scene = new List <int>();
                            for (int l = 0; l < js["Dlc"][i]["reference"][j]["Scene"].Count; l++)
                            {
                                dep.scene.Add(int.Parse(js["Dlc"][i]["reference"][j]["Scene"][l].ToString()));
                            }
                        }
                        if (js["Dlc"][i]["reference"][j]["Model"] != null)
                        {
                            dep.model = new List <int>();
                            for (int l = 0; l < js["Dlc"][i]["reference"][j]["Model"].Count; l++)
                            {
                                dep.model.Add(int.Parse(js["Dlc"][i]["reference"][j]["Model"][l].ToString()));
                            }
                        }

                        if (js["Dlc"][i]["reference"][j]["Weapon"] != null)
                        {
                            dep.weapon = new List <int>();
                            for (int l = 0; l < js["Dlc"][i]["reference"][j]["Weapon"].Count; l++)
                            {
                                dep.weapon.Add(int.Parse(js["Dlc"][i]["reference"][j]["Weapon"][l].ToString()));
                            }
                        }
                    }
                    c.Res = dep;
                }
                Main.Ins.DlcMng.AddDlc(c);
            }

            pluginCount += Main.Ins.DlcMng.Dlcs.Count;
            //for (int i = 0; i < DlcMng.Instance.Dlcs.Count; i++)
            //{
            //    InsertDlc(DlcMng.Instance.Dlcs[i]);
            //}
            pluginPage = 0;
            pageMax    = pluginCount / pluginPerPage + ((pluginCount % pluginPerPage == 0) ? 0 : 1);
            Main.Ins.DlcMng.CollectAll(this.showInstallPlugin);
            PluginPageUpdate = Main.Ins.StartCoroutine(PluginPageRefresh());
            Main.Ins.CombatData.PluginUpdated = true;
            PluginUpdate = null;
        }
        else
        {
            if (PluginPageUpdate != null)
            {
                yield break;
            }
            pluginCount      = Main.Ins.DlcMng.Models.Count + Main.Ins.DlcMng.Dlcs.Count;
            pluginPage       = 0;
            pageMax          = pluginCount / pluginPerPage + ((pluginCount % pluginPerPage == 0) ? 0 : 1);
            PluginPageUpdate = Main.Ins.StartCoroutine(PluginPageRefresh());
        }
        Control("Pages").GetComponent <Text>().text = (pluginPage + 1) + "/" + pageMax;
    }
Exemplo n.º 5
0
 /// <summary>
 /// Метод удаления объекта
 /// </summary>
 public void DeleteObject()
 {
     aUnsuscribeDependSlave();
     aUnsuscribeSlave();
     aUnsuscribeMaster();
     _dependSlave = null;
     _slave = null;
     _master = null;
     _identity = null;
     aUnsuscribeDependSlave = aUnsuscribeMaster = aUnsuscribeSlave = null;
     event_ObjectDeleted?.Invoke(this, new ea_IdObject(this));
 }
Exemplo n.º 6
0
        /// <summary>
        /// Метод инициализации зависимости для подчиненного члена связи (запускается четвертым)
        /// </summary>
        protected void init_slaveDependence()
        {
            //Запускать четвертым из инитов
            _dependSlave = 
                new Dependence(
                    _master.getObjectDependDotInfo().GetDate(),
                    _slave.direction,
                    dotDependSlave);
            _dependSlave.setSender(this);
            
            _slave.event_dependDateChanged += _dependSlave.handler_DateChange;
            _slave.event_dependDotChanged += _dependSlave.handler_DependDotChange;

            aUnsuscribeDependSlave = () =>
            {
                _slave.event_dependDateChanged -= _dependSlave.handler_DateChange;
                _slave.event_dependDotChanged -= _dependSlave.handler_DependDotChange;

                aUnsuscribeDependSlave = () => { };
            };
        }
Exemplo n.º 7
0
        protected void init_dependence()
        {
            dependSlave = new Dependence(slave.dependDate, slave.direction, slave.dependDot);
            dependSlave.setSender(this);

            slave.event_dependDateChanged += (o, v) => dependSlave.date = v.NewValue;
            event_LimitChanged += (o, v) => dependSlave.SetDependDot(Hlp.GetDepenDot(v.NewValue, e_DependType.Slave));
        }
Exemplo n.º 8
0
        /// <summary>
        /// Инициализирует класс зависимости <seealso cref="Dependence"/>
        /// </summary>
        /// <param name="dependDate">Дата зависимости</param>
        /// <param name="limitType">Тип зависимости</param>
        /// <exception cref="objectAlreadyExistException">Выбрасывает исключение если класс <seealso cref="Dependence"/> уже был инициализирован</exception>
        public void init_Dependence(ILink parent, DateTime dependDate, e_TskLim limitType)
        {
            if(depend != null) throw new objectAlreadyExistException();

            date = dependDate;
            depend = new Dependence(date, cDirection, Hlp.GetDepenDot(limitType, dependType));
            depend.setSender(parent);
        }
Exemplo n.º 9
0
 public void setDependence(Dependence depend)
 {
     dcDepend = depend;
 }
Exemplo n.º 10
0
 protected void init_Dependence()
 {
     _depend = new Dependence(project.GetDot(e_Dot.Start).GetDate(), 
                              e_Direction.Right, 
                              e_Dot.Start);
 }