Esempio n. 1
0
Scene* SGSkirmishInfo::createScene(std::string& content)
{
  Scene* scene = Scene::create();

  SGSkirmishInfo* info_layer = SGSkirmishInfo::create();
  Size win_size = Director::getInstance()->getVisibleSize();
  RenderTexture* render_texture = RenderTexture::create(win_size.width, win_size.height);

  render_texture->begin();
  Director::getInstance()->getRunningScene()->visit();
  render_texture->end();
  render_texture->setPosition(Vec2(win_size.width/2, win_size.height/2)); 
  info_layer->addChild(render_texture);

  // step 1: create the dialog window backgound texture;
  Sprite* dialog_win = Sprite::create(DIALOG_WINDOW_BACKGROUND);
  Size dialog_size(win_size.width * 0.25f, win_size.height * 0.25f);
  dialog_win->setTextureRect(Rect(0, 0, dialog_size.width, dialog_size.height));
  Texture2D::TexParams params = { GL_LINEAR, GL_LINEAR, GL_REPEAT, GL_REPEAT };
  dialog_win->getTexture()->setTexParameters(params);
  dialog_win->setAnchorPoint(Vec2(0.5f, 0.5f));
  dialog_win->setPosition(Vec2(win_size.width/2, win_size.height/2));

  // step2: show the info content:
  std::string chinese_content;
  rapidjson::Document info_json;
  std::string res_json_file = FileUtils::getInstance()->fullPathForFilename(INFO_TEXT_JSON_FILE);
  std::string json_data = FileUtils::getInstance()->getStringFromFile(res_json_file.c_str());

  info_json.Parse<rapidjson::kParseDefaultFlags>(json_data.c_str());
  if (info_json.HasParseError()) {
    log("Parsing info_json resource json file error!! %s", info_json.GetParseError());
    return NULL;
  } else if (info_json.IsObject()) {
    const rapidjson::Value &res_list = info_json["Info"];
    if (res_list.IsArray()) {
      for (int i = 0; i < res_list.Size(); i++) {
        const rapidjson::Value &val = res_list[i];
        if (content == val["name"].GetString()) {
          chinese_content = val["text"].GetString();
          break;
        }
      }
    }

  }
  LabelTTF* content_ttf = LabelTTF::create(chinese_content, TEXT_FONT_NAME, TEXT_FONT_SIZE);
  content_ttf->setHorizontalAlignment(TextHAlignment::LEFT);
  content_ttf->setColor(Color3B::BLACK);
  content_ttf->setAnchorPoint(Vec2(0.0f, 1.0f));
  content_ttf->setPosition(Vec2(40.0f, dialog_win->getContentSize().height - 20.0f));
  dialog_win->addChild(content_ttf);

  info_layer->addChild(dialog_win);

  scene->addChild(info_layer);
  return scene;
}
Esempio n. 2
0
bool SGSControlPanel::init()
{
  if (!Sprite::initWithFile(DIALOG_WINDOW_BACKGROUND)) {
    return false;
  }
  Size win_size = Director::getInstance()->getVisibleSize();
  Size dialog_size(win_size.height/3, win_size.height/3);
  setTextureRect(Rect(0, 0, dialog_size.width, dialog_size.height));
  Texture2D::TexParams params = { GL_LINEAR, GL_LINEAR, GL_REPEAT, GL_REPEAT };
  getTexture()->setTexParameters(params);
  setAnchorPoint(Vec2::ANCHOR_BOTTOM_RIGHT);
  setPosition(Vec2(win_size.width, win_size.height/3));
  return true;
}
Esempio n. 3
0
/* **********************************
@ Implemented by Daniel Santos
@ Note:
* ***********************************/
void Universe::Universe::setUpTextAndDialog() {
  sf::Vector2f dialog_size(600, 150);
  sf::Vector2f dialog_pos(window_.getSize().x-dialog_size.x,
                          window_.getSize().y-dialog_size.y);
  dialogBox_.setSize(dialog_size);
  dialogBox_.setPosition(dialog_pos);
  dialogBox_.setFillColor(sf::Color(255, 255, 255, 150));

  fontTime_.loadFromFile("res/fonts.otf");
  textTime_.setFont(fontTime_);
  textTime_.setString("0");
  dialogText_.setFont(fontTime_);
  dialogText_.setString("Click on a body");
  dialogText_.setColor(sf::Color::Black);
  // The number 10 is a litte padding for the text in the dialog
  dialogText_.setPosition(dialog_pos.x+10, dialog_pos.y);
}
Scene* SGDramaSceneSelectScene::creatScene(const char* hero_name, const char* content, int* ret_add)
{
  Scene* scene = Scene::create();

  SGDramaSceneSelectScene* select_layer = SGDramaSceneSelectScene::create();
  Size win_size = Director::getInstance()->getWinSize();
  RenderTexture* render_texture = RenderTexture::create(win_size.width, win_size.height);

  render_texture->begin();
  Director::getInstance()->getRunningScene()->visit();
  render_texture->end();
  render_texture->setPosition(Vec2(win_size.width/2, win_size.height/2)); 

  select_layer->addChild(render_texture);

  // Create the select dialog window

  // step 1: create the dialog window backgound texture;
  Sprite* dialog_win = Sprite::create(SELECT_WINDOW_BACKGROUND);
  Size dialog_size(win_size.width * 0.666f, win_size.height * 0.1928f);
  dialog_win->setTextureRect(Rect(0, 0, dialog_size.width, dialog_size.height));
  Texture2D::TexParams params = { GL_LINEAR, GL_LINEAR, GL_REPEAT, GL_REPEAT };
  dialog_win->getTexture()->setTexParameters(params);
  dialog_win->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
  dialog_win->setPosition(Vec2(win_size.width/2, win_size.height/2));

  // step 2: create hero face image;
  std::string hero_face_res = SG_HERO_FACE_RES_PATH;
  hero_face_res.append(SGHeroResourceUtils::getInstance()->getHeroResObj(hero_name)->res_name);
  hero_face_res.append(".png");
  Sprite* face = Sprite::create(hero_face_res);
  face->setPosition(Vec2(dialog_size.width * 0.1f ,dialog_size.height/2));
  dialog_win->addChild(face);


  // step 3: create dialog content background
  LayerColor* content_bg_layer = LayerColor::create(Color4B::WHITE, dialog_size.width * 0.75f ,dialog_size.height * 0.6667f);
  content_bg_layer->setPosition(Vec2(dialog_size.width * 0.2333f ,dialog_size.height * 0.0714f));
  Size content_bg_layer_size = content_bg_layer->getContentSize();
  dialog_win->addChild(content_bg_layer);

  // step 4: create each menu item
  std::string select_items = content;
  std::string::size_type start_pos = 0;
  std::string::size_type pos = 0;
  std::string separator = "\\n";
  std::string null_str = " ";
  Menu* select_menu;
  int menu_size = 0;
  MenuItemLabel *menu_item1, *menu_item2, *menu_item3;
  while ((pos = select_items.find(separator, start_pos)) != std::string::npos){
    //speak.replace( pos, srcLen, des_str );
    std::string one_item_content = select_items.substr(start_pos, pos - start_pos);
    
    //one_item_content.replace(one_item_content.find(separator, 0), separator.size(), null_str);
    LabelTTF* label = LabelTTF::create(one_item_content, TEXT_FONT_NAME, TEXT_FONT_SIZE);
    label->setColor(Color3B::BLACK);
    menu_size++;
    switch (menu_size)
    {
    case 1:
      menu_item1 = MenuItemLabel::create(label, CC_CALLBACK_1(SGDramaSceneSelectScene::menuItem1Callback, select_layer));
      break;
    case 2:
      menu_item2 = MenuItemLabel::create(label, CC_CALLBACK_1(SGDramaSceneSelectScene::menuItem2Callback, select_layer));
      break;
    case 3:
      menu_item3 = MenuItemLabel::create(label, CC_CALLBACK_1(SGDramaSceneSelectScene::menuItem3Callback, select_layer));
    default:
      break;
    }
    start_pos = pos + separator.size();
  }
  
  switch (menu_size)
  {
  case 2:
    select_menu = Menu::create(menu_item1, menu_item2, NULL);
    break;
  case 3:
    select_menu = Menu::create(menu_item1, menu_item2, menu_item3, NULL);
    break;
  default:
    break;
  }
  select_menu->alignItemsVertically();
  
  select_menu->setPosition(content_bg_layer_size.width/2, content_bg_layer_size.height/2);
  content_bg_layer->addChild(select_menu);
  

  select_layer->addChild(dialog_win);

  scene->addChild(select_layer);

  select_layer->__ret = ret_add;


  return scene;
}