KurokoSis' Statecraft And Parliament v3.1.0 (KDS Core)

문명 5: 국정과 의회
Civilization V: Statecraft & Parliament
Kuroko Parliament System v2.6 Dynamic UI

개요
----
이 모드는 Civilization V에 국내 정치형 국회 시스템을 추가합니다.
인쇄기 연구 이후 정치력, 정통성, 갈등, 정당, 선거, 지역구, 법안, 상임위원회, 의원, 로비, 여론, 예산, 탄핵·불신임·계엄 심사를 처리합니다.

v2.0 핵심
---------
- v1.9까지의 기능을 안정화판으로 정리
- 버전 상수와 디버그 로그 스위치 추가
- 선택 등록용 진단 Lua 추가
- 기능 토글 가이드, 계수표, 디버그 가이드, ModBuddy 체크리스트 추가
- 모드명 정리
  - 한국어: 문명 5: 국정과 의회
  - 영어: Civilization V: Statecraft & Parliament

파일 구성
---------
SQL/
  Kuroko_06_Buildings_Parliament.sql
  Kuroko_08_Policies_Parliament.sql

XML/
  Kuroko_GameText_Parliament_ko_KR.xml
  Kuroko_GameText_Parliament_en_US.xml

Lua/
  KurokoParliamentSystem.lua
  KurokoParliamentPopup.lua
  KurokoParliamentPopup.xml
  KurokoParliamentMemberNames.lua
  KurokoParliamentDiagnostics.lua

Docs/
  Kuroko_Parliament_CodeStructure.md
  Kuroko_Parliament_BalanceGuide.md
  Kuroko_Parliament_FeatureToggleGuide.md
  Kuroko_Parliament_DebugGuide.md
  Kuroko_Parliament_ModBuddyChecklist.md
  CHANGELOG_v2_0.md

등록 요약
---------
SQL/XML 파일은 UpdateDatabase로 등록하십시오.
System.lua와 Popup.lua/xml은 InGameUIAddin으로 등록하는 것을 권장합니다.
MemberNames.lua는 include 가능하도록 VFS=true 또는 같은 Lua 컨텍스트에 배치하십시오.
Diagnostics.lua는 선택 등록 파일입니다.

주의
----
실제 Civ5 런타임 검증은 사용자 검증 전제입니다.
v2.0은 기능 추가보다 구조 정리, 문서화, 디버그 보조를 목표로 한 안정화판입니다.


[v2.1 Hotfix]
- Lua.log: KurokoParliamentSystem.lua main function has more than 200 local variables 오류 수정.
- 원인: Civ5 Lua 5.1의 한 함수당 local 변수 제한.
- 조치: System.lua 최상위 local 상수/함수 선언을 전역 선언으로 전환. 함수 내부 local은 유지.


[ v2.1 모듈 분리 등록 안내 ]
- Lua/KurokoParliamentSystem.lua: InGameUIAddin 등록
- Lua/KurokoParliamentPopup.xml + Lua/KurokoParliamentPopup.lua: InGameUIAddin 등록
- Lua/KurokoParliamentDiagnostics.lua: 선택 등록 또는 VFS=true
- 아래 helper module은 VFS=true만 설정하고 InGameUIAddin으로 등록하지 마십시오.
  * KurokoParliamentConfig.lua
  * KurokoParliamentCore.lua
  * KurokoParliamentElection.lua
  * KurokoParliamentSpeakerMembers.lua
  * KurokoParliamentBills.lua
  * KurokoParliamentPressureOpinion.lua
  * KurokoParliamentBudget.lua
  * KurokoParliamentCrisis.lua
  * KurokoParliamentEffects.lua
  * KurokoParliamentRuntime.lua

v2.1은 v2.0.1의 기능을 유지하면서 거대 System.lua를 기능별 모듈로 분리한 안정화 작업입니다.


[v2.2 추가 정보 메뉴 연동]
- 우측 상단 추가 정보 드롭다운에 "국회 개요 / Parliament Overview" 항목을 추가했습니다.
- v2.2.1: InfoCorner를 System.lua에서 include하도록 바꿔 별도 InGameUIAddin 등록 누락 문제를 줄였습니다.
- v2.2.1: 항목을 드롭다운 맨 아래가 아니라 상단 쪽에 삽입합니다.
- 인쇄기 연구 이후 해당 메뉴에서 국회 팝업을 수동으로 열 수 있습니다.
- 인쇄기 연구 전에 누르면 잠금 안내 화면이 열립니다.

ModBuddy 등록 추가:
  InGameUIAddin
  - Lua/KurokoParliamentInfoCorner.lua

