public void LoadLevel(string jsonText)
        {
            var levelData = JsonUtility.FromJson <LevelData>(jsonText);
            var placer    = new PlaceBubbleAction();

            randoms = new List <RandomBubbleDefinition>(levelData.Randoms ?? new RandomBubbleDefinition[0]);
            GlobalState.EventService.Dispatch(new RandomBubblesChangedEvent());

            foreach (var bubble in levelData.Bubbles)
            {
                state.BubbleType = bubble.Type;

                placer.Perform(this, bubble.X, bubble.Y);
                bubbleFactory.ApplyEditorModifiers(views[BubbleData.GetKey(bubble.X, bubble.Y)], bubble);
                models[BubbleData.GetKey(bubble.X, bubble.Y)].modifiers = bubble.modifiers;
            }

            LevelProperties.FromLevelData(levelData);
            LevelProperties.StarValues = ScoreUtil.ComputeStarsForLevel(levelData, BubbleFactory);
            LevelProperties.NotifyListeners();

            queue.CopyFrom(levelData.Queue);
            queue.ShotCount = levelData.ShotCount;
            queue.NotifyListeners();

            Background = levelData.Background;

            GlobalState.EventService.Dispatch(new LevelModifiedEvent());
            GlobalState.EventService.Dispatch(new LevelEditorLoadEvent());
        }
Exemple #2
0
 private void Start()
 {
     _rank.text     = Rank.ToString();
     _name.text     = Name;
     _score.text    = $"{ScoreUtil.FormatScore(Score)}匹";
     _avatar.sprite = Avatar;
 }
        private IEnumerator DoScoreComputation()
        {
            yield return(null);

            var data = new MutableLevelData
            {
                Background = Background,
                Bubbles    = models.Values,
                Queue      = queue,
                Randoms    = randoms.ToArray(),
                ShotCount  = queue.ShotCount,
            };

            var newValues = ScoreUtil.ComputeStarsForLevel(data, BubbleFactory);

            for (int index = 0, count = newValues.Length; index < count; index++)
            {
                newValues[index] = (int)(newValues[index] * LevelProperties.StarMultiplier);
            }

            LevelProperties.StarValues = newValues;
            LevelProperties.NotifyListeners();

            scoreCoroutine = null;
        }
        /// <summary>
        /// Receiver from event hub to update label score
        /// </summary>
        /// <param name="eventData"></param>
        private void OnScoreUpdate(EventUpdateScore eventData)
        {
            _currentScore    = eventData.score;
            _labelScore.text = ScoreUtil.FormatScore(eventData.score);

            var spawnLabel = GameObject.Instantiate(_labelScoreIncrease, _labelScoreIncrease.transform.parent);

            spawnLabel.transform.localPosition = _labelScoreIncrease.transform.localPosition;
            spawnLabel.transform.localScale    = Vector3.one;

            spawnLabel.gameObject.SetActive(true);
            spawnLabel.alpha = 1f;
            spawnLabel.text  = "+" + ScoreUtil.FormatScore(eventData.increase);

            var seq = DOTween.Sequence();

            seq.Append(spawnLabel.transform.DOLocalMoveY(spawnLabel.transform.position.y, 3.0f));
            seq.Join(spawnLabel.DOFade(0, 3.0f));

            seq.OnComplete(() =>
            {
                if (spawnLabel != null && spawnLabel.gameObject != null)
                {
                    Destroy(spawnLabel.gameObject);
                }
            });
        }
Exemple #5
0
 // Use this for initialization
 void Start()
 {
     test      = (Test)GameObject.Find("Main Camera").GetComponent("Test");
     scoreUtil = test.scoreUtil;
     mObject   = (GameObject)Instantiate(Strength, transform.position, Quaternion.identity);
     //mObject.GetComponent<ShowStrength>().Value=Random.Range(20,40);
     mObject.GetComponent <ShowStrength>().Value = note;
 }
Exemple #6
0
    // Use this for initialization
    void Start()
    {
        titleScreen.SetActive(true);
        creditScreen.SetActive(false);

        gameOver.gameObject.SetActive(ScoreUtil.HasScore);
        scoreBoard.gameObject.SetActive(ScoreUtil.HasScore);

        if (ScoreUtil.HasScore)
        {
            scoreBoard.text = "You survived " + ScoreUtil.GetScore() + "!";
        }
    }
Exemple #7
0
 // Update is called once per frame
 void Update()
 {
     if (Input.GetKeyDown(KeyCode.Space))
     {
         SingletonFactory.ClearInstances();
         ScoreUtil.ResetScore();
         SceneManager.LoadScene("Overworld");
     }
     if (Input.GetKeyDown(KeyCode.C))
     {
         titleScreen.SetActive(!titleScreen.activeSelf);
         creditScreen.SetActive(!titleScreen.activeSelf);
     }
 }
