예제 #1
0
    public GameDataBase()
    {
                #if DataReset
        DataRemove();
                #endif
        binform = new BinaryFormatter();
        DataBaseFactory factory = new DataBaseFactory();

        if (!LoadFile())
        {
            dataCls = new DataContainerClass();
            userDB.Initialize();
            levelDB.Initialize();
            tropyDB.Initialize();
            //stageDB.Initialize();
            //achivDB.Initialize();
        }

        for (ObjectClassEnumType type = ObjectClassEnumType.None + 1; type < ObjectClassEnumType.End; type++)
        {
            ObjectDatas[(int)type] = factory.CreateDB(type);
            ObjectDatas[(int)type].Initialize(dataCls.GetInstallBinData(type));
        }

        factory = null;
    }
예제 #2
0
    public void ObjectUnInstall(string objectName, string objectTag, int stair, int floor)
    {
        ObjectClassEnumType sendClassType = ObjectClassEnumType.None;

        switch (objectTag)
        {
        case "Alias":
        case "Player":
            sendClassType = ObjectClassEnumType.AliasData;
            break;

        case "Enemy":
        case "SuperEnemy":
            sendClassType = ObjectClassEnumType.EnemyData;
            break;

        case "Obstacle":
            sendClassType = ObjectClassEnumType.TrapData;
            break;
        }

        if (ObjectDatas [(int)sendClassType].UnInstallMonster(stair, floor, objectName))
        {
                        #if EditorDebug
            Debug.Log("Success Good");
                        #endif
        }
        else
        {
            throw  new System.NotImplementedException();
        }
    }
예제 #3
0
    public string GetInstallBinData(ObjectClassEnumType type)
    {
        string returnValue = string.Empty;

        switch (type)
        {
        case ObjectClassEnumType.AliasData:
            returnValue = aliasInstallData;
            break;

        case ObjectClassEnumType.EnemyData:
            returnValue = enemyInstallData;
            break;

        case ObjectClassEnumType.TrapData:
            returnValue = trapInstallData;

            break;
        }
        return(returnValue);
    }
예제 #4
0
    public ObjectDataBase CreateDB(ObjectClassEnumType enumType)
    {
        ObjectDataBase instance = null;

        switch (enumType)
        {
        case ObjectClassEnumType.AliasData:
            instance = new AliasObjectData();
            break;

        case ObjectClassEnumType.EnemyData:
            instance = new EnemyObjectData();
            break;

        case ObjectClassEnumType.TrapData:
            instance = new TrapObjectData();
            break;
        }

        return(instance);
    }
예제 #5
0
    public void SetBinInstallData(string data, ObjectClassEnumType type)
    {
        /*
         * private string aliasInstallData;
         * private string enemyInstallData;
         * private string trapInstallData;
         */
        switch (type)
        {
        case ObjectClassEnumType.AliasData:
            aliasInstallData = data;
            break;

        case ObjectClassEnumType.EnemyData:
            enemyInstallData = data;
            break;

        case ObjectClassEnumType.TrapData:
            trapInstallData = data;
            break;
        }
    }
예제 #6
0
    public void UpdateObjectStatus(string obj_name, string objectTag, params object[] status)
    {
        ObjectClassEnumType sendClassType = ObjectClassEnumType.None;

        switch (objectTag)
        {
        case "Alias":
        case "Player":
            sendClassType = ObjectClassEnumType.AliasData;
            break;

        case "Enemy":
        case "SuperEnemy":
            sendClassType = ObjectClassEnumType.EnemyData;
            break;

        case "Obstacle":
            sendClassType = ObjectClassEnumType.TrapData;
            break;
        }
        ObjectDatas[(int)sendClassType].UpdateMonster(obj_name, status);
        SaveFile();
    }
예제 #7
0
    /* public void CreatePlayerData(string player_Name, string player_sprite_name)
     * {
     * player_character_data p_data;
     *
     * p_data.player_name = player_Name;
     * p_data.player_sprite_name = player_sprite_name;
     * p_data.player_gold = 0;
     * p_data.time = 0.0f;
     *
     * MemoryStream p_mem = new MemoryStream();
     *
     * binform.Serialize(p_mem, p_data);
     * dataCls.PlayerBinData = Convert.ToBase64String(p_mem.GetBuffer());
     * }
     */


    public void ObjectInstall(string objectName, string objectTag, int stair, int floor, int level)
    {
        ObjectClassEnumType sendClassType = ObjectClassEnumType.None;

        switch (objectTag)
        {
        case "Alias":
        case "Player":
            sendClassType = ObjectClassEnumType.AliasData;
            break;

        case "Enemy":
        case "SuperEnemy":
            sendClassType = ObjectClassEnumType.EnemyData;
            break;

        case "Obstacle":
            sendClassType = ObjectClassEnumType.TrapData;
            break;
        }

        ObjectDatas [(int)sendClassType].InstallMonster(stair, floor, level, objectName);
    }
예제 #8
0
    public void SaveFile()
    {
        //Class Data Save
        userDB.SaveData();
        levelDB.SaveData();

#if !EditorDebug
        tropyDB.SaveData();
                #else
        Debug.Log("Editor Debug");
#endif

        dataCls.PlayerBinData = userDB.getBinData();
        dataCls.LevelBinData  = levelDB.getBinData();

        /* Prev (
         * dataCls.InstallBinData = installData.getBinData();
         * )
         */

        for (ObjectClassEnumType type = ObjectClassEnumType.None + 1; type < ObjectClassEnumType.End; type++)
        {
            ObjectDatas[(int)type].SaveData();
            dataCls.SetBinInstallData(ObjectDatas[(int)type].getBinData(), type);
        }

        if (File.Exists(file_path))
        {
            try
            {
                fileStream = new FileStream(file_path, FileMode.Truncate);
                binform.Serialize(fileStream, dataCls);
            }
            catch (ArgumentException AE)
            {
                Debug.Log(AE.StackTrace);
            }
            finally
            {
                fileStream.Close();
            }
        }
        else
        {
            using (fileStream = File.Create(file_path))
            {
                try
                {
                    binform.Serialize(fileStream, dataCls);
                }
                catch (Exception e)
                {
                    Debug.Log(e.Source + "/" + e.StackTrace);
                }
                finally
                {
                    fileStream.Close();
                }
            }
        }
    }