コード例 #1
0
void UIGameHelpWindow::addPackageHelp (UINode *panel)
{
	UINode* hbox = createHPanel();
	hbox->add(createSprite(EntityTypes::PACKAGE_ROCK));
	hbox->add(createTexture("icon-plus"));
	hbox->add(createSprite(EntityTypes::PACKAGETARGET_ROCK));
	hbox->add(createTexture("icon-result"));
	hbox->add(createSprite(EntityTypes::PACKAGETARGET_ROCK, Animations::ANIMATION_ACTIVE));
	panel->add(hbox);
}
コード例 #2
0
void UIGameHelpWindow::addStoneFlyingHelp (UINode *panel)
{
	UINode* hbox = createHPanel();
	hbox->add(createSprite(EntityTypes::STONE));
	hbox->add(createTexture("icon-plus"));
	hbox->add(createSprite(EntityTypes::NPC_FLYING, Animations::ANIMATION_FLYING_RIGHT, iconsize * 2.0f, iconsize));
	hbox->add(createTexture("icon-result"));
	hbox->add(createSprite(EntityTypes::NPC_FLYING, Animations::ANIMATION_FALLING_RIGHT, iconsize * 2.0f, iconsize));
	panel->add(hbox);
}
コード例 #3
0
void UIGameHelpWindow::addTreeHelp (UINode *panel)
{
	UINode* hbox = createHPanel();
	hbox->add(createSprite(EntityTypes::STONE));
	hbox->add(createTexture("icon-plus"));
	hbox->add(createSprite(EntityTypes::TREE));
	hbox->add(createTexture("icon-result"));
	hbox->add(createSprite(EntityTypes::TREE, Animations::ANIMATION_DAZED));
	hbox->add(createSprite(EntityTypes::APPLE));
	panel->add(hbox);
}
コード例 #4
0
void UIGameHelpWindow::addLivesHelp (UINode *panel)
{
	UINode* hbox = createHPanel();
	const int n = Config.getAmountOfFruitsForANewLife();
	for (int i = 0; i < n - 1; ++i) {
		hbox->add(createSprite(EntityTypes::APPLE));
	}
	hbox->add(createSprite(EntityTypes::BANANA));
	hbox->add(createTexture("icon-result"));
	hbox->add(createTexture("icon-plus"));
	hbox->add(createSprite(EntityTypes::PLAYER));
	panel->add(hbox);
}
コード例 #5
0
ファイル: SpriteManager.cpp プロジェクト: ns-xlz/ns-xlz-cocos
void SpriteManager::win()
{
	batchNode->removeChild(allSp[0],true);

	Director *director = Director::getInstance();
	director->pause();//暂停各种运动

	createSprite(NULL, Rect(419,652,619-419,708-652), batchNode, 0.5, 0.5, WIDTH/2, HEIGHT/2, 500, 200, PauseBGZOrder+1);

	//左上角 的返回键按钮
	allSp[23] = createSprite(NULL, Rect(871,154,910-871,186-154), batchNode, 0.5f, 0.5f, 45, 540-37, 63, 55, GoBackZOrder);
	allSp[23]->setRotation(-90.0f);
	AddEventListenerSprite(allSp[23]);
}
コード例 #6
0
ファイル: SpriteManager.cpp プロジェクト: ns-xlz/ns-xlz-cocos
void SpriteManager::backgroundRoll()//背景滚动方法
{

	//===背景===
	Sprite* bg = createStaticSprite(new std::string("bg"), "pic/game_bg_01_001-hd.png", 0.0f, 0.0f, 0, 0, WIDTH, HEIGHT);//创建背景精灵
	if(layer->getTag() == INDEX_GRAMLAYER)
	{
		((GameLayer*)(layer))->spMap["bg"]=bg;
		bg->setColor(Color3B(98,5,170));
	}
	else if(layer->getTag() == INDEX_FLYLAYER)
	{
		((FlyLayer*)(layer))->spMap["bg"]=bg;
		bg->setColor(Color3B(98,5,170));
	}
	else
	{
		bg->setColor(Color3B(0,83,208));
	}
	layer->addChild(bg,BackgroundZOrder);


	Sprite* bg1 = createStaticSprite(new std::string("bg1"), "pic/game_bg_01_001-hd.png", 0.0f, 0.0f, WIDTH, 0, WIDTH, HEIGHT);//创建背景精灵
	if(layer->getTag() == INDEX_GRAMLAYER)
	{
		((GameLayer*)(layer))->spMap["bg1"]=bg1;
		bg1->setColor(Color3B(98,5,170));
	}
	else if(layer->getTag() == INDEX_FLYLAYER)
	{
		((FlyLayer*)(layer))->spMap["bg1"]=bg1;
		bg1->setColor(Color3B(98,5,170));
		Sprite* sp1 = createSprite(NULL, Rect(0,499,319,528-499), batchNode, 0.0f, 0.0f, 0, 0, WIDTH, HEIGHT_EDGE, BackgroundZOrder+1);
		Sprite* sp2 = createSprite(NULL, Rect(0,499,319,528-499), batchNode, 0.0f, 1.0f, 0, HEIGHT, WIDTH, HEIGHT_EDGE, BackgroundZOrder+1);
	}
	else
	{
		bg1->setColor(Color3B(0,83,208));
	}
	layer->addChild(bg1,BackgroundZOrder);

	//背景 滚屏代码
	auto a1 = MoveBy::create(10, Point(-WIDTH, 0));
	auto  action = RepeatForever::create(Sequence::create( Place::create(Point(0, 0)), a1, NULL));
	bg->runAction(action);
	a1 = MoveBy::create(10, Point(-WIDTH, 0));
	action = RepeatForever::create(Sequence::create( Place::create(Point(WIDTH, 0)), a1, NULL));
	bg1->runAction(action);

}
コード例 #7
0
MenuPanel::MenuPanel(MenuElements& elements,
                     const sf::Vector2f& position) :
    m_position(position)
{
    for(auto button = begin(elements.buttons); button != end(elements.buttons); ++button)
        createButton(*button);

    for(auto checkbox = begin(elements.checkboxes); checkbox != end(elements.checkboxes); ++checkbox)
        createCheckBox(*checkbox);

    for(auto slider = begin(elements.slider); slider != end(elements.slider); ++slider)
        createSlider(*slider);

    for(auto label = begin(elements.labels); label != end(elements.labels); ++label)
        createLabel(*label);

    for(auto sprite = begin(elements.sprites); sprite != end(elements.sprites); ++sprite)
        createSprite(*sprite);
    
    for(auto inputbox = begin(elements.infobox); inputbox != end(elements.infobox); ++inputbox)
        createInputBox(*inputbox);

    for(auto it = begin(elements.animationContainer); it != end(elements.animationContainer); ++it)
        createAnimationContainer(std::move(*it));

    setCorrelation();
    std::sort(m_elements.begin(), m_elements.end(), 
        [](const std::unique_ptr<MenuElement>& a, const std::unique_ptr<MenuElement>& b) -> bool
    { 
        return a->getId() < b->getId(); 
    });
}
コード例 #8
0
ファイル: MenuButton.cpp プロジェクト: legionth/DevGame
MenuButton::MenuButton(Menu* menu,Menu* prevMenu,std::string spriteFile)
{
	this->menu = menu;
	this->prevMenu = prevMenu;
	createSprite(spriteFile);
	setFrameSize(SIZE_BUTTON_WIDTH_NORMAL,SIZE_BUTTON_HEIGHT_NORMAL);
}
コード例 #9
0
void BackGroud::onUpdate(float dt) {

    log("-----%d", getReferenceCount());
    for (int i = 0; i < _skys.size(); i++) {
        auto sky = _skys.at(i);
        auto floor = _floors.at(i);
        sky->setPositionX(sky->getPositionX() - _speed);
        floor->setPositionX(floor->getPositionX() - _speed);
        if (sky->getPositionX() < 0 - _visibleSize.width /2) {
            _skys.eraseObject(sky);
            _floors.eraseObject(floor);
            i--;
        }
        if (i == _skys.size() -1 && sky->getPositionX() <= _visibleSize.width/2) {
            auto n_sky = createSprite("bg_sky.png", Point(sky->getPositionX() +_visibleSize.width, sky->getPositionY()));
            _layer->addChild(n_sky, 0);
            _skys.pushBack(n_sky);

            auto n_floor = createSprite("bg_floor.png", Point(floor->getPositionX() +_visibleSize.width, floor->getPositionY()));
            n_floor->setPhysicsBody(PhysicsBody::createBox(Size(_visibleSize.width, 64*_scaleY)));
            n_floor->getPhysicsBody()->setDynamic(false);
            //设置碰撞器
            n_floor->getPhysicsBody()->setContactTestBitmask(1);
            _layer->addChild(n_floor, 101);
            _floors.pushBack(n_floor);
        }
    }

//    for (auto it = _bgs.begin(); it != _bgs.end(); it++) {
//        //移动背景
//        (*it)->setPositionX((*it)->getPositionX() - _speed);
//        //判断背景是否已经移除视野 进行删除
//        if ((*it)->getPositionX() < 0 - _visibleSize.width /2) {
//            (*it)->removeFromParent();
//            _bgs.eraseObject(*it);
//        }
//        //判断是否需要新加bg图片
//        if (it +1 == _bgs.end() && (*it)->getPositionX() <=_visibleSize.width/2 -_speed) {
//            auto bg = createSprite(Point((*it)->getPositionX() +_visibleSize.width -_speed, _visibleSize.height /2));
//            _layer->addChild(bg, 0);
//            _bgs.pushBack(bg);
//            break;
//        }
//    }
}
コード例 #10
0
ファイル: image.cpp プロジェクト: felixbarring/VoxelGame
Image::Image(double x,
             double y,
             double width,
             double height,
             const std::string& image,
             graphics::GraphicsManager& graphicsManager)
  : m_graphicsManager{graphicsManager}
  , m_sprite{createSprite(x, y, width, height, image)} {
}
コード例 #11
0
void PauseLayer::addObjectiveLayer() {
    objectiveLayer = CCLayer::create();
    objectiveLayer->setPosition(ccp(winSize.width * 0.5, winSize.height * 0.5));
    float scale = Utility::isIPad() ? 1 : 0.8;
    CCLabelBMFont *labelObj = CCLabelBMFont::create("objectives", kFontChubby, 0);
    labelObj->setPosition(ccp(winSize.width * 0, winSize.height * 0.45));
    labelObj->setScale(scale);
    objectiveLayer->addChild(labelObj, 2);
    
    createButton("btnStats.png", 5, ccp(winSize.width * 0.3, winSize.height * 0.93));
    
    int j = 0;
        arrayForActive = CCArray::create();
    for (int i = 1; i <= 41; i++) {
        //        int level = 40 - i;
        
        if (Utility::getAchievementStatus(i) == 1) {
            arrayForActive->insertObject(CCString::createWithFormat("%d", i), j);
            j++;
            if (j == 3) {
                break;
            }
        }
    }
    
    for (int i = 0; i < arrayForActive->count(); i++) {
        CCSprite *objective = CCSprite::createWithSpriteFrameName(kScrollBar);
        objective->setPositionY(winSize.height * kScrollBarGap * i - winSize.height * 0.2);
        
        CCString *string = (CCString*)arrayForActive->objectAtIndex(i);
        int level = string->intValue();
        CCString *obj_1 = (CCString*) Utility::objectiveDict()->valueForKey(CCString::createWithFormat("kAchievement_%d_0", level)->getCString());
        CCString *obj_2 = (CCString*) Utility::objectiveDict()->valueForKey(CCString::createWithFormat("kAchievement_%d_1", level)->getCString());
        createLabel(obj_1->getCString(), obj_2->getCString(), ccp(objective->getContentSize().width * 0.18, objective->getContentSize().height * 0.85), objective);
        createSprite("iconTrophy.png", ccp(objective->getContentSize().width * 0.03, objective->getContentSize().height * 0.85), objective);
        objectiveLayer->addChild(objective, 2);
    }
    addChild(objectiveLayer, 2);
    arrayForActive->removeAllObjects();
    arrayForActive->release();
    
    
    soundOn = CCSprite::createWithSpriteFrameName("btnSoundOn.png");
    menuItemSoundOn = CCMenuItemSprite::create(soundOn, soundOn, this, menu_selector(PauseLayer::soundsButtonTapped));
    menuItemSoundOn->setTag(1);
    
    soundOff = CCSprite::createWithSpriteFrameName("btnSoundOff.png");
    menuItemSoundOff = CCMenuItemSprite::create(soundOff, soundOff, this, menu_selector(PauseLayer::soundsButtonTapped));
    menuItemSoundOff->setTag(2);
    
    CCMenuItemToggle *toggleSound = CCMenuItemToggle::createWithTarget(this, menu_selector(PauseLayer::soundsButtonTapped), menuItemSoundOn, menuItemSoundOff, NULL);
    toggleSound->setSelectedIndex((CCUserDefault::sharedUserDefault()->getBoolForKey(kSoundsKey) ? 0 : 1));
    
    menuSoundOff = CCMenu::create(toggleSound , NULL);
    menuSoundOff->setPosition(ccp(winSize.width * 0.95, winSize.height * 0.92));
    addChild(menuSoundOff, 2);
}
コード例 #12
0
ファイル: SpriteManager.cpp プロジェクト: ns-xlz/ns-xlz-cocos
void SpriteManager::createSiJiao()//创建四周的图片
{
	//左下角 的图片
	createSprite(NULL, Rect(825,386,897-825,457-386), batchNode, 0.0f, 0.0f, 0, 0, 120, 120, GroundZOrder+1);

	//右下角 的图片
	Sprite* sp = createSprite(NULL, Rect(825,386,897-825,457-386), batchNode, 0.0f, 0.0f, WIDTH-120, 0, 120, 120, GroundZOrder+1);
	sp->setFlippedX(true);

	//左上角 的图片
	sp = createSprite(NULL, Rect(825,386,897-825,457-386), batchNode, 0.0f, 0.0f, 0, HEIGHT-120, 120, 120, GroundZOrder+1);
	sp->setFlippedY(true);

	//右上角 的图片
	sp = createSprite(NULL, Rect(825,386,897-825,457-386), batchNode, 0.0f, 0.0f, WIDTH-120, HEIGHT-120, 120, 120, GroundZOrder+1);
	sp->setFlippedX(true);
	sp->setFlippedY(true);
}
コード例 #13
0
ファイル: RelayGameLayer.cpp プロジェクト: jg-maon/Atelier
/**
	@brief		キャンバス初期化
	@param[in]	なし
	@return		なし
*/
void RelayGameLayer::_NextCanvas()
{
	auto oldCanvas = this->getChildByName("Canvas");
	//-----------------------------------------------------
	// 新規キャンバスを既存キャンバスの下に
	auto layerCanvas = LayerCanvas::create();
	if (layerCanvas && layerCanvas->createSprite("canvas.png"))
	{
		this->addChild(layerCanvas, oldCanvas->getLocalZOrder()-1, "NewCanvas");

		layerCanvas->setPosition(oldCanvas->getPosition());
		//layerCanvas->setVisible(false);
	}

	//-----------------------------------------------------
	// DrawNode
	auto drawNode = DrawNode::create();
	{
		drawNode->setAnchorPoint(Vec2::ZERO);
		auto canvas = layerCanvas->getSprite();
		//layerCanvas->addChild(m_pDrawNode, 1);
		drawNode->setPosition(
			-(layerCanvas->getPositionX() - layerCanvas->getAnchorPoint().x*layerCanvas->getContentSize().width),
			-(layerCanvas->getPositionY() - layerCanvas->getAnchorPoint().y*layerCanvas->getContentSize().height)
			);
		canvas->addChild(drawNode, 1, "DrawNode");
	}

	oldCanvas->runAction(
		Sequence::create(
			PageTurn3D::create(0.5f, Size(24.f, 32.f)),
			CallFunc::create([this, oldCanvas, layerCanvas, drawNode](){
				// キャンバスの入れ替え
				//this->removeChild(oldCanvas);
				oldCanvas->setName(oldCanvas->getName() + std::to_string(m_nowPage));
				oldCanvas->setVisible(false);

				layerCanvas->setLocalZOrder(ZOrder::CANVAS);
				layerCanvas->setName("Canvas");
				//--------------------------
				// DrawNode入れ替え
				//m_pDrawNode->release();
				m_pDrawNode = drawNode;
				//--------------------------
				// ページ追加
				m_nowPage++;
				m_touchPoints.push_back(page_t());
				m_nowLine = 0;
				//--------------------------
				// 解答ボックス初期化
				m_pEditBox->setText("");
			}),
			nullptr
		)
	);

}
コード例 #14
0
ファイル: TrapBox.cpp プロジェクト: ARezaA/Flux
void TrapBox::init(CCLayer *layer, b2World *world, float PTM_RATIO){
	if(debug){
		createSprite();
		layer->addChild(boxSprite);
	}
	createBody(world, PTM_RATIO);

	createFixture(world, PTM_RATIO);
}
コード例 #15
0
void ParticleEffect::loadEmitterImages(string path)
{
	ownsTexture = true;
	for (auto emitter : emitters){
		string imagePath = emitter->getImagePath();
		if (imagePath.empty()) continue;
		auto sprite = createSprite(path + imagePath);
		emitter->setSprite(sprite);
	}
}
コード例 #16
0
Tank::Tank(Planet* planet, std::string tank_path, sf::Font* hp_font) {

	rotation = 0.0;
	setHp(INITIALHP);

	createSprite(tank_path);
	setPlanet(planet);
	createHP(hp_font);

}
コード例 #17
0
ファイル: enginegl.cpp プロジェクト: AdamSC1-ddg/yatc
EngineGL::EngineGL()
{
	DEBUGPRINT(DEBUGPRINT_LEVEL_OBLIGATORY, DEBUGPRINT_NORMAL, "Starting OpenGL engine\n");
	m_screen = NULL;

    SDL_ShowCursor(0);
	doResize(m_width, m_height);

	if(!m_screen)
		// looks like GL is not supported -- dont attempt anything else
		return;

	glictGlobals.drawPartialOut = true;
	glictGlobals.clippingMode = GLICT_SCISSORTEST;

    Sprite*a,*b;

	m_sysfont->SetFontParam(new YATCFont("Tibia.pic", 2, a=createSprite("Tibia.pic", 2)));
	m_minifont->SetFontParam(new YATCFont("Tibia.pic", 5, createSprite("Tibia.pic", 5)));
	m_aafont->SetFontParam(new YATCFont("Tibia.pic", 7, b=createSprite("Tibia.pic", 7)));
	m_gamefont->SetFontParam(new YATCFont("Tibia.pic", 4, createSprite("Tibia.pic", 4)));

	a->addColor(.75,.75,.75);
	b->addColor(.75,.75,.75);

    m_ui = createSprite("Tibia.pic", 3);
	m_light = createSprite("Tibia.pic", 6);
    m_cursorBasic = m_ui->createCursor(290,12,11,19, 1, 1);
    m_cursorUse = m_ui->createCursor(310,12,19,19, 9, 9);
    SDL_ShowCursor(1);
    SDL_SetCursor(m_cursorBasic);

	initEngine();
}
コード例 #18
0
ファイル: menuscene.cpp プロジェクト: EemeliSyynimaa/yam2d
MenuScene::MenuScene(Game* p_game) : 
    Scene(p_game),
    m_map(new yam2d::Map(64.0f, 64.0f)),
    m_zoom(1.0f),
    m_selected(0)
{
    m_map->addLayer(yam2d::Map::BACKGROUND0, new yam2d::Layer(m_map, "Background", 1.0f, true, false));
    m_map->addLayer(yam2d::Map::GUILAYER0, new yam2d::Layer(m_map, "GUI", 1.0f, true, false));

    m_background = createSprite("assets/textures/background.png", 760.0f, 760.0f);
    m_startgame = createSprite("assets/textures/startgame.png", 200.0f, 65.0f);
    m_quitgame = createSprite("assets/textures/quitgame.png", 200.0f, 65.0f);

    m_startgame->setPosition(yam2d::vec2(3.7f, 3.0f));
    m_quitgame->setPosition(yam2d::vec2(3.7f, 4.5f));
    m_startgame->setName("StartGame");
    m_quitgame->setName("QuitGame");

    m_map->getLayer("Background")->addGameObject(m_background);
    m_map->getLayer("GUI")->addGameObject(m_startgame);
    m_map->getLayer("GUI")->addGameObject(m_quitgame);
}
コード例 #19
0
bool BackGroud::init(cocos2d::Layer *layer, int speed) {
    _speed = speed;
    _visibleSize = Director::getInstance()->getVisibleSize();
    _layer = layer;
    _scaleX = _visibleSize.width /800;
    _scaleY = _visibleSize.height /480;

    //创建一个天空背景
    auto sky = createSprite("bg_sky.png", Point(_visibleSize.width /2,_visibleSize.height - (416 *_scaleY)/2));
    _layer->addChild(sky, 0);
    _skys.pushBack(sky);

    //创建一个地板背景
    auto floor = createSprite("bg_floor.png", Point(_visibleSize.width /2, (64 *_scaleY)/2));
    floor->setPhysicsBody(PhysicsBody::createBox(Size(_visibleSize.width, 64*_scaleY)));
    floor->getPhysicsBody()->setDynamic(false);
    //设置碰撞器
    floor->getPhysicsBody()->setContactTestBitmask(1);
    _layer->addChild(floor, 101);
    _floors.pushBack(floor);

    return true;
}
コード例 #20
0
bool WaitingLayer::init()
{
    
    
    bool bRet = false;
    
    do {
        CC_BREAK_IF(!CCLayerColor::initWithColor(ccc4(0, 0, 0, 125)));
        setColor(ccc3(0, 0, 0));
        setOpacity(0);
        CCSize size = CCDirector::sharedDirector()->getWinSize();
        setAnchorPoint(CCPointMake(0.5, 0.5));
        CCSprite* sprite = CCSprite::create("ccbResources/common/loading_bg.png");
        if (sprite) {
            CCSize spritesize = sprite->getContentSize();
            setContentSize(spritesize);
            sprite->setAnchorPoint(CCPointZero);
            sprite->setPosition(CCPointZero);
            addChild(sprite);
        }
       // setContentSize(CCSizeMake(200, 200));
        float rate =  CCDirector::sharedDirector()->getContentScaleFactor();
        m_pLabelTitle = CCLabelTTF::create("", "", 28);
        
//         std::string strRequst = EasyUseApi::getUTF8StringInDictionary("common", "requesting");
//         LabelStringSetWithFormat(m_pLabelTitle, "%s", strRequst.c_str())    ;

		m_pLabelTitle->setString("Please wait...");
		ControlUtil::sharedControlUtil()->FitLabelTTFFontSize(m_pLabelTitle);

        CCSize contentSize = getContentSize();
        setPosition(ccp(size.width/2-contentSize.width/2, size.height/2-contentSize.height/2));
        m_bShowing = false;
        m_pLabelTitle->setPosition(ccp(0.5, 0.5));
        m_pLabelTitle->setPosition(ccp(contentSize.width/2, (contentSize.height/2)*0.65f));
        this->addChild(m_pLabelTitle);
        bRet = true;
        
        createSprite();
    } while (0);
    
    return bRet;
    //	pushMenu(okMenuItem);
    //	pushMenu(cancelMenuItem);
    
   
//    SetVisibleBoard(m_sprite);
    return true;
}
コード例 #21
0
ファイル: components.cpp プロジェクト: xbelikov/ginger
	bool Components::createComponent(Type t, const char* name) {
		bool result = false;

		switch (t) {
		case CHARACTER_STATS:
			result = createCharacterStats(name);
			break;

		case SPRITE:
			result = createSprite(name);
			break;
		}

		return result;
	}