Exemple #8
0
 private void CheckScore(int localHighscore, int totalScore)
 {
     NetworkCaller.Instance.UpdateHighScore(localHighscore, totalScore, () =>
     {
         var responsePlayerData = NetworkCaller.Instance.PlayerData;
         _nameText.text         = responsePlayerData.Nickname;
         _scoreText.text        = $"{ScoreUtil.FormatScore(responsePlayerData.HighestScore)}匹";
         _rankText.text         = $"{ScoreUtil.FormatScore(responsePlayerData.Rank)}位";
         UpdateTopPlayers();
     },
                                            () =>
     {
         NativeDialogManager.Instance.ShowConnectionErrorDialog(
             () => { CheckScore(localHighscore, totalScore); },
             () => { SceneManager.LoadScene("HomeScene"); });
     });
 }
        public string SaveLevel()
        {
            var data = new MutableLevelData
            {
                Background = Background,
                Bubbles    = models.Values,
                Queue      = queue,
                Randoms    = randoms.ToArray(),
                ShotCount  = queue.ShotCount,
            };

            LevelProperties.StarValues = ScoreUtil.ComputeStarsForLevel(data, BubbleFactory);
            LevelProperties.NotifyListeners();

            LevelProperties.ToLevelData(data);

            return(JsonUtility.ToJson(data));
        }
Exemple #10
0
    public override void Damage(Item?equippedItem, Player player)
    {
        base.Damage(equippedItem, player);


        if (CurHp <= 0)
        {
            ScoreUtil.SetScore();

            audioSource.clip = SingletonFactory.GetInstance <PrefabUtil>().humanDeathClip;
            audioSource.Play();

            Invoke("LoadTitleScreen", 0.8f);
        }
        else
        {
            audioSource.clip = SingletonFactory.GetInstance <PrefabUtil>().humanDamageClip;
            audioSource.Play();
        }
    }
Exemple #11
0
        private void Start()
        {
            _loadingLayer.SetActive(true);
            Sound2DManager.Instance.StopBgm();
            var localHighscore   = PlayerPrefsHelper.GetHighScore();
            var serverHighscore  = NetworkCaller.Instance.PlayerData.HighestScore;
            var totalScore       = PlayerPrefsHelper.GetTotalScore();
            var serverTotalScore = NetworkCaller.Instance.PlayerData.TotalScore;

            if (localHighscore > serverHighscore || totalScore > serverTotalScore)
            {
                CheckScore(localHighscore, totalScore);
            }
            else
            {
                var playerData = NetworkCaller.Instance.PlayerData;
                _nameText.text  = playerData.Nickname;
                _scoreText.text = $"{ScoreUtil.FormatScore(playerData.HighestScore)}匹";
                _rankText.text  = playerData.Rank <= 0 ? "-位" : $"{ScoreUtil.FormatScore(playerData.Rank)}位";
                _avatar.sprite  = _skinSetting.GetSkinById(playerData.SkinId).skinAvatar;
                UpdateTopPlayers();
            }
        }
Exemple #12
0
 private void Start()
 {
     Sound2DManager.Instance.PlayBgm();
     _highscoreText.text = ScoreUtil.FormatScore(PlayerPrefsHelper.GetHighScore());
     Advertiser.AdvertisementSystem.ShowNormalBanner();
 }
Exemple #13
0
 private void OnEnable()
 {
     _labelScore.text = ScoreUtil.FormatScore(_score);
     _animation.Play();
 }
