예제 #1
0
파일: Characters.cs 프로젝트: ninify13/GSTJ
        void EnterScene()
        {
            int coins = PlayerPrefs.GetInt(LevelManager.ScoreType.Coin.ToString(), 0);

            m_coinCount.text = coins.ToString();

            m_characterItems = new PoolItem[(int)Character.Max];
            for (int i = 0; i < (int)Character.Max; i++)
            {
                m_characterItems[i] = m_poolManager.GetPoolItem(PoolType.CharacterItem);
                m_characterItems[i].transform.SetParent(m_contentParent);
                m_characterItems[i].transform.localScale = Vector3.one;
                CharacterItem characterItem = m_characterItems[i].gameObject.GetComponent <CharacterItem>();
                CharacterMeta characterMeta = GSTJ_Core.CharacterMeta.Characters[i];
                characterItem.Init(characterMeta, OnSelectCharacter);
                //for first character, set it selected by default
                if (i == 0)
                {
                    characterItem.SetSelected(true);
                    m_characterItem = characterItem;
                }
            }

            m_scrollRect.horizontalScrollbar.value = 0.0f;

            //ScaleButtons(1.0f, 0.0f, 0.5f);
        }
예제 #2
0
        public CharacterInfo()
        {
            _Meta             = new CharacterMeta();
            _Meta._PrefabName = "Prefab Name";
            _Meta._SoulScore  = 0;

            _Attributes            = new CharacterAttributes();
            _Attributes._Speed     = 0.5f;
            _Attributes._Work      = 0.5f;
            _Attributes._Health    = 0.5f;
            _Attributes._Fertility = 0.5f;
        }
예제 #3
0
        HexUnit CreateUnit(CharacterMeta metadata, HexCell location)
        {
            HexUnit hexUnit = DataController.Instance.GetHexUnit(metadata.unitPrefab);

            hexUnit.transform.SetParent(grid.transform, false);
            hexUnit.SetMetadata(metadata);
            if (location != null)
            {
                hexUnit.Location = location;
            }
            return(hexUnit);
        }
예제 #4
0
 public void SetMetadata(CharacterMeta metadata)
 {
     name         = metadata.name;
     previewImage = metadata.previewImage;
     MAX_HP       = metadata.MAX_HP;
     HP           = metadata.MAX_HP;
     MAX_STAMINA  = metadata.MAX_STAMINA;
     STAMINA      = metadata.MAX_STAMINA;
     ATK          = metadata.ATK;
     MAGIC_ATK    = metadata.MAGIC_ATK;
     RANGE_ATK    = metadata.RANGE_ATK;
     DEF          = metadata.DEF;
     MAGIC_DEF    = metadata.MAGIC_DEF;
     isEnemy      = metadata.isEnemy;
     preview.GetComponent <MeshRenderer>().material = metadata.material;
 }
예제 #5
0
        public void Init(CharacterMeta meta, OnSelected onSelected)
        {
            m_image.sprite = meta.Image;
            m_name.text    = $"{meta.CharacterName}";

            m_coinValue.text = $"{meta.CoinRequirement}";
            //check if the character is unlocked
            bool isLocked = !(meta.isCharUnlocked);

            m_lockedObject.SetActive(isLocked);
            m_unlockedObject.SetActive(!isLocked);

            m_meta = meta;

            m_onSelected = onSelected;

            m_isLocked = isLocked;

            m_selectedObject.SetActive(false);
        }
예제 #6
0
    public async void LoadCharacter(CharacterMeta meta)
    {
        ParallaxHolder.WillDelaySet = true;

        var isNewCharacter = Context.CharacterManager.ActiveCharacterBundleId != meta.AssetId;

        if (isNewCharacter)
        {
            SpinnerOverlay.Show();

            infoCard.Leave(false);
            characterTransitionElement.Leave(false);
        }

        var character = await Context.CharacterManager.SetActiveCharacter(meta.AssetId);

        if (character == null)
        {
            throw new Exception("Character not downloaded or corrupted");
        }

        if (isNewCharacter)
        {
            await UniTask.Delay(TimeSpan.FromSeconds(0.4f));
        }

        nameText.text = meta.Name;
        nameGradient.SetGradient(character.nameGradient.GetGradient());
        descriptionText.text = meta.Description;
        levelCard.SetModel(meta.Level.ToLevel(LevelType.User));
        illustratorText.text = meta.Illustrator.Name;
        illustratorProfileButton.onPointerClick.SetListener(_ => Application.OpenURL(meta.Illustrator.Url));
        if (meta.CharacterDesigner != null && !meta.CharacterDesigner.Name.IsNullOrEmptyTrimmed())
        {
            characterDesignerHolder.gameObject.SetActive(true);
            characterDesignerText.text = meta.CharacterDesigner.Name;
            characterDesignerProfileButton.onPointerClick.SetListener(_ =>
                                                                      Application.OpenURL(meta.CharacterDesigner.Url));
        }
        else
        {
            characterDesignerHolder.gameObject.SetActive(false);
        }
        infoCard.transform.RebuildLayout();

        if (character.musicAudio == null)
        {
            muteButtonImage.sprite = volumeSprite;
            muteButtonImage.SetAlpha(0.3f);
            muteButton.scaleOnClick = false;
            muteButton.onPointerClick.RemoveAllListeners();
        }
        else
        {
            muteButtonImage.sprite = Context.Player.Settings.PlayCharacterTheme ? volumeSprite : volumeMuteSprite;
            muteButtonImage.SetAlpha(1f);
            muteButton.scaleOnClick = true;
            muteButton.onPointerClick.SetListener(_ =>
            {
                Context.Player.Settings.PlayCharacterTheme = !Context.Player.Settings.PlayCharacterTheme;
                Context.Player.SaveSettings();
                LoopAudioPlayer.Instance.SetMainAudio(Context.Player.Settings.PlayCharacterTheme ? character.musicAudio : LoopAudioPlayer.Instance.defaultLoopAudio);
                muteButtonImage.sprite = Context.Player.Settings.PlayCharacterTheme ? volumeSprite : volumeMuteSprite;
            });
        }

        await characterDisplay.Load(CharacterAsset.GetTachieBundleId(meta.AssetId));

        NavigationBackdrop.Instance.UpdateBlur();

        infoCard.Enter();
        characterTransitionElement.Leave(false, true);
        characterTransitionElement.Enter();
        characterTransitionElement.Apply(it =>
        {
            it.enterMultiplier = 0.4f;
            it.enterDelay      = 0.4f;
            it.enterDuration   = 0.8f;
        });

        if (Context.IsOffline())
        {
            SpinnerOverlay.Hide();
        }
        else
        {
            RestClient.Post(new RequestHelper
            {
                Uri         = $"{Context.ApiUrl}/profile/{Context.Player.Id}/character",
                Headers     = Context.OnlinePlayer.GetRequestHeaders(),
                EnableDebug = true,
                Body        = new CharacterPostData
                {
                    characterId = meta.Id
                }
            })
            .CatchRequestError(error =>
            {
                Debug.LogError(error);
                Toast.Next(Toast.Status.Failure, "TOAST_FAILED_TO_UPDATE_PROFILE_CHARACTER".Get());
            })
            .Finally(() =>
            {
                SpinnerOverlay.Hide();
            });
        }

        ParallaxHolder.WillDelaySet = false;
    }