Files
blub-blub/scripts/korean.gd
T
ttipo 446d8d177c 바탕화면 바닷속 방치형 위젯 첫 커밋
화면 아래 가장자리에 가로로 깔리는 Godot 4.7 위젯.
거품을 모아 바다를 꾸미고, 꾸밀수록 거품이 더 빨리 모인다.

- 도킹 창: 투명·테두리 없음, 화면 폭 전체, 위/아래 가장자리 스냅,
  높이 프리셋, 클릭 통과(모서리로 복귀), DPI 배율 보정
- 3/4 부감 격자: 구역당 9x6, 전체 45x6 = 270칸.
  바닥은 위에서, 물체는 서 있는 모습으로 그리고 Y 정렬로 앞뒤를 가린다
- 구역 5개(얕은 바다 -> 열수구): 앞 구역을 꾸며야 다음이 열린다
- 칸이 곧 한계인 경제: 배치/이동/치우기(절반 환불), 여러 칸짜리 장식
- 저장: 30초 자동 저장, 백업 한 세대, 8시간 상한 오프라인 보상,
  격자 이전 형식 저장본 자동 이전
- 스모크 테스트 60여 개 (test.ps1)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-01 17:59:50 +09:00

33 lines
988 B
GDScript

class_name Korean
## 한글 조사 처리. 앞 글자의 받침 유무에 따라 을/를, 이/가, 은/는이 갈린다.
## 구역 이름을 문장에 끼워 넣을 때 "켈프 숲를" 같은 어색한 말이 나오지 않게 한다.
const HANGUL_FIRST := 0xAC00
const HANGUL_LAST := 0xD7A3
## 마지막 글자에 받침이 있는지. 한글 음절이 아니면 없는 것으로 친다.
static func has_final(word: String) -> bool:
if word.is_empty():
return false
var c := word.unicode_at(word.length() - 1)
if c < HANGUL_FIRST or c > HANGUL_LAST:
return false
return (c - HANGUL_FIRST) % 28 != 0
static func josa(word: String, with_final: String, without_final: String) -> String:
return word + (with_final if has_final(word) else without_final)
static func eul(word: String) -> String:
return josa(word, "", "")
static func i(word: String) -> String:
return josa(word, "", "")
static func eun(word: String) -> String:
return josa(word, "", "")