Exemple #14
0
        //JSON数据格式
        //{
        //    Username: string
        //    Description:string
        //    Time:DateTime
        //    LocationStr string(四川_成都_郫县)
        //    Answers:string("010100")
        //    PicNames:string的JArray
        //}
        public void ProcessRequest(HttpContext context)
        {
            StreamReader reader     = new StreamReader(context.Request.InputStream, Encoding.UTF8);
            string       requestStr = reader.ReadToEnd();

            JObject  jObj        = JObject.Parse(requestStr);
            string   username    = jObj["Username"].ToString();
            string   description = jObj["Description"].ToString();
            DateTime time        = DateTime.Parse(jObj["Time"].ToString());
            string   locationStr = jObj["LocationStr"].ToString();
            string   answers     = jObj["Answers"].ToString();
            JArray   picNames    = JArray.Parse(jObj["PicNames"].ToString());

            //添加到自检记录
            RecordModel record = new RecordModel();

            record.Answers     = answers;
            record.Description = description;

            //如果locationStr为null,则返回"000000"(中国),否则解析并保存
            if (string.IsNullOrEmpty(locationStr))
            {
                record.Citycode = "000000";
            }
            else
            {
                record.Citycode = LocationDAL.GetLocalId(locationStr);
            }

            record.Time    = time;
            record.User_id = UserDAL.GetByUsername(username).User_id;
            long record_id = RecordDAL.Insert(record);

            //添加自检图片
            foreach (string picName in picNames)
            {
                PhotoModel photo = new PhotoModel();
                photo.Path      = picName;
                photo.Record_id = record_id;
                PhotoDAL.Insert(photo);
            }

            //返回Record_id给移动端
            JObject jObjSend = new JObject();

            jObjSend.Add("Record_id", record_id);

            byte[] buf = Encoding.UTF8.GetBytes(jObjSend.ToString());
            context.Response.OutputStream.Write(buf, 0, buf.Length);

            Thread thread = new Thread(() =>
            {
                List <CVResultModel> results = new List <CVResultModel>();

                //检查图片是否分析完成(是否Insert到CVResult中)
                const int WAIT_TIME = 240;   //等待时间(如果240秒某张图片都没有传输成功且分析完成,则放弃)
                foreach (string picName in picNames)
                {
                    //轮询
                    for (int i = 0; i < WAIT_TIME; i++)
                    {
                        if (null != CVResultDAL.GetById(picName))
                        {
                            results.Add(CVResultDAL.GetById(picName));
                            break;
                        }
                        Thread.Sleep(1000);
                    }
                }

                //计算分数并保存
                float score = ScoreUtil.GetScore(results);
                RecordDAL.UpdateScore(score, record_id);
            });

            thread.Start();
        }
Exemple #15
0
 public void SetScore(long score)
 {
     _labelScore.text = ScoreUtil.FormatScore(score);
 }
Exemple #16
0
        /// <summary>
        /// 窗口加载时:通过GET请求的"record_id"参数到数据库取得相应的自检信息并显示
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Page_Load(object sender, EventArgs e)
        {
            long record_id;

            if (long.TryParse(Request.Params["record_id"], out record_id))
            {
                //调用数据库访问类查询该主键对应的自检记录
                RecordModel  record = RecordDAL.GetById(record_id);
                PhotoModel[] photos = PhotoDAL.GetAllByRecordId(record_id);

                //原图片
                List <string> srcUrls = new List <string>();
                List <string> dstUrls = new List <string>();
                foreach (var photo in photos)
                {
                    srcUrls.Add("~/ImageWebForm.aspx?fileType=src&picName=" + photo.Path);
                    dstUrls.Add("~/ImageWebForm.aspx?fileType=dst&picName=" + photo.Path);
                }

                //将图片绑定到控件上
                dl_srcImgs.DataSource = srcUrls;
                dl_srcImgs.DataBind();

                dl_dstImgs.DataSource = dstUrls;
                dl_dstImgs.DataBind();

                //取得该自检对应图片的所有处理结果
                List <CVResultModel> results = new List <CVResultModel>();
                foreach (var photo in photos)
                {
                    var result = CVResultDAL.GetById(photo.Path);
                    if (result != null)
                    {
                        results.Add(result);
                    }
                }

                //分析处理结果
                float score = ScoreUtil.GetScore(results);

                //结论
                StringBuilder builder = new StringBuilder();
                //builder.AppendFormat("系统分析得分:{0:f2}", score).AppendLine();
                var group = Severity.Group(score);
                switch (group)
                {
                case Severity.SeverityEnum.Normal:
                    builder.AppendLine("牙齿正常,请注意保持");
                    break;

                case Severity.SeverityEnum.Light:
                    builder.AppendLine("有少量龋齿或程度较轻");
                    break;

                case Severity.SeverityEnum.Medium:
                    builder.AppendLine("有一定龋齿或程度中等");
                    break;

                case Severity.SeverityEnum.Severe:
                    builder.AppendLine("有大量龋齿或龋坏严重");
                    break;

                default:
                    break;
                }

                if (group != Severity.SeverityEnum.Normal)
                {
                    builder.AppendLine("可能为色素沉着,牙石或牙垢,保持口腔清洁或前往正规医院洗牙可以让结果更准确");
                }
                lbl_conclusion.Text = builder.ToString().Replace(Environment.NewLine, "<br>");

                //医生意见
                DiagnosisModel[] diagnoses = DiagnosisDAL.GetAllByRecordId(record_id);
                List <string>    comments  = new List <string>();
                foreach (var diagnosis in diagnoses)
                {
                    string item = string.Format("{0} {1}", diagnosis.Time.ToString(), DoctorDAL.GetById(diagnosis.Doc_id).RealName)
                                  + Environment.NewLine + diagnosis.Result;
                    comments.Add(item);
                }
                dl_comments.DataSource = comments;
                dl_comments.DataBind();
            }
            else
            {
                //record_id出错
            }
        }