public override void Update(ManagerHelper mH) { if (lifeCounter < 0) { mH.GetEnvironmentManager().RemoveStaticBlocker(this); } lifeCounter -= mH.GetGameTime().ElapsedGameTime.TotalSeconds; //Code for getting picked up if (theCrane.movementPhase == Crane.MovementPhaseType.picking) { //Get picked up if (theCrane.myBox == null && CollisionHelper.IntersectPixelsPoint(theCrane.GetCranePoint(), this) != new Vector2(-1)) { theCrane.myBox = this; } } else if (theCrane.movementPhase == Crane.MovementPhaseType.dropping) { theCrane.myBox = null; } //Movement if (theCrane.myBox == this) { position = theCrane.GetCranePoint() - origin; rotation = theCrane.GetRotation(); } else { for (int i = 0; i < theNet.boxNodes.Length; i++) { if (lastNode != theNet.boxNodes[i] && PathHelper.DistanceSquared(GetOriginPosition(), theNet.boxNodes[i].pos) < 4 * 4) { lastNode = theNet.boxNodes[i]; velocity = theNet.boxNodes[i].GetRandomDir(mH) * 15; position = theNet.boxNodes[i].pos - origin; break; } } if (velocity == Vector2.Zero) { mH.GetEnvironmentManager().RemoveStaticBlocker(this); } rotation = PathHelper.Direction(velocity); } if (this.health < 0) { } base.Update(mH); }
public virtual bool ProjectileCheck(ManagerHelper mH) { if (health <= 0) { mH.GetEnvironmentManager().RemoveStaticBlocker(this); return(true); } Queue <Projectile> tempProjectiles = mH.GetProjectileManager().GetProjectiles(); foreach (Projectile p in tempProjectiles) { if (CollisionHelper.IntersectPixelsPoint(p.GetOriginPosition(), this) != new Vector2(-1) && p.GetDrawTime() > 0) { health -= p.GetDamage(); p.SetDrawTime(0f); if (health <= 0) { return(true); } } } return(false); }
public override void Update(ManagerHelper mH) { //Slow it to a stop if (velocity.Length() > 5) { Turn(((turnRight) ? -1 : 1) * MathHelper.Pi / 15 * (velocity.Length() / 64)); //Spawn blood if (mH.GetRandom().Next(100) < 0) { mH.GetParticleManager() .AddFire(GetOriginPosition(), PathHelper.Direction((float)(mH.GetRandom().NextDouble() * Math.PI * 2)) * 100, 2, 0.03f, 1, 1); } } else if (velocity.Length() != 0) { velocity *= 0; } //Prevent body parts from intersecting surroundings foreach (Environment e in mH.GetEnvironmentManager().GetStaticBlockers()) { int tempCollide = CollisionHelper.IntersectPixelsDirectional(this, e); if (tempCollide != -1) { velocity = CollisionHelper.CollideDirectional(GetOriginPosition(), tempCollide) * velocity.Length() * 0.8f; } } base.Update(mH); }
public override void Update(ManagerHelper mH) { if (timer > endTime) { timer = 0; for (int i = 0; i < belts.Length; i++) { belts[i].SetFrameIndex(belts[i].GetFrameIndex() + 1); belts[i].SetModeIndex(belts[i].GetModeIndex() + 1); if (belts[i].GetFrameIndex() == belts[i].totalFrames) { belts[i].SetFrameIndex(0); } if (belts[i].GetModeIndex() == belts[i].totalModes) { belts[i].SetModeIndex(0); } foreach (NPC a in mH.GetNPCManager().GetNPCs()) { int tempCollide = CollisionHelper.IntersectPixelsDirectional(a, belts[i]); if (tempCollide != -1) { a.AddAcceleration(directions[i] * 2); } } belts[i].Update(mH); } if (mH.GetRandom().NextDouble() > 0.993) { mH.GetEnvironmentManager() .AddStaticBlocker(new SwitchBox(boxNodes[(mH.GetRandom().Next(2) == 0) ? 0 : 11].pos, this, theCrane)); } } else { timer += (mH.GetGameTime().ElapsedGameTime.TotalSeconds); } }
protected void HoverPath(ManagerHelper mH, Vector2 p, int r) { bool validPoint; Vector2 randPoint; Vector2 originNode = GetOriginPosition() / mH.GetPathHelper().GetNodeSize(); do { validPoint = true; randPoint = originNode + new Vector2(mH.GetRandom().Next(-1 * r / 32, r / 32), mH.GetRandom().Next(-1 * r / 32, r / 32)); if ((randPoint.X > 0 && randPoint.X < mH.GetLevelSize().X / 32) && (randPoint.Y > 0 && randPoint.Y < mH.GetLevelSize().Y / 32)) { foreach (Environment e in mH.GetEnvironmentManager().GetStaticBlockers()) { foreach (Vector2 n in e.GetFrameBlockers()) { if ((n.X + (int)e.GetOriginPosition().X) == randPoint.X && (n.Y + (int)e.GetOriginPosition().Y) == randPoint.Y) { validPoint = false; break; } } if (!validPoint) { break; } } } else { validPoint = false; } } while (!validPoint); mH.GetPathHelper().FindClearPath(GetOriginPosition(), randPoint * 32, mH, path); }
protected void RandomPath(ManagerHelper mH) { bool validPoint; Vector2 randPoint; pathTimerEnd = 10; do { validPoint = true; randPoint = new Vector2(mH.GetRandom().Next((int)mH.GetLevelSize().X), mH.GetRandom().Next((int)mH.GetLevelSize().Y)) / mH.GetPathHelper().GetNodeSize(); foreach (Environment e in mH.GetEnvironmentManager().GetStaticBlockers()) { foreach (Vector2 n in e.GetFrameBlockers()) { if (n.Equals(randPoint)) { validPoint = false; break; } else { validPoint = true; } } if (!validPoint) { break; } } } while (!validPoint); mH.GetPathHelper().FindClearPath(GetOriginPosition(), randPoint * 32, mH, path); }
protected override void PosUpdate(ManagerHelper mH) { //Update position Vector2 tempPos = position + velocity * mH.GetDeltaSeconds(); Vector2 tempOPos = tempPos + origin; float distSquared = 1000000; //Collisions foreach (Impassable e in mH.GetEnvironmentManager().GetImpassables()) { if (distSquared > PathHelper.DistanceSquared(e.GetOriginPosition(), tempOPos)) { int tempVect = CollisionHelper.IntersectPixelsDirectionalRaw(this, tempOPos, e); if (tempVect != -1) { velocity = CollisionHelper.CollideDirectional(velocity, tempVect); } } } foreach (Environment e in mH.GetEnvironmentManager().GetStaticBlockers()) { if (distSquared > PathHelper.DistanceSquared(e.GetOriginPosition(), tempOPos)) { int tempVect = CollisionHelper.IntersectPixelsDirectionalRaw(this, tempOPos, e); if (tempVect != -1) { velocity = CollisionHelper.CollideSimple(tempVect, velocity); } } } tempPos = position + velocity * mH.GetDeltaSeconds(); if ( !(tempPos.X < buffer || tempPos.X > mH.GetLevelSize().X - frame.Width - buffer || tempPos.Y < buffer || tempPos.Y > mH.GetLevelSize().Y - frame.Height - buffer)) { } else { if (tempPos.X <= buffer) { tempPos.X = buffer; } else if (tempPos.X > mH.GetLevelSize().X - frame.Width - buffer) { tempPos.X = mH.GetLevelSize().X - frame.Width - buffer; } if (tempPos.Y <= buffer) { tempPos.Y = buffer; } else if (tempPos.Y > mH.GetLevelSize().Y - frame.Height - buffer) { tempPos.Y = mH.GetLevelSize().Y - frame.Height - buffer; } } position = tempPos; //Update frames frame.X = frameIndex * frame.Width; frame.Y = modeIndex * frame.Height; }
protected virtual void PosUpdate(ManagerHelper mH) { //Update position Vector2 tempPos = position + velocity * mH.GetDeltaSeconds(); Vector2 tempOPos = tempPos + origin; float distSquared = 1000000; if (float.IsNaN(tempPos.X) || float.IsNaN(tempPos.Y)) { //TODO: Do not leave this in. throw new Exception("Not sure how this happened."); } //Collisions foreach (NPC a in mH.GetNPCManager().GetNPCs()) //first go through every single npc { if (a.GetAffiliation() != affiliation && distSquared > PathHelper.DistanceSquared(a.GetOriginPosition(), tempOPos)) { Vector2 tempVect = CollisionHelper.IntersectPixelsSimple(this, a); if (tempVect != new Vector2(-1)) { velocity = CollisionHelper.CollideRandom(GetOriginPosition(), tempVect) * movementSpeed; } } } foreach (LargeRock r in mH.GetAbilityManager().GetLargeRocks()) { if (distSquared > PathHelper.DistanceSquared(r.GetOriginPosition(), tempOPos)) { int tempVect = CollisionHelper.IntersectPixelsDirectionalRaw(this, tempOPos, r); if (tempVect != -1) { velocity = CollisionHelper.CollideSimple(tempVect, velocity); } } } foreach (Environment e in mH.GetEnvironmentManager().GetStaticBlockers()) { if (distSquared > PathHelper.DistanceSquared(e.GetOriginPosition(), tempOPos)) { int tempVect = CollisionHelper.IntersectPixelsDirectionalRaw(this, tempOPos, e); if (tempVect != -1) { if (e is SwitchBox) { SwitchBox box = (SwitchBox)e; box.lowerHealth(); } velocity = CollisionHelper.CollideSimple(tempVect, velocity); } } } foreach (Impassable e in mH.GetEnvironmentManager().GetImpassables()) { if (distSquared > PathHelper.DistanceSquared(e.GetOriginPosition(), tempOPos)) { int tempVect = CollisionHelper.IntersectPixelsDirectionalRaw(this, tempOPos, e); if (tempVect != -1) { velocity = CollisionHelper.CollideDirectional(velocity, tempVect); } } } tempPos = position + velocity * mH.GetDeltaSeconds(); if ( !(tempPos.X < buffer || tempPos.X > mH.GetLevelSize().X - frame.Width - buffer || tempPos.Y < buffer || tempPos.Y > mH.GetLevelSize().Y - frame.Height - buffer)) { } else { if (tempPos.X <= buffer) { tempPos.X = buffer; } else if (tempPos.X > mH.GetLevelSize().X - frame.Width - buffer) { tempPos.X = mH.GetLevelSize().X - frame.Width - buffer; } if (tempPos.Y <= buffer) { tempPos.Y = buffer; } else if (tempPos.Y > mH.GetLevelSize().Y - frame.Height - buffer) { tempPos.Y = mH.GetLevelSize().Y - frame.Height - buffer; } } position = tempPos; //Update frames frame.X = frameIndex * frame.Width; frame.Y = modeIndex * frame.Height; UpdateProtection(mH); }
public override void DeathCode(ManagerHelper mH) { mH.GetEnvironmentManager().RemoveStaticBlocker(this); }
public override void Update(ManagerHelper mH) { elapsedTime = mH.GetGameTime().ElapsedGameTime.TotalSeconds; if (isExplosive && drawTime <= 0) { mH.GetParticleManager().AddExplosion(GetOriginPosition(), creator, damage); isExplosive = false; } if (drawTime > 0) { drawTime -= mH.GetGameTime().ElapsedGameTime.TotalSeconds; pulseTimer += elapsedTime; frameTimer += elapsedTime; #region Tossable Update #region Keep it in the level //Update position Vector2 tempPos = position + velocity * mH.GetDeltaSeconds(); //Check for collisions with environment foreach (Environment e in mH.GetEnvironmentManager().GetStaticBlockers()) { int tempCollide = CollisionHelper.IntersectPixelsDirectionalRaw(this, tempPos, e); if (tempCollide != -1) { velocity = CollisionHelper.CollideDirectional(velocity, tempCollide); } } tempPos = position + velocity * mH.GetDeltaSeconds(); if ((tempPos.X < 0 || tempPos.X > mH.GetLevelSize().X - frame.Width - 0 || tempPos.Y < 0 || tempPos.Y > mH.GetLevelSize().Y - frame.Height - 0)) { if (tempPos.X <= 0) { velocity = new Vector2(velocity.X * -1, velocity.Y); tempPos.X = 0; } else if (tempPos.X > mH.GetLevelSize().X - frame.Width - 0) { velocity = new Vector2(velocity.X * -1, velocity.Y); tempPos.X = mH.GetLevelSize().X - frame.Width - 0; } if (tempPos.Y <= 0) { velocity = new Vector2(velocity.X, velocity.Y * -1); tempPos.Y = 0; } else if (tempPos.Y > mH.GetLevelSize().Y - frame.Height - 0) { velocity = new Vector2(velocity.X, velocity.Y * -1); tempPos.Y = mH.GetLevelSize().Y - frame.Height - 0; } } position = tempPos; //Update frames frame.X = frameIndex * frame.Width; frame.Y = modeIndex * frame.Height; #endregion #region Finalize Direction foreach (Vector2 a in accelerations) { if (!float.IsNaN(a.X) && !float.IsNaN(a.Y)) { acceleration += a * mH.GetDeltaSeconds(); } } velocity += thrust * acceleration - drag * velocity; accelerations.Clear(); acceleration = Vector2.Zero; #endregion //Update position originPosition = position + origin; //Update frame if (frameIndex < 1) { frameIndex = 0; frameDirection = 1; } else if (frameIndex == totalFrames - 1) { frameIndex = totalFrames - 1; frameDirection = -1; } if (pulseTimer > pulseTime) { pulseTime /= 2; pulseTimer = 0; } if (frameTimer > pulseTime / (totalFrames * 2)) { frameTimer = 0; frameIndex += frameDirection; } if (modeIndex < 0) { modeIndex = 0; } else if (modeIndex >= totalModes) { modeIndex = totalModes; } frame.X = frameIndex * frame.Width; frame.Y = modeIndex * frame.Height; #endregion //Spawn cool things to make it look better EffectSpawnCode(mH); } existenceTime -= mH.GetGameTime().ElapsedGameTime.TotalSeconds; }
public override void Update(ManagerHelper mH) { if (timer > endTimer) { timer = 0; on = !on; if (on) { for (int i = 0; i < beamOn.Length; i++) { if (mH.GetRandom().NextDouble() > 0.5f) { beamOn[i] = true; mH.GetEnvironmentManager().GetImpathables().Add(beams[i]); } } } else { //blockers.Clear(); for (int i = 0; i < beamOn.Length; i++) { if (beamOn[i]) { beamOn[i] = false; mH.GetEnvironmentManager().RemoveImpathable(beams[i]); } } } } else { timer += mH.GetGameTime().ElapsedGameTime.TotalSeconds; } if (on) { for (int i = 0; i < beams.Length; i++) { if (beamOn[i]) { foreach (NPC a in mH.GetNPCManager().GetNPCs()) { if (!(a is Bomber)) { if (CollisionHelper.IntersectPixelsDirectional(a, beams[i]) != -1) { a.ChangeHealth(-3, a.GetLastDamager()); } } } } beams[i].SetFrameIndex(mH.GetRandom().Next(beams[i].totalFrames)); } } base.Update(mH); }