Наследование: MonoBehaviour
Пример #1
0
		/// <summary>
		/// Creates a new RopeTextSource.
		/// </summary>
		public RopeTextSource(Rope<char> rope, ITextSourceVersion version)
		{
			if (rope == null)
				throw new ArgumentNullException("rope");
			this.rope = rope.Clone();
			this.version = version;
		}
Пример #2
0
 private void AttachRopeToCharacter(GameObject pBalloonObject, Rope pRope, Rigidbody2D pTackBody)
 {
     pRope.GetStartOfRope().GetComponent<HingeJoint2D>().connectedBody = pTackBody;
     DistanceJoint2D balloonJoint= pBalloonObject.GetComponent<DistanceJoint2D> ();
     balloonJoint.distance = GetMaxBalloonRopeDistance (pBalloonObject);
     balloonJoint.connectedBody = pTackBody;
 }
Пример #3
0
 public void AppendLongTextToEmptyRope()
 {
     string text = BuildLongString(1000);
     Rope<char> rope = new Rope<char>();
     rope.AddText(text);
     Assert.AreEqual(text, rope.ToString());
 }
Пример #4
0
 private void AttachRopeToBalloon(GameObject pBalloon, Rope pRope)
 {
     HingeJoint2D balloonHinge = pBalloon.GetComponent<HingeJoint2D> ();
     balloonHinge.connectedBody = pRope.GetEndOfRope().GetComponent<Rigidbody2D>();
     balloonHinge.connectedAnchor = new Vector2 (0, pRope.GetLengthOfEachSegment());
     pRope.transform.parent = pBalloon.transform;
 }
Пример #5
0
		public void InitializeRopeFromLongString()
		{
			string text = BuildLongString(1000);
			Rope<char> rope = new Rope<char>(text);
			Assert.AreEqual(text.Length, rope.Length);
			Assert.AreEqual(text, rope.ToString());
			Assert.AreEqual(text.ToCharArray(), rope.ToArray());
		}
Пример #6
0
        public void OnFireRope(Rope newRope)
        {
            lock (m_ropeLock)
            {
                if (m_rope != null)
                    CutRope();

                m_rope = newRope;
            }
        }
Пример #7
0
 public void CutRope()
 {
     lock (m_ropeLock)
     {
         if (m_rope != null)
         {
             m_rope.Cut();
             m_rope = null;
         }
     }
 }
Пример #8
0
 public void RopeFired(Rope newRope)
 {
     lock (m_ropeLock)
     {
         if (newRope != null)
         {
             m_player.SetState(CharacterState.ROPING);
             m_player.ToAirMaterial();
         }
     }
 }
Пример #9
0
 public void ConcatenateSmallRopesToRope()
 {
     StringBuilder b = new StringBuilder();
     Rope<char> rope = new Rope<char>();
     for (int i = 1; i <= 1000; i++) {
         b.Append(i.ToString());
         b.Append(' ');
         rope.AddRange(CharRope.Create(i.ToString() + " "));
     }
     Assert.AreEqual(b.ToString(), rope.ToString());
 }
Пример #10
0
		public void ConcatenateStringToRope()
		{
			StringBuilder b = new StringBuilder();
			Rope<char> rope = new Rope<char>();
			for (int i = 1; i <= 1000; i++) {
				b.Append(i.ToString());
				rope.AddText(i.ToString());
				b.Append(' ');
				rope.Add(' ');
			}
			Assert.AreEqual(b.ToString(), rope.ToString());
		}
Пример #11
0
 public void ConcatenateSmallRopesToRopeBackwards()
 {
     StringBuilder b = new StringBuilder();
     Rope<char> rope = new Rope<char>();
     for (int i = 1; i <= 1000; i++) {
         b.Append(i.ToString());
         b.Append(' ');
     }
     for (int i = 1000; i >= 1; i--) {
         rope.InsertRange(0, CharRope.Create(i.ToString() + " "));
     }
     Assert.AreEqual(b.ToString(), rope.ToString());
 }
Пример #12
0
		public void TestToArrayAndToStringWithParts()
		{
			string text = BuildLongString(1000);
			Rope<char> rope = new Rope<char>(text);
			
			string textPart = text.Substring(1200, 600);
			char[] arrayPart = textPart.ToCharArray();
			Assert.AreEqual(textPart, rope.ToString(1200, 600));
			Assert.AreEqual(arrayPart, rope.ToArray(1200, 600));
			
			Rope<char> partialRope = rope.GetRange(1200, 600);
			Assert.AreEqual(textPart, partialRope.ToString());
			Assert.AreEqual(arrayPart, partialRope.ToArray());
		}
Пример #13
0
        /// <summary>
        /// Create a new text document with the specified initial text.
        /// </summary>
        public TextDocument(IEnumerable<char> initialText)
        {
            if (initialText == null)
              throw new ArgumentNullException("initialText");
              rope = new Rope<char>(initialText);
              lineTree = new DocumentLineTree(this);
              lineManager = new LineManager(lineTree, this);
              lineTrackers.CollectionChanged += delegate {
              lineManager.UpdateListOfLineTrackers();
              };

              anchorTree = new TextAnchorTree(this);
              undoStack = new UndoStack();
              FireChangeEvents();
        }
Пример #14
0
        public ConcateRope(Rope left, Rope right)
        {
            if (left == null) throw new ArgumentNullException("left");
            if (right == null) throw new ArgumentNullException("right");

            _depth = Math.Max(GetDepth(left), GetDepth(right)) + 1;
            if (_depth > MaxDepth) {
                throw new ArgumentException(
                    String.Format("The result tree of rope cannot be over {0} in depth.", MaxDepth));
            }

            _left = left;
            _right = right;
            _length = left.Length + right.Length;
        }
Пример #15
0
 public void ConcatenateSmallRopesByInsertionInMiddle()
 {
     StringBuilder b = new StringBuilder();
     Rope<char> rope = new Rope<char>();
     for (int i = 1; i <= 1000; i++) {
         b.Append(i.ToString("d3"));
         b.Append(' ');
     }
     int middle = 0;
     for (int i = 1; i <= 500; i++) {
         rope.InsertRange(middle, CharRope.Create(i.ToString("d3") + " "));
         middle += 4;
         rope.InsertRange(middle, CharRope.Create((1001-i).ToString("d3") + " "));
     }
     Assert.AreEqual(b.ToString(), rope.ToString());
 }
Пример #16
0
        /// <summary>
        /// Creates a new RopeTextReader.
        /// Internally, this method creates a Clone of the rope; so the text reader will always read through the old
        /// version of the rope if it is modified. <seealso cref="Rope{T}.Clone()"/>
        /// </summary>
        public RopeTextReader(Rope<char> rope)
        {
            if (rope == null)
                throw new ArgumentNullException("rope");

            // We force the user to iterate through a clone of the rope to keep the API contract of RopeTextReader simple
            // (what happens when a rope is modified while iterating through it?)
            rope.root.Publish();

            // special case for the empty rope:
            // leave currentNode initialized to null (RopeTextReader doesn't support empty nodes)
            if (rope.Length != 0) {
                currentNode = rope.root;
                GoToLeftMostLeaf();
            }
        }
Пример #17
0
 private static int GetDepth(Rope rope)
 {
     var concateRope = rope as ConcateRope;
     return concateRope == null ? 0 : concateRope.Depth;
 }
Пример #18
0
 internal void Push(Rope r)
 {
     internalList.AddFirst(r);
 }
Пример #19
0
 public static void StopWinding(this Rope rope)
 {
     StopRopeWinding(rope.Handle);
 }
Пример #20
0
        public Rope AddRope()
        {
            Rope rope = new Rope();

            return(rope);
        }
Пример #21
0
 public override Rope <byte> serialize(Guid a) => Rope.a(a.ToByteArray());
Пример #22
0
 public RopeController(ServerPlayer player)
 {
     m_player = player;
     m_rope = null;
 }
Пример #23
0
 public void StopRoping()
 {
     m_rope = null;
     m_player.SetState(CharacterState.FALLING);
     m_player.ToGroundMaterial();
 }
Пример #24
0
		public void EmptyRopeFromString()
		{
			Rope<char> empty = new Rope<char>(string.Empty);
			Assert.AreEqual(0, empty.Length);
			Assert.AreEqual("", empty.ToString());
		}
Пример #25
0
		public void InitializeRopeFromShortString()
		{
			Rope<char> rope = new Rope<char>("Hello, World");
			Assert.AreEqual(12, rope.Length);
			Assert.AreEqual("Hello, World", rope.ToString());
		}
Пример #26
0
		public void ConcatenateStringToRopeBackwards()
		{
			StringBuilder b = new StringBuilder();
			Rope<char> rope = new Rope<char>();
			for (int i = 1; i <= 1000; i++) {
				b.Append(i.ToString());
				b.Append(' ');
			}
			for (int i = 1000; i >= 1; i--) {
				rope.Insert(0, ' ');
				rope.InsertText(0, i.ToString());
			}
			Assert.AreEqual(b.ToString(), rope.ToString());
		}
Пример #27
0
		public void ConcatenateStringToRopeByInsertionInMiddle()
		{
			StringBuilder b = new StringBuilder();
			Rope<char> rope = new Rope<char>();
			for (int i = 1; i <= 998; i++) {
				b.Append(i.ToString("d3"));
				b.Append(' ');
			}
			int middle = 0;
			for (int i = 1; i <= 499; i++) {
				rope.InsertText(middle, i.ToString("d3"));
				middle += 3;
				rope.Insert(middle, ' ');
				middle++;
				rope.InsertText(middle, (999-i).ToString("d3"));
				rope.Insert(middle + 3, ' ');
			}
			Assert.AreEqual(b.ToString(), rope.ToString());
		}
