Example #1
0
void BaseScene::ballInRightHole(){
	if (SceneDesigner::balls == nullptr || SceneDesigner::holes == nullptr) return;

	std::vector<int> removeballindex;
	std::vector<int> removeholeindex;

	for (int i = 0; i < int(SceneDesigner::balls->size()); i++){
		auto ball = SceneDesigner::balls->at(i);
		for (int j = 0; j < int(SceneDesigner::holes->size()); j++){
			auto hole = SceneDesigner::holes->at(j);
			// 球进洞了
			if (ball->getSprite()->getPosition().distance(hole->sprite->getPosition()) < (hole->holesize - ball->radius / 3 * 2) ||
				ball->getSprite()->getPosition().distance(hole->sprite->getPosition()) < hole->holesize / 2){
				
				if (int(ball->type) == int(hole->type)	// 进对洞了
					|| hole->type == HoleType::h_blackhole_small || hole->type == HoleType::h_blackhole_mid		// 黑洞
					|| ball->type == BallType::b_doubleball_mid || ball->type == BallType::b_doubleball_small	// 双面球
					){ 
					addScore(500, hole->sprite->getPosition());
					removeballindex.push_back(i);
					removeholeindex.push_back(j);
				}
				else if (ball->type == BallType::b_eggball_mid || ball->type == BallType::b_eggball_small){		// eggBall 进错洞了,也有200分
					addScore(200, hole->sprite->getPosition());
					removeballindex.push_back(i);
					removeholeindex.push_back(j);
				}
			}
		}
	}

	SceneDesigner::removeBallAndHole(removeballindex, removeholeindex);
}
Example #2
0
GEBackground::GEBackground(int x, int y,std::string spriteloc) : GObject(x,y,0,0,true)
{
	this->setSprite(spriteloc);
	setW(getSprite()->w);
	setH(getSprite()->h);

}
Example #3
0
void MainLayer::createSpecRecomend()
{
	if (!_hideNode->isVisible() || _pageView->getCurPageIndex() != MAIN_PAGE || !_isUseSpec)
		return;

	auto rt = RenderTexture::create(_pageView->getContentSize().width,
		_pageView->getContentSize().height,
		Texture2D::PixelFormat::RGBA8888,
		GL_DEPTH24_STENCIL8);
	rt->beginWithClear(0, 0, 0, 0, 0);
	_pageView->getPage(MAIN_PAGE)->visit(_director->getRenderer(), _director->getMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW), true);
	rt->end();
	rt->getSprite()->setScaleY(-1);

	auto sprite = dynamic_cast<Sprite*>(LsTools::seekNodeByName(_rootNode, formatStr("dy_%d", MAIN_PAGE)));
	sprite->setTexture(rt->getSprite()->getTexture());

	auto pane1 = LsTools::seekNodeByName(_pageView, "Panel_0");
	auto img3 = (ui::ImageView*)(LsTools::seekNodeByName(pane1, "3"));
	auto img0 = (ui::ImageView*)(LsTools::seekNodeByName(pane1, "0"));
	auto img2 = (ui::ImageView*)(LsTools::seekNodeByName(pane1, "2"));
	auto img1 = (ui::ImageView*)(LsTools::seekNodeByName(pane1, "1"));

	Rect rect(img1->getLeftBoundary(), img1->getBottomBoundary(),
		img3->getRightBoundary() - img1->getLeftBoundary(),
		img2->getContentSize().height);

	sprite->setTextureRect(Rect(rect.origin.x, rect.origin.y, rect.size.width, 300));
	float bot = img2->getBottomBoundary() - (sprite->getTextureRect().getMaxY() - sprite->getTextureRect().getMinY()) / 2 - 5;
}
Example #4
0
bool GameView::init()
{
    auto bg = Sprite::create("assets/323.jpg");
    this->addChild(bg);
    auto size = Director::getInstance()->getWinSize();
    bg->setPosition(size.width/2, size.height/2);
    
    GetCommponent<GameModel*>("GameModel")->registerEvent(GameModel::EVENT_EXCHANGE, [=](const Msg &msg){
        for (int i=0; i<xCount; i++) {
            for (int j=0; j<yCount; j++) {
                auto fruit = GetCommponent<GameModel*>("GameModel")->getFuit(i, j);
                if (fruit) {
                    auto sp = fruit->getSprite();
                    sp->setPosition(getFruitPosition(i,j));
                }
            }
        }
    });
    for (int i=0; i<xCount; i++) {
        for (int j=0; j<yCount; j++) {
            auto fruit = GetCommponent<GameModel*>("GameModel")->getFuit(i, j);
            if (fruit) {
                auto sp = fruit->getSprite();
                this->addChild(sp);
                sp->setPosition(getFruitPosition(i,j));
            }
        }
    }
    return true;
}
PlayerSprite::PlayerSprite() : _velocity(0.0f), _maxVelocity(.3f), _acceleration(.0005f), _jumping(false), _velY(0.0f)
{
	load("images/PlayerPrototype.png");
	assert(isLoaded());

	getSprite().setOrigin(getSprite().getScale().x / 2, getSprite().getScale().y / 2);
}
Example #6
0
 void Button::setRessource(Ressource* res,bool setSprite){
    this->ressource = res;
    
    if(setSprite){
        this->ressource->getSprite()->setPosition(getSprite()->getPosition().x, getSprite()->getPosition().y);
    }
 }
