How do I...efficiently call up text on the fly?

Get help using Construct 2

Post » Wed Apr 24, 2013 1:25 am

So, I am in the process of prototyping a skill tree and am running into a few issues. I have telling myself "There has GOT to be a better way" quite a bit. So, here's what I am doing:

The left side of the layout is a pane that contains a WoW/Diablo II style skill tree with a number of colorful icons that can be clicked on. On the right side is a pane that is intended to give statistical information once you click on a power.

Here is how things are set up now:

-Currently, I have a 2 dimensional array. In each row is the power name and relevant information all of this is set at beginning of layout. This means for each attribute of a power, I have to create an event to add it to the array. This is a colossal pain in the butt.

-The right pane has a number of text boxes that call text from the array depending on the power icon, that is clicked, in the left pane.

Is there a better way to store and more easily re-call data? Is there a way where a simple xml or text call can store this information and another object can easily recall it?

Thanks!
B
8
Posts: 22
Reputation: 944

Post » Wed Apr 24, 2013 11:23 am

Here are few ideas. I am assuming that arrays first column holds the 'name' and second column holds some stuff that you want to appear on mouse over or whatever.

for 0 to array.height
.. create text at 100, 100+100*loopIndex // these could be icons or whatever, you could set icons frame/animation based on array value
.. set text to array.at(0, loopIndex)
.. set text.Index to loopIndex // an instance variable that defines which row of the array this text represents

This would automagically create a text box for each of your array values.

on mouse over text
.. set mouseOverText to array.at(text.Index, 1)

This would display a mouse over info from the array when you mouse over a related text object.

Edit: Quick examplevee412013-04-24 11:34:24
B
24
S
8
G
7
Posts: 756
Reputation: 7,202

Post » Wed Apr 24, 2013 5:13 pm

First off, thank you very much for replying! Secondly: My array looks something like this:

-The first row contains several columns. The first is name and the second through 13th provide further statistical data. Damage, Range, Keywords, etc.
-The second row would contain a second power and its details.

[quote]for 0 to array.height
.. create text at 100, 100+100*loopIndex // these could be icons or whatever, you could set icons frame/animation based on array value
.. set text to array.at(0, loopIndex)
.. set text.Index to loopIndex // an instance variable that defines which row of the array this text represents[/quote]

At risk of revealing that I am a noob, I am going to have to ask... what is loopindex? I am just getting into arrays. So, I don't entirely follow what you're suggesting. I've looked at the sample project you sent and I understand only the first event. The second and third, I think I get... but the Loopindex part is confusing me.

Again, thanks so much for responding. Double thanks for posting your example.
B
8
Posts: 22
Reputation: 944

Post » Wed Apr 24, 2013 5:36 pm

loopIndex would be the current 'round' of loop. So if we for example have a for loop that repeats 5 times it would work like this:

for 1 to 5
.. append loopIndex to text

Text would read: 12345 after the for loop would have finished running, adding a number each 'round' the loop does.

What this allows us to do with arrays, we can for example go through each row with loopIndex. So the same for loop with array could work something like this:

for 1 to 5
.. append array.at(loopIndex) to text

After the loop text would read whatever was contained in array values 1 through 5. I'll try to expand on that example a bit tomorrow if I got time, to make it easier to understand. :)

In your case, you could just add rows 2-13 to the part where text is displayed (the on click event). I'll expand the example with this when I got some more time :)
B
24
S
8
G
7
Posts: 756
Reputation: 7,202

Post » Wed Apr 24, 2013 5:45 pm

Boom! Knowledge. Thank you for that. I would appreciate further examples, they're tremendously helpful. In the meantime I will try to implement what I've learned here.

Another question:

Is there an easier way to populate data into an array (or other data storage object)? Can an array or some other data storage object call data from a text or .csv file line by line?

Regards,
Phil Z
B
8
Posts: 22
Reputation: 944

Post » Wed Apr 24, 2013 6:36 pm

I expanded the example a bit, added comments and few extra columns.

Yes, there is easier way to import large data sets: check out tutorials about importing data in XML or JSON format :)
B
24
S
8
G
7
Posts: 756
Reputation: 7,202

Post » Wed Apr 24, 2013 9:03 pm

That improved example helps a great deal. Thank you! I haven't been able to find a tutorial that explains how to call data from XML or JSON. I did manage to find a tutorial that explains how to add such files to the project file though. So, I suppose that's a start.

Do you know of a tutorial that can help load data from an XML file and toss that into an array or something that can be easy referenced and manipulated?
B
8
Posts: 22
Reputation: 944

Post » Fri May 03, 2013 5:16 am

I'm still pretty stumped and have started two other threads. One to focus on finding a solution with XML and another for JSON. Neither have yielded fruit unfortunately. So, I could really use some help if someone has time.

If someone could provide an example of how to call up a specific string of data in an XML file or JSON file that would be amazing. Here's been my flow so far...

1) Create XLS file with a simple spreadsheet.
2) Use this site to convert it into XML, JSON, whatever...
3) Plug this new file into Construct 2 as a project file.

Here's where I currently am with my project.

I am happy to swap the data from JSON to XML. That's not a problem. I'd just like to call up specific pieces of data. Like the first string with a specific tag. If anyone could give me an example of how to do this I would be eternally grateful.

Regards,
Phil
B
8
Posts: 22
Reputation: 944


Return to How do I....?

Who is online

Users browsing this forum: Unconnected and 29 guests