示例#1
0
        void RunBot()
        {
            while (bwapi.Broodwar.isInGame())
            {
                //for(std::list<Event>::iterator e=Broodwar->getEvents().begin();e!=Broodwar->getEvents().end();e++)
                foreach (Event e in bwapi.Broodwar.getEvents())
                {
                    EventType_Enum et = e.getType();
                    switch (et)
                    {
                    case EventType_Enum.MatchEnd:
                        foreach (BWAPI.IStarcraftBot client in clients.Values)
                        {
                            client.onEnd(e.isWinner());
                        }
                        break;

                    case EventType_Enum.MatchFrame:
                        foreach (BWAPI.IStarcraftBot client in clients.Values)
                        {
                            client.onFrame();
                        }
                        break;

                    case EventType_Enum.MenuFrame:
                        break;

                    case EventType_Enum.SendText:
                        foreach (BWAPI.IStarcraftBot client in clients.Values)
                        {
                            client.onSendText(e.getText());
                        }
                        break;

                    case EventType_Enum.ReceiveText:
                        foreach (BWAPI.IStarcraftBot client in clients.Values)
                        {
                            client.onReceiveText(e.getPlayer(), e.getText());
                        }
                        break;

                    case EventType_Enum.PlayerLeft:
                        foreach (BWAPI.IStarcraftBot client in clients.Values)
                        {
                            client.onPlayerLeft(e.getPlayer());
                        }
                        break;

                    case EventType_Enum.NukeDetect:
                        foreach (BWAPI.IStarcraftBot client in clients.Values)
                        {
                            client.onNukeDetect(e.getPosition());
                        }
                        break;

                    case EventType_Enum.UnitDiscover:
                        foreach (BWAPI.IStarcraftBot client in clients.Values)
                        {
                            client.onUnitDiscover(e.getUnit());
                        }
                        break;

                    case EventType_Enum.UnitEvade:
                        foreach (BWAPI.IStarcraftBot client in clients.Values)
                        {
                            client.onUnitEvade(e.getUnit());
                        }
                        break;

                    case EventType_Enum.UnitShow:
                        foreach (BWAPI.IStarcraftBot client in clients.Values)
                        {
                            client.onUnitShow(e.getUnit());
                        }
                        break;

                    case EventType_Enum.UnitHide:
                        foreach (BWAPI.IStarcraftBot client in clients.Values)
                        {
                            client.onUnitHide(e.getUnit());
                        }
                        break;

                    case EventType_Enum.UnitCreate:
                        foreach (BWAPI.IStarcraftBot client in clients.Values)
                        {
                            client.onUnitCreate(e.getUnit());
                        }
                        break;

                    case EventType_Enum.UnitDestroy:
                        foreach (BWAPI.IStarcraftBot client in clients.Values)
                        {
                            client.onUnitDestroy(e.getUnit());
                        }
                        break;

                    case EventType_Enum.UnitMorph:
                        foreach (BWAPI.IStarcraftBot client in clients.Values)
                        {
                            client.onUnitMorph(e.getUnit());
                        }
                        break;

                    case EventType_Enum.UnitRenegade:
                        foreach (BWAPI.IStarcraftBot client in clients.Values)
                        {
                            client.onUnitRenegade(e.getUnit());
                        }
                        break;

                    case EventType_Enum.SaveGame:
                        foreach (BWAPI.IStarcraftBot client in clients.Values)
                        {
                            client.onSaveGame(e.getText());
                        }
                        break;

                    default:
                        break;
                    }
                }
                System.Threading.Thread.Sleep(0);
                bwapiclient.BWAPIClient.update();
                if (!bwapiclient.BWAPIClient.isConnected())
                {
                    System.Console.WriteLine("Reconnecting...\n");
                    reconnect();
                }
            }
            System.Console.WriteLine("Game ended\n");
        }
