I know it has been almost 2 months since last post, but I thought I would wrap this up, since I am still getting a few questions about it once in a while.
I haven't been developing on this for about a year. I have been wanting to have another go at it where I correct some of the mistakes I did with the compiler such as choice of parser, unit tests, overall architecture, and so on.
However, I find it hard to be motivated to put in the amount of hours a project on this scale demands, when I can go to work and get paid to do the same.
So yes. Galaxy++ is very much dead, and I don't expect any serious development will ever be done on it again.
I would suggest you look elsewhere for an editor, since this one is no longer supporting all the features of galaxy, and I can not guarantee that it produces valid code.
That said, I uploaded version 3.0.8 to the project page, and you can find the source code at https://code.google.com/p/galaxy-pp/ if you are interested.
I know there is a lot of code, and zero documentation, but hopefully the structure is atleast somewhat intutive. You could try poking me about problems, or if I missed something. I might be hard to reach the following couple of days though.
Right now, I have to update the list of functions manually, and then release it in a new version. I have been wanting to add a feature to do this at runtime, but it is not there yet.
@D1000: Go
1) Yes, it is supposed to do this - convert it to custom script, and paste it into the g++] editor.
2) Strange.. Works fine at my place :s
3) Yeah, the server died. It's back up.
I haven't worked on it for a long time. I am busy with a new job, another project, and some exams, but truth be told, part of it is probably also that it is not as interesting anymore as it used to be. I think it's time to make the project public. I'm not really sure how is the best way to go about that, but I will keep the server components and the actual server private. One of these days I will look at publicizing it. I don't think I will stop working on it, but if someone else has more time to fix bugs or add features, then they can look at it, and send the changes to me. Then I might decide to include them in an "official" version.
How do we use custom imported pictures in the Dialog Designer?
They should already be there, if you selected your map as the project map. If they aren't - could you restart the program and try again? Also, what format are they in?
Well, right now, you don't. The .Invoke() is also different from the InvokeSync, since InvokeSync calls the method in a new trigger (which resets limitations on the amount of stuff you can do).
Well.. for each switch case the test is basically switchVar == testExp. How can the other case be true without being the exact same thing as the first case? Or why would you want to identical cases?
The switch is not a bug. In the documentation it does say "Note that it is possible to fall through to the next case if one doesn't write break, like it is done from marine to zealot."
Well. when I started making the editor, there were no for loops. I'm not sure about +=, but I didn't think it was valid.. To be honest, I practically never program in pure galaxy.
Now, well - many times in my code I assume that the parent of a statement is a block, which wouldn't be true if I kept for sentences - so it would require a lot of rewriting. Also, some statements in galaxy++ is translated to multiple statements in galaxy, which would be impossible if the statement is in a for.
Yeah.. I see that the obfuscation feature is broken at the moment.. I really need to rewrite it completely, since it's implemented rather bad right now. Anyway, I fixed some of the bugs, and released a new version.
I got a couple of deadlines comming up for some school projects, which is why I haven't been very active the last couple of days.
@Slarti: Go
Hmm.. wouldn't really call it a bug. It's meant to overload binary operators, and it's not syntactically correct to write 2*3; Still, I might be able to relax that for custom operators.
@Kueken531: Go
Good point with the mod files.. Ill look into that when I have the time. Although, you will probably need to give the compiler the script explicitly, since, if I remember correctly, you can't get the .SC2Mod file from the dependencies.
Doesn't give me any errors.. Did you forget the * in the type?
In terms of output script, it doesn't really matter if you write
Foo*f=newFoo();
or
newFoo();
Although the latter is not possible. If f in the first one is not used, it will be removed when optimizing. To be honest, if I were to make the latter possible, I would probably just insert "Foo* f =" during compilation.
Indeed it was :)
I know it has been almost 2 months since last post, but I thought I would wrap this up, since I am still getting a few questions about it once in a while.
I haven't been developing on this for about a year. I have been wanting to have another go at it where I correct some of the mistakes I did with the compiler such as choice of parser, unit tests, overall architecture, and so on.
However, I find it hard to be motivated to put in the amount of hours a project on this scale demands, when I can go to work and get paid to do the same.
So yes. Galaxy
++
is very much dead, and I don't expect any serious development will ever be done on it again. I would suggest you look elsewhere for an editor, since this one is no longer supporting all the features of galaxy, and I can not guarantee that it produces valid code.That said, I uploaded version 3.0.8 to the project page, and you can find the source code at https://code.google.com/p/galaxy-pp/ if you are interested.
I now uploaded the code to http://code.google.com/p/galaxy-pp/
I know there is a lot of code, and zero documentation, but hopefully the structure is atleast somewhat intutive. You could try poking me about problems, or if I missed something. I might be hard to reach the following couple of days though.
Right now, I have to update the list of functions manually, and then release it in a new version. I have been wanting to add a feature to do this at runtime, but it is not there yet.
@D1000: Go
1) Yes, it is supposed to do this - convert it to custom script, and paste it into the g
++]
editor.2) Strange.. Works fine at my place :s
3) Yeah, the server died. It's back up.
I haven't worked on it for a long time. I am busy with a new job, another project, and some exams, but truth be told, part of it is probably also that it is not as interesting anymore as it used to be. I think it's time to make the project public. I'm not really sure how is the best way to go about that, but I will keep the server components and the actual server private. One of these days I will look at publicizing it. I don't think I will stop working on it, but if someone else has more time to fix bugs or add features, then they can look at it, and send the changes to me. Then I might decide to include them in an "official" version.
Hmm. can't find much info in this.. Any eta on these features?
Does structref<int> work? How about structref<int[2]>? Or myStructVar = myStructRefVar?
I assume the last one will result in bulk copy error since you still can't assign one struct to another.
@Kueken531: Go
Are you sure? I would like to see some code that has this behavior, since I can't seem to replicate it.
They should already be there, if you selected your map as the project map. If they aren't - could you restart the program and try again? Also, what format are they in?
Well, right now, you don't. The .Invoke() is also different from the InvokeSync, since InvokeSync calls the method in a new trigger (which resets limitations on the amount of stuff you can do).
What you can do is this
I might make this conversion implicit later, but right now, that would be how to do it.
Thanks for the bug reports. :)
@Kestudy: Go
I'm not sure what you mean about moving the screen on the right and left. I don't have any horizontal scrollbar or anything when I read it :s
Well.. for each switch case the test is basically switchVar == testExp. How can the other case be true without being the exact same thing as the first case? Or why would you want to identical cases?
It is working as intended as it is
The switch is not a bug. In the documentation it does say "Note that it is possible to fall through to the next case if one doesn't write break, like it is done from marine to zealot."
Well. when I started making the editor, there were no for loops. I'm not sure about +=, but I didn't think it was valid.. To be honest, I practically never program in pure galaxy.
Now, well - many times in my code I assume that the parent of a statement is a block, which wouldn't be true if I kept for sentences - so it would require a lot of rewriting. Also, some statements in galaxy
++
is translated to multiple statements in galaxy, which would be impossible if the statement is in a for.Yeah.. I see that the obfuscation feature is broken at the moment.. I really need to rewrite it completely, since it's implemented rather bad right now. Anyway, I fixed some of the bugs, and released a new version.
I got a couple of deadlines comming up for some school projects, which is why I haven't been very active the last couple of days.
@Slarti: Go Hmm.. wouldn't really call it a bug. It's meant to overload binary operators, and it's not syntactically correct to write 2*3; Still, I might be able to relax that for custom operators.
@Kueken531: Go Good point with the mod files.. Ill look into that when I have the time. Although, you will probably need to give the compiler the script explicitly, since, if I remember correctly, you can't get the .SC2Mod file from the dependencies.
Doesn't give me any errors.. Did you forget the * in the type?
In terms of output script, it doesn't really matter if you write
or
Although the latter is not possible. If f in the first one is not used, it will be removed when optimizing. To be honest, if I were to make the latter possible, I would probably just insert "Foo* f =" during compilation.
Hmm.. seems I for some reason commented the call to the code that fixes value refs :s Shame on me for only testing if my projects could compile