mirror of https://git.sr.ht/~rabbits/porporo
Setvv() expects id
This commit is contained in:
parent
abc91d6412
commit
ab34b64a6d
|
@ -30,7 +30,7 @@ enum Action {
|
||||||
};
|
};
|
||||||
enum Action action;
|
enum Action action;
|
||||||
|
|
||||||
static Uint8 *ram, plen;
|
static Uint8 *ram, olen;
|
||||||
static Uint32 *pixels, theme[] = {0xffb545, 0x72DEC2, 0x000000, 0xffffff, 0xeeeeee};
|
static Uint32 *pixels, theme[] = {0xffb545, 0x72DEC2, 0x000000, 0xffffff, 0xeeeeee};
|
||||||
static int WIDTH, HEIGHT, isdrag, reqdraw, dragx, dragy, camerax, cameray;
|
static int WIDTH, HEIGHT, isdrag, reqdraw, dragx, dragy, camerax, cameray;
|
||||||
static Varvara varvaras[RAM_PAGES], *order[RAM_PAGES], *menu, *focused;
|
static Varvara varvaras[RAM_PAGES], *order[RAM_PAGES], *menu, *focused;
|
||||||
|
@ -129,10 +129,10 @@ static void
|
||||||
redraw(Uint32 *dst)
|
redraw(Uint32 *dst)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
for(i = 1; i < plen; i++)
|
for(i = 1; i < olen; i++)
|
||||||
if(order[i]->lock)
|
if(order[i]->lock)
|
||||||
drawpixels(dst, order[i]);
|
drawpixels(dst, order[i]);
|
||||||
for(i = 1; i < plen; i++)
|
for(i = 1; i < olen; i++)
|
||||||
if(!order[i]->lock)
|
if(!order[i]->lock)
|
||||||
drawpixels(dst, order[i]);
|
drawpixels(dst, order[i]);
|
||||||
drawpixels(dst, menu);
|
drawpixels(dst, menu);
|
||||||
|
@ -202,15 +202,35 @@ donevv(Varvara *p)
|
||||||
clear(pixels);
|
clear(pixels);
|
||||||
}
|
}
|
||||||
|
|
||||||
static Varvara *
|
static void
|
||||||
setvv(Varvara *p, int x, int y, char *rom, int eval)
|
order_print(void)
|
||||||
{
|
{
|
||||||
if(!p) return 0;
|
int i;
|
||||||
order[plen++] = p;
|
if(!olen)
|
||||||
|
return;
|
||||||
|
printf("\n\n");
|
||||||
|
for(i = 0; i < olen; i++) {
|
||||||
|
printf("%d/%d -> %s\n", i, olen, order[i]->rom);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
order_push(Varvara *p)
|
||||||
|
{
|
||||||
|
order[olen++] = p;
|
||||||
|
order_print();
|
||||||
|
}
|
||||||
|
|
||||||
|
static Varvara *
|
||||||
|
setvv(int id, int x, int y, char *rom, int eval)
|
||||||
|
{
|
||||||
|
Varvara *p = &varvaras[id];
|
||||||
|
if(id == -1) return 0;
|
||||||
p->x = x, p->y = y, p->rom = rom;
|
p->x = x, p->y = y, p->rom = rom;
|
||||||
p->u.ram = ram + (plen - 1) * 0x10000;
|
p->u.ram = ram + id * 0x10000;
|
||||||
p->u.id = plen - 1;
|
p->u.id = id;
|
||||||
p->live = 1;
|
p->live = 1;
|
||||||
|
order_push(p);
|
||||||
screen_resize(&p->screen, 128, 128);
|
screen_resize(&p->screen, 128, 128);
|
||||||
system_init(&p->u, p->u.ram, rom);
|
system_init(&p->u, p->u.ram, rom);
|
||||||
if(eval)
|
if(eval)
|
||||||
|
@ -218,16 +238,16 @@ setvv(Varvara *p, int x, int y, char *rom, int eval)
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Varvara *
|
static int
|
||||||
allocvv(void)
|
allocvv(void)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
for(i = 1; i < RAM_PAGES; i++) {
|
for(i = 1; i < RAM_PAGES; i++) {
|
||||||
Varvara *p = &varvaras[i];
|
Varvara *p = &varvaras[i];
|
||||||
if(!p || !p->live)
|
if(!p || !p->live)
|
||||||
return p;
|
return i;
|
||||||
}
|
}
|
||||||
return 0;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Varvara *
|
static Varvara *
|
||||||
|
@ -248,7 +268,7 @@ static Varvara *
|
||||||
pickvv(int x, int y)
|
pickvv(int x, int y)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
for(i = plen - 1; i > -1; --i) {
|
for(i = olen - 1; i > -1; --i) {
|
||||||
Varvara *p = order[i];
|
Varvara *p = order[i];
|
||||||
if(withinvv(p, x, y))
|
if(withinvv(p, x, y))
|
||||||
return p;
|
return p;
|
||||||
|
@ -261,16 +281,16 @@ raisevv(Varvara *v)
|
||||||
{
|
{
|
||||||
int i, j = 0;
|
int i, j = 0;
|
||||||
Varvara *a, *b;
|
Varvara *a, *b;
|
||||||
for(i = 1; i < plen; i++) {
|
for(i = 1; i < olen; i++) {
|
||||||
if(v == order[i]) {
|
if(v == order[i]) {
|
||||||
j = i;
|
j = i;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(!j || j == plen - 1)
|
if(!j || j == olen - 1)
|
||||||
return;
|
return;
|
||||||
a = order[j], b = order[plen - 1];
|
a = order[j], b = order[olen - 1];
|
||||||
order[j] = b, order[plen - 1] = a;
|
order[j] = b, order[olen - 1] = a;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -280,7 +300,7 @@ lockvv(Varvara *v)
|
||||||
v->lock = 1;
|
v->lock = 1;
|
||||||
else {
|
else {
|
||||||
int i;
|
int i;
|
||||||
for(i = 1; i < plen; i++) {
|
for(i = 1; i < olen; i++) {
|
||||||
order[i]->lock = 0;
|
order[i]->lock = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -296,7 +316,7 @@ pickfocus(int x, int y)
|
||||||
focusvv(menu);
|
focusvv(menu);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
for(i = plen - 1; i > -1; --i) {
|
for(i = olen - 1; i > -1; --i) {
|
||||||
Varvara *p = order[i];
|
Varvara *p = order[i];
|
||||||
if(withinvv(p, x, y) && !p->lock) {
|
if(withinvv(p, x, y) && !p->lock) {
|
||||||
focusvv(p);
|
focusvv(p);
|
||||||
|
@ -599,7 +619,7 @@ main(int argc, char **argv)
|
||||||
if(!init())
|
if(!init())
|
||||||
return error("Init", "Failure");
|
return error("Init", "Failure");
|
||||||
ram = (Uint8 *)calloc(0x10000 * RAM_PAGES, sizeof(Uint8));
|
ram = (Uint8 *)calloc(0x10000 * RAM_PAGES, sizeof(Uint8));
|
||||||
menu = setvv(&varvaras[0], 200, 150, "bin/menu.rom", 0);
|
menu = setvv(0, 200, 150, "bin/menu.rom", 0);
|
||||||
menu->live = 0;
|
menu->live = 0;
|
||||||
for(i = 1; i < argc; i++) {
|
for(i = 1; i < argc; i++) {
|
||||||
Varvara *a = addvv(anchor, 0x20 * i, argv[i], 1);
|
Varvara *a = addvv(anchor, 0x20 * i, argv[i], 1);
|
||||||
|
|
Loading…
Reference in New Issue