public override void Update(float dt, Gui_Manager guimanager) { base.Update(dt, guimanager); // makes spider walk if (left) { new_x_add -= speed * dt; } else { new_x_add += speed * dt; } x_addition = (int)(new_x_add); this.steps_out += x_addition; new_x_add = new_x_add - x_addition; Fallable_Object main = guimanager.GetMain_Character(); if (main != null) { if (left == false && !guimanager.Check_Collision(this, this.position.x + x_addition + 2, this.position.y, this.size.x, this.size.y)) { this.left = true; } else if (left == true && (!guimanager.Check_Collision(this, this.position.x - x_addition - 2, this.position.y, this.size.x, this.size.y))) { this.left = false; } else { if (!((this.position.x + x_addition + 2 < main.position.x + main.size.x && this.position.x + x_addition - 2 + this.size.x > main.position.x && this.position.y + this.size.y > main.position.y && this.position.y < main.position.y + main.size.y))) { this.position.x += x_addition; } else { guimanager.Main_Dead(); } } } if (this.position.y > 600) { Console.WriteLine("respawning"); this.position.y = startposition.y; this.position.x = this.startposition.x - guimanager.movementchange; } }
public override void Update(float dt, Gui_Manager guimanager) { if (cooldown > 0) { cooldown = cooldown - (1 * dt); } else { cooldown = 0; } // adds new spike if (cooldown <= 0) { Spike spike_to_add = new Spike(position.x, position.y); spike_to_add.velocity = -3; droppingobjects.Add(spike_to_add); cooldown = interval; } // gives dropping objects their functionality droppingobjects.Reset(); while (droppingobjects.GetNext().Visit <bool>(() => false, _ => true)) { Spike droppingobject = droppingobjects.GetCurrent().Visit <Spike>(() => throw new Exception("spike error"), item => item); droppingobject.position.x = this.position.x; droppingobject.Update(dt, guimanager); Fallable_Object main = guimanager.GetMain_Character(); if (main != null) { if (main.position.x < droppingobject.position.x + droppingobject.size.x && main.position.x + main.size.x > droppingobject.position.x) { if (main.position.y + main.size.y > droppingobject.position.y && main.position.y < droppingobject.position.y + droppingobject.size.y) { guimanager.Main_Dead(); // main dead on touch } } } if (droppingobject.position.y > 2000) // remove when falling below 2000 pixels { // removing from list List <Spike> COPYdroppingobjects = droppingobjects; List <Spike> Newdroppingobjects = new List <Spike>(); { COPYdroppingobjects.Reset(); while (COPYdroppingobjects.GetNext().Visit <bool>(() => false, _ => true)) { Spike dropob = COPYdroppingobjects.GetCurrent().Visit <Spike>(() => throw new Exception("copyfail"), item => item); if (dropob.position.y != droppingobject.position.y) { Newdroppingobjects.Add(dropob); } } } droppingobjects = Newdroppingobjects; } } }
public override void Update(float dt, Gui_Manager guimanager) { if (cooldown > 0) { cooldown = cooldown - (1 * dt); } else { cooldown = 0; } // spawns new object when if (cooldown <= 0) { Toilet_Paper To_add = new Toilet_Paper(position.x, position.y); To_add.velocity = -3; droppingobjects.Add(To_add); cooldown = interval; } droppingobjects.Reset(); while (droppingobjects.GetNext().Visit <bool>(() => false, _ => true)) { Toilet_Paper droppingobject = droppingobjects.GetCurrent().Visit <Toilet_Paper>(() => throw new Exception("toiletpaper error"), item => item); droppingobject.position.x = this.position.x; droppingobject.Update(dt, guimanager); // making main die when touching droppingobject Fallable_Object main = guimanager.GetMain_Character(); if (main != null) { if (main.position.x < droppingobject.position.x + droppingobject.size.x && main.position.x + main.size.x > droppingobject.position.x) { if (main.position.y + main.size.y > droppingobject.position.y && main.position.y < droppingobject.position.y + droppingobject.size.y) { //touches main guimanager.Main_Dead(); } } // removing objects form list when below 2000 pixels if (droppingobject.position.y > 2000) { List <Toilet_Paper> COPYdroppingobjects = droppingobjects; List <Toilet_Paper> Newdroppingobjects = new List <Toilet_Paper>(); { COPYdroppingobjects.Reset(); while (COPYdroppingobjects.GetNext().Visit <bool>(() => false, _ => true)) { Toilet_Paper dropob = COPYdroppingobjects.GetCurrent().Visit <Toilet_Paper>(() => throw new Exception("copyfail"), item => item); if (dropob.position.y != droppingobject.position.y) { Newdroppingobjects.Add(dropob); } } } droppingobjects = Newdroppingobjects; } } } }