// Use this for initialization void Start() { speech = FindObjectOfType <RecoSpeechManager>(); //SLOW AF Debug.Log("Found script: " + speech.name); targetMove = target.GetComponent <TargetMove>(); gameState = gameManager.GetComponent <DodgeballGameState>(); }
// set tower related values public void SetTower(float _DamagePerSecond, float _DamagePerShot, float _Range, float _AttackSpeed, DamageType _eDamageType, TargetMove _eTagetType) { DamagePerSecond = _DamagePerSecond; DamagePerShot = _DamagePerShot; Range = _Range; AttackSpeed = _AttackSpeed; eDamageType = _eDamageType; eTagetType = _eTagetType; }
protected override void OnUpdate(ref UpdateParams p) { base.OnUpdate(ref p); if (TargetMove.LengthSquared() > 0) { if (CollidesWhenThisMoves(Level.Current.pixie, TargetMove)) { if (Level.Current.Subtitles.Children.Count <= 2) { Level.Current.Subtitles.Show(3, "HALT! Thou shalt\n not pass.", 3.5f); } } } }
protected override void OnUpdate(ref UpdateParams p) { base.OnUpdate(ref p); if (!IsExploding && TargetMove.LengthSquared() > 0) { if (CollidesWithSomething(TargetMove)) { // EXPLODE !!! StartExplode(); } } if (IsExploding) { OnExploding(); } }
protected override void OnUpdate(ref UpdateParams p) { base.OnUpdate(ref p); if (TargetMove.LengthSquared() > 0) { if (CollidesWhenThisMoves(Level.Current.hero, TargetMove)) { if (Level.Current.Subtitles.Children.Count <= 4 && Level.Current.hero.Health > 0f) { Level.Current.Sound.PlayRandomCombatSound(0.2f, 0.3f); Level.Current.Subtitles.Show(3, "(Red:) " + attackString[RandomMath.RandomIntBetween(0, attackString.Length - 1)], 3.5f, Color.IndianRed); var damage = RandomMath.RandomBetween(MinDamage, MaxDamage); HurtBehavior.Apply(Level.Current.hero, damage, MaxDamage); Level.Current.hero.Health -= damage; } } } }
public static void Reset() { WMeleeAttack = 0; WMortarAttack = 0; WMortarHits = 0; WMortarPrecision = 0f; WMortarDamagePerHit = 0f; WMortarDamage = 0f; WApproach = 0; WRifleAttack = 0f; WRifleHits = 0f; WAngleTowards = 0f; WTurretAngleTowards = 0f; WRiflePrecision = 0f; DistanceToKeep = 0f; MultipleTargets = false; TargetMoveStrategy = TargetMove.Stationary; Name = "Test"; }
protected override void OnCreate() { leader = GameObject.FindObjectOfType(typeof(TargetMove)) as TargetMove; }
protected override void OnUpdate(ref UpdateParams p) { base.OnUpdate(ref p); // keep previous loop's control input Vector2 ctrl = Vector2.Zero; ctrlPrev = ctrlCur; KeyboardState kb = Keyboard.GetState(); GamePadState gp = GamePad.GetState(PlayerIndex.One); Vector2 sticks = Vector2.Zero; const float AST = 0.1f; // AST = Analog Stick Threshold if (gp.IsConnected) sticks = gp.ThumbSticks.Left + gp.ThumbSticks.Right; if (kb.IsKeyDown(Keys.Up) || kb.IsKeyDown(Keys.W) || gp.IsButtonDown(Buttons.DPadUp) || (sticks.Y > AST && sticks.Y >= sticks.X) ) ctrl.Y += -1.0f; if (kb.IsKeyDown(Keys.Down) || kb.IsKeyDown(Keys.S) || gp.IsButtonDown(Buttons.DPadDown) || (sticks.Y < -AST && sticks.Y <= sticks.X) ) ctrl.Y += 1.0f; if (kb.IsKeyDown(Keys.Left) || kb.IsKeyDown(Keys.A) || gp.IsButtonDown(Buttons.DPadLeft) || (sticks.X < -AST && sticks.X <= sticks.Y) ) ctrl.X += -1.0f; if (kb.IsKeyDown(Keys.Right) || kb.IsKeyDown(Keys.D) || gp.IsButtonDown(Buttons.DPadRight) || (sticks.X > AST && sticks.X >= sticks.Y) ) ctrl.X += 1.0f; // handle case where 2nd key pressed Left/Right or Up/Down if (IsDiag(ctrl) && ctrl.Y == ctrlPrevDifferent.Y ) ctrl.Y = 0f; if (IsDiag(ctrl) && ctrl.X == ctrlPrevDifferent.X) ctrl.X = 0f; // test for diagonal input! if (IsDiag(ctrl)) { ctrl -= ctrlPrevDifferent; // try to compensate - only new key mvt if (IsDiag(ctrl)) { // if still diagonal, use X dir only. ctrl.Y = 0f; } } // transfer found control input of user input persistent var ctrlCur = ctrl; if (ctrlCur != ctrlPrev) { ctrlPrevDifferent = ctrlPrev; // keep track of 'previous control that was different' } if (ctrl.X != 0f || ctrl.Y != 0f) { if (pressTime == 0f) TargetMove = ctrlCur; pressTime += p.Dt; // keep amount of time a direction input has been given } // reset key repeat counter if nothing given as input if (ctrl.LengthSquared() == 0f) { pressTime = 0f; } // trigger attack wasAttackPressed = isAttackPressed; // keep old but pres state isAttackPressed = kb.IsKeyDown(Keys.Space) || gp.IsButtonDown(Buttons.A) || kb.IsKeyDown(Keys.RightControl) || gp.IsButtonDown(Buttons.RightTrigger); if (isAttackPressed && !wasAttackPressed) { pixie.LeadAttack(); } // help msg if (kb.IsKeyDown(Keys.Q) || kb.IsKeyDown(Keys.F1) || kb.IsKeyDown(Keys.P) || kb.IsKeyDown(Keys.Enter) || gp.IsButtonDown(Buttons.Start) ) { ShowKeysHelp(); } // inventory msg if (kb.IsKeyDown(Keys.I) || gp.IsButtonDown(Buttons.B)) { Level.Current.hero.ShowInventory(); } // trigger Toy / magic item bool isTriggerKeyPressed = kb.IsKeyDown(Keys.X) || gp.IsButtonDown(Buttons.Y); Toy t = ParentThing.ToyActive; if (!isUseToyPressed && isTriggerKeyPressed) { isUseToyPressed = true; // use toy if (t != null && (!t.IsUsed && t.UsesLeft > 0)) { t.StartUsing(); if (t.IsUsed && t.UsesLeft <= 0) ParentThing.ToyActive = null; // remove toy from inventory once used up. } else { ShowNoToyString(); } } else if (!isTriggerKeyPressed) { isUseToyPressed = false; } // send trigger state to Toy if (t != null) { t.IsTriggered = isTriggerKeyPressed; } // key repetition if (pressTime > 0.2f / ParentThing.Velocity ) pressTime = 0f; // make user's requested motion vector if (TargetMove.LengthSquared() > 0f) IsTargetMoveDefined = true; }