private void Awake()
    {
        instance           = this;
        playerDeathCount   = PlayerPrefs.GetInt("PlayerDeath");
        playerKillCount    = 0;
        playerSurvivalTime = 0;

        achievementObserver = new List <Observer>();

        achievementData = CSVReader.Read("Achievements");                               //업적 목록 받아오기

        unlockText = unlockAchievement.transform.GetChild(1).GetComponent <Text>();

        achievePair = new Dictionary <string, int>()
        {
            { "zombie", 0 },
            { "survive", 0 },
            { "death", 0 }
        };

        for (int i = 0; i < achievementData.Count; i++)                                 // 생성
        {
            Observer achievements = new Observer();

            achievements.achieveCondition = achievementData[i]["AchievementCondition"].ToString(); //업적당 조건 및 횟수 할당
            achievements.achieveCount     = (int)achievementData[i]["AchievementCount"];

            AddAchievement(achievements);                                                           //각 업적을 리스트에 할당
        }

        unlockAchievement.SetActive(false);
    }
    private void OnTriggerEnter2D(Collider2D _collision)
    {
        //좀비와 부딪히면
        if (_collision.transform.CompareTag("Zombie"))
        {
            PlayerPrefs.SetInt("PlayerDeath", AchievementPlayer.GetInstance().playerDeathCount + 1);            //지금까지 죽은 횟수 저장
            AchievementPlayer.GetInstance().playerSurvivalTime = Mathf.FloorToInt((float)time);                 //게임이 끝날때 시간 버림해서 최대 생존 시간
            PlayerPrefs.SetInt("PlayerSurvivalTime", AchievementPlayer.GetInstance().playerSurvivalTime);

            Time.timeScale = 0;                         //게임 끝
            buttonPanel.SetActive(true);                //버튼 panel 활성화

            rankedDateDic.Add(time.ToString(), System.DateTime.Now.ToString());

            MakeDescendingArray(rankingsText, time);          //기존 랭킹과, 새로운 기록 비교
            rankingPanel.SetActive(true);
            for (int i = 0; i < rankingsText.Length; i++)
            {
                PlayerPrefs.SetString(i.ToString(), rankingsText[i].text);               //시간을 점수로 저장
                if (rankedDateDic.ContainsKey(rankingsText[i].text))
                {
                    PlayerPrefs.SetString(rankingsText[i].text, rankedDateDic[rankingsText[i].text]);
                    rankingsText[i].text = PlayerPrefs.GetString(i.ToString());         //점수판에 반영
                    rankingsDate[i].text = PlayerPrefs.GetString(rankingsText[i].text); //그에 따른 날짜도 반영
                }
            }
        }
    }
 public static AchievementPlayer GetInstance()
 {
     if (instance == null)
     {
         instance = FindObjectOfType(typeof(AchievementPlayer)) as AchievementPlayer;
     }
     return(instance);
 }
        public void checkCondition(AchievementPlayer p)
        {
            bool c = Condition();

            if (c && !p.checkAchievement(name))
            {
                p.addAchievementToList(this);
                reward(p.player);
                achievementCompletion(p.player);
            }
        }
Esempio n. 5
0
        private void DrawAtMouse(SpriteBatch spriteBatch)
        {
            AchievementPlayer player = Main.LocalPlayer.GetModPlayer <AchievementPlayer>();

            if (IsMouseHovering)
            {
                bool   state       = player.checkAchievement(achievement.name);
                string stringState = (state) ? "[c/00FF00:Completed]" : "[c/FF0000:Not Completed]";
                Main.hoverItemName = "State: " + stringState + "\nMod: " + achievement.mod.DisplayName;

                /*ChatManager.DrawColorCodedStringWithShadow(spriteBatch, Main.fontMouseText,
                 *  "State: " + stringState + "\nMod: " + achievement.mod.DisplayName,
                 *  new Vector2(Main.mouseX + 20, Main.mouseY + 20), Color.White, 0f, Vector2.Zero, Vector2.One);*/
            }
        }
    private void OnTriggerEnter2D(Collider2D collision)                           // 오렌지 태그를 가진 오브젝트를 만나면 좀비 사라짐
    {
        //if (collision.gameObject.tag == "Berry")
        //{
        //    DestroyZombie(0);
        //}
        //if (collision.gameObject.tag == "Banana")
        //{
        //    DestroyZombie(1);
        //}

        if (collision.gameObject.CompareTag(obstacle))
        {
            gameObject.GetComponent <AudioSource>().Play();
            switch (obstacle)
            {
            case "Berry": tempHP = 0f;
                break;

            case "Banana": tempHP -= 30f;                           //바나나 맞으면 30씩, 나중에 비율로도 가능
                break;

            default:
                break;
            }

            currentHP      = tempHP;
            zombieHP.value = currentHP / MaxHP;

            if (currentHP <= 0)
            {
                StartCoroutine(IZombieDead());
                AchievementPlayer.GetInstance().playerKillCount++;
                PlayerPrefs.SetInt("PlayerKill", AchievementPlayer.GetInstance().playerKillCount);              //죽을 때마다 카운트 증가
            }
        }
    }
