Beispiel #1
0
        string GetEntryFullPath(EntryData entry)
        {
            var downloadFolder = GetSourceProjectFolder(entry.SourceId);
            var filename       = entry.Hash + PlayerFile.SyncModelTypeToExtension(entry.EntryType);

            return(Path.Combine(downloadFolder, filename));
        }
Beispiel #2
0
        public IActionResult OnGet(int?Id) //we receive this Id from View.cs
        {
            DatabaseConnect DBCon = new DatabaseConnect();
            SqlConnection   conn  = new SqlConnection(DBCon.DatabaseString());

            conn.Open();

            using (SqlCommand command = new SqlCommand())
            {
                command.Connection  = conn;
                command.CommandText = @"SELECT * FROM FileTable WHERE Id = @Id";
                command.Parameters.AddWithValue("@Id", Id);

                var reader = command.ExecuteReader();

                PlayerFileRec = new PlayerFile();
                while (reader.Read())
                {
                    PlayerFileRec.Id         = reader.GetInt32(0);
                    PlayerFileRec.PlayerName = reader.GetString(1); //to display on the html page
                    PlayerFileRec.FileName   = reader.GetString(2); //to display on the html page
                }

                Console.WriteLine("File name : " + PlayerFileRec.FileName);
            }

            return(Page());
        }
        public IActionResult OnPost()
        {
            var FileToUpload = Path.Combine(_env.WebRootPath, "Files", PlayerFile.FileName);    //this variable consists of file path

            Console.WriteLine("File Name : " + FileToUpload);



            using (var FStream = new FileStream(FileToUpload, FileMode.Create))
            {
                PlayerFile.CopyTo(FStream);    //copy the file into FStream variable
            }

            DatabaseConnect DbCon = new DatabaseConnect();
            SqlConnection   conn  = new SqlConnection(DbCon.DatabaseString());

            conn.Open();

            using (SqlCommand command = new SqlCommand())
            {
                command.Connection  = conn;
                command.CommandText = @"INSERT FileTable (PlayerName, FileName) VALUES (@PlayerName, @FName)";
                command.Parameters.AddWithValue("@PlayerName", PlayerFileRec.PlayerName);
                command.Parameters.AddWithValue("@FName", PlayerFile.FileName);
                Console.WriteLine("File name : " + PlayerFileRec.PlayerName);
                Console.WriteLine("File name : " + PlayerFile.FileName);
                command.ExecuteNonQuery();
            }



            return(RedirectToPage("/index"));
        }
Beispiel #4
0
    bool PopulateFiles()
    {
        files = PlayerFile.GetFiles();

        if (files == null || files.Length == 0)
        {
            return(false);
        }

        if (fileButtons == null || files.Length > fileButtons.Length)
        {
            fileButtons = new Button[files.Length];
            for (int i = 0; i < files.Length; i++)
            {
                fileButtons[i] = Instantiate(loadFileButtonPrefab, SavedGamesPanel.transform);

                RectTransform rt = fileButtons[i].GetComponent <RectTransform>();
                rt.anchorMax = new Vector2(rt.anchorMax.x, rt.anchorMax.y - loadButtonHeightOffset * i);
                rt.anchorMin = new Vector2(rt.anchorMin.x, rt.anchorMin.y - loadButtonHeightOffset * i);

                fileButtons[i].GetComponentInChildren <Text>().text = files[i].filename;
                fileButtons[i].onClick.AddListener(() => LoadFile(i));
            }
        }

        return(true);
    }
        string GetSyncModelFullPath(StreamKey streamKey, string hash)
        {
            var downloadFolder = GetSourceProjectFolder(streamKey.source);
            var filename       = hash + PlayerFile.PersistentKeyToExtension(streamKey.key);

            return(Path.Combine(downloadFolder, filename));
        }
Beispiel #6
0
        public void OnGet()
        {
            DatabaseConnect DBCon = new DatabaseConnect();
            SqlConnection   conn  = new SqlConnection(DBCon.DatabaseString());

            conn.Open();

            using (SqlCommand command = new SqlCommand())
            {
                command.Connection  = conn;
                command.CommandText = @"SELECT * FROM FileTable";

                var reader = command.ExecuteReader();

                FileRec = new List <PlayerFile>();

                while (reader.Read())
                {
                    PlayerFile rec = new PlayerFile();
                    rec.Id         = reader.GetInt32(0); // we need this to send the Id to Delete page for another enquiry
                    rec.PlayerName = reader.GetString(1);
                    rec.FileName   = reader.GetString(2);
                    FileRec.Add(rec);
                }
            }
        }
