Inheritance: Sprite
Exemplo n.º 1
0
 private void ChooseFloor(Floor floor, Lift lift)
 {
     if (mDir == Dir.Up) mNext = random.Next(floor.mNum + 1, Program.NUMFLOORS);
       if (mDir == Dir.Down) mNext = random.Next(0, floor.mNum);
       lift.Stop(mNext);
 }
Exemplo n.º 2
0
        public Cabin(int num, Lift lift, List<Floor> floors)
        {
            this.mNum = num;
              this.mLift = lift;
              this.mFloors = floors;

              join.When(ProcessMessage).Do(CabinLoop);
        }
Exemplo n.º 3
0
        public Floor(List<Lift> lifts, FloorNum floor)
        {
            this.mLifts = lifts;
              this.mNum = floor;

              join.Initialize(out Up);
              join.Initialize(out Down);
              join.Initialize(out Arrived);
              join.Initialize(out PersonArrived);
              join.Initialize(out PersonDeparted);

              join.When(ProcessMessage).And(Up).Do(delegate
              {
            mReservedUp = Reserve(Dir.Up);
            UnderViewLock(delegate
            {
              mUpButtonBackColor = Color.Yellow;
            });
              });

              join.When(ProcessMessage).And(Down).Do(delegate
              {
            mReservedDown = Reserve(Dir.Down);
            UnderViewLock(delegate
            {
              mDownButtonBackColor = Color.Yellow;
            });
              });

              join.When(ProcessMessage).And(Arrived).Do(delegate(Lift lift)
              {
            if (mReservedUp == lift) {
              mReservedUp = null;
              UnderViewLock(delegate
              {
            mUpButtonBackColor = Color.Silver;
              });
              foreach (Person p in mPeople) p.Arrived(Helpers.pair(lift, Dir.Up));
            };
            if (mReservedDown == lift) {
              mReservedDown = null;
              UnderViewLock(delegate
              {
            mDownButtonBackColor = Color.Silver;
              });
              foreach (Person p in mPeople) p.Arrived(Helpers.pair(lift, Dir.Down));
            };
              });

              join.When(ProcessMessage).And(PersonArrived).Do(delegate(Pair<Person, Ack> p)
              {
            mPeople.Add(p.Fst);
            p.Snd.Send();
              });

              join.When(ProcessMessage).And(PersonDeparted).Do(delegate(Person person)
              {
            mPeople.Remove(person);
              });

              Font Wingdings = new System.Drawing.Font("Wingdings", 10.0F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(2)));

              Button up = mUpButton;
              up.Location = new Point(Program.COLUMNWIDTH, (Program.NUMFLOORS - mNum) * Program.COLUMNHEIGHT);
              up.Font = Wingdings;
              up.Text = "\x00F1";
              up.Size = new Size(Program.COLUMNWIDTH / 2, Program.COLUMNHEIGHT);
              up.ForeColor = Color.Green;
              up.BackColor = Color.Silver;
              up.Click += new EventHandler(delegate { this.Up(); });

              Button down = mDownButton;
              down.Location = new Point(Program.COLUMNWIDTH + Program.COLUMNWIDTH / 2 , (Program.NUMFLOORS - mNum) * Program.COLUMNHEIGHT);
              down.Text = "\x00F2";
              down.Font = Wingdings;
              down.Size = new Size(Program.COLUMNWIDTH / 2, Program.COLUMNHEIGHT);
              down.ForeColor = Color.Red;
              down.BackColor = Color.Silver;
              down.Click += new EventHandler(delegate { this.Down(); });
        }