Also, I can't figure out the problem in my settings. I printed my cursor position, key, and the settings values to the screen to see what the problem was. The problem was, the integers won't increment or decrement. They just stay the same.
Code: int settings() {
uint8_t key;
long cursor_y;
int startcity,trainsVar,highscore=0;
int i=1,j=2,k=3,l=6;//each int is for the same array, but for different aspects
ti_CloseAll();
trainsVar = ti_Open("Trains", "r");
if (trainsVar) {
ti_Read(&highscore, sizeof(int), 1, trainsVar);
}
startcity = chicago;
strcpy(cityString, c);
cursor_y = 10;
key = 5;
gfx_SetDraw(gfx_buffer);
do {
if(key) {
while (kb_AnyKey());
switch (key) {
case 4: //up
switch (cursor_y) {
case 10:
cursor_y = 50;
break;
default:
cursor_y -= 10;
break;
}
break;
case 1: //down
switch (cursor_y) {
case 50:
cursor_y = 10;
break;
default:
cursor_y += 10;
break;
}
break;
}
gfx_FillScreen(0x80);
gfx_PrintStringXY(">", 10, cursor_y);
gfx_PrintStringXY("Start City:", 20, 10);
gfx_PrintStringXY(cityString, 100, 10);
gfx_PrintStringXY(lomc, 20, 20); //less than 100 miles(161 kilometer)
gfx_PrintStringXY(mppc[i], 100, 20); //amount
gfx_PrintStringXY(lfmc, 20, 30); //less than 500 miles(161 kilometer)
gfx_PrintStringXY(mppc[j], 100, 30); //amount
gfx_PrintStringXY(mfmc, 20, 40); //more than 500 miles(161 kilometer)
gfx_PrintStringXY(mppc[k], 100, 40); //amount
gfx_PrintStringXY(ccc, 20, 50); //cargo charge per 1000 lbs(453 kilogram)
gfx_PrintStringXY(mppc[l], 150, 50); //amount
gfx_PrintStringXY("Press 2nd when done", 20, 60);
gfx_SetTextXY(10,150);
gfx_PrintInt(i,1);
gfx_SetTextXY(10,160);
gfx_PrintInt(j,1);
gfx_SetTextXY(10,170);
gfx_PrintInt(k,1);
gfx_SetTextXY(10,180);
gfx_PrintInt(l,1);
gfx_SetTextXY(10,190);
gfx_PrintInt(cursor_y,3);
gfx_SetTextXY(10,200);
gfx_PrintInt(key,3);
gfx_SwapDraw();
}
key = os_GetCSC();
switch (cursor_y) {
case 10:
switch (key) {
case 2: //left
switch (startcity) {
case chicago:
strcpy(cityString, b);
startcity ^= (boston | chicago);
break;
case NYC:
strcpy(cityString, c);
startcity ^= (chicago | NYC);
break;
case stLouis:
strcpy(cityString, n);
startcity ^= (NYC | stLouis);
break;
case boston:
strcpy(cityString, s);
startcity ^= (stLouis | boston);
break;
}
break;
case 3: //right
switch (startcity) {
case chicago:
strcpy(cityString, n);
startcity ^= (NYC | chicago);
break;
case NYC:
strcpy(cityString, s);
startcity ^= (stLouis | NYC);
break;
case stLouis:
strcpy(cityString, b);
startcity ^= (boston | stLouis);
break;
case boston:
strcpy(cityString, c);
startcity ^= (chicago | boston);
break;
}
break;
}
break;
case 20:
switch (key) {
case 2: //left
switch (i) {
case 0:
i=6;
break;
default:
i--;
break;
}
break;
case 3: //right
switch (i) {
case 6:
i=0;
break;
default:
i++;
break;
}
break;
}
break;
case 30:
switch (key) {
case 2: //left
switch (j) {
case 0:
j=6;
break;
default:
j--;
break;
}
break;
case 3: //right
switch (j) {
case 6:
j=0;
break;
default:
j++;
break;
}
break;
}
break;
case 40:
switch (key) {
case 2: //left
switch (k) {
case 0:
k=6;
break;
default:
k--;
break;
}
break;
case 3: //right
switch (k) {
case 6:
k=0;
break;
default:
k++;
break;
}
break;
}
break;
case 50:
switch (key) {
case 2: //left
switch (l) {
case 0:
l=7;
break;
default:
l--;
break;
}
break;
case 3: //right
switch (l) {
case 7:
l=0;
break;
default:
l++;
break;
}
break;
}
break;
}
} while (kb_ScanGroup(kb_group_1) != kb_2nd);
lom = mpp[i];
lfm = mpp[j];
mfm = mpp[k];
cc = mpp[l];
ti_CloseAll();
trainsVar = ti_Open("Trains", "w");
if (trainsVar) {
ti_Write(&highscore, sizeof(int), 1, trainsVar);
ti_Write(&startcity, sizeof(int), 1, trainsVar);
ti_Write(&lom, sizeof(float), 1, trainsVar);
ti_Write(&lfm, sizeof(float), 1, trainsVar);
ti_Write(&mfm, sizeof(float), 1, trainsVar);
ti_Write(&cc, sizeof(float), 1, trainsVar);
}
ti_CloseAll();
return 1;
}
The numbers that change and do not change are in order from top to bottom as:
int i
int j
int k
int l
long cursor_y
int key