Exemplo n.º 1
0
        public static string[] LostChallengeChapterRole_ParseGuide(int id, string str)
        {
            //EB.Debug.Log("LostChallengeChapterRole_ParseGuide: id -> {0}, str -> {1}", id, str);
            string[] ret;
            if (!string.IsNullOrEmpty(str))
            {
                List <StringView> views;
                using (ZString.Block())
                {
                    ZString    strID   = ZString.Format("ID_scenes_lost_challenge_chapter_role_{0}_guide", id);
                    string     tmp     = EB.Localizer.GetTableString(strID, str);
                    StringView @string = new StringView(tmp);
                    views = @string.Split2List('|');
                }
                ret = new string[views.Count];
                for (int i = 0; i < views.Count; i++)
                {
                    ret[i] = views[i].ToString();
                }

                if (ret.Length < 2)
                {
                    EB.Debug.LogError("Error Role Config Guide need two string, role id = {0}", id);
                }
                else
                {
                    return(ret);
                }
            }

            return(new string[2]);
        }
Exemplo n.º 2
0
        /// <summary>
        /// ZString,Format,不断重用之前char的位置,从而节省空间,这个方法只能在当前帧下次ZString.Format之前,保证返回的string不会变,一般只能用于临时计算,不能缓存
        /// </summary>
        /// <param name="format"></param>
        /// <param name="args"></param>
        /// <returns></returns>
        public static string Format(string format, params object[] args)
        {
            if (!format.Contains("{") || !format.Contains("}"))
            {
                return(format);
            }
            using (ZString.Block())
            {
                if (args != null && args.Length > 0)
                {
                    ZString @string = format;
                    if (args.Length == 1)
                    {
                        @string = ZString.Format(format, GetString(args[0]));
                    }
                    else if (args.Length == 2)
                    {
                        @string = ZString.Format(format, GetString(args[0]), GetString(args[1]));
                    }
                    else if (args.Length == 3)
                    {
                        @string = ZString.Format(format, GetString(args[0]), GetString(args[1]), GetString(args[2]));
                    }
                    else if (args.Length == 4)
                    {
                        @string = ZString.Format(format, GetString(args[0]), GetString(args[1]), GetString(args[2]), GetString(args[3]));
                    }
                    else if (args.Length == 5)
                    {
                        @string = ZString.Format(format, GetString(args[0]), GetString(args[1]), GetString(args[2]), GetString(args[3]), GetString(args[4]));
                    }
                    else if (args.Length == 6)
                    {
                        @string = ZString.Format(format, GetString(args[0]), GetString(args[1]), GetString(args[2]), GetString(args[3]), GetString(args[4]), GetString(args[5]));
                    }
                    else if (args.Length == 7)
                    {
                        @string = ZString.Format(format, GetString(args[0]), GetString(args[1]), GetString(args[2]), GetString(args[3]), GetString(args[4]), GetString(args[5]), GetString(args[6]));
                    }
                    else if (args.Length == 8)
                    {
                        @string = ZString.Format(format, GetString(args[0]), GetString(args[1]), GetString(args[2]), GetString(args[3]), GetString(args[4]), GetString(args[5]), GetString(args[6]), GetString(args[7]));
                    }
                    else if (args.Length == 9)
                    {
                        @string = ZString.Format(format, GetString(args[0]), GetString(args[1]), GetString(args[2]), GetString(args[3]), GetString(args[4]), GetString(args[5]), GetString(args[6]), GetString(args[7]), GetString(args[8]));
                    }

                    args = null;
                    return(@string);
                }
                return(format);
            }
        }
