Twine Version: 2.3.14
Story Format: Sugarcube 2.34.1
Good afternoon!
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 <td class="wall"></td>
.
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 <td class=$tileContents></td>
, but that doesn’t seem to be the case. I’m hoping there’s an easy solution to this, since I’m really not the best at coding, especially in JavaScript lol