Window::Window(): m_carsor(0), m_rect(GMRect2D(0, 0)), m_Color(GMColor::Black), m_time(0){ m_Color.a = 0.5; }
/* このシーンが表示されるときに呼ばれます。 */ void FireScene::willAppear(GMGraphics* g) { // 基本のシェーダ、2Dテクスチャ描画用のバッチ mBasicEffect = new GMBasicEffect(); mSpriteBatch = new GMSpriteBatch(); // 2D用画面設定 GMVector2D screenSize = g->getScreenSize(); mBasicEffect->setProjectionMatrix(GMMatrix::CreateOrthographicOffCenter(0.0, screenSize.x, 0.0, screenSize.y, -1.0, 1.0)); mBasicEffect->setViewMatrix(GMMatrix::Identity); mBasicEffect->enableLighting(false); g->enableDepthTest(false); // 「次へ」ボタン mNextButton = new GMButton(GMRect2D(10, screenSize.y-48, 140, 38), "next_button.png"); // タイトル文字列のセットアップ mTitleLabel = new GMLabel("Verdana", 40.0); mTitleLabel->setText("Fire Explosion"); // パーティクルのセットアップ mParticleSystem = new GMParticleSystem2D("particle_smoke_128.png"); mParticleSystem->setCenterPos(GMVector2D(screenSize.x/2, screenSize.y/2-20)); mParticleSystem->setLife(60); mParticleSystem2 = new GMParticleSystem2D("particle_fire_128.png"); mParticleSystem2->setCenterPos(GMVector2D(screenSize.x/2, screenSize.y/2)); mParticleSystem2->setLife(10); mMovingCenterPos = false; }
void CharacterRetireLeady::draw(GMSpriteBatch *s){ sizurus_fonts::SKFont::drawCharacter (m_character->getCharacter().c_str(), s, GMRect2D(m_character->getEndPos(), 50), m_character->getColor(), 0, GMVector2D(0.5, 0.5)); }
void BaseArea::draw(GMSpriteBatch* s){ m_prevChild->draw(s); gPlayScene->getCurrentEffect()->begin(); s->begin(); GMColor blue = GMColor::Blue; blue.a = m_time; s->fill(GMRect2D(0, SCREEN_SIZE), blue); s->end(); gPlayScene->getCurrentEffect()->end(); }
void CharacterRetire::draw(GMSpriteBatch* s){ GMColor c = m_character->getColor(); c.a = 1-this->m_time; sizurus_fonts::SKFont::drawCharacter (m_character->getCharacter().c_str(), s, GMRect2D(m_character->getEndPos(), 50), c, m_character->getAngle(), GMVector2D(0.5, 0.5)); }
Window::Window(): m_WindowRect(GMRect2D(25, 25, 950, 150)), m_color(GMColor::Black), m_state(0), m_returnKey(-1), m_nextReturnKey(-1), m_isLockInput(0) { m_color.a = 0.5; m_state = new WindowState(this); }
SceneStateChild* MapInterYesOrNo::update(GMInput* input, double deltaTime){ SceneStateChild* next = this; m_time += deltaTime; if(m_time >= 1){ m_time = 1; } if(m_questionWin){ if(selectWindow::Element* select = m_questionWin->update(input, deltaTime)){ if(select->getLabel() == "いいよ"){ m_user->getJaSpkWin()->addString("じゃあ、移動するわ。", select_ChangeArea); }else if(select->getLabel() == "やめとく"){ m_user->getJaSpkWin()->addString("そう。", select_backAreaSelect); }else if(select->getLabel() == "ねえ、そこってどんな場所?"){ m_user->getJaSpkWin()->addString("未実装よー", select_BackCarsorSelect); } m_user->getJaSpkWin()->setKey(-1); delete m_questionWin; m_questionWin = 0; } }else{ if(m_user->getJaSpkWin()->getKey() == select_BackCarsorSelect && input->isKeyDownTriggered(GMKeyMaskZ|GMKeyMaskReturn)){ m_user->getJaSpkWin()->setKey(99); }else if(m_user->getJaSpkWin()->getKey() == select_backAreaSelect && input->isKeyDownTriggered(GMKeyMaskZ|GMKeyMaskReturn)){ m_user->getJaSpkWin()->setKey(-1); next = new CarsorMove(m_user); }else if(m_user->getJaSpkWin()->getKey() == select_ChangeArea && input->isKeyDownTriggered(GMKeyMaskZ|GMKeyMaskReturn)){ m_user->getJaSpkWin()->setKey(-1); gPlayScene->changeScene(new baseArea::SKBaseAreaScene(m_user->getCarsor()->getCurrentObj()->Name())); }else if(m_user->getJaSpkWin()->getKey() == 99){ m_questionWin = new selectWindow::Window; selectWindow::Element* elems[] = { new selectWindow::Element(m_questionWin), new selectWindow::Element(m_questionWin), new selectWindow::Element(m_questionWin), }; elems[0]->setLabel("いいよ"); elems[1]->setLabel("やめとく"); elems[2]->setLabel("ねえ、そこってどんな場所?"); selectWindow::Carsor* carsor = new selectWindow::Carsor(m_questionWin); m_questionWin->setCarsor(carsor); elems[0]->setCarsor(carsor); for(int i = 0; i < 3; i++){ elems[i]->setRect(GMRect2D(SCREEN_SIZE.x/2-200, SCREEN_SIZE.y-50-i*50, 650, 50)); m_questionWin->addElement(elems[i]); } m_user->getJaSpkWin()->setKey(-1); }else if(m_is2Select){ next = new CarsorMove(m_user); } } return next; }
void TileLayer::draw(GMSpriteBatch *s){ const GMVector2D& p_pos = m_parent->getBaseAreaScene()->getCharMan()->getPlayer()->getPos(); int start_x = std::max(((int)(p_pos.x)-11), 0); int end_x = std::min(((int)(p_pos.x)+12), m_width); int start_y = std::max(((int)(-p_pos.y)-7), 0); int end_y = std::min(((int)(-p_pos.y)+8), m_height); for(int y = start_y; y < end_y; y++){ for(int x = start_x; x < end_x; x++){ GMVector2D TileDestPoint = SKBaseAreaScene::convertMat2Draw(GMVector2D(x, y)); m_Tiles[y*m_width+x]->draw(s, GMRect2D(TileDestPoint, SKBaseAreaScene::getTileDestSize())); } } }
bool TileLayer::isCollision(const GMRect2D& rect) const{ int start_x = std::max(((int)(rect.x)-2), 0); int end_x = std::min(((int)(rect.x)+2), m_width); int start_y = std::max(((int)(-rect.y)-2), 0); int end_y = std::min(((int)(-rect.y)+2), m_height); for(int y = start_y; y < end_y; y++){ for(int x = start_x; x < end_x; x++){ if(m_Tiles[y*m_width+x]->getGid()){ if(rect.intersects(GMRect2D(x, -y-1, 1, 1))){ return true; } } } } return false; }
void StatusUI::draw(GMSpriteBatch *s) const{ GMColor c = GMColor::SkyBlue; c.a = 0.2; s->draw(0, GMVector2D(50, SCREEN_SIZE.y-100), GMRect2D(50, SCREEN_SIZE.y-100, SCREEN_SIZE.x-100, 100), c); // TODO: ステータスUIの実装 GMFont* f = gGameInst->getFont(); std::ostringstream oss; oss << " " << m_scene->getMassMan()->getKaisou() << "F " << "Lv" << 1 << " HP" << m_scene->getPlayer()->getHp() << "/" << 100 << " " << 0 << "G"; std::string str = oss.str(); f->drawString(s, str, GMVector2D(50, SCREEN_SIZE.y - 50)); }
const std::string TileLayer::isCollisionANDGetNumberingStr(const GMRect2D& rect) const{ int start_x = std::max(((int)(rect.x)-2), 0); int end_x = std::min(((int)(rect.x)+2), m_width); int start_y = std::max(((int)(-rect.y)-2), 0); int end_y = std::min(((int)(-rect.y)+2), m_height); for(int y = start_y; y < end_y; y++){ for(int x = start_x; x < end_x; x++){ if(m_Tiles[y*m_width+x]->getGid()){ if(rect.intersects(GMRect2D(x, -y-1, 1, 1))){ ostringstream oss; oss << "obj_" << m_parent->getTileSetMan()->getLocalGid(m_Tiles[y*m_width+x]->getGid()); return oss.str().c_str(); } } } } return ""; }
// 画面座標に変換する GMRect2D SKUserInterface::convertRatioToPixel(const GMRect2D& in) { GMRect2D rect(in.x*SCREEN_SIZE.x, in.y*SCREEN_SIZE.y, in.width*SCREEN_SIZE.x, in.height*SCREEN_SIZE.y); return GMRect2D(rect.x-rect.width/2, rect.y-rect.height/2, rect.width, rect.height); }
void Murabito::draw(GMSpriteBatch *s){ s->draw(0, GMRect2D(SKBaseAreaScene::convertMat2Draw(GMVector2D(m_Rect.x, m_Rect.y)), SKBaseAreaScene::convertMat2Draw(GMVector2D(m_Rect.width, m_Rect.height))), GMColor::Red); }
void BackImage::draw(GMSpriteBatch *s){ s->draw(m_parent->getTexMan()->get(SKMapSelectScene::texName_BGI), GMRect2D(0, SCREEN_SIZE)); }
void MapInterYesOrNo::draw(GMSpriteBatch* s){ GMColor blue = GMColor::Blue; blue.a = m_time/3; s->fill(GMRect2D(0, SCREEN_SIZE), blue); if(m_questionWin) m_questionWin->draw(s); };
GMRect2D EnemyBullet8::getDefenceBounds() const { return GMRect2D(mPos.x,mPos.y,mSize.x,mSize.y); }
GMRect2D GMViewport::getBounds() const { return GMRect2D(x, y, width, height); }