Пример #28
0
        public override void GenerateLoot()
        {
            if (Utility.Random(100) < 15)
            {
                Lantern lantern = new Lantern();
                lantern.Hue = Utility.RandomMinMax(2113, 2118);
                PackItem(lantern);
            }

            if (Utility.Random(100) < 5)
            {
                Item item;

                switch (Utility.Random(111))
                {
                case 0: item = new Tapestry6W(); break;

                case 1: item = new MetalChest(); break;

                case 2: item = new MetalGoldenChest(); break;

                case 3: item = new MetalBox(); break;

                case 4: item = new AniLargeVioletFlask(); break;

                case 5: item = new AniRedRibbedFlask(); break;

                case 6: item = new AniSmallBlueFlask(); break;

                case 7: item = new BlueBeaker(); break;

                case 8: item = new BlueCurvedFlask(); break;

                case 9: item = new EmptyVial(); break;

                case 10: item = new EmptyVialsWRack(); break;

                case 11: item = new LargeFlask(); break;

                case 12: item = new LargeVioletFlask(); break;

                //case 13: item = new HourGlass(); break;
                //case 14: item = new HourGlassAni(); break;
                case 15: item = new DecorativeDAxeWest(); break;

                case 16: item = new DecorativeDAxeNorth(); break;

                case 17: item = new DecorativeBowWest(); break;

                case 18: item = new DecorativeBowNorth(); break;

                case 19: item = new DecorativeAxeWest(); break;

                case 20: item = new DecorativeAxeNorth(); break;

                case 21: item = new DecorativeShieldSword2West(); break;

                case 22: item = new DecorativeShieldSword2North(); break;

                case 23: item = new DecorativeShieldSword1West(); break;

                case 24: item = new DecorativeShieldSword1North(); break;

                case 25: item = new DecorativeShield11(); break;

                case 26: item = new DecorativeShield10(); break;

                case 27: item = new DecorativeShield9(); break;

                case 28: item = new DecorativeShield8(); break;

                case 29: item = new DecorativeShield7(); break;

                case 30: item = new DecorativeShield6(); break;

                case 31: item = new DecorativeShield5(); break;

                case 32: item = new DecorativeShield4(); break;

                case 33: item = new DecorativeShield3(); break;

                case 34: item = new DecorativeShield2(); break;

                case 35: item = new DecorativeShield1(); break;

                case 36: item = new Whip(); break;

                case 37: item = new SilverWire(); break;

                case 38: item = new Rope(); break;

                case 39: item = new PaintsAndBrush(); break;

                case 40: item = new IronWire(); break;

                case 41: item = new GoldWire(); break;

                case 42: item = new CopperWire(); break;

                case 43: item = new WoodDebris(); break;

                case 44: item = new RuinedPainting(); break;

                case 45: item = new RuinedFallenChairB(); break;

                case 46: item = new FullVialsWRack(); break;

                case 47: item = new FullJar(); break;

                case 48: item = new FullJars2(); break;

                case 49: item = new FullJars3(); break;

                case 50: item = new FullJars4(); break;

                case 51: item = new GreenBeaker(); break;

                case 52: item = new GreenBottle(); break;

                case 53: item = new VioletStemmedBottle(); break;

                case 54: item = new SpinningHourglass(); break;

                case 55: item = new ArcheryButte(); break;

                case 56: item = new PhillipsWoodenSteed(); break;

                case 57: item = new PileOfGlacialSnow(); break;

                case 58: item = new RedPoinsettia(); break;

                case 59: item = new RoseOfTrinsic(); break;

                case 60: item = new RaiseSwitch(); break;

                case 61: item = new SpecialFishingNet(); break;

                case 62: item = new SpecialHairDye(); break;

                case 63: item = new SpecialBeardDye(); break;

                case 64: item = new SnowPile(); break;

                case 65: item = new StatueEast2(); break;

                case 66: item = new StatuePegasus2(); break;

                case 67: item = new StatueSouth2(); break;

                case 68: item = new StatueSouthEast(); break;

                case 69: item = new StatuetteDyeTub(); break;

                case 70: item = new StatueWest(); break;

                case 71: item = new TapestryOfSosaria(); break;

                case 72: item = new WhitePoinsettia(); break;

                case 73: item = new WindChimes(); break;

                case 74: item = new ZoogiFungus(); break;

                case 75: item = new RuinedFallenChairA(); break;

                case 76: item = new RuinedDrawers(); break;

                case 77: item = new RuinedClock(); break;

                case 78: item = new RuinedChair(); break;

                case 79: item = new RuinedBooks(); break;

                case 80: item = new RuinedBookcase(); break;

                case 81: item = new RuinedArmoire(); break;

                case 82: item = new SmallStretchedHideSouthDeed(); break;

                case 83: item = new SmallStretchedHideEastDeed(); break;

                case 84: item = new PolarBearRugSouthDeed(); break;

                case 85: item = new PolarBearRugEastDeed(); break;

                case 86: item = new MediumStretchedHideSouthDeed(); break;

                case 87: item = new MediumStretchedHideEastDeed(); break;

                case 88: item = new LightFlowerTapestrySouthDeed(); break;

                case 89: item = new LightFlowerTapestryEastDeed(); break;

                case 90: item = new DarkFlowerTapestrySouthDeed(); break;

                case 91: item = new DarkFlowerTapestryEastDeed(); break;

                case 92: item = new BrownBearRugSouthDeed(); break;

                case 93: item = new BrownBearRugEastDeed(); break;

                case 94: item = new WallSconce(); break;

                case 95: item = new WallTorch(); break;

                case 96: item = new CandleShort(); break;

                case 97: item = new CandleLarge(); break;

                case 98: item = new DecorativeSwordNorth(); break;

                case 99: item = new DecorativeSwordWest(); break;

                case 100: item = new Tapestry1N(); break;

                case 101: item = new Tapestry2N(); break;

                case 102: item = new Tapestry2W(); break;

                case 103: item = new Tapestry3N(); break;

                case 104: item = new Tapestry3W(); break;

                case 105: item = new Tapestry4N(); break;

                case 106: item = new Tapestry4W(); break;

                case 107: item = new Tapestry5N(); break;

                case 108: item = new Tapestry5W(); break;

                case 109: item = new Tapestry6N(); break;

                default: item = new CandleSkull(); break;
                }

                item.LootType = LootType.Regular;
                item.Movable  = true;
                PackItem(item);
            }
        }
    private static void UpdateEndsJoints(Rope rope)
    {
        Transform firstSegment = rope.transform.GetChild(0);

        if (rope.WithPhysics &&
            rope.HangFirstSegment &&
            rope.transform.childCount > 0)
        {
            HingeJoint2D joint = firstSegment.gameObject.GetComponent <HingeJoint2D>();
            if (!joint)
            {
                joint = firstSegment.gameObject.AddComponent <HingeJoint2D>();
            }
            Vector2 hingePositionInWorldSpace = rope.transform.TransformPoint(rope.FirstSegmentConnectionAnchor);
            joint.connectedAnchor = hingePositionInWorldSpace;
            joint.anchor          = firstSegment.transform.InverseTransformPoint(hingePositionInWorldSpace);
            joint.connectedBody   = GetConnectedObject(hingePositionInWorldSpace, firstSegment.GetComponent <Rigidbody2D>());
            if (joint.connectedBody)
            {
                joint.connectedAnchor = joint.connectedBody.transform.InverseTransformPoint(hingePositionInWorldSpace);
            }
        }
        else
        {
            HingeJoint2D joint = firstSegment.gameObject.GetComponent <HingeJoint2D>();
            if (joint)
            {
                DestroyImmediate(joint);
            }
        }
        Transform lastSegment = rope.transform.GetChild(rope.transform.childCount - 1);

        if (rope.WithPhysics && rope.HangLastSegment)
        {
            HingeJoint2D[] joints = lastSegment.gameObject.GetComponents <HingeJoint2D>();
            HingeJoint2D   joint  = null;
            if (joints.Length > 1)
            {
                joint = joints[1];
            }
            else
            {
                joint = lastSegment.gameObject.AddComponent <HingeJoint2D>();
            }
            Vector2 hingePositionInWorldSpace = rope.transform.TransformPoint(rope.LastSegmentConnectionAnchor);
            joint.connectedAnchor = hingePositionInWorldSpace;
            joint.anchor          = lastSegment.transform.InverseTransformPoint(hingePositionInWorldSpace);
            joint.connectedBody   = GetConnectedObject(hingePositionInWorldSpace, lastSegment.GetComponent <Rigidbody2D>());
            if (joint.connectedBody)
            {
                joint.connectedAnchor = joint.connectedBody.transform.InverseTransformPoint(hingePositionInWorldSpace);
            }
        }
        else
        {
            HingeJoint2D[] joints = lastSegment.gameObject.GetComponents <HingeJoint2D>();
            if (joints.Length > 1)
            {
                for (int i = 1; i < joints.Length; i++)
                {
                    DestroyImmediate(joints[i]);
                }
            }
        }
    }
    static void UpdateRope(Rope rope)
    {
        DestroyChildren(rope);
        if (rope.SegmentsPrefabs == null || rope.SegmentsPrefabs.Length == 0)
        {
            Debug.LogWarning("Rope Segments Prefabs is Empty");
            return;
        }
        float          segmentHeight       = rope.SegmentsPrefabs[0].bounds.size.y * (1 + rope.overlapFactor);
        List <Vector3> nodes               = rope.nodes;
        int            currentSegPrefIndex = 0;
        Rigidbody2D    previousSegment     = null;
        float          previousTheta       = 0;
        int            currentSegment      = 0;

        for (int i = 0; i < nodes.Count - 1; i++)
        {
            //construct line between nodes[i] and nodes[i+1]
            float theta        = Mathf.Atan2(nodes[i + 1].y - nodes[i].y, nodes[i + 1].x - nodes[i].x);
            float dx           = segmentHeight * Mathf.Cos(theta);
            float dy           = segmentHeight * Mathf.Sin(theta);
            float startX       = nodes[i].x + dx / 2;
            float startY       = nodes[i].y + dy / 2;
            float lineLength   = Vector2.Distance(nodes[i + 1], nodes[i]);
            int   segmentCount = 0;
            switch (rope.OverflowMode)
            {
            case LineOverflowMode.Round:
                segmentCount = Mathf.RoundToInt(lineLength / segmentHeight);
                break;

            case LineOverflowMode.Shrink:
                segmentCount = (int)(lineLength / segmentHeight);
                break;

            case LineOverflowMode.Extend:
                segmentCount = Mathf.CeilToInt(lineLength / segmentHeight);
                break;
            }
            for (int j = 0; j < segmentCount; j++)
            {
                if (rope.SegmentsMode == SegmentSelectionMode.RoundRobin)
                {
                    currentSegPrefIndex++;
                    currentSegPrefIndex %= rope.SegmentsPrefabs.Length;
                }
                else if (rope.SegmentsMode == SegmentSelectionMode.Random)
                {
                    currentSegPrefIndex = Random.Range(0, rope.SegmentsPrefabs.Length);
                }
                GameObject segment = (Instantiate(rope.SegmentsPrefabs[currentSegPrefIndex]) as SpriteRenderer).gameObject;
                segment.name                    = "Segment_" + currentSegment;
                segment.transform.parent        = rope.transform;
                segment.transform.localPosition = new Vector3(startX + dx * j, startY + dy * j);
                segment.transform.localRotation = Quaternion.Euler(0, 0, theta * Mathf.Rad2Deg - 90);
                if (rope.WithPhysics)
                {
                    Rigidbody2D segRigidbody = segment.GetComponent <Rigidbody2D>();
                    if (segRigidbody == null)
                    {
                        segRigidbody = segment.AddComponent <Rigidbody2D>();
                    }
                    //if not the first segment, make a joint
                    if (currentSegment != 0)
                    {
                        float dtheta = 0;
                        if (j == 0)
                        {
                            //first segment in the line
                            dtheta = (theta - previousTheta) * Mathf.Rad2Deg;
                            if (dtheta > 180)
                            {
                                dtheta -= 360;
                            }
                            else if (dtheta < -180)
                            {
                                dtheta += 360;
                            }
                        }
                        //add Hinge
                        AddJoint(rope, dtheta, segmentHeight, previousSegment, segment);
                    }
                    previousSegment = segRigidbody;
                }
                currentSegment++;
            }
            previousTheta = theta;
        }
        UpdateEndsJoints(rope);
    }
Пример #31
0
        public override Rope ConcateWith(Rope rope)
        {
            if (rope == null) throw new ArgumentNullException("rope");

            var limit = FlattenRightChildLengthLimit;

            var flatRope = rope as FlatRope;
            if (flatRope == null || flatRope.Length > limit) {
                return base.ConcateWith(rope);
            }

            var rightRope = _right as FlatRope;
            if (rightRope == null || rightRope.Length > limit) {
                return base.ConcateWith(rope);
            }

            if (flatRope.Length + rightRope.Length > limit) {
                return base.ConcateWith(rope);
            }

            var left = Left.ToString();
            var right = Right.ToString();

            return Left.ConcateWith(new FlatRope(left + right));
        }
Пример #32
0
 public InputArgument(Rope value) : this((object)value)
 {
 }
