void displayHUD(Object * ship, SDL_Texture * font, uint32_t timer) { Object * temp; char buffer[BUFFER_SIZE] = {0}; int previous = 0; SDL_Rect bar; /* Set the HUD bar */ bar.x = 0; bar.y = 0; bar.w = Global->screenWidth; bar.h = Global->screenTop; setWindowColor(0, 51, 102, 0xFF); SDL_RenderFillRect(Global->renderer, &bar); setWindowColor(0x0, 0x0, 0x0, 0xFF); /* Display score text */ strncpy(buffer, "Score", BUFFER_SIZE); temp = createTextObject(font, buffer, FONT_LARGE, 1.0); positionTextObject(temp, 0, 0); /* Display score number */ previous = (temp->x + ((countObjects(temp) + 5 - snprintf(buffer, BUFFER_SIZE, "%d", score)) * temp->clip.w * 0.5 * temp->scale)); freeObjects(temp); temp = createTextObject(font, buffer, FONT_LARGE, 1.0); positionTextObject(temp, previous, 0); /* Display lives text */ previous += getTextObjectLength(temp, 5); freeObjects(temp); strncpy(buffer, "Lives", BUFFER_SIZE); temp = createTextObject(font, buffer, FONT_LARGE, 1.0); positionTextObject(temp, previous, 0); /* Display lives number */ previous = (temp->x + ((countObjects(temp) + 3 - snprintf(buffer, BUFFER_SIZE, "%d", ship->lives)) * temp->clip.w * 0.5 * temp->scale)); freeObjects(temp); temp = createTextObject(font, buffer, FONT_LARGE, 1.0); positionTextObject(temp, previous, 0); freeObjects(temp); /* Display Timer */ snprintf(buffer, BUFFER_SIZE, "%d", timer); temp = createTextObject(font, buffer, FONT_LARGE, 1.0); positionTextObject(temp, ((Global->screenWidth - (countObjects(temp) * temp->clip.w))), 0); freeObjects(temp); }
void displayTextMiddle(SDL_Texture * font, char * text, objectType type, float scale) { Object * temp = createTextObject(font, text, type, scale); positionTextObject(temp, (((Global->screenWidth - Global->screenRight) / 2) + Global->screenLeft) - (getTextObjectLength(temp, 0) / 2), (((Global->screenHeight - Global->screenBottom) / 2) + Global->screenTop) - (temp->clip.h / 2)); freeObjects(temp); }
/* Assumes 'label' object exists and is zeroed. */ void createLabel(AppInfo *app, char *text, LabelInfo *label) { char *substring; TextObject *t; if ((!app) || (!text)) { return; } label->fullText = strdup(text); label->multiText = createTextObject(app, label->fullText); t = label->multiText; substring = strchr(label->fullText, '\n'); while (NULL != substring) { *(substring++) = '\0'; t->next = createTextObject(app, substring); if (t->next) { t = t->next; } substring = strchr(substring, '\n'); } }
GameState::GameState(StateManager* _stateManager) : State(_stateManager), tileSize(64.0f, 64.0f), playerPosition(0.0f, 4.0f), ballPosition(0.0f, 0.0f), ballVelocity(0.0f, 0.1f), ballSize(40.0f, 40.0f), playerSize(150, 35.0f), tilesSize(90.0f, 40.0f) { tileAmount = 10; boxWorld = new b2World(yam2d::vec2(0.0f, 0.0f)); boxWorld->SetAllowSleeping(false); contactListener = new ContactListener(); boxWorld->SetContactListener(contactListener); map = new yam2d::Map(tileSize.x, tileSize.y); background = new yam2d::Layer(map, "Background", 1.0f, true, true); objects = new yam2d::Layer(map, "Objects", 1.0f, true, false); map->addLayer(yam2d::Map::BACKGROUND0, background); map->addLayer(yam2d::Map::MAPLAYER0, objects); backgroundObject = createSpriteGameObject("Textures/menu_background.png", 1280.0f, 720.0f); playerObject = createSpriteGameObject("Textures/player.png", playerSize.x, playerSize.y); PhysicsBody* Playerbody = new PhysicsBody(playerObject, boxWorld, 1.0f, 1.0f); Playerbody->setBoxFixture(playerSize / tileSize, yam2d::vec2(0.0f, 0.0f), playerObject->getRotation(), true); playerObject->addComponent(Playerbody); playerObject->setName("Player"); playerObject->getComponent<PhysicsBody>()->getBody()->SetTransform(playerPosition, 0.0f); ballObject = createSpriteGameObject("Textures/ball.png", ballSize.x, ballSize.y); PhysicsBody* ballBody = new PhysicsBody(ballObject, boxWorld, 1.0f, 1.0f); ballBody->setCircleFixture((ballSize.x / tileSize.x) / 2 , true); ballObject->addComponent(ballBody); ballObject->setName("Ball"); ballObject->getComponent<PhysicsBody>()->getBody()->SetTransform(ballPosition, 0.0f); for (int i = 0; i < tileAmount; i++) { tileObjects.push_back(createSpriteGameObject("Textures/tile.png", tilesSize.x, tilesSize.y)); objects->addGameObject(tileObjects.back()); PhysicsBody* tileBody = new PhysicsBody(tileObjects.back(), boxWorld, 1.0f, 1.0f); tileBody->setBoxFixture(tilesSize / tileSize, yam2d::vec2(0.0f, 0.0f), tileObjects.back()->getRotation(), true); tileObjects.back()->addComponent(tileBody); tileObjects.back()->setName("Tile"); tileObjects.back()->getComponent<PhysicsBody>()->getBody()->SetTransform(yam2d::vec2(-3.0f + 2 * i, -2.0f), 0.0f); } textObject = createTextObject(); textObject->setPosition(8.0f, -5.0f); background->addGameObject(backgroundObject); objects->addGameObject(playerObject); objects->addGameObject(ballObject); objects->addGameObject(textObject); }
GameLevelState::GameLevelState(StateManager* _stateManager) : State(_stateManager), playerPosition(0.0f, 4.0f), ballPosition(0.0f, 0.0f), ballVelocity(0.0f, 0.1f), ballSize(40.0f, 40.0f), playerSize(150, 35.0f) { map = new yam2d::TmxMap(); compFac = new CustomComponentFactory(); compFac->setCurrentMap(map); contactListener = new ContactListener(); compFac->getPhysicsWorld()->SetContactListener(contactListener); if (map->loadMapFile("Maps/test_map.tmx", compFac)) { map->getCamera()->setPosition(yam2d::vec2(map->getWidth() / 2.0f, map->getHeight() / 2.0f)); } else { msgstream("Error loading TmxMap!"); stateManager->setState(new MainMenuState(stateManager)); } tileSize = yam2d::vec2(map->getWidth(), map->getHeight()); yam2d::Map::LayerMap layers = map->getLayers(); yam2d::Layer::GameObjectList goList; for (unsigned i = 0; i < layers.size(); i++) { if (layers[i]) { goList = layers[i]->getGameObjects(); for (unsigned i = 0; i < goList.size(); i++) { tileObjects.push_back(goList[i]); } } } for (unsigned i = 0; i < tileObjects.size(); i++) { if (tileObjects[i]->getName() == "Player") { playerObject = tileObjects[i]; } else if (tileObjects[i]->getName() == "Ball") { ballObject = tileObjects[i]; } } tileAmount = tileObjects.size() - 3; //3 = ball, player, background textObject = createTextObject(); textObject->setPosition(tileSize.x - tileSize.x * 0.15f, tileSize.y - tileSize.y * 0.85f); map->getLayer("Tiles")->addGameObject(textObject); }
int16 Op_AddMessage() { int16 color = popVar(); int16 var_2 = popVar(); int16 var_4 = popVar(); int16 var_6 = popVar(); int16 var_8 = popVar(); int16 overlayIdx = popVar(); if (!overlayIdx) overlayIdx = currentScriptPtr->overlayNumber; if (color == -1) { color = findHighColor(); } else { if (CVTLoaded) { color = cvtPalette[color]; } } createTextObject(&cellHead, overlayIdx, var_8, var_6, var_4, var_2, color, masterScreen, currentScriptPtr->overlayNumber, currentScriptPtr->scriptNumber); return 0; }
void callRelation(menuElementSubStruct *pMenuElement, int nObj2) { if (pMenuElement == NULL) return; menuElementSubStruct* pCurrent = pMenuElement; while (pCurrent != NULL) { int ovlIdx = pCurrent->ovlIdx; int header = pCurrent->header; linkDataStruct* pHeader = &overlayTable[ovlIdx].ovlData->arrayMsgRelHeader[header]; if (pHeader->obj2Number == nObj2) { // REL if (pHeader->type == RT_REL) { if (currentScriptPtr) { attacheNewScriptToTail(&relHead, ovlIdx, pHeader->id, 30, currentScriptPtr->scriptNumber, currentScriptPtr->overlayNumber, scriptType_REL); } else { attacheNewScriptToTail(&relHead, ovlIdx, pHeader->id, 30, 0, 0, scriptType_REL); } if ((narratorOvl > 0) && (pHeader->trackX != -1) && (pHeader->trackY != -1)) { actorStruct* pTrack = findActor(&actorHead, narratorOvl, narratorIdx, 0); if (pTrack) { animationStart = false; if (pHeader->trackDirection == 9999) { objectParamsQuery naratorParams; getMultipleObjectParam(narratorOvl, narratorIdx, &naratorParams); pTrack->x_dest = naratorParams.X; pTrack->y_dest = naratorParams.Y; pTrack->endDirection = direction(naratorParams.X, naratorParams.Y, pTrack->x_dest, pTrack->y_dest, 0, 0); } else if ((pHeader->trackX == 9999) && (pHeader->trackY == 9999)) { objectParamsQuery naratorParams; getMultipleObjectParam(narratorOvl, narratorIdx, &naratorParams); pTrack->x_dest = naratorParams.X; pTrack->y_dest = naratorParams.Y; pTrack->endDirection = pHeader->trackDirection; } else { pTrack->x_dest = pHeader->trackX; pTrack->y_dest = pHeader->trackY; pTrack->endDirection = pHeader->trackDirection; } pTrack->flag = 1; autoTrack = true; userEnabled = 0; changeScriptParamInList(ovlIdx, pHeader->id, &relHead, 0, 9998); } } } else if (pHeader->type == RT_MSG) { // MSG int obj1Ovl = pHeader->obj1Overlay; if (!obj1Ovl) obj1Ovl = ovlIdx; int x = 60; int y = 40; if (pHeader->obj1Number >= 0) { objectParamsQuery params; getMultipleObjectParam(obj1Ovl, pHeader->obj1Number, ¶ms); if (narratorOvl > 0) { if ((pHeader->trackX != -1) && (pHeader->trackY != -1) && (pHeader->trackX != 9999) && (pHeader->trackY != 9999)) { x = pHeader->trackX - 100; y = pHeader->trackY - 150; } else { getMultipleObjectParam(narratorOvl, narratorIdx, ¶ms); x = params.X - 100; y = params.Y - 150; } } else if (params.scale >= 0) { x = params.X - 100; y = params.Y - 40; } if (pHeader->obj1NewState != -1) { objInit(obj1Ovl, pHeader->obj1Number, pHeader->obj1NewState); } } if (currentScriptPtr) { createTextObject(&cellHead, ovlIdx, pHeader->id, x, y, 200, findHighColor(), masterScreen, currentScriptPtr->overlayNumber, currentScriptPtr->scriptNumber); } else { createTextObject(&cellHead, ovlIdx, pHeader->id, x, y, 200, findHighColor(), masterScreen, 0, 0); } userWait = 1; autoOvl = ovlIdx; autoMsg = pHeader->id; if ((narratorOvl > 0) && (pHeader->trackX != -1) && (pHeader->trackY != -1)) { actorStruct* pTrack = findActor(&actorHead, narratorOvl, narratorIdx, 0); if (pTrack) { animationStart = false; if (pHeader->trackDirection == 9999) { objectParamsQuery naratorParams; getMultipleObjectParam(narratorOvl, narratorIdx, &naratorParams); pTrack->x_dest = naratorParams.X; pTrack->y_dest = naratorParams.Y; pTrack->endDirection = direction(naratorParams.X, naratorParams.Y, pTrack->x_dest, pTrack->y_dest, 0, 0); } else if ((pHeader->trackX == 9999) && (pHeader->trackY == 9999)) { objectParamsQuery naratorParams; getMultipleObjectParam(narratorOvl, narratorIdx, &naratorParams); pTrack->x_dest = naratorParams.X; pTrack->y_dest = naratorParams.Y; pTrack->endDirection = pHeader->trackDirection; } else { pTrack->x_dest = pHeader->trackX; pTrack->y_dest = pHeader->trackY; pTrack->endDirection = pHeader->trackDirection; } pTrack->flag = 1; autoTrack = true; userWait = 0; userEnabled = 0; freezeCell(&cellHead, ovlIdx, pHeader->id, 5, -1, 0, 9998); } } } } else { linkedRelation = pMenuElement; } pCurrent = pCurrent->pNext; } }
void QTACDraw::textButton_clicked (void) { createTextObject (QTACHART_OBJ_TEXT); }
void QTACDraw::labelButton_clicked (void) { createTextObject (QTACHART_OBJ_LABEL); }