示例#1
0
        private void CloseCommandBinding_Executed(object sender, ExecutedRoutedEventArgs e)
        {
            try
            {
                taskCallbackClient?.Unsubscribe();
                taskCallbackClient?.Close();
            }
            catch { }
            try
            {
                pioClient?.Close();
            }
            catch { }

            /*try
             * {
             *      botsClient?.Close();
             * }
             * catch { }*/

            DataContext          = null;
            ApplicationViewModel = null;
            translationModule    = null;
            pioClient            = null; botsClient = null;

            isConnected = false;
        }
示例#2
0
        private async void OpenCommandBinding_Executed(object sender, ExecutedRoutedEventArgs e)
        {
            try
            {
                pioClient = new PIOServiceClient(new BasicHttpBinding(), new EndpointAddress($@"http://127.0.0.1:8733/PIO/Service/"));
                pioClient.Open();
                botsClient         = new BotsRESTClient($@"http://127.0.0.1:8734", new HttpConnector(), new ResponseDeserializer());
                taskCallbackClient = new TaskCallbackServiceClient(new InstanceContext(this), new WSDualHttpBinding(), new EndpointAddress($@"http://localhost:8735/PIO/TaskCallback/Service"));
                taskCallbackClient.Open();
                taskCallbackClient.Subscribe();
                isConnected = true;
            }
            catch (Exception ex)
            {
                ShowError(ex);
            }

            translationModule = new TranslationModule(NullLogger.Instance, pioClient);


            ApplicationViewModel = new ApplicationViewModel(pioClient, botsClient, translationModule);
            DataContext          = ApplicationViewModel;

            await translationModule.LoadAsync("FR");

            await ApplicationViewModel.LoadAsync();
        }
示例#3
0
        public WorkerViewModel(PIOServiceClient PIOClient, BotsRESTClient BotsClient, ITranslationModule TranslationModule) : base(PIOClient, BotsClient, TranslationModule)
        {
            CreateBotCommand = new ViewModelCommand(CreateBotCommandCanExecute, CreateBotCommandExecute);
            DeleteBotCommand = new ViewModelCommand(DeleteBotCommandCanExecute, DeleteBotCommandExecute);

            ProduceCommand = new ViewModelCommand(ProduceCommandCanExecute, ProduceCommandExecute);
            HarvestCommand = new ViewModelCommand(HarvestCommandCanExecute, HarvestCommandExecute);
        }
示例#4
0
        public BuildingViewModel(PIOServiceClient PIOClient, BotsRESTClient BotsClient, ITranslationModule TranslationModule, ProduceOrdersViewModel ProduceOrdersViewModel, HarvestOrdersViewModel HarvestOrderViewModels) : base(PIOClient, BotsClient, TranslationModule)
        {
            this.produceOrdersViewModel = ProduceOrdersViewModel;
            this.harvestOrderViewModels = HarvestOrderViewModels;

            CreateProduceOrderCommand = new ViewModelCommand(CreateProduceOrderCommandCanExecute, CreateProduceOrderCommandExecute);
            CreateHarvestOrderCommand = new ViewModelCommand(CreateHarvestOrderCommandCanExecute, CreateHarvestOrderCommandExecute);
        }
示例#5
0
        public ApplicationViewModel(PIOServiceClient PIOClient, BotsRESTClient BotsClient, ITranslationModule TranslationModule) : base(PIOClient, BotsClient, TranslationModule)
        {
            ProduceOrders = new ProduceOrdersViewModel(PIOClient, BotsClient, TranslationModule, planetID);
            HarvestOrders = new HarvestOrdersViewModel(PIOClient, BotsClient, TranslationModule, planetID);
            BuildOrders   = new BuildOrdersViewModel(PIOClient, BotsClient, TranslationModule, planetID);

            Cells         = new CellsViewModel(PIOClient, BotsClient, TranslationModule, BuildOrders, planetID);
            Workers       = new WorkersViewModel(PIOClient, BotsClient, TranslationModule, planetID);
            Buildings     = new BuildingsViewModel(PIOClient, BotsClient, TranslationModule, ProduceOrders, HarvestOrders, planetID);
            MapItems      = new MapItemsViewModel();
            SelectedItems = new MapItemsViewModel();
        }
