Entity::~Entity() { //printf("Entity dtor %d\n", _guid); deleteSprite(); deleteLine(); deleteSpritebatch(); }
void NavigationScene::createMouseCursor() { const NavigationItem &navigationItem = (*_navigationList)[_navigationIndex]; uint32 mouseCursorFileHash; int areaType; if (_mouseCursor) { deleteSprite((Sprite**)&_mouseCursor); } mouseCursorFileHash = navigationItem.mouseCursorFileHash; if (mouseCursorFileHash == 0) mouseCursorFileHash = 0x63A40028; if (_itemsTypes) { areaType = _itemsTypes[_navigationIndex]; } else if (navigationItem.middleSmackerFileHash != 0 || navigationItem.middleFlag) { areaType = 0; } else { areaType = 1; } insertNavigationMouse(mouseCursorFileHash, areaType); sendPointMessage(_mouseCursor, 0x4002, _vm->getMousePos()); }
void animate_spermicides(char *base) { if (spermicides->first == NULL) return; lst_iitem_t* curSp; int n = 0; for(curSp = spermicides->first; curSp != NULL; curSp = curSp->next) n++; for(curSp = spermicides->first; curSp != NULL; curSp = curSp->next){ destroySprite(curSp->spr, base); if (!check_spermicide_colision(curSp->spr,curSp->spr->y - curSp->spr->yspeed)) { curSp->spr->y -= curSp->spr->yspeed; drawSprite(curSp->spr, base); } else { deleteSprite(curSp->spr); curSp = lst_remove(spermicides, curSp->spr); if (curSp == NULL) break; } } }
void ITextRenderer::reconstruct(unsigned int ID, bool rescanStr) { MUTEXLIB::unique_lock<MUTEXLIB::recursive_mutex> lock(SpriteMutex); if (SpriteData.size() <= ID) SpriteData.resize(ID + 1, std::vector<SpriteAttr*>()); // 配列の拡張 if ((!SpriteData[ID].empty()) && rescanStr) deleteSprite(ID); // 既に存在した場合 if (!StringData[ID]) /* ぬるぽ */ return; /* ガッ */ float chrAdvance = (FontWidth() - FontPadding() * 2) * StringData[ID]->scale * StringData[ID]->width; float cursorPos = 0; if (rescanStr) { for (const auto& k : StringData[ID]->str) { SpriteData[ID].push_back(new SpriteAttr); SpriteData[ID].back()->isFullWidth = fontmap->map(k).first; SpriteData[ID].back()->chr_id = fontmap->map(k).second; spriteRecalc(ID, SpriteData[ID].back(), chrAdvance, cursorPos); if (SpriteData[ID].back()->isFullWidth) cursorPos += 1.0f; else cursorPos += .5f; } } else { for (const auto& k : SpriteData[ID]) { spriteRecalc(ID, k, chrAdvance, cursorPos); if (k->isFullWidth) cursorPos += 1.0f; else cursorPos += .5f; } } }
void doFontification (struct spriteBank *sprites, unsigned int fontifySpaceWidth) { int which = 1; int fromColumn = 0; int yhot = (sprites->sprites[0].height * 3) / 4; for (int thisColumn = 0; thisColumn < sprites->sprites[0].width; thisColumn ++) { int y; // Find out if the column's empty... for (y = 0; y < sprites->sprites[0].height; y ++) { if (sprites->sprites[0].data[y*sprites->sprites[0].width*4 + thisColumn*4 + 3]) break; } int width = (thisColumn - fromColumn); // So was it? if (y == sprites->sprites[0].height || (thisColumn == sprites->sprites[0].width - 1)) { // Make sure we didn't find a blank column last time if (width) { // Reserve memory GLubyte * toHere = (GLubyte *) new GLubyte [width * sprites->sprites[0].height * 4]; GLubyte * dataIfOK = toHere; if (toHere) { for (y = 0; y < sprites->sprites[0].height; y ++) { GLubyte * from = sprites->sprites[0].data + 4*sprites->sprites[0].width*y + fromColumn*4; for (int x = 0; x < width*4; x ++) { * (toHere ++) = from[x]; } } addSprite (which, sprites); sprites->sprites[which].width = width; sprites->sprites[which].height = sprites->sprites[0].height; sprites->sprites[which].yhot = yhot; delete sprites->sprites[which].data; sprites->sprites[which].data = dataIfOK; which ++; } } fromColumn = thisColumn + 1; } } addSprite (which, sprites); sprites->sprites[which].width = fontifySpaceWidth; sprites->sprites[which].height = 1; sprites->sprites[which].yhot = 0; delete sprites->sprites[which].data; sprites->sprites[which].data = new GLubyte [fontifySpaceWidth * 4]; memset(sprites->sprites[which].data, 0, fontifySpaceWidth * 4); deleteSprite (0, sprites); loadSpriteTextures (sprites); }
void Entity::addSpriteSheet(const std::string& filename, int u, int v) { deleteSprite(); _sprite = new Sprite(); float uvwidth = 1.0f / u; float uvheight = 1.0f / v; _sprite->setupSprite(filename, 0.5f, 0.5f, uvwidth, uvheight); }
void Entity::addSpriteSheet(const std::string& filename, int u, int v) { deleteSprite(); _sprite = new Sprite(); float uvwidth = 1.0f / u; float uvheight = 1.0f / v; _sprite->setupSprite(filename, 0.5f, 0.5f, uvwidth, uvheight, DEFAULTFILTER, DEFAULTWRAP); // trilinear filter, mirror repeat }
void game_end() { deleteScore(score); saveHighScores(highScores); deleteHighScores(highScores); deleteHammer(hammer); int i; for (i = 0; i < NUM_PCS; i++) deleteCScreen(cscreens[i]); free(cscreens); deleteButton(helpButton); deleteButton(exitButton); deleteSprite(helpBoard); deleteSprite(scoreBoard); deleteSprite(spriteBG); }
ITextRenderer::~ITextRenderer() { deleteSprite(); for (auto& k : StringData) { if (k) { delete k; k = nullptr; } } #if defined(_WIN32) && defined(WITH_DIRECTX) if (font) font->Release(); #endif }
/** * メモリを開放する。 */ void deleteAnimation(ANIME_SET* graphic){ int i=0,anime_num = graphic->anime_num; for(;i<anime_num;i++){ ANIMATION* anime = graphic->anime[i]; free(anime->frame); free(anime); } free(graphic->anime); deleteSprite(&graphic->sprite); free(graphic->filename); free(graphic); }
void Entity::addCircleSprite(const std::string& filename, int radius, int segments) { deleteSprite(); _sprite = new Sprite(); _sprite->setupCircleSprite(filename, radius, segments); }
void Entity::addDynamicSprite(PixelBuffer* pixels) { deleteSprite(); _sprite = new Sprite(); _sprite->setupSpriteByPixelBuffer(pixels); }
void Entity::addSprite(Sprite* spr) { deleteSprite(); _sprite = new Sprite(); *_sprite = *spr; }
void Scene1201::update() { Scene::update(); if (_asMatch && getGlobalVar(V_MATCH_STATUS) == 3) deleteSprite(&_asMatch); }
void Scene::insertMouse(Mouse *mouseCursor) { if (_mouseCursor) deleteSprite((Sprite**)&_mouseCursor); _mouseCursor = mouseCursor; addEntity(_mouseCursor); }
void ITextRenderer::reconstruct() { // VERY SLOW. DO NOT USE. deleteSprite(); for (unsigned i = 0; i < StringData.size(); i++) reconstruct(i); }
static void cutToClipboard(Sprite* sprite) { copyToClipboard(sprite); deleteSprite(sprite); }
static void processKeyboard(Sprite* sprite) { tic_mem* tic = sprite->tic; if(tic->ram.input.keyboard.data == 0) return; switch(getClipboardEvent()) { case TIC_CLIPBOARD_CUT: cutToClipboard(sprite); break; case TIC_CLIPBOARD_COPY: copyToClipboard(sprite); break; case TIC_CLIPBOARD_PASTE: copyFromClipboard(sprite); break; default: break; } bool ctrl = tic->api.key(tic, tic_key_ctrl); if(ctrl) { if(keyWasPressed(tic_key_z)) undo(sprite); else if(keyWasPressed(tic_key_y)) redo(sprite); } else { if(hasCanvasSelection(sprite)) { if(keyWasPressed(tic_key_up)) upCanvas(sprite); else if(keyWasPressed(tic_key_down)) downCanvas(sprite); else if(keyWasPressed(tic_key_left)) leftCanvas(sprite); else if(keyWasPressed(tic_key_right)) rightCanvas(sprite); else if(keyWasPressed(tic_key_delete)) deleteCanvas(sprite); } else { if(keyWasPressed(tic_key_up)) upSprite(sprite); else if(keyWasPressed(tic_key_down)) downSprite(sprite); else if(keyWasPressed(tic_key_left)) leftSprite(sprite); else if(keyWasPressed(tic_key_right)) rightSprite(sprite); else if(keyWasPressed(tic_key_delete)) deleteSprite(sprite); else if(keyWasPressed(tic_key_tab)) switchBanks(sprite); if(!sprite->editPalette) { if(keyWasPressed(tic_key_1)) sprite->mode = SPRITE_DRAW_MODE; else if(keyWasPressed(tic_key_2)) sprite->mode = SPRITE_PICK_MODE; else if(keyWasPressed(tic_key_3)) sprite->mode = SPRITE_SELECT_MODE; else if(keyWasPressed(tic_key_4)) sprite->mode = SPRITE_FILL_MODE; else if(keyWasPressed(tic_key_5)) flipSpriteHorz(sprite); else if(keyWasPressed(tic_key_6)) flipSpriteVert(sprite); else if(keyWasPressed(tic_key_7)) rotateSprite(sprite); else if(keyWasPressed(tic_key_8)) deleteSprite(sprite); if(sprite->mode == SPRITE_DRAW_MODE) { if(keyWasPressed(tic_key_leftbracket)) {if(sprite->brushSize > 1) sprite->brushSize--;} else if(keyWasPressed(tic_key_rightbracket)) {if(sprite->brushSize < 4) sprite->brushSize++;} } } } } }
void ITextRenderer::deleteSprite() { MUTEXLIB::unique_lock<MUTEXLIB::recursive_mutex> lock(SpriteMutex); for (unsigned int i = 0; i < SpriteData.size(); i++) deleteSprite(i); SpriteData.clear(); }
void Entity::addSegmentSprite(const std::string& filename, int radius, int segments, int which) { deleteSprite(); _sprite = new Sprite(); _sprite->setupSegmentSprite(filename, radius, segments, which); }
/* 文字列オブジェクトの後始末 */ void ITextRenderer::DelText(unsigned int ID) { if (StringData.size() <= ID) return; delete StringData[ID]; StringData[ID] = nullptr; deleteSprite(ID); }
void Entity::addSprite(const std::string& filename, float pivotx, float pivoty) { deleteSprite(); _sprite = new Sprite(); _sprite->setupSprite(filename, pivotx, pivoty, 1.0f, 1.0f, DEFAULTFILTER, DEFAULTWRAP); // trilinear filter, mirror repeat }
void deleteCScreen(CScreen* cscreen){ deleteSprite(cscreen->sprite); deleteSong(cscreen->crash); deleteSong(cscreen->reinstall); free(cscreen); }
void Entity::addSprite(const std::string& filename, float pivotx, float pivoty, int filter, int wrap) { deleteSprite(); _sprite = new Sprite(); _sprite->setupSprite(filename, pivotx, pivoty, 1.0f, 1.0f, filter, wrap); }