Пример #33
0
 void Start()
 {
     mBalloon = GetComponent<Balloon>();
     mRigidbody2D = GetComponent<Rigidbody2D>();
     mLineRenderer = GetComponent<LineRenderer>();
     mBalloonJoint = GetComponent<HingeJoint2D>();
     mDistanceJoint = GetComponent<DistanceJoint2D>();
     mCircleCollider = GetComponent<CircleCollider2D>();
     mRope = GetComponentInChildren<Rope>();
     m_Parent = mBalloonHolder.transform;
     //EventListener.Register(EGameEvent.HAZARDOUS_COLLISION, OnHazardousCollision);
     mainCharacter = mTack.transform.parent;
     Physics2D.IgnoreCollision(mainCharacter.GetComponent<BoxCollider2D>(), mCircleCollider);
     EventService.Register<BalloonDelegate>(EGameEvent.PICKUP_BALLOON, OnPickupBalloon);
     EventService.Register<BalloonDelegate>(EGameEvent.DROP_BALLOON, OnDropBalloon);
     EventService.Register<AttachBalloonDelegate>(EGameEvent.ATTACH_BALLOON, OnAttachBalloon);
 }
Пример #34
0
        public RopeTest()
        {
            const int   N        = 20;
            const float L        = 0.5f;
            var         vertices = new Vector2[N];
            var         masses   = new float[N];

            for (var i = 0; i < N; ++i)
            {
                vertices[i].Set(0.0f, L * (N - i));
                masses[i] = 1.0f;
            }

            masses[0] = 0.0f;
            masses[1] = 0.0f;
            Tuning1   = new RopeTuning
            {
                BendHertz        = 30.0f,
                BendDamping      = 4.0f,
                BendStiffness    = 1.0f,
                BendingModel     = BendingModel.PbdTriangleBendingModel,
                Isometric        = true,
                StretchHertz     = 30.0f,
                StretchDamping   = 4.0f,
                StretchStiffness = 1.0f,
                StretchingModel  = StretchingModel.PbdStretchingModel
            };

            Tuning2 = new RopeTuning
            {
                BendHertz        = 30.0f,
                BendDamping      = 0.7f,
                BendStiffness    = 1.0f,
                BendingModel     = BendingModel.PbdHeightBendingModel,
                Isometric        = true,
                StretchHertz     = 30.0f,
                StretchDamping   = 1.0f,
                StretchStiffness = 1.0f,
                StretchingModel  = StretchingModel.PbdStretchingModel
            };

            Position1.Set(-5.0f, 15.0f);
            Position2.Set(5.0f, 15.0f);

            var def = new RopeDef
            {
                Vertices = vertices,
                Count    = N,
                Gravity  = new Vector2(0.0f, -10.0f),
                Masses   = masses,
                Position = Position1,
                Tuning   = Tuning1
            };

            Rope1 = new Rope();
            Rope1.Create(def);

            def.Position = Position2;
            def.Tuning   = Tuning2;
            Rope2        = new Rope();
            Rope2.Create(def);

            Iterations1 = 8;
            Iterations2 = 8;

            Speed = 10.0f;
        }
Пример #35
0
 private void DoTest <TToken, TInput>(
     Func <Parser <TToken, IEnumerable <TToken> >, TInput, Result <TToken, IEnumerable <TToken> > > parseFunc,
     Func <string, IEnumerable <TToken> > render,
     Func <string, TInput> toInput
     ) where TToken : IEquatable <TToken>
 {
     {
         var parser =
             Try(Parser <TToken> .Sequence(render("foo")))
             .Then(Parser <TToken> .Sequence(render("bar")))
             .Or(Parser <TToken> .Sequence(render("four")));
         AssertSuccess(parseFunc(parser, toInput("foobar")), render("bar"), true);
         AssertSuccess(parseFunc(parser, toInput("four")), render("four"), true);  // it should have consumed the "fo" but then backtracked
         AssertFailure(
             parseFunc(parser, toInput("foo")),
             new ParseError <TToken>(
                 Maybe.Nothing <TToken>(),
                 true,
                 new[] { new Expected <TToken>(Rope.CreateRange(render("foobar"))) },
                 new SourcePos(1, 4),
                 null
                 ),
             true
             );
         AssertFailure(
             parseFunc(parser, toInput("foobag")),
             new ParseError <TToken>(
                 Maybe.Just(render("g").Single()),
                 false,
                 new[] { new Expected <TToken>(Rope.CreateRange(render("foobar"))) },
                 new SourcePos(1, 6),
                 null
                 ),
             true
             );
         AssertFailure(
             parseFunc(parser, toInput("f")),
             new ParseError <TToken>(
                 Maybe.Nothing <TToken>(),
                 true,
                 new[] { new Expected <TToken>(Rope.CreateRange(render("four"))) },
                 new SourcePos(1, 2),
                 null
                 ),
             true
             );
         AssertFailure(
             parseFunc(parser, toInput("")),
             new ParseError <TToken>(
                 Maybe.Nothing <TToken>(),
                 true,
                 new[] { new Expected <TToken>(Rope.CreateRange(render("foobar"))), new Expected <TToken>(Rope.CreateRange(render("four"))) },
                 new SourcePos(1, 1),
                 null
                 ),
             false
             );
         AssertFailure(
             parseFunc(parser, toInput("foul")),
             new ParseError <TToken>(
                 Maybe.Just(render("l").Single()),
                 false,
                 new[] { new Expected <TToken>(Rope.CreateRange(render("four"))) },
                 new SourcePos(1, 4),
                 null
                 ),
             true
             );
     }
     {
         var parser = Try(
             Parser <TToken> .Sequence(render("foo")).Then(
                 Try(Parser <TToken> .Sequence(render("bar"))).Or(Parser <TToken> .Sequence(render("baz")))
                 )
             ).Or(Parser <TToken> .Sequence(render("foobat")));
         AssertSuccess(parseFunc(parser, toInput("foobar")), render("bar"), true);
         AssertSuccess(parseFunc(parser, toInput("foobaz")), render("baz"), true);
         // "" -> "foo" -> "fooba[r]" -> "foo" -> "fooba[z]" -> "foo" -> "" -> "foobat"
         AssertSuccess(parseFunc(parser, toInput("foobat")), render("foobat"), true);
         AssertFailure(
             parseFunc(parser, toInput("fooba")),
             new ParseError <TToken>(
                 Maybe.Nothing <TToken>(),
                 true,
                 new[] { new Expected <TToken>(Rope.CreateRange(render("foobat"))) },
                 new SourcePos(1, 6),
                 null
                 ),
             true
             );
         AssertFailure(
             parseFunc(parser, toInput("foobag")),
             new ParseError <TToken>(
                 Maybe.Just(render("g").Single()),
                 false,
                 new[] { new Expected <TToken>(Rope.CreateRange(render("foobat"))) },
                 new SourcePos(1, 6),
                 null
                 ),
             true
             );
         AssertFailure(
             parseFunc(parser, toInput("foob")),
             new ParseError <TToken>(
                 Maybe.Nothing <TToken>(),
                 true,
                 new[] { new Expected <TToken>(Rope.CreateRange(render("foobat"))) },
                 new SourcePos(1, 5),
                 null
                 ),
             true
             );
         AssertFailure(
             parseFunc(parser, toInput("foo")),
             new ParseError <TToken>(
                 Maybe.Nothing <TToken>(),
                 true,
                 new[] { new Expected <TToken>(Rope.CreateRange(render("foobat"))) },
                 new SourcePos(1, 4),
                 null
                 ),
             true
             );
         AssertFailure(
             parseFunc(parser, toInput("f")),
             new ParseError <TToken>(
                 Maybe.Nothing <TToken>(),
                 true,
                 new[] { new Expected <TToken>(Rope.CreateRange(render("foobat"))) },
                 new SourcePos(1, 2),
                 null
                 ),
             true
             );
         AssertFailure(
             parseFunc(parser, toInput("foul")),
             new ParseError <TToken>(
                 Maybe.Just(render("u").Single()),
                 false,
                 new[] { new Expected <TToken>(Rope.CreateRange(render("foobat"))) },
                 new SourcePos(1, 3),
                 null
                 ),
             true
             );
         AssertFailure(
             parseFunc(parser, toInput("")),
             new ParseError <TToken>(
                 Maybe.Nothing <TToken>(),
                 true,
                 new[] {
             new Expected <TToken>(Rope.CreateRange(render("foobar"))),
             new Expected <TToken>(Rope.CreateRange(render("foobat"))),
             new Expected <TToken>(Rope.CreateRange(render("foobaz")))
         },
                 new SourcePos(1, 1),
                 null
                 ),
             false
             );
     }
 }
 public void SetContent(string text)
 {
     _rope = new Rope <char>(text);
 }
Пример #37
0
 public Rope AddRope()
 {
     Rope rope = new Rope();
     return rope;
 }
Пример #38
0
 public void CutInfectingRope(Rope rope)
 {
     m_InfectingRopes.Remove(rope);
 }
Пример #39
0
        public void FixedUpdate()
        {
            var ray = Camera.main.ScreenPointToRay(Input.mousePosition);

            if (Input.GetMouseButton(0))
            {
                // Mouse down
                if (pulledRope == null)
                {
                    // Not pulling a rope, find the closest one to the mouse
                    var closestRopeIndex        = -1;
                    var closestParticleIndex    = -1;
                    var closestDistance         = 0.0f;
                    var closestDistanceAlongRay = 0.0f;

                    for (int i = 0; i < ropes.Length; i++)
                    {
                        ropes[i].GetClosestParticle(ray, out int particleIndex, out float distance, out float distanceAlongRay);

                        if (distance < closestDistance || i == 0)
                        {
                            closestRopeIndex        = i;
                            closestParticleIndex    = particleIndex;
                            closestDistance         = distance;
                            closestDistanceAlongRay = distanceAlongRay;
                        }
                    }

                    if (closestRopeIndex != -1 && closestParticleIndex != -1 && ropes[closestRopeIndex].GetMassMultiplierAt(closestParticleIndex) > 0.0f)
                    {
                        // Found a rope and particle on the rope, start pulling that particle!
                        pulledRope     = ropes[closestRopeIndex];
                        pulledParticle = closestParticleIndex;
                        pulledDistance = closestDistanceAlongRay;
                    }
                }
            }
            else
            {
                // Mouse up
                if (pulledRope != null)
                {
                    // Stop pulling the rope
                    pulledRope.SetMassMultiplierAt(pulledParticle, 1.0f);
                    pulledRope = null;
                }
            }

            if (pulledRope != null)
            {
                // We are pulling the rope

                // Adjust the grab plane
                pulledDistance += Input.mouseScrollDelta.y * 2.0f;

                // Move the rope particle to the mouse position on the grab-plane
                currentPosition = pulledRope.GetPositionAt(pulledParticle);
                targetPosition  = ray.GetPoint(pulledDistance);

                pulledRope.SetPositionAt(pulledParticle, targetPosition);
                pulledRope.SetVelocityAt(pulledParticle, float3.zero);
                pulledRope.SetMassMultiplierAt(pulledParticle, 0.0f);
            }
        }
Пример #40
0
 public void Roped(Rope newRope)
 {
     m_InfectingRopes.Add(newRope);
 }
Пример #41
0
 internal void Add(Rope r)
 {
     internalList.AddLast(r);
 }
