As groups and objects are stored in the same array, we need to identify which is which. Groups will be identified with a field called isGroup in the MainObjectType UDT.
type MainObjectType name$ icon isKnown isGroup endtypeAs always, we provide a return function.
function ObjectIsGroup( thisObject ) if ObjectValid( thisObject ) thisBool = MainObject [ thisObject ].isGroup else thisBool = -1 endif endfunction thisBoolThe code for this is almost identical to the ObjectIsKnown() function, which can be duplicated and only the function name and array field need to be changed.
We can identify groups without needing to change the data too much, by simply making the icon number for groups a negative value in standard.txt, which now looks like this.
tool,-1 resource,-2 device,-3 job,-4 process,-5 storage,-6 tree,7 stone,8 stone axe,9 log,10 kindling,11 spark,12 flame,13 fire,14Now when the value is transferred to the Object array, in the line.
MainObject[ i ].icon = val( thisString$ )We use the abs() command to get the absolute, or positive version of the value.
thisValue = val( thisString$ ) MainObject[ i ].icon = abs( thisValue )This has been split into two parts to simplify the code and prepare for the next step, which is a check to see if the value is negative.
if thisValue < 0 MainObject[ i ].isGroup = 1 else MainObject[ i ].isGroup = 0 endifThis goes immediately after the isKnown field is set and before the endif.
To test this works, we modify the test code. Changing the print in the line.
print( str(i) + " : " + ObjectName( i ) + " : " + str( ObjectIcon( i) ) )To printc, and adding the following lines immediately after.
print( " - Group: " + str( ObjectIsGroup( i ) ) )Which now shows which objects are groups with a 1 at the end of the line.
The icon values stored in the array are unchanged.
Now the line just added is replaced with the following lines.
if ObjectIsGroup( i ) > 0 print( ", Group: ") else print( ", " + chr(34) + "" + chr( 34 )) endifWhich sets us up for the next step - adding descriptions for the objects.
Which will appear inside those quotes.
No comments:
Post a Comment