Beispiel #7
0
        async Task <ISyncModel> AcquireEntryAsync(EntryData entry, CancellationToken token)
        {
            var fullPath = Path.Combine(ProjectFolder, m_FileOrganization == FileOrganization.OneFolderPerSource ? entry.SourceId : "",
                                        entry.Hash + PlayerFile.PersistentKeyToExtension(entry.IdInSource));

            return(await PlayerFile.LoadSyncModelAsync(fullPath, entry.IdInSource, token));
        }
        public async Task <IEnumerable <SyncManifest> > GetSyncManifestsAsync()
        {
            var syncManifestPath = Directory.EnumerateFiles(m_DataFolder, "*.manifest").FirstOrDefault();
            var syncManifest     = await PlayerFile.LoadManifestAsync(syncManifestPath);

            return(new [] { syncManifest });
        }
        public Task <ISyncModel> GetSyncModelAsync(StreamKey streamKey, string hash)
        {
            // TODO Refactoring.
            // var fullPath = PlayerFile.GetFullPath(streamKey, hash);
            var downloadFolder = GetSourceProjectFolder(streamKey.source);
            var fullPath       = GetSyncModelFullPath(streamKey, hash);

            return(File.Exists(fullPath) ? PlayerFile.LoadSyncModelAsync(downloadFolder, streamKey.key, hash) : DownloadAndSave(streamKey, hash, fullPath));
        }
 /// <summary>
 /// Read/Writes stats to/from <see cref="File"/> for each <see cref="Player"/> in the <see cref="List{T}"/>
 /// </summary>
 public void PlayerStatsFileManager(List <Player> playerList, PlayerFile FileOperation = PlayerFile.Read)
 {
     if (playerList != null && playerList.Count > 0)
     {
         PlayerStatsFileManager(playerList.Select(p => p.SteamId).ToList(), FileOperation);
     }
     else
     {
         PlayerStatsFileManager(FileOperation);
     }
 }
Beispiel #11
0
 /// <summary>
 /// Read/Writes stats to/from <see cref="File"/> for each UserID in the <see cref="List{T}"/>
 /// </summary>
 public void PlayerStatsFileManager(List <string> UserIDList, PlayerFile FileOperation = PlayerFile.Read)
 {
     if (UserIDList != null && UserIDList.Count > 0)
     {
         PlayerStatsFileManager(UserIDList.ToArray(), FileOperation);
     }
     else
     {
         PlayerStatsFileManager(new string[0], FileOperation);
     }
 }
Beispiel #12
0
        /// <summary>
        /// Gets a raw <see cref="NbtTree"/> of data for the given player.
        /// </summary>
        /// <param name="name">The name of the player to fetch.</param>
        /// <returns>An <see cref="NbtTree"/> containing the given player's raw data.</returns>
        /// <exception cref="NbtIOException">Thrown when the manager cannot read in an NBT data stream.</exception>
        public NbtTree GetPlayerTree(string name)
        {
            PlayerFile pf     = GetPlayerFile(name);
            Stream     nbtstr = pf.GetDataInputStream();

            if (nbtstr == null)
            {
                throw new NbtIOException("Failed to initialize NBT data stream for input.");
            }

            return(new NbtTree(nbtstr));
        }
Beispiel #13
0
        /// <summary>
        /// Saves a raw <see cref="NbtTree"/> representing a player to the given player's file.
        /// </summary>
        /// <param name="name">The name of the player to write data to.</param>
        /// <param name="tree">The player's data as an <see cref="NbtTree"/>.</param>
        /// <exception cref="NbtIOException">Thrown when the manager cannot initialize an NBT data stream for output.</exception>
        public void SetPlayerTree(string name, NbtTree tree)
        {
            PlayerFile pf     = GetPlayerFile(name);
            Stream     zipstr = pf.GetDataOutputStream();

            if (zipstr == null)
            {
                throw new NbtIOException("Failed to initialize NBT data stream for output.");
            }

            tree.WriteTo(zipstr);
            zipstr.Close();
        }
Beispiel #14
0
        // Undocumented magic method to support nested prefab dependencies. Temporary solution until we get Asset Database V2
        static string[] GatherDependenciesFromSourceFile(string assetPath)
        {
            var syncPrefab = PlayerFile.Load <SyncPrefab>(assetPath);
            var paths      = new string[syncPrefab.Instances.Count];

            var assetName = SanitizeName(syncPrefab.Name);

            for (var i = 0; i < syncPrefab.Instances.Count; ++i)
            {
                paths[i] = GetReferencedAssetPath(assetName, assetPath, syncPrefab.Instances[i].ObjectId.Value);
            }

            return(paths);
        }
