add more icons
|
@ -2,6 +2,12 @@
|
||||||
|
|
||||||
The easily moddable, programming minded, 2D-first game engine. The aim is to make the fastest way to make games.
|
The easily moddable, programming minded, 2D-first game engine. The aim is to make the fastest way to make games.
|
||||||
|
|
||||||
See the [documentation](doc/prosperon.org) for more information, including how to compile.
|
Using ...
|
||||||
|
* Sokol for rendering
|
||||||
|
* Chipmunk2D for physics
|
||||||
|
* imgui for easy editor UI
|
||||||
|
* Clay for game UI
|
||||||
|
|
||||||
|
Includes an implementation for Nota, and Kim.
|
||||||
|
|
||||||
*Prosperon is useful, but is a work in progress. Breaking changes are frequent.*
|
*Prosperon is useful, but is a work in progress. Breaking changes are frequent.*
|
||||||
|
|
BIN
icons/compass.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
icons/crossed-swords.png
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
icons/dice.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
icons/heart.png
Normal file
After Width: | Height: | Size: 5.1 KiB |
BIN
icons/random.png
Normal file
After Width: | Height: | Size: 9.2 KiB |
BIN
icons/scorpion.png
Normal file
After Width: | Height: | Size: 9.5 KiB |
BIN
icons/snail.png
Normal file
After Width: | Height: | Size: 9.6 KiB |
BIN
icons/snake.png
Normal file
After Width: | Height: | Size: 9 KiB |
BIN
icons/trade.png
Normal file
After Width: | Height: | Size: 7.1 KiB |
|
@ -1080,7 +1080,9 @@ Object.defineProperty(Array.prototype, 'empty', {
|
||||||
|
|
||||||
Object.defineProperty(Array.prototype, 'push_unique', {
|
Object.defineProperty(Array.prototype, 'push_unique', {
|
||||||
value: function(x) {
|
value: function(x) {
|
||||||
if (!this.includes(x)) this.push(x);
|
var inc = !this.includes(x);
|
||||||
|
if (inc) this.push(x);
|
||||||
|
return inc;
|
||||||
}});
|
}});
|
||||||
|
|
||||||
Object.defineProperty(Array.prototype, 'unique', {
|
Object.defineProperty(Array.prototype, 'unique', {
|
||||||
|
|
|
@ -81,16 +81,30 @@ JSC_SCALL(imgui_lineplot,
|
||||||
|
|
||||||
JSC_SSCALL(imgui_textinput,
|
JSC_SSCALL(imgui_textinput,
|
||||||
char buffer[512];
|
char buffer[512];
|
||||||
|
if (JS_IsUndefined(argv[1]))
|
||||||
|
buffer[0] = 0;
|
||||||
|
else
|
||||||
strncpy(buffer, str2, 512);
|
strncpy(buffer, str2, 512);
|
||||||
|
|
||||||
ImGui::InputText(str, buffer, sizeof(buffer));
|
ImGui::InputText(str, buffer, sizeof(buffer));
|
||||||
|
if (strcmp(buffer, str2))
|
||||||
ret = str2js(buffer);
|
ret = str2js(buffer);
|
||||||
|
else
|
||||||
|
ret = JS_DupValue(js,argv[1]);
|
||||||
)
|
)
|
||||||
|
|
||||||
JSC_SSCALL(imgui_textbox,
|
JSC_SSCALL(imgui_textbox,
|
||||||
char buffer[512];
|
char buffer[512];
|
||||||
|
if (JS_IsUndefined(argv[1]))
|
||||||
|
buffer[0] = 0;
|
||||||
|
else
|
||||||
strncpy(buffer, str2, 512);
|
strncpy(buffer, str2, 512);
|
||||||
|
|
||||||
ImGui::InputTextMultiline(str, buffer, sizeof(buffer));
|
ImGui::InputTextMultiline(str, buffer, sizeof(buffer));
|
||||||
|
if (strcmp(buffer, str2))
|
||||||
ret = str2js(buffer);
|
ret = str2js(buffer);
|
||||||
|
else
|
||||||
|
ret = JS_DupValue(js,argv[1]);
|
||||||
)
|
)
|
||||||
|
|
||||||
JSC_SCALL(imgui_text, ImGui::Text(str) )
|
JSC_SCALL(imgui_text, ImGui::Text(str) )
|
||||||
|
@ -145,6 +159,41 @@ JSC_SCALL(imgui_slider,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
JSC_SCALL(imgui_intslider,
|
||||||
|
int low = JS_IsUndefined(argv[2]) ? 0.0 : js2number(argv[2]);
|
||||||
|
int high = JS_IsUndefined(argv[3]) ? 1.0 : js2number(argv[3]);
|
||||||
|
|
||||||
|
if (JS_IsArray(js, argv[1])) {
|
||||||
|
int n = js_arrlen(argv[1]);
|
||||||
|
float a[n];
|
||||||
|
js2floatarr(argv[1], n, a);
|
||||||
|
int b[n];
|
||||||
|
for (int i = 0; i < n; i++)
|
||||||
|
b[i] = a[i];
|
||||||
|
|
||||||
|
switch(n) {
|
||||||
|
case 2:
|
||||||
|
ImGui::SliderInt2(str, b, low, high);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
ImGui::SliderInt3(str, b, low, high);
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
ImGui::SliderInt3(str, b, low, high);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < n; i++)
|
||||||
|
a[i] = b[i];
|
||||||
|
|
||||||
|
ret = floatarr2js(n, a);
|
||||||
|
} else {
|
||||||
|
int val = js2number(argv[1]);
|
||||||
|
ImGui::SliderInt(str, &val, low, high);
|
||||||
|
ret = number2js(val);
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
JSC_SCALL(imgui_checkbox,
|
JSC_SCALL(imgui_checkbox,
|
||||||
bool val = js2boolean(argv[1]);
|
bool val = js2boolean(argv[1]);
|
||||||
ImGui::Checkbox(str, &val);
|
ImGui::Checkbox(str, &val);
|
||||||
|
@ -537,6 +586,7 @@ static const JSCFunctionListEntry js_imgui_funcs[] = {
|
||||||
MIST_FUNC_DEF(imgui, pushid, 1),
|
MIST_FUNC_DEF(imgui, pushid, 1),
|
||||||
MIST_FUNC_DEF(imgui, popid, 0),
|
MIST_FUNC_DEF(imgui, popid, 0),
|
||||||
MIST_FUNC_DEF(imgui, slider, 4),
|
MIST_FUNC_DEF(imgui, slider, 4),
|
||||||
|
MIST_FUNC_DEF(imgui, intslider, 4),
|
||||||
MIST_FUNC_DEF(imgui, menubar, 1),
|
MIST_FUNC_DEF(imgui, menubar, 1),
|
||||||
MIST_FUNC_DEF(imgui, mainmenubar, 1),
|
MIST_FUNC_DEF(imgui, mainmenubar, 1),
|
||||||
MIST_FUNC_DEF(imgui, menuitem, 3),
|
MIST_FUNC_DEF(imgui, menuitem, 3),
|
||||||
|
|