void B9Projector::drawAll() { blankProjector(); drawGrid(); drawStatusMsg(); drawCBM(); update(); }
void Game::loadResources() { Log::Out << "Game: Loading resources..." << endl; istream* resourcesFile = Pack::GetInstance()->GetStream("resources.json"); if (!resourcesFile->good()) { Log::Out << "Couldn't load file resources.json" << endl; return; } Json::Value root; (*resourcesFile) >> root; delete resourcesFile; Log::Out << "Game: Initializing Scanlines..." << endl; Json::Value shaders = root["outputShaders"]; if (Json::Value::null != shaders) { ShaderMgr* shaderMgr = ShaderMgr::GetInstance(); for (Json::Value::iterator itShaderDesc = shaders.begin(); itShaderDesc != shaders.end(); ++itShaderDesc) { vector<Shader*> shaderPtrs; Json::Value child = *itShaderDesc; string name = child["name"].asString(); Json::Value pathArray = child["shaderPaths"]; for (Json::Value::iterator itShaderPath = pathArray.begin(); itShaderPath != pathArray.end(); ++itShaderPath) { string shaderFile = itShaderPath->asString(); ShaderType shaderType = shaderFile.find(".vertex") == string::npos ? Fragment : Vertex; stringstream ss; ss << "Loading " << ((shaderType == Vertex) ? "vertex" : "fragment") << " shader: " << shaderFile; drawStatusMsg(ss.str()); shaderPtrs.push_back(shaderMgr->LoadShader(shaderFile, shaderType)); } Program* p = new Program(shaderPtrs); if (p->ProgramId != 0) { p->Textures.push_back(_g->GetFramebufferTexture()); } Json::Value texArray = child["additionalTextures"]; for (Json::Value::iterator itTexturePath = texArray.begin(); itTexturePath != texArray.end(); ++itTexturePath) { string texPath = itTexturePath->asString(); p->Textures.push_back(Frame(texPath).Texture); } this->_blitProgramMap[name] = p; if (child.isMember("default") && child["default"].asBool()) { this->_blitProgram = p; } } if (this->_blitProgram == NULL && this->_blitProgramMap.size() > 0) { this->_blitProgram = (this->_blitProgramMap.end())->second; } } Json::Value images = root["images"]; if (Json::Value::null != images) { TextureMgr* texMgr = TextureMgr::GetInstance(); for (Json::Value::iterator img = images.begin(); img != images.end(); ++img) { string file = img->asString(); stringstream ss; ss << "Loading image: " << file; drawStatusMsg(ss.str()); texMgr->LoadTexture(file); } } Json::Value music = root["music"]; if (Json::Value::null != music) { MusicManager* musicMgr = MusicManager::GetInstance(); for (Json::Value::iterator mus = music.begin(); mus != music.end(); ++mus) { string file = mus->asString(); stringstream ss; ss << "Loading song " << file; drawStatusMsg(ss.str()); musicMgr->LoadMusic(mus->asString()); } } Json::Value effects = root["fx"]; if (Json::Value::null != effects) { MusicManager* musicMgr = MusicManager::GetInstance(); for (Json::Value::iterator fx = effects.begin(); fx != effects.end(); ++fx) { stringstream ss; string file = fx->asString(); ss << "Loading effect " << file; drawStatusMsg(ss.str()); musicMgr->LoadMusic(fx->asString()); } } drawStatusMsg("Done!"); }
void HUD_updateStatusView(u8 joy, u8 bA, u8 bB, u8 bC, u8 bStart, u8 statusCode){ u8 i,j; u8 channel; char status[20]; //for each line for (j=0;j<9;j++){ if (statusCode & statusCodes[j]){ drawStatusMsg(joy,j); } } // u16 x = X0 + (joy * (WIDTH_TILES/2)); // if (joy) x--; // u16 x = (joy * ((WIDTH_TILES-(HORIZONTAL_MARGIN*2)) / 2)) + (HORIZONTAL_MARGIN); u16 x = leftEdge(joy); u16 y = Y_STATUS; if (bStart && statusCode){ bA = bB = bC = 0; } else{ if (bA > 0) bA = 1; if (bB > 0) bB = 1; if (bC > 0) bC = 1; } //draw either grey or white circles to represent the fingering buttons VDP_setTileMapXY(APLAN, TILE_ATTR_FULL(PAL0, 0, 0, 0, TILE_USERINDEX+bA), x+X_BUTTONS, y+Y_BUTTONS); VDP_setTileMapXY(APLAN, TILE_ATTR_FULL(PAL0, 0, 0, 0, TILE_USERINDEX+bB), x+X_BUTTONS+2, y+Y_BUTTONS); VDP_setTileMapXY(APLAN, TILE_ATTR_FULL(PAL0, 0, 0, 0, TILE_USERINDEX+bC), x+X_BUTTONS+4, y+Y_BUTTONS); char solfege[3]; u8 mode = modeList[joy][keyIndex[joy]]; u8 scalePitch = Instrument_buttonsToScalePitch(bA, bB, bC) % 7; u8 truePitch = SCALES[mode][scalePitch]; switch (scalePitch){ case 0: strcpy(solfege, "Do"); break; case 1: strcpy(solfege, (truePitch == 1) ? "Ra" : "Re"); break; case 2: strcpy(solfege, (truePitch == 3) ? "Me" : "Mi"); break; case 3: strcpy(solfege, (truePitch == 6) ? "Fi" : "Fa"); break; case 4: strcpy(solfege, (truePitch == 8) ? "Si" : (truePitch == 6) ? "Se" : "Sol"); break; case 5: strcpy(solfege, (truePitch == 10) ? "Li" : (truePitch == 8) ? "Le" : "La"); break; case 6: strcpy(solfege, (truePitch == 10) ? "Te" : "Ti"); break; default: strcpy(solfege, ""); break; } drawText(solfege, x+X_BUTTONS+6, y+Y_BUTTONS, 0, 3); // VDP_fillTileMapRectInc(APLAN, TILE_ATTR_FULL(PAL0, 0, 0, 0, TILE_USERINDEX+2), x+X_NOTE, 25, 1, 2); //draw musical note if (playing[joy]){ VDP_fillTileMapRectInc(APLAN, TILE_ATTR_FULL(PAL0, 0, 0, 0, TILE_USERINDEX+2), x+X_NOTE, Y_NOTE, 1, 2); } else { VDP_clearTileMapRect(APLAN, x+X_NOTE, Y_NOTE, 1, 2); } }