private static MoveTowards MoveCardToDeck(Card c, Player p) { p.DiscardPile.Remove(c); p.Deck.Add(c); Transform deckMarker = GetDeckMarker(p); float heightOffset = deckMarker.transform.position.y + Consts.DrawCardStartHeight + (Mathf.Lerp(-1.0f, 1.0f, RNG.value) * Consts.DrawCardStartHeightVariance); CardComponent cmp = c.Owner; MoveTowards mt = cmp.gameObject.AddComponent <MoveTowards>(); mt.Speed = Consts.DrawCardMoveSpeed; //First move upwards. mt.SetTarget(cmp.MyTr.position + new Vector3(0.0f, heightOffset, 0.0f)); //Then move to the deck position. mt.OnMovementFinished += mt2 => { mt2.SetTarget(deckMarker.position + new Vector3(0.0f, p.Deck.IndexOf(c) * Consts.DeckCardSeparation, 0.0f)); mt2.OnMovementFinished += mt3 => GameObject.Destroy(mt3); cmp.IsFaceDown = true; }; return(mt); }
// Use this for initialization void Start() { FindObjectOfType <SoundManager>().PlaySound("Player_Charge"); _moveTowards = GetComponent <MoveTowards>(); _moveTowards.Target = Target; FindObjectOfType <CameraController>().player = gameObject; }
/// <summary> /// Degrad emitters need to know about partition changes so they can stop /// spawning particles when changing to a gated room. /// </summary> private void OnPartitionChanging(object sender, PartitionChangedArgs args) { bool bGated = false; if (GatingManager.Instance) { // find out if the room being changed to has a gate or not bGated = GatingManager.Instance.HasActiveGate(args.newPartition); } if (bGated) { // if there is a gate in this room, turn off the spawning of skulls Disable(); // also, all spawned objects need to get to their target asap for (int i = 0; i < listSpawned.Count; ++i) { GameObject go = listSpawned[i]; MoveTowards moveScript = go.GetComponent <MoveTowards>(); moveScript.FlashToTarget(); } } else { // if there is no gate in this room, we can spawn skulls again (but only if the tut is through) if (!isActive) { Enable(); } } }
private string ExecuteTurnAction(MoveTowards moveTowards) { if (moveTowards.EnergyCost > EP) { return($"{Name} does not have enough energy to move."); } var nearestPlaces = GetNearestPlaces(); if (nearestPlaces.Any()) { var newPlace = nearestPlaces .OrderBy(p => p.DistanceTo(moveTowards.Place)) .First(); var direction = GetDirectionTo(newPlace); if (direction != Direction.None) { DrainEnergy(moveTowards.EnergyCost); PositionTo(newPlace.X, newPlace.Y); return($"{Name} moves {direction}."); } return($"{Name} stays at current position."); } return($"{Name} cannot move in any direction."); }
public VideoProcessor() { background = null; pixelateFilter = new Pixellate(); pixelateFilter.PixelSize = 10; differenceFilter = new Difference(); thresholdFilter = new Threshold(15); grayscaleFilter = new Grayscale(0.2125, 0.7154, 0.0721); erosionFilter = new Erosion(); moveTowardsFilter = new MoveTowards(); filters1 = new FiltersSequence(); filters1.Add(pixelateFilter); filters1.Add(grayscaleFilter); filters2 = new FiltersSequence(); filters2.Add(differenceFilter); filters2.Add(thresholdFilter); filters2.Add(erosionFilter); rat1 = new Tracker(640 / 2, 480 / 2, Color.Red); rat2 = new Tracker(400, 300, Color.Green); counter = 0; }
public static void Stay() { MoveTowards move = FindGameObjectWithTag("Steersman").GetComponent <MoveTowards>(); move.target = null; move.enabled = false; move.GetComponent <Rigidbody>().isKinematic = true; }
public static void Follow() { MoveTowards move = GameObject.FindGameObjectWithTag("Steersman").GetComponent <MoveTowards>(); move.target = GameManager.GetPlayerComponent <STransform>(); move.enabled = true; move.GetComponent <Rigidbody>().isKinematic = false; }
public static IEnumerator DiscardCard(CardComponent cmp, int handIndex, float dir) { InputController.Instance.DisableAllGestures = true; //Update the card lists. cmp.IsSelected = false; List <Card> hand = FSM.Current.Hand; Card c = cmp.MyCard; UnityEngine.Assertions.Assert.IsTrue(c == hand[handIndex]); FSM.Current.DiscardPile.Add(c); hand.RemoveAt(handIndex); //Push the card out of the way. PFI.PlayerLookTarget = (dir < 0.0f ? PFI.LookTarget_DiscardLeft : PFI.LookTarget_DiscardRight); Rigidbody rgd = cmp.gameObject.GetComponent <Rigidbody>(); rgd.isKinematic = false; yield return(null); Vector3 pushDir = PFI.MainCam.right; rgd.velocity = pushDir * Consts.DiscardForce * dir * 0.5f; yield return(new WaitForSeconds(2.0f)); PFI.PlayerLookTarget = PFI.LookTarget_MyTable; rgd.isKinematic = true; yield return(new WaitForSeconds(1.0f)); //Move all later cards in the hand down by one. for (int i = handIndex; i < hand.Count; ++i) { MoveTowards mt = hand[i].Owner.gameObject.AddComponent <MoveTowards>(); mt.Speed = 1.0f; mt.SetTarget(GetHandMarkers(FSM.Current)[i].position); mt.OnMovementFinished += mt2 => { GameObject.Destroy(mt2); }; } while (hand.Any(c2 => c2.Owner.GetComponent <MoveTowards>() != null)) { yield return(null); } InputController.Instance.DisableAllGestures = false; for (int i = handIndex; i < Consts.MaxHand; ++i) { PFI.HandButtons[i].Reset(i >= hand.Count ? null : hand[i].Owner); } }
private void Awake() { if (GetComponent <Jump>()) { _jump = GetComponent <Jump>(); } if (GetComponent <MoveTowards>()) { _moveTowards = GetComponent <MoveTowards>(); } }
// Constructor public MoveTowardsFilterForm(Bitmap overlay) { InitializeComponent( ); // create filter filter = new MoveTowards(overlay); // set percent value on track bar stepSizeBar.Value = (int)(filter.StepSize); // set filter for preview window filterPreview.Filter = filter; }
private void Start() { var idle = new Idle(this); var wander = new Wander(this); var moveTowards = new MoveTowards(this, navMeshAgent, target); //Setup transitions stateMachine.AddTransition(idle, wander, InputSpaceBar()); stateMachine.AddTransition(wander, moveTowards, HasTarget()); stateMachine.SetState(idle); }
public mCompositeMove(Bitmap UnderlayBitmap, Bitmap OverlayBitmap, int StepSize) { Step = StepSize; BitmapUnder = new mSetFormat(UnderlayBitmap, mFilter.BitmapTypes.Rgb24bpp).ModifiedBitmap; BitmapOver = new mSetFormat(OverlayBitmap, mFilter.BitmapTypes.Rgb24bpp).ModifiedBitmap; ModifiedBitmap = BitmapUnder; Effect = new MoveTowards(BitmapOver, Step); ModifiedBitmap = Effect.Apply(BitmapUnder); }
public override void Init(NPC n) { Vector3 vector = this.caster.Self.GO.transform.position; Vector3 pos = new Vector3(vector.x, vector.y + .5f, vector.z); obj = GameObject.Instantiate(Resources.Load(startVisual), pos, Quaternion.identity) as GameObject; MoveTowards script = obj.AddComponent <MoveTowards>(); script.initialize(n.GO, speed, new Action <Vector3>((Vector3 loc) => { GameObject go = GameObject.Instantiate(Resources.Load(finishVisual), loc, Quaternion.identity) as GameObject; go.AddComponent <TimedDestruction>().init(.5f); })); }
public void InitTarget() { // Get components moveTowards = GetComponent <MoveTowards> (); rotateTowards = GetComponent <RotateTowards> (); // Set points value loss pointsValueLoss = targetManager.pointsValueLoss; // Set target transform moveTowards.target = player.transform; rotateTowards.target = player.transform; // Enable scripts moveTowards.enabled = true; rotateTowards.enabled = true; }
protected virtual void Awake() { changeRotatingTarget = GetComponent <ChangeRotatingTarget>(); moveTowards = GetComponent <MoveTowards>(); if (GetComponent <Animator>() != null) { animators.Add(GetComponent <Animator>()); } foreach (Animator anim in GetComponentsInChildren <Animator>()) { animators.Add(anim); } if (adjustAnimSpeedToActualSpeed) { StartCoroutine(TrackSpeed()); } }
private void InitFilters() { L_brownFilter = new ColorFiltering(); D_brownFilter = new ColorFiltering(); L_brownFilter.Red = new IntRange(125, 140); L_brownFilter.Green = new IntRange(95, 110); L_brownFilter.Blue = new IntRange(110, 130); D_brownFilter.Red = new IntRange(55, 85); D_brownFilter.Green = new IntRange(45, 75); D_brownFilter.Blue = new IntRange(45, 75); blobFilter = new BlobsFiltering(); blobFilter.CoupledSizeFiltering = true; blobFilter.MinWidth = 70; blobFilter.MinHeight = 70; diffFilter = new Difference(); diffFilter.OverlayImage = back; thresholdFilter = new Threshold(40); erosionFilter = new Erosion(); edgeFilter = new Edges(); openFilter = new Opening(); pixelFilter = new Pixellate(); morphFilter = new Morph(); morphFilter.SourcePercent = 0.9; towardsFilter = new MoveTowards(); towardsFilter.StepSize = 10; blobCounter = new BlobCounter(); blobGrabber = new ExtractBiggestBlob(); }
//spawn the 2 occupiers and give them their target location to the node public void Spawn(Node _newNode, float _nodeSize) { //spawn occupier 1 on the left float yPosLeft = Random.Range(spawnPointLeft1.position.y, spawnPointLeft2.position.y); GameObject occupier1 = Instantiate(studentsToSpawn[Random.Range(0, studentsToSpawn.Count)], new Vector2(spawnPointLeft1.position.x, yPosLeft), transform.rotation) as GameObject; //choose a random position in the adjusted node size for x & y float randomX = Random.Range(nodeRamdomizerMinBounds * _nodeSize, nodeRamdomizerMaxBounds * _nodeSize); float randomY = Random.Range(nodeRamdomizerMinBounds * _nodeSize, nodeRamdomizerMaxBounds * _nodeSize); if (Random.Range(0, 0.99f) > 0.5f) { randomX *= -1; } if (Random.Range(0, 0.99f) > 0.5f) { randomY *= -1; } MoveTowards moveTowardsUser1 = occupier1.GetComponent <MoveTowards>(); moveTowardsUser1.SetTargetToMove(new Vector2(_newNode.X * _nodeSize + randomX, _newNode.Y * _nodeSize + randomY)); moveTowardsUser1.SetTargetToRotate(new Vector2(_newNode.X * _nodeSize + randomX, _newNode.Y * _nodeSize + randomY)); //spawn occupier 2 on the right float yPosRight = Random.Range(spawnPointRight1.position.y, spawnPointRight2.position.y); GameObject occupier2 = Instantiate(teachterToSpawn[Random.Range(0, teachterToSpawn.Count)], new Vector2(spawnPointRight1.position.x, yPosRight), transform.rotation) as GameObject; MoveTowards moveTowardsUser2 = occupier2.GetComponent <MoveTowards>(); moveTowardsUser2.SetTargetToMove(new Vector2(_newNode.X * _nodeSize + (randomX * -1), _newNode.Y * _nodeSize + (randomY * -1))); moveTowardsUser2.SetTargetToRotate(new Vector2(_newNode.X * _nodeSize + (randomX * -1), _newNode.Y * _nodeSize + (randomY * -1))); //instantiate the the target to rotate to, once the two occupiers get close occupier1.GetComponent <ChangeRotatingTarget>().Instantiate(occupier2.transform); occupier2.GetComponent <ChangeRotatingTarget>().Instantiate(occupier1.transform); //give the node its occupiers, so it can later send them away _newNode.AddOccupiers(occupier1, occupier2); }
// Update is called once per frame void Update() { RaycastHit hit; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out hit)) { //Player.GetComponent<MoveTowards> ().enabled = true; MouseHit.SetActive(true); MouseHit.transform.position = hit.point; //Accelerate The Player MoveTowards MoveScript = Player.GetComponent <MoveTowards> (); MoveScript.speed = Mathf.Lerp(MoveScript.speed, MoveScript.MaxSpeed, Time.deltaTime * MoveScript.acceleration); Debug.Log("Cursor On"); } else { Debug.Log("Cursor Off"); MouseHit.SetActive(false); //Decelerate the Player MoveTowards MoveScript = Player.GetComponent <MoveTowards> (); MoveScript.speed = Mathf.Lerp(MoveScript.speed, 0, Time.deltaTime * MoveScript.acceleration); //Player.GetComponent<MoveTowards> ().enabled = false; } //Instantiate (MouseHit, hit.point, Quaternion.identity); }
public void InitTarget() { //get component moveTowards = GetComponent <MoveTowards>(); rotateTowards = GetComponent <RotateTowards>(); destructionParticles = destructionParticlesContainer.GetComponentsInChildren <ParticleSystem>(); //set points value loss pointsValueLoss = targetManager.pointsValueLoss; //set target transform moveTowards.target = player.transform; rotateTowards.target = player.transform; //store original pitch originalPitch = hitClip.pitch; //set points display pointsDisplay = targetManager.pointsDisplay; //enable scripts moveTowards.enabled = true; rotateTowards.enabled = true; }
protected override void ExtendedAction(GameObject emittedObject) { // set the proper move script MoveTowards moveScript = emittedObject.GetComponent <MoveTowards>(); if (moveScript != null) { moveScript.Target = targetDestination; moveScript.touchCallbackTarget = gameObject; } else { Debug.LogError("No MoveTowards script detected in particle"); } // set the proper degrad particle script DegradParticle scriptParticle = emittedObject.GetComponent <DegradParticle>(); scriptParticle.Damage = damage; // add the tracking script to track the emitted particles // TrackObject scriptTrack = emittedObject.AddComponent<TrackObject>(); // scriptTrack.Init(listSpawned); }
private void Awake() { _moveTowards = gameObject.AddComponent <MoveTowards>(); }
public Node <INode> GetNode(string nodeName) { switch (nodeName) { case Absolute.NAME: INode nodeAbsolute = new Absolute() as INode; return(new Node <INode>(nodeAbsolute)); case Approx.NAME: INode nodeAprox = new Approx() as INode; return(new Node <INode>(nodeAprox)); case ArcCos.NAME: INode nodeArcCos = new ArcCos() as INode; return(new Node <INode>(nodeArcCos)); case ArcSin.NAME: INode nodeArcSin = new ArcSin() as INode; return(new Node <INode>(nodeArcSin)); case ArcTan2.NAME: INode nodeArcTan2 = new ArcTan2() as INode; return(new Node <INode>(nodeArcTan2)); case Ceil.NAME: INode nodeCeil = new Ceil() as INode; return(new Node <INode>(nodeCeil)); case CeilToInt.NAME: INode nodeCeilToInt = new CeilToInt() as INode; return(new Node <INode>(nodeCeilToInt)); case Clamp.NAME: INode nodeClamp = new Clamp() as INode; return(new Node <INode>(nodeClamp)); case Clamp01.NAME: INode nodeClamp01 = new Clamp01() as INode; return(new Node <INode>(nodeClamp01)); case ClosestPowerOf2.NAME: INode nodeClosestPowerOf2 = new ClosestPowerOf2() as INode; return(new Node <INode>(nodeClosestPowerOf2)); case Cosinus.NAME: INode nodeCosinus = new Cosinus() as INode; return(new Node <INode>(nodeCosinus)); case DeltaAngle.NAME: INode nodeDeltaAngle = new DeltaAngle() as INode; return(new Node <INode>(nodeDeltaAngle)); case Exp.NAME: INode nodeExp = new Exp() as INode; return(new Node <INode>(nodeExp)); case Floor.NAME: INode nodeFloor = new Floor() as INode; return(new Node <INode>(nodeFloor)); case FloorToInt.NAME: INode nodeFloorToInt = new FloorToInt() as INode; return(new Node <INode>(nodeFloorToInt)); case Lerp.NAME: INode nodeLerp = new Lerp() as INode; return(new Node <INode>(nodeLerp)); case LerpAngle.NAME: INode nodeLerpAngle = new LerpAngle() as INode; return(new Node <INode>(nodeLerpAngle)); case Log10.NAME: INode nodeLog10 = new Log10() as INode; return(new Node <INode>(nodeLog10)); case Logarithm.NAME: INode nodeLogarithm = new Logarithm() as INode; return(new Node <INode>(nodeLogarithm)); case Sinus.NAME: INode nodeSinus_ = new Sinus() as INode; return(new Node <INode>(nodeSinus_)); case Max.NAME: INode nodeMax = new Max() as INode; return(new Node <INode>(nodeMax)); case Min.NAME: INode nodeMin = new Min() as INode; return(new Node <INode>(nodeMin)); case MoveTowards.NAME: INode nodeMoveTowards = new MoveTowards() as INode; return(new Node <INode>(nodeMoveTowards)); case MoveTowardsAngle.NAME: INode nodeMoveTowardsAngle = new MoveTowardsAngle() as INode; return(new Node <INode>(nodeMoveTowardsAngle)); case NextPowerOfTwo.NAME: INode nodeNextPowerOfTwo = new NextPowerOfTwo() as INode; return(new Node <INode>(nodeNextPowerOfTwo)); case PerlinNoise.NAME: INode nodePerlinNoise = new PerlinNoise() as INode; return(new Node <INode>(nodePerlinNoise)); case PingPong.NAME: INode nodePingPong = new PingPong() as INode; return(new Node <INode> (nodePingPong)); case Pow.NAME: INode nodePow = new Pow() as INode; return(new Node <INode>(nodePow)); case SquareRoot.NAME: INode nodeSqrt = new SquareRoot() as INode; return(new Node <INode>(nodeSqrt)); case Tan.NAME: INode nodeTan = new Tan() as INode; return(new Node <INode>(nodeTan)); case Random.NAME: INode nodeRandom = new Random() as INode; return(new Node <INode>(nodeRandom)); default: return(null); } }
// Update is called once per frame void FixedUpdate() { Debug.Log("health/maxhealth: " + (float)health / maxHealth); spriteRenderer.color = Color.Lerp(Color.white, colorHealth, (float)health / maxHealth); if (health < detectHealth) { detectHealth = health; if (health > 0) { SoundSpawner.PlaySoundObj(transform.position, hurtSound); } currentBiteMoveSpeed = 0; } if (health <= 0 && health > -999) { currentAttack = null; GameObject[] missiles = GameObject.FindGameObjectsWithTag("Missile"); foreach (var missile in missiles) { missile.GetComponent <Missile>().DestroyImmediately(); } health = -1000; currentAttackState = Attack.Defeated; spriteRenderer.sprite = defeated; gameObject.layer = 13; gameObject.tag = "Enemy"; animator.enabled = true; hurtHitbox.SetActive(false); collider.radius = 1.44f; collider.offset = new Vector2(0, 0.66f); gameObject.GetComponent <SimpleVals>().enabled = true; gameObject.GetComponent <ThrownVals>().enabled = true; collider.enabled = false; boxCollider.enabled = true; rb.gravityScale = 1; SoundSpawner.PlaySoundObj(transform.position, hurtSound, 1, false, 80, 0.8f); SoundSpawner.PlaySoundObj(transform.position, hurtSound, 1, false, 80, 0.8f); } if (currentAttack == null && health > 0) { currentAttackState = (Attack)Random.Range(0, 2); transform.rotation = quaternion.Euler(0, 0, 0); ResetRbTransform(); } switch (currentAttackState) { case Attack.Missiles: { trailRenderer.enabled = false; if (currentAttack == null && health > 0) { moveTowards = MoveTowards.Choose; SoundSpawner.PlaySoundObj(transform.position, teleportSound); particleSystem.Play(); transform.position = new Vector2(player.transform.position.x + Random.Range(-10, 10f), player.transform.position.y + 8f); biteAmt = 0; currentAttack = StartCoroutine(FiringAtPlayer()); } var step = (missileFiringMovementSpeed * lessHealthFasterAttack()) * Time.deltaTime; Vector3 chosenPos = Vector3.zero; switch (moveTowards) { case MoveTowards.Choose: { moveTowards = (MoveTowards)Random.Range(1, 4); break; } case MoveTowards.Left: { chosenPos = new Vector3(-32, Random.Range(-4f, 2f)); break; } case MoveTowards.Right: { chosenPos = new Vector3(43, Random.Range(-4f, 2f)); break; } case MoveTowards.Player: { chosenPos = new Vector3(player.transform.position.x, Random.Range(-4f, 2f)); break; } } transform.position = Vector2.MoveTowards(transform.position, chosenPos, step); if (transform.position.x < -30) { transform.position = new Vector3(player.transform.position.x, 0) + new Vector3(Random.Range(0, 10f), 0); SoundSpawner.PlaySoundObj(transform.position, teleportSound); particleSystem.Play(); if (Random.value > 0.5f) { moveTowards = MoveTowards.Right; } else { moveTowards = MoveTowards.Player; } } if (transform.position.x > 41) { transform.position = new Vector3(player.transform.position.x, 0) + new Vector3(Random.Range(-10f, 0f), 0); SoundSpawner.PlaySoundObj(transform.position, teleportSound); particleSystem.Play(); if (Random.value > 0.5f) { moveTowards = MoveTowards.Left; } else { moveTowards = MoveTowards.Player; } } transform.position = new Vector3(transform.position.x, (Mathf.Sin(Time.time * (lessHealthFasterAttack() * 6.5f)) * lessHealthFasterAttack())); if (transform.position.y > 0) { spriteRenderer.sprite = laugh; if (canFireMissile) { canFireMissile = false; MissileFire(); } } if (transform.position.y <= 0) { spriteRenderer.sprite = smile; canFireMissile = true; } break; } case Attack.Bite: { if (currentAttack == null && health > 0) { currentAttack = StartCoroutine(Bite()); } var step = currentBiteMoveSpeed * Time.deltaTime; transform.position = Vector2.MoveTowards(transform.position, bitePos, step); break; } case Attack.Defeated: { spriteRenderer.sprite = defeated; trailRenderer.enabled = false; currentAttack = null; break; } } }
public void SetUp() { NewPlace = new Mock <IBattlefieldPlace>().Object; TurnAction = Player.TurnActions.TurnAction.Move.Towards(NewPlace) as MoveTowards; }
private MoveTowards moveTowards; //!< Cached component MoveTowards. private void Start() { moveTowards = GetComponent <MoveTowards>(); }
void FinalFrame_NewFrame(object sender, NewFrameEventArgs eventArgs) { /* f = motionDetector.ProcessFrame(video); */ video = (Bitmap)eventArgs.Frame.Clone(); Bitmap video2 = (Bitmap)eventArgs.Frame.Clone(); MoveTowards moveTowardsFilter = new MoveTowards(); moveTowardsFilter.OverlayImage = video; Bitmap tmp = moveTowardsFilter.Apply(video2); video2.Dispose(); video2 = tmp; FiltersSequence processingFilter = new FiltersSequence(); processingFilter.Add(new Difference(video2)); processingFilter.Add(new Threshold(15)); processingFilter.Add(new Opening()); processingFilter.Add(new Edges()); if (OnOff == true) { pictureBox1.Image = (Bitmap)eventArgs.Frame.Clone(); g = Graphics.FromImage(video2); g.DrawString(countdown.ToString(), new Font("Arial", 20), new SolidBrush(Color.Red), new PointF(2, 4)); g.Dispose(); } if (mode == 1) { ColorFiltering colorfilter = new ColorFiltering(); colorfilter.Red = new IntRange(Red, (int)numericUpDown1Red.Value); colorfilter.Green = new IntRange(Green, (int)numericUpDown2Green.Value); colorfilter.Blue = new IntRange(Blue, (int)numericUpDown3Blue.Value); colorfilter.ApplyInPlace(video2); BlobCounter blobcounter = new BlobCounter(); blobcounter.MinHeight = 20; blobcounter.MaxWidth = 20; blobcounter.ObjectsOrder = ObjectsOrder.Size; blobcounter.ProcessImage(video2); Rectangle[] rect = blobcounter.GetObjectsRectangles(); Graphics g = Graphics.FromImage(video2); /* if (rect.Length>10) * {*/ /* Rectangle objec = rect[0];*/ Graphics graphic = Graphics.FromImage(video2); using (Pen pen = new Pen(Color.Red, 1)) foreach (Rectangle rec in rect) { g.DrawRectangle(pen, rec); if ((rec.Width > 15) && (rec.Height > 15)) { } } { /* graphic.DrawRectangle(pen,objec);*/ } graphic.Dispose(); /* }*/ pictureBox2.Image = video2; } pictureBox1.Image = video; }
public static IEnumerator DrawCard(Player p) { if (p.Hand.Count > Consts.MaxHand) { Debug.LogError("Trying to draw more than the max number of cards!"); } if (p.Deck.Count > 0) { p.Hand.Add(p.Deck[p.Deck.Count - 1]); p.Deck.RemoveAt(p.Deck.Count - 1); int index = p.Hand.Count - 1; Transform handMarker = GetHandMarkers(p)[index]; CardComponent cmp = p.Hand[index].Owner; cmp.IsFaceDown = false; //Move sideways, then down onto the table. MoveTowards mt = cmp.gameObject.AddComponent <MoveTowards>(); mt.Speed = Consts.DrawCardMoveSpeed; mt.SetTarget(new Vector3(handMarker.position.x, cmp.MyTr.position.y, handMarker.position.z)); mt.OnMovementFinished += mt2 => { mt2.SetTarget(handMarker.position); mt2.OnMovementFinished += mt3 => { GameObject.Destroy(mt3); }; }; //Wait for all that movement to finish. while (mt != null) { yield return(null); } } else if (p.DiscardPile.Count > 0) { //No cards in deck, so get cards from discard pile. //First shuffle the discard pile: http://stackoverflow.com/questions/273313/randomize-a-listt-in-c-sharp System.Random rng = new System.Random(); int n = p.DiscardPile.Count; while (n > 1) { n--; int k = rng.Next(n + 1); Card value = p.DiscardPile[k]; p.DiscardPile[k] = p.DiscardPile[n]; p.DiscardPile[n] = value; } //Move all the discarded cards into the deck. List <MoveTowards> movements = new List <MoveTowards>(); foreach (Card c in p.DiscardPile) { movements.Add(MoveCardToDeck(c, p)); } //Wait for all that movement to finish. while (movements.Count > 0) { yield return(null); movements.RemoveAll(mt => mt == null); } yield return(GameFSM.Instance.StartCoroutine(DrawCard(p))); } else { FSM.IsGameOver = true; //TODO: End game. } }
private void OnMoveComplete(MoveTowards moveTowards) { Completed(); Source.GetComponentInChildren<SkeletonAnimation>().AnimationName = "idle"; Source.GetComponent<MoveTowards>().MoveComplete -= OnMoveComplete; _pr.Fulfill(); _pr = null; }
// Use this for initialization protected virtual void Start() { HealthSys = GetComponent <HealthSystem> (); _moveTowards = GetComponent <MoveTowards>(); _moveTowards.Target = Player.transform; }
void Start() { WallParent = GetComponentInParent <MoveTowards>(); }
void Awake() { moveTowards = GetComponent <MoveTowards>(); }