Files
Microtransactions64/s2d_parse.c

86 lines
1.7 KiB
C
Raw Normal View History

2020-12-11 21:47:11 -05:00
#include <ultra64.h>
#include <PR/gs2dex.h>
#include <PR/gu.h>
2020-12-11 21:47:11 -05:00
#include "s2d_draw.h"
2020-12-11 22:51:58 -05:00
#include "s2d_print.h"
2020-12-11 21:47:11 -05:00
2020-12-12 15:33:14 -05:00
int saved_degrees = 0;
2020-12-12 18:50:26 -05:00
int s2d_atoi(char *s, char **s2) {
int ret = 0;
int isNegative = (*s == '-');
if (isNegative) {
s++;
(*s2)++;
}
for (; *s != '\0' && *s != ' ' && *s >= '0' && *s <= '9'; s++) {
ret *= 10;
if (*s >= '0' && *s <= '9')
ret += *s - '0';
else break;
if (!(*(s+1) != '\0' && *(s+1) != ' ' && *(s+1) >= '0' && *(s+1) <= '9')) break;
(*s2)++;
}
if (isNegative) ret *= -1;
return ret;
}
2020-12-11 22:51:58 -05:00
void s2d_print(int x, int y, const char *str, uObjMtx *buf) {
2020-12-11 21:47:11 -05:00
char *p = str;
2020-12-12 18:50:26 -05:00
int tx = 0, ty = 0;
2020-12-12 19:45:53 -05:00
// int r = 0, g = 0, b = 0, a = 0;
2020-12-12 15:33:14 -05:00
if (*p == '\0') return;
2020-12-11 22:51:58 -05:00
do {
2020-12-11 21:47:11 -05:00
char r = *p;
2020-12-12 18:50:26 -05:00
int s, rd;
2020-12-11 21:47:11 -05:00
switch (r) {
2020-12-11 22:51:58 -05:00
case CH_SCALE:
2020-12-12 18:50:26 -05:00
CH_GET_NEXT(p);
s = s2d_atoi(p, &p);
2020-12-11 21:47:11 -05:00
myScale = s;
break;
2020-12-11 22:51:58 -05:00
case CH_ROT:
2020-12-12 18:50:26 -05:00
CH_GET_NEXT(p);
rd = s2d_atoi(p, &p);
2020-12-12 15:33:14 -05:00
saved_degrees = rd;
myDegrees = rd;
2020-12-11 21:47:11 -05:00
break;
2020-12-11 22:51:58 -05:00
case CH_TRANSLATE:
2020-12-12 18:50:26 -05:00
CH_GET_NEXT(p);
tx = s2d_atoi(p, &p);
CH_GET_NEXT(p);
CH_GET_NEXT(p);
ty = s2d_atoi(p, &p);
2020-12-12 15:33:14 -05:00
break;
2020-12-12 19:45:53 -05:00
case CH_COLOR:
CH_GET_NEXT(p);
s2d_red = s2d_atoi(p, &p);
CH_GET_NEXT(p);
CH_GET_NEXT(p);
s2d_green = s2d_atoi(p, &p);
CH_GET_NEXT(p);
CH_GET_NEXT(p);
s2d_blue = s2d_atoi(p, &p);
CH_GET_NEXT(p);
CH_GET_NEXT(p);
s2d_alpha = s2d_atoi(p, &p);
break;
break;
2020-12-11 21:47:11 -05:00
default:
if (myDegrees == 0)
2020-12-12 18:50:26 -05:00
draw_s2d_glyph(r, (x += (8 * myScale)) + tx, y + ty, (buf++));
else
2020-12-12 18:50:26 -05:00
draw_s2d_glyph(r, (x += ((8 * myScale))) + tx, y + ty, (buf++));
2020-12-11 21:47:11 -05:00
}
// myDegrees += saved_degrees;
} while (*(++p) != '\0');
2020-12-11 22:51:58 -05:00
myScale = 1;
2020-12-12 15:33:14 -05:00
myDegrees = 0;
saved_degrees = 0;
2020-12-12 18:50:26 -05:00
tx = 0;
ty = 0;
2020-12-11 21:47:11 -05:00
}
2020-12-11 22:51:58 -05:00