Example #7
0
void Carrot::CarrotBeHurt(Ref * pRef)
{
    SoundUtil::getInstance()->playEffect(CARROTCRASH);
	MonsterBase * pMonster = (MonsterBase *)pRef;
	iHp -= pMonster->getIAtk();
	if (iHp <= 0)
    {
        GameManager::getInstance()->setICarrotHp(0);
        auto tGameEndType = en_GameLose;
        NOTIFY->postNotification("gameEnd", reinterpret_cast<Ref*>(&tGameEndType));
        NOTIFY->removeAllObservers(this);
        return;
    }
    GameManager::getInstance()->setICarrotHp(iHp);
	Director::getInstance()->getEventDispatcher()->removeEventListenersForTarget(getSprite());
    unscheduleAllSelectors();
	_HpSprite->setSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName(StringUtils::format("BossHP%02d.png",iHp)));
	std::string HurtSpriteName;
	if (iHp == 5 || iHp == 7)
	{
		HurtSpriteName = StringUtils::format("hlb%d.png", iHp + 1);
	}
	else
	{
		HurtSpriteName = StringUtils::format("hlb%d.png", iHp);
	}
	getSprite()->stopAllActions();
	getSprite()->setSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName(HurtSpriteName));
}
////////////////////////////////////////////////////////////////////////////////
// CTOR / DTOR                                                                //
////////////////////////////////////////////////////////////////////////////////
BonusEnemy::BonusEnemy()
{
    //Sprite / Frames
    auto &sprite = getSprite();
    sprite.loadTexture("Images/bonus_sprites.png");

    auto spriteRect = getSprite().getBounds();
    m_spriteSize.x  = spriteRect.getWidth  () / kFramesCount;
    m_spriteSize.y  = spriteRect.getHeight ();


    //Timers
    auto appearTick = COREGAME_CALLBACK_0(BonusEnemy::onAppearTimerTick, this);
    auto stayTick   = COREGAME_CALLBACK_0(BonusEnemy::onStayTimerTick,   this);

    m_appearTimer.setTickCallback(appearTick);
    m_stayTimer.setTickCallback  (stayTick);

     m_appearTimer.setRepeatCount(kRepeatCount_OneTime);
     m_stayTimer.setRepeatCount  (kRepeatCount_OneTime);

    //Init type.
    setType(BonusEnemy::Type::None);

    resetAppearTimer();
}
Example #9
0
void Lifeform::update( float dt ){
	sf::Vector2f pos = this->getPosition();

	if(!_onGround && !_isFlying)
		getTargetVelocity().y += 80.0f;

	calculateVelocity();

	if(pos.y < getHeight()/2) setPosition(pos.x,getHeight()/2);
	if(pos.y > Game::SCREEN_WIDTH - getHeight()/2 ) setPosition(pos.x,Game::SCREEN_WIDTH - getHeight()/2);
    if(pos.x  < getSprite().getOrigin().x){
        _velocity.x = 0;
		setPosition(getSprite().getOrigin().x,pos.y);
    }else if(pos.x > (Game::SCREEN_WIDTH - getSprite().getOrigin().x)){
		_velocity.x = 0;
		setPosition((Game::SCREEN_WIDTH - getSprite().getOrigin().x),pos.y);
	}
    _lastPos = getPosition();

	attemptMove( dt );
	
	//BUGGY Collisions  \/ \/ \/
	//getSprite().move(sf::Vector2f(0,_velocity.y) * dt);
	//_onGround = collidesGround();

	//if(_onGround)
		//setPosition(getPosition().x,_lastPos.y);
} 
Example #10
0
Trap::Trap(int x, int y)
{

	LogManager &log_manager = LogManager::getInstance();

#ifdef REGISTER


	// Need to update fire rate control each step.
	registerInterest(DF_STEP_EVENT);
#endif

	// Set object type.
	setType("Trap");
	auto& resMgr = ResourceManager::getInstance();
	setSprite(resMgr.getSprite("trap"));
	setSpriteSlowdown(4);
	setAltitude(1);
	// Set starting location.
	WorldManager &world_manager = WorldManager::getInstance();
	Position pos(7, world_manager.getBoundary().getVertical() / 2);
	setPosition(Position(x, y));
	setBox(Box(Position(0, 0), getSprite()->getWidth(), getSprite()->getHeight()));
	//setYVelocity(0.25);
	// Set firing variables.
}
Example #11
0
CCRect Entity::boundingBox() {
    if(getSprite() == NULL) {
        return CCRectMake(0, 0, 0, 0);
    }
    CCPoint pos = getPosition();
    CCSize size = getSprite()->getContentSize();

    return CCRectMake(pos.x, pos.y, size.width, size.height);
}
Example #12
0
/**
 * Configures some properties of the specified layer to make it as the
 * "Background" of the sprite.
 *
 * You can't use this routine if the sprite already has a background
 * layer.
 */
