~rabbits/orca-toy

212449c55184441babf8e69cd4363b9376eb8cd2 — neauoire 2 years ago e3d5a50
Minor cleanup
2 files changed, 22 insertions(+), 26 deletions(-)

M README.md
M toy.c
M README.md => README.md +1 -0
@@ 39,5 39,6 @@ To display the list of operators inside of Orca, use `CmdOrCtrl+G`.

## TODOs

- Default values
- Lowercase on bang
- Special operators

M toy.c => toy.c +21 -26
@@ 125,8 125,8 @@ opc(Grid *g, int x, int y)
{
	char rate = get(g, x - 1, y);
	char mod = get(g, x + 1, y);
	setlock(g, x, y + 1, cchr(g->f / rate % mod, ciuc(mod)));
	lock(g, x, y + 1);
	setlock(g, x, y + 1, cchr(g->f / rate % mod, ciuc(mod)));
}

void


@@ 134,15 134,15 @@ opd(Grid *g, int x, int y)
{
	char rate = get(g, x - 1, y);
	char mod = get(g, x + 1, y);
	setlock(g, x, y + 1, g->f % (rate * mod) == 0 ? '*' : '.');
	lock(g, x + 1, y);
	setlock(g, x, y + 1, g->f % (rate * mod) == 0 ? '*' : '.');
}

