Exemplo n.º 1
0
        public void EndStore(int WorkerID, ResourceTypeIDs ResourceTypeID)
        {
            Building building;
            Stack    stack;
            Worker   worker;

            LogEnter();

            worker = AssertExists(() => workerModule.GetWorker(WorkerID), $"WorkerID={WorkerID}");

            building = AssertExists(() => buildingModule.GetBuilding(worker.PlanetID, worker.X, worker.Y), $"X={worker.X}, Y={worker.Y}");

            Log(LogLevels.Information, $"Get stack (BuildingID={building.BuildingID}, ResourceTypeID={ResourceTypeID})");
            stack = Try(() => stackModule.GetStack(building.BuildingID, ResourceTypeID)).OrThrow <PIOInternalErrorException>("Failed to get stack");

            Log(LogLevels.Information, $"Adding resource (ResourceTypeID={ResourceTypeID}, Quantity={carriedQuantity})");
            if (stack == null)
            {
                Try(() => stackModule.InsertStack(building.BuildingID, ResourceTypeID, carriedQuantity)).OrThrow <PIOInternalErrorException>("Failed to insert stack");
            }
            else
            {
                stack.Quantity += carriedQuantity;
                Try(() => stackModule.UpdateStack(stack.StackID, stack.Quantity)).OrThrow <PIOInternalErrorException>("Failed to update stack");
            }
        }
Exemplo n.º 2
0
 public int GetStackQuantity(int BuildingID, ResourceTypeIDs ResourceTypeID)
 {
     if (ThrowException)
     {
         throw new PIODataException("UnitTestException", null, 1, "UnitTest", "UnitTest");
     }
     return(3);
 }
Exemplo n.º 3
0
 public Stack FindStack(int PlanetID, ResourceTypeIDs ResourceTypeID)
 {
     if (throwException)
     {
         throw new PIODataException("UnitTestException", null, 1, "UnitTest", "UnitTest");
     }
     return(items.FirstOrDefault(item => item.ResourceTypeID == ResourceTypeID));
 }
Exemplo n.º 4
0
 public Stack GetStack(int BuildingID, ResourceTypeIDs ResourceTypeID)
 {
     if (throwException)
     {
         throw new PIODataException("UnitTestException", null, 1, "UnitTest", "UnitTest");
     }
     return(items.FirstOrDefault(item => (item.BuildingID == BuildingID) && (item.ResourceTypeID == ResourceTypeID)));
 }
Exemplo n.º 5
0
        public Stack GetStack(int BuildingID, ResourceTypeIDs ResourceTypeID)
        {
            ISelect query;

            LogEnter();

            Log(LogLevels.Information, $"Querying Stack table (BuildingID={BuildingID}, ResourceTypeID={ResourceTypeID})");
            query = new Select(StackTable.StackID, StackTable.BuildingID, StackTable.ResourceTypeID, StackTable.Quantity).From(PIODB.StackTable).Where(new AndFilter(StackTable.BuildingID.IsEqualTo(BuildingID), StackTable.ResourceTypeID.IsEqualTo(ResourceTypeID)));
            return(TrySelectFirst <StackTable, Stack>(query).OrThrow <PIODataException>("Failed to query"));
        }
Exemplo n.º 6
0
        public Task BeginTake(int WorkerID, ResourceTypeIDs ResourceTypeID)
        {
            Task task = new Models.Task()
            {
                WorkerID = WorkerID, ResourceTypeID = ResourceTypeID
            };

            TaskCreated(this, new Task[] { task });
            return(task);
        }
Exemplo n.º 7
0
        public ResourceType GetResourceType(ResourceTypeIDs ResourceTypeID)
        {
            ISelect query;

            LogEnter();

            Log(LogLevels.Information, $"Querying ResourceType table (ResourceTypeID={ResourceTypeID})");
            query = new Select(ResourceTypeTable.ResourceTypeID, ResourceTypeTable.PhraseKey).From(PIODB.ResourceTypeTable).Where(ResourceTypeTable.ResourceTypeID.IsEqualTo(ResourceTypeID));
            return(TrySelectFirst <ResourceTypeTable, ResourceType>(query).OrThrow <PIODataException>("Failed to query"));
        }
Exemplo n.º 8
0
        public void EndTake(int WorkerID, ResourceTypeIDs ResourceTypeID)
        {
            Worker worker;

            LogEnter();

            worker = AssertExists(() => workerModule.GetWorker(WorkerID), $"WorkerID={WorkerID}");

            Log(LogLevels.Information, $"Updating worker (WorkerID={WorkerID})");
            Try(() => workerModule.UpdateWorker(WorkerID, ResourceTypeID)).OrThrow <PIOInternalErrorException>("Failed to update worker");
        }
Exemplo n.º 9
0
 public Stack GetStack(int BuildingID, ResourceTypeIDs ResourceTypeID)
 {
     if (ThrowException)
     {
         throw new PIODataException("UnitTestException", null, 1, "UnitTest", "UnitTest");
     }
     return(new Stack()
     {
         StackID = 1, ResourceTypeID = ResourceTypeID
     });
 }