Exemplo n.º 3
0
        public static string Concat(string self, params object[] args)
        {
            using (ZString.Block())
            {
                if (args != null && args.Length > 0)
                {
                    ZString @string = self;
                    if (args.Length == 1)
                    {
                        @string = ZString.Concat(self, GetString(args[0]));
                    }
                    else if (args.Length == 2)
                    {
                        @string = ZString.Concat(self, GetString(args[0]), GetString(args[1]));
                    }
                    else if (args.Length == 3)
                    {
                        @string = ZString.Concat(self, GetString(args[0]), GetString(args[1]), GetString(args[2]));
                    }
                    else if (args.Length == 4)
                    {
                        @string = ZString.Concat(self, GetString(args[0]), GetString(args[1]), GetString(args[2]), GetString(args[3]));
                    }
                    else if (args.Length == 5)
                    {
                        @string = ZString.Concat(self, GetString(args[0]), GetString(args[1]), GetString(args[2]), GetString(args[3]), GetString(args[4]));
                    }
                    else if (args.Length == 6)
                    {
                        @string = ZString.Concat(self, GetString(args[0]), GetString(args[1]), GetString(args[2]), GetString(args[3]), GetString(args[4]), GetString(args[5]));
                    }
                    else if (args.Length == 7)
                    {
                        @string = ZString.Concat(self, GetString(args[0]), GetString(args[1]), GetString(args[2]), GetString(args[3]), GetString(args[4]), GetString(args[5]), GetString(args[6]));
                    }
                    else if (args.Length == 8)
                    {
                        @string = ZString.Concat(self, GetString(args[0]), GetString(args[1]), GetString(args[2]), GetString(args[3]), GetString(args[4]), GetString(args[5]), GetString(args[6]), GetString(args[7]));
                    }
                    else if (args.Length == 9)
                    {
                        @string = ZString.Concat(self, GetString(args[0]), GetString(args[1]), GetString(args[2]), GetString(args[3]), GetString(args[4]), GetString(args[5]), GetString(args[6]), GetString(args[7]), GetString(args[8]));
                    }

                    args = null;
                    return(@string);
                }
                return(self);
            }
        }
Exemplo n.º 4
0
 /// <summary>
 /// ZString.Split,从池子拷贝,从而支持缓存,注意,cache=true,表示让ZString缓存,cache=false,自己在外部有缓存
 /// </summary>
 /// <param name="self"></param>
 /// <param name="cache"></param>
 /// <param name="separator"></param>
 /// <returns></returns>
 public static string[] Splits(this string self, bool cache, char separator)
 {
     using (ZString.Block())
     {
         ZString   target  = self;
         ZString[] zArrays = target.Split(separator, cache);
         string[]  array   = new string[zArrays.Length];
         for (int i = 0; i < zArrays.Length; i++)
         {
             array[i] = zArrays[i];
         }
         return(array);
     }
 }