Beispiel #15
0
        /// <summary>
        /// Read/Writes stats to/from <see cref="File"/> for each UserID in the <see cref="Array"/>
        /// </summary>
        public void PlayerStatsFileManager(string[] UserIDArray, PlayerFile FileOperation = PlayerFile.Read)
        {
            if (!Config.GetBoolValue("admintoolbox_playerfiles", true))
            {
                return;
            }
            if (Directory.Exists(MainPath))
            {
                if (!Directory.Exists(MainPath))
                {
                    Directory.CreateDirectory(MainPath);
                }
                if (!Directory.Exists(PlayerStatsPath))
                {
                    Directory.CreateDirectory(PlayerStatsPath);
                }

                ProcessingCollection = true;

                if (UserIDArray == null || UserIDArray.Length < 1)
                {
                    UserIDArray = AdminToolbox.ATPlayerDict.Keys.ToArray();
                }
                foreach (string id in UserIDArray)
                {
                    if (string.IsNullOrEmpty(id))
                    {
                        return;
                    }
                    if (!AdminToolbox.ATPlayerDict.ContainsKey(id))
                    {
                        AddMissingPlayerVariables(Server.GetPlayers(id));
                        continue;
                    }
                    switch (FileOperation)
                    {
                    case PlayerFile.Write:
                        WriteToFile(id);
                        continue;

                    case PlayerFile.Read:
                    default:
                        ReadFromFile(id);
                        continue;
                    }
                }

                ProcessingCollection = false;
            }
        }
        async Task <ISyncModel> DownloadAndSave(StreamKey streamKey, string hash, string fullPath)
        {
            var client    = m_Listener.client;
            var syncModel = await client.GetSyncModelAsync(streamKey.key, streamKey.source, hash);

            if (syncModel != null)
            {
                var directory = Path.GetDirectoryName(fullPath);

                Directory.CreateDirectory(directory);
                await PlayerFile.SaveAsync(syncModel, fullPath);
            }

            return(syncModel);
        }
Beispiel #17
0
        async Task DownloadAndSave(EntryData entry, string fullPath, CancellationToken token)
        {
            // Todo: add cancellationToken
            var syncModel = await m_Client.GetSyncModelAsync(new PersistentKey(entry.EntryType, entry.IdInSource), entry.SourceId, entry.Hash);

            token.ThrowIfCancellationRequested();

            if (syncModel != null)
            {
                var directory = Path.GetDirectoryName(fullPath);

                Directory.CreateDirectory(directory);
                await PlayerFile.SaveAsync(syncModel, fullPath);
            }
        }
Beispiel #18
0
 public static void AddExtraPairs(PlayerFile __instance, ref SaveFile saveFile)
 {
     if (HP2SR.AllPairsEnabled.Value && Game.Data.GirlPairs.GetAll().Count < 27)
     {
         Datamining.ExperimentalAllPairsMod(false);
         if (HP2SR.SpecialPairsEnabled.Value)
         {
             Datamining.ExperimentalAllPairsMod(true);
         }
     }
     if ((!HP2SR.AllPairsEnabled.Value && saveFile.girlPairs.Count >= 27) || (!HP2SR.SpecialPairsEnabled.Value && saveFile.girlPairs.Count >= 69))
     {
         //fix an allpairs save file before it gets read
         if (Game.Data.GirlPairs.Get(saveFile.girlPairId) == null)
         {
             saveFile.girlPairId = UnityEngine.Random.Range(1, 25);
         }
         for (int i = saveFile.girlPairs.Count - 1; i >= 0; i--)
         {
             if (Game.Data.GirlPairs.Get(saveFile.girlPairs[i].girlPairId) == null)
             {
                 saveFile.girlPairs.RemoveAt(i);
             }
         }
         for (int i = saveFile.metGirlPairs.Count - 1; i >= 0; i--)
         {
             if (Game.Data.GirlPairs.Get(saveFile.metGirlPairs[i]) == null)
             {
                 saveFile.metGirlPairs.RemoveAt(i);
             }
         }
         for (int i = saveFile.completedGirlPairs.Count - 1; i >= 0; i--)
         {
             if (Game.Data.GirlPairs.Get(saveFile.completedGirlPairs[i]) == null)
             {
                 saveFile.completedGirlPairs.RemoveAt(i);
             }
         }
         for (int i = saveFile.finderSlots.Count - 1; i >= 0; i--)
         {
             if (Game.Data.GirlPairs.Get(saveFile.finderSlots[i].girlPairId) == null)
             {
                 saveFile.finderSlots[i].girlPairId = 0;
             }
         }
     }
 }
