void multichoice() { u16 id; u8 current; /* Wait for A press */ if (check_a_pressed(0)) return; /* Show multichoice */ // Load rbox u16 (*func)(u32) = (u16 (*)(void)) 0x08003CE4 + 1; //id = func(&boy_girl); // New //tasks[index].args[0xD] = id; u16 (*func2)(u16) = (u16 (*)(void)) 0x8003FA0 + 1; func2(id); // Draw its border int (*outline)(u16, u8, u16, u8) = (int (*)(void)) 0x0810F2E8 + 1; outline(id, 1, 0x214, 0xE); // Clear the contents int (*clear)(u16, u8) = (int (*)(void)) 0x0800445C + 1; clear(id, 0x11); // Draw strings // id, font, x, y, bg_color, fg_color, str int (*print)(u16, u8, u8, u8, u32, u32, char*) = (int (*)(void)) 0x0812E51C + 1; print(id, 2, 8, 1, 1, 0, caOptionInfoControls); print(id, 2, 8, 0x11, 1, 0, caOptionInfoAdventure); //print(id, 2, 8, 0x21, 1, 0, 0x08415D97); // Field u8 (*field)(u8, u8) = (u8 (*)(void)) 0x080F79D8 + 1; current = field(2, 1); // Allow moving the selecty thing int (*huh)(u8, u8, u8, u8, u8, u8, u32) = (int (*)(void)) 0x0810F7D8 + 1; huh(id, 2, 0, 1, current + 2, 2, 0); rboxid_to_vram(id, 3); }
void AdminConnection::doCmd(std::string const &cmd) { (debugAdmin.enabled() ? LogNotice : LogSpam) << "AdminConnection::doCmd(" << istat::sql_quote(cmd) << ")"; ++as_->numAdminCommands_; std::string left, right; switch (istat::split(cmd, ' ', left, right)) { case 0: huh(); break; case 1: case 2: { std::vector<std::string> args; istat::trim(left); istat::trim(right); istat::explode(right, ',', args); cmdArgs(left, args); } break; } }
void eta(void) { int key, ix1, ix2, iy1, iy2, prompt=FALSE; int wfl; double ttime, twarp, tpower; if (damage[DCOMPTR] != 0.0) { prout("COMPUTER DAMAGED, USE A POCKET CALCULATOR."); skip(1); return; } if (scan() != IHREAL) { prompt = TRUE; chew(); proutn("Destination quadrant and/or sector? "); if (scan()!=IHREAL) { huh(); return; } } iy1 = aaitem +0.5; if (scan() != IHREAL) { huh(); return; } ix1 = aaitem + 0.5; if (scan() == IHREAL) { iy2 = aaitem + 0.5; if (scan() != IHREAL) { huh(); return; } ix2 = aaitem + 0.5; } else { // same quadrant ix2 = ix1; iy2 = iy1; ix1 = quady; // ya got me why x and y are reversed! iy1 = quadx; } if (ix1 > 8 || ix1 < 1 || iy1 > 8 || iy1 < 1 || ix2 > 10 || ix2 < 1 || iy2 > 10 || iy2 < 1) { huh(); return; } dist = sqrt(square(iy1-quadx+0.1*(iy2-sectx))+ square(ix1-quady+0.1*(ix2-secty))); wfl = FALSE; if (prompt) prout("Answer \"no\" if you don't know the value:"); while (TRUE) { chew(); proutn("Time or arrival date? "); if (scan()==IHREAL) { ttime = aaitem; if (ttime > d.date) ttime -= d.date; // Actually a star date if (ttime <= 1e-10 || (twarp=(floor(sqrt((10.0*dist)/ttime)*10.0)+1.0)/10.0) > 10) { prout("We'll never make it, sir."); chew(); return; } if (twarp < 1.0) twarp = 1.0; break; } chew(); proutn("Warp factor? "); if (scan()== IHREAL) { wfl = TRUE; twarp = aaitem; if (twarp<1.0 || twarp > 10.0) { huh(); return; } break; } prout("Captain, certainly you can give me one of these."); } while (TRUE) { chew(); ttime = (10.0*dist)/square(twarp); tpower = dist*twarp*twarp*twarp*(shldup+1); if (tpower >= energy) { prout("Insufficient energy, sir."); if (shldup==0 || tpower > energy*2.0) { if (!wfl) return; proutn("New warp factor to try? "); if (scan() == IHREAL) { wfl = TRUE; twarp = aaitem; if (twarp<1.0 || twarp > 10.0) { huh(); return; } continue; } else { chew(); skip(1); return; } } prout("But if you lower your shields,"); proutn("remaining"); tpower /= 2; } else proutn("Remaining"); proutn(" energy will be "); cramf(energy-tpower, 1, 1); prout("."); if (wfl) { proutn("And we will arrive at stardate "); cramf(d.date+ttime, 1, 1); prout("."); } else if (twarp==1.0) prout("Any warp speed is adequate."); else { proutn("Minimum warp needed is "); cramf(twarp, 1, 2); skip(1); proutn("and we will arrive at stardate "); cramf(d.date+ttime, 1, 2); prout("."); } if (d.remtime < ttime) prout("Unfortunately, the Federation will be destroyed by then."); if (twarp > 6.0) prout("You'll be taking risks at that speed, Captain"); if ((isatb==1 && d.isy == ix1 && d.isx == iy1 && future[FSCDBAS]< ttime+d.date)|| (future[FCDBAS]<ttime+d.date && baty==ix1 && batx == iy1)) prout("The starbase there will be destroyed by then."); proutn("New warp factor to try? "); if (scan() == IHREAL) { wfl = TRUE; twarp = aaitem; if (twarp<1.0 || twarp > 10.0) { huh(); return; } } else { chew(); skip(1); return; } } }