コード例 #1
0
ファイル: World.cs プロジェクト: DaveVoorhis/Critterworld_Old
        internal void Activate(CritterWrapper critterWrapper)
        {
            if (!critterWrapper.IsWaiting)
            {
                return;
            }
            Critter critter = null;

            try
            {
                Point possibleCritterPosition = GetStartingCritterPosition();
                critter                = Critter.CreateCritter(critterWrapper.File, critterWrapper.Brain, this, possibleCritterPosition);
                critter.MaximumAge     = maximumCritterAge;
                critterWrapper.Critter = critter;
                runningCritters.Add(critterWrapper);
                displayCritters.Add(critterWrapper);
            }
            catch (Exception e)
            {
                Logger.OutputToLog("Critter " + critterWrapper.CritterName + " by " + critterWrapper.CritterCreator + " in file " + critterWrapper.File + " failed to activate: " + e, Logger.LogLevel.Error);
                if (critter != null)
                {
                    critter.Die("Crashed");
                }
                CritterWorldForm.AddMarqueeMessage(critterWrapper.CritterName + " by " + critterWrapper.CritterCreator + " crashed.");
            }
        }
コード例 #2
0
ファイル: World.cs プロジェクト: DaveVoorhis/Critterworld_Old
 public void CleanupDead()
 {
     lock (allObjects)
     {
         for (int i = 0; i < allObjects.Count; i++)
         {
             if (allObjects[i].IsDead)
             {
                 if (allObjects[i] is Critter)
                 {
                     for (int j = 0; j < runningCritters.Count; j++)
                     {
                         if (runningCritters[j].Critter == allObjects[i])
                         {
                             CritterWrapper critter = runningCritters[j];
                             runningCritters.RemoveAt(j);
                             if (critter.Critter.IsGoalReached)
                             {
                                 recordFinishedCritter(critter);
                                 leaderboard.AddFinisher(critter.CritterName, (string)critter.Critter.CritterBrain.Creator, critter.Critter.TimeToGoal);
                             }
                             else
                             {
                                 deadCritters.Add(critter);
                             }
                             break;
                         }
                     }
                 }
                 allObjects.RemoveAt(i);
             }
         }
     }
 }
コード例 #3
0
ファイル: World.cs プロジェクト: DaveVoorhis/Critterworld_Old
 private void recordFinishedCritter(CritterWrapper critter)
 {
     // crude insertion sort now; improve later
     for (int k = 0; k < finishedCritters.Count; k++)
     {
         if (critter.Critter.TimeToGoal < finishedCritters[k].Critter.TimeToGoal)
         {
             finishedCritters.Insert(k, critter);
             return;
         }
     }
     finishedCritters.Add(critter);
 }
コード例 #4
0
        private void dataGridViewRunning_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            DataGridViewRow row  = dataGridViewRunning.Rows[e.RowIndex];
            CritterWrapper  item = (CritterWrapper)row.DataBoundItem;
            Form            form = item.Brain.Form;

            if (form == null)
            {
                string msg = "Critter " + item.CritterName + " by " + item.CritterCreator + " in file " + item.File + " does not have an edit form.";
                MessageBox.Show(msg, "Edit Failure", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                form.ShowDialog();
            }
        }
コード例 #5
0
ファイル: World.cs プロジェクト: DaveVoorhis/Critterworld_Old
 public void CheckActiveCritterCount()
 {
     lock (runningCritters)
     {
         if (runningCritters.Count < maximumActiveCritterCount || maximumActiveCritterCount <= 0)
         {
             lock (waitingCritters)
             {
                 if (waitingCritters.Count() > 0)
                 {
                     CritterWrapper critter = waitingCritters[0];
                     waitingCritters.RemoveAt(0);
                     Activate(critter);
                 }
             }
         }
     }
 }