class WorldMenuView { const bool BOOL_FLAG_PORTRAIT = true; const bool BOOL_FLAG_LANDSCAPE = false; string m_worldkeyword_HTMLElementID; string m_worldkeyword_text_HTMLElementID; public WorldMenuView() { m_worldkeyword_HTMLElementID = "worldkeyword"; m_worldkeyword_text_HTMLElementID = "worldkeyword-text"; hel_set_HTMLElement_value(m_worldkeyword_text_HTMLElementID, ""); } public void ResizeCallback() { hel_setText(ETextParamType_OperateCanvas, "ResizeInputFieldGeneric" + "," + "mainmenu_world_sort" + "," + "world_search_text" + "," + m_worldkeyword_HTMLElementID + "," + m_worldkeyword_text_HTMLElementID); } public void ShowOfficialTab(bool show) { hsCanvasResetToggleDefault("Toggle_World_Tab_Official"); if(show) { hsCanvasToggleChange("Toggle_World_Tab_Official"); } } public void ShowGeneralTab(bool show) { hsCanvasResetToggleDefault("Toggle_World_Tab_General"); if(show) { hsCanvasToggleChange("Toggle_World_Tab_General"); } } public void ShowCreatorTab(bool show) { hsCanvasResetToggleDefault("Toggle_World_Tab_Creator"); if(show) { hsCanvasToggleChange("Toggle_World_Tab_Creator"); } } public void ShowRoomTab(bool show) { hsCanvasResetToggleDefault("Toggle_World_Tab_Room"); if(show) { hsCanvasToggleChange("Toggle_World_Tab_Room"); } } public void ShowPager(bool show) { hsCanvasResetToggleDefault("Toggle_Show_Pager"); if(show) { hsCanvasToggleChange("Toggle_Show_Pager"); } hsCanvasSetLayerShow("mainmenu_world_pager", show); } public void ShowWorldSort(bool show) { hsCanvasSetLayerShow("mainmenu_world_sort", show); ShowWorldSearchInputField(show); } public void SwitchToggle_Popular_New(bool IsNew) { hsCanvasResetToggleDefault("Toggle_WorldMenu_Popular_New"); if(IsNew) { hsCanvasToggleChange("Toggle_WorldMenu_Popular_New"); } } public void ShowWorldSearchInputField(bool show) { hel_set_HTMLElement_value(m_worldkeyword_text_HTMLElementID, ""); hel_set_HTMLElement_visibility(m_worldkeyword_HTMLElementID, show); hel_set_HTMLElement_visibility(m_worldkeyword_text_HTMLElementID, show); { ResizeCallback(); } } public string GetWorldSortKeyword() { string keyword = hel_get_HTMLElement_value(m_worldkeyword_text_HTMLElementID); return keyword; } public void DrawWorldListGrid(string WorldType, list WorldList) { if(WorldType == WORLD_TYPE_OFFICIAL) { _DrawGrid("mainmenu_world_list_official", WorldList); } else if(WorldType == WORLD_TYPE_GENERAL) { _DrawGrid("mainmenu_world_list_general", WorldList); } else if(WorldType == WORLD_TYPE_CREATOR) { _DrawGrid("mainmenu_world_list_creator", WorldList); SetShowWorldListEmptyText(false); if(WorldList.Count == 0) { SetShowWorldListEmptyText(true); } } else if(WorldType == WORLD_TYPE_ROOM) { _DrawGrid("mainmenu_world_list_room", WorldList); } } void _DrawGrid(string LayerName, list WorldList) { hsCanvasSetLayerShow(LayerName, true); for(int i = 0; i < 6; i++) { if(i < WorldList.Count) { WorldMenuWorldData World = WorldList[i]; hsCanvasResetToggleDefault("Toggle_World_List_%d" %i); hsCanvasToggleChange("Toggle_World_List_%d" %i); hsCanvasSetGUIImage(LayerName, "world_thumbnail_%d" %i, World.ThumbnailURL); hsCanvasSetGUIText(LayerName, "world_title_text_%d" %i, World.Title); hsCanvasSetGUIText(LayerName, "world_visit_count_text_%d" %i, "%d" %World.VisitCount); // 公式ワールドもしくはCountが-1の場合は訪問数を表示しない hsCanvasResetToggleDefault("Toggle_World_Is_Official_%d" %i); if(!World.IsOfficial && World.VisitCount != -1) { hsCanvasToggleChange("Toggle_World_Is_Official_%d" %i); } } else { hsCanvasResetToggleDefault("Toggle_World_List_%d" %i); hsCanvasSetGUIImage(LayerName, "world_thumbnail_%d" %i, ""); hsCanvasSetGUIText(LayerName, "world_title_text_%d" %i, ""); hsCanvasSetGUIText(LayerName, "world_visit_count_text_%d" %i, ""); hsCanvasResetToggleDefault("Toggle_World_Is_Official_%d" %i); } } } public void CleanWorldListGrid(string WorldType) { if(WorldType == WORLD_TYPE_OFFICIAL) { _CleanGrid("mainmenu_world_list_official"); } else if(WorldType == WORLD_TYPE_GENERAL) { _CleanGrid("mainmenu_world_list_general"); } else if(WorldType == WORLD_TYPE_CREATOR) { _CleanGrid("mainmenu_world_list_creator"); } else if(WorldType == WORLD_TYPE_ROOM) { _CleanGrid("mainmenu_world_list_room"); } } void _CleanGrid(string LayoutName) { hsCanvasSetLayerShow(LayoutName, false); } public void ShowDialog(string LayoutName, bool show) { hsCanvasSetLayerShow(LayoutName, show); } public void DrawDetailDialog(WorldMenuWorldData World, WorldMenuWorldDetailData DetailData) { { string LayerName = "mainmenu_world_descript_dialog"; hsCanvasSetLayerShow(LayerName, true); hsCanvasSetGUIText(LayerName, "world_title_text", World.Title); hsCanvasSetGUIImage(LayerName, "world_thumbnail", World.ThumbnailURL); hsCanvasSetGUIText(LayerName, "world_text_good_count", "%d" % DetailData.NumOfLikes); string CreatedDate = DetailData.CreatedDate.SubString(0, 10); CreatedDate[4] = '/'; CreatedDate[7] = '/'; string UpdatedDate = DetailData.UpdatedDate.SubString(0, 10); UpdatedDate[4] = '/'; UpdatedDate[7] = '/'; hsCanvasSetGUIText(LayerName, "world_dialog_date_info_text", CreatedDate); hsCanvasSetGUIText(LayerName, "world_dialog_date_update_text", UpdatedDate); hsCanvasSetGUIText(LayerName, "world_detail_view_text", "%d" % World.VisitCount); // 公式ワールドもしくはCountが-1の場合は訪問数を表示しない hsCanvasResetToggleDefault("Toggle_World_Detail_Is_Official"); if(!World.IsOfficial && World.VisitCount != -1) { hsCanvasToggleChange("Toggle_World_Detail_Is_Official"); } // 現在はクリエイター情報は一人分しか返ってこないのでひとまず一人分だけ表示 hsCanvasResetToggleDefault("Toggle_World_Create_Name_0"); hsCanvasToggleChange("Toggle_World_Create_Name_0"); hsCanvasSetGUIText(LayerName, "world_creator_name_0", DetailData.CreatorName); hsCanvasResetToggleDefault("Toggle_World_Create_Name_1"); hsCanvasToggleChange("Toggle_World_Create_Name_1"); hsCanvasResetToggleDefault("Toggle_World_Create_Name_2"); hsCanvasToggleChange("Toggle_World_Create_Name_2"); hsCanvasResetToggleDefault("Toggle_World_Create_Name_3"); hsCanvasToggleChange("Toggle_World_Create_Name_3"); // 既にいいねしているかどうかで表示を切り替える SetToggleLikeUnlike(DetailData.Liked); } { string LayerName = "mainmenu_world_descript_text_dialog"; hsCanvasSetLayerShow(LayerName, true); hsCanvasSetGUIText(LayerName, "world_descript_text", DetailData.Description); } } public void CloseDetailDialog() { ShowDialog("mainmenu_world_descript_dialog", false); ShowDialog("mainmenu_world_descript_text_dialog", false); ShowDialog("other_profile", false); } public void UpdateWorldPageText(int PageIndex) { int PageNumber = PageIndex + 1; // インデックスからナンバーに直す hsCanvasSetGUIText("mainmenu_world_pager", "world_page_text", "%d" %(PageNumber)); } public void SetToggleLikeUnlike(bool showUnLike) { hsCanvasResetToggleDefault("Toggle_World_Like_Unlike"); if(showUnLike) { hsCanvasToggleChange("Toggle_World_Like_Unlike"); } } public void SetShowWorldListEmptyText(bool showFlag){ string layerName = "mainmenu_world_list_creator"; string guiName = "menu_txt_other_world_zero"; string listEmptyText = ""; if(showFlag){ listEmptyText = "作成された別のワールドはありません。"; if(hsIsLangJA() == false){ listEmptyText = "No other worlds created."; } } SetGUIText(layerName, guiName, listEmptyText, BOOL_FLAG_LANDSCAPE); SetGUIText(layerName, guiName, listEmptyText, BOOL_FLAG_PORTRAIT); } public void CreateWorldListEmptyText(){ string layerName = "mainmenu_world_list_creator"; string guiName = "menu_txt_other_world_zero"; // 表示処理の際に動的に書き込むのでここではテキスト情報を要れない string text = ""; // ----------横画面用---------- int landTextSize = 25; HSGUIModel laGuiModel = CreateTextGUIModel(guiName, text, landTextSize); HS2DI laWindowPos = GetGUIPos("mainmenu_home", "menu_contents_base", BOOL_FLAG_LANDSCAPE); HS2DI laWindowSize = GetGUISize("mainmenu_home", "menu_contents_base", BOOL_FLAG_LANDSCAPE); laGuiModel.SetPos(laWindowPos); laGuiModel.SetSize(MakeHS2DI(laWindowSize.x(), landTextSize + 5)); // ----------縦画面用---------- int portrTextSize = 50; HSGUIModel poGuiModel = CreateTextGUIModel(guiName, text, portrTextSize); HS2DI poWindowPos = GetGUIPos("mainmenu_home", "menu_contents_base", BOOL_FLAG_PORTRAIT); HS2DI poWindowSize = GetGUISize("mainmenu_home", "menu_contents_base", BOOL_FLAG_PORTRAIT); poGuiModel.SetPos(poWindowPos); poGuiModel.SetSize(MakeHS2DI(poWindowSize.x(), portrTextSize + 5)); // ----------登録---------- hsCanvasAddGUI(layerName, BOOL_FLAG_LANDSCAPE, laGuiModel); hsCanvasAddGUI(layerName, BOOL_FLAG_PORTRAIT, poGuiModel); } // テキスト要素のセットアップ public HSGUIModel CreateTextGUIModel(string modelName, string text, int fontSize){ HSGUIModel textGUI = CreateCommonHSGUIMoel(modelName, "text"); HSTextModel textModel = MakeHSTextModel(text, fontSize); HSColor fontColor = MakeHSColor(0.9, 0.9, 0.9 ,1); textModel.SetColor(fontColor); textGUI.SetTextModel(textModel); return textGUI; } // どのタイプの要素でも共通するセットアップ private HSGUIModel CreateCommonHSGUIMoel(string modelName, string modelType){ HSGUIModel model = new HSGUIModel(); model.SetName(modelName); model.SetShow(true); model.SetType(modelType); int defaultZ = 3; model.SetZ(defaultZ); HS2D pivot = new HS2D(); pivot.SetXY(0.5, 0.5); model.SetPivot(pivot); model.SetAnchor("CM"); return model; } private HSTextModel MakeHSTextModel(string text, int fontSize){ HSTextModel textModel = new HSTextModel(); textModel.SetFontSize(fontSize); textModel.SetText(text); textModel.SetFontFamily("BIZUDPGothic"); textModel.SetAlignment("CM"); textModel.SetOverflowWrap(true); HSColor fontColor = MakeHSColor(0.9, 0.9, 0.9 ,1); textModel.SetColor(fontColor); return textModel; } private void SetGUIText(string layerName, string guiName, string text, bool usePrtraitFlag){ Layer layer = new Layer(); if(usePrtraitFlag){ layer = hsLayerGetPortrait(layerName); }else{ layer = hsLayerGetLandscape(layerName); } layer.CanvasSetGUIText(guiName, text); } // GUI座標の変更 private void SetGUIPos(string layerName, string guiName, HS2DI position, bool usePrtraitFlag){ Layer layer = new Layer(); if(usePrtraitFlag){ layer = hsLayerGetPortrait(layerName); }else{ layer = hsLayerGetLandscape(layerName); } layer.SetGUIPos(guiName, position.x(), position.y()); } // GUI座標を取得 private HS2DI GetGUIPos(string layerName, string guiName, bool usePrtraitFlag){ Layer layer = new Layer(); if(usePrtraitFlag){ layer = hsLayerGetPortrait(layerName); }else{ layer = hsLayerGetLandscape(layerName); } Vector3 pos = new Vector3(); layer.GetGUIPos(guiName, pos.x, pos.y); return MakeHS2DI(pos.x, pos.y); } // GUIのスケール取得 private void SetGUISize(string layerName, string guiName, bool usePrtraitFlag, HS2DI size){ Layer layer = new Layer(); if(usePrtraitFlag){ layer = hsLayerGetPortrait(layerName); }else{ layer = hsLayerGetLandscape(layerName); } layer.SetGUISize(guiName, size.x(), size.y()); } // GUIのスケール取得 private HS2DI GetGUISize(string layerName, string guiName, bool usePrtraitFlag){ Layer layer = new Layer(); if(usePrtraitFlag){ layer = hsLayerGetPortrait(layerName); }else{ layer = hsLayerGetLandscape(layerName); } Vector3 size = new Vector3(); layer.GetGUISize(guiName, size.x, size.y); return MakeHS2DI(size.x, size.y); } private HS2DI MakeHS2DI(int x, int y){ HS2DI hs2di = new HS2DI(); hs2di.SetXY(x, y); return hs2di; } private HSColor MakeHSColor(float r, float g, float b, float a){ HSColor hsColor = new HSColor(); hsColor.SetRGBA(r, g, b, a); return hsColor; } }