Esempio n. 1
0
        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;
            }
        }
Esempio n. 2
0
        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;
                }
            }
        }
Esempio n. 3
0
        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;
                    }
                }
            }
        }