Esempio n. 7
0
 void Update()
 {
     time       = Math.Round((Time.timeSinceLevelLoad), 1);                         //씬이 로드 된 이후부터 시간을 소수 둘째 자리로 반올림
     score.text = time.ToString();
     AchievementPlayer.GetInstance().playerSurvivalTime = Mathf.FloorToInt((float)time);
 }
Esempio n. 8
0
        public string CalculateAchievement(bool firstTime, Player player, Achievement achievement, TrambambuleDBContextDataContext context)
        {
            int    level              = 0;
            string label              = "";
            int    newLevel           = 0;
            var    currentAchievement = context.AchievementPlayer.FirstOrDefault(w => w.AchievementId == achievement.Id && w.PlayerId == player.Id);

            if (currentAchievement != null)
            {
                level = currentAchievement.LevelOfAchievement;
            }
            else
            {
                level = 0;
            }

            string comment = "";

            switch (level)
            {
            case 0:
                CaseLevel1(firstTime, player, achievement, context, ref label, ref newLevel, ref comment);
                break;

            case 1:
                CaseLevel2(firstTime, player, achievement, context, ref label, ref newLevel, ref comment);
                break;

            case 2:
                CaseLevel3(firstTime, player, achievement, context, ref label, ref newLevel, ref comment);
                break;
            }

            //if (newLevel > level)
            //{
            if (currentAchievement == null)
            {
                currentAchievement = new AchievementPlayer();
                currentAchievement.LevelOfAchievement = newLevel;
                currentAchievement.AchievementId      = achievement.Id;
                currentAchievement.ToNextLevelLabel   = comment;
                currentAchievement.PlayerId           = player.Id;

                context.AchievementPlayer.InsertOnSubmit(currentAchievement);
            }
            else
            {
                if (newLevel > level)
                {
                    currentAchievement.LevelOfAchievement = newLevel;
                }
                if (!string.IsNullOrEmpty(comment))
                {
                    currentAchievement.ToNextLevelLabel = comment;
                }
            }

            if (newLevel > level)
            {
                string levelName = Common.GetAchievementsLevelName(newLevel);
                return(string.Format("Gracz {0} {1} uzyskał poziom {2} ({3}) w osiągnięciu \"{4}\".", player.FirstName, player.LastName, levelName, label, achievement.Title));
            }
            else
            {
                return("");
            }
            //}
            //else if (comment != "" && currentAchievement != null)
            //{
            //    currentAchievement.ToNextLevelLabel = comment;
            //}

            //return "";
        }
        public string CalculateAchievement(bool firstTime, Player player, Achievement achievement, TrambambuleDBContextDataContext context)
        {
            int level = 0;
            string label = "";
            int newLevel = 0;
            var currentAchievement = context.AchievementPlayer.FirstOrDefault(w => w.AchievementId == achievement.Id && w.PlayerId == player.Id);
            if (currentAchievement != null)
                level = currentAchievement.LevelOfAchievement;
            else
                level = 0;

            string comment = "";
            switch (level)
            {
                case 0:
                    CaseLevel1(firstTime, player, achievement, context, ref label, ref newLevel, ref comment);
                    break;
                case 1:
                    CaseLevel2(firstTime, player, achievement, context, ref label, ref newLevel, ref comment);
                    break;
                case 2:
                    CaseLevel3(firstTime, player, achievement, context, ref label, ref newLevel, ref comment);
                    break;
            }

            //if (newLevel > level)
            //{
            if (currentAchievement == null)
            {
                currentAchievement = new AchievementPlayer();
                currentAchievement.LevelOfAchievement = newLevel;
                currentAchievement.AchievementId = achievement.Id;
                currentAchievement.ToNextLevelLabel = comment;
                currentAchievement.PlayerId = player.Id;

                context.AchievementPlayer.InsertOnSubmit(currentAchievement);
            }
            else
            {
                if (newLevel > level)
                {
                    currentAchievement.LevelOfAchievement = newLevel;
                }
                if (!string.IsNullOrEmpty(comment))
                {
                    currentAchievement.ToNextLevelLabel = comment;
                }
            }

            if (newLevel > level)
            {
                string levelName = Common.GetAchievementsLevelName(newLevel);
                return string.Format("Gracz {0} {1} uzyskał poziom {2} ({3}) w osiągnięciu \"{4}\".", player.FirstName, player.LastName, levelName, label, achievement.Title);
            }
            else
                return "";
            //}
            //else if (comment != "" && currentAchievement != null)
            //{
            //    currentAchievement.ToNextLevelLabel = comment;
            //}

            //return "";
        }