Пример #1
0
    private void OnTriggerExit2D(Collider2D collision)
    {
        BasicElement bs = collision.gameObject.GetComponent <BasicElement>();

        if (bs.eventDelegate != null)
        {
            bs.eventDelegate -= StopMove;
        }
    }
Пример #2
0
        public static CombinableDo PressModifierKeys(BasicElement control, WinModifierKeys modifierKeys)
        {
            if (modifierKeys == WinModifierKeys.None)
            {
                return(new CombinableDo());
            }

            return(PressKey(control, Convert(modifierKeys)));
        }
Пример #3
0
        public static CombinableDo SendKeys(BasicElement control, string text, WinModifierKeys modifierKeys)
        {
            if (modifierKeys == WinModifierKeys.None)
            {
                return(new CombinableDo());
            }

            return(TypeText(control, text, Convert(modifierKeys)));
        }
Пример #4
0
        public static CombinableDo ReleaseModifierKeys(BasicElement control, WinModifierKeys modifierKeys)
        {
            if (modifierKeys == WinModifierKeys.None)
            {
                return(new CombinableDo());
            }

            return(ReleaseKey(Convert(modifierKeys)));
        }
Пример #5
0
    protected virtual void OnCollisionEnter2D(Collision2D collision)
    {
        BasicElement basicElement = collision.gameObject.GetComponent <BasicElement>();

        if (!basicElement)
        {
            return;
        }
        Combine(basicElement);
    }
Пример #6
0
 private static void Read(BasicElement rootElement, BasicElementData data)
 {
     foreach (var child in GetChildren(rootElement.AutomationElement))
     {
         var element     = new BasicElement(child);
         var elementData = element.GetDataCopy();
         ((List <BasicElementData>)data.Children).Add(elementData);
         Read(element, elementData);
     }
 }
        public override int CompareTo(BasicElement other)
        {
            var otheraff = other as AffordanceDesire;

            if (otheraff?._desire != null && _desire != null)
            {
                return(_desire.CompareTo(otheraff._desire));
            }
            return(base.CompareTo(other));
        }
Пример #8
0
    protected override void Hit(BasicElement element)
    {
        base.Hit(element);//火是可以掉下来的,所以有可能火撞到别的东西
        switch (element.elementType)
        {
        //case ElementType.wood: Disappear(); return;
        case ElementType.fire: Disappear(); return;

        default: return;
        }
    }
Пример #9
0
        public Cell(BigEndianReader raw, sbyte mapVersion)
        {
            cellId        = raw.ReadShort();
            elementsCount = raw.ReadShort();
            elements      = new List <BasicElement>();

            for (int i = 0; i < elementsCount; i++)
            {
                elements.Add(BasicElement.GetElementFromType(raw.ReadByte(), raw, mapVersion));
            }
        }
Пример #10
0
 // Methods
 internal void Init(IDataReader Reader, int MapVersion)
 {
     CellId        = Reader.ReadShort();
     ElementsCount = Reader.ReadShort();
     for (var i = 0; i < ElementsCount; i++)
     {
         var be = BasicElement.GetElementFromType(Reader.ReadByte());
         be.Init(Reader, MapVersion);
         Elements.Add(be);
     }
 }
Пример #11
0
        /// <summary>
        /// Gives the BasicElement the focus and presses and holds the given key down. Use <see cref="ReleaseKey(Key)" /> to release the key back again.
        /// </summary>
        /// <param name="control">The BasicElement who should get the focus before pressing the key.</param>
        /// <param name="key">The key to press and hold.</param>
        /// <returns>A combinable Do to be able to append additional actions.</returns>
        public static CombinableDo PressKey(BasicElement control, Key key)
        {
            return(WrapIt(() =>
            {
                LogPool.Append("Set control focus for keyboard inputs on '{0}'.", control);
                control.AutomationElement.SetFocus();

                LogPool.Append("Press key '{0}'.", key);
                WinApi.KeyboardEvent((byte)key, WinApi.KeyboardEventFlags.KEYEVENTF_EXTENDEDKEY);
            },
                          string.Format("Cannot press down the key '{0}' with the '{1}' focused.", key, control)));
        }
Пример #12
0
 public override int CompareTo(BasicElement other)
 {
     if (_assignableDevice == null)
     {
         return(0);
     }
     if (other is AffordanceDevice otheraff)
     {
         return(_assignableDevice.CompareTo(otheraff._assignableDevice));
     }
     return(base.CompareTo(other));
 }