Пример #42
0
    GameObject readXmlNode(XmlNode xmlNode, GameObject parent, string fileName)
    {
        GameObject go = new GameObject(xmlNode.Name);

        if (parent != null)
        {
            go.transform.parent = parent.transform;
        }

        if (xmlNode.NodeType == XmlNodeType.Comment)
        {
            CommentElement comment = go.AddComponent <CommentElement>();
            go.transform.parent = parent.transform;

            comment.comment = xmlNode.InnerText;
        }
        else if (xmlNode.Name == "vehicle")
        {
            Vehicle tag = go.AddComponent <Vehicle>();
            go.transform.parent = parent.transform;

            attachGameObjectProperties(tag, xmlNode);
            go.name = "<" + xmlNode.Name + " " + tag.teardownName + ">";

            tag.sound        = readString(xmlNode, "sound");
            tag.spring       = readFloat(xmlNode, "spring");
            tag.acceleration = readFloat(xmlNode, "acceleration");
            tag.antiroll     = readFloat(xmlNode, "antiroll");
            tag.damping      = readFloat(xmlNode, "damping");
            tag.friction     = readFloat(xmlNode, "friction");
            tag.difflock     = readFloat(xmlNode, "difflock");
            tag.steerassist  = readFloat(xmlNode, "steerassist");
            tag.topspeed     = readFloat(xmlNode, "topspeed");
            tag.driven       = readBool(xmlNode, "driven", false);
            tag.antispin     = readFloat(xmlNode, "antispin");
            tag.soundVolume  = readFloat(xmlNode, "soundvolume");

            go.transform.localRotation = Quaternion.Euler(tag.rotation);
            go.transform.localPosition = tag.position;
            if (tag.scale > 0)
            {
                go.transform.localScale = go.transform.localScale * tag.scale;
            }
            addToParent(parent, tag);
        }
        else if (xmlNode.Name == "wheel")
        {
            Wheel tag = go.AddComponent <Wheel>();
            go.transform.parent = parent.transform;

            attachTransformProperties(tag, xmlNode);
            go.name = "<" + xmlNode.Name + " " + tag.teardownName + ">";

            tag.steer  = readFloat(xmlNode, "steer");
            tag.drive  = readFloat(xmlNode, "drive");
            tag.travel = readVec2(xmlNode, "travel");
            go.transform.localRotation = Quaternion.Euler(tag.rotation);
            go.transform.localPosition = tag.position;
            if (tag.scale > 0)
            {
                go.transform.localScale = go.transform.localScale * tag.scale;
            }
            addToParent(parent, tag);
        }
        else if (xmlNode.Name == "spawnpoint")
        {
            SpawnPoint tag = go.AddComponent <SpawnPoint>();
            go.transform.parent = parent.transform;

            attachTransformProperties(tag, xmlNode);
            go.name = "<" + xmlNode.Name + " " + tag.teardownName + ">";

            go.transform.localRotation = Quaternion.Euler(tag.rotation);
            go.transform.localPosition = tag.position;
            if (tag.scale > 0)
            {
                go.transform.localScale = go.transform.localScale * tag.scale;
            }
            addToParent(parent, tag);
        }
        else if (xmlNode.Name == "location")
        {
            Location tag = go.AddComponent <Location>();
            go.transform.parent = parent.transform;

            attachTransformProperties(tag, xmlNode);
            go.name = "<" + xmlNode.Name + " " + tag.teardownName + ">";

            go.transform.localRotation = Quaternion.Euler(tag.rotation);
            go.transform.localPosition = tag.position;
            if (tag.scale > 0)
            {
                go.transform.localScale = go.transform.localScale * tag.scale;
            }
            addToParent(parent, tag);
        }
        else if (xmlNode.Name == "group")
        {
            Group tag = go.AddComponent <Group>();
            go.transform.parent = parent.transform;

            attachTransformProperties(tag, xmlNode);
            go.name = "<" + xmlNode.Name + " " + tag.teardownName + ">";

            go.transform.localRotation = Quaternion.Euler(tag.rotation);
            go.transform.localPosition = tag.position;
            if (tag.scale > 0)
            {
                go.transform.localScale = go.transform.localScale * tag.scale;
            }
            addToParent(parent, tag);
        }
        else if (xmlNode.Name == "rope")
        {
            Rope tag = go.AddComponent <Rope>();
            go.transform.parent = parent.transform;

            attachTransformProperties(tag, xmlNode);
            go.name = "<" + xmlNode.Name + " " + tag.teardownName + ">";

            go.transform.localRotation = Quaternion.Euler(tag.rotation);
            go.transform.localPosition = tag.position;

            tag.strength = readFloat(xmlNode, "strength");
            tag.slack    = readFloat(xmlNode, "slack");

            addToParent(parent, tag);
        }
        else if (xmlNode.Name == "screen")
        {
            Screen tag = go.AddComponent <Screen>();
            go.transform.parent = parent.transform;

            attachTransformProperties(tag, xmlNode);
            go.name = "<" + xmlNode.Name + " " + tag.teardownName + ">";

            go.transform.localRotation = Quaternion.Euler(tag.rotation);
            go.transform.localPosition = tag.position;

            tag.size        = readVec2(xmlNode, "size");
            tag.isEnabled   = readBool(xmlNode, "enabled", false);
            tag.interactive = readBool(xmlNode, "interactive", false);
            tag.emissive    = readFloat(xmlNode, "emissive");
            tag.color       = readColor(xmlNode, "color");
            tag.resolution  = readVec2(xmlNode, "resolution");
            tag.bulge       = readVec2(xmlNode, "bulge");
            tag.script      = readString(xmlNode, "script");
            if (tag.scale > 0)
            {
                go.transform.localScale = go.transform.localScale * tag.scale;
            }
            addToParent(parent, tag);
        }
        else if (xmlNode.Name == "vox")
        {
            Vox tag = go.AddComponent <Vox>();
            go.transform.parent = parent.transform;

            attachGameObjectProperties(tag, xmlNode);
            tag.file      = readString(xmlNode, "file").Replace("LEVEL", getLevelFolder(fileName));;
            tag.voxObject = readString(xmlNode, "object");
            tag.dynamic   = readBool(xmlNode, "prop", false);

            go.transform.localRotation = Quaternion.Euler(tag.rotation);
            go.transform.localPosition = tag.position;

            tag.Reload();

            if (tag.scale > 0)
            {
                go.transform.localScale *= tag.scale;
            }

            addToParent(parent, tag);
        }
        else if (xmlNode.Name == "joint")
        {
            TeardownJoint tag = go.AddComponent <TeardownJoint>();
            go.transform.parent = parent.transform;

            attachTransformProperties(tag, xmlNode);
            go.name = "<" + xmlNode.Name + " " + tag.teardownName + ">";

            tag.type        = (TeardownJoint.Type)Enum.Parse(typeof(TeardownJoint.Type), readString(xmlNode, "type", "ball"), false);
            tag.size        = readFloat(xmlNode, "size");
            tag.rotspring   = readFloat(xmlNode, "rotspring");
            tag.rotstrength = readFloat(xmlNode, "rotstrength");
            tag.limits      = readVec2(xmlNode, "limits");

            go.transform.localRotation = Quaternion.Euler(tag.rotation);
            go.transform.localPosition = tag.position;
            if (tag.scale > 0)
            {
                go.transform.localScale = go.transform.localScale * tag.scale;
            }

            addToParent(parent, tag);
        }
        else if (xmlNode.Name == "voxbox")
        {
            VoxBox tag = go.AddComponent <VoxBox>();
            go.transform.parent = parent.transform;

            attachGameObjectProperties(tag, xmlNode);
            go.name = "<" + xmlNode.Name + " " + tag.teardownName + ">";

            tag.color   = readColor(xmlNode, "color");
            tag.dynamic = readBool(xmlNode, "prop", false);
            go.transform.localRotation = Quaternion.Euler(tag.rotation);
            go.transform.localPosition = tag.position;

            GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
            cube.transform.parent        = go.transform;
            cube.transform.localPosition = new Vector3(0.5f, 0.5f, -0.5f);
            cube.transform.localRotation = Quaternion.identity;
            cube.GetComponent <MeshRenderer>().sharedMaterial = new Material(Shader.Find("Standard"));
            go.transform.localScale = tag.size / 10;
            if (tag.scale > 0)
            {
                go.transform.localScale = go.transform.localScale * tag.scale;
            }

            addToParent(parent, tag);
        }
        else if (xmlNode.Name == "body")
        {
            Body tag = go.AddComponent <Body>();
            go.transform.parent = parent.transform;

            attachGameObjectProperties(tag, xmlNode);
            go.name = "<" + xmlNode.Name + " " + tag.teardownName + ">";

            tag.dynamic = readBool(xmlNode, "dynamic", false);
            go.transform.localRotation = Quaternion.Euler(tag.rotation);
            go.transform.localPosition = tag.position;
            if (tag.scale > 0)
            {
                go.transform.localScale = go.transform.localScale * tag.scale;
            }

            addToParent(parent, tag);
        }
        else if (xmlNode.Name == "water")
        {
            go.name = "<" + xmlNode.Name + ">";
            Water tag = go.AddComponent <Water>();
            go.transform.parent = parent.transform;

            attachTransformProperties(tag, xmlNode);
            go.name = "<" + xmlNode.Name + " " + tag.teardownName + ">";

            go.transform.localRotation = Quaternion.Euler(tag.rotation);
            go.transform.localPosition = tag.position;
            if (tag.scale > 0)
            {
                go.transform.localScale = go.transform.localScale * tag.scale;
            }
            addToParent(parent, tag);
        }
        else if (xmlNode.Name == "environment")
        {
            TeardownEnvironment tag = go.AddComponent <TeardownEnvironment>();
            go.transform.parent = parent.transform;

            attachGeneralProperties(tag, xmlNode);
            go.name = "<" + xmlNode.Name + " " + tag.teardownName + ">";

            tag.skyboxrot     = readFloat(xmlNode, "skyboxrot");
            tag.sunBrightness = readFloat(xmlNode, "sunBrightness");
            tag.sunFogScale   = readFloat(xmlNode, "sunFogScale");
            tag.sunDir        = readVec3(xmlNode, "sunDir");
            tag.sunColorTint  = readColor(xmlNode, "sunColorTint");

            addToParent(parent, tag);
        }
        else if (xmlNode.Name == "scene")
        {
            Scene tag = go.AddComponent <Scene>();

            go.transform.parent = parent.transform;
            attachGeneralProperties(tag, xmlNode);

            go.name = "<" + xmlNode.Name + " " + tag.teardownName + ">";

            tag.shadowVolume = readVec3(xmlNode, "shadowVolume");
            tag.version      = readInt(xmlNode, "version");

            addToParent(parent, tag);
        }
        else if (xmlNode.Name == "boundary")
        {
            Boundary tag = go.AddComponent <Boundary>();
            attachGeneralProperties(tag, xmlNode);
            go.transform.parent = parent.transform;
            go.name             = "<" + xmlNode.Name + " " + tag.teardownName + ">";

            addToParent(parent, tag);
        }
        else if (xmlNode.Name == "script")
        {
            Script tag = go.AddComponent <Script>();
            attachGeneralProperties(tag, xmlNode);
            go.transform.parent = parent.transform;

            tag.file = readString(xmlNode, "file");
            go.name  = "<" + xmlNode.Name + " " + tag.teardownName + " " + tag.file + ">";

            addToParent(parent, tag);
        }
        else if (xmlNode.Name == "instance")
        {
            Instance tag = go.AddComponent <Instance>();
            go.transform.parent = parent.transform;
            attachGeneralProperties(tag, xmlNode);

            tag.file = readString(xmlNode, "file");
            go.name  = "<" + xmlNode.Name + " " + tag.teardownName + " " + tag.file + ">";

            if (!fileName.Contains("create") && tag.file.StartsWith("LEVEL"))
            {
                Debug.LogError("Your source file has no create folder in its path but an instance is referencing the level folder. Cannot import!");
            }
            else if (!tag.file.StartsWith("LEVEL"))
            {
                GameObject xmlRoot = readXML(tag.file);
                xmlRoot.GetComponentInChildren <Prefab>().gameObject.transform.transform.parent = go.transform;
                DestroyImmediate(xmlRoot);
            }
            else
            {
                GameObject xmlRoot = readXML(tag.file.Replace("LEVEL", getLevelFolder(fileName)));
                xmlRoot.GetComponentInChildren <Prefab>().gameObject.transform.transform.parent = go.transform;
                DestroyImmediate(xmlRoot);
            }
            go.transform.localRotation = Quaternion.Euler(tag.rotation);
            go.transform.localPosition = tag.position;
            if (tag.scale > 0)
            {
                go.transform.localScale = go.transform.localScale * tag.scale;
            }
            addToParent(parent, tag);
        }
        else if (xmlNode.Name == "prefab")
        {
            Prefab tag = go.AddComponent <Prefab>();
            go.transform.parent = parent.transform;

            attachGameObjectProperties(tag, xmlNode);
            go.name = "<" + xmlNode.Name + " " + tag.teardownName + ">";

            addToParent(parent, tag);
        }
        else if (xmlNode.Name == "vertex")
        {
            Vertex tag = go.AddComponent <Vertex>();
            go.transform.parent = parent.transform;
            attachGeneralProperties(tag, xmlNode);
            tag.pos = readVec2(xmlNode, "pos");

            go.name = "<" + xmlNode.Name + " " + tag.teardownName + ">";
            go.transform.localPosition = new Vector3(tag.pos.x, 0, tag.pos.y);

            addToParent(parent, tag);
        }
        else if (xmlNode.Name == "light")
        {
            Light tag = go.AddComponent <Light>();
            go.transform.parent = parent.transform;

            attachGeneralProperties(tag, xmlNode);
            attachTransformProperties(tag, xmlNode);
            go.name = "<" + xmlNode.Name + " " + tag.teardownName + ">";

            tag.penumbra   = readFloat(xmlNode, "penumbra");
            tag.unshadowed = readFloat(xmlNode, "unshadowed");
            tag.angle      = readFloat(xmlNode, "angle");
            tag.glare      = readFloat(xmlNode, "glare");
            tag.color      = readColor(xmlNode, "color");
            tag.type       = (Light.Type)Enum.Parse(typeof(Light.Type), readString(xmlNode, "type", "area"), false);

            go.transform.localRotation = Quaternion.Euler(tag.rotation);
            go.transform.localPosition = tag.position;
            if (tag.scale > 0)
            {
                go.transform.localScale = go.transform.localScale * tag.scale;
            }
            addToParent(parent, tag);
        }

        foreach (XmlNode child in xmlNode.ChildNodes)
        {
            GameObject childGameObject = readXmlNode(child, go, fileName);
        }

        return(go);
    }
