示例#1
0
        public static PlanetDetail AddResearchQueue(BuildingQue buildingQue)
        {
            PlanetDetail pl = PlanetDAL.GetPlanet(buildingQue.PlanetID, buildingQue.UserID);
            AllbuildQues BuildingsQueLeft = PlanetBLL.GetBuildingQueue(buildingQue.PlanetID, buildingQue.UserID);
            DateTime     UTC = DateTime.UtcNow;

            BuildingQue bq = new BuildingQue();

            bq.BuildingID   = buildingQue.BuildingID;
            bq.PlanetID     = buildingQue.PlanetID;
            bq.Seconds      = buildingQue.Seconds;
            bq.UserID       = buildingQue.UserID;
            bq.MaterialCost = 0;
            bq.Type         = 2;

            DateTime?maxCompletetionDate = BuildingsQueLeft.researchQue.FindAll(x => x.Type == 2).Max(x => x.CompletetionDate);

            if (maxCompletetionDate.HasValue)
            {
                bq.CompletetionDate = maxCompletetionDate.Value.AddSeconds(buildingQue.Seconds.Value);
            }
            else
            {
                bq.CompletetionDate = UTC.AddSeconds(buildingQue.Seconds.Value);
            }
            PlanetDAL.AddBuildingQue(bq);
            return(pl);
        }
 public IHttpActionResult UpdatePlanetPop([FromBody] PlanetDetail planetDetail)
 {
     try
     {
         return(Ok(PlanetDAL.UpdatePlanetPop(planetDetail)));
     }
     catch (Exception e)
     {
         return(InternalServerError(e));
     }
 }
 public IHttpActionResult GetSystem(int GalaxyID, string SectorID, int System)
 {
     try
     {
         return(Ok(PlanetDAL.GetGalaxy(GalaxyID, SectorID, System)));
     }
     catch (Exception e)
     {
         return(InternalServerError(e));
     }
 }
 public IHttpActionResult GetPlanet(int PlanetID, int UserID)
 {
     try
     {
         return(Ok(PlanetDAL.GetPlanet(PlanetID, UserID)));
     }
     catch (Exception e)
     {
         return(InternalServerError(e));
     }
 }
 public IHttpActionResult GetGalaxy(int GalaxyID)
 {
     try
     {
         return(Ok(PlanetDAL.GetGalaxySystems(GalaxyID)));
     }
     catch (Exception e)
     {
         return(InternalServerError(e));
     }
 }
 public IHttpActionResult GetPlanetTypeDetailCall(int PlanetTypeID)
 {
     try
     {
         return(Ok(PlanetDAL.GetPlanetTypeDetail(PlanetTypeID)));
     }
     catch (Exception e)
     {
         return(InternalServerError(e));
     }
 }
 public IHttpActionResult BuildingQueue(int PlanetID)
 {
     try
     {
         return(Ok(PlanetDAL.GetPlanetStats(PlanetID)));
     }
     catch (Exception e)
     {
         return(InternalServerError(e));
     }
 }
 public IHttpActionResult ColonizePlanet([FromBody] PlanetDetail planetDetail)
 {
     try
     {
         return(Ok(PlanetDAL.ColonizePlanet(planetDetail)));
     }
     catch (Exception e)
     {
         return(InternalServerError(e));
     }
 }
示例#9
0
        public static PlanetDetail UpdatePlanetHarvest(PlanetDetail planet)
        {
            PlanetDetail pl = PlanetDAL.GetPlanet(planet.PlanetID, planet.Owner);

            if (pl.LastHarvest.HasValue && pl.LastHarvest.Value <= DateTime.UtcNow)
            {
                pl.LastHarvest = PlanetDAL.UpdatePlanetHarvest(planet);
                pl.Materials  += planet.Materials;
                pl.Population += planet.Population;
                pl.Military   += planet.Military;
            }
            else
            {
                throw new Exception("Not time to harvest.");
            }
            return(pl);
        }
示例#10
0
        public static PlanetDetail AddShipQueue(BuildingQue buildingQue)
        {
            PlanetDetail pl   = PlanetDAL.GetPlanet(buildingQue.PlanetID, buildingQue.UserID);
            UserDesigns  ship = ShipDAL.GetShipDesignbyUser(buildingQue.UserID).Find(x => x.ShipDesignID == buildingQue.BuildingID);

            if (pl.Materials < ship.MaterialCost || pl.Military < ship.MilitaryCost)
            {
                throw new Exception("Not enough resources");
            }
            else
            {
                PlanetDAL.UpdatePopAndMats(buildingQue.PlanetID, pl.Materials - buildingQue.MaterialCost, pl.Population, pl.Military - (int)ship.MilitaryCost.Value);
                pl.Materials -= buildingQue.MaterialCost;
                pl.Military  -= (int)ship.MilitaryCost.Value;
            }


            AllbuildQues BuildingsQueLeft = PlanetBLL.GetBuildingQueue(buildingQue.PlanetID, buildingQue.UserID);
            DateTime     UTC = DateTime.UtcNow;

            BuildingQue bq = new BuildingQue();

            bq.BuildingID   = buildingQue.BuildingID;
            bq.PlanetID     = buildingQue.PlanetID;
            bq.Seconds      = buildingQue.Seconds;
            bq.UserID       = buildingQue.UserID;
            bq.MaterialCost = buildingQue.MaterialCost;
            bq.Movement     = buildingQue.Movement;
            bq.Type         = 3;

            DateTime?maxCompletetionDate = BuildingsQueLeft.shipQue.FindAll(x => x.Type == 3).Max(x => x.CompletetionDate);

            if (maxCompletetionDate.HasValue)
            {
                bq.CompletetionDate = maxCompletetionDate.Value.AddSeconds(buildingQue.Seconds.Value);
            }
            else
            {
                bq.CompletetionDate = UTC.AddSeconds(buildingQue.Seconds.Value);
            }
            PlanetDAL.AddBuildingQue(bq);
            return(pl);
        }