Пример #13
0
    // Start is called before the first frame update
    protected override void Hit(BasicElement element)
    {
        base.Hit(element);
        switch (element.elementType)
        {
        case ElementType.stone: Disappear(); return;

        case ElementType.magnet: Disappear(); return;

        default: HitOtherObj(); return;
        }
    }
Пример #14
0
    protected override void BeHit(BasicElement element)
    {
        base.BeHit(element);
        switch (element.elementType)
        {
        case ElementType.stone: Disappear(); return;

        case ElementType.magnet: Disappear(); return;

        default: return;    //草撞火是草消失,火不变,火撞草是火消失,草变火?
        }
    }
 public override int CompareTo(BasicElement other)
 {
     if (!(other is TemplatePersonTrait othr))
     {
         throw new LPGException("Other was null.");
     }
     if (_trait != null && othr._trait != null)
     {
         return(string.Compare(_trait.Name, othr._trait.Name, StringComparison.Ordinal));
     }
     return(0);
 }
Пример #16
0
        /// <summary>
        /// Gives the BasicElement the focus and types the given text with a small delay time between each character.
        /// </summary>
        /// <param name="control">The BasicElement who should get the focus before typing the text.</param>
        /// <param name="text">The text to type.</param>
        /// <param name="delay">The time to wait after each character in milliseconds.</param>
        /// <returns>A combinable Do to be able to append additional actions.</returns>
        public static CombinableDo TypeText(BasicElement control, string text, int delay)
        {
            return(WrapIt(() =>
            {
                LogPool.Append("Set control focus for keyboard inputs on '{0}'.", control);
                control.AutomationElement.SetFocus();

                LogPool.Append("Type text '{0}' with a delay of {1} milliseconds.", text, delay);
                SendText(text, delay);
            },
                          string.Format("Cannot send the text '{0}' with the '{1} focused.'", text, control)));
        }
Пример #17
0
        /// <summary>
        /// Gives the BasicElement the focus and types the given modifier keys.
        /// </summary>
        /// <param name="control">The BasicElement who should get the focus before typing the key.</param>
        /// <param name="modifierKeys">The modifier keys to type.</param>
        /// <returns>A combinable Do to be able to append additional actions.</returns>
        public static CombinableDo TypeKey(BasicElement control, ModifierKeys modifierKeys)
        {
            return(WrapIt(() =>
            {
                LogPool.Append("Set control focus for keyboard inputs on '{0}'.", control);
                control.AutomationElement.SetFocus();

                LogPool.Append("Type modifier keys '{0}'.", modifierKeys);
                Type((byte)modifierKeys);
            },
                          string.Format("Cannot press down the modifier keys '{0}' with the '{1}' focused.", modifierKeys, control)));
        }
Пример #18
0
    protected override void BeHit(BasicElement element)
    {
        base.BeHit(element);
        switch (element.elementType)
        {
        case ElementType.stone: Disappear(); return;

        case ElementType.magnet: Disappear(); return;     //磁石撞了磁石??

        default: return;
        }
    }
Пример #19
0
        // Methods
        internal void Init(BigEndianReader Reader, int MapVersion)
        {
            this.CellId        = Reader.ReadShort();
            this.ElementsCount = Reader.ReadShort();
            int elementsCount = this.ElementsCount;

            for (int i = 0; i < elementsCount; i++)
            {
                BasicElement elementFromType = BasicElement.GetElementFromType(Reader.ReadByte());
                elementFromType.Init(Reader, MapVersion);
                this.Elements.Add(elementFromType);
            }
        }
Пример #20
0
        private void Read(FastBigEndianReader reader)
        {
            List <IElement> allElements = new List <IElement>();

            this.CellId        = reader.ReadShort();
            this.ElementsCount = reader.ReadShort();
            for (int i = 0; i < ElementsCount; i++)
            {
                IElement be = BasicElement.GetElementFromType(Map, reader, reader.ReadByte());
                allElements.Add(be);
            }
            Elements = allElements.AsReadOnly();
        }
Пример #21
0
    protected override void BeHit(BasicElement element)
    {
        base.BeHit(element);
        switch (element.elementType)
        {
        case ElementType.wood: FallDown(); return;

        case ElementType.stone: BeMagnet(); return;

        case ElementType.magnet: Disappear(); return;

        default: return;
        }
    }
Пример #22
0
    public void create(BasicElement element, bool isHospital)
    {
        newElement = Instantiate <GameObject>(element.mesh, transform);

        float xPos = element.side > 0 ? 9f : -8.5f;
        float zPos = GameManager.inst.DistanceToDestroy * 2;

        if (isHospital)
        {
            xPos = 12.5f;
        }

        this.transform.position = new Vector3(xPos, -0.5f, zPos);
    }