Пример #43
0
 public static void StartWinding(this Rope rope)
 {
     StartRopeWinding(rope.Handle);
 }
Пример #44
0
 public SqlResultObject(DataSet dataSet, string text)
 {
     _dataSet = dataSet;
     _rope    = new Rope <char>(text);
 }
Пример #45
0
 private void Awake()
 {
     instance = this;
 }
Пример #46
0
 public void SetText(string value)
 {
     _rope = new Rope <char>(value);
 }
Пример #47
0
    public void FixedUpdate()
    {
        if (this.m_nodes.Count == 0)
        {
            return;
        }
        float num  = Mathf.Max(this.m_nodes[0].rigidbody.velocity.magnitude, this.m_nodes[this.m_nodes.Count - 1].rigidbody.velocity.magnitude);
        Rope  rope = (!(this.m_rightPart != null)) ? null : this.m_rightPart.GetComponent <Rope>();

        if (rope)
        {
            Vector3 position  = this.m_nodes[this.m_nodes.Count - 1].rigidbody.position;
            Vector3 position2 = rope.FirstSegment.GetComponent <Rigidbody>().position;
            if (Vector3.Distance(position, position2) > 0.1f)
            {
                rope.FirstSegment.GetComponent <Rigidbody>().position = position;
            }
        }
        for (int i = 0; i < this.m_nodes.Count; i++)
        {
            Rigidbody rigidbody = this.m_nodes[i].rigidbody;
            Rigidbody rigidbody2;
            if (i == 0)
            {
                rigidbody2 = rigidbody;
            }
            else
            {
                rigidbody2 = this.m_nodes[i - 1].rigidbody;
            }
            Rigidbody rigidbody3;
            if (i == this.m_nodes.Count - 1)
            {
                rigidbody3 = rigidbody;
            }
            else
            {
                rigidbody3 = this.m_nodes[i + 1].rigidbody;
            }
            float magnitude = (rigidbody.velocity - 0.4f * rigidbody2.velocity - 0.4f * rigidbody3.velocity).magnitude;
            rigidbody.AddForce(-0.02f * magnitude * magnitude * rigidbody.velocity.normalized, ForceMode.Force);
            rigidbody.drag = 0.5f + 6f / (1f + 4f * num * num);
        }
        for (int j = 1; j < this.m_nodes.Count; j++)
        {
            if (!this.m_ropeCut || j != this.m_cutIndex)
            {
                Rigidbody rigidbody4 = this.m_nodes[j - 1].rigidbody;
                Rigidbody rigidbody5 = this.m_nodes[j].rigidbody;
                Vector3   a          = rigidbody5.gameObject.transform.position - rigidbody4.gameObject.transform.position;
                float     num2       = a.magnitude;
                if (num2 > 0.5f)
                {
                    num2 -= 0.5f;
                    if (num2 < 1f)
                    {
                        num2 = Mathf.Pow(num2, 0.75f);
                    }
                    else
                    {
                        num2 = Mathf.Pow(num2, 2f);
                    }
                    num2 = Mathf.Clamp(num2, 0f, 2f);
                    a    = num2 * a.normalized;
                    Vector3 a2 = -a;
                    rigidbody4.AddForce(70f * a, ForceMode.Force);
                    rigidbody5.AddForce(70f * a2, ForceMode.Force);
                }
                else if (num2 < 0.4f)
                {
                    rigidbody4.AddForce(50f * (num2 - 0.4f) * a.normalized, ForceMode.Force);
                    rigidbody5.AddForce(-50f * (num2 - 0.4f) * a.normalized, ForceMode.Force);
                }
            }
        }
        if (!this.m_ropeCut)
        {
            this.PullEndpoints();
        }
    }
Пример #48
0
 // Start is called before the first frame update
 void Start()
 {
     rope = GameObject.Find("Rope").GetComponent <Rope>();
 }
Пример #49
0
        /// <summary>
        /// Creates a new BufferManager and attaches it to a control.
        /// </summary>
        /// <param name="parent">The parent control to attach to.</param>
        public BufferManager(Control parent)
        {
            this.parent = parent;

            this.buffer = new Rope <byte>();
        }
