Twine Version: 2.3.14
Story Format: Sugarcube 2.34.1
I’ve been developing a tile-based worldmap using HTML and CSS. The map itself is a table, with each tile being a data point. Using a for loop, each time a data point is generated, the iteration of the for loop (_i) checks a global array variable called $tileContents, which returns a value. This value is then sent through a series of IF statements, which then determine what CSS class that value is referring to.
For instance, say it’s the third run of my for loop; this means I’m working on my third tile on the map. To get the contents/CSS class of this tile, I check in the third index of the $tileContents array. Say it returns a 1; this value then goes through a series of IF statements. A 0 would mean it’s an empty tile, a 1 means it’s a wall, a 2 means it’s a player, etc. In this case, tile 3, with a tile ID of 1, would be a wall, so it generates
The same IF statement is ran for every row in the table, meaning if I had a map that was 10 by 10, I’d have 10 sets of the same IF statements checking tile IDs–one set for each row. I was hoping to change this to instead be a function or something like that (intuition from when I took a high school compsci class). I figured the best way to do this was to just
<include> a passage with all the code in it, that way each time the for loop runs, it’d inject all the IF statements in right there.
I managed to get this partially working (read: no error messages) by globalizing _i and a few other variables, but then realized that I had to move my
<td> out of the ‘function’ passage and back into the passage with the
<table> in it if I wanted anything to actually generate. This meant that, instead of running an IF statement that generates a
<td> with a preset class, I’d instead have to make the IF statement change a “tileContents” variable, and then set the external
<td>'s class using that string variable.
I was hoping that it’d be as simple as