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]); }
/// <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); } }
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); } }
/// <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); } }
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); }
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); }
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); }