예제 #1
0
        void InitMidiDetail(bool renderMidiList = true)
        {
            midi = res.QueryMidiById(level.selectedMidiId);
            if (!string.IsNullOrEmpty(midi.coverBlurUrl))
            {
                Net.WebCache.instance.LoadTexture(midi.coverBlurUrl, job => {
                    level.backgroundImage.texture = job.GetData();
                    game.backgroundTexture        = job.GetData();
                });
            }
            else
            {
                level.backgroundImage.texture = level.defaultBackgroundTexture;
                game.backgroundTexture        = null;
            }

            song   = res.QuerySongById(midi.songId);
            album  = res.QueryAlbumById(song.albumId);
            author = res.QueryPersonById(midi.authorId);

            // _id is path for custom midis
            byte[] bytes = ResourceStorage.ReadMidiBytes(midi);
            midiId             = midi._id;
            midiFile           = new MidiFile(bytes);
            sequenceCollection = new NoteSequenceCollection(midiFile);

            sourceText.text = string.Format("{0} • {1}", album.name.TranslateArtifact(), song.name.TranslateArtifact());
            titleText.text  = midi.name;
            artistText.text = string.Format("by {0}", author?.name ?? midi.artistName);
            infoText.text   = string.Format("{0:N0} Sequences • {1:N0} Notes • {2}",
                                            sequenceCollection.sequences.Count, sequenceCollection.noteCount, hash = MiscHelper.GetHexEncodedMd5Hash(bytes));
            statisticsText.text = string.Format(" <size=12>{0:N0}</size>   <size=12>{1:N0}</size>   <size=12>{2:N0}</size>   <size=12>{3:N0}</size>", midi.trialCount, midi.downloadCount, midi.voteSum, midi.loveCount);
            statusText.text     = midi.status;

            if (string.IsNullOrWhiteSpace(midi.coverUrl))
            {
                coverCutter.Cut(defaultTexture.name, defaultTexture);
            }
            else
            {
                Net.WebCache.instance.LoadTexture(midi.coverUrl, job => {
                    coverCutter.Cut(job.GetKey(), job.GetData());
                });
            }

            if (renderMidiList)
            {
                RenderMidiList(midi.songId);
            }
        }
예제 #2
0
        void DisplayUserInfo(JsonObj userDict)
        {
            TopToolBarScheduler.FadeOutAndDeactivate(loginPopupGroup);
            loginButtonGroup.gameObject.SetActive(false);
            userInfoGroup.gameObject.SetActive(true);
            anim.New(userInfoGroup).FadeIn(userInfoGroup, .2f, 0);

            game.ExecuteOnMain(() => {
                nameText.text = (string)userDict["name"];
                if (userDict.ContainsKey("avatarUrl"))
                {
                    web.LoadTexture((string)userDict["avatarUrl"], job => {
                        rawImageCutter.Cut(job.GetKey(), job.GetData());
                    });
                }
            });
        }