Exemplo n.º 10
0
 public ResourceType GetResourceType(ResourceTypeIDs ResourceTypeID)
 {
     if (ThrowException)
     {
         throw new PIODataException("UnitTestException", null, 1, "UnitTest", "UnitTest");
     }
     return(new ResourceType()
     {
         ResourceTypeID = ResourceTypeID
     });
 }
Exemplo n.º 11
0
        public Stack InsertStack(int BuildingID, ResourceTypeIDs ResourceTypeID, int Quantity)
        {
            Stack item;

            item = new Stack()
            {
                StackID = items.Count, BuildingID = BuildingID, ResourceTypeID = ResourceTypeID, Quantity = Quantity
            };
            items.Add(item);
            return(item);
        }
Exemplo n.º 12
0
        public Stack FindStack(int PlanetID, ResourceTypeIDs ResourceTypeID)
        {
            ISelect query;

            LogEnter();

            Log(LogLevels.Information, $"Querying Stack table (PlanetID={PlanetID}, ResourceTypeID={ResourceTypeID}), Quantity>0");
            query = new Select(StackTable.StackID, StackTable.BuildingID, StackTable.ResourceTypeID, StackTable.Quantity)
                    .From(
                PIODB.StackTable.Join(PIODB.BuildingTable.On(StackTable.BuildingID, BuildingTable.BuildingID))
                )
                    .Where(new AndFilter(BuildingTable.PlanetID.IsEqualTo(PlanetID), StackTable.ResourceTypeID.IsEqualTo(ResourceTypeID), StackTable.Quantity.IsGreaterThan(0)));
            return(TrySelectFirst <StackTable, Stack>(query).OrThrow <PIODataException>("Failed to query"));
        }
Exemplo n.º 13
0
        public Task BeginTake(int WorkerID, ResourceTypeIDs ResourceTypeID)
        {
            if (ThrowException)
            {
                throw new PIODataException("UnitTestException", null, 1, "UnitTest", "UnitTest");
            }
            Task task = new Task()
            {
                WorkerID = WorkerID, ETA = DateTime.Now, ResourceTypeID = ResourceTypeID
            };

            TaskCreated?.Invoke(this, new Task[] { task });
            return(task);
        }
Exemplo n.º 14
0
        public Stack InsertStack(int BuildingID, ResourceTypeIDs ResourceTypeID, int Quantity)
        {
            IInsert query;
            Stack   item;
            object  result;

            LogEnter();
            Log(LogLevels.Information, $"Inserting into Stack table (BuildingID={BuildingID}, ResourceTypeID={ResourceTypeID}, Quantity={Quantity})");
            item = new Stack()
            {
                BuildingID = BuildingID, ResourceTypeID = ResourceTypeID, Quantity = Quantity
            };
            query        = new Insert().Into(PIODB.StackTable).Set(StackTable.BuildingID, item.BuildingID).Set(StackTable.ResourceTypeID, item.ResourceTypeID).Set(StackTable.Quantity, item.Quantity);
            result       = Try(query).OrThrow <PIODataException>("Failed to insert");
            item.StackID = Convert.ToInt32(result);
            return(item);
        }
Exemplo n.º 15
0
        public Ingredient CreateIngredient(BuildingTypeIDs BuildingTypeID, ResourceTypeIDs ResourceTypeID, int Quantity)
        {
            IInsert    query;
            Ingredient item;
            object     result;

            LogEnter();

            item = new Ingredient()
            {
                BuildingTypeID = BuildingTypeID, ResourceTypeID = ResourceTypeID, Quantity = Quantity,
            };

            Log(LogLevels.Information, $"Inserting into Ingredient table (BuildingTypeID={BuildingTypeID},ResourceTypeID={ResourceTypeID}, Quantity={Quantity})");
            query             = new Insert().Into(PIODB.IngredientTable).Set(IngredientTable.BuildingTypeID, item.BuildingTypeID).Set(IngredientTable.ResourceTypeID, item.ResourceTypeID).Set(IngredientTable.Quantity, item.Quantity);
            result            = Try(query).OrThrow <PIODataException>("Failed to insert");
            item.IngredientID = Convert.ToInt32(result);

            return(item);
        }
Exemplo n.º 16
0
        public ResourceType CreateResourceType(ResourceTypeIDs ResourceTypeID, string PhraseKey)
        {
            IInsert      query;
            ResourceType item;
            object       result;

            LogEnter();

            item = new ResourceType()
            {
                ResourceTypeID = ResourceTypeID, PhraseKey = PhraseKey,
            };

            Log(LogLevels.Information, $"Inserting into ResourceType table (ResourceTypeID={ResourceTypeID}, PhraseKey={PhraseKey})");
            query  = new Insert().Into(PIODB.ResourceTypeTable).Set(ResourceTypeTable.ResourceTypeID, item.ResourceTypeID).Set(ResourceTypeTable.PhraseKey, item.PhraseKey);
            result = Try(query).OrThrow <PIODataException>("Failed to insert");
            //item.ResourceTypeID = Convert.ToInt32(result);

            return(item);
        }
