다음과 같은 주요 시스템들이 클라이언트 단에 추가되었습니다:
1. 대중 공황 (Mass Panic) 시스템
• 기존의 저항, 엔트로피, 위험 수용 계수 외에 '대중 공황' 파라미터를 추가했습니다.
• cards.csv 파일에 left_pan , right_pan 컬럼을 동적으로 업데이트하고, 일부 카드에 패널티/효과를 부여했습니다.
• 게임 메인 화면 상단에 😱 아이콘과 1~5단계 점(Dot) 위젯을 추가했습니다.
2. 주간 의회 (Weekly Council) 시스템
• 10턴 주기로 발동하는 CouncilScreen 컴포넌트를 신규 제작했습니다.
• 13명(상임 8명, 지부장 5명)의 위원회를 시각적으로 구현하고 위험 수용 계수에 따라 반대 확률이 증가하도록 로직을
작성했습니다.
• 3가지 개입 액션(매수, 장부 조작, 내부 감사)을 예산, 정보, 인력 토큰 소모를 통해 실행할 수 있도록 했습니다.
• 탄핵안 발의 및 법안(이득/표적) 상정 기능이 정상 작동합니다.
3. 무제한 인벤토리 및 자산 (Assets) 시스템
• 극비 카드를 완료했을 때 랜덤한 자산을 얻어 하단 인벤토리 슬롯에 시각적으로 누적되는 기초 로직을 붙였습니다.
• 스와이프 카드의 드래그를 양방향(XY)으로 허용하여, 극비 프로젝트의 경우 '위로 스와이프'하여 보류/버리기가
가능하도록 했습니다.
4. 연대기 (Chronicle) 시스템
• 좌상단 내러티브 태그 배지를 클릭하면 그동안 플레이어가 결재한 스토리와 선택(좌/우/위)을 기록한 ChroniclePopup
이 노출되도록 구현했습니다.
5. 멀티 엔딩 및 도감 시스템
• 단순한 게임 오버 화면을 대체하는 EndingScreen 컴포넌트를 제작했습니다.
• 4대 붕괴 조건(사임, 세계 멸망, 문명 붕괴, 정치적 탄핵) 중 어느 것을 달성했는지 판별하여 원인과 결과를 표시해
줍니다.
• 브라우저의 localStorage 를 이용해 수집된 엔딩이 도감에 영구적으로 기록되도록 처리했습니다.
28 lines
872 B
JavaScript
28 lines
872 B
JavaScript
import fs from 'fs';
|
|
import Papa from 'papaparse';
|
|
|
|
const csv = fs.readFileSync('./src/data/cards.csv', 'utf-8');
|
|
const parsed = Papa.parse(csv, { header: true });
|
|
|
|
parsed.data.forEach(row => {
|
|
if (!row.id) return;
|
|
row.left_pan = 0;
|
|
row.right_pan = 0;
|
|
// Let's add panic to some rows for testing
|
|
if (row.id == 23 || row.id == 11) {
|
|
row.left_pan = 1;
|
|
row.right_pan = 0;
|
|
}
|
|
});
|
|
|
|
const newCsv = Papa.unparse(parsed.data, {
|
|
columns: [
|
|
'id','type','text','flavor',
|
|
'left_text','left_res','left_ent','left_pan','left_rsk','left_bud','left_per','left_inf','left_wea','left_for','left_sur',
|
|
'right_text','right_res','right_ent','right_pan','right_rsk','right_bud','right_per','right_inf','right_wea','right_for','right_sur'
|
|
]
|
|
});
|
|
|
|
fs.writeFileSync('./src/data/cards.csv', newCsv);
|
|
console.log('CSV updated');
|