[task] | knowledge_list [title] | UI Components/Logics [category] | Guides [rephrased] | **ItemToastMessage Logic** 1. `ItemToastMessage` 로직은 `MessageTable`, `RUIDTable`, `TimeTable` 프로퍼티가 각각 `SyncTable < string >`, `SyncTable < string >`, `SyncTable < number >` 타입으로 구성되며, 화면에 띄울 메시지, 아이템 아이콘 RUID, 남은 표시 시간을 관리합니다. 2. `ItemToastMessage` 로직에는 `SyncTable < Entity >` 타입의 `messageEntity` [original] | # ItemToastMessage Logic **아이템 ?개 획득**과 같은 토스트 메시지를 띄우는 로직입니다. UI 엔티티를 배치한 상태로 사용하기 위해 SyncTable을 활용해 관리합니다. `{MessageTable, RUIDTable, TimeTable}`이 한 쌍이며, 새로운 메시지를 추가할 때 반드시 3개를 한 쌍으로 추가해야 합니다. 또한 새로운 메시지는 반드시 테이블 맨 앞에 추가해야 합니다. #### Property | 실행제어 | 타입 | 이름 | 설명 | | --- | --- | --- | --- | | N [chunk_id] | Guides:1085:0
[task] | diverse_qa [title] | UI Components/Logics [category] | Guides [rephrased] | 질문: ItemToastMessage 로직에서 `{MessageTable, RUIDTable, TimeTable}`의 관계는 무엇이며, 새로운 메시지를 추가할 때 지켜야 할 규칙은 무엇인가요? 답변: 세 테이블은 한 쌍으로 관리되며, 새로운 메시지를 추가할 때 반드시 3개를 한 쌍으로 추가해야 하고, 새로운 메시지는 반드시 테이블 맨 앞에 추가해야 합니다. 질문: ItemToastMessage의 `MessageTable` 프로퍼티의 타입과 목적은 무엇인가요? 답변: 타입은 `SyncTable < string >`이며, 화면에 띄울 [original] | # ItemToastMessage Logic **아이템 ?개 획득**과 같은 토스트 메시지를 띄우는 로직입니다. UI 엔티티를 배치한 상태로 사용하기 위해 SyncTable을 활용해 관리합니다. `{MessageTable, RUIDTable, TimeTable}`이 한 쌍이며, 새로운 메시지를 추가할 때 반드시 3개를 한 쌍으로 추가해야 합니다. 또한 새로운 메시지는 반드시 테이블 맨 앞에 추가해야 합니다. #### Property | 실행제어 | 타입 | 이름 | 설명 | | --- | --- | --- | --- | | N [chunk_id] | Guides:1085:0
[task] | wikipedia [title] | UI Components/Logics [category] | Guides [rephrased] | # ItemToastMessage Logic ItemToastMessage Logic은 "아이템 1개 획득"과 유사한 형태의 토스트 메시지를 화면에 표시하기 위한 로직 컴포넌트입니다. 이 컴포넌트는 UI 엔티티를 배치한 상태로 유지하기 위해 `SyncTable`을 활용하여 데이터를 관리합니다. 데이터 구조는 `{MessageTable, RUIDTable, TimeTable}`의 3개 테이블이 하나의 쌍을 이루도록 설계되어 있습니다. 새로운 메시지를 추가할 때는 이 세 테이블을 반드시 한 쌍으로 함께 추가해야 하며, 신규 메시지는 [original] | # ItemToastMessage Logic **아이템 ?개 획득**과 같은 토스트 메시지를 띄우는 로직입니다. UI 엔티티를 배치한 상태로 사용하기 위해 SyncTable을 활용해 관리합니다. `{MessageTable, RUIDTable, TimeTable}`이 한 쌍이며, 새로운 메시지를 추가할 때 반드시 3개를 한 쌍으로 추가해야 합니다. 또한 새로운 메시지는 반드시 테이블 맨 앞에 추가해야 합니다. #### Property | 실행제어 | 타입 | 이름 | 설명 | | --- | --- | --- | --- | | N [chunk_id] | Guides:1085:0
[task] | knowledge_list [title] | UI Components/Logics [category] | Guides [rephrased] | ```lua -- 문서에서 추출한 핵심 사실 목록입니다. -- 각 항목은 독립적인 문장으로, API 이름, 매개변수, 반환 타입, 실행 제약을 명시합니다. local facts = { -- 광부 시뮬레이터 리메이크 UI Components/Logics (일반 이벤트 핸들러) "마을 메뉴 UI의 '/ui/HUDGroup/TownHUD/Panel_menu3/ScrollList/EquipmentButton' 엔티티에서 ButtonClickEvent 이벤트가 발생하면 메뉴 목록을 닫고 장비 보관함 UI를 새로고침하여 엽니다 [original] | | 실행제어 | 이벤트 중계자 | 이름 | 설명 | | --- | --- | --- | --- | | - | [entity] /ui/HUDGroup/TownHUD/Panel_menu3 /ScrollList/EquipmentButton | ButtonClickEvent | 마을 메뉴 UI에서 **장비 보관함** 버튼을 누르면 호출되는 핸들러입니다. 메뉴 목록을 닫고, 장비 보관함 UI를 새로고침 해 엽니다. | | - | service| KeyDownEvent | 장비 보관함이 열려 있을 때 Esc 키를 눌러 닫습니다. 상세 정보 [chunk_id] | Guides:1085:3
[task] | distill [title] | UI Components/Logics [category] | Guides [rephrased] | # 광부 시뮬레이터 리메이크 UI Components/Logics ## 1. 아이템 정보 표시 컴포넌트 광산 결과 UI의 아이템 목록에 부착되어 아이템 정보를 표시합니다. PC에서는 마우스 오버, 모바일에서는 터치 시 정보를 표시합니다. * **Event Handler** * `[self]` `ButtonStateChangeEvent`: 아이템 상태 변경(호버/터치) 시 아이템 정보 표시. ## 2. UI_HUD HUD(헤드업 디스플레이) 관리 컴포넌트. ### Property | 실행제어 | 타입 | 이름 | [original] | 광산 결과 UI 화면에 있는 아이템 목록마다 붙어있는 아이템 정보를 보여주는 컴포넌트입니다. 각 아이템에 마우스를 올리거나 화면을 꾹 누르면 `ButtonStateChangeEvent`를 호출합니다. #### Entity Event Handler | 실행제어 | 이벤트 중계자 | 이름 | 설명 | | --- | --- | --- | --- | | - | self | ButtonStateChangeEvent | 아이템을 누르면 아이템 정보를 보여줍니다. PC에서는 목록에 마우스를 올리면 보이고, Mobile에서는 목록을 눌러 볼 [chunk_id] | Guides:1085:4
[task] | knowledge_list [title] | UI Components/Logics [category] | Guides [rephrased] | ```lua -- 문서 기반 핵심 사실 목록 (mLua API 및 제약 사항 명시) ``` 1. `UI_EquipmentShop_FilterButton` 컴포넌트는 장비 상점 UI의 장비 타입 필터 버튼에 적용되며, `self` 이벤트 처리기인 `ButtonClickEvent`가 트리거되면 `UI_EquipmentShop` 컴포넌트의 `FilterIdx` 속성을 변경하고 `RefreshUI()` 메서드를 실행합니다. 2. `UI_EquipmentShop_SlotButton` 컴포넌트는 장비 상점 UI 내 상품 목록 버튼에 적용되며 [original] | # UI_EquipmentShop_FilterButton 장비 상점 UI의 **장비 타입 필터** 버튼에 붙어있는 컴포넌트입니다. #### Entity Event Handler | 실행제어 | 타입 | 이름 | 설명 | | --- | --- | --- | --- | | - | self | ButtonClickEvent | 버튼을 누르면 UI_EquipmentShop의 `FilterIdx`를 변경하고, `RefreshUI()`를 실행합니다. | # UI_EquipmentShop_SlotButton 장비 상점 UI 내 상품 [chunk_id] | Guides:1085:2
[task] | diverse_qa [title] | UI Components/Logics [category] | Guides [rephrased] | 질문: 마을 메뉴 UI에서 장비 보관함 버튼을 누르면 어떤 일이 발생하나요? 답변: 메뉴 목록을 닫고, 장비 보관함 UI를 새로고침해 엽니다. 질문: 장비 보관함이 열려 있을 때 Esc 키를 누르면 어떻게 되나요? 답변: 장비 보관함이 열려 있을 때 Esc 키를 누르면 닫습니다. 단, 상세 정보 창이 열려 있는 경우 상세 정보 창만 닫습니다. 질문: 상세 정보 팝업에서 '장착하기' 버튼을 누르면 어떤 처리가 이루어지나요? 답변: 선택한 장비로 장착 장비 Idx를 변경하고, 팝업창을 닫습니다. 질문: 상세 정보 팝업에서 '장착 [original] | | 실행제어 | 이벤트 중계자 | 이름 | 설명 | | --- | --- | --- | --- | | - | [entity] /ui/HUDGroup/TownHUD/Panel_menu3 /ScrollList/EquipmentButton | ButtonClickEvent | 마을 메뉴 UI에서 **장비 보관함** 버튼을 누르면 호출되는 핸들러입니다. 메뉴 목록을 닫고, 장비 보관함 UI를 새로고침 해 엽니다. | | - | service| KeyDownEvent | 장비 보관함이 열려 있을 때 Esc 키를 눌러 닫습니다. 상세 정보 [chunk_id] | Guides:1085:3
[task] | wikipedia [title] | UI Components/Logics [category] | Guides [rephrased] | # UI_EquipmentShop_FilterButton `UI_EquipmentShop_FilterButton`은 장비 상점 UI에서 장비 타입 필터링을 담당하는 버튼에 부착되는 컴포넌트입니다. 이 컴포넌트는 `self` 이벤트 중계자를 통해 `ButtonClickEvent`를 처리합니다. 사용자가 버튼을 클릭하면, 상위 컴포넌트인 `UI_EquipmentShop`의 `FilterIdx` 프로퍼티 값을 변경한 뒤, `RefreshUI()` 메서드를 호출하여 UI를 갱신합니다. # UI_EquipmentShop_SlotButto [original] | # UI_EquipmentShop_FilterButton 장비 상점 UI의 **장비 타입 필터** 버튼에 붙어있는 컴포넌트입니다. #### Entity Event Handler | 실행제어 | 타입 | 이름 | 설명 | | --- | --- | --- | --- | | - | self | ButtonClickEvent | 버튼을 누르면 UI_EquipmentShop의 `FilterIdx`를 변경하고, `RefreshUI()`를 실행합니다. | # UI_EquipmentShop_SlotButton 장비 상점 UI 내 상품 [chunk_id] | Guides:1085:2
[task] | distill [title] | UI Components/Logics [category] | Guides [rephrased] | # 광부 시뮬레이터 리메이크: UI 컴포넌트 및 로직 ## 1. 장비 보관함 (Equipment Storage) 관련 이벤트 | 대상 (Entity/Service) | 이벤트 | 핸들러 이름 | 동작 | | :--- | :--- | :--- | :--- | | `/ui/HUDGroup/TownHUD/Panel_menu3/ScrollList/EquipmentButton` | `ButtonClickEvent` | `OnClick` | 메뉴 목록을 닫고, 장비 보관함 UI를 새로고침하여 오픈합니다. | | `InputService` [original] | | 실행제어 | 이벤트 중계자 | 이름 | 설명 | | --- | --- | --- | --- | | - | [entity] /ui/HUDGroup/TownHUD/Panel_menu3 /ScrollList/EquipmentButton | ButtonClickEvent | 마을 메뉴 UI에서 **장비 보관함** 버튼을 누르면 호출되는 핸들러입니다. 메뉴 목록을 닫고, 장비 보관함 UI를 새로고침 해 엽니다. | | - | service| KeyDownEvent | 장비 보관함이 열려 있을 때 Esc 키를 눌러 닫습니다. 상세 정보 [chunk_id] | Guides:1085:3
[task] | diverse_qa [title] | UI Components/Logics [category] | Guides [rephrased] | 질문: `UI_EquipmentShop_FilterButton` 컴포넌트는 어떤 UI 요소에 적용되는가? 답변: 장비 상점 UI의 장비 타입 필터 버튼에 붙어있는 컴포넌트입니다. 질문: `UI_EquipmentShop_FilterButton`의 `ButtonClickEvent` 핸들러가 실행되면 어떤 동작이 일어나는가? 답변: `UI_EquipmentShop`의 `FilterIdx`를 변경하고, `RefreshUI()`를 실행합니다. 질문: `UI_EquipmentShop_SlotButton` 컴포넌트는 어디에 적용되는가? 답변 [original] | # UI_EquipmentShop_FilterButton 장비 상점 UI의 **장비 타입 필터** 버튼에 붙어있는 컴포넌트입니다. #### Entity Event Handler | 실행제어 | 타입 | 이름 | 설명 | | --- | --- | --- | --- | | - | self | ButtonClickEvent | 버튼을 누르면 UI_EquipmentShop의 `FilterIdx`를 변경하고, `RefreshUI()`를 실행합니다. | # UI_EquipmentShop_SlotButton 장비 상점 UI 내 상품 [chunk_id] | Guides:1085:2
[task] | extract_knowledge [title] | UI Components/Logics [category] | Guides [rephrased] | # 광부 시뮬레이터 리메이크: UI 이벤트 제어 로직 ## 1. 개념 설명 본 절에서는 광부 시뮬레이터 리메이크 프로젝트에서 사용자 인터페이스(UI)의 상호작용을 처리하는 두 가지 주요 이벤트 핸들러를 다룹니다. 1. **UI 닫기 처리**: `InputService`의 `KeyDownEvent`를 통해 Esc 키 입력 또는 특정 닫기 버튼 클릭 시 UI를 닫는 동작을 수행합니다. 2. **장비 구매 처리**: 장비 상세 정보 팝업(`DetailInfoPopup`) 내의 구매 버튼(`Button_Buy`) 클릭 이벤트를 통해 [original] | | 실행제어 | 이벤트 중계자 | 이름 | 설명 | | --- | --- | --- | --- | | - | InputService| KeyDownEvent | Esc 키를 누르거나, 닫기 버튼을 눌러 UI를 닫습니다. | | -| [entity] /ui/EquipmentShopGroup/EquipmentShop /DetailInfoPopup/Panel/Button_Buy | ButtonClick | 상세 정보 팝업에 있는 구매 버튼을 눌렀을 때 실행합니다. `self.FilterIdx`와 `self.ShowingEquipmen [chunk_id] | Guides:1085:1
[task] | distill [title] | UI Components/Logics [category] | Guides [rephrased] | ```lua -- UI_Inventory (Key/Input Handling) [service: UserService] HandleKeyDownEvent(KeyDownEvent event) { -- 'I' 키: UI 토글 (열림/닫힘) -- 'Esc' 키: UI 닫기 (상세 팝업이 열려 있으면 팝업만 닫음) } [entity: /ui/InventoryGroup/Inventory/Panel/TitlePanel/ExitButton] HandleButtonClickEvent(ButtonClickEvent event) { [original] | 실행제어 | 이벤트 중계자 | 이름 | 설명 | | --- | --- | --- | --- | | - | self | KeyDownEvent | `I` 키를 눌러 UI를 열고, 닫습니다. `Esc` 키를 눌러 UI를 닫습니다. 이때 상세 정보 팝업창이 열려 있다면, 팝업창만 닫습니다. | | - | [entity] ExitButton (/ui/InventoryGroup/Inventory /Panel/TitlePanel/ExitButton) | ButtonClickEvent | 닫기 버튼을 눌러 UI를 비활성화 합니다. | # [chunk_id] | Guides:1085:5
[task] | extract_knowledge [title] | 예시로 알아보는 서버 검증 [category] | Guides [rephrased] | # 서버 검증과 클라이언트 신뢰 분리 mLua 환경에서는 클라이언트가 보내는 입력을 서버가 맹목적으로 신뢰하지 않도록 설계해야 합니다. 클라이언트는 네트워크 지연이나 조작으로 인해 데이터가 변질될 수 있으므로, 자산 지급 등 중요한 로직 실행 전 반드시 서버 측에서 검증 로직을 수행해야 합니다. 이 절에서는 열쇠를 메소(Gold)로 교환하는 과정을 예로 들어, 서버 검증의 필수 요소와 구현 방법을 설명합니다. ## 1. 개념: 서버 검증의 4가지 요소 클라이언트에서 요청이 들어왔을 때 서버는 다음 4가지 요소를 확인하여 요청의 [original] | 위의 4가지 검증 요소 확인하고, 열쇠를 메소로 교환할 수 있는 서버 함수들을 작성해봅시다. 1. MyPlayerComponent에 `OnBeginPlay()` 함수를 생성합니다. 월드 입장 시 열쇠를 10개를 지급하고, 골드는 0으로 초기화할 수 있도록 아래와 같이 작성합니다. ```lua [server only] void OnBeginPlay() { -- key, gold 값 세팅 self.key = 10 self.gold = 0 } `` [chunk_id] | Guides:1084:5
[task] | diverse_qa [title] | UI Components/Logics [category] | Guides [rephrased] | 질문: 광산 결과 UI 화면에서 아이템 정보 컴포넌트는 어떤 조건에서 `ButtonStateChangeEvent`를 호출하나요? 답변: 각 아이템에 마우스를 올리거나 화면을 꾹 눌렀을 때 `ButtonStateChangeEvent`를 호출합니다. 질문: 광산 결과 UI의 `ButtonStateChangeEvent`는 PC와 Mobile 환경에서 각각 어떻게 아이템 정보를 보여주는가요? 답변: PC에서는 목록에 마우스를 올리면 아이템 정보가 보이고, Mobile에서는 목록을 눌러서 볼 수 있습니다. 질문: `UI_HUD` 컴포넌트 [original] | 광산 결과 UI 화면에 있는 아이템 목록마다 붙어있는 아이템 정보를 보여주는 컴포넌트입니다. 각 아이템에 마우스를 올리거나 화면을 꾹 누르면 `ButtonStateChangeEvent`를 호출합니다. #### Entity Event Handler | 실행제어 | 이벤트 중계자 | 이름 | 설명 | | --- | --- | --- | --- | | - | self | ButtonStateChangeEvent | 아이템을 누르면 아이템 정보를 보여줍니다. PC에서는 목록에 마우스를 올리면 보이고, Mobile에서는 목록을 눌러 볼 [chunk_id] | Guides:1085:4
[task] | wikipedia [title] | UI Components/Logics [category] | Guides [rephrased] | # 광부 시뮬레이터 리메이크: UI 컴포넌트 및 로직 본 문서는 '광부 시뮬레이터 리메이크' 프로젝트에서 사용된 주요 UI 컴포넌트와 그 동작 로직을 기술합니다. 각 컴포넌트는 특정 엔티티 경로에 배치되며, 버튼 클릭이나 키 입력 등 사용자 상호작용에 따라 게임 상태를 변경하거나 UI를 제어합니다. ## 마을 및 장비 보관함 UI 이벤트 마을 메뉴와 장비 보관함 UI에서는 다음과 같은 이벤트 핸들러가 정의되어 있습니다. 첫째, 마을 메뉴 UI의 장비 보관함 버튼 이벤트입니다. 엔티티 경로 `/ui/HUDGroup/TownHU [original] | | 실행제어 | 이벤트 중계자 | 이름 | 설명 | | --- | --- | --- | --- | | - | [entity] /ui/HUDGroup/TownHUD/Panel_menu3 /ScrollList/EquipmentButton | ButtonClickEvent | 마을 메뉴 UI에서 **장비 보관함** 버튼을 누르면 호출되는 핸들러입니다. 메뉴 목록을 닫고, 장비 보관함 UI를 새로고침 해 엽니다. | | - | service| KeyDownEvent | 장비 보관함이 열려 있을 때 Esc 키를 눌러 닫습니다. 상세 정보 [chunk_id] | Guides:1085:3
[task] | knowledge_list [title] | UI Components/Logics [category] | Guides [rephrased] | 제공된 문서의 내용만 기반으로 핵심 사실을 추출하여 목록으로 정리했습니다. 1. 인벤토리 UI의 `self` 컴포넌트는 `KeyDownEvent` 이벤트 핸들러를 통해 `I` 키 입력 시 UI를 열거나 닫고, `Esc` 키 입력 시 UI를 닫으며, 상세 정보 팝업창이 열려 있을 경우 팝업창만 닫는 동작을 수행합니다. 2. 경로 `/ui/InventoryGroup/Inventory/Panel/TitlePanel/ExitButton`에 있는 `ExitButton` 엔티티의 `ButtonClickEvent` 이벤트 핸들러는 닫기 버 [original] | 실행제어 | 이벤트 중계자 | 이름 | 설명 | | --- | --- | --- | --- | | - | self | KeyDownEvent | `I` 키를 눌러 UI를 열고, 닫습니다. `Esc` 키를 눌러 UI를 닫습니다. 이때 상세 정보 팝업창이 열려 있다면, 팝업창만 닫습니다. | | - | [entity] ExitButton (/ui/InventoryGroup/Inventory /Panel/TitlePanel/ExitButton) | ButtonClickEvent | 닫기 버튼을 눌러 UI를 비활성화 합니다. | # [chunk_id] | Guides:1085:5
[task] | wikipedia [title] | UI Components/Logics [category] | Guides [rephrased] | **광부 시뮬레이터 리메이크 UI Components/Logics** 본 문서는 메이플스토리 월드(MapleStory Worlds)의 '광부 시뮬레이터 리메이크' 응용에서 사용되는 UI 관련 컴포넌트들의 구조와 동작 방식을 설명합니다. 주요 컴포넌트로는 광산 결과 화면의 아이템 정보 표시를 담당하는 컴포넌트, HUD(Heads-Up Display) 컴포넌트, 그리고 인벤토리 컴포넌트가 있습니다. ### 광산 결과 아이템 정보 컴포넌트 이 컴포넌트는 광산 결과 UI 화면에 표시되는 아이템 목록의 각 아이템에 대해 상세 정보를 보 [original] | 광산 결과 UI 화면에 있는 아이템 목록마다 붙어있는 아이템 정보를 보여주는 컴포넌트입니다. 각 아이템에 마우스를 올리거나 화면을 꾹 누르면 `ButtonStateChangeEvent`를 호출합니다. #### Entity Event Handler | 실행제어 | 이벤트 중계자 | 이름 | 설명 | | --- | --- | --- | --- | | - | self | ButtonStateChangeEvent | 아이템을 누르면 아이템 정보를 보여줍니다. PC에서는 목록에 마우스를 올리면 보이고, Mobile에서는 목록을 눌러 볼 [chunk_id] | Guides:1085:4
[task] | knowledge_list [title] | UI Components/Logics [category] | Guides [rephrased] | 제공된 문서에 명시된 핵심 사실들을 추출하여 목록으로 정리했습니다. ```lua 1. 광산 결과 UI의 아이템 목록 항목에 부착되는 컴포넌트는 아이템 정보를 표시하며, 마우스 호버(PC)나 터치(Mobile) 시 `ButtonStateChangeEvent`를 트리거합니다. 2. 해당 컴포넌트는 `[self]` 이벤트 중계자를 통해 `ButtonStateChangeEvent`를 처리하며, 아이템을 누르거나 마우스를 올리면 아이템 정보를 보여주는 동작을 수행합니다. 3. `UI_HUD` 컴포넌트는 `[None]` 실행제어 하의 `En [original] | 광산 결과 UI 화면에 있는 아이템 목록마다 붙어있는 아이템 정보를 보여주는 컴포넌트입니다. 각 아이템에 마우스를 올리거나 화면을 꾹 누르면 `ButtonStateChangeEvent`를 호출합니다. #### Entity Event Handler | 실행제어 | 이벤트 중계자 | 이름 | 설명 | | --- | --- | --- | --- | | - | self | ButtonStateChangeEvent | 아이템을 누르면 아이템 정보를 보여줍니다. PC에서는 목록에 마우스를 올리면 보이고, Mobile에서는 목록을 눌러 볼 [chunk_id] | Guides:1085:4
[task] | diverse_qa [title] | UI Components/Logics [category] | Guides [rephrased] | 질문: 인벤토리 UI를 열고 닫는 데 사용되는 키보드 단축키는 무엇이며, 상세 정보 팝업창이 열려 있을 때 Esc 키를 누르면 어떤 일이 발생합니까? 답변: `I` 키를 눌러 UI를 열고 닫을 수 있으며, `Esc` 키를 누르면 UI를 닫습니다. 이때 상세 정보 팝업창이 열려 있다면, 팝업창만 닫습니다. 질문: `/ui/InventoryGroup/Inventory/Panel/TitlePanel/ExitButton` 경로에 있는 닫기 버튼을 누르면 어떤 결과가 발생합니까? 답변: UI를 비활성화합니다. 질문: `UI_Invento [original] | 실행제어 | 이벤트 중계자 | 이름 | 설명 | | --- | --- | --- | --- | | - | self | KeyDownEvent | `I` 키를 눌러 UI를 열고, 닫습니다. `Esc` 키를 눌러 UI를 닫습니다. 이때 상세 정보 팝업창이 열려 있다면, 팝업창만 닫습니다. | | - | [entity] ExitButton (/ui/InventoryGroup/Inventory /Panel/TitlePanel/ExitButton) | ButtonClickEvent | 닫기 버튼을 눌러 UI를 비활성화 합니다. | # [chunk_id] | Guides:1085:5
[task] | extract_knowledge [title] | UI Components/Logics [category] | Guides [rephrased] | # UI_EquipmentShop_FilterButton 장비 상점 UI의 장비 타입 필터 버튼에 부착되는 컴포넌트입니다. ## 개념 설명 이 컴포넌트는 사용자가 특정 장비 유형(예: 곡괭이, 작업복 등)을 선택하도록 하는 인터페이스 역할을 합니다. 버튼 클릭 시 상위 UI 로직인 `UI_EquipmentShop`의 필터 상태를 변경하고 UI 갱신을 트리거합니다. ## API 사용법 ### Entity Event Handler | 실행제어 | 타입 | 이름 | 설명 | | --- | --- | --- | --- | | - | [original] | # UI_EquipmentShop_FilterButton 장비 상점 UI의 **장비 타입 필터** 버튼에 붙어있는 컴포넌트입니다. #### Entity Event Handler | 실행제어 | 타입 | 이름 | 설명 | | --- | --- | --- | --- | | - | self | ButtonClickEvent | 버튼을 누르면 UI_EquipmentShop의 `FilterIdx`를 변경하고, `RefreshUI()`를 실행합니다. | # UI_EquipmentShop_SlotButton 장비 상점 UI 내 상품 [chunk_id] | Guides:1085:2
[task] | distill [title] | UI Components/Logics [category] | Guides [rephrased] | # 광부 시뮬레이터 리메이크 UI Components/Logics ## 실행제어 및 Entity Event Handler **실행제어** - `[client only] void OnBeginPlay`: 월드 진입 시 엔티티를 `disable` 상태로 변경. - `[client] void RefreshUI`: 광물 상점 UI 갱신. (모든 광물 판매 후 또는 UI 열림 시 호출) **Entity Event Handler** - `[InputService] KeyDownEvent`: - `E` 키: 서버에서 광물 전체 판매 처 [original] | | 실행제어 | 타입 | 이름 | 설명 | | --- | --- | --- | --- | | client only | void | OnBeginPlay | 월드에 처음 진입할 때 엔티티를 `disable`로 변경합니다. | | client | void | RefreshUI | 광물 상점 UI를 갱신하는 함수입니다. 광물을 모두 판매하거나, 광물 상점 UI를 열 때 호출합니다. | #### Entity Event Handler | 실행제어 | 이벤트 중계자 | 이름 | 설명 | | --- | --- | --- | --- | | [chunk_id] | Guides:1085:6
[task] | wikipedia [title] | UI Components/Logics [category] | Guides [rephrased] | # 광부 시뮬레이터 리메이크: UI 컴포넌트 및 로직 이 문서는 '광부 시뮬레이터 리메이크' 프로젝트에서 사용된 주요 UI(User Interface) 컴포넌트와 로직의 동작 방식을 설명합니다. 각 컴포넌트는 특정 UI 요소에 부착되어 사용자 입력에 반응하거나 상태 변화를 관리합니다. ## 인벤토리 UI 제어 및 필터 인벤토리 UI는 키보드 입력과 버튼 클릭을 통해 제어되며, 필터링 기능과 아이템 상세 정보 확인 기능을 제공합니다. ### 인벤토리 열기/닫기 및 필터 버튼 인벤토리 UI를 제어하는 이벤트 처리자는 다음과 같 [original] | 실행제어 | 이벤트 중계자 | 이름 | 설명 | | --- | --- | --- | --- | | - | self | KeyDownEvent | `I` 키를 눌러 UI를 열고, 닫습니다. `Esc` 키를 눌러 UI를 닫습니다. 이때 상세 정보 팝업창이 열려 있다면, 팝업창만 닫습니다. | | - | [entity] ExitButton (/ui/InventoryGroup/Inventory /Panel/TitlePanel/ExitButton) | ButtonClickEvent | 닫기 버튼을 눌러 UI를 비활성화 합니다. | # [chunk_id] | Guides:1085:5
[task] | distill [title] | Components [category] | Guides [rephrased] | # Localization_NPC NPC의 `NameTag`, `ChatBalloon` 자동 번역 컴포넌트. `OnBeginPlay()`에서 번역. **요구사항**: 아래 프로퍼티에 번역 key값 설정 필요. * `NameTagComponent.Name` * `ChatBalloonComponent.Message` * 자식 엔티티의 `NameTagComponent.Name` # ToolObject **밧줄, 트램펄린**의 NameTag 번역 컴포넌트. `Tools_Rope`, `Tools_Trampoline` 모델에 기본 탑재. * [original] | # Localization_NPC NPC의 NameTag, ChatBalloon을 번역하기 위한 컴포넌트입니다. 번역이 필요한 NPC에게 붙이면 `OnBeginPlay( )`에서 자동으로 번역합니다. 아래 프로퍼티들에 번역을 위한 key값을 넣어 두어야 합니다. * **NameTagComponent.Name** * **ChatBalloonComponent.Message** * **자식 엔티티의 NameTagComponent.Name** # ToolObject **밧줄, 트램펄린**의 NameTag를 번역하기 위한 컴포넌트입 [chunk_id] | Guides:1086:0
[task] | wikipedia [title] | UI Components/Logics [category] | Guides [rephrased] | ## 광부 시뮬레이터 리메이크: UI 컴포넌트 및 로직 본 섹션은 광부 시뮬레이터 리메이크 프로젝트에서 사용되는 UI 컴포넌트와 그 동작 로직을 설명합니다. ### UI 컴포넌트 메서드 UI 컴포넌트는 다음과 같은 메서드를 포함합니다. 첫째, `OnBeginPlay` 메서드는 `client only` 실행 공간에서 `void` 타입으로 정의됩니다. 이 메서드는 월드에 처음 진입할 때 해당 엔티티를 `disable` 상태로 변경하는 역할을 수행합니다. 둘째, `RefreshUI` 메서드는 `client` 실행 공간에서 `vo [original] | | 실행제어 | 타입 | 이름 | 설명 | | --- | --- | --- | --- | | client only | void | OnBeginPlay | 월드에 처음 진입할 때 엔티티를 `disable`로 변경합니다. | | client | void | RefreshUI | 광물 상점 UI를 갱신하는 함수입니다. 광물을 모두 판매하거나, 광물 상점 UI를 열 때 호출합니다. | #### Entity Event Handler | 실행제어 | 이벤트 중계자 | 이름 | 설명 | | --- | --- | --- | --- | | [chunk_id] | Guides:1085:6
[task] | knowledge_list [title] | UI Components/Logics [category] | Guides [rephrased] | ```lua -- 문서에서 추출한 핵심 사실 목록입니다. -- 각 항목은 독립적으로 이해되는 완결된 문장입니다. -- [실행제어: client only] void OnBeginPlay() 함수는 월드에 처음 진입할 때 해당 엔티티를 disable 상태로 변경합니다. -- [실행제어: client] void RefreshUI() 함수는 광물 상점 UI를 갱신하며, 광물을 모두 판매하거나 광물 상점 UI를 열 때 호출됩니다. -- [이벤트 중계자: InputService] KeyDownEvent 이벤트 핸들러는 E 키 입력 시 광물 [original] | | 실행제어 | 타입 | 이름 | 설명 | | --- | --- | --- | --- | | client only | void | OnBeginPlay | 월드에 처음 진입할 때 엔티티를 `disable`로 변경합니다. | | client | void | RefreshUI | 광물 상점 UI를 갱신하는 함수입니다. 광물을 모두 판매하거나, 광물 상점 UI를 열 때 호출합니다. | #### Entity Event Handler | 실행제어 | 이벤트 중계자 | 이름 | 설명 | | --- | --- | --- | --- | | [chunk_id] | Guides:1085:6
[task] | diverse_qa [title] | UI Components/Logics [category] | Guides [rephrased] | 질문: 광부 시뮬레이터 리메이크에서 `Initialize` 함수는 어떤 실행 공간에서 동작하며, 어떤 파라미터들을 초기화합니까? 답변: `Initialize` 함수는 `client` 실행 공간에서 동작하며, 상호 작용한 광맥의 레벨(`VeinLevel`), 광맥 엔티티(`VeinEntity`), 광맥의 열쇠 보유 여부(`IsKeyBox`)를 초기화합니다. 질문: `SetTimingBarPosition` 함수가 보너스 게임을 진행할 때 UI에 대해 수행하는 동작은 무엇입니까? 답변: 보너스 게임일 경우 기본 게임 UI를 끄고, 보너 [original] | | 실행제어 | 타입 | 이름 | 설명 | | --- | --- | --- | --- | | client | void | Initialize | 채광 게임을 시작하기 위해 각종 프로퍼티를 초기화하는 함수입니다. 광맥과 상호 작용 시 호출됩니다 <ul><li>VeinLevel: 상호 작용한 광맥의 레벨</li> <li>VeinEntity: 상호 작용한 광맥 엔티티</li> <li>IsKeyBox: 광맥의 열쇠 보유 여부</li></ul> | | client | void | SetTimingBarPosition | 미니 게임에서 타이밍 [chunk_id] | Guides:1085:7
[task] | extract_knowledge [title] | UI Components/Logics [category] | Guides [rephrased] | # 광부 시뮬레이터 UI 컴포넌트 본 절에서는 광부 시뮬레이터 리메이크 프로젝트에서 사용되는 주요 UI 컴포넌트(`ItemInfo`, `UI_HUD`, `UI_Inventory`)의 구조와 동작 방식을 다룹니다. 이 컴포넌트들은 채광 결과물 표시, 게임 상태 정보(HUD) 관리, 그리고 인벤토리 조작을 담당합니다. ## 1. ItemInfo 컴포넌트 광산 결과 UI 화면의 아이템 목록에 부착되어 개별 아이템 정보를 표시하는 컴포넌트입니다. 사용자 입력(마우스 호버 또는 터치)에 반응하여 상세 정보를 노출합니다. ### API [original] | 광산 결과 UI 화면에 있는 아이템 목록마다 붙어있는 아이템 정보를 보여주는 컴포넌트입니다. 각 아이템에 마우스를 올리거나 화면을 꾹 누르면 `ButtonStateChangeEvent`를 호출합니다. #### Entity Event Handler | 실행제어 | 이벤트 중계자 | 이름 | 설명 | | --- | --- | --- | --- | | - | self | ButtonStateChangeEvent | 아이템을 누르면 아이템 정보를 보여줍니다. PC에서는 목록에 마우스를 올리면 보이고, Mobile에서는 목록을 눌러 볼 [chunk_id] | Guides:1085:4
[task] | wikipedia [title] | Components [category] | Guides [rephrased] | **Localization_NPC** `Localization_NPC` 컴포넌트는 NPC의 `NameTag`와 `ChatBalloon` 텍스트를 번역하기 위해 설계되었습니다. 이 컴포넌트를 번역이 필요한 NPC 엔티티에 부착하면, `OnBeginPlay()` 함수 실행 시점에 자동으로 번역 처리가 수행됩니다. 번역 대상이 되는 텍스트는 특정 프로퍼티에 저장된 키(key) 값을 기반으로 하며, 해당 프로퍼티에는 다음 세 가지 항목의 키 값이 포함되어 있어야 합니다. 첫째, NPC 자체의 `NameTagComponent.Name` [original] | # Localization_NPC NPC의 NameTag, ChatBalloon을 번역하기 위한 컴포넌트입니다. 번역이 필요한 NPC에게 붙이면 `OnBeginPlay( )`에서 자동으로 번역합니다. 아래 프로퍼티들에 번역을 위한 key값을 넣어 두어야 합니다. * **NameTagComponent.Name** * **ChatBalloonComponent.Message** * **자식 엔티티의 NameTagComponent.Name** # ToolObject **밧줄, 트램펄린**의 NameTag를 번역하기 위한 컴포넌트입 [chunk_id] | Guides:1086:0
[task] | extract_knowledge [title] | UI Components/Logics [category] | Guides [rephrased] | # 광부 시뮬레이터 UI 컴포넌트 및 로직 본 절에서는 광부 시뮬레이터 리메이크 프로젝트에서 사용되는 주요 UI 컴포넌트와 이벤트 핸들러의 동작 방식을 설명합니다. 장비 보관함 조작, 필터링, 상세 정보 표시, 그리고 게임 결과 화면 처리에 초점을 맞춥니다. ## 1. 장비 보관함(Equipment Storage) UI 컴포넌트 장비 보관함 UI는 메인 메뉴 접근, 키보드 입력 처리, 상세 정보 팝업 조작으로 구성됩니다. 각 컴포넌트는 특정 엔티티 경로에 배치되어 버튼 클릭 또는 키 입력 이벤트를 수신합니다. ### 1.1 [original] | | 실행제어 | 이벤트 중계자 | 이름 | 설명 | | --- | --- | --- | --- | | - | [entity] /ui/HUDGroup/TownHUD/Panel_menu3 /ScrollList/EquipmentButton | ButtonClickEvent | 마을 메뉴 UI에서 **장비 보관함** 버튼을 누르면 호출되는 핸들러입니다. 메뉴 목록을 닫고, 장비 보관함 UI를 새로고침 해 엽니다. | | - | service| KeyDownEvent | 장비 보관함이 열려 있을 때 Esc 키를 눌러 닫습니다. 상세 정보 [chunk_id] | Guides:1085:3
[task] | distill [title] | UI Components/Logics [category] | Guides [rephrased] | # 광부 시뮬레이터 리메이크: UI Components/Logics ## 1. 채광 미니 게임 로직 (UI_MiningGame 등) ### Method | 실행제어 | 시그니처 | 동작 및 주의사항 | | :--- | :--- | :--- | | `client` | `void Initialize()` | 채광 시작 시 호출. `VeinLevel`(레벨), `VeinEntity`(엔티티), `IsKeyBox`(열쇠 여부) 초기화. | | `client` | `void SetTimingBarPosition()` | 타이밍 영역 위치 [original] | | 실행제어 | 타입 | 이름 | 설명 | | --- | --- | --- | --- | | client | void | Initialize | 채광 게임을 시작하기 위해 각종 프로퍼티를 초기화하는 함수입니다. 광맥과 상호 작용 시 호출됩니다 <ul><li>VeinLevel: 상호 작용한 광맥의 레벨</li> <li>VeinEntity: 상호 작용한 광맥 엔티티</li> <li>IsKeyBox: 광맥의 열쇠 보유 여부</li></ul> | | client | void | SetTimingBarPosition | 미니 게임에서 타이밍 [chunk_id] | Guides:1085:7