Пример #1
0
 public override void Draw(iDrawVisitor visitor)
 {
     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.Draw(visitor);
     }
 }
Пример #2
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;
                    }
                }
            }
        }
 public void DrawToiletPaper(Toilet_time_main.Toilet_Paper toilet_paper)
 {
     spritebatch.Draw(Texture_Toilet_Paper, ConvertRectangle(new Rectangle(toilet_paper.position.x, toilet_paper.position.y, toilet_paper.size.x, toilet_paper.size.y)), toilet_paper.color);
 }