private static JassInteger StringCount(JassStringArg str, JassStringArg sub) { string Str = str.ToString(), Sub = sub.ToString(); if (Str == null || Sub == null) { return(0); } return(Regex.Matches(Str, Sub).Count); }
private static JassBoolean StringContains(JassStringArg str, JassStringArg sub) { string Str = str.ToString(), Sub = sub.ToString(); if (Str == null || Sub == null) { return(false); } return(Str.Contains(Sub)); }
private static JassStringRet StringSplit(JassStringArg str, JassStringArg sub, JassInteger index) { string Str = str.ToString(); if (string.IsNullOrEmpty(Str)) { return(string.Empty); } string[] array = Str.Split(new string[] { sub }, StringSplitOptions.None); return(0 <= index && index < array.Length ? array[index] : string.Empty); }
private static JassStringRet StringRegex(JassStringArg str, JassStringArg regex, JassInteger index) { string Str = str.ToString(), Reg = regex.ToString(); if (Str == null || Reg == null) { return(string.Empty); } MatchCollection matches = Regex.Matches(Str, Reg); return(0 <= index && index < matches.Count ? matches[index].Value : string.Empty); }
private static JassStringRet StringSub(JassStringArg str, JassInteger start, JassInteger length) { string Str = str.ToString(); int Start = start, Length = length; if (Str == null || Start >= Str.Length || Length == 0) { return(string.Empty); } if (Start < 0) { Length += Start; Start = 0; } if (Length < 0 || Start + Length > Str.Length) { return(Str.Substring(Start)); } else { return(Str.Substring(Start, Length)); } }
private static JassStringRet StringReverse(JassStringArg str) { char[] arr = (str.ToString() ?? string.Empty).ToCharArray(); Array.Reverse(arr); return(new string(arr)); }
private static void MemorySetString(JassInteger offset, JassStringArg value) => WriteString(new IntPtr(offset), value);
private static void DzAPI_Map_Ladder_SetPlayerStat(JassPlayer whichPlayer, JassStringArg key, JassStringArg value) { }
private static JassStringRet DzAPI_Map_GetServerValue(JassPlayer whichPlayer, JassStringArg key) => string.Empty;
private static JassRealRet RequestExtraRealData(JassInteger dataType, JassPlayer whichPlayer, JassStringArg param1, JassStringArg param2, JassBoolean param3, JassInteger param4, JassInteger param5, JassInteger param6) => 0;
private static JassBoolean RequestExtraBooleanData(JassInteger dataType, JassPlayer whichPlayer, JassStringArg param1, JassStringArg param2, JassBoolean param3, JassInteger param4, JassInteger param5, JassInteger param6) => false;
private static JassStringRet DzAPI_Map_GetServerArchiveDrop(JassPlayer whichPlayer, JassStringArg key) => string.Empty;
private static JassStringRet StringReplace(JassStringArg str, JassStringArg old, JassStringArg newstr) { return(str.ToString()?.Replace(old.ToString() ?? string.Empty, newstr.ToString() ?? string.Empty) ?? string.Empty); }
private static JassStringRet StringTrimEnd(JassStringArg str) => str.ToString()?.TrimEnd();
private static JassStringRet StringTrimStart(JassStringArg str) => str.ToString()?.TrimStart();
private static void DzAPI_Map_UseConsumablesItem(JassPlayer whichPlayer, JassStringArg key) { }
private static void DzAPI_Map_OrpgTrigger(JassPlayer whichPlayer, JassStringArg key) { }
private static JassStringRet StringInsert(JassStringArg str, JassInteger index, JassStringArg val) { int idx = index >= 0 ? (int)index : 0; return((str.ToString() ?? string.Empty).PadRight(idx).Insert(idx, val.ToString() ?? string.Empty)); }
private static JassInteger DzAPI_Map_GetServerArchiveEquip(JassPlayer whichPlayer, JassStringArg key) => 0;
private static void DzAPI_Map_MissionComplete(JassPlayer whichPlayer, JassStringArg key, JassStringArg value) { }
private static JassStringRet RequestExtraStringData(JassInteger dataType, JassPlayer whichPlayer, JassStringArg param1, JassStringArg param2, JassBoolean param3, JassInteger param4, JassInteger param5, JassInteger param6) => string.Empty;
private static JassStringRet DzAPI_Map_GetMapConfig(JassStringArg key) => "1";
private static JassBoolean DzAPI_Map_SaveServerValue(JassPlayer whichPlayer, JassStringArg key, JassStringArg value) => true;
private static JassBoolean DzAPI_Map_HasMallItem(JassPlayer whichPlayer, JassStringArg key) => false;
private static void DzAPI_Map_Stat_SetStat(JassPlayer whichPlayer, JassStringArg key, JassStringArg value) { }
private static JassBoolean DzAPI_Map_SavePublicArchive(JassPlayer whichPlayer, JassStringArg key, JassStringArg value) => true;
private static JassInteger GetModuleHandle(JassStringArg moduleName) => Kernel32.GetModuleHandle(moduleName).ToInt32();
private static JassStringRet DzAPI_Map_GetPublicArchive(JassPlayer whichPlayer, JassStringArg key) => string.Empty;
private static void WriteLog(JassStringArg str) => Trace.WriteLine(str.ToString());
private static JassInteger StringCalcLines(JassStringArg str, JassInteger length) { string Str = str.ToString(); int Length = length; if (Str == null || Length <= 0) { return(0); } string[] items = Str.TrimEnd().Split(' '); int ret = 1, lastLen = 0, curLen = 0; for (int i = 0; i < items.Length; i++) { string item = items[i].TrimEnd(' '); if (lastLen > 0 && item.Length == 0) { lastLen++; continue; } for (int j = 0; j < item.Length; j++) { char c = item[j]; if (c < 0x100) { switch (c) { case '|': if (j + 1 == item.Length) { break; } switch (item[j + 1]) { case 'C': case 'c': int idx = 0; while (idx < 8) { if (item.Length <= j + 2 + idx) { goto SwitchBreak; } char h = item[j + 2 + idx]; if (!('0' <= h && h <= '9' || 'A' <= h && h <= 'F' || 'a' <= h && h <= 'f')) { goto SwitchBreak; } idx++; } j += 9; continue; case 'R': case 'r': j++; continue; case 'N': case 'n': j++; lastLen = 0; curLen = 0; ret++; if (j + 1 == item.Length) { curLen++; } continue; } break; case '\r': continue; case '\n': lastLen = 0; curLen = 0; ret++; if (j + 1 == item.Length) { curLen++; } continue; } SwitchBreak: curLen++; } else { curLen += 2; } if (curLen >= Length) { curLen = 0; ret++; } else if (lastLen > 0 && curLen + lastLen + 1 >= Length) { lastLen = 0; ret++; } } lastLen += ++curLen; curLen = 0; } return(ret); }