示例#1
0
        public ThemeSelectionForm(ThemeDatabase db, BoardTheme currentBoardTheme, PieceTheme currentPieceTheme)
        {
            InitializeComponent();

            Icon = Properties.Resources.application_icon;

            Themes             = db;
            SelectedBoardTheme = currentBoardTheme;
            SelectedPieceTheme = currentPieceTheme;

            chessBoard.SetThemes(SelectedBoardTheme, SelectedPieceTheme);

            confirmButton.DialogResult = DialogResult.OK;
            cancelButton.DialogResult  = DialogResult.Cancel;

            foreach (var kv in Themes.BoardThemes)
            {
                boardThemesListBox.Items.Add(kv.Key);
            }

            foreach (var kv in Themes.PieceThemes)
            {
                pieceThemesListBox.Items.Add(kv.Key);
            }

            boardThemesListBox.SelectedItem = SelectedBoardTheme.Name;
            pieceThemesListBox.SelectedItem = SelectedPieceTheme.Name;
        }
    // File management

    static public void Create()
    {
        if (m_Instance == null)
        {
            m_Instance = new PlayerData();

            //if we create the PlayerData, mean it's the very first call, so we use that to init the database
            //this allow to always init the database at the earlier we can, i.e. the start screen if started normally on device
            //or the Loadout screen if testing in editor
            CoroutineHandler.StartStaticCoroutine(CharacterDatabase.LoadDatabase());
            CoroutineHandler.StartStaticCoroutine(ThemeDatabase.LoadDatabase());
        }

        m_Instance.saveFile = Application.persistentDataPath + "/save.bin";

        if (File.Exists(m_Instance.saveFile))
        {
            // If we have a save, we read it.
            m_Instance.Read();
        }
        else
        {
            // If not we create one with default data.
            NewSave();
        }

        m_Instance.CheckMissionsCount();
    }
示例#3
0
    static IEnumerator AsyncLoad()
    {
        // Android store streams assets in a compressed archive, so different file system.
#if !UNITY_EDITOR
#if UNITY_ANDROID
        AssetBundleManager.BaseDownloadingURL = Application.streamingAssetsPath + "/AssetBundles/" + Utility.GetPlatformName() + "/";
#else
        AssetBundleManager.BaseDownloadingURL = "file://" + Application.streamingAssetsPath + "/AssetBundles/" + Utility.GetPlatformName() + "/";
#endif
#else
        AssetBundleManager.BaseDownloadingURL = "file://" + Application.streamingAssetsPath + "/AssetBundles/" + Utility.GetPlatformName() + "/";
#endif

        var request = AssetBundleManager.Initialize();
        if (request != null)
        {
            yield return(CoroutineHandler.StartStaticCoroutine(request));
        }

        // In editor we can directly get all the bundles but in final build, we need to read them from the manifest.
#if UNITY_EDITOR
        string[] bundles;
        if (AssetBundleManager.SimulateAssetBundleInEditor)
        {
            bundles = AssetDatabase.GetAllAssetBundleNames();
        }
        else
        {
            bundles = AssetBundleManager.AssetBundleManifestObject.GetAllAssetBundles();
        }
#else
        string[] bundles = AssetBundleManager.AssetBundleManifestObject.GetAllAssetBundles();
#endif

        List <string> characterPackage = new List <string>();
        List <string> themePackage     = new List <string>();

        for (int i = 0; i < bundles.Length; ++i)
        {
            if (bundles[i].StartsWith("characters/"))
            {
                characterPackage.Add(bundles[i]);
            }
            else if (bundles[i].StartsWith("themes/"))
            {
                themePackage.Add(bundles[i]);
            }
        }

        yield return(CoroutineHandler.StartStaticCoroutine(CharacterDatabase.LoadDatabase(characterPackage)));

        yield return(CoroutineHandler.StartStaticCoroutine(ThemeDatabase.LoadDatabase(themePackage)));
    }
    public IEnumerator PopulateTheme()
    {
        ThemeData t = null;

        while (t == null)
        {
            t = ThemeDatabase.GetThemeData(PlayerData.instance.themes[PlayerData.instance.usedTheme]);
            yield return(null);
        }

        themeNameDisplay.text = t.themeName;
        themeIcon.sprite      = t.themeIcon;

        skyMeshFilter.sharedMesh  = t.skyMesh;
        UIGroundFilter.sharedMesh = t.UIGroundMesh;
    }
    public IEnumerator PopulateTheme()
    {
        ThemeData t = null;

        while (t == null)
        {
            t = ThemeDatabase.GetThemeData("default");
            yield return(null);
        }

        //themeNameDisplay.text = t.themeName;
        //themeIcon.sprite = t.themeIcon;

        skyMeshFilter.sharedMesh = t.skyMesh;
        //UIGroundFilter.sharedMesh = t.UIGroundMesh;
    }
