component PickItemViewModel { list m_PickedColumnList; int MaxItemCount; public PickItemViewModel() { MaxItemCount = 6; // 現在の仕様では持てるアイテムは最大6つまでなので6つ分だけ初期化する m_PickedColumnList = new list(); for(int i = 0; i < MaxItemCount; i++) { m_PickedColumnList.Add(false); } } public void OnChangedPickableTable(int ColumnIndex, int ItemInstanceID) { if(ColumnIndex < 0 || ColumnIndex >= MaxItemCount) return; m_PickedColumnList[ColumnIndex] = (ItemInstanceID != -1); // 置く用のアイテムリストを表示するかのチェック bool ShowItemList = false; for(int i = 0; i < m_PickedColumnList.Count(); i++) { // どれか一つでもtrueならUIを表示する(1つでもアイテムを持っていたら表示する) if(m_PickedColumnList[i]) { ShowItemList = true; break; } } hsCanvasResetToggleDefault("Toggle_DropItemList_Show_Hide"); if(ShowItemList) hsCanvasToggleChange("Toggle_DropItemList_Show_Hide"); if(hsSystemIsVRMode()) hsCanvasSetLayerShow("pick_item_webxr",ShowItemList); // 表示しないなら終了 if(!ShowItemList) { // 全ボタンのトグルをリセット for(int i = 0; i < m_PickedColumnList.Count(); i++) { hsCanvasResetToggleDefault("Toggle_DropItem_On_Off_%d" % i); } return; } // ボタンやアイテム名を表示 hsCanvasResetToggleDefault("Toggle_DropItem_On_Off_%d" % ColumnIndex); if(m_PickedColumnList[ColumnIndex]) { hsCanvasToggleChange("Toggle_DropItem_On_Off_%d" % ColumnIndex); Item PickableItem = hsCreateItemByInstanceID(ItemInstanceID); if(PickableItem !== null) { string Name; Name = PickableItem._GetPickableDisplayName(); if(hsIsLangEN()) { string Name_EN = PickableItem._GetPickableDisplayName_EN(); // EN名が設定されていない時は日本語名を表示する if(!Name_EN.IsEmpty()) Name = Name_EN; } // 名前が設定されていない場合は横線を指定する(仕様で定められている) if(Name.IsEmpty()) { Name = "-"; // CMにする system.Canvas_SetGUITextAlignment(GetLayerName(), "drop_name_%d" % ColumnIndex, 4); } else { // LMに戻す system.Canvas_SetGUITextAlignment(GetLayerName(), "drop_name_%d" % ColumnIndex, 3); } hsCanvasSetGUIText(GetLayerName(), "drop_name_%d" % ColumnIndex, Name); } } } private string GetLayerName() { string LayerName = "HUD"; // VRモード時はWebXR用レイヤーを返す if(hsSystemIsVRMode()) { LayerName = "pick_item_webxr"; } return LayerName; } }