Exemplo n.º 5
0
        private TaskTemplate ParseTask(GM.DataCache.TaskInfo obj)
        {
            TaskTemplate tpl = new TaskTemplate();

            tpl.task_id = int.Parse(obj.TaskId);
            using (ZString.Block())
            {
                ZString strID = ZString.Format("ID_task_tasks_{0}_task_name", tpl.task_id);
                tpl.task_name = EB.Localizer.GetTableString(strID, obj.TaskName);;                 //tpl.TaskName;

                strID           = ZString.Format("ID_task_tasks_{0}_target_tips", tpl.task_id);
                tpl.target_tips = EB.Localizer.GetTableString(strID, obj.TargetTips);;                 //tpl.TargetTips;
            };
            tpl.scene_id           = obj.SceneId;
            tpl.npc_id             = obj.NpcId;
            tpl.tips               = obj.Tips;
            tpl.commit_scene_id    = obj.CommitSceneId;
            tpl.commit_npc_id      = obj.CommitNpcId;
            tpl.task_type          = obj.TaskType;
            tpl.target_type        = obj.TargetType;
            tpl.target_parameter_1 = obj.TargetParameter1;
            tpl.target_parameter_2 = obj.TargetParameter2;
            tpl.target_parameter_3 = obj.TargetParameter3;
            tpl.xp = new int[obj.XpLength];
            for (int i = 0; i < obj.XpLength; ++i)
            {
                tpl.xp[i] = obj.GetXp(i);
            }
            tpl.gold = new int[obj.GoldLength];
            for (int i = 0; i < obj.GoldLength; ++i)
            {
                tpl.gold[i] = obj.GetGold(i);
            }
            tpl.hc        = obj.Hc;
            tpl.res_type  = obj.ResType;
            tpl.res_count = obj.ResCount;

            tpl.rewards = new ResourceContainer();
            do
            {
                int id = 0, amount = 0;

                int.TryParse(obj.Reward1, out id);
                amount = obj.Count1;
                if (id <= 0 || amount <= 0)
                {
                    break;
                }
                if (tpl.rewards.Items.ContainsKey(id))
                {
                    EB.Debug.LogError("ParseTask: reward {0} exists");
                    tpl.rewards.Items.Remove(id);
                }
                tpl.rewards.Items.Add(id, amount);

                int.TryParse(obj.Reward2, out id);
                amount = obj.Count2;
                if (id <= 0 || amount <= 0)
                {
                    break;
                }
                if (tpl.rewards.Items.ContainsKey(id))
                {
                    EB.Debug.LogError("ParseTask: reward {0} exists");
                    tpl.rewards.Items.Remove(id);
                }
                tpl.rewards.Items.Add(id, amount);

                int.TryParse(obj.Reward3, out id);
                amount = obj.Count3;
                if (id <= 0 || amount <= 0)
                {
                    break;
                }
                if (tpl.rewards.Items.ContainsKey(id))
                {
                    EB.Debug.LogError("ParseTask: reward {0} exists");
                    tpl.rewards.Items.Remove(id);
                }
                tpl.rewards.Items.Add(id, amount);
            } while (false);

            int.TryParse(obj.HeroShard, out tpl.hero_shard);
            tpl.shard_count = obj.ShardCount;
            //tpl.accept_dialogue = obj.AcceptDialogue;
            //tpl.complete_dialogue = obj.CompleteDialogue;
            tpl.achievement_point = obj.AchievementPoint;
            tpl.activity_point    = obj.ActivityPoint;
            tpl.function_limit    = obj.FunctionLimit;
            return(tpl);
        }
Exemplo n.º 6
0
        private SkillTemplate ParseTemplate(GM.DataCache.SkillTemplate skill)
        {
            SkillTemplate skill_data = new SkillTemplate();

            skill_data.ID = skill.Id;
            using (ZString.Block())
            {
                ZString strID = ZString.Format("ID_combat_skills_{0}_name", skill_data.ID);
                skill_data.Name = EB.Localizer.GetTableString(strID, skill.Name);;                 //skill.Name;

                strID = ZString.Format("ID_combat_skills_{0}_description", skill_data.ID);
                skill_data.Description = EB.Localizer.GetTableString(strID, skill.Description);;                 //skill.Description;
            }

            skill_data.Icon             = skill.Icon;
            skill_data.Type             = (eSkillType)(skill.SkillType);
            skill_data.SelectTargetType = (eSkillSelectTargetType)skill.Target;
            skill_data.SPCost           = skill.SPCost;
            skill_data.MaxCooldown      = skill.CooldownTurnNum;
            string move = skill.Action ?? string.Empty;

            if (!move.Equals(string.Empty))
            {
                StringView view = new StringView(move);
                var        list = view.Split2List('.');
                if (list.Count == 1)
                {
                    move = "Moves." + move;
                }
                list = null;
            }
            else
            {
                move = "Moves.";
            }

            skill_data.AnimatorStateFullPathName = move;
            int action_position = skill.SkillPosition;

            switch (action_position)
            {
            case 0:
                skill_data.ActionPosition = MoveEditor.Move.eSkillActionPositionType.ORIGINAL;
                skill_data.TargetPosition = MoveEditor.Move.eSkillTargetPositionType.SELECT_TARGET_OR_FIRST_TARGET;
                break;

            case 1:
                skill_data.ActionPosition = MoveEditor.Move.eSkillActionPositionType.MIDPOINT;
                skill_data.TargetPosition = MoveEditor.Move.eSkillTargetPositionType.SELECT_TARGET_OR_FIRST_TARGET;
                break;

            case 2:
                skill_data.ActionPosition = MoveEditor.Move.eSkillActionPositionType.TARGET;
                skill_data.TargetPosition = MoveEditor.Move.eSkillTargetPositionType.SELECT_TARGET_OR_FIRST_TARGET;
                break;

            case 3:
                skill_data.ActionPosition = MoveEditor.Move.eSkillActionPositionType.TARGET;
                skill_data.TargetPosition = MoveEditor.Move.eSkillTargetPositionType.TARGETS;
                break;

            case 4:
                skill_data.ActionPosition = MoveEditor.Move.eSkillActionPositionType.MIDLINE;
                skill_data.TargetPosition = MoveEditor.Move.eSkillTargetPositionType.SELECT_TARGET_OR_FIRST_TARGET;
                break;

            case 5:
                skill_data.ActionPosition = MoveEditor.Move.eSkillActionPositionType.MIDPOINT;
                skill_data.TargetPosition = MoveEditor.Move.eSkillTargetPositionType.TARGETS;
                break;

            default:
                skill_data.ActionPosition = MoveEditor.Move.eSkillActionPositionType.ORIGINAL;
                skill_data.TargetPosition = MoveEditor.Move.eSkillTargetPositionType.SELECT_TARGET_OR_FIRST_TARGET;
                break;
            }
            skill_data.TargetDistance  = skill.TargetDistance / 100.0f;
            skill_data.IgnoreCollide   = true;
            skill_data.HideOthers      = skill.HideOthers;
            skill_data.FadeEnvironment = (eEnvironmentHideType)skill.FadeEnvironment;
            skill_data.BattleRating    = skill.BattleRating;
            if (!string.IsNullOrEmpty(skill.BuffDescribleId))
            {
                skill_data.BuffDescribleID = new List <int>();
                StringView view = new StringView(skill.BuffDescribleId);
                var        ids  = view.Split2List(',');
                for (int i = 0; i < ids.Count; i++)
                {
                    int buffid = 0;
                    int.TryParse(ids[i].ToString(), out buffid);
                    if (buffid != 0)
                    {
                        skill_data.BuffDescribleID.Add(buffid);
                    }
                }
            }
            return(skill_data);
        }