示例#6
0
文件: Program.cs 项目: dfgs/PIO
        static void Main(string[] args)
        {
            ILogger logger;
            VersionControlModule versionControlModule;
            //ServiceHostModule serviceHostModule;
            //IBotsService service;
            RESTServer    server;
            IRouteManager routeManager;

            IDatabase          database;
            IConnectionFactory connectionFactory;
            ICommandBuilder    commandBuilder;
            IDatabaseCreator   databaseCreator;

            IBotModule          botModule;
            IOrderModule        orderModule;
            IOrderManagerModule orderManagerModule;
            IProduceOrderModule produceOrderModule;
            IHarvestOrderModule harvestOrderModule;
            IBuildOrderModule   buildOrderModule;

            IBotSchedulerModule botSchedulerModule;

            PIOServiceClient client;


            quitEvent = new AutoResetEvent(false);
            Console.CancelKeyPress += new ConsoleCancelEventHandler(Console_CancelKeyPress);

            //logger = new ConsoleLogger(new DefaultLogFormatter());
            logger = new UnicastLogger(IPAddress.Loopback, Properties.Settings.Default.UnicastPort);
            //logger = new FileLogger(new DefaultLogFormatter(), "PIO.Bots.ServerHost.Log");

            databaseCreator   = new SqlDatabaseCreator(Properties.Settings.Default.Server, Properties.Settings.Default.DatabaseName);
            connectionFactory = new SqlConnectionFactory(Properties.Settings.Default.Server, Properties.Settings.Default.DatabaseName);
            commandBuilder    = new SqlCommandBuilder();
            database          = new Database(connectionFactory, commandBuilder);

            versionControlModule = new VersionControlModule(logger, databaseCreator, new BotsVersionControl(database));
            if (!versionControlModule.InitializeDatabase(Properties.Settings.Default.DropDatabase))
            {
                Console.ReadLine();
                return;
            }

            client = new PIOServiceClient(new BasicHttpBinding(), new EndpointAddress($@"http://127.0.0.1:8733/PIO/Service/"));
            client.Open();


            botModule          = new BotModule(logger, database);
            orderModule        = new OrderModule(logger, database);
            produceOrderModule = new ProduceOrderModule(logger, database);
            harvestOrderModule = new HarvestOrderModule(logger, database);
            buildOrderModule   = new BuildOrderModule(logger, database);

            orderManagerModule = new OrderManagerModule(logger, client, orderModule, produceOrderModule, harvestOrderModule, buildOrderModule, 10);

            botSchedulerModule = new BotSchedulerModule(logger, client, botModule, orderManagerModule, 5);
            botSchedulerModule.Start();

            routeManager = new RouteManager(new RouteParser(), new ResponseSerializer());
            routeManager.AddRouteHandler(new BotRouteHandler(botModule));
            routeManager.AddRouteHandler(new ProduceOrderRouteHandler(produceOrderModule));
            routeManager.AddRouteHandler(new HarvestOrderRouteHandler(harvestOrderModule));
            routeManager.AddRouteHandler(new BuildOrderRouteHandler(buildOrderModule));

            server = new RESTServer(logger, routeManager, "http://127.0.0.1:8734/");

            server.Start();

            WaitHandle.WaitAny(new WaitHandle[] { quitEvent }, -1);

            server.Stop();
            //serviceHostModule.Stop();
            botSchedulerModule.Stop();

            client.Close();
            logger.Dispose();

            Console.CancelKeyPress -= new ConsoleCancelEventHandler(Console_CancelKeyPress);
        }
示例#7
0
 public WorkersViewModel(PIOServiceClient PIOClient, BotsRESTClient BotsClient, ITranslationModule TranslationModule, int PlanetID) : base(PIOClient, BotsClient, TranslationModule)
 {
     this.planetID = PlanetID;
 }
示例#8
0
 public ProduceOrderViewModel(PIOServiceClient PIOClient, BotsRESTClient BotsClient, ITranslationModule TranslationModule) : base(PIOClient, BotsClient, TranslationModule)
 {
 }
示例#9
0
 public PIOViewModelCollection(PIOServiceClient PIOClient, BotsRESTClient BotsClient, ITranslationModule TranslationModule)
 {
     this.PIOClient = PIOClient; this.BotsClient = BotsClient; this.TranslationModule = TranslationModule;
 }
示例#10
0
 public BuildingsViewModel(PIOServiceClient PIOClient, BotsRESTClient BotsClient, ITranslationModule TranslationModule, ProduceOrdersViewModel ProduceOrdersViewModel, HarvestOrdersViewModel HarvestOrderViewModels, int PlanetID) : base(PIOClient, BotsClient, TranslationModule)
 {
     this.planetID = PlanetID;
     this.produceOrdersViewModel = ProduceOrdersViewModel;
     this.harvestOrderViewModels = HarvestOrderViewModels;
 }
示例#11
0
 public TasksViewModel(PIOServiceClient PIOClient, BotsRESTClient BotsClient, ITranslationModule TranslationModule, int WorkerID) : base(PIOClient, BotsClient, TranslationModule)
 {
     this.workerID = WorkerID;
 }
示例#12
0
 public CellsViewModel(PIOServiceClient PIOClient, BotsRESTClient BotsClient, ITranslationModule TranslationModule, BuildOrdersViewModel BuildOrdersViewModel, int PlanetID) : base(PIOClient, BotsClient, TranslationModule)
 {
     this.planetID             = PlanetID;
     this.buildOrdersViewModel = BuildOrdersViewModel;
 }
示例#13
0
 public TranslationModule(ILogger Logger, PIOServiceClient PIOClient) : base(Logger)
 {
     this.PIOClient = PIOClient;
     dictionary     = new Dictionary <string, string>();
 }
示例#14
0
 public StacksViewModel(PIOServiceClient PIOClient, BotsRESTClient BotsClient, ITranslationModule TranslationModule, int BuildingID) : base(PIOClient, BotsClient, TranslationModule)
 {
     this.buildingID = BuildingID;
 }
示例#15
0
 public StackViewModel(PIOServiceClient PIOClient, BotsRESTClient BotsClient, ITranslationModule TranslationModule) : base(PIOClient, BotsClient, TranslationModule)
 {
 }
示例#16
0
 public CellViewModel(PIOServiceClient PIOClient, BotsRESTClient BotsClient, ITranslationModule TranslationModule, BuildOrdersViewModel BuildOrdersViewModel) : base(PIOClient, BotsClient, TranslationModule)
 {
     this.buildOrdersViewModel = BuildOrdersViewModel;
     CreateBuildOrderCommand   = new ViewModelCommand(CreateBuildOrderCommandCanExecute, CreateBuildOrderCommandExecute);
 }