void LayerImage::configureAsBackground()
{
  ASSERT(getSprite() != NULL);
  ASSERT(getSprite()->getBackgroundLayer() == NULL);

  setMoveable(false);
  setBackground(true);
  setName("Background");

  getSprite()->getFolder()->stackLayer(this, NULL);
}
Example #13
0
void Missile::explode() {
    state = Missile::sExploding;
    current_animation_ = resources_.explosion_anim_;
    getSprite(sprMissile).setTextureCoords(current_animation_.getRegion().getTextureRect());
    transform.setPosition(transform.getPosition() + speed.getLinearSpeed()/10); // explode a little further than impacted
    transform.setRotation(0);
    transform.setScale({1, 1});
    speed.setLinearSpeed({0, 0});
    speed.setAngularSpeed(0);
    getSprite(sprMissile).setSize({50, 50});
}
Example #14
0
float EnemyForwardAttack::fire()
{
    Level::spawnBullet(new Bullet("bullet_simple.png",
                                  1, 1,
                                  getSprite().getPosition().x,
                                  getSprite().getPosition().y,
                                  180.0f,
                                  1.0f),
                       sf::Vector2f(500.0f, 0.0f),
                       false);
    return 0.5;
}
Example #15
0
void Stickman::render(QPainter &painter) const
{
    // Draw the stickman at the bottom of the screen
    int yPos = painter.device()->height() - getHeight();

    // Find how much to scale the sprite image by to match the bounding box of the stickman
    // If x velocity is negative, we flip the image as well.
    float scaleX = getWidth() / getSprite().width() * (m_xVelocity < 0 ? -1 : 1);
    float scaleY = getHeight() / getSprite().height();

    painter.drawPixmap(m_xOffset, yPos, getSprite().transformed(QTransform().scale(scaleX, scaleY)));
}
Example #16
0
PlayerObject::PlayerObject(std::string Pname) :
velocity(0.0f),
playerName(Pname),
maxVelocity(800.0f),
rotRate(0.0f),
SpeedRate(7.0f),
RUN_YET(false)
{
	load("sprites/android.png");

	getSprite().setOrigin(getSprite().getLocalBounds().width / 2, getSprite().getLocalBounds().height / 2); // Sets the playerObjects origin to the center of the sprite
}
Example #17
0
void MainLayer::createSpec(int index)
{
	//return;
	if (!_hideNode->isVisible() || !_isUseSpec)
		return;
	_pageView->setPositionX(-MY_SCREEN.width * index);
	auto rt = RenderTexture::create(_pageView->getContentSize().width,
		_pageView->getContentSize().height,
		Texture2D::PixelFormat::RGBA8888,
		GL_DEPTH24_STENCIL8);
	rt->beginWithClear(0, 0, 0, 0, 0);
	_pageView->getPage(index)->visit(_director->getRenderer(), _director->getMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW), true);
	rt->end();
	rt->getSprite()->setScaleY(-1);
	// 	_renderPageViewTex->saveToFile("pageview.png");

	auto sprite = dynamic_cast<Sprite*>(LsTools::seekNodeByName(_rootNode, formatStr("dy_%d", index)));
	sprite->setTexture(rt->getSprite()->getTexture());
	//sprite->setTextureRect(rt->getSprite()->getTextureRect());

	if (index == 0)//main page
	{
		auto pane1 = LsTools::seekNodeByName(_pageView, "Panel_0");
		auto img3 = (ui::ImageView*)(LsTools::seekNodeByName(pane1, "3"));
		auto img0 = (ui::ImageView*)(LsTools::seekNodeByName(pane1, "0"));
		auto img2 = (ui::ImageView*)(LsTools::seekNodeByName(pane1, "2"));
		auto img1 = (ui::ImageView*)(LsTools::seekNodeByName(pane1, "1"));

		Rect rect(img1->getLeftBoundary(), img1->getBottomBoundary(),
			img3->getRightBoundary() - img1->getLeftBoundary(),
			img2->getContentSize().height);

		sprite->setTextureRect(Rect(rect.origin.x, rect.origin.y, rect.size.width, 300));
		float bot = img2->getBottomBoundary() - (sprite->getTextureRect().getMaxY() - sprite->getTextureRect().getMinY()) / 2 - 5;
		//sprite->setPosition(_pageView->getContentSize().width / 2, bot);
	}
	else/* if (curPage == 1)*///game category page
	{
		auto pane2 = LsTools::seekNodeByName(_pageView, "Panel_1");
		auto img0 = (ui::ImageView*)(LsTools::seekNodeByName(pane2, "0"));
		auto img5 = (ui::ImageView*)(LsTools::seekNodeByName(pane2, "5"));

		Rect rect(img0->getLeftBoundary(), img0->getBottomBoundary(),
			img5->getRightBoundary() - img0->getLeftBoundary(),
			img5->getContentSize().height);

		sprite->setTextureRect(Rect(rect.origin.x, rect.origin.y, rect.size.width, 300));
		float bot = img0->getBottomBoundary() - (sprite->getTextureRect().getMaxY() - sprite->getTextureRect().getMinY()) / 2 - 5;
		//sprite->setPosition(_pageView->getContentSize().width / 2, bot);
	}
}
Example #18
0
void AlchemyMenu::addButton(AlchemyButton* button){
    buttons.push_back(button);
    int count = buttons.size();
    int posX = getSprite()->getPosition().x;
    int posY = getSprite()->getPosition().y;
    
    if(count == 1){
        button->getSprite()->setPosition((posX*count),posY);
    }else{
        button->getSprite()->setPosition((posX)+ (BUTTON_WIDTH*(count - 1)),posY); //Put in line
    }
   //std::cout<<"(posX*count)+BUTTON_WIDTH"<<(posX)+ (BUTTON_WIDTH*count)<<std::endl;
    
}
Example #19
0
void Player::jump() {
    if (getSprite() == NULL || m_isJumping || Config::isPause) {
        return;
    }
    auto size = Director::getInstance()->getVisibleSize();
    if (size.width / 2 - this->radius < 10) {
        return;
    }
    m_isJumping = true;
    this->size = 0.15;
    float xdiff = this->currentPos.x > 0 ? 1 : -1;
    float ydiff = this->currentPos.y > 0 ? 1 : -1;
    auto jump = JumpBy::create(0.2f, Point(xdiff * size.width / 11, ydiff * size.width / 11), size.width / 10, 1);
    auto scale = ScaleTo::create(0.2f, this->size);
    auto callFunc = CallFunc::create([&](){
        auto vs = Director::getInstance()->getVisibleSize();
        this->currentPos = Point(this->getPosition().x - vs.width / 2, this->getPosition().y - vs.width / 2);
        this->radius += vs.width / 11;
        this->maxRadius = this->maxRadius > this->radius ? this->maxRadius : this->radius;
        this->setScale(0.1);
        m_isJumping = false;
    });
    auto actions = Spawn::create(jump, scale, NULL);
    auto jumpActions = Sequence::create(actions, callFunc, NULL);
    this->runAction(jumpActions);
	Config::score++;

}
Example #20
0
void TileObjectDoodad::draw(Renderer &r, TileView &view, Vec2<float> screenPosition,
                            TileViewMode mode)
{
	std::ignore = view;
	// Mode isn't used as TileView::tileToScreenCoords already transforms according to the mode
	auto doodad = this->doodad.lock();
	if (!doodad)
	{
		LogError("Called with no owning doodad object");
		return;
	}
	sp<Image> sprite;
	Vec2<float> transformedScreenPos = screenPosition;
	switch (mode)
	{
		case TileViewMode::Isometric:
			sprite = doodad->getSprite();
			transformedScreenPos -= doodad->getImageOffset();
			break;
		case TileViewMode::Strategy:
			// no doodads on strategy view?
			return;
		default:
			LogError("Unsupported view mode");
	}
	r.draw(sprite, transformedScreenPos);
}
Example #21
0
//¶ÔÏóÊÇ·ñ±»´¥Ãþ
//bool BaseObject::containsTouchLocation(cocos2d::CCTouch *touch)
bool BaseObject::containsTouchLocation(CCPoint world_point)
{
	CCSize size = getSprite()->getContentSize();
	CCRect rect = CCRect(-size.width / 2.0, -size.height / 2.0, size.width, size.height);
	//return rect.containsPoint(convertTouchToNodeSpaceAR(touch));
	return rect.containsPoint(convertToNodeSpaceAR(world_point));
}
Example #22
0
void ShooterPlant::draw(sf::RenderWindow &window)
{
	window.draw(*getSprite());
	for (std::list<Bullet*>::iterator iter = getBulletList().begin();  iter != getBulletList().end();  iter++) {
		window.draw((*iter)->getSprite());
	}
}
void StartMenu::renderButtons()
{
	for(auto i = mButtons.begin() + Resumedraw; i != mButtons.end(); i++)
	{
		ImageManager::render(&i->getSprite());
	}
}
Sprite *
SpriteFactory::getSprite(const std::string &name)
{
	std::vector<std::string> names;
	names.push_back(name);
	return getSprite(names);
}
bool DisconnectHandler::execute(GameNet::Box * box)
{
    CCLOG("%s disconnected.", box->getAddress().ToString());
    
    int id = box->getId();
    auto player = game->getPlayer(id);
    if(player == nullptr){
        CCLOG("Player not found in the Game.");
        return false;
    }
    
    game->getStadium()->removeChild( player->getSprite() );
    game->removePlayer(player);
    
    // set new admin
    if( player->isAdmin() && game->playersCount() >= 1 )
    {
        auto newAdmin = game->getRandomPlayer();
        game->setAsAdmin(newAdmin);
        CCLOG("New admin is %s", newAdmin->getName().c_str());
    }
    else if (game->playersCount() == 0)
    {
        game->getStadium()->setAdminName("");
    }
    
    player->destroy();
    return false;
}
void RenderTextureZbuffer::renderScreenShot()
{
    auto texture = RenderTexture::create(512, 512);
    if (NULL == texture)
    {
        return;
    }
    texture->setAnchorPoint(Point(0, 0));
    texture->begin();

    this->visit();

    texture->end();

    auto sprite = Sprite::createWithTexture(texture->getSprite()->getTexture());

    sprite->setPosition(Point(256, 256));
    sprite->setOpacity(182);
    sprite->setFlippedY(1);
    this->addChild(sprite, 999999);
    sprite->setColor(Color3B::GREEN);

    sprite->runAction(Sequence::create(FadeTo::create(2, 0),
                                          Hide::create(),
                                          NULL));
}
Example #27
0
	std::vector<Sprite> OAM::getSprites() const
	{
		// check if sprites are 8x16 or 8x8
		auto lcdc = mmu_.read(memorymap::LCDC_REGISTER);
		const bool mode_8x16 = IS_SET(lcdc, memorymap::LCDC::OBJ_8x16) != 0;

		std::vector<Sprite> sprites;

		const auto num_sprites = 40;
		for (auto i = 0; i < num_sprites; ++i)
		{
			auto sprite = getSprite(i);
			
			if (mode_8x16)
			{
				sprite.height = 16;
			}
			else
			{
				sprite.height = 8;
			}

			sprites.push_back(sprite);
		}

		return sprites;
	}