コード例 #22
0
SelectableList::SelectableList(int id,
                               int x,
                               int y,
                               int width,
                               int height,
                               graphics::GraphicsManager& graphicsManager,
                               function<void(int)> observer,
                               unsigned layer)
  : AbstractWidget(id,
                   static_cast<double>(x),
                   static_cast<double>(y),
                   width,
                   height,
                   graphicsManager)
  , m_layer{layer + 1}
  , m_observer{observer}
  , m_sprite{createSprite(x, y, layer, width, height)} {
}
コード例 #23
0
ファイル: savehandler.cpp プロジェクト: peres/scummvm
bool TempSpriteHandler::save(int16 dataVar, int32 size, int32 offset) {
	if (isDummy(size))
		return true;

	SurfacePtr sprite = createSprite(dataVar, size, offset);
	if (!sprite)
		return false;

	// Save the sprite
	if (!_sprite->readSprite(*sprite))
		return false;

	// Handle palette
	if (usesPalette(size))
		if (!_sprite->readPalette((const byte *)_vm->_global->_pPaletteDesc->vgaPal))
			return false;

	return true;
}
コード例 #24
0
ファイル: GameController.cpp プロジェクト: jstoja/r-type
void GameController::receiveResources(Network::TcpPacket* packet) {
    uint32 nb;
    *packet >> nb;
    for (uint32 i = 0; i < nb; ++i) {
		Resource* resource = createResource(*packet);
		if (resource)
			_resources.push_back(resource);
    }
    *packet >> nb;
    for (uint32 i = 0; i < nb; ++i) {
		Graphic::Texture* texture = createTexture(*packet);
		if (texture)
			_textures.push_back(texture);
    }
    *packet >> nb;
    for (uint32 i = 0; i < nb; ++i) {
		Graphic::Sprite* sprite = createSprite(*packet);
		if (sprite)
			_sprites.push_back(sprite);
    }
    *packet >> nb;
    for (uint32 i = 0; i < nb; ++i) {
		Graphic::Element* element = createGraphicElement(*packet);
		if (element)
			_elements.push_back(element);
    }
    *packet >> nb;
    for (uint32 i = 0; i < nb; ++i) {
		Graphic::Scenery* scenery = createScenery(*packet);
		if (scenery) {
			_sceneries.push_back(scenery);
		}
    }
    *packet >> nb;
    for (uint32 i = 0; i < nb; ++i) {
		Sound::Sound* sound = createSound(*packet);
		if (sound)
			_sounds.push_back(sound);
    }
}
コード例 #25
0
ファイル: osgforest.cpp プロジェクト: yueying/osg
osg::Node* ForestTechniqueManager::createBillboardGraph(Cell* cell,osg::StateSet* stateset)
{
    bool needGroup = !(cell->_cells.empty());
    bool needBillboard = !(cell->_trees.empty());

    osg::Billboard* billboard = 0;
    osg::Group* group = 0;

    if (needBillboard)
    {
        billboard = new osg::Billboard;
        billboard->setStateSet(stateset);
        for(TreeList::iterator itr=cell->_trees.begin();
            itr!=cell->_trees.end();
            ++itr)
        {
            Tree& tree = **itr;
            billboard->addDrawable(createSprite(tree._width,tree._height,tree._color),tree._position);
        }
    }

    if (needGroup)
    {
        group = new osg::Group;
        for(Cell::CellList::iterator itr=cell->_cells.begin();
            itr!=cell->_cells.end();
            ++itr)
        {
            group->addChild(createBillboardGraph(itr->get(),stateset));
        }

        if (billboard) group->addChild(billboard);

    }
    if (group) return group;
    else return billboard;
}
コード例 #26
0
ファイル: main.c プロジェクト: 0265727207/evandrix.github.com
//create a sprite with a random position, speed, and size 
void randomSprite(mySprite* s) {
	//pick a random color index 
	u8 c = rand() % 256;

	//two pixels at a time
	u16 color = c | (c << 8);

	//create a randomly oriented sprite going off in a random direction
	createSprite(s, rand() % 256, rand() % 192, 0, sizes[(rand() % 12)], SpriteColorFormat_256Color, rand() % 4 - 2, rand() % 4 - 2);

	//dont let sprites get stuck with 0 velocity
	if(s->dx == 0 && s->dy == 0) {   
		s->dx = rand() % 3 + 1;
		s->dy = rand() % 3 + 1;
	}

	//the size (in pixels) is encoded in the low 12 bits of the Size attribute (shifted left by 5)
	//we load new graphics each time as this is as much a test of my allocator as an example of api usage
	if(s->gfx) {
		swiCopy(&color, s->gfx, ((s->size & 0xFFF) << 4) | COPY_MODE_FILL);
	}	else {	
		s->alive = false;
	}
}
コード例 #27
0
static void resetEverything( void )
{
	initSprites( );

	launchFromPosition.x = 500.0f;
	launchFromPosition.y = 600.0f - 16.0f;

	getLaunchToPosition( );
	launchToSprite = createSprite( launchToImg, 1, launchToPosition, VEC2_ONE, 0.0f, COL_WHITE, 0 );

	initPanjandrums( );
	initTroops( );
	initExplosions( );
	initMines( );
	initBarbedWire( );
	initPits( );

	initParticles( );

	attackerHealth = MAX_HEALTH;
	defenderHealth = MAX_HEALTH;

	drumCount = MAX_DRUM_COUNT;
}
コード例 #28
0
ファイル: engine.cpp プロジェクト: opentibia/yatc
void Engine::reloadGlobalGfx()
{
    delete m_ui;
    m_ui = createSprite("Tibia.pic", 3);
}
コード例 #29
0
ファイル: RelayGameLayer.cpp プロジェクト: jg-maon/Atelier
// on "init" you need to initialize your instance
bool RelayGameLayer::init()
{
	//////////////////////////////
	// 1. super init first
	if (!GridLayer::init())
	{
		return false;
	}

	Size visibleSize = Director::getInstance()->getVisibleSize();
	Vec2 origin = Director::getInstance()->getVisibleOrigin();

	_SetDefaultValues();


	//-----------------------------------------------------
	// 背景
	auto spriteBack = Sprite::create("MainBackAll.png");
	if(spriteBack)
	{
		// add "canvas" splash screen"

		spriteBack->setScale(
			this->getContentSize().width / spriteBack->getContentSize().width,
			this->getContentSize().height / spriteBack->getContentSize().height);
		// position the sprite on the center of the screen
		spriteBack->setPosition(
			origin.x + visibleSize.width / 2.f + origin.x,
			origin.y + visibleSize.height / 2.f + origin.y);

		spriteBack->setName("Back");

		// add the sprite as a child to this layer
		this->addChild(spriteBack, ZOrder::BACK);
	}

	//-----------------------------------------------------
	// キャンバス
	auto layerCanvas = LayerCanvas::create();
	if (layerCanvas && layerCanvas->createSprite("canvas.png"))
	{
		this->addChild(layerCanvas, ZOrder::CANVAS, "Canvas");

		layerCanvas->setPosition(
			origin + visibleSize / 2.f
			);
		layerCanvas->setVisible(false);

	}
	//-----------------------------------------------------
	// テーマ発表用
	auto spriteBoard = Sprite::create("BigBoard.png");
	if (spriteBoard)
	{
		spriteBoard->setPosition(
			origin + visibleSize/ 2.f
			);
		spriteBack->setVisible(true);		// 非表示
		this->addChild(spriteBoard, ZOrder::BIGBOARD, "BigBoard");
		auto size = spriteBoard->getContentSize();
		// 表示ラベル設定 余白 x:90*y:60
		// 上
		auto labelTop = Label::createWithSystemFont("描く順番と解答者の発表です", "GenShinGothic-Regular.ttf", calcFontSize(40.f));
		if (labelTop)
		{
			// 中央揃え上揃え
			labelTop->setAlignment(TextHAlignment::CENTER, TextVAlignment::TOP);

			labelTop->setPosition(
				size.width / 2.f,
				size.height - labelTop->getContentSize().height/2.f - 60.f
				);

			spriteBoard->addChild(labelTop, 0, "TopLabel");
		}
		// 中央
		auto labelMiddle = Label::createWithSystemFont("", "GenShinGothic-Medium.ttf", calcFontSize(80.f));
		labelMiddle->setName("MiddleLabel");
		auto itemLabel = MenuItemLabel::create(labelMiddle, [this](Ref* pSender){
			// 検索窓開く
			std::stringstream url;
			url << "https://www.google.co.jp/search?tbm=isch&q=" << m_nowTheme.theme;
			Application::getInstance()->openURL(url.str().c_str());
		});
		if (itemLabel)
		{
			m_pMiddleLabel = itemLabel;
			// 始めのうちは反応なし
			m_pMiddleLabel->setEnabled(false);
			// 中央揃え中央揃え
			labelMiddle->setAlignment(TextHAlignment::CENTER, TextVAlignment::BOTTOM);

			labelMiddle->setColor(Color3B(250, 210, 10));
			m_pMiddleLabel->setColor(Color3B(250, 210, 10));


			labelMiddle->setDimensions(size.width - 90, 0);
			m_pMiddleLabel->setName("ItemMiddleLabel");
			auto menu = Menu::create(m_pMiddleLabel, nullptr);
			menu->setPosition(
				size / 2.f
				);
			spriteBoard->addChild(menu, 0, "MenuMiddleLabel");
		}
		// 下
		auto labelBottom = Label::createWithSystemFont("1人目の人から順に\n画面をタッチしてください", "GenShinGothic-Regular.ttf", calcFontSize(37.f));
		if (labelBottom)
		{
			// 中央揃え下揃え
			labelBottom->setAlignment(TextHAlignment::CENTER, TextVAlignment::BOTTOM);

			labelBottom->setAnchorPoint(Vec2(0.5f, 0.0f));

			labelBottom->setPosition(
				size.width / 2.f,
				labelBottom->getContentSize().height / 2.f + 60.f
				);

			spriteBoard->addChild(labelBottom, 0, "BottomLabel");
		}
	}

	//-----------------------------------------------------
	// ラベル用
	auto spriteSmallBoard = Sprite::create("board.png");
	if (spriteSmallBoard)
	{
		spriteSmallBoard->setPosition(
			origin.x + visibleSize.width / 2.f,
			origin.y + visibleSize.height - spriteSmallBoard->getContentSize().height / 2.f
			);
		this->addChild(spriteSmallBoard, ZOrder::TOPBOARD, "SmallBoard");
	}



	//-----------------------------------------------------
	// ラベル設定
	// アナウンス
	auto label = Label::createWithSystemFont(" ", "GenShinGothic-Medium.ttf", calcFontSize(30.f));
	{
		label->setColor(Color3B(250, 250, 250));	// 白文字
		label->enableOutline(Color4B::BLACK, 3);	// 黒枠線

		label->setHorizontalAlignment(TextHAlignment::CENTER);
		spriteSmallBoard->addChild(label, 10, "Label");
		label->setPosition(spriteSmallBoard->getAnchorPointInPoints());
		m_pLabel = label;			// キャッシュ
	}
	//-----------------------------------------------------


	//-----------------------------------------------------
	// ボタン
	auto nextButton = MenuItemImage::create("button.png",
											"button2.png",
											[this](Ref* pSender)
	{
		if (FlowPhase::ANSWERED == m_flowPhase)
		{
			// タイトルへ
			dynamic_cast<SceneAtelierMain*>(this->getParent()->getParent())->toTitle();
		}
		else
		{
			// 全消去
			m_touchPoints[m_nowPage].clear();
			m_pDrawNode->clear();
		}
	});
	if (nextButton)
	{
		m_pNextButton = nextButton;
		nextButton->setName("NextButton");
		// ボタン非表示
		//nextButton->setVisible(false);
		auto size = nextButton->getContentSize();
		nextButton->setPosition(
			origin.x + visibleSize.width - size.width / 2.f,
			origin.y + size.height / 2.f);
		auto label = Label::createWithSystemFont("全消去", "GenShinGothic-Medium.ttf", calcFontSize(20.f));
		if (label)
		{
			m_pButtonLabel = label;
			label->setPosition(nextButton->getContentSize() / 2.f);
			label->setHorizontalAlignment(TextHAlignment::CENTER);
			// ラベル非表示
			//label->setVisible(false);
			label->setColor(Color3B(5, 5, 5));
			nextButton->addChild(label, ZOrder::NEXTBUTTONLABEL, "ButtonLabel");
	
		}
	}


	auto menuButtons = Menu::create(nextButton, nullptr);
	if (menuButtons)
	{
		menuButtons->setPosition(Vec2::ZERO);
		menuButtons->setVisible(false);
		this->addChild(menuButtons, ZOrder::MENUBUTTONS, "MenuButtons");
	}


	//-----------------------------------------------------
	// 前後ボタン
	// 前
	auto itemBack = MenuItemImage::create("BackButton.png",
										  "BackButton2.png",
										  [this](Ref* pSender){

		auto button = dynamic_cast<MenuItemImage*>(pSender);
		if (0 < m_nowPage)
		{
			// 戻るよ!
			auto oldCanvas = this->getChildByName("Canvas");
			if (!oldCanvas)
				oldCanvas = this->getChildByName("Canvas" + std::to_string(m_nowPage));



			--m_nowPage;
			std::stringstream ss;
			ss << "Canvas" << m_nowPage;
			auto layerCanvas = this->getChildByName(ss.str());
			layerCanvas->setLocalZOrder(oldCanvas->getLocalZOrder() + 1);
			auto drawNode = layerCanvas->getChildByName<DrawNode*>("DrawNode");
			layerCanvas->setVisible(true);
			layerCanvas->runAction(
				Sequence::create(
					ReverseTime::create(PageTurn3D::create(0.5f, Size(24.f, 32.f))),
					CallFunc::create([this, layerCanvas, drawNode](){
						// キャンバスの入れ替え
						
						//--------------------------
						// DrawNode入れ替え
						m_pDrawNode = drawNode;
						//--------------------------
					}),
					nullptr
				)
			);

			if (0 == m_nowPage)
			{
				// もう戻れないよ!
				button->setVisible(false);
			}
			button->getParent()->getChildByName("LastNextButton")->setVisible(true);
		}
	
	});
	{
		itemBack->setName("LastBackButton");
	}
	auto itemNext = MenuItemImage::create("NextButton.png",
										  "NextButton2.png",
										  [this](Ref* pSender){
		auto button = dynamic_cast<MenuItemImage*>(pSender);
		const auto maxPage = m_touchPoints.size() - 1;
		if (maxPage > m_nowPage)
		{
			// 進むよ!
			auto oldCanvas = this->getChildByName("Canvas");
			if (!oldCanvas)
				oldCanvas = this->getChildByName("Canvas" + std::to_string(m_nowPage));


			++m_nowPage;
			std::stringstream ss;
			ss << "Canvas" << m_nowPage;
			auto layerCanvas = this->getChildByName(ss.str());
			layerCanvas->setLocalZOrder(oldCanvas->getLocalZOrder() - 1);
			auto drawNode = layerCanvas->getChildByName<DrawNode*>("DrawNode");
			layerCanvas->setVisible(true);
			
			oldCanvas->runAction(
				Sequence::create(
					PageTurn3D::create(0.5f, Size(24.f, 32.f)),
					CallFunc::create([this, layerCanvas, drawNode](){
						// キャンバスの入れ替え
						
						//--------------------------
						// DrawNode入れ替え
						m_pDrawNode = drawNode;
						//--------------------------
					}),
					nullptr
				)
			);

			if (maxPage == m_nowPage)
			{
				// もう進めないよ!
				button->setVisible(false);
			}
			button->getParent()->getChildByName("LastBackButton")->setVisible(true);
		}

	});
	{
		itemNext->setName("LastNextButton");
		itemNext->setVisible(false);
	}
	auto menuLastButtons = Menu::create(itemBack, itemNext, nullptr);
	{
		// 縦一列,間隔
		const float padding = 10.f;
		menuLastButtons->alignItemsVerticallyWithPadding(padding);

		// 非表示
		menuLastButtons->setVisible(false);

		auto canvas = layerCanvas->getSprite();
		Vec2 leftBottom = canvas->convertToWorldSpace(Vec2::ZERO);

		auto size = itemBack->getContentSize();
		menuLastButtons->setPosition(leftBottom.x / 2.f,
									 leftBottom.y + size.height + padding / 2.f);

		this->addChild(menuLastButtons, ZOrder::MENULASTBUTTONS, "MenuLastButtons");
	}
	//-----------------------------------------------------
	m_pDrawNode = DrawNode::create();
	{
		m_pDrawNode->setAnchorPoint(Vec2::ZERO);
		auto canvas = layerCanvas->getSprite();
		//layerCanvas->addChild(m_pDrawNode, 1);
		m_pDrawNode->setPosition(
			-(layerCanvas->getPositionX() - layerCanvas->getAnchorPoint().x*layerCanvas->getContentSize().width ),
			-(layerCanvas->getPositionY() - layerCanvas->getAnchorPoint().y*layerCanvas->getContentSize().height)
			);
		canvas->addChild(m_pDrawNode, 1, "DrawNode");
	}


	//-----------------------------------------------------
	// 描きすぎレイヤー
	auto layerTouch = Layer::create();
	{
		layerTouch->setVisible(false);

		auto sprite = Sprite::create();	// 背景用
		sprite->setTextureRect(Rect(0, 0, visibleSize.width, visibleSize.height));
		sprite->setPosition(visibleSize / 2.f);
		sprite->setColor(Color3B::BLACK);
		sprite->setOpacity(192);
		layerTouch->addChild(sprite, 0);

		this->addChild(layerTouch, ZOrder::MOST_FRONT, "OverTouchLayer");
		auto label = Label::createWithSystemFont("一人の持ち時間を使い果たしました\n"
												 "\n次の人に回してタッチしてください\n",
												 "GenShinGothic-Medium.ttf", calcFontSize(40.f));
		{
			label->setPosition(layerTouch->getContentSize() / 2.f);
			label->setAlignment(TextHAlignment::CENTER, TextVAlignment::CENTER);
			label->setColor(Color3B(250, 250, 15));
			layerTouch->addChild(label, 10, "Label");
		}

		auto listener = EventListenerTouchOneByOne::create();
		listener->setSwallowTouches(false);
		listener->onTouchBegan = [this, layerTouch](Touch* touch, Event* event){
			if (layerTouch->isVisible())
			{
				return true;
			}
			return false;
		};
		listener->onTouchEnded = [this, layerTouch](Touch* touch, Event* event){
			//layerTouch->setVisible(false);
			//m_pListener->setSwallowTouches(false);
			// 描きすぎレイヤー非表示
			this->_SetOverTouchLayerVisible(false);
			if (m_nowPage >= m_playerNum - 2)
			{
				// 全員描いた場合
				// キャンバスめくらない
				m_flowPhase = FlowPhase::JUDGE;

				// 解答ボックス出現
				auto visibleSize = Director::getInstance()->getVisibleSize();
				m_pEditBox->runAction(
					Sequence::create(
						CallFunc::create([this]{ m_pEditBox->setEnabled(false); }),
						EaseBackOut::create(
							MoveTo::create(0.5f,
								Vec2(visibleSize.width / 2.f,
								m_pEditBox->getPositionY()
								)	// 画面中央まで
							)
						),
						CallFunc::create([this]{ m_pEditBox->setEnabled(true); }),
						nullptr
					)
				);

				// 全消去無効化
				m_pNextButton->setVisible(false);


				// ラベルの設定
				m_pLabel->setString("テーマを答えてください");

			}
			else
			{
				// 前の人の絵を見せる
				m_flowPhase = FlowPhase::SHOW;
				m_pLabel->setString("見終わったらタッチして描き始めてください");
			}

			// 全員描いた場合
			//if (m_nowPage >= m_playerNum - 1)
			//{
			//	// フェーズ
			//	m_flowPhase = FlowPhase::JUDGE;
			//
			//	// 解答ボックス出現
			//	auto visibleSize = Director::getInstance()->getVisibleSize();
			//	m_pEditBox->runAction(
			//		Sequence::create(
			//			CallFunc::create([this]{ m_pEditBox->setEnabled(false); }),
			//			EaseBackOut::create(
			//				MoveTo::create(0.5f,
			//					Vec2(visibleSize.width / 2.f,
			//					m_pEditBox->getPositionY()
			//					)	// 画面中央まで
			//				)
			//			),
			//			CallFunc::create([this]{ m_pEditBox->setEnabled(true); }),
			//			nullptr
			//		)
			//	);
			//
			//	// ラベルの設定
			//	m_pLabel->setString("テーマを答えてください");
			//
			//
			//}

		};
		this->_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, layerTouch);
		m_pListener = listener;
	}

	
	//-----------------------------------------------------
	// 解答入力ボックス
	m_pEditBox = EditBox::create(spriteSmallBoard->getContentSize(), Scale9Sprite::create("board.png"));
	{
		// box
		auto size = m_pEditBox->getContentSize();
		m_pEditBox->setPreferredSize(spriteSmallBoard->getContentSize());
		m_pEditBox->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
		m_pEditBox->setPosition(Vec2(
			origin.x + visibleSize.width + size.width / 2.f,
			origin.y + size.height / 2.f));
		//m_pEditBox->setPosition(Vec2(
		//	origin.x + visibleSize.width / 2.f,
		//	origin.y + size.height / 2.f));
		// 内部ラベル
		m_pEditBox->setFontName("GenShinGothic-Regular.ttf");	// ファミリー
		m_pEditBox->setFontSize(static_cast<int>(calcFontSize(25.f)));		// サイズ
		m_pEditBox->setFontColor(Color3B(250, 250, 250));				// 色
		m_pEditBox->getLabel()->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
		m_pEditBox->getLabel()->setPosition(spriteSmallBoard->getContentSize() / 2.f);
		// 初期ラベル
		m_pEditBox->setPlaceHolder("ここをタッチして解答 (全てひらがなで、数字は半角で入力)");	// 例等初期値(入力時に消える)
		m_pEditBox->setPlaceholderFontColor(Color3B(5, 5, 5));
		m_pEditBox->getPlaceHolderLabel()->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
		m_pEditBox->getPlaceHolderLabel()->setPosition(spriteSmallBoard->getContentSize() / 2.f);

		// Box自体の設定
		m_pEditBox->setMaxLength(20);	// 文字数
		m_pEditBox->setReturnType(EditBox::KeyboardReturnType::DEFAULT);	// Returnキーが押された時
		m_pEditBox->setInputMode(EditBox::InputMode::SINGLE_LINE);			// 1行,自由文字列

		// メソッド
		m_pEditBox->setDelegate(this);

		this->addChild(m_pEditBox, ZOrder::BOX, "EditBox");
	}
	
	//-----------------------------------------------------
	// 間違え
	auto spriteCrossCanvas = Sprite::create("CrossCanvas.png");
	{
		spriteCrossCanvas->setPosition(visibleSize / 2.f);
		spriteCrossCanvas->setVisible(false);
		this->addChild(spriteCrossCanvas, ZOrder::MOST_FRONT, "CrossCanvas");
	}
	//-----------------------------------------------------
	// 正解
	auto spriteCircleCanvas = Sprite::create("CircleCanvas.png");
	{
		spriteCircleCanvas->setPosition(visibleSize / 2.f);
		spriteCircleCanvas->setVisible(false);
		this->addChild(spriteCircleCanvas, ZOrder::MOST_FRONT, "CircleCanvas");
	}


	return true;
}
コード例 #30
0
UEImageFile::UEImageFile(std::string initialFilePath, point initialDefaultPivot, UCanvas *canvas, FString imagePath) : ImageFile(initialFilePath, initialDefaultPivot)
{
	this->canvas = canvas;
	this->imagePath = imagePath;
	createSprite();
}