示例#2
0
        void InitBot()
        {
            bool initDone = false;

            loadBot(); //preload our bot so that any module load errors come up now instead of at match start.

            bwapi.BWAPI_init();
            System.Console.WriteLine("Connecting...");
            reconnect();

            //TODO: remove the match speed

            //wait for game to start
            System.Console.WriteLine("waiting to enter match\n");
            while (!bwapi.Broodwar.isInGame())
            {
                bwapiclient.BWAPIClient.update();
                if (!bwapiclient.BWAPIClient.isConnected())
                {
                    System.Console.WriteLine("Reconnecting...\n");
                    reconnect();
                }
            } //wait for game
            //loadBot(); //reload the bot at the start of each match (for easy drop in dll replacement)
            System.Console.WriteLine("Starting Match");
            IBWAPI = clients["initBot"];
            while (bwapi.Broodwar.isInGame() && !initDone)
            {
                //for(std::list<Event>::iterator e=Broodwar->getEvents().begin();e!=Broodwar->getEvents().end();e++)
                foreach (Event e in bwapi.Broodwar.getEvents())
                {
                    EventType_Enum et = e.getType();
                    switch (et)
                    {
                    case EventType_Enum.MatchStart:

                        // takes a long time to run
                        bwtaThread.Start();
                        foreach (BWAPI.IStarcraftBot client in clients.Values)
                        {
                            client.onStart();
                        }
                        oThread.Start();
                        initDone = true;

                        break;

                    case EventType_Enum.MatchEnd:
                        foreach (BWAPI.IStarcraftBot client in clients.Values)
                        {
                            client.onEnd(e.isWinner());
                        }
                        break;

                    default:
                        break;
                    }
                }
                bwapiclient.BWAPIClient.update();
                if (!bwapiclient.BWAPIClient.isConnected())
                {
                    System.Console.WriteLine("Reconnecting...\n");
                    reconnect();
                }
            }
        }
示例#3
0
        static void LoadandRunBot()
        {
            loadBot(); //preload our bot so that any module load errors come up now instead of at match start.

            bwapi.BWAPI_init();
            System.Console.WriteLine("Connecting...");
            reconnect();
            while (true)
            {
                //wait for game to start
                System.Console.WriteLine("waiting to enter match\n");
                while (!bwapi.Broodwar.isInGame())
                {
                    bwapiclient.BWAPIClient.update();
                    if (!bwapiclient.BWAPIClient.isConnected())
                    {
                        System.Console.WriteLine("Reconnecting...\n");
                        reconnect();
                    }
                } //wait for game
                loadBot(); //reload the bot at the start of each match (for easy drop in dll replacement)
                System.Console.WriteLine("Starting Match");

                while (bwapi.Broodwar.isInGame())
                {
                    //for(std::list<Event>::iterator e=Broodwar->getEvents().begin();e!=Broodwar->getEvents().end();e++)
                    foreach (Event e in bwapi.Broodwar.getEvents())
                    {
                        EventType_Enum et = e.getType();
                        switch (et)
                        {
                        case EventType_Enum.MatchStart:
                            client.onStart();
                            break;

                        case EventType_Enum.MatchEnd:
                            client.onEnd(e.isWinner());
                            break;

                        case EventType_Enum.MatchFrame:
                            client.onFrame();
                            break;

                        case EventType_Enum.MenuFrame:
                            break;

                        case EventType_Enum.SendText:
                            client.onSendText(e.getText());
                            break;

                        case EventType_Enum.ReceiveText:
                            client.onReceiveText(e.getPlayer(), e.getText());
                            break;

                        case EventType_Enum.PlayerLeft:
                            client.onPlayerLeft(e.getPlayer());
                            break;

                        case EventType_Enum.NukeDetect:
                            client.onNukeDetect(e.getPosition());
                            break;

                        case EventType_Enum.UnitDiscover:
                            client.onUnitDiscover(e.getUnit());
                            break;

                        case EventType_Enum.UnitEvade:
                            client.onUnitEvade(e.getUnit());
                            break;

                        case EventType_Enum.UnitShow:
                            client.onUnitShow(e.getUnit());
                            break;

                        case EventType_Enum.UnitHide:
                            client.onUnitHide(e.getUnit());
                            break;

                        case EventType_Enum.UnitCreate:
                            client.onUnitCreate(e.getUnit());
                            break;

                        case EventType_Enum.UnitDestroy:
                            client.onUnitDestroy(e.getUnit());
                            break;

                        case EventType_Enum.UnitMorph:
                            client.onUnitMorph(e.getUnit());
                            break;

                        case EventType_Enum.UnitRenegade:
                            client.onUnitRenegade(e.getUnit());
                            break;

                        case EventType_Enum.SaveGame:
                            client.onSaveGame(e.getText());
                            break;

                        default:
                            break;
                        }
                    }
                    bwapiclient.BWAPIClient.update();
                    if (!bwapiclient.BWAPIClient.isConnected())
                    {
                        System.Console.WriteLine("Reconnecting...\n");
                        reconnect();
                    }
                }
                System.Console.WriteLine("Game ended\n");
            } //main while loop
        }
示例#4
0
 public Event setType(EventType_Enum type) {
   Event ret = new Event(bwapiPINVOKE.Event_setType(swigCPtr, (int)type), false);
   return ret;
 }
示例#5
0
        public Event setType(EventType_Enum type)
        {
            Event ret = new Event(bwapiPINVOKE.Event_setType(swigCPtr, (int)type), false);

            return(ret);
        }
示例#6
0
        public EventType_Enum getType()
        {
            EventType_Enum ret = (EventType_Enum)bwapiPINVOKE.Event_getType(swigCPtr);

            return(ret);
        }