Beispiel #19
0
        public override void OnImportAsset(AssetImportContext ctx)
        {
            var syncPrefab = PlayerFile.Load <SyncPrefab>(ctx.assetPath);

            Init(syncPrefab.Name);

            var root = SyncPrefabImporter.Import(syncPrefab, this);

            var names = new List <string>();

            SetUniqueNameForRoots(root, ref names); // TODO Find a deterministic way to avoid name collisions.

            RemapMaterials(root);

            ctx.AddObjectToAsset("root", root.gameObject);
            ctx.SetMainObject(root.gameObject);
        }
Beispiel #20
0
    public static TagNodeCompound GetPlayerData()
    {
        if (playerData == null)
        {
            string   path  = Path.Combine(savePath, "playerdata");
            string[] files = Directory.GetFiles(path);

            if (files.Length == 0)
            {
                throw new Exception("no player data");
            }
            playerFile = new PlayerFile(files[0]);
            playerData = new NbtTree();
            playerData.ReadFrom(playerFile.GetDataInputStream());
        }
        return(playerData.Root);
    }
Beispiel #21
0
    public static PlayerFile LoadFromFile(string fileName)
    {
        if (File.Exists(Application.persistentDataPath + "/" + fileName))
        {
            BinaryFormatter        binaryFormatter        = new BinaryFormatter();
            FileStream             fileStream             = new FileStream(Application.persistentDataPath + "/testSave.ygs", FileMode.Create);
            SerializablePlayerFile serializablePlayerFile = (SerializablePlayerFile)binaryFormatter.Deserialize(fileStream);
            fileStream.Close();

            PlayerFile playerFile = serializablePlayerFile.ConvertToPlayerFile();
            return(playerFile);
        }
        else
        {
            return(null);
        }
    }
        public override void OnImportAsset(AssetImportContext ctx)
        {
            var syncTexture = PlayerFile.Load <SyncTexture>(ctx.assetPath);
            var syncedData  = new SyncedData <SyncTexture>(StreamKey.FromSyncId <SyncTexture>(ReflectScriptedImporter.EditorSourceId, syncTexture.Id), syncTexture);

            var textureImporter = new SyncTextureImporter();
            var texture         = textureImporter.Import(syncedData, null);

            texture.name = Path.GetFileNameWithoutExtension(syncTexture.Name);

            ctx.AddObjectToAsset("texture", texture);

            var root = ScriptableObject.CreateInstance <ReflectScriptableObject>();

            ctx.AddObjectToAsset("root", root, AssetPreview.GetMiniThumbnail(texture));
            ctx.SetMainObject(root);
        }
Beispiel #23
0
        async Task <IEnumerable <SyncManifest> > GetSyncManifestsAsync()
        {
            var result = new List <SyncManifest>();

            foreach (var manifestFile in Directory.EnumerateFiles(ProjectFolder, "*.manifest", SearchOption.AllDirectories))
            {
                if (manifestFile == null)
                {
                    continue;
                }

                var syncManifest = await PlayerFile.LoadManifestAsync(manifestFile);

                result.Add(syncManifest);
            }

            return(result);
        }
Beispiel #24
0
            public void Reset()
            {
                _names.Clear();
                _curPlayer = null;

                string[] files = Directory.GetFiles(_pm._playerPath);
                foreach (string file in files)
                {
                    string basename = Path.GetFileName(file);

                    if (!ParseFileName(basename))
                    {
                        continue;
                    }

                    _names.Enqueue(PlayerFile.NameFromFilename(basename));
                }
            }
Beispiel #25
0
        internal static SyncPrefab GenerateSyncPrefabFromManifest(string name, string rootFolder, SyncManifest manifest)
        {
            var prefab = new SyncPrefab { Name = name };

            var content = manifest.Content;
            foreach (var pair in content)
            {
                if (pair.Key.IsKeyFor<SyncObjectInstance>())
                {
                    // Load SynObjectInstance from disk
                    var instancePath = Path.Combine(rootFolder, pair.Value.ModelPath);
                    var objectInstance = PlayerFile.Load<SyncObjectInstance>(instancePath);
                    objectInstance.Name = Path.GetFileNameWithoutExtension(objectInstance.Name);
                    prefab.Instances.Add(objectInstance);
                }
            }

            return prefab;
        }
