public Node(Root _root, dobj _props = null) { a_Parent = null; a_Root = _root; Initialize(_props); }
public static void Main(string[] args) { Program p = new Program(); dobj obj1 = p.producer; dobj obj2 = p.producer; dobj obj3 = p.producer; dobj obj4 = p.producer; dobj obj5 = p.producer; dobj cobj1 = p.consumer; dobj cobj2 = p.consumer; dobj cobj3 = p.consumer; dobj cobj4 = p.consumer; dobj cobj5 = p.consumer; while (true) { obj1.BeginInvoke(null, null); obj2.BeginInvoke(null, null); obj3.BeginInvoke(null, null); obj4.BeginInvoke(null, null); obj5.BeginInvoke(null, null); if (Program.goods > 0) { cobj1.BeginInvoke(null, null); cobj2.BeginInvoke(null, null); cobj3.BeginInvoke(null, null); cobj4.BeginInvoke(null, null); cobj5.BeginInvoke(null, null); } } }
protected override void OnDidMount() { Corutine.Tick(() => Data = new dobj() { { "hui", 3 } }, 1); }
protected override void OnUpdate() { Stash = new dobj() { { "countRender3", (int)(Stash["countRender3"]) + 1 } }; }
public Node(Node _parrent, dobj _props = null) { a_Parent = _parrent; a_Root = _parrent.a_Root; Initialize(_props ?? new dobj()); }
protected override void OnWillMount() { Stash = new dobj() { { "countRender3", 0 } }; }
// вызывается при инициализации компонента, когда она будет пока хз private void Initialize(dobj _props) { InitUpdateProps(_props); Init(); Generate(); }
public void Invoke(dobj _data) { // тут будет не SceneElement а vicos Component, тут в коде я малясь погаречился /*if( a_Subscribers.Any() ) * foreach( ModelSubscriber subscriber in a_Subscribers ) * subscriber.Update();*/ }
public Component(dobj _props, params Component[] _childs) { a_Props = new dobj(); a_Data = new dobj(); a_Stash = new dobj(); InitProps(_props ?? new dobj()); InitChilds(_childs); }
public CssContainer(Element _sceneElement, dobj _values = null, CssContainer _parent = null) { a_SceneElement = _sceneElement; a_SecondProperties = new List <CssSecondProperty>(); Properties = new List <CssFirstProperty>(); InheritProperties = new List <CssFirstProperty>(); InitParent(_parent, false); if (_values != null) { Update(_values); } }
private void Merge(dobj _state, dobj _newData, ModelNode _subTree) { // идём по ключам стейта и newData, т.к. они отсортированы, одновременно // для поддеревьев, у которых одинаковые хешсуммы ничего не делаем, // у которых различаются - рекурсивно вызываем Merge, // добавляем отсутствующие вершины, удаляем удалённые int i = 0, j = 0; while (i < _state.Count || j < _newData.Count) { } // потом алгоритм напишешь }
// возвращает прошлые данные internal void MigrateComponent(Component from) { /*bool wasChanges = false; * * if ( Utils.ListComparer<string>.Compare( from.Class, Class ) ) * { * a_Class = from.Class; * * wasChanges = true; * } * * if ( Utils.ListComparer<string>.Compare( from.State, State ) ) * { * a_State = from.State; * * wasChanges = true; * } * * if ( !from.Data.Equals(Data) ) * { * a_Data = from.Data; * * wasChanges = true; * } * * if ( !from.Props.Equals(Props) ) * { * a_Props = from.Props; * * wasChanges = true; * } * * if( wasChanges ) * UpdateComponent(); */ a_Class = from.Class; a_State = from.State; a_Data = from.Data; a_Props = from.Props; DOMNode.Update(); }
public dobj Merge(params dobj[] _dobjs) { dobj ret = new dobj(); foreach (dobj dobj in _dobjs) { foreach (KeyValuePair <string, object> kv in dobj) { string strVal = (kv.Value as string); if (strVal != null && strVal == String.Empty) { continue; } ret[kv.Key] = kv.Value; } } return(ret); }
public Box2(dobj props, params Component[] childs) : base(props, childs) { InitData( new dobj() { { "petr", "fedua" }, { "kuka", "reku" }, { "chlen", 3 }, { "chlen2", new dobj() { { "dyada", "vasya" }, { "petr", "fedua" }, { "kuka", "reku" }, { "chlen", 3 }, { "chlen2", 3 } } } } ); countRender3 = 0; }
public void Update(dobj _values, bool needUpdateSecond = true) { { // свойство - значение string key = ""; string value = ""; CssFirstProperty property = Css.Resolve(key, value); } // все доби теперь упорядочены, есть 4 случая: // 0. и то и то пусто - ничего не делаем // 1. текущие вальюсы пустые - просто создаём новые // 2. новые вальюсы пустые - удаляем существующие // 3. и то и то не пусто: // 3.1: до конца добби не дошли ни в новых ни в текущих вальюсах - идём по обоим добби в алфавитном порядке и сравниваем свойства, удаляем несуществующие, добавляем новые, меняем меняющиеся // 3.2: прошли все существующие свойства и остались новые: добавляем всех // 3.3: прошли все новые свойства - удаляем существующие if (needUpdateSecond) { UpdateSecond(); } }
private void InitProps(dobj _newProps) { #if DEVELOPMENT // всяческие проверки свойств #endif dobj newProps = _newProps.Merge(OnWillReceiveProps(_newProps) ?? new dobj()); a_Id = ((string)newProps["id"]) ?? ""; a_Key = ((string)newProps["key"]) ?? ""; a_Class = StrTolist((string)newProps["class"] ?? ""); a_State = StrTolist((string)newProps["state"] ?? ""); a_Props = newProps.Merge(new dobj() { { "id", string.Empty }, { "key", string.Empty }, { "class", string.Empty }, { "state", string.Empty } }); a_Data = GetDerivedStateFromProps() ?? new dobj(); }
// либо все потомки переедут в другой контейнер и отпишутся от текущего на этом этапе // либо все потомки помрут вместе с их родителем //public event Action OnDestroy; public CssContainer(Element _sceneElement, CssContainer _parent = null, dobj _values = null) : this(_sceneElement, _values, _parent) { }
protected void InitData(dobj data) { a_Data = data; }
public AldousBroderBelyakov(Node _parent, dobj _props) : base(_parent, _props) { }
// Сомпонент получает новые свойства. Тут можно иx немного изменить // ничего не обновлено, на вxод приxодят новые свойства // возвращаются изменённые новые свойства protected virtual dobj OnWillReceiveProps(dobj newProps) { return(null); }
// вызывается откуда угодно для обновления // как это будет работать - хз, на данном этапе можно отдать свойства в Node public void Update(dobj _props) { InitUpdateProps(_props); Generate(); }
public TextureMaze(Node _parent, dobj _props) : base(_parent, _props) { }
public Box(dobj props, params Component[] childs) : base(props, childs) { }
public FragmentRandome(Node _parent, dobj _props) : base(_parent, _props) { }
public Maze(Node _parent, dobj _props) : base(_parent, _props) { }
private void InitUpdateProps(dobj _props) { Props = _props; }
public Amari(Node _parent, dobj _props) : base(_parent, _props) { }
public Text(dobj props, string child) : base(props) { //TODO: шото тут надо сделать чтобы текст инициализировать }
public BelyakovRandome(Node _parent, dobj _props) : base(_parent, _props) { }