Example #28
0
void Player::hit() {
	if (getSprite() == NULL) {
		return;
	}

	

	m_iHP -= 15;
	if (m_iHP < 0) {
		m_iHP = 0;
	}

	/* 创建几种动作对象 */
	auto backMove = MoveBy::create(0.1f, Point(-20, 0));
	auto  forwardMove = MoveBy::create(0.1f, Point(20, 0));
	auto  backRotate = RotateBy::create(0.1f, -5, 0);
	auto  forwardRotate = RotateBy::create(0.1f, 5, 0);

	/* 分别组合成两种动作 */
	auto  backActions = Spawn::create(backMove, backRotate, NULL);
	auto  forwardActions = Spawn::create(forwardMove, forwardRotate, NULL);

	auto  actions = Sequence::create(backActions, forwardActions, NULL);

	stopAllActions();	/* 先停止所有正在执行的动作 */
	resetData();		/* 重置数据 */
	runAction(actions);	/* 执行动作 */
}
Example #29
0
void Player::jump() {
	if (getSprite() == NULL) {
		return;
	}

	/* 如果主角还在跳跃中,则不重复执行 */
	if (m_isJumping) {
		return;
	}

	/* 标记主角为跳跃状态 */
	m_isJumping = true;

	/* 创建跳跃动作:原地跳跃,高度250像素,跳跃一次 */
	auto jump = JumpBy::create(2.0f, Point(0, 0), 250, 1);

	/* 创建回调动作,跳跃结束后修改m_isJumping标记为false */
	auto callFunc = CallFunc::create([&](){
		m_isJumping = false;
	});

	/* 创建连续动作 */
	auto jumpActions = Sequence::create(jump, callFunc, NULL);

	/* 执行动作 */
	this->runAction(jumpActions);
}
Example #30
0
void initPlayer()
{
	player.sprite = getSprite(PLAYER_RIGHT_SPRITE);
	
	player.x = SCREEN_WIDTH / 2;
	player.y = SCREEN_HEIGHT / 2;
}