void
ope(Grid *g, int x, int y)
{
	if(x == g->w || get(g, x + 1, y) != '.')
		set(g, x, y, '*');
		setlock(g, x, y, '*');
	else {
		set(g, x, y, '.');
		setlock(g, x + 1, y, 'E');


@@ 152,8 152,8 @@ ope(Grid *g, int x, int y)
void
opf(Grid *g, int x, int y)
{
	setlock(g, x, y + 1, get(g, x - 1, y) == get(g, x + 1, y) ? '*' : '.');
	lock(g, x + 1, y);
	setlock(g, x, y + 1, get(g, x - 1, y) == get(g, x + 1, y) ? '*' : '.');
}

void


@@ 161,8 161,7 @@ opg(Grid *g, int x, int y)
{
	int tx = cint(get(g, x - 3, y));
	int ty = cint(get(g, x - 2, y));
	int len = cint(get(g, x - 1, y));
	int i;
	int i, len = cint(get(g, x - 1, y));
	for(i = 0; i < len; ++i)
		setlock(g, x + i + tx, y + 1 + ty, get(g, x + 1 + i, y));
}


@@ 191,8 190,7 @@ opj(Grid *g, int x, int y)
void
opk(Grid *g, int x, int y)
{
	int len = cint(get(g, x - 1, y));
	int i;
	int i, len = cint(get(g, x - 1, y));
	for(i = 0; i < len; ++i) {
		char key = get(g, x + 1 + i, y);
		if(key == '.')


@@ 206,8 204,8 @@ opl(Grid *g, int x, int y)
{
	char a = get(g, x - 1, y);
	char b = get(g, x + 1, y);
	setlock(g, x, y + 1, cint(a) < cint(b) ? a : b);
	lock(g, x + 1, y);
	setlock(g, x, y + 1, cint(a) < cint(b) ? a : b);
}

void


@@ 215,15 213,15 @@ opm(Grid *g, int x, int y)
{
	char a = get(g, x - 1, y);
	char b = get(g, x + 1, y);
	setlock(g, x, y + 1, cchr(cint(a) * cint(b), ciuc(b)));
	lock(g, x + 1, y);
	setlock(g, x, y + 1, cchr(cint(a) * cint(b), ciuc(b)));
}

void
opn(Grid *g, int x, int y)
{
	if(y == 0 || get(g, x, y - 1) != '.')
		set(g, x, y, '*');
		setlock(g, x, y, '*');
	else {
		set(g, x, y, '.');
		setlock(g, x, y - 1, 'N');


@@ 235,16 233,15 @@ opo(Grid *g, int x, int y)
{
	int tx = cint(get(g, x - 2, y));
	int ty = cint(get(g, x - 1, y));
	set(g, x, y + 1, get(g, x + 1 + tx, y + ty));
	lock(g, x + 1 + tx, y + ty);
	set(g, x, y + 1, get(g, x + 1 + tx, y + ty));
}

void
opp(Grid *g, int x, int y)
{
	int key = cint(get(g, x - 2, y));
	int len = cint(get(g, x - 1, y));
	int i;
	int i, len = cint(get(g, x - 1, y));
	for(i = 0; i < len; ++i)
		lock(g, x + i, y + 1);
	set(g, x + (key % len), y + 1, get(g, x + 1, y));


@@ 255,11 252,9 @@ opq(Grid *g, int x, int y)
{
	int tx = cint(get(g, x - 3, y));
	int ty = cint(get(g, x - 2, y));
	int len = cint(get(g, x - 1, y));
	int i;
	for(i = 0; i < len; ++i) {
	int i, len = cint(get(g, x - 1, y));
	for(i = 0; i < len; ++i) 
		setlock(g, x + 1 - len + i, y + 1, get(g, x + 1 + tx + i, y + ty));
	}
}

void


@@ 267,6 262,7 @@ opr(Grid *g, int x, int y)
{
	int min = cint(get(g, x - 1, y));
	char max = get(g, x + 1, y);
	lock(g, x + 1, y);
	setlock(g, x, y + 1, cchr((rand(g) % (cint(max) - min)) + min, ciuc(max)));
}



@@ 274,7 270,7 @@ void
ops(Grid *g, int x, int y)
{
	if(y == g->h || get(g, x, y + 1) != '.')
		set(g, x, y, '*');
		setlock(g, x, y, '*');
	else {
		set(g, x, y, '.');
		setlock(g, x, y + 1, 'S');


@@ 285,8 281,7 @@ void
opt(Grid *g, int x, int y)
{
	int key = cint(get(g, x - 2, y));
	int len = cint(get(g, x - 1, y));
	int i;
	int i, len = cint(get(g, x - 1, y));
	for(i = 0; i < len; ++i)
		lock(g, x + 1 + i, y);
	setlock(g, x, y + 1, get(g, x + 1 + (key % len), y));


@@ 298,8 293,8 @@ opu(Grid *g, int x, int y)
	int max = cint(get(g, x - 1, y));
	int step = cint(get(g, x + 1, y));
	int bucket = (step * (g->f + max - 1)) % max + step;
	setlock(g, x, y + 1, bucket >= max ? '*' : '.');
	lock(g, x + 1, y);
	setlock(g, x, y + 1, bucket >= max ? '*' : '.');
}

void


@@ 307,18 302,18 @@ opv(Grid *g, int x, int y)
{
	char w = get(g, x - 1, y);
	char r = get(g, x + 1, y);
	lock(g, x + 1, y);
	if(w != '.')
		save(g, w, r);
	else if(w == '.' && r != '.')
		setlock(g, x, y + 1, load(g, r));
	lock(g, x + 1, y);
}

void
opw(Grid *g, int x, int y)
{
	if(x == 0 || get(g, x - 1, y) != '.')
		set(g, x, y, '*');
		setlock(g, x, y, '*');
	else {
		set(g, x, y, '.');
		setlock(g, x - 1, y, 'W');


@@ 330,8 325,8 @@ opx(Grid *g, int x, int y)
{
	int tx = cint(get(g, x - 2, y));
	int ty = cint(get(g, x - 1, y));
	setlock(g, x + tx, y + ty + 1, get(g, x + 1, y));
	lock(g, x + 1, y);
	setlock(g, x + tx, y + ty + 1, get(g, x + 1, y));
}

void


@@ 348,8 343,8 @@ opz(Grid *g, int x, int y)
	char val = cint(get(g, x, y + 1));
	int t = cint(target);
	int mod = val < t ? rate : val > t ? -rate : 0;
	setlock(g, x, y + 1, cchr(val + mod, ciuc(target)));
	lock(g, x + 1, y);
	setlock(g, x, y + 1, cchr(val + mod, ciuc(target)));
}

/* clang-format off */