diff --git a/command.c b/command.c index 1c7b413..899fea6 100644 --- a/command.c +++ b/command.c @@ -397,7 +397,7 @@ void cmdSpawn(char *arg) { lua_pushnumber(state.lua, state.particleCount); lua_setglobal(state.lua, "spawnparticles"); - scriptFile = va("scripts/%s.lua", scriptName); + scriptFile = va("spawn/%s.gravitspawn", scriptName); luaExecute(scriptFile); lua_getglobal(state.lua, "spawn"); @@ -806,10 +806,12 @@ void cmdFontFile(char *arg) { void cmdRunScript(char *arg) { char *sz; + char *opt; sz = strtok(arg, " "); - if (!sz) - return; - configRead(sz); + if (!sz) return; + opt = strtok(NULL, " "); + configRead(sz, (opt && !strcmp(opt, "ignoremissing"))); + printf("TODO\n"); } diff --git a/config.c b/config.c index c35441f..fa6dced 100644 --- a/config.c +++ b/config.c @@ -21,7 +21,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #include "gravit.h" -int configRead(char *filename) { +int configRead(char *filename, int ignoreMissing) { FILE *fp; char buffer[FILE_CHUNK_SIZE_SMALL]; @@ -29,6 +29,7 @@ int configRead(char *filename) { fp = fopen(filename, "rb"); if (!fp) { + if (ignoreMissing) return 1; conAdd(LERR, "Could not open script: %s", filename); return 0; diff --git a/gravit.cfg b/gravit.cfg index 39a8e0e..a89c7f6 100644 --- a/gravit.cfg +++ b/gravit.cfg @@ -47,7 +47,7 @@ videoantialiasing 1 # The value is how often you want your video to update in milliseconds. # Setting this value too low will lower the performance of your recording # Increasing it will improve rendering and spawning times -recordingvideorefreshtime 50 +recordingvideorefreshtime 100 # Font Settings (doesn't work while Gravit is running) # Feel free to use any font you want! @@ -88,29 +88,10 @@ colourschemeadd 1.0 1.0 1.0 1.0 # Number of particles to spawn # particlecount 1000 # -# Number of galaxies to spawn -# spawngalcountmin 2 -# spawngalcountmax 10 -# -# Possible mass for each particle, each galaxy will pick a range from these values -# spawngalmassmin 0 -# spawngalmassmax 500 -# -# Possible Range of galaxy radius -# spawngalsizemin 0 -# spawngalsizemax 500 -# -# Minimum and maximum initial velocity for a galaxy -# spawngalvelmin 0 -# spawngalvelmax 50 -# -# Possible area where galaxies can spawn -# spawnrangemin 0 -# spawnrangemax 10000 - # Example # Uncomment the following line to make Gravit start recording automatically with nice looking settings # exec demo.cfg # Custom Script -exec custom.cfg +exec custom.cfg ignoremissin + diff --git a/gravit.h b/gravit.h index 0b2dfe8..a813381 100644 --- a/gravit.h +++ b/gravit.h @@ -627,7 +627,7 @@ extern float fpsCurrentAverageFT; void fpsInit(); void fpsUpdate(float); -int configRead(char *filename); +int configRead(char *filename, int ignoreMissing); void drawCube(); diff --git a/main.c b/main.c index f3fcee9..97ee9d8 100644 --- a/main.c +++ b/main.c @@ -392,42 +392,6 @@ int commandLineRead(int argc, char *argv[]) { #define CheckCommand(x) !strncmp(argv[i], x, strlen(x)) -/* - - GetValue() is good for: - - --exec value - --exec=value - -*/ - -#define GetValue() \ - if (strlen(parm) == strlen(argv[i])) \ - argvptr = argv[++i]; \ - else \ - argvptr = argv[i] + strlen(parm); \ - while (argvptr[0] == ' ' || argvptr[0] == '=' || argvptr[0] == 0) argvptr++; - -/* - - example of checkCommandAndGetValue(x) - - CheckCommandAndGetValue("--execute") - cmdExecute(argvptr); - } - - because it's like this when it expands: - - parm = "--execute"; - if (CheckCommand(parm)) { - GetValue(); - cmdExecute(argvptr); - } - -*/ - -#define CheckCommandAndGetValue(x) parm = x; if (CheckCommand(parm)) { GetValue(); - for (i = 1; i < argc; i++) { // version, quit @@ -446,16 +410,6 @@ int commandLineRead(int argc, char *argv[]) { } - // -e or --exec - // runs a command - if (CheckCommand("--exec") || CheckCommand("-e")) { - conAdd(LLOW, "Sorry, --exec has been removed -- just add your commands to the command line as they are"); - conAdd(LLOW, " eg. gravit exec \"\" "); - cmdQuit(0); - return 0; - continue; - } - // -n or --noscript if (CheckCommand("--noscript") || CheckCommand("-n")) { state.dontExecuteDefaultScript = 1; diff --git a/scripts/binary-galaxy.gravitspawn b/spawn/binary-galaxy.gravitspawn similarity index 100% rename from scripts/binary-galaxy.gravitspawn rename to spawn/binary-galaxy.gravitspawn diff --git a/spawn/binary-galaxy.lua b/spawn/binary-galaxy.lua new file mode 100644 index 0000000..c762d00 --- /dev/null +++ b/spawn/binary-galaxy.lua @@ -0,0 +1,18 @@ + +require("scripts/functions.lua") + +function spawn() + + dist = randomfloat(1,3) * spawnparticles + vel = randomfloat(20,50) + mass1min = randomfloat(500,1000) + mass1max = randomfloat(500,1000) + mass2min = randomfloat(500,1000) + mass2max = randomfloat(500,1000) + ballsize1 = randomfloat(500,1000) + ballsize2 = randomfloat(500,1000) + + makeball(v(0,dist,0), v(-vel,0,0), ballsize1, 0, spawnparticles/2, mass1min, mass1max) + makeball(v(0,-dist,0), v(vel,0,0), ballsize2, spawnparticles/2, spawnparticles/2, mass2min, mass2max) + +end diff --git a/scripts/default.gravitspawn b/spawn/default.gravitspawn similarity index 100% rename from scripts/default.gravitspawn rename to spawn/default.gravitspawn diff --git a/spawn/default.lua b/spawn/default.lua new file mode 100644 index 0000000..98d7ec9 --- /dev/null +++ b/spawn/default.lua @@ -0,0 +1,8 @@ + +scripts = { "one-galaxy", "binary-galaxy", "many-galaxy", "snake", "loops" } +n = table.getn(scripts) +r = math.random(1,n) +log("Spawining " .. scripts[r]) +spawn = nil +require ("scripts/" .. scripts[r] .. ".lua") + diff --git a/scripts/dust.gravitspawn b/spawn/dust.gravitspawn similarity index 100% rename from scripts/dust.gravitspawn rename to spawn/dust.gravitspawn diff --git a/scripts/functions.lua b/spawn/functions.lua similarity index 100% rename from scripts/functions.lua rename to spawn/functions.lua diff --git a/scripts/loops.gravitspawn b/spawn/loops.gravitspawn similarity index 100% rename from scripts/loops.gravitspawn rename to spawn/loops.gravitspawn diff --git a/spawn/loops.lua b/spawn/loops.lua new file mode 100644 index 0000000..f732759 --- /dev/null +++ b/spawn/loops.lua @@ -0,0 +1,61 @@ + +require("scripts/functions.lua") + +function spawn() + + curveness1 = randomfloat(0, 0.1) + curveness2 = randomfloat(0, 0.1) + + curvechangelimit = 0.0001 + + if (randomint(0,4) == 0) then + curvechange1 = randomfloat(-curvechangelimit,curvechangelimit) + else + curvechange1 = 0 + end + + if (randomint(0,4) == 0) then + curvechange2 = randomfloat(-curvechangelimit,curvechangelimit) + else + curvechange2 = 0 + end + + speed = randomfloat(0,5) + if (randomint(0,1) == 0) then + massincrement = randomfloat(-0.01,0.01) + else + massincrement = 0 + end + + massrandom = randomfloat(0,100) + distance = randomfloat(0.1, 5) + + pos = v(0,0,0) + vel = v(0,0,0) + ang1 = 0 + ang2 = 0 + + for i=0,spawnparticles-1 do + + pos.x = pos.x + math.cos(ang1) * distance + pos.y = pos.y + math.sin(ang1) * distance + pos.y = pos.y + math.cos(ang2) * distance + pos.z = pos.z + math.sin(ang2) * distance + + vel.x = math.cos(ang1) * speed + vel.y = math.sin(ang1) * speed + vel.y = math.cos(ang2) * speed + vel.z = math.sin(ang2) * speed + + ang1 = ang1 + curveness1 + ang2 = ang2 + curveness2 + + curveness1 = curveness1 + curvechange1 + curveness2 = curveness2 + curvechange2 + + particle(i, pos, vel, randomfloat(0,massrandom) + massincrement * i) + + end + +end + diff --git a/scripts/many-galaxy.gravitspawn b/spawn/many-galaxy.gravitspawn similarity index 100% rename from scripts/many-galaxy.gravitspawn rename to spawn/many-galaxy.gravitspawn diff --git a/spawn/many-galaxy.lua b/spawn/many-galaxy.lua new file mode 100644 index 0000000..ab23013 --- /dev/null +++ b/spawn/many-galaxy.lua @@ -0,0 +1,11 @@ +require("scripts/functions.lua") + +function spawn() + -- work out a number of galaxies based on spawnparticles + galaxysize = randomint(10,1000) + galaxies = math.floor(spawnparticles / galaxysize) + 1 + for i=0,galaxies-1 do + makeball(randomrange(galaxies * 2000), randomrange(50), randomfloat(1, 1000), spawnparticles/galaxies*i, spawnparticles/(galaxies), randomfloat(0,1000), randomfloat(0,1000)) + end +end + diff --git a/scripts/one-galaxy.gravitspawn b/spawn/one-galaxy.gravitspawn similarity index 100% rename from scripts/one-galaxy.gravitspawn rename to spawn/one-galaxy.gravitspawn diff --git a/spawn/one-galaxy.lua b/spawn/one-galaxy.lua new file mode 100644 index 0000000..fb0a7f9 --- /dev/null +++ b/spawn/one-galaxy.lua @@ -0,0 +1,20 @@ +require("scripts/functions.lua") + +function spawn() + particlemassmin = randomfloat(1,1000) + particlemassmax = randomfloat(1,1000) + estmass = (particlemassmin + particlemassmax) / 2 * spawnparticles + galaxyradius = randomfloat(10,1000) + speedbase = randomfloat(0,.0001) + speedbase = .0000001 + for i=0,spawnparticles-1 do + radius = randomfloat(0,galaxyradius) + speed = speedbase * radius * math.sqrt(estmass) + angle = randomfloat(0,2*math.pi) + pos = v(math.cos(angle)*radius, math.sin(angle)*radius, randomfloat(-1,1)) + vel = v(math.cos(angle+math.pi/2)*speed*radius, math.sin(angle+math.pi/2)*speed*radius, 0) + mass = randomfloat(particlemassmin,particlemassmax) + particle(i, pos, vel, mass) + end +end + diff --git a/scripts/snake.gravitspawn b/spawn/snake.gravitspawn similarity index 100% rename from scripts/snake.gravitspawn rename to spawn/snake.gravitspawn diff --git a/spawn/snake.lua b/spawn/snake.lua new file mode 100644 index 0000000..cbcdcbb --- /dev/null +++ b/spawn/snake.lua @@ -0,0 +1,41 @@ + +require("scripts/functions.lua") + +function spawn() + + curveness = randomfloat(0, 0.5) + speed = randomfloat(0,1) + if (randomint(0,1) == 0) then + massincrement = randomfloat(-0.01,0.01) + else + massincrement = 0 + end + + massrandom = randomfloat(0,100) + + pos = v(0,0,0) + vel = v(0,0,0) + ang1 = 0 + ang2 = 0 + + for i=0,spawnparticles-1 do + + pos.x = pos.x + math.cos(ang1) + pos.y = pos.y + math.sin(ang1) + pos.y = pos.y + math.cos(ang2) + pos.z = pos.z + math.sin(ang2) + + vel.x = math.cos(ang1) * speed + vel.y = math.sin(ang1) * speed + vel.y = math.cos(ang2) * speed + vel.z = math.sin(ang2) * speed + + ang1 = ang1 + randomfloat(-curveness,curveness) + ang2 = ang2 + randomfloat(-curveness,curveness) + + particle(i, pos, vel, randomfloat(0,massrandom) + massincrement * i) + + end + +end +