Exemplo n.º 7
0
        public Hashtable Read(string data)
        {
            //Hashtable result = Johny.HashtablePool.Claim();
            // convert to unix line feeds
            //data = data.Replace("\r\n", "\n");
            List <StringView> array   = null;
            List <StringView> idParts = null;

            using (ZString.Block())
            {
                ZString zStr = data;
                ZString str  = zStr.Replace("\r\n", "\n");

                StringView view = new StringView(str, 0, str.Length);
                array = view.Split2List('\n');
            }

            foreach (StringView line in array)
            {
                if (line.Length > 0 && line[0] == '#')
                {
                    continue;
                }

                //StringView line = v.SubString(0, v.Length-1);
                int comma = line.IndexOf(',');
                if (comma > 0)
                {
                    StringView id = line.Substring(0, comma);

                    if (id.StartsWith(EB.Symbols.LocIdPrefix))
                    {
                        idParts = id.Split2List('|');
                        id      = idParts[0];
                        string idText = id.ToString();

                        if (idParts.Count > 1)
                        {
                            StringView type = idParts[1];
                            if (type.Equals("SOURCE") || type.Equals("Source"))
                            {
                                _status[idText] = LocStatus.Source;
                            }
                            else if (type.Equals("PLACEHOLDER") || type.Equals("Placeholder"))
                            {
                                _status[idText] = LocStatus.Placeholder;
                            }
                            else if (type.Equals("For_Translation") || type.Equals("FOR_TRANSLATION"))
                            {
                                _status[idText] = LocStatus.For_Translation;
                            }
                            else if (type.Equals("Translated") || type.Equals("TRANSLATED"))
                            {
                                _status[idText] = LocStatus.Translated;
                            }
                            else
                            {
                                _status[idText] = LocStatus.Missing;
                            }
                        }
                        else
                        {
                            _status[idText] = LocStatus.Source;
                        }

                        string value = line.Substring(comma + 1).ToString();
                        // convert line feeds
                        value = value.Replace("\\n", "\n").Replace("\\t", "\t");

                        Add(idText, value);
                        //result[id] = value;
                    }
                }
            }
            array   = null;
            idParts = null;

            return(null);
        }