class TNGUIGenerator{ const string GUI_IMAGE_FILEPATH_BASE = "gui2024/toast_notice/Base.png"; const string GUI_IMAGE_FILEPATH_ICON = "gui2024/toast_notice/IconImages.png"; const string GUI_IMAGE_FILEPATH_TIMEBAR = "gui2024/toast_notice/ViewTimeBar.png"; const bool USE_LANDSCAPE = false; const bool USE_PORTRAIT = true; public TNGUIGenerator(){} // 通知ベース要素生成 public void CreteBase(string layerName, string guiName){ HSButtonModel buttonModel = MakeButtonGUIModel(GUI_IMAGE_FILEPATH_BASE); buttonModel.SetLTRB(MakeRectLTRB(25, 20, 25, 20)); // 横画面 HSGUIModel laGuiModel = MakeCommonHSGUIMoel(guiName, "button"); laGuiModel.SetButtonModel(buttonModel); laGuiModel.SetSize(MakeHS2DI(256, 100)); laGuiModel.SetPos(MakeHS2DI(0, -18)); laGuiModel.SetRaycastTarget(true); laGuiModel.SetZ(0); // 縦画面 HSGUIModel poGuiModel = MakeCommonHSGUIMoel(guiName, "button"); poGuiModel.SetButtonModel(buttonModel); poGuiModel.SetSize(MakeHS2DI(512, 200)); poGuiModel.SetRaycastTarget(true); poGuiModel.SetZ(0); // 登録 hsCanvasAddGUI(layerName, USE_LANDSCAPE, laGuiModel); hsCanvasAddGUI(layerName, USE_PORTRAIT, poGuiModel); } // 通知アイコン要素生成 public void CreteIcon(string layerName, string guiName, int noticeTypeID){ int imageUVIndex = 0; if(noticeTypeID == TOASTNOTICE_TYPE_WARNING_ID){ imageUVIndex = 1; }else if(noticeTypeID == TOASTNOTICE_TYPE_ERROR_ID){ imageUVIndex = 2; } // アイコン画像の情報生成(UV) int noticeIconSize = 64; int uvPosX = (noticeIconSize + 1) * imageUVIndex; HSRect uv = MakeHSRect(uvPosX, 0, noticeIconSize, noticeIconSize); HSImageModel imageModel = MakeHSImageModel(GUI_IMAGE_FILEPATH_ICON); imageModel.SetUVArea(uv); // 横画面 HSGUIModel laGuiModel = MakeCommonHSGUIMoel(guiName, "image"); laGuiModel.SetImageModel(imageModel); laGuiModel.SetSize(MakeHS2DI(25, 25)); laGuiModel.SetZ(1); // 縦画面 HSGUIModel poGuiModel = MakeCommonHSGUIMoel(guiName, "image"); poGuiModel.SetImageModel(imageModel); poGuiModel.SetSize(MakeHS2DI(50, 50)); poGuiModel.SetZ(1); // 登録 hsCanvasAddGUI(layerName, USE_LANDSCAPE, laGuiModel); hsCanvasAddGUI(layerName, USE_PORTRAIT, poGuiModel); } // 通知種別テキスト要素生成 public void CreteNoticeTypeText(string layerName, string guiName, int noticeTypeID){ string noticeTypeText = "info"; if(noticeTypeID == TOASTNOTICE_TYPE_WARNING_ID){ noticeTypeText = "Warning"; }else if(noticeTypeID == TOASTNOTICE_TYPE_ERROR_ID){ noticeTypeText = "Error"; } int laFontSize = 18; int poFontSize = 32; HSTextModel laTextModel = MakeHSTextModel(noticeTypeText, laFontSize); laTextModel.SetURLClickable(true); HSTextModel poTextModel = MakeHSTextModel(noticeTypeText, poFontSize); poTextModel.SetURLClickable(true); // 横画面 HSGUIModel laGuiModel = MakeCommonHSGUIMoel(guiName, "text"); laGuiModel.SetTextModel(laTextModel); laGuiModel.SetSize(MakeHS2DI(128,22)); laGuiModel.SetZ(1); // 縦画面 HSGUIModel poGuiModel = MakeCommonHSGUIMoel(guiName, "text"); poGuiModel.SetTextModel(poTextModel); poGuiModel.SetSize(MakeHS2DI(256, 33)); poGuiModel.SetZ(1); // 登録 hsCanvasAddGUI(layerName, USE_LANDSCAPE, laGuiModel); hsCanvasAddGUI(layerName, USE_PORTRAIT, poGuiModel); } // 通知文要素生成 public void CreteNoticeText(string layerName, string guiName, string noticeText){ int laFontSize = 14; int poFontSize = 28; HSTextModel laTextModel = MakeHSTextModel(noticeText, laFontSize); HSTextModel poTextModel = MakeHSTextModel(noticeText, poFontSize); // 横画面 HSGUIModel laGuiModel = MakeCommonHSGUIMoel(guiName, "text"); laGuiModel.SetTextModel(laTextModel); laGuiModel.SetSize(MakeHS2DI(235,48)); laGuiModel.SetZ(1); // 縦画面 HSGUIModel poGuiModel = MakeCommonHSGUIMoel(guiName, "text"); poGuiModel.SetTextModel(poTextModel); poGuiModel.SetSize(MakeHS2DI(485, 90)); poGuiModel.SetZ(1); // 登録 hsCanvasAddGUI(layerName, USE_LANDSCAPE, laGuiModel); hsCanvasAddGUI(layerName, USE_PORTRAIT, poGuiModel); } // 表示タイマーのベース要素生成 public void CreteViewTimerBase(string layerName, string guiName){ HSImageModel imageModel = MakeHSImageModel(GUI_IMAGE_FILEPATH_TIMEBAR); // 横画面 HSGUIModel laGuiModel = MakeCommonHSGUIMoel(guiName, "image"); laGuiModel.SetImageModel(imageModel); laGuiModel.SetSize(MakeHS2DI(220, 3)); laGuiModel.SetZ(1); // 縦画面 HSGUIModel poGuiModel = MakeCommonHSGUIMoel(guiName, "image"); poGuiModel.SetImageModel(imageModel); poGuiModel.SetSize(MakeHS2DI(450, 5)); poGuiModel.SetZ(1); // 登録 hsCanvasAddGUI(layerName, USE_LANDSCAPE, laGuiModel); hsCanvasAddGUI(layerName, USE_PORTRAIT, poGuiModel); HSColor baseColor = MakeHSColor(0.1, 0.1, 0.2 ,1); hsCanvasSetGUIMulColor(layerName, USE_LANDSCAPE, guiName, HSGUIType_Image, baseColor); hsCanvasSetGUIMulColor(layerName, USE_PORTRAIT, guiName, HSGUIType_Image, baseColor); } // 表示タイマーのシークバー要素生成 public void CreteViewTimer(string layerName, string guiName){ HSImageModel imageModel = MakeHSImageModel(GUI_IMAGE_FILEPATH_TIMEBAR); // 横画面 HSGUIModel laGuiModel = MakeCommonHSGUIMoel(guiName, "image"); laGuiModel.SetImageModel(imageModel); laGuiModel.SetSize(MakeHS2DI(220, 3)); laGuiModel.SetZ(2); // 縦画面 HSGUIModel poGuiModel = MakeCommonHSGUIMoel(guiName, "image"); poGuiModel.SetImageModel(imageModel); poGuiModel.SetSize(MakeHS2DI(500, 5)); poGuiModel.SetZ(2); // 登録 hsCanvasAddGUI(layerName, USE_LANDSCAPE, laGuiModel); hsCanvasAddGUI(layerName, USE_PORTRAIT, poGuiModel); HSColor frontColor = MakeHSColor(0.9, 0.9, 0.9 ,0.9); hsCanvasSetGUIMulColor(layerName, USE_LANDSCAPE, guiName, HSGUIType_Image, frontColor); hsCanvasSetGUIMulColor(layerName, USE_PORTRAIT, guiName, HSGUIType_Image, frontColor); } // ImageModelの生成 private HSImageModel MakeHSImageModel(string imageFilePath){ HSImageModel imageModel = new HSImageModel(); imageModel.SetURI(imageFilePath); return imageModel; } // TextModelの生成 private HSTextModel MakeHSTextModel(string text, int fontSize){ HSTextModel textModel = new HSTextModel(); textModel.SetFontSize(fontSize); textModel.SetText(text); textModel.SetFontFamily("BIZUDPGothic"); textModel.SetAlignment("LM"); textModel.SetOverflowWrap(true); HSColor fontColor = MakeHSColor(0.9, 0.9, 0.9 ,1); textModel.SetColor(fontColor); return textModel; } // ButtonModelの生成 public HSButtonModel MakeButtonGUIModel(string imageFilePath){ HSButtonModel buttonModel = new HSButtonModel(); buttonModel.SetFileName(imageFilePath); return buttonModel; } // どのタイプの要素でも共通するセットアップ private HSGUIModel MakeCommonHSGUIMoel(string modelName, string modelType){ HSGUIModel model = new HSGUIModel(); model.SetName(modelName); model.SetShow(true); model.SetType(modelType); model.SetRaycastTarget(false); int defaultZ = 1; model.SetZ(defaultZ); HS2D pivot = new HS2D(); pivot.SetXY(0, 0); model.SetPivot(pivot); model.SetAnchor("RT"); return model; } private HSRectLTRB MakeRectLTRB(int l,int t,int r,int b){ HSRectLTRB ltrb = new HSRectLTRB(); ltrb.SetLTRB(l, t, r, b); return ltrb; } // 座標、サイズ管理用 HS2DI生成関数 private HS2DI MakeHS2DI(int x, int y){ HS2DI hs2di = new HS2DI(); hs2di.SetXY(x, y); return hs2di; } // GUIの色指定用 HSColor生成関数 private HSColor MakeHSColor(float r, float g, float b, float a){ HSColor hsColor = new HSColor(); hsColor.SetRGBA(r, g, b, a); return hsColor; } // UVエリア用 HSRect生成関数 private HSRect MakeHSRect(int x, int y, int w, int h){ HSRect hsrect = new HSRect(); hsrect.SetXYWH(x, y, w, h); return hsrect; } }