void Window_Tips::init(void *data){ m_tips = GUIReader::getInstance()->widgetFromJsonFile("ccs/Window_Tips.json"); WindowTipsParam* param = static_cast<WindowTipsParam*>(data); if (param) { Node* bg = m_tips->getChildByName("bg"); Label* m_label = Label::createWithSystemFont(loc(param->key), "", 27); m_label->setWidth(320); m_label->setAnchorPoint(Point::ANCHOR_TOP_LEFT); m_label->setPosition(Point(40,410)); m_label->setTextColor(Color4B(200,200,200,255)); bg->addChild(m_label); } CC_SAFE_DELETE(param); m_btns.push_back(ui::Helper::seekWidgetByName(m_tips, "btn_ok")); m_btns.push_back(ui::Helper::seekWidgetByName(m_tips, "btn_close")); int tag = 0; for (auto btn :m_btns) { btn->setTag(tag++); btn->setTouchEnabled(true); btn->addTouchEventListener(CC_CALLBACK_2(Window_Tips::onBtnEvent, this)); } m_autoCenter = false; setAnimType(WINDOW_ANIM_RIGHT); }
/** * Create guardian. * * @param gX X-coordinate * @param gY Y-coordinate */ Guardian::Guardian(unsigned char gX, unsigned char gY) : JJ1Event(gX, gY) { setAnimType(E_LEFTANIM); stage = 0; return; }
void BaoGet::init(void *data){ m_tips = CCUIHELPER->createWidgetFromJsonFile("BaoGet.json"); BaoInfoParam* param = (BaoInfoParam*)data; int id = 0; if (param) { id = param->id; } CC_SAFE_DELETE(param); initInfo(id); setAnimType(WINDOW_ANIM_RIGHT); }
void Window_Shop::init(void *data){ m_tips = GUIReader::getInstance()->widgetFromJsonFile("ccs/Window_Shop.json"); m_btns.push_back(ui::Helper::seekWidgetByName(m_tips, "btn_close")); int tag = 0; for (auto btn :m_btns) { btn->setTag(tag++); btn->setTouchEnabled(true); btn->addTouchEventListener(CC_CALLBACK_2(Window_Shop::onBtnEvent, this)); } m_autoCenter = false; setAnimType(WINDOW_ANIM_RIGHT); }
/** * Create bridge. * * @param gX X-coordinate * @param gY Y-coordinate */ JJ1Bridge::JJ1Bridge (unsigned char gX, unsigned char gY) : JJ1Event(gX, gY) { y = TTOF(gY) + ITOF(set->multiB); setAnimType(E_LEFTANIM); // Bridges should ignore the default yOffsets noAnimOffset = true; // leftDipX and rightDipX used to store leftmost and rightmost player on bridge // Start with minimum values leftDipX = set->multiA * set->pieceSize * F4; rightDipX = 0; return; }
void Window_Ability::init(void *data){ m_tips = GUIReader::getInstance()->widgetFromJsonFile("ccs/Window_Ability.json"); m_info_bg = ui::Helper::seekWidgetByName(m_tips, "stage_info_bg"); m_info_bg->setOpacity(0); m_info_bg->setPosition(Point(-334,-58)); m_black_block_1 = dynamic_cast<ImageView*>(ui::Helper::seekWidgetByName(m_tips,"black_block_1")); m_black_block_1->setScaleX(0.1f); m_black_block_2 = dynamic_cast<ImageView*>(ui::Helper::seekWidgetByName(m_tips,"black_block_2")); m_black_block_2->setScaleX(0.1f); Widget* stage_bg = ui::Helper::seekWidgetByName(m_tips, "stage_bg"); ScrollView* m_scroll_view = dynamic_cast<ScrollView*>(ui::Helper::seekWidgetByName(stage_bg, "stage_list_container")); HScrollViewBar* bar = HScrollViewBar::create(); stage_bg->addChild(bar); bar->setLocalZOrder(1); bar->setBackgroundImage("ccs/common/scroll_view_bar_bg.png", 460); bar->setForegroundImage("ccs/common/scroll_view_bar_fore.png"); bar->attach(m_scroll_view, HSCROLLBAR_VERTICAL); bar->setRotation(-90); bar->setPosition(Point(508,10)); m_btns.push_back(ui::Helper::seekWidgetByName(m_tips, "btn_close")); int tag = 0; for (auto btn :m_btns) { btn->setTag(tag++); btn->setTouchEnabled(true); btn->addTouchEventListener(CC_CALLBACK_2(Window_Ability::onBtnEvent, this)); } m_autoCenter = false; setAnimType(WINDOW_ANIM_RIGHT); for (int i=0; i<7; i++) { char item_name[30]; sprintf(item_name,"stage_%d_bg",i); Widget* item = ui::Helper::seekWidgetByName(m_tips, item_name); item->addTouchEventListener(CC_CALLBACK_2(Window_Ability::onItemClick, this)); item->setTouchEnabled(true); item->setTag(i); } }
void Window_Weapon::init(void *data){ m_tips = GUIReader::getInstance()->widgetFromJsonFile("ccs/Window_Weapon.json"); m_info_bg = ui::Helper::seekWidgetByName(m_tips, "weapon_bg"); m_info_bg->setOpacity(0); m_info_bg->setPosition(Point(300,18)); ScrollView* m_weapon_scrollview = dynamic_cast<ScrollView*>(ui::Helper::seekWidgetByName(m_info_bg, "weapon_container")); HScrollViewBar* weapon_bar = HScrollViewBar::create(); m_info_bg->addChild(weapon_bar); weapon_bar->setLocalZOrder(1); weapon_bar->setBackgroundImage("ccs/common/scroll_view_bar_bg.png", 510); weapon_bar->setForegroundImage("ccs/common/scroll_view_bar_fore.png"); weapon_bar->attach(m_weapon_scrollview, HSCROLLBAR_VERTICAL); weapon_bar->setRotation(-90); weapon_bar->setPosition(Point(605,10)); m_black_block_1 = dynamic_cast<ImageView*>(ui::Helper::seekWidgetByName(m_tips,"black_block_1")); m_black_block_1->setScaleX(0.1f); m_black_block_2 = dynamic_cast<ImageView*>(ui::Helper::seekWidgetByName(m_tips,"black_block_2")); m_black_block_2->setScaleX(0.1f); Widget* stage_bg = ui::Helper::seekWidgetByName(m_tips, "weapon_type_bg"); ScrollView* m_scroll_view = dynamic_cast<ScrollView*>(ui::Helper::seekWidgetByName(stage_bg, "weapon_type_container")); HScrollViewBar* bar = HScrollViewBar::create(); stage_bg->addChild(bar); bar->setLocalZOrder(1); bar->setBackgroundImage("ccs/common/scroll_view_bar_bg.png", 490); bar->setForegroundImage("ccs/common/scroll_view_bar_fore.png"); bar->attach(m_scroll_view, HSCROLLBAR_VERTICAL); bar->setRotation(-90); bar->setPosition(Point(310,10)); for (int i=0; i<8; i++) { char item_name[30]; sprintf(item_name,"type_bg_%d",i); Widget* item = ui::Helper::seekWidgetByName(m_tips, item_name); item->addTouchEventListener(CC_CALLBACK_2(Window_Weapon::onItemClick, this)); item->setTouchEnabled(true); item->setTag(i); } m_right_bottom = ui::Helper::seekWidgetByName(m_tips, "right_bottom"); num_coin = dynamic_cast<TextAtlas*>(ui::Helper::seekWidgetByName(m_tips, "num_coin")); num_money = dynamic_cast<TextAtlas*>(ui::Helper::seekWidgetByName(m_tips, "num_money")); num_coin->setString(to_string(G::getCoin())); num_money->setString(to_string(G::getMoney())); m_btns.push_back(ui::Helper::seekWidgetByName(m_tips, "btn_close")); m_btns.push_back(ui::Helper::seekWidgetByName(m_tips, "btn_coin_add")); m_btns.push_back(ui::Helper::seekWidgetByName(m_tips, "btn_money_add")); int tag = 0; for (auto btn :m_btns) { btn->setTag(tag++); btn->setTouchEnabled(true); btn->addTouchEventListener(CC_CALLBACK_2(Window_Weapon::onBtnEvent, this)); } m_autoCenter = false; setAnimType(WINDOW_ANIM_RIGHT); }
/** * Episode 1 guardian iteration. * * @param ticks Time * * @return Remaining event */ JJ1Event* MedGuardian::step(unsigned int ticks) { fixed sin = fSin(ticks / 2); fixed cos = fCos(ticks / 2); set = prepareStep(ticks); if (!set) return remove(false); if (level->getEventHits(gridX, gridY) >= set->strength / 2) stage = 1; if (level->getEventHits(gridX, gridY) >= set->strength) stage = 2; // Stage 0: Move in an eight shape and fire the occasional shot if (stage == 0) { if (direction == 1) { // Lower right part of the eight setAnimType(E_LEFTANIM); dx = TTOF(gridX) + (sin * 96) - x + ITOF(96); dy = TTOF(gridY) - (cos * 64) - y; if (cos > 0) direction = 2; } if (direction == 2) { // Upper left part of the eight setAnimType(E_LEFTANIM); dx = TTOF(gridX) - (sin * 96) - x - ITOF(96); dy = TTOF(gridY) - (cos * 64) - y; if (cos < 0) direction = 3; } if (direction == 3) { // Lower left part of the eight setAnimType(E_RIGHTANIM); dx = TTOF(gridX) - (sin * 96) - x - ITOF(96); dy = TTOF(gridY) - (cos * 64) - y; if (cos > 0) direction = 4; } if (direction == 4) { // Upper right part of the eight setAnimType(E_RIGHTANIM); dx = TTOF(gridX) + (sin * 96) - x + ITOF(96); dy = TTOF(gridY) - (cos * 64) - y; if (cos < 0) direction = 1; } // Decide if there should be a shot if ((ticks % (set->bulletPeriod * 25) > (unsigned int)(set->bulletPeriod * 25) - 300)) { level->setEventTime(gridX, gridY, ticks + 300); shoot = true; } // Shoot if there is a shot if (level->getEventTime(gridX, gridY) && (ticks > level->getEventTime(gridX, gridY)) && shoot) { if (set->bullet < 32) level->createBullet(NULL, gridX, gridY, x + anim->getAccessoryShootX(), y + anim->getAccessoryShootY(), set->bullet, (animType != E_LEFTANIM), ticks); shoot = false; } } // Stage 1: Hop back and forth destroying the bottom row of tiles if (stage == 1) { fixed startPos = TTOF(gridY) + ITOF(40); if (direction < 5) { // Move up or down towards the starting position for hopping direction = (y > startPos) ? 5 : 6; } // Move up to the correct height if (direction == 5) { if (y > startPos) { dx = 0; dy = ITOF(-2); } else direction = 7; } // Move down to the correct height if (direction == 6) { if (y < startPos) { dx = 0; dy = ITOF(2); } else direction = 7; } // Cosinus should be near zero before we start hopping. if (direction == 7) { dx = 0; dy = 0; if (cos > -100 && cos < 100) direction = 8; } // Start hopping if (direction == 8) { if (level->checkMaskUp(x, y) || level->checkMaskUp(x + width, y)) setAnimType((animType == E_LEFTANIM) ? E_RIGHTANIM : E_LEFTANIM); dy = startPos - abs(cos * 96) - y; dx = abs(cos * 6); if (animType == E_LEFTANIM) dx *= -1; if (cos < 0 && level->checkMaskDown(x + ITOF(anim->getWidth() / 2), y + TTOF(1))) direction = 9; } // Destroy the block underneath if (direction == 9) { // Shake a bit dx = (FTOI(x) % 2) ? ITOF(1) : ITOF(-1); dy = 0; // Remove the tile if (cos > 0 && cos < 100) { level->setTile( FTOT(x + ITOF((anim->getWidth() / 2))), FTOT(y) + 1, set->magnitude); direction = 8; } } } // Stage 2: End of behavior if (stage == 2) { dx = 0; dy = ITOF(4); } x += dx; y += dy; dx = dx << 6; dy = dy << 6; return this; }