Esempio n. 1
0
        public frmMinerDemo()
        {
            InitializeComponent();

            mHighResTimer = new HighResTimer();

            // m_AsyncWorker will be used to perform the AI work on a background thread.
            m_AsyncWorker = new BackgroundWorker();
            m_AsyncWorker.WorkerReportsProgress = true;
            m_AsyncWorker.ProgressChanged += new ProgressChangedEventHandler(Thread_ProgressChanged);
            m_AsyncWorker.DoWork += new DoWorkEventHandler(Thread_DoWork);
            m_AsyncWorker.WorkerSupportsCancellation = true;

            // Just direct all debug output to our Message Writer
            Debug.Listeners.Clear();
            Debug.Listeners.Add(new TextWriterTraceListener(DebugMessages.Instance));

            groupBox1.ForeColor = mColourBob;
            groupBox2.ForeColor = mColourElsa;
            groupBox3.ForeColor = mColourBarFly;

            //create a miner
            Bob = new Miner((int)EntityName.ent_Miner_Bob);

            //create his wife
            Elsa = new MinersWife((int)EntityName.ent_Elsa);

            Joe = new BarFlyJoe((int)EntityName.ent_BarFly);

            //register them with the Message Dispatcher
            MessageDispatcher.Instance.RegisterEntity(Bob);
            MessageDispatcher.Instance.RegisterEntity(Elsa);
            MessageDispatcher.Instance.RegisterEntity(Joe);
        }
Esempio n. 2
0
        public frmSteeringDemo()
        {
            InitializeComponent();            

            mFont = new Font("Arial", 10);

            mHighResTimer = new HighResTimer();

            mFormsTimer = new System.Windows.Forms.Timer();
            mFormsTimer.Interval = 30; // 100 milliseconds is a tenth of a second
            mFormsTimer.Tick += new System.EventHandler(this.TimerEventProcessor);

            pnlViewPort.MouseClick += new MouseEventHandler(On_pnlViewPort_Click);
            pnlViewPort.SizeChanged += new EventHandler(On_pnlViewPort_Size);

            cmboChaseMode.SelectedIndex = 0;

            chkWalls.CheckedChanged += new EventHandler(chkWalls_CheckedChanged);
            chkObstacles.CheckedChanged += new EventHandler(chkObstacles_CheckedChanged);
            chkRenderAides.CheckedChanged += new EventHandler(chkRenderAides_CheckedChanged);
            chkSpacePart.CheckedChanged += new EventHandler(chkSpacePart_CheckedChanged);
            chkPenetrate.CheckedChanged += new EventHandler(chkPenetrate_CheckedChanged);
            cmboChaseMode.SelectedIndexChanged +=new EventHandler(cmboChaseMode_SelectedIndexChanged);
            cmboSamples.SelectedIndexChanged += new EventHandler(cmboSamples_SelectedIndexChanged);
            cmboUpdate.SelectedIndexChanged +=new EventHandler(cmboUpdate_SelectedIndexChanged);
            spinMaxForce.ValueChanged += new EventHandler(spinMaxForce_ValueChanged);
            spinMaxSpeed.ValueChanged += new EventHandler(spinMaxSpeed_ValueChanged);
            spinAlignment.ValueChanged += new EventHandler(spinAlignment_ValueChanged);
            spinCohesion.ValueChanged += new EventHandler(spinCohesion_ValueChanged);
            spinSeparation.ValueChanged += new EventHandler(spinSeparation_ValueChanged);
        }
Esempio n. 3
0
        public void CreateSearchPath(algorithm_type Algo)
        {
            //set current algorithm
            m_CurrentAlgorithm = Algo;

            //clear any existing path
            m_Path.Clear();
            m_SubTree.Clear();

            if (m_CurrentAlgorithm == algorithm_type.none)
                return;

            //create and start a timer
            HighResTimer tempTimer = new HighResTimer();

            tempTimer.Start();

            BaseGraphSearchAlgo SearchAlgo = null;

            //do the search
            switch (m_CurrentAlgorithm)
            {
                case algorithm_type.search_dfs:

                    SearchAlgo = new Graph_SearchDFS(m_Graph, m_iSourceCell, m_iTargetCell);
                    break;

                case algorithm_type.search_bfs:

                    SearchAlgo = new Graph_SearchBFS(m_Graph, m_iSourceCell, m_iTargetCell);
                    break;

                case algorithm_type.search_dijkstra:

                    SearchAlgo = new Graph_SearchDijkstra(m_Graph, m_iSourceCell, m_iTargetCell);
                    break;

                case algorithm_type.search_astar:

                    SearchAlgo = new Graph_SearchAStar(m_Graph, m_iSourceCell, m_iTargetCell, EuclidianDistance);
                    break;

                default:
                    throw new Exception("<PathFinder::CreateSearchPath>: algorithm_type does not exist");
            }

            tempTimer.Stop();

            //record the time taken  
            m_dTimeTaken = tempTimer.RunningTime;

            if (SearchAlgo != null)
            {
                //now grab the path (if one has been found)
                if (SearchAlgo.Found())
                {
                    m_Path = SearchAlgo.GetPathToTarget();
                }

                m_SubTree = SearchAlgo.GetSearchTree();

                m_dCostToTarget = SearchAlgo.GetCostToTarget();
            }
        }