Beispiel #26
0
    public static PlayerFile CreateTestFile()
    {
        int     year        = 5;
        Seasons season      = Seasons.Summer;
        int     day         = 89;
        Times   time        = Times.EarlyMorning;
        int     timeSegment = 0;
        Dictionary <string, WeatherConditions> weather = new Dictionary <string, WeatherConditions>();
        string            currentInstanceJSONFileName  = "00_TEST/Dummy Room/dummy-room_1.json";
        Vector3Int        playerPosition       = new Vector3Int(0, 0, 1);
        List <Quest>      questProgression     = new List <Quest>();
        List <PlayerUnit> playerUnits          = new List <PlayerUnit>();
        List <UnitSetup>  unitSetups           = new List <UnitSetup>();
        string            leadUnitJSONFileName = "Sample/Sample Unit/unit.json";

        PlayerFile playerFile = new PlayerFile(year, season, day, time, timeSegment, weather, currentInstanceJSONFileName, playerPosition,
                                               playerUnits, questProgression, unitSetups, leadUnitJSONFileName);

        return(playerFile);
    }
Beispiel #27
0
    public static PlayerFile CreateNewFile()
    {
        int     year        = 1;
        Seasons season      = Seasons.Spring;
        int     day         = 30;
        Times   time        = Times.Night;
        int     timeSegment = 0;
        Dictionary <string, WeatherConditions> weather = new Dictionary <string, WeatherConditions>();
        string            currentInstanceJSONFileName  = "02_Magicadia/Aristocrat Tree District/Silverlight Forest/silverlight-forest_1.json";
        Vector3Int        playerPosition       = new Vector3Int(0, 0, 1);
        List <Quest>      questProgression     = new List <Quest>();
        List <PlayerUnit> playerUnits          = new List <PlayerUnit>();
        List <UnitSetup>  unitSetups           = new List <UnitSetup>();
        string            leadUnitJSONFileName = "Sample/Sample Unit/unit.json";

        PlayerFile playerFile = new PlayerFile(year, season, day, time, timeSegment, weather, currentInstanceJSONFileName, playerPosition,
                                               playerUnits, questProgression, unitSetups, leadUnitJSONFileName);

        return(playerFile);
    }
        public override void OnImportAsset(AssetImportContext ctx)
        {
            var syncMaterial = PlayerFile.Load <SyncMaterial>(ctx.assetPath);

            Init(syncMaterial.Name);

            var syncedData = new SyncedData <SyncMaterial>(StreamKey.FromSyncId <SyncMaterial>(EditorSourceId, syncMaterial.Id), syncMaterial);

            var materialImporter = new SyncMaterialImporter();
            var material         = materialImporter.Import(syncedData, this);

            material.name = Path.GetFileNameWithoutExtension(syncMaterial.Name);

            ctx.AddObjectToAsset("material", material);

            var root = ScriptableObject.CreateInstance <ReflectScriptableObject>();

            ctx.AddObjectToAsset("root", root, AssetPreview.GetMiniThumbnail(material));
            ctx.SetMainObject(root);
        }
        async Task <IEnumerable <SyncManifest> > LoadStreamSourcesAsync(UnityProject project)
        {
            var folder = m_Storage.GetProjectFolder(project);

            var result = new List <SyncManifest>();

            foreach (var manifestFile in Directory.EnumerateFiles(folder, "*.manifest", SearchOption.AllDirectories))
            {
                if (manifestFile == null)
                {
                    continue;
                }

                var syncManifest = await PlayerFile.LoadManifestAsync(manifestFile);

                result.Add(syncManifest);
            }

            return(result);
        }
        public override void OnImportAsset(AssetImportContext ctx)
        {
            var syncMesh   = PlayerFile.Load <SyncMesh>(ctx.assetPath);
            var syncedData = new SyncedData <SyncMesh>(StreamKey.FromSyncId <SyncMesh>(ReflectScriptedImporter.EditorSourceId, syncMesh.Id), syncMesh);

            var meshImporter = new SyncMeshImporter();
            var mesh         = meshImporter.Import(syncedData, null);

            if (m_GenerateLightmapUVs)
            {
                Unwrapping.GenerateSecondaryUVSet(mesh);
            }

            mesh.name = Path.GetFileNameWithoutExtension(syncMesh.Name);

            ctx.AddObjectToAsset("mesh", mesh);

            var root = ScriptableObject.CreateInstance <ReflectScriptableObject>();

            ctx.AddObjectToAsset("root", root, AssetPreview.GetMiniThumbnail(mesh));
            ctx.SetMainObject(root);
        }