Files
assaultcube-/config/mdarray.cfg
T
Bukz b2a77186cc cleanup/quotes to brackets where feasible
Note: This commit effects a lot of configs, be on the look out for little cubescript errors/broken menuitems/etc. and report them ASAP.

git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@7146 e016b1c5-ed68-44aa-a2f7-31cac88cffde
2013-02-04 03:30:50 +00:00

206 lines
6.8 KiB
INI

// Cubescript Multidimensional Arrays
islists = [
bool = 0
loop i (listlen $arg1) [
if (> (listlen (at $arg1 $i)) 1) [
bool = 1; break
]
]
result $bool
]
countQuotes = [
numquotes = 0
loop q (strlen $arg1) [
if (testchar (substr $arg1 $q 1) 8) [
+= numquotes 1
]
]
result $numquotes
]
getQuotePosition = [
open_q = -1
loop h (strlen $arg1) [
if (testchar (substr $arg1 $h 1) 8) [
open_q = $h
break
]
]
]
reverseString = [
oldstr = $arg1
newstr = []
loop i (strlen $oldstr) [
newstr = (concatword $newstr (substr $oldstr (* (+ $i 1) -1) 1))
]
result $newstr
]
// returns the subarray name of a open bracket position in an existing mdarray
extractSubarrayName = [
open_bracket_pos = $arg2
subarray_name = []
loop d (strlen $arg1) [
tmpchar = (substr $arg1 (- $open_bracket_pos (+ $d 2)) 1)
if (testchar $tmpchar 7) break [
if (&& (! (strcmp $tmpchar "[")) (! (strcmp $tmpchar "]"))) [
subarray_name = (concatword $subarray_name $tmpchar)
]
]
]
result (reverseString $subarray_name)
]
// adds a new subarray to an existing mdarray
MDArray_New_Subarray = [
if (= (findlist (getalias $arg1) $arg2) -1) [
add2list $arg1 $arg2
if (islists $arg3) [
add2list $arg1 (addpunct (concatword [ ] $arg3 [ ]) 1)
] [
add2list $arg1 (addpunct (concatword [ ] (addpunct $arg3) [ ]) 1)
]
]
]
// finds the open and close bracket pair positions of a subarray in an existing mdarray
MDArray_Get_Bracket_Positions = [
open_bracket_pos = (+ (strpos $arg1 $arg2) (+ (strlen $arg2) 1))
close_bracket_pos = -1
loop i (- (strlen $arg1) $open_bracket_pos) [
next_char = (+ (+ $open_bracket_pos $i) 1)
if (strstr (substr $arg1 $next_char 1) "]") [
close_bracket_pos = $next_char
break
]
]
]
// returns either an entire subarray or a single element from a subarray of an existing mdarray
MDArray_Get = [
mdarray = (getalias $arg1)
target = (findlist $mdarray $arg2)
if (!= $target -1) [
MDArray_Get_Bracket_Positions $mdarray $arg2
if (!= $close_bracket_pos -1) [
+= open_bracket_pos 1 // skip the bracket itself when extracting the subarray with the line below
-= close_bracket_pos 1
subarray = (substr $mdarray $open_bracket_pos (- $close_bracket_pos $open_bracket_pos))
if (<= (countQuotes $subarray) 2) [ // quotes need to be trimmed from single-list subarrays
getQuotePosition $subarray
subarray = (substr $subarray (+ $open_q 1))
subarray = (substr $subarray 0 (- (strlen $subarray) 1))
]
if (= $arg3 -1) [
result $subarray
] [ result (at $subarray $arg3) ]
]
] [ echo (red)Error: $arg2 is not a subarray of $arg1 ]
]
// returns a list of all opening bracket "[" positions in an existing mdarray
MDArray_Get_All_Opening_Bracket_Positions = [
o_positions = []
loop i (strlen $arg1) [
if (strcmp (substr $arg1 $i 1) "[") [
add2list o_positions $i
]
]
if (listlen $o_positions) [
result $o_positions
] [ result -1 ]
]
// returns the number of subarrays in an existing mdarray
MDArray_Get_Subarray_Count = [
result (listlen (MDArray_Get_All_Opening_Bracket_Positions (getalias $arg1)))
]
// returns a list of all subarray names in an existing mdarray
MDArray_Get_All_Subarray_Names = [
opening_brackets = (MDArray_Get_All_Opening_Bracket_Positions (getalias $arg1))
subarray_names = []
loop r (listlen $opening_brackets) [
add2list subarray_names (extractSubarrayName (getalias $arg1) (at $opening_brackets $r))
]
result $subarray_names
]
// searches the contents of all subarrays in an existing mdarray for a keyword
// returns a list of all subarray names that have content with matches
MDArray_Search = [
mdarray = (getalias $arg1)
token = $arg2
subarrays = (MDArray_Get_All_Subarray_Names $arg1)
search_results = []
loop u (listlen $subarrays) [
curarray = (MDArray_Get $arg1 (at $subarrays $u) -1)
if (strstr $curarray $token) [
if (! (strstr $search_results (at $subarrays $u))) [
add2list search_results (at $subarrays $u)
]
]
]
result $search_results
]
// deletes an entire subarray from an existing mdarray
MDArray_Delete_Subarray = [
orig_array = (getalias $arg1)
target_subarray = $arg2
target_pos = (strpos $orig_array $target_subarray)
gotclose = -1
delstr = []
if (!= $target_pos -1) [
loop h (strlen $orig_array) [
if (< $h $target_pos) continue [
if (strcmp (substr $orig_array $h 1) "]") [ gotclose = $h; break ]
]
]
delstr = (substr $orig_array $target_pos (- (+ $gotclose 1) $target_pos))
$arg1 = (strreplace $orig_array $delstr [])
result (getalias $arg1)
]
]
// modifies an existing element in an existing subarray
MDArray_Modify_Subarray = [
original_subarray = (MDArray_Get $arg1 $arg2 -1)
target_elem = $arg3
new_elem = $arg4
new_subarray = []
if (<= (countQuotes $original_subarray) 2) [
original_subarray = (addpunct $original_subarray)
]
loop j (listlen $original_subarray) [
next_elem = (at $original_subarray $j)
if (= $j $target_elem) [
if (> (listlen $new_elem) 1) [
add2list new_subarray (addpunct $new_elem)
] [ add2list new_subarray $new_elem ]
] [
if (> (listlen $next_elem) 1) [
add2list new_subarray (addpunct $next_elem)
] [ add2list new_subarray $next_elem ]
]
]
MDArray_Delete_Subarray $arg1 $arg2
MDArray_New_Subarray $arg1 $arg2 $new_subarray
]
// adds a new element to an existing subarray
MDArray_Add_To_Subarray = [
mdarray = (getalias $arg1)
to_add = $arg3
if (!= (findlist $mdarray $arg2) -1) [
subarray = (MDArray_Get $arg1 $arg2 -1)
if (<= (countQuotes $subarray) 2) [ subarray = (addpunct $subarray) ]
if (<= (countQuotes $to_add) 2) [ to_add = (addpunct $to_add) ]
MDArray_Delete_Subarray $arg1 $arg2
MDArray_New_Subarray $arg1 $arg2 (format [%1 %2] $subarray $to_add)
]
]
// some of these aliases can cause issues if they get stored in saved.cfg (missing bracket errors/etc.)
addListOnQuit [bool MDArray_New_Subarray MDArray_Get_Bracket_Positions MDArray_Get reverseString MDArray_Get_All_Opening_Bracket_Positions MDArray_Get_Subarray_Count MDArray_Get_All_Subarray_Names extractSubarrayName MDArray_Search MDArray_Delete_Subarray MDArray_Modify_Subarray original_subarray target_elem new_elem new_subarray j next_elem islists hasQuotePair got_open_quote got_close_quote r i d mdarray subarray firstchar lastchar oldstr newstr subarray_names subarray_name tmpchar token subarrays search_results curarray orig_array target_subarray target_pos gotclose delstr h next_char]