void clsStateMenu::Init(LPDIRECT3DDEVICE9 d3ddev, LPD3DXSPRITE _SpriteHandler) { //D3DXCreateSprite(d3ddev, &_SpriteHandler); Background = CreateSurfaceFromFile(d3ddev,"images\\Background.png"); MenuButton = new clsAnimation(_SpriteHandler,"images\\menu_a.png",300,50,4,1, 100); MenuButtonHightLight = new clsAnimation(_SpriteHandler,"images\\menu_b.png",300,50,4,1, 100); }
void CMarioGame::LoadResources(LPDIRECT3DDEVICE9 d3ddv) { srand((unsigned)time(NULL)); // TO-DO: not a very good place to initial sprite handler D3DXCreateSprite(d3ddv, &_SpriteHandler); _Background = CreateSurfaceFromFile(_d3ddv, BACKGROUND_FILE); HRESULT res = D3DXCreateSprite(_d3ddv, &_SpriteHandler); //khởi tạo mario mario_x = 20; mario_y = GROUND_Y; _IsOnGround = true; mario_vx = 0; mario_vx_last = 1.0f; mario_vy = 0; marioSprite = new CSprite(_SpriteHandler, MARIO_IMAGE, 36, 34, 50, 18); mario = new Mario(mario_x, mario_y, 36, 34, mario_vx, 0, 0, MARIO_ACCELERATION_X , 0, NULL, marioSprite, NULL, NULL); // One sprite only :) ground_middle = new CSprite(_SpriteHandler, GROUND_MIDDLE, 32, 32, 1, 1); brick = new CSprite(_SpriteHandler, BRICK, 32, 32, 1, 1); fallDown = new CSprite(_SpriteHandler, CHECK_FALL, 4, 619, 1, 1); //fallBox = new Object(600, 0, 4, 619, 0, 0, fallDown); //_CollisionBox = new Object(mario_x, mario_y, 32, 32, mario_vx, mario_vy, mario_right); _IsFallOfGround = false; }
//--------------------------------------------------------------------- // Creates a DirectComposition visual tree and places each visual // inside the application window //--------------------------------------------------------------------- HRESULT CApplication::CreateDCompositionVisualTree() { static const WCHAR *filename = L"220Strawberry.png"; static const float tileSize = 0.3f * WINDOW_SIZE; static const int visualChildCount = sizeof(_visualChild) / sizeof(_visualChild[0]); static const float d = 2.0f * WINDOW_SIZE; HRESULT hr = ((_device == nullptr) || (_hwnd == NULL)) ? E_UNEXPECTED : S_OK; int bitmapWidth = 0; int bitmapHeight = 0; CComPtr<IDCompositionSurface> surface; // Create DirectComposition surface from the bitmap file if (SUCCEEDED(hr)) { hr = CreateSurfaceFromFile(filename, &bitmapWidth, &bitmapHeight, &surface); } if (SUCCEEDED(hr)) { _bitmapWidth = bitmapWidth; _bitmapHeight = bitmapHeight; hr = _device->CreateVisual(&_visual); } // Set the content of each visual to be the surface that was created from the bitmap if (SUCCEEDED(hr)) { for (int i = 0; SUCCEEDED(hr) && i < visualChildCount; ++i) { hr = _device->CreateVisual(&_visualChild[i]); if (SUCCEEDED(hr)) { hr = _visual->AddVisual(_visualChild[i], FALSE, nullptr); } if (SUCCEEDED(hr)) { hr = _visualChild[i]->SetContent(surface); } } } // Using DirectComposition transforms to scale and place each visual such that the tiles // are side by side within the application window if (SUCCEEDED(hr)) { for (int i = 0; SUCCEEDED(hr) && i < visualChildCount; ++i) { //setting up scale transform on each visual CComPtr<IDCompositionScaleTransform> scaleTransform; if (SUCCEEDED(hr)) { hr = _device->CreateScaleTransform(&scaleTransform); } float sx = tileSize / bitmapWidth; if (SUCCEEDED(hr)) { hr = scaleTransform->SetScaleX(sx); } float sy = tileSize / bitmapHeight; if (SUCCEEDED(hr)) { hr = scaleTransform->SetScaleY(sy); } //Setting up a translate transform on each visual CComPtr<IDCompositionTranslateTransform> translateTransform; if (SUCCEEDED(hr)) { hr = _device->CreateTranslateTransform(&translateTransform); } float x = (visualChildCount - 1 - i) * TILE_SPACING; float y = TILE_SPACING + 30; if (SUCCEEDED(hr)) { hr = translateTransform->SetOffsetX(x); } if (SUCCEEDED(hr)) { hr = translateTransform->SetOffsetY(y); } // Creating a transform group to group the two transforms together such that // they can be applied at once. IDCompositionTransform *transforms[] = { scaleTransform, translateTransform, }; CComPtr<IDCompositionTransform> transformGroup; if (SUCCEEDED(hr)) { _device->CreateTransformGroup(transforms, sizeof(transforms)/sizeof(transforms[0]), &transformGroup); } if (SUCCEEDED(hr)) { _visualChild[i]->SetTransform(transformGroup); } } } return hr; }