示例#6
0
    public IEnumerator PopulateTheme()
    {
        ThemeData t = null;

        while (t == null)
        {
            t = ThemeDatabase.GetThemeData(PlayerData.instance.themes[PlayerData.instance.usedTheme]);
            yield return(null);
        }

        LocalizationSettings.StringDatabase.GetLocalizedString("UI", t.themeName).Completed += (obj) => themeNameDisplay.text = obj.Result;
        LocalizationSettings.AssetDatabase.GetLocalizedAssetAsync <Font>("UI Fonts", "LuckiestGuy").Completed += (obj) => themeNameDisplay.font = obj.Result;

        themeIcon.sprite = t.themeIcon;

        skyMeshFilter.sharedMesh  = t.skyMesh;
        UIGroundFilter.sharedMesh = t.UIGroundMesh;
    }
示例#7
0
    void Start()
    {
        PlayerData.Create();

        consumableDatabase.Load();
        CoroutineHandler.StartStaticCoroutine(CharacterDatabase.LoadDatabase());
        CoroutineHandler.StartStaticCoroutine(ThemeDatabase.LoadDatabase());


#if UNITY_ANALYTICS
        AnalyticsEvent.StoreOpened(StoreType.Soft);
#endif

#if !UNITY_EDITOR && !DEVELOPMENT_BUILD
        //Disable cheating on non dev build outside of the editor
        cheatButton.interactable = false;
#else
        cheatButton.interactable = true;
#endif

        m_OpenList = itemList;
        itemList.Open();
    }
    public IEnumerator Begin()
    {
        if (!m_Rerun)
        {
            firstObstacle       = true;
            m_CameraOriginalPos = Camera.main.transform.position;

            if (m_TrackSeed != -1)
            {
                Random.InitState(m_TrackSeed);
            }
            else
            {
                Random.InitState((int)System.DateTime.Now.Ticks);
            }

            // Since this is not a rerun, init the whole system (on rerun we want to keep the states we had on death)
            m_CurrentSegmentDistance = k_StartingSegmentDistance;
            m_TotalWorldDistance     = 0.0f;

            characterController.gameObject.SetActive(true);

            //Addressables 1.0.1-preview
            // Spawn the player
            var op = Addressables.InstantiateAsync(PlayerData.instance.characters[PlayerData.instance.usedCharacter],
                                                   Vector3.zero,
                                                   Quaternion.identity);
            yield return(op);

            if (op.Result == null || !(op.Result is GameObject))
            {
                Debug.LogWarning(string.Format("Unable to load character {0}.", PlayerData.instance.characters[PlayerData.instance.usedCharacter]));
                yield break;
            }
            Character player = op.Result.GetComponent <Character>();

            player.SetupAccesory(PlayerData.instance.usedAccessory);

            characterController.character    = player;
            characterController.trackManager = this;

            characterController.Init();
            characterController.CheatInvincible(invincible);

            //Instantiate(CharacterDatabase.GetCharacter(PlayerData.instance.characters[PlayerData.instance.usedCharacter]), Vector3.zero, Quaternion.identity);
            player.transform.SetParent(characterController.characterCollider.transform, false);
            Camera.main.transform.SetParent(characterController.transform, true);

            if (m_IsTutorial)
            {
                m_CurrentThemeData = tutorialThemeData;
            }
            else
            {
                m_CurrentThemeData = ThemeDatabase.GetThemeData(PlayerData.instance.themes[PlayerData.instance.usedTheme]);
            }

            m_CurrentZone         = 0;
            m_CurrentZoneDistance = 0;

            skyMeshFilter.sharedMesh = m_CurrentThemeData.skyMesh;
            RenderSettings.fogColor  = m_CurrentThemeData.fogColor;
            RenderSettings.fog       = true;

            gameObject.SetActive(true);
            characterController.gameObject.SetActive(true);
            characterController.coins   = 0;
            characterController.premium = 0;

            m_Score      = 0;
            m_ScoreAccum = 0;

            m_SafeSegementLeft = m_IsTutorial ? 0 : k_StartingSafeSegments;

            Coin.coinPool = new Pooler(currentTheme.collectiblePrefab, k_StartingCoinPoolSize);

            PlayerData.instance.StartRunMissions(this);

#if UNITY_ANALYTICS
            AnalyticsEvent.GameStart(new Dictionary <string, object>
            {
                { "theme", m_CurrentThemeData.themeName },
                { "character", player.characterName },
                { "accessory", PlayerData.instance.usedAccessory >= 0 ? player.accessories[PlayerData.instance.usedAccessory].accessoryName : "none" }
            });
#endif
        }

        characterController.Begin();
        StartCoroutine(WaitToStart());
        isLoaded = true;
    }
    public void Begin()
    {
        if (!m_Rerun)
        {
            if (m_TrackSeed != -1)
            {
                Random.InitState(m_TrackSeed);
            }
            else
            {
                Random.InitState((int)System.DateTime.Now.Ticks);
            }

            // Since this is not a rerun, init the whole system (on rerun we want to keep the states we had on death)
            m_CurrentSegmentDistance = k_StartingSegmentDistance;
            m_TotalWorldDistance     = 0.0f;

            characterController.gameObject.SetActive(true);

            // Spawn the player
            Character player = Instantiate(CharacterDatabase.GetCharacter(PlayerData.instance.characters[PlayerData.instance.usedCharacter]), Vector3.zero, Quaternion.identity);
            player.transform.SetParent(characterController.characterCollider.transform, false);
            Camera.main.transform.SetParent(characterController.transform, true);


            player.SetupAccesory(PlayerData.instance.usedAccessory);

            characterController.character    = player;
            characterController.trackManager = this;

            characterController.Init();
            characterController.CheatInvincible(invincible);

            if (m_IsTutorial)
            {
                m_CurrentThemeData = tutorialThemeData;
            }
            else
            {
                m_CurrentThemeData = ThemeDatabase.GetThemeData(PlayerData.instance.themes[PlayerData.instance.usedTheme]);
            }

            m_CurrentZone         = 0;
            m_CurrentZoneDistance = 0;

            skyMeshFilter.sharedMesh = m_CurrentThemeData.skyMesh;
            RenderSettings.fogColor  = m_CurrentThemeData.fogColor;
            RenderSettings.fog       = true;

            gameObject.SetActive(true);
            characterController.gameObject.SetActive(true);
            characterController.coins   = 0;
            characterController.premium = 0;

            m_Score      = 0;
            m_ScoreAccum = 0;

            m_SafeSegementLeft = m_IsTutorial ? 0 : k_StartingSafeSegments;

            Coin.coinPool = new Pooler(currentTheme.collectiblePrefab, k_StartingCoinPoolSize);

            PlayerData.instance.StartRunMissions(this);

#if UNITY_ANALYTICS
            AnalyticsEvent.GameStart(new Dictionary <string, object>
            {
                { "theme", m_CurrentThemeData.themeName },
                { "character", player.characterName },
                { "accessory", PlayerData.instance.usedAccessory >= 0 ? player.accessories[PlayerData.instance.usedAccessory].accessoryName : "none" }
            });
#endif
        }

        characterController.Begin();
        StartCoroutine(WaitToStart());
    }