Exemplo n.º 17
0
        public Product CreateProduct(BuildingTypeIDs BuildingTypeID, ResourceTypeIDs ResourceTypeID, int Quantity, int Duration)
        {
            IInsert query;
            Product item;
            object  result;

            LogEnter();

            item = new Product()
            {
                BuildingTypeID = BuildingTypeID, ResourceTypeID = ResourceTypeID, Quantity = Quantity, Duration = Duration
            };

            Log(LogLevels.Information, $"Inserting into Product table (BuildingTypeID={BuildingTypeID},ResourceTypeID={ResourceTypeID}, Quantity={Quantity}, Duration={Duration})");
            query          = new Insert().Into(PIODB.ProductTable).Set(ProductTable.BuildingTypeID, item.BuildingTypeID).Set(ProductTable.ResourceTypeID, item.ResourceTypeID).Set(ProductTable.Quantity, item.Quantity).Set(ProductTable.Duration, item.Duration);
            result         = Try(query).OrThrow <PIODataException>("Failed to insert");
            item.ProductID = Convert.ToInt32(result);

            return(item);
        }
Exemplo n.º 18
0
        public Task BeginTake(int WorkerID, ResourceTypeIDs ResourceTypeID)
        {
            Building building;
            Worker   worker;
            Stack    stack;
            Task     task;

            LogEnter();

            worker = AssertWorkerIsIdle(WorkerID);

            Log(LogLevels.Information, $"Check if worker is not carrying item (WorkerID={worker.WorkerID})");
            if (worker.ResourceTypeID != null)
            {
                Throw <PIOInvalidOperationException>(LogLevels.Warning, $"Worker is already carrying item (WorkerID={worker.WorkerID}, ResourceTypeID={worker.ResourceTypeID})");
            }

            building = AssertExists(() => buildingModule.GetBuilding(worker.PlanetID, worker.X, worker.Y), $"X={worker.X}, Y={worker.Y}");
            Log(LogLevels.Information, $"Check stack quantity (BuildingID={building.BuildingID}, ResourceTypeID={ResourceTypeID})");
            stack = Try(() => stackModule.GetStack(building.BuildingID, ResourceTypeID)).OrThrow <PIOInternalErrorException>("Failed to get stack");
            if ((stack == null) || (stack.Quantity < carriedQuantity))
            {
                Throw <PIONoResourcesException>(LogLevels.Warning, $"Not enough resources (BuildingID={building.BuildingID}, ResourceTypeID={ResourceTypeID})");
            }

            Log(LogLevels.Information, $"Consuming resource (BuildingID={building.BuildingID}, ResourceTypeID={ResourceTypeID}, Quantity={carriedQuantity})");
            stack.Quantity -= carriedQuantity;
            Try(() => stackModule.UpdateStack(stack.StackID, stack.Quantity)).OrThrow <PIOInternalErrorException>("Failed to update stack");


            Log(LogLevels.Information, $"Creating task (WorkerID={WorkerID})");
            task = Try(() => taskModule.CreateTask(TaskTypeIDs.Take, WorkerID, worker.X, worker.Y, null, ResourceTypeID, null, DateTime.Now.AddSeconds(5))).OrThrow <PIOInternalErrorException>("Failed to create task");

            OnTasksCreated(task);

            return(task);
        }
Exemplo n.º 19
0
 public Material CreateMaterial(BuildingTypeIDs BuildingTypeID, ResourceTypeIDs ResourceTypeID, int Quantity)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 20
0
 public Task <Models.Task> CarryToAsync(int WorkerID, int TargetBuildingID, ResourceTypeIDs ResourceTypeID)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 21
0
 public Models.Task Take(int WorkerID, ResourceTypeIDs ResourceTypeID)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 22
0
 public Product CreateProduct(BuildingTypeIDs BuildingTypeID, ResourceTypeIDs ResourceTypeID, int Quantity, int Duration)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 23
0
 public void EndTake(int WorkerID, ResourceTypeIDs ResourceTypeID)
 {
 }
Exemplo n.º 24
0
 public Task <Models.Task> TakeAsync(int WorkerID, ResourceTypeIDs ResourceTypeID)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 25
0
 public void EndStore(int WorkerID, ResourceTypeIDs ResourceTypeID)
 {
 }
Exemplo n.º 26
0
 public ResourceType CreateResourceType(ResourceTypeIDs ResourceTypeID, string Name)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 27
0
 public void EndStore(int WorkerID, ResourceTypeIDs ResourceTypeID)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 28
0
 public Models.Task CarryTo(int WorkerID, int TargetFactoryID, ResourceTypeIDs ResourceTypeID)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 29
0
 public Ingredient CreateIngredient(BuildingTypeIDs BuildingTypeID, ResourceTypeIDs ResourceTypeID, int Quantity)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 30
0
 public Stack InsertStack(int BuildingID, ResourceTypeIDs ResourceTypeID, int Quantity)
 {
     throw new NotImplementedException();
 }