Esempio n. 1
0
    public static void UpdateBuildings()
    {
        List <Building> allBuildings = TerrainManager.instance.buildings;

        data.buildings = new List <SavedBuilding> ();
        buildingsByPos.Clear();
        foreach (Building building in allBuildings)
        {
            SavedBuilding savedBuilding = null;
            if (building is ProductionBuilding)
            {
                savedBuilding = new SavedProductionBuilding(building);
            }
            else if (building is TeleporterBuilding)
            {
                savedBuilding = new SavedTeleporterBuilding(building);
            }

            data.buildings.Add(savedBuilding);
            buildingsByPos.Add(TerrainManager.PosToV2(building.transform.position), savedBuilding);
        }

        //builds happen between turns
        GameManager.instance.SaveGame();
    }
Esempio n. 2
0
        /// <summary>
        /// Saves a Listing for a particular User
        /// </summary>
        /// <param name="listingId">listing identifier</param>
        /// <param name="username">user identifier</param>
        /// <returns>
        /// A status with the saved building
        /// </returns>
        public Status <SavedBuilding> CreateSavedBuilding(long listingId, string username)
        {
            if (listingId == 0)
            {
                return(Status.ValidationError <SavedBuilding>(null, "listingId", "listingId is required"));
            }

            if (string.IsNullOrWhiteSpace(username))
            {
                return(Status.ValidationError <SavedBuilding>(null, "username", "username is required"));
            }

            using (var context = new RentlerContext())
            {
                var user = (from u in context.Users.Include("SavedBuildings")
                            where u.IsDeleted == false && (u.Username == username || u.Email == username)
                            select u).SingleOrDefault();

                if (user == null)
                {
                    return(Status.NotFound <SavedBuilding>());
                }

                // see if user already saved this building so we don't try to
                // save it again
                if (user.SavedBuildings.Any(s => s.BuildingId == listingId))
                {
                    return(Status.Error <SavedBuilding>("User already saved this building", null));
                }

                SavedBuilding newSave = new SavedBuilding()
                {
                    BuildingId    = listingId,
                    UserId        = user.UserId,
                    CreateDateUtc = DateTime.UtcNow,
                    CreatedBy     = "ListingAdapter"
                };

                user.SavedBuildings.Add(newSave);

                try
                {
                    context.SaveChanges();

                    InvalidateCache(newSave.BuildingId);

                    newSave.User = null;
                    return(Status.OK <SavedBuilding>(newSave));
                }
                catch (Exception ex)
                {
                    return(Status.Error <SavedBuilding>(
                               ex.Message,
                               null
                               ));
                }
            }
        }
Esempio n. 3
0
    // Method for serializing a Building instance.
    public static SavedBuilding CreateSavedBuilding(Building pmusBuildingToSave)
    {
        SavedBuilding musSavedBuilding = new SavedBuilding
        {
            x            = pmusBuildingToSave.ObjectPosition.x,
            y            = pmusBuildingToSave.ObjectPosition.y,
            z            = pmusBuildingToSave.ObjectPosition.z,
            BuildingType = pmusBuildingToSave.BuildingType,
            UpgradeLevel = pmusBuildingToSave.UpgradeLevel,
            Miners       = pmusBuildingToSave.BuildingType == Building.BUILDING_TYPE.MATERIAL ? ((MineBuilding)pmusBuildingToSave).Miners : 0
        };

        return(musSavedBuilding);
    }
Esempio n. 4
0
        /// <summary>
        /// Removes a Saved Listing for a particular User
        /// </summary>
        /// <param name="listingId">listing identifier</param>
        /// <param name="username">user identifier</param>
        /// <returns>
        /// A status with the saved building
        /// </returns>
        public Status <bool> DeleteSavedBuilding(long listingId, string username)
        {
            var identity = CustomAuthentication.GetIdentity();

            if (!identity.IsAuthenticated)
            {
                return(Status.UnAuthorized <bool>());
            }

            if (listingId == 0)
            {
                return(Status.ValidationError <bool>(false, "listingId", "listingId is required"));
            }

            if (string.IsNullOrWhiteSpace(username))
            {
                return(Status.ValidationError <bool>(false, "username", "username is required"));
            }

            using (var context = new RentlerContext())
            {
                try
                {
                    SavedBuilding save = (from s in context.SavedBuildings
                                          where s.BuildingId == listingId &&
                                          s.UserId == identity.UserId
                                          select s).SingleOrDefault();

                    if (save == null)
                    {
                        return(Status.NotFound <bool>());
                    }

                    context.SavedBuildings.Remove(save);
                    context.SaveChanges();

                    InvalidateCache(save.BuildingId);

                    return(Status.OK <bool>(true));
                }
                catch (Exception ex)
                {
                    return(Status.Error <bool>(ex.Message, false));
                }
            }
        }
Esempio n. 5
0
 public static Building Instantiate(SavedBuilding e) => new Building
 {
     Cell          = e.Cell,
     BuildProgress = e.BuildProgress,
     type          = Definitions.types.First(t => t.name == e.Type)
 };