Пример #23
0
        /// <summary>
        /// create an object with the given element
        /// </summary>
        /// <param name="basicElement">the BasicElement to build</param>
        /// <param name="position">the position of the BasicElement</param>
        /// <param name="currentID">the ID of the BasicElement</param>
        private static void CreateObject(BasicElement basicElement, int position, int currentID)
        {
            basicElement.Build(); // the mesh is updated when triangulating in the build function

            MyMesh mesh = new MyMesh(basicElement.GetMesh().triangles, basicElement.GetMesh().vertices); // here you get that mesh (OpencascadePart.MyMesh) and you convert it into an Assets.MyMesh
            // if you need to refresh MyMesh for some reasons, you can update the faces the way you wish and then call basicElement.RecalculateMyMesh()

            mesh.obj.transform.localScale = new Vector3(1, 1, 1);
            mesh.obj.AddComponent<BoxCollider>();
            mesh.obj.transform.position = new Vector3(1.0f, 1.0f, -1.0f - position);
            mesh.obj.AddComponent<GetSelected>();
            mesh.obj.AddComponent<AdditionnalProperties>();
            mesh.obj.GetComponent<AdditionnalProperties>().ID = currentID + 1;
        }
Пример #24
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        BasicElement bs = collision.gameObject.GetComponent <BasicElement>();

        if (!bs)
        {
            return;
        }
        bs.eventDelegate += StopMove;
        if (bs is Fire)
        {
            ChangeDirection();
        }
    }
Пример #25
0
        private static IEnumerable <TControl> StartSearchChildren <TControl>(BasicElement parent, Predicate <BasicElement> condition) where TControl : BasicElement
        {
            var foundItems = new List <TControl>();

            foreach (var child in GetChildren(parent.AutomationElement))
            {
                var childBasicElement = new BasicElement(child);
                if (condition(childBasicElement))
                {
                    foundItems.Add((TControl)Activator.CreateInstance(typeof(TControl), child));
                }
                foundItems.AddRange(StartSearchChildren <TControl>(childBasicElement, condition));
            }
            return(foundItems);
        }
Пример #26
0
        // Methods
        internal void Init(BigEndianReader Reader, int MapVersion)
        {
            CellId        = Reader.ReadShort();
            ElementsCount = Reader.ReadShort();
            int elementsCount = ElementsCount;
            int i             = 1;

            while ((i <= elementsCount))
            {
                BasicElement elementFromType = BasicElement.GetElementFromType(Reader.ReadByte());
                elementFromType.Init(Reader, MapVersion);
                Elements.Add(elementFromType);
                i += 1;
            }
        }
Пример #27
0
    protected override void BeHit(BasicElement element)
    {
        base.BeHit(element);
        switch (element.elementType)
        {
        case ElementType.wood: Burn(); return;

        case ElementType.stone: return;     //草被石头撞?

        //case ElementType.fire: Burn(); return;
        case ElementType.magnet: Disappear(); return;

        default: return;
        }
    }
Пример #28
0
        private static TControl StartSearchParent <TControl>(BasicElement child, Predicate <BasicElement> condition) where TControl : BasicElement
        {
            var parent = TreeWalker.ControlViewWalker.GetParent(child.AutomationElement);

            if (parent != null)
            {
                var basicElement = new BasicElement(parent);
                if (!condition(basicElement))
                {
                    return(StartSearchParent <TControl>(basicElement, condition));
                }
                return((TControl)Activator.CreateInstance(typeof(TControl), parent));
            }

            return(null);
        }
Пример #29
0
        public Cell FromRaw(BigEndianReader raw)
        {
            Cell cell = new Cell
            {
                CellId        = raw.ReadShort(),
                ElementsCount = raw.ReadShort()
            };

            cell.Elements = new BasicElement[cell.ElementsCount];
            for (int i = 0; i < cell.ElementsCount; i++)
            {
                BasicElement be = new BasicElement(cell);
                cell.Elements[i] = be.GetElementFromType(cell, raw);
            }
            return(cell);
        }
Пример #30
0
 private static TControl StartSearchChild <TControl>(BasicElement sourceElement, Predicate <BasicElement> condition) where TControl : BasicElement
 {
     foreach (var child in GetChildren(sourceElement.AutomationElement))
     {
         var childBasicElement = new BasicElement(child);
         if (condition(childBasicElement))
         {
             return((TControl)Activator.CreateInstance(typeof(TControl), child));
         }
         var foundItem = StartSearchChild <TControl>(childBasicElement, condition);
         if (foundItem != null)
         {
             return(foundItem);
         }
     }
     return(null);
 }