示例#1
0
文件: Game.cs 项目: sakseichek/homm
        public bool ReadPlayer(string playerName, out Player player)
        {
            player = null;

            string fileName = GetSaveFileName(playerName);
            if (!System.IO.File.Exists(fileName)) return false;

            using (StreamReader sr = new StreamReader(fileName))
            {
                string strLine = "";

                while (!sr.EndOfStream)
                {
                    strLine = sr.ReadLine();

                    // uid,name,level,exp,a,d,p,k
                    string[] datas = null;
                    Hero hero = null;
                    {
                        datas = strLine.Split(new char[] { ',' });

                        player = new Player();
                        player._id = System.Convert.ToInt32(datas[0]);
                        player._name = datas[1];

                        hero = new Hero();
                        hero._id = player._id;
                        hero._name = player._name;
                        hero._level = System.Convert.ToInt32(datas[2]);
                        hero._experience = System.Convert.ToInt32(datas[3]);
                        hero._attack = System.Convert.ToInt32(datas[4]);
                        hero._defense = System.Convert.ToInt32(datas[5]);
                        hero._power = System.Convert.ToInt32(datas[6]);
                        hero._knowledge = System.Convert.ToInt32(datas[7]);
                    }

                    // skillId,skillLevel,...
                    {
                        datas = strLine.Split(new char[] { ',' });

                        for (int i = 0; i < datas.Length; i += 2)
                        {
                            int skillId = System.Convert.ToInt32(datas[i]);
                            int skillLevel = System.Convert.ToInt32(datas[i + 1]);

                            Skill skill = new Skill();
                            skill.CopyFrom((Skill)Heroes.Core.Setting._skills[skillId]);
                            skill._level = skillLevel;

                            hero._skills.Add(skill._id, skill);
                        }
                    }

                    // spells
                    {
                        datas = strLine.Split(new char[] { ',' });

                        for (int i = 0; i < datas.Length; i++)
                        {
                            int spellId = System.Convert.ToInt32(datas[i]);

                            Spell spell = new Spell();
                            spell.CopyFrom((Spell)Heroes.Core.Setting._spells[spellId]);

                            hero._spells.Add(spell._id, spell);
                        }
                    }

                    // artifacts
                }
            }

            return true;
        }
示例#2
0
        private void GetRandomSkills(Hashtable idLevels, ArrayList lst, int slots)
        {
            // random
            Random rnd = new Random();
            Hashtable skills = new Hashtable();
            while (skills.Count < slots)
            {
                int index = rnd.Next(0, lst.Count);
                int id2 = (int)lst[index];
                if (skills.ContainsKey(id2)) continue;
                skills.Add(id2, id2);

                Skill skill = new Skill();
                skill.CopyFrom((Skill)Heroes.Core.Setting._skills[id2]);
                skill._level = (int)idLevels[id2];
                _skills.Add(skill);
            }
        }