Пример #50
0
        /// <summary>
        /// Draws the control, using SpriteBatch, PrimitiveBatch and SpriteFont.
        /// </summary>
        protected override void Draw()
        {
            Vector2 offset = new Vector2(((GraphicsDevice.Viewport.Width * 0.5f) / Camera.Zoom) - Camera.Pos.X, ((GraphicsDevice.Viewport.Height * 0.5f) / Camera.Zoom) - Camera.Pos.Y);

            if (!bDoNotDraw)
            {
                UpdateTime();

                GraphicsDevice.Clear(Color.CornflowerBlue);

                List <Decal>       decalList    = STATIC_EDITOR_MODE.levelInstance.DecalManager.DecalList;
                List <NodeObject>  objectsList  = STATIC_EDITOR_MODE.levelInstance.ObjectsList;
                List <ObjectIndex> selectedList = STATIC_EDITOR_MODE.selectedObjectIndices;

                #region Objects and selection overlay
                spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend, SamplerState.AnisotropicWrap, null, null, null, Camera.get_transformation(new Vector2(this.Width, this.Height)));

                #region Draw Generics
                if (levelBackground != null)
                {
                    spriteBatch.Draw(levelBackground, new Rectangle(-(int)(levelDimensions.X * 0.5f), -(int)(levelDimensions.Y * 0.5f), (int)levelDimensions.X, (int)levelDimensions.Y),
                                     new Rectangle(0, 0, (int)this.levelDimensions.X, (int)this.levelDimensions.Y), Color.White, 0.0f, Vector2.Zero, SpriteEffects.None, 1.0f);
                }

                if (!HidePlayerSpawn)
                {
                    spriteBatch.Draw(devCharacter, STATIC_EDITOR_MODE.levelInstance.PlayerSpawnLocation,
                                     null, Color.White, 0.0f, new Vector2(this.devCharacter.Width, this.devCharacter.Height) * 0.5f,
                                     0.43f, SpriteEffects.None, 0.3f);
                }

                #endregion

                #region Draw PhysicsObjects and Decals
                if (objectsList.Count > 0)
                {
                    for (int i = objectsList.Count - 1; i >= 0; i--)
                    {
                        objectsList[i].Draw(spriteBatch);
                    }
                }

                if (decalList.Count > 0)
                {
                    for (int i = decalList.Count - 1; i >= 0; i--)
                    {
                        decalList[i].Draw(spriteBatch);
                    }
                }

                #endregion

                #region Draw object overlay

                if (!HideOverlay)
                {
                    for (int i = selectedList.Count - 1; i >= 0; i--)
                    {
                        int index = selectedList[i].Index;

                        if (selectedList[i].Type == OBJECT_TYPE.Physics)
                        {
                            spriteBatch.Draw(debugOverlay,
                                             objectsList[index].Position,
                                             new Rectangle(0, 0,
                                                           (int)objectsList[index].Width,
                                                           (int)objectsList[index].Height),
                                             Color.Green * 0.3f, 0.0f, new Vector2(objectsList[index].Width, objectsList[index].Height) * 0.5f,
                                             1.0f, SpriteEffects.None, 0.001f);
                        }
                        else
                        {
                            float width  = decalList[index].Width * decalList[index].Scale;
                            float height = decalList[index].Height * decalList[index].Scale;

                            spriteBatch.Draw(debugOverlay,
                                             decalList[index].Position,
                                             new Rectangle(0, 0, (int)width, (int)height),
                                             Color.Green * 0.3f, decalList[index].Rotation,
                                             new Vector2(width, height) * 0.5f, 1.0f, SpriteEffects.None, 0.001f);
                        }
                    }
                }

                #endregion

                #region Draw Names

                if (!HideObjectNames)
                {
                    for (int i = objectsList.Count - 1; i >= 0; i--)
                    {
                        NodeObject obj = objectsList[i];

                        if (obj.Name != null || obj.Name != "")
                        {
                            Vector2 textOrigin = font.MeasureString(obj.Name) * 0.5f;

                            spriteBatch.DrawString(font, obj.Name, obj.Position, Color.White, 0.0f, textOrigin, 1.5f, SpriteEffects.None, 0.0f);
                        }
                    }
                }

                #endregion

                spriteBatch.End();
                #endregion

                #region Primitives
                //  Primitive batch calls need to be made OUTSIDE of a spriteBatch,
                //  otherwise it causes horrible FPS problems.
                //  Therefore, we'll do it afterwards and apply a basic transform
                //  on their positions using the camera.
                primBatch.Begin(PrimitiveType.LineList);

                #region Movement paths
                if (!HideMovementPath)
                {
                    for (int i = 0; i < objectsList.Count; i++)
                    {
                        Type t = objectsList[i].GetType();
                        if (t.BaseType == typeof(DynamicObject))
                        {
                            DynamicObject dyObj = (DynamicObject)objectsList[i];
                            primBatch.AddVertex((dyObj.Position + offset) * Camera.Zoom, Color.Red);
                            primBatch.AddVertex((dyObj.EndPosition + offset) * Camera.Zoom, Color.Red);
                        }
                        else if (t == typeof(Rope))
                        {
                            Rope ropeObj = (Rope)objectsList[i];
                            primBatch.AddVertex((ropeObj.Position + offset) * Camera.Zoom, Color.Red);
                            primBatch.AddVertex((ropeObj.EndPosition + offset) * Camera.Zoom, Color.Red);
                        }
                    }
                }
                #endregion

                #region Grid
                if (!HideGrid)
                {
                    for (int i = 0; i < xLineCount + 2; i++)
                    {
                        primBatch.AddVertex(new Vector2(xOffset + xySpacing * i, 0), Color.White * 0.2f);
                        primBatch.AddVertex(new Vector2(xOffset + xySpacing * i, GraphicsDevice.Viewport.Height), Color.White * 0.2f);
                    }
                    for (int i = 0; i < yLineCount + 2; i++)
                    {
                        primBatch.AddVertex(new Vector2(0, yOffset + xySpacing * i), Color.White * 0.2f);
                        primBatch.AddVertex(new Vector2(GraphicsDevice.Viewport.Width, yOffset + xySpacing * i), Color.White * 0.2f);
                    }
                }
                #endregion

                #region Event Targets

                if (!HideEventTargets)
                {
                    NodeObject obj = new NodeObject();

                    for (int i = 0; i < objectsList.Count; i++)
                    {
                        obj = objectsList[i];

                        //  Check if the object has a name (it can't use events if it doesn't).
                        if (obj.Name != null && obj.Name != "")
                        {
                            //  Check it has some events to target.
                            if (obj.EventList.Count > 0)
                            {
                                //  For the next part we need to check the name of each target
                                //  in the event list and compare it with objects in the objectList
                                for (int j = 0; j < obj.EventList.Count; j++)
                                {
                                    for (int x = 0; x < objectsList.Count; x++)
                                    {
                                        //  Check if the name of the object in the objectList matches
                                        //  the target
                                        if (obj.EventList[j].TargetName == objectsList[x].Name)
                                        {
                                            //  It is our target, so draw it.
                                            primBatch.AddVertex((obj.Position + offset) * Camera.Zoom, Color.Pink);
                                            primBatch.AddVertex((objectsList[x].Position + offset) * Camera.Zoom, Color.Pink);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }

                #endregion

                primBatch.End();
                #endregion

                #region Screen Rotation Point

                spriteBatch.Begin();

                spriteBatch.Draw(crosshair,
                                 new Vector2((GraphicsDevice.Viewport.Width / 2 / Camera.Zoom) - Camera.Pos.X - (crosshair.Width / 2 / Camera.Zoom),
                                             (GraphicsDevice.Viewport.Height / 2 / Camera.Zoom) - Camera.Pos.Y - (crosshair.Height / 2 / Camera.Zoom)) * Camera.Zoom,
                                 Color.White * 0.2f);

                spriteBatch.End();
                #endregion

                #region Text Coordinates



                if (!HideCoordinates)
                {
                    spriteBatch.Begin();

                    spriteBatch.DrawString(font, "Level Co-ords: ",
                                           new Vector2(0, 0),
                                           Color.White);
                    spriteBatch.DrawString(font, worldCoOrds,
                                           new Vector2(0, 20),
                                           Color.White);

                    spriteBatch.End();
                }
                #endregion
            }
        }
Пример #51
0
 public SoapResult(Stream data)
 {
   var rope = new Rope<char>();
   using (var reader = new StreamReader(data))
   using (var writer = new Editor.RopeWriter(rope))
   {
     /*var buffer = new char[4096];
     var count = reader.Read(buffer, 0, buffer.Length);
     while (count > 0)
     {
       writer.Write(buffer, 0, count);
       count = reader.Read(buffer, 0, buffer.Length);
     }*/
     IndentXml(reader, writer);
   }
   _text = new RopeTextSource(rope);
 }
Пример #52
0
        // Tests various functionality of ropes
        static void RopeTests()
        {
            Console.WriteLine(new string('-', 100));
            Console.WriteLine("Testing Rope Functionality");

            // Constructor for long string
            Rope rope = new Rope("aaaaabbbbbcccccdddddeeeeefffffggggghhhhhiiiiijjjjjkkkkklllllmmmmmnnnnnooooopppppqqqqqrrrrrssssstttttuuuuuvvvvvwwwwwxxxxxyyyyyzzzzz");

            Console.Write("Rope Value: ");
            rope.Print();
            Console.WriteLine("Rope Structure: ");
            rope.PrintStructure();
            Console.WriteLine(new string('-', 100));

            // Concatenation normal case
            Rope rope2 = Rope.Concatenate(new Rope("abcdefghijklmnopqrstuvwxyz"), new Rope("zyxwvutsrqponmlkjihgfedcba"));

            Console.Write("Rope Value: ");
            rope2.Print();
            Console.WriteLine("Rope Structure: ");
            rope2.PrintStructure();
            Console.WriteLine(new string('-', 100));

            // Concatenation 2 small ropes
            Rope rope3 = Rope.Concatenate(new Rope("12345"), new Rope("54321"));

            Console.Write("Rope Value: ");
            rope3.Print();
            Console.WriteLine("Rope Structure: ");
            rope3.PrintStructure();
            Console.WriteLine(new string('-', 100));

            // Concatenation, rope with small right child + small rope
            Rope rope4 = Rope.Concatenate(new Rope("123456789012345"), new Rope("abcd"));

            Console.Write("Rope Value: ");
            rope4.Print();
            Console.WriteLine("Rope Structure: ");
            rope4.PrintStructure();
            Console.WriteLine(new string('-', 100));

            Console.Write("Rope Value: ");
            rope.Print();
            // Substring overlapping nodes
            Console.WriteLine("\nSubstring [23,47]: " + rope.Substring(23, 47));
            // substring single node
            Console.WriteLine("Substring [23,25]: " + rope.Substring(23, 25));
            // substring single char
            Console.WriteLine("Substring [99,99]: " + rope.Substring(99, 99));
            // substring index 0 bound
            Console.WriteLine("Substring [0,32]: " + rope.Substring(0, 32));
            // substring max index bound
            Console.WriteLine("Substring [0,32]: " + rope.Substring(102, 129));
            // substring index < 0
            Console.WriteLine("Substring [-1,10]: " + (rope.Substring(-1, 10) == null ? "No substring found" : "Substring found"));
            // substring > max
            Console.WriteLine("Substring [50,150]: " + (rope.Substring(50, 150) == null ? "No substring found" : "Substring found"));
            // start index > end index
            Console.WriteLine("Substring [20,10]: " + (rope.Substring(20, 10) == null ? "No substring found" : "Substring found"));

            // ChatAt index within range
            Console.WriteLine("\nChar at index 25: " + rope.CharAt(25));
            // ChatAt index 0
            Console.WriteLine("Char at index 25: " + rope.CharAt(0));
            // ChatAt max index
            Console.WriteLine("Char at index 25: " + rope.CharAt(129));
            // ChatAt index < 0
            Console.WriteLine("Char at index 25: " + (rope.CharAt(130) == '\0' ? "No char found" : "char found"));
            // ChatAt index > max
            Console.WriteLine("Char at index 25: " + (rope.CharAt(-1) == '\0' ? "No char found" : "char found"));

            // Find string accross multiple nodes
            Console.WriteLine("\nFind string \"dddee\" index: " + rope.Find("dddee"));
            // Find string in single node
            Console.WriteLine("Find string \"dddee\" index: " + rope.Find("ggghh"));
            // find string not in rope
            Console.WriteLine("Find string \"dddee\" index: " + rope.Find("xxxxxx"));
            // find empty string
            Console.WriteLine("Find string \"dddee\" index: " + rope.Find(""));
            // find string exceeding rope capacity
            Console.WriteLine("Find string \"dddee\" index: " + rope.Find(new string('a', 200)));

            // Splitting rope at end node
            Console.WriteLine(new string('-', 100));
            Console.WriteLine("Splitting rope at index 69");
            Rope rope5 = rope.Split(69);

            Console.Write("Left Split Rope Value: ");
            rope.Print();
            Console.WriteLine("Left Split Rope Structure: ");
            rope.PrintStructure();
            Console.Write("Right Split Rope Value: ");
            rope5.Print();
            Console.WriteLine("Right Split Rope Structure: ");
            rope5.PrintStructure();

            // splitting rope mid node
            Console.WriteLine(new string('-', 100));
            Console.WriteLine("Splitting rope at index 48");
            rope5 = rope.Split(48);
            Console.Write("Left Split Rope Value: ");
            rope.Print();
            Console.WriteLine("Left Split Rope Structure: ");
            rope.PrintStructure();
            Console.Write("Right Split Rope Value: ");
            rope5.Print();
            Console.WriteLine("Right Split Rope Structure: ");
            rope5.PrintStructure();

            // splitting rope at end of rope
            Console.WriteLine(new string('-', 100));
            Console.WriteLine("Splitting rope at index 48");
            rope5 = rope.Split(48);
            Console.Write("Left Split Rope Value: ");
            rope.Print();
            Console.WriteLine("Left Split Rope Structure: ");
            rope.PrintStructure();
            Console.Write("Right Split Rope Value: ");
            rope5.Print();
            Console.WriteLine("Right Split Rope Structure: ");
            rope5.PrintStructure();

            // splitting rope at start of rope (index - 1)
            Console.WriteLine(new string('-', 100));
            Console.WriteLine("Splitting rope at index -1");
            rope5 = rope.Split(-1);
            Console.Write("Left Split Rope Value: ");
            rope.Print();
            Console.WriteLine("Left Split Rope Structure: ");
            rope.PrintStructure();
            Console.Write("Right Split Rope Value: ");
            rope5.Print();
            Console.WriteLine("Right Split Rope Structure: ");
            rope5.PrintStructure();

            rope = rope5;
            // splitting rope at index > rope length
            Console.WriteLine(new string('-', 100));
            Console.WriteLine("Splitting rope at index 100");
            rope5 = rope.Split(100);
            Console.Write("Left Split Rope Value: ");
            rope.Print();
            Console.WriteLine("Left Split Rope Structure: ");
            rope.PrintStructure();
            Console.WriteLine("Right Split Rope Value: " + (rope5 == null ? "null" : " not null"));

            // splitting rope at index < start
            Console.WriteLine(new string('-', 100));
            Console.WriteLine("Splitting rope at index -10");
            rope5 = rope.Split(-10);
            Console.Write("Left Split Rope Value: ");
            rope.Print();
            Console.WriteLine("Left Split Rope Structure: ");
            rope.PrintStructure();
            Console.WriteLine("Right Split Rope Value: " + (rope5 == null ? "null" : " not null"));



            Console.WriteLine(new string('-', 100));
            rope = new Rope("aaaaabbbbbcccccdddddeeeeefffffggggghhhhhiiiiijjjjjkkkkklllllmmmmmnnnnnooooopppppqqqqqrrrrrssssstttttuuuuuvvvvvwwwwwxxxxxyyyyyzzzzz");
            Console.Write("Rope Value: ");
            rope.Print();
            Console.WriteLine("Rope Structure: ");
            rope.PrintStructure();

            // deleting from center of rope crossing multiple nodes
            Console.WriteLine(new string('-', 100));
            if (rope.Delete(30, 65))
            {
                Console.WriteLine("Deleted substring [30,65]");
            }
            else
            {
                Console.WriteLine("Failed to delete substring [30,65]");
            }
            Console.Write("Rope Value: ");
            rope.Print();
            Console.WriteLine("Rope Structure: ");
            rope.PrintStructure();
            Console.WriteLine(new string('-', 100));

            // deleting single character
            if (rope.Delete(90, 90))
            {
                Console.WriteLine("Deleted substring [90,90]");
            }
            else
            {
                Console.WriteLine("Failed to delete substring [90,90]");
            }
            Console.Write("Rope Value: ");
            rope.Print();
            Console.WriteLine("Rope Structure: ");
            rope.PrintStructure();
            Console.WriteLine(new string('-', 100));

            // deleting from middle of string
            if (rope.Delete(50, 68))
            {
                Console.WriteLine("Deleted substring [50,68]");
            }
            else
            {
                Console.WriteLine("Failed to delete substring [50,68]");
            }
            Console.Write("Rope Value: ");
            rope.Print();
            Console.WriteLine("Rope Structure: ");
            rope.PrintStructure();
            Console.WriteLine(new string('-', 100));

            // deleting from end of string
            if (rope.Delete(48, 73))
            {
                Console.WriteLine("Deleted substring [48,73]");
            }
            else
            {
                Console.WriteLine("Failed to delete substring [48,73]");
            }
            Console.Write("Rope Value: ");
            rope.Print();
            Console.WriteLine("Rope Structure: ");
            rope.PrintStructure();
            Console.WriteLine(new string('-', 100));

            // deleting from start of string
            if (rope.Delete(0, 15))
            {
                Console.WriteLine("Deleted substring [0,15]");
            }
            else
            {
                Console.WriteLine("Failed to delete substring [0,15]");
            }
            Console.Write("Rope Value: ");
            rope.Print();
            Console.WriteLine("Rope Structure: ");
            rope.PrintStructure();
            Console.WriteLine(new string('-', 100));

            // deleting with second bound exceding string size
            if (rope.Delete(25, 100))
            {
                Console.WriteLine("Deleted substring [25,100]");
            }
            else
            {
                Console.WriteLine("Failed to delete substring [25,100]");
            }
            Console.Write("Rope Value: ");
            rope.Print();
            Console.WriteLine(new string('-', 100));

            // deleting with first bound exceding string size
            if (rope.Delete(-10, 10))
            {
                Console.WriteLine("Deleted substring [-10,10]");
            }
            else
            {
                Console.WriteLine("Failed to delete substring [-10,10]");
            }
            Console.Write("Rope Value: ");
            rope.Print();
            Console.WriteLine(new string('-', 100));

            // inserting at center of rope
            if (rope.Insert("ABCDEFGHIJKLMNO", 11))
            {
                Console.WriteLine("Inserted \"ABCDEFGHIJKLMNO\" at index 11");
            }
            else
            {
                Console.WriteLine("Failed to insert at index 11");
            }
            Console.Write("Rope Value: ");
            rope.Print();
            Console.WriteLine("Rope Structure: ");
            rope.PrintStructure();
            Console.WriteLine(new string('-', 100));


            // inserting samll string inside other string
            if (rope.Insert("QRS", 28))
            {
                Console.WriteLine("Inserted \"QRS\" at index 28");
            }
            else
            {
                Console.WriteLine("Failed to insert at index 28");
            }
            Console.Write("Rope Value: ");
            rope.Print();
            Console.WriteLine("Rope Structure: ");
            rope.PrintStructure();
            Console.WriteLine(new string('-', 100));

            // inserting at start of rope
            if (rope.Insert("TUVW", 0))
            {
                Console.WriteLine("Inserted \"TUVM\" at index 0");
            }
            else
            {
                Console.WriteLine("Failed to insert at index 0");
            }
            Console.Write("Rope Value: ");
            rope.Print();
            Console.WriteLine("Rope Structure: ");
            rope.PrintStructure();
            Console.WriteLine(new string('-', 100));

            // inserting at end of rope
            if (rope.Insert("XYZ", 54))
            {
                Console.WriteLine("Inserted \"XYZ\" at index 54");
            }
            else
            {
                Console.WriteLine("Failed to insert at index 54");
            }
            Console.Write("Rope Value: ");
            rope.Print();
            Console.WriteLine("Rope Structure: ");
            rope.PrintStructure();
            Console.WriteLine(new string('-', 100));

            // inserting before start of rope
            if (rope.Insert("AAAAA", -10))
            {
                Console.WriteLine("Inserted \"AAAA\" at index -10");
            }
            else
            {
                Console.WriteLine("Failed to insert at index -10");
            }
            Console.Write("Rope Value: ");
            rope.Print();


            // inserting after end of rope
            if (rope.Insert("ZZZZZ", 100))
            {
                Console.WriteLine("Inserted \"ABCDEFGHIJKLMNO\" at index 100");
            }
            else
            {
                Console.WriteLine("Failed to insert at index 100");
            }
            Console.Write("Rope Value: ");
            rope.Print();


            /*
             * Console.WriteLine(rope.CharAt(89));
             * Console.WriteLine(rope.Substring(20, 55));
             * Console.WriteLine(rope.Find("aaaaabbbbbbb"));
             * //Rope split = rope.Split(25);
             * rope.Insert("123456789012345", 0);
             * rope.PrintStructure();
             * rope.Delete(0, 170);
             * rope.PrintStructure();
             * rope.Print();
             * rope.Insert("123456789012345", 0);
             * rope.PrintStructure();
             * //split.PrintStructure();
             */
        }
Пример #53
0
 public override Rope <byte> serialize(int a) => Rope.a(BitConverter.GetBytes(a));
 private void Start()
 {
     rope = GetComponentInChildren <Rope>();
 }
        public override void GenerateLoot()
        {
            if (Utility.Random(100) <= 20)
            {
                int hue = Utility.RandomMinMax(1, 1001);

                Sandals sandals = new Sandals();

                sandals.Hue = hue;

                PackItem(sandals);
            }

            if (Utility.Random(100) <= 10)
            {
                int hue = Utility.RandomMinMax(1, 1001);

                Sandals sandals = new Sandals();

                sandals.Hue = hue;

                PackItem(sandals);
            }

            if (Utility.Random(100) <= 5)
            {
                int hue = Utility.RandomMinMax(1, 1001);

                Sandals sandals = new Sandals();

                sandals.Hue = hue;

                PackItem(sandals);
            }

            if (Utility.Random(100) <= 5)
            {
                int hue = Utility.RandomMinMax(1201, 1255);

                Sandals sandals = new Sandals();

                sandals.Hue = hue;

                PackItem(sandals);
            }

            if (Utility.Random(100) <= 2)
            {
                int hue = Utility.RandomMinMax(2101, 2130);

                Sandals sandals = new Sandals();

                sandals.Hue = hue;

                PackItem(sandals);
            }


            if (Utility.Random(100) <= 1)
            {
                int hue = 2936;

                Sandals sandals = new Sandals();

                sandals.Hue = hue;

                PackItem(sandals);
            }

            if (Utility.Random(1000) <= 2)
            {
                int     hue;
                Sandals sandals = new Sandals();

                switch (Utility.Random(7))
                {
                case 0: hue = 1155; break;

                case 1: hue = 1156; break;

                case 2: hue = 1157; break;

                case 3: hue = 1158; break;

                case 4: hue = 1160; break;

                case 5: hue = 1172; break;

                default: hue = 1175; break;
                }

                sandals.Hue = hue;
                PackItem(sandals);
            }

            if (Utility.Random(1000) <= 2)
            {
                int     hue;
                Sandals sandals = new Sandals();

                switch (Utility.Random(5))
                {
                case 0: hue = 1176; break;

                case 1: hue = 1171; break;

                case 2: hue = 1159; break;

                case 3: hue = 1170; break;

                default: hue = 1161; break;
                }

                sandals.Hue = hue;
                PackItem(sandals);
            }


            double chance = Utility.RandomDouble();

            if (chance <= 0.10)
            {
                Seed seed;

                PlantType type;
                switch (Utility.Random(17))
                {
                case 0: type = PlantType.CampionFlowers; break;

                case 1: type = PlantType.Poppies; break;

                case 2: type = PlantType.Snowdrops; break;

                case 3: type = PlantType.Bulrushes; break;

                case 4: type = PlantType.Lilies; break;

                case 5: type = PlantType.PampasGrass; break;

                case 6: type = PlantType.Rushes; break;

                case 7: type = PlantType.ElephantEarPlant; break;

                case 8: type = PlantType.Fern; break;

                case 9: type = PlantType.PonytailPalm; break;

                case 10: type = PlantType.SmallPalm; break;

                case 11: type = PlantType.CenturyPlant; break;

                case 12: type = PlantType.WaterPlant; break;

                case 13: type = PlantType.SnakePlant; break;

                case 14: type = PlantType.PricklyPearCactus; break;

                case 15: type = PlantType.BarrelCactus; break;

                default: type = PlantType.TribarrelCactus; break;
                }

                PlantHue hue;
                switch (Utility.Random(19))
                {
                case 0: hue = PlantHue.Plain; break;

                case 1: hue = PlantHue.Red; break;

                case 2: hue = PlantHue.Blue; break;

                case 3: hue = PlantHue.Yellow; break;

                case 4: hue = PlantHue.BrightRed; break;

                case 5: hue = PlantHue.BrightBlue; break;

                case 6: hue = PlantHue.BrightYellow; break;

                case 7: hue = PlantHue.Purple; break;

                case 8: hue = PlantHue.Green; break;

                case 9: hue = PlantHue.Orange; break;

                case 10: hue = PlantHue.BrightPurple; break;

                case 11: hue = PlantHue.BrightGreen; break;

                case 12: hue = PlantHue.BrightOrange; break;

                case 13: hue = PlantHue.Black; break;

                case 14: hue = PlantHue.White; break;

                case 15: hue = PlantHue.Pink; break;

                case 16: hue = PlantHue.Magenta; break;

                case 17: hue = PlantHue.Aqua; break;

                default: hue = PlantHue.FireRed; break;
                }

                seed = new Seed(type, hue, false);
                PackItem(seed);

                if (Utility.Random(500) == 1)
                {
                    PackItem(new BlackDyeTub());
                }

                if (Utility.Random(100) < 15)
                {
                    Item item;

                    switch (Utility.Random(111))
                    {
                    case 0: item = new Tapestry6W(); break;

                    case 1: item = new MetalChest(); break;

                    case 2: item = new MetalGoldenChest(); break;

                    case 3: item = new MetalBox(); break;

                    case 4: item = new AniLargeVioletFlask(); break;

                    case 5: item = new AniRedRibbedFlask(); break;

                    case 6: item = new AniSmallBlueFlask(); break;

                    case 7: item = new BlueBeaker(); break;

                    case 8: item = new BlueCurvedFlask(); break;

                    case 9: item = new EmptyVial(); break;

                    case 10: item = new EmptyVialsWRack(); break;

                    case 11: item = new LargeFlask(); break;

                    case 12: item = new LargeVioletFlask(); break;

                    //case 13: item = new HourGlass(); break;
                    //case 14: item = new HourGlassAni(); break;
                    case 15: item = new DecorativeDAxeWest(); break;

                    case 16: item = new DecorativeDAxeNorth(); break;

                    case 17: item = new DecorativeBowWest(); break;

                    case 18: item = new DecorativeBowNorth(); break;

                    case 19: item = new DecorativeAxeWest(); break;

                    case 20: item = new DecorativeAxeNorth(); break;

                    case 21: item = new DecorativeShieldSword2West(); break;

                    case 22: item = new DecorativeShieldSword2North(); break;

                    case 23: item = new DecorativeShieldSword1West(); break;

                    case 24: item = new DecorativeShieldSword1North(); break;

                    case 25: item = new DecorativeShield11(); break;

                    case 26: item = new DecorativeShield10(); break;

                    case 27: item = new DecorativeShield9(); break;

                    case 28: item = new DecorativeShield8(); break;

                    case 29: item = new DecorativeShield7(); break;

                    case 30: item = new DecorativeShield6(); break;

                    case 31: item = new DecorativeShield5(); break;

                    case 32: item = new DecorativeShield4(); break;

                    case 33: item = new DecorativeShield3(); break;

                    case 34: item = new DecorativeShield2(); break;

                    case 35: item = new DecorativeShield1(); break;

                    case 36: item = new Whip(); break;

                    case 37: item = new SilverWire(); break;

                    case 38: item = new Rope(); break;

                    case 39: item = new PaintsAndBrush(); break;

                    case 40: item = new IronWire(); break;

                    case 41: item = new GoldWire(); break;

                    case 42: item = new CopperWire(); break;

                    case 43: item = new WoodDebris(); break;

                    case 44: item = new RuinedPainting(); break;

                    case 45: item = new RuinedFallenChairB(); break;

                    case 46: item = new FullVialsWRack(); break;

                    case 47: item = new FullJar(); break;

                    case 48: item = new FullJars2(); break;

                    case 49: item = new FullJars3(); break;

                    case 50: item = new FullJars4(); break;

                    case 51: item = new GreenBeaker(); break;

                    case 52: item = new GreenBottle(); break;

                    case 53: item = new VioletStemmedBottle(); break;

                    case 54: item = new SpinningHourglass(); break;

                    case 55: item = new ArcheryButte(); break;

                    case 56: item = new PhillipsWoodenSteed(); break;

                    case 57: item = new PileOfGlacialSnow(); break;

                    case 58: item = new RedPoinsettia(); break;

                    case 59: item = new RoseOfTrinsic(); break;

                    case 60: item = new RaiseSwitch(); break;

                    case 61: item = new SpecialFishingNet(); break;

                    case 62: item = new SpecialHairDye(); break;

                    case 63: item = new SpecialBeardDye(); break;

                    case 64: item = new SnowPile(); break;

                    case 65: item = new StatueEast2(); break;

                    case 66: item = new StatuePegasus2(); break;

                    case 67: item = new StatueSouth2(); break;

                    case 68: item = new StatueSouthEast(); break;

                    case 69: item = new StatuetteDyeTub(); break;

                    case 70: item = new StatueWest(); break;

                    case 71: item = new TapestryOfSosaria(); break;

                    case 72: item = new WhitePoinsettia(); break;

                    case 73: item = new WindChimes(); break;

                    case 74: item = new ZoogiFungus(); break;

                    case 75: item = new RuinedFallenChairA(); break;

                    case 76: item = new RuinedDrawers(); break;

                    case 77: item = new RuinedClock(); break;

                    case 78: item = new RuinedChair(); break;

                    case 79: item = new RuinedBooks(); break;

                    case 80: item = new RuinedBookcase(); break;

                    case 81: item = new RuinedArmoire(); break;

                    case 82: item = new SmallStretchedHideSouthDeed(); break;

                    case 83: item = new SmallStretchedHideEastDeed(); break;

                    case 84: item = new PolarBearRugSouthDeed(); break;

                    case 85: item = new PolarBearRugEastDeed(); break;

                    case 86: item = new MediumStretchedHideSouthDeed(); break;

                    case 87: item = new MediumStretchedHideEastDeed(); break;

                    case 88: item = new LightFlowerTapestrySouthDeed(); break;

                    case 89: item = new LightFlowerTapestryEastDeed(); break;

                    case 90: item = new DarkFlowerTapestrySouthDeed(); break;

                    case 91: item = new DarkFlowerTapestryEastDeed(); break;

                    case 92: item = new BrownBearRugSouthDeed(); break;

                    case 93: item = new BrownBearRugEastDeed(); break;

                    case 94: item = new WallSconce(); break;

                    case 95: item = new WallTorch(); break;

                    case 96: item = new CandleShort(); break;

                    case 97: item = new CandleLarge(); break;

                    case 98: item = new DecorativeSwordNorth(); break;

                    case 99: item = new DecorativeSwordWest(); break;

                    case 100: item = new Tapestry1N(); break;

                    case 101: item = new Tapestry2N(); break;

                    case 102: item = new Tapestry2W(); break;

                    case 103: item = new Tapestry3N(); break;

                    case 104: item = new Tapestry3W(); break;

                    case 105: item = new Tapestry4N(); break;

                    case 106: item = new Tapestry4W(); break;

                    case 107: item = new Tapestry5N(); break;

                    case 108: item = new Tapestry5W(); break;

                    case 109: item = new Tapestry6N(); break;

                    default: item = new CandleSkull(); break;
                    }

                    item.LootType = LootType.Regular;
                    item.Movable  = true;
                    PackItem(item);
                }

                if (Utility.Random(100) < 10)
                {
                    Item item;

                    switch (Utility.Random(111))
                    {
                    case 0: item = new Tapestry6W(); break;

                    case 1: item = new MetalChest(); break;

                    case 2: item = new MetalGoldenChest(); break;

                    case 3: item = new MetalBox(); break;

                    case 4: item = new AniLargeVioletFlask(); break;

                    case 5: item = new AniRedRibbedFlask(); break;

                    case 6: item = new AniSmallBlueFlask(); break;

                    case 7: item = new BlueBeaker(); break;

                    case 8: item = new BlueCurvedFlask(); break;

                    case 9: item = new EmptyVial(); break;

                    case 10: item = new EmptyVialsWRack(); break;

                    case 11: item = new LargeFlask(); break;

                    case 12: item = new LargeVioletFlask(); break;

                    //case 13: item = new HourGlass(); break;
                    //case 14: item = new HourGlassAni(); break;
                    case 15: item = new DecorativeDAxeWest(); break;

                    case 16: item = new DecorativeDAxeNorth(); break;

                    case 17: item = new DecorativeBowWest(); break;

                    case 18: item = new DecorativeBowNorth(); break;

                    case 19: item = new DecorativeAxeWest(); break;

                    case 20: item = new DecorativeAxeNorth(); break;

                    case 21: item = new DecorativeShieldSword2West(); break;

                    case 22: item = new DecorativeShieldSword2North(); break;

                    case 23: item = new DecorativeShieldSword1West(); break;

                    case 24: item = new DecorativeShieldSword1North(); break;

                    case 25: item = new DecorativeShield11(); break;

                    case 26: item = new DecorativeShield10(); break;

                    case 27: item = new DecorativeShield9(); break;

                    case 28: item = new DecorativeShield8(); break;

                    case 29: item = new DecorativeShield7(); break;

                    case 30: item = new DecorativeShield6(); break;

                    case 31: item = new DecorativeShield5(); break;

                    case 32: item = new DecorativeShield4(); break;

                    case 33: item = new DecorativeShield3(); break;

                    case 34: item = new DecorativeShield2(); break;

                    case 35: item = new DecorativeShield1(); break;

                    case 36: item = new Whip(); break;

                    case 37: item = new SilverWire(); break;

                    case 38: item = new Rope(); break;

                    case 39: item = new PaintsAndBrush(); break;

                    case 40: item = new IronWire(); break;

                    case 41: item = new GoldWire(); break;

                    case 42: item = new CopperWire(); break;

                    case 43: item = new WoodDebris(); break;

                    case 44: item = new RuinedPainting(); break;

                    case 45: item = new RuinedFallenChairB(); break;

                    case 46: item = new FullVialsWRack(); break;

                    case 47: item = new FullJar(); break;

                    case 48: item = new FullJars2(); break;

                    case 49: item = new FullJars3(); break;

                    case 50: item = new FullJars4(); break;

                    case 51: item = new GreenBeaker(); break;

                    case 52: item = new GreenBottle(); break;

                    case 53: item = new VioletStemmedBottle(); break;

                    case 54: item = new SpinningHourglass(); break;

                    case 55: item = new ArcheryButte(); break;

                    case 56: item = new PhillipsWoodenSteed(); break;

                    case 57: item = new PileOfGlacialSnow(); break;

                    case 58: item = new RedPoinsettia(); break;

                    case 59: item = new RoseOfTrinsic(); break;

                    case 60: item = new RaiseSwitch(); break;

                    case 61: item = new SpecialFishingNet(); break;

                    case 62: item = new SpecialHairDye(); break;

                    case 63: item = new SpecialBeardDye(); break;

                    case 64: item = new SnowPile(); break;

                    case 65: item = new StatueEast2(); break;

                    case 66: item = new StatuePegasus2(); break;

                    case 67: item = new StatueSouth2(); break;

                    case 68: item = new StatueSouthEast(); break;

                    case 69: item = new StatuetteDyeTub(); break;

                    case 70: item = new StatueWest(); break;

                    case 71: item = new TapestryOfSosaria(); break;

                    case 72: item = new WhitePoinsettia(); break;

                    case 73: item = new WindChimes(); break;

                    case 74: item = new ZoogiFungus(); break;

                    case 75: item = new RuinedFallenChairA(); break;

                    case 76: item = new RuinedDrawers(); break;

                    case 77: item = new RuinedClock(); break;

                    case 78: item = new RuinedChair(); break;

                    case 79: item = new RuinedBooks(); break;

                    case 80: item = new RuinedBookcase(); break;

                    case 81: item = new RuinedArmoire(); break;

                    case 82: item = new SmallStretchedHideSouthDeed(); break;

                    case 83: item = new SmallStretchedHideEastDeed(); break;

                    case 84: item = new PolarBearRugSouthDeed(); break;

                    case 85: item = new PolarBearRugEastDeed(); break;

                    case 86: item = new MediumStretchedHideSouthDeed(); break;

                    case 87: item = new MediumStretchedHideEastDeed(); break;

                    case 88: item = new LightFlowerTapestrySouthDeed(); break;

                    case 89: item = new LightFlowerTapestryEastDeed(); break;

                    case 90: item = new DarkFlowerTapestrySouthDeed(); break;

                    case 91: item = new DarkFlowerTapestryEastDeed(); break;

                    case 92: item = new BrownBearRugSouthDeed(); break;

                    case 93: item = new BrownBearRugEastDeed(); break;

                    case 94: item = new WallSconce(); break;

                    case 95: item = new WallTorch(); break;

                    case 96: item = new CandleShort(); break;

                    case 97: item = new CandleLarge(); break;

                    case 98: item = new DecorativeSwordNorth(); break;

                    case 99: item = new DecorativeSwordWest(); break;

                    case 100: item = new Tapestry1N(); break;

                    case 101: item = new Tapestry2N(); break;

                    case 102: item = new Tapestry2W(); break;

                    case 103: item = new Tapestry3N(); break;

                    case 104: item = new Tapestry3W(); break;

                    case 105: item = new Tapestry4N(); break;

                    case 106: item = new Tapestry4W(); break;

                    case 107: item = new Tapestry5N(); break;

                    case 108: item = new Tapestry5W(); break;

                    case 109: item = new Tapestry6N(); break;

                    default: item = new CandleSkull(); break;
                    }

                    item.LootType = LootType.Regular;
                    item.Movable  = true;
                    PackItem(item);
                }
            }
        }
Пример #56
0
 public void checkWithNoise <A>(
     IDeserializer <A> deser, Rope <byte> serialized, A expected
     ) => checkWithNoiseOpt(deser, serialized, expected.some());
Пример #57
0
		/// <summary>
		/// Creates a new RopeTextSource.
		/// </summary>
		public RopeTextSource(Rope<char> rope)
		{
			if (rope == null)
				throw new ArgumentNullException("rope");
			this.rope = rope;
		}
Пример #58
0
 public void checkWithNoiseOpt <A>(
     IDeserializer <A> deser, Rope <byte> serialized, Option <A> expected
     ) => checkWithNoiseOpt(deser, serialized, o => o.shouldEqual(expected));
Пример #59
0
 public override RopeCollisionType collideWithRopeHead(Rope rope)
 {
     return(RopeCollisionType.CAN_NOT_ATTACH_AND_THROUGH);
 }
Пример #60
0
 public OutputArgument(Rope initvalue) : this((object)initvalue)
 {
 }