示例#11
0
        public static PlanetDetail AddBuildingQueue(BuildingQue buildingQue)
        {
            List <PlanetBuildings> buildings = PlanetDAL.GetBuildingTypes(buildingQue.PlanetID);
            PlanetBuildings        pb        = buildings.Find(x => x.BuildingID == buildingQue.BuildingID);
            PlanetDetail           pl        = PlanetDAL.GetPlanet(buildingQue.PlanetID, buildingQue.UserID);

            if (pl.Materials < buildingQue.MaterialCost || pl.Population < pb.PopulationCost)
            {
                throw new Exception("Not enough resources");
            }
            else
            {
                PlanetDAL.UpdatePopAndMats(buildingQue.PlanetID, pl.Materials - buildingQue.MaterialCost, pl.Population - (int)pb.PopulationCost.Value, pl.Military);
                pl.Materials  -= buildingQue.MaterialCost;
                pl.Population -= (int)pb.PopulationCost.Value;
            }

            AllbuildQues BuildingsQueLeft = GetBuildingQueue(buildingQue.PlanetID, buildingQue.UserID);
            DateTime     UTC = DateTime.UtcNow;

            BuildingQue bq = new BuildingQue();

            bq.BuildingID   = buildingQue.BuildingID;
            bq.PlanetID     = buildingQue.PlanetID;
            bq.Seconds      = buildingQue.Seconds;
            bq.UserID       = buildingQue.UserID;
            bq.MaterialCost = buildingQue.MaterialCost;
            bq.Type         = 1;

            DateTime?maxCompletetionDate = BuildingsQueLeft.buildingQue.FindAll(x => x.Type == 1).Max(x => x.CompletetionDate);

            if (maxCompletetionDate.HasValue)
            {
                bq.CompletetionDate = maxCompletetionDate.Value.AddSeconds(buildingQue.Seconds.Value);
            }
            else
            {
                bq.CompletetionDate = UTC.AddSeconds(buildingQue.Seconds.Value);
            }
            PlanetDAL.AddBuildingQue(bq);
            return(pl);
        }
示例#12
0
        public static AllbuildQues GetBuildingQueue(int?PlanetID, int?UserID)
        {
            AllbuildQues       allq             = new AllbuildQues();
            List <BuildingQue> buildingQues     = PlanetDAL.GetBuildingQueue(UserID);
            DateTime           UTC              = DateTime.UtcNow;
            List <BuildingQue> BuildingsQueLeft = new List <BuildingQue>();
            List <BuildingQue> ResearchQueLeft  = new List <BuildingQue>();
            List <BuildingQue> ShipQueLeft      = new List <BuildingQue>();

            foreach (BuildingQue item in buildingQues.FindAll(x => x.Type == 1))
            {
                if (item.CompletetionDate < UTC)
                {
                    PlanetDAL.InsertUpdatePlanetBuilding(item.PlanetID, item.BuildingID);
                    PlanetDAL.RemoveBuildingQueue(item.BuildQueID);
                }
                else
                {
                    if (item.PlanetID == PlanetID)
                    {
                        BuildingsQueLeft.Add(item);
                    }
                }
            }
            foreach (BuildingQue item in buildingQues.FindAll(x => x.Type == 2))
            {
                if (item.CompletetionDate < UTC)
                {
                    ResearchDAL.InsertUpdatePlayerTech(item.UserID, item.BuildingID);
                    PlanetDAL.RemoveBuildingQueue(item.BuildQueID);
                }
                else
                {
                    if (item.PlanetID == PlanetID)
                    {
                        ResearchQueLeft.Add(item);
                    }
                }
            }
            foreach (BuildingQue item in buildingQues.FindAll(x => x.Type == 3))
            {
                if (item.CompletetionDate < UTC)
                {
                    ShipBLL.InsertUpdatePlayerShip(item);
                    PlanetDAL.RemoveBuildingQueue(item.BuildQueID);
                }
                else
                {
                    if (item.PlanetID == PlanetID)
                    {
                        ShipQueLeft.Add(item);
                    }
                }
            }

            allq.buildingQue = BuildingsQueLeft.OrderBy(x => x.CompletetionDate).ToList();
            allq.researchQue = ResearchQueLeft.OrderBy(x => x.CompletetionDate).ToList();
            allq.shipQue     = ShipQueLeft.OrderBy(x => x.CompletetionDate).ToList();

            return(allq);
        }