주의:
  KurokoParliamentInfoCorner.lua는 메뉴 등록용 Addin입니다.
  helper module처럼 VFS=true만 주면 메뉴가 등록되지 않을 수 있습니다.


## v2.2.1 Hotfix

`KurokoParliamentInfoCorner.lua`는 이제 `KurokoParliamentSystem.lua`에서 include됩니다. ModBuddy에서는 `KurokoParliamentInfoCorner.lua`를 VFS=true로 두고, 별도 InGameUIAddin으로 중복 등록하지 않는 쪽을 권장합니다.


[v2.2.3 InfoCorner Fallback]
- InfoCorner 등록을 System.lua 최상단으로 이동했습니다.
- Lua/KurokoParliamentInfoCorner.xml을 추가했습니다.
- 추가 정보 메뉴가 계속 보이지 않는 환경에서는 Lua/KurokoParliamentInfoCorner.xml도 InGameUIAddin으로 등록하십시오.
- Lua/KurokoParliamentInfoCorner.lua는 VFS=true로 두십시오.
- Lua.log에서 `KurokoParliamentInfoCorner: registered AdditionalInformationDropdownGatherEntries handler`가 보여야 합니다.
- 메뉴를 열었을 때 `KurokoParliamentInfoCorner: added dropdown entry`가 찍히면 드롭다운 이벤트는 정상 작동한 것입니다.


[v2.2.3 Refresh Hotfix]
- InfoCorner 등록 직후 LuaEvents.RequestRefreshAdditionalInformationDropdownEntries() 호출 추가.
- TopPanel/InfoCorner가 이미 메뉴를 만든 뒤 로드되어도 국회 개요 항목이 다시 수집되도록 수정.


================================================================================
Kuroko Parliament System v2.4 - Tabbed UI
================================================================================

변경 요약
- 국회 팝업을 기능별 탭 구조로 개편했습니다.
- 기존처럼 한 화면에 모든 버튼을 늘어놓지 않고 다음 탭으로 분리합니다.
  1) 법안
  2) 정당·의원
  3) 위원회·여론
  4) 예산
  5) 권력견제
- 팝업 높이를 줄여 16:9 화면에서 하단 버튼이 잘리는 문제를 완화했습니다.
- 기존 버튼 Control ID는 유지했으므로 System.lua 쪽 LuaEvents는 바꾸지 않습니다.

등록 방식
- InGameUIAddin + VFS=true
  - Lua/KurokoParliamentSystem.lua
  - Lua/KurokoParliamentPopup.xml
  - Lua/KurokoParliamentInfoCorner.xml
- VFS=true only
  - 나머지 Lua/KurokoParliament*.lua
- UpdateDatabase
  - SQL/*.sql
  - XML/Kuroko_GameText_Parliament_ko_KR.xml
  - XML/Kuroko_GameText_Parliament_en_US.xml


[v2.4 - 인게임 도움말 / 버튼 툴팁]
- 국회 팝업에 도움말 탭 추가
- 상단 상태 라벨, 탭 버튼, 주요 행동 버튼에 마우스 오버 설명 추가
- 법안 버튼은 기존 예상 표결 툴팁을 유지하면서 상세 보정을 계속 표시
- 한국어/영어 도움말 및 툴팁 GameText 추가


================================================================================
Kuroko Parliament System v2.6 - Dynamic UI / ScrollPanel Refactor
================================================================================

변경 요약
- 법안 목록을 XML 고정 버튼에서 ScrollPanel + InstanceManager 동적 생성 방식으로 변경했습니다.
- 이제 법안 수가 늘어나도 Popup.xml에 버튼을 일일이 추가하지 않아도 됩니다.
- 선택 법안 설명, 상세 정보, 도움말 본문을 스크롤 영역으로 분리했습니다.
- 팝업 높이를 더 줄여 하단 제출/자동/폐지/닫기 버튼이 잘리는 문제를 완화했습니다.
- 구형 v2.4 XML과 섞어 등록했을 때도 기존 법안 버튼 콜백이 nil-safe fallback으로 동작합니다.

등록 방식은 v2.4와 동일합니다.


[v2.8 Settings Panel]
- 팝업에 진단 탭을 추가했습니다.
- 저장 데이터 버전, 기능 토글, 국회 해금 여부, 필수 DB Type 누락 여부를 인게임에서 확인할 수 있습니다.
- Lua.log 덤프 버튼으로 현재 상태 요약을 로그에 출력할 수 있습니다.


[v2.8]
- 국회 팝업에 설정 탭을 추가했습니다.
- 주요 기능 토글을 인게임에서 켜고 끌 수 있습니다.
- 토글값은 현재 플레이어 저장 데이터에 보존됩니다.
