void nstx_handlepacket(const char *ptr, size_t len, void (*nstx_usepacket)(const char*, size_t)) { struct nstxhdr *nstxpkt = (struct nstxhdr *) ptr; struct nstx_item *nstxitem; char *netpacket; int netpacketlen; if ((!ptr) || (signed int) len < (signed int) sizeof(struct nstxhdr)) return; if (!nstxpkt->id) return; nstxitem = get_item_by_id(nstxpkt->id); if (!nstxitem) nstxitem = alloc_item(nstxpkt->id); if (add_data(nstxitem, nstxpkt, len)) { netpacket = dealloc_item(nstxitem, &netpacketlen); nstx_usepacket(netpacket, netpacketlen); } check_timeouts(); }
void make_plant( float *data, float ao, float light, float px, float py, float pz, float n, int w, float rotation) { static const float positions[4][4][3] = { {{ 0, -1, -1}, { 0, -1, +1}, { 0, +1, -1}, { 0, +1, +1}}, {{ 0, -1, -1}, { 0, -1, +1}, { 0, +1, -1}, { 0, +1, +1}}, {{-1, -1, 0}, {-1, +1, 0}, {+1, -1, 0}, {+1, +1, 0}}, {{-1, -1, 0}, {-1, +1, 0}, {+1, -1, 0}, {+1, +1, 0}} }; static const float normals[4][3] = { {-1, 0, 0}, {+1, 0, 0}, {0, 0, -1}, {0, 0, +1} }; static const float uvs[4][4][2] = { {{0, 0}, {1, 0}, {0, 1}, {1, 1}}, {{1, 0}, {0, 0}, {1, 1}, {0, 1}}, {{0, 0}, {0, 1}, {1, 0}, {1, 1}}, {{1, 0}, {1, 1}, {0, 0}, {0, 1}} }; static const float indices[4][6] = { {0, 3, 2, 0, 1, 3}, {0, 3, 1, 0, 2, 3}, {0, 3, 2, 0, 1, 3}, {0, 3, 1, 0, 2, 3} }; float *d = data; float s = 0.0625; float a = 0; float b = s; struct item_list *plant = get_item_by_id(ABS(w)); float du = (plant->tile->sprite % 16) * s; float dv = (plant->tile->sprite / 16) * s; for (int i = 0; i < 4; i++) { for (int v = 0; v < 6; v++) { int j = indices[i][v]; *(d++) = n * positions[i][j][0]; *(d++) = n * positions[i][j][1]; *(d++) = n * positions[i][j][2]; *(d++) = normals[i][0]; *(d++) = normals[i][1]; *(d++) = normals[i][2]; *(d++) = du + (uvs[i][j][0] ? b : a); *(d++) = dv + (uvs[i][j][1] ? b : a); *(d++) = ao; *(d++) = light; } } float ma[16]; float mb[16]; mat_identity(ma); mat_rotate(mb, 0, 1, 0, RADIANS(rotation)); mat_multiply(ma, mb, ma); mat_apply(data, ma, 24, 3, 10); mat_translate(mb, px, py, pz); mat_multiply(ma, mb, ma); mat_apply(data, ma, 24, 0, 10); }
void make_cube( float *data, float ao[6][4], float light[6][4], int left, int right, int top, int bottom, int front, int back, float x, float y, float z, float n, int w) { struct item_list *it = get_item_by_id(ABS(w)); if (it == NULL) { it = get_item_by_name("error"); } int wleft = it->tile->left; int wright = it->tile->right; int wtop = it->tile->top; int wbottom = it->tile->bottom; int wfront = it->tile->front; int wback = it->tile->back; make_cube_faces( data, ao, light, left, right, top, bottom, front, back, wleft, wright, wtop, wbottom, wfront, wback, x, y, z, n); }
void Menu::set_toggled(int id, bool toggled) { get_item_by_id(id).toggled = toggled; }
bool Menu::is_toggled(int id) const { return get_item_by_id(id).toggled; }
bool Menu::isToggled(int id) { return get_item_by_id(id).toggled; }
void KeyboardMenu::refresh() { KeyboardConfig& kbd_cfg = g_config->keyboard_config; ItemControlField* micf; micf = dynamic_cast<ItemControlField*>(&get_item_by_id((int) Controller::UP)); if (micf) micf->change_input(get_key_name(kbd_cfg.reversemap_key(Controller::UP))); micf = dynamic_cast<ItemControlField*>(&get_item_by_id((int) Controller::DOWN)); if (micf) micf->change_input(get_key_name(kbd_cfg.reversemap_key(Controller::DOWN))); micf = dynamic_cast<ItemControlField*>(&get_item_by_id((int) Controller::LEFT)); if (micf) micf->change_input(get_key_name(kbd_cfg.reversemap_key(Controller::LEFT))); micf = dynamic_cast<ItemControlField*>(&get_item_by_id((int) Controller::RIGHT)); if (micf) micf->change_input(get_key_name(kbd_cfg.reversemap_key(Controller::RIGHT))); micf = dynamic_cast<ItemControlField*>(&get_item_by_id((int) Controller::JUMP)); if (micf) micf->change_input(get_key_name(kbd_cfg.reversemap_key(Controller::JUMP))); micf = dynamic_cast<ItemControlField*>(&get_item_by_id((int) Controller::ACTION)); if (micf) micf->change_input(get_key_name(kbd_cfg.reversemap_key(Controller::ACTION))); micf = dynamic_cast<ItemControlField*>(&get_item_by_id((int) Controller::PEEK_LEFT)); if (micf) micf->change_input(get_key_name(kbd_cfg.reversemap_key(Controller::PEEK_LEFT))); micf = dynamic_cast<ItemControlField*>(&get_item_by_id((int) Controller::PEEK_RIGHT)); if (micf) micf->change_input(get_key_name(kbd_cfg.reversemap_key(Controller::PEEK_RIGHT))); micf = dynamic_cast<ItemControlField*>(&get_item_by_id((int) Controller::PEEK_UP)); if (micf) micf->change_input(get_key_name(kbd_cfg.reversemap_key(Controller::PEEK_UP))); micf = dynamic_cast<ItemControlField*>(&get_item_by_id((int) Controller::PEEK_DOWN)); if (micf) micf->change_input(get_key_name(kbd_cfg.reversemap_key(Controller::PEEK_DOWN))); if (g_config->developer_mode) { micf = dynamic_cast<ItemControlField*>(&get_item_by_id((int) Controller::CHEAT_MENU)); if (micf) micf->change_input(get_key_name(kbd_cfg.reversemap_key(Controller::CHEAT_MENU))); } if (g_config->developer_mode || g_config->console_enabled) { micf = dynamic_cast<ItemControlField*>(&get_item_by_id((int) Controller::CONSOLE)); if (micf) micf->change_input(get_key_name(kbd_cfg.reversemap_key(Controller::CONSOLE))); } }
void JoystickMenu::refresh_menu_item(Controller::Control id) { ItemControlField* itemcf = dynamic_cast<ItemControlField*>(&get_item_by_id(static_cast<int>(id))); if (!itemcf) { return; } int button = g_config->joystick_config.reversemap_joybutton(id); int axis = g_config->joystick_config.reversemap_joyaxis(id); int hat_dir = g_config->joystick_config.reversemap_joyhat(id); if (button != -1) { itemcf->change_input(get_button_name(button)); } else if (axis != 0) { std::ostringstream name; name << "Axis "; if (axis < 0) name << "-"; else name << "+"; if (abs(axis) == 1) name << "X"; else if (abs(axis) == 2) name << "Y"; else if (abs(axis) == 3) name << "X2"; else if (abs(axis) == 4) name << "Y2"; else name << abs(axis); itemcf->change_input(name.str()); } else if (hat_dir != -1) { std::string name; switch (hat_dir) { case SDL_HAT_UP: name = "Hat Up"; break; case SDL_HAT_DOWN: name = "Hat Down"; break; case SDL_HAT_LEFT: name = "Hat Left"; break; case SDL_HAT_RIGHT: name = "Hat Right"; break; default: name = "Unknown hat_dir"; break; } itemcf->change_input(name); } else { itemcf->change_input("None"); } }