사운드 추가

전면광고 조건 변경 -> 스테이지 클리어시 +1, 셔플시 +1, 총 5가 되면 다음 스테이지 시작 전 광고재생 -> 카운트 0

퍼즐 추가, 스테이지 추가.
This commit is contained in:
2026-10-06 00:54:37 +09:00
parent e4b3e50ba8
commit 740aad77b3
120 changed files with 21565 additions and 6835 deletions
File diff suppressed because it is too large Load Diff
@@ -9,6 +9,16 @@ color text_primary
color text_secondary color text_secondary
mipmap ic_launcher mipmap ic_launcher
mipmap ic_launcher_round mipmap ic_launcher_round
raw bgm_lobby
raw bgm_main
raw bgm_puzzle_1
raw bgm_puzzle_2
raw bgm_puzzle_3
raw sfx_correct
raw sfx_stage_clear
raw sfx_tile_click
raw sfx_tile_place
raw sfx_wrong
string app_name string app_name
string daily_limit_reached string daily_limit_reached
string easy_mode string easy_mode
@@ -1,46 +1,86 @@
[ [
{ {
"merged": "com.wordpuzzle.hangul.app-debug-79:/mipmap-mdpi_ic_launcher_round.png.flat", "merged": "/home/gerd/.gradle/daemon/9.6.0/com.wordpuzzle.hangul.app-debug-79:/raw_bgm_main.mp3.flat",
"source": "com.wordpuzzle.hangul.app-main-81:/mipmap-mdpi/ic_launcher_round.png" "source": "/home/gerd/.gradle/daemon/9.6.0/com.wordpuzzle.hangul.app-main-81:/raw/bgm_main.mp3"
}, },
{ {
"merged": "com.wordpuzzle.hangul.app-debug-79:/mipmap-xhdpi_ic_launcher_round.png.flat", "merged": "/home/gerd/.gradle/daemon/9.6.0/com.wordpuzzle.hangul.app-debug-79:/mipmap-xhdpi_ic_launcher_round.png.flat",
"source": "com.wordpuzzle.hangul.app-main-81:/mipmap-xhdpi/ic_launcher_round.png" "source": "/home/gerd/.gradle/daemon/9.6.0/com.wordpuzzle.hangul.app-main-81:/mipmap-xhdpi/ic_launcher_round.png"
}, },
{ {
"merged": "com.wordpuzzle.hangul.app-debug-79:/mipmap-xhdpi_ic_launcher.png.flat", "merged": "/home/gerd/.gradle/daemon/9.6.0/com.wordpuzzle.hangul.app-debug-79:/mipmap-xhdpi_ic_launcher.png.flat",
"source": "com.wordpuzzle.hangul.app-main-81:/mipmap-xhdpi/ic_launcher.png" "source": "/home/gerd/.gradle/daemon/9.6.0/com.wordpuzzle.hangul.app-main-81:/mipmap-xhdpi/ic_launcher.png"
}, },
{ {
"merged": "com.wordpuzzle.hangul.app-debug-79:/mipmap-hdpi_ic_launcher.png.flat", "merged": "/home/gerd/.gradle/daemon/9.6.0/com.wordpuzzle.hangul.app-debug-79:/mipmap-hdpi_ic_launcher.png.flat",
"source": "com.wordpuzzle.hangul.app-main-81:/mipmap-hdpi/ic_launcher.png" "source": "/home/gerd/.gradle/daemon/9.6.0/com.wordpuzzle.hangul.app-main-81:/mipmap-hdpi/ic_launcher.png"
}, },
{ {
"merged": "com.wordpuzzle.hangul.app-debug-79:/mipmap-xxhdpi_ic_launcher_round.png.flat", "merged": "/home/gerd/.gradle/daemon/9.6.0/com.wordpuzzle.hangul.app-debug-79:/xml_word_widget_info.xml.flat",
"source": "com.wordpuzzle.hangul.app-main-81:/mipmap-xxhdpi/ic_launcher_round.png" "source": "/home/gerd/.gradle/daemon/9.6.0/com.wordpuzzle.hangul.app-main-81:/xml/word_widget_info.xml"
}, },
{ {
"merged": "com.wordpuzzle.hangul.app-debug-79:/mipmap-xxxhdpi_ic_launcher.png.flat", "merged": "/home/gerd/.gradle/daemon/9.6.0/com.wordpuzzle.hangul.app-debug-79:/raw_sfx_tile_place.mp3.flat",
"source": "com.wordpuzzle.hangul.app-main-81:/mipmap-xxxhdpi/ic_launcher.png" "source": "/home/gerd/.gradle/daemon/9.6.0/com.wordpuzzle.hangul.app-main-81:/raw/sfx_tile_place.mp3"
}, },
{ {
"merged": "com.wordpuzzle.hangul.app-debug-79:/mipmap-hdpi_ic_launcher_round.png.flat", "merged": "com.wordpuzzle.hangul.app-debug-79:/raw_bgm_puzzle_1.mp3.flat",
"source": "com.wordpuzzle.hangul.app-main-81:/mipmap-hdpi/ic_launcher_round.png" "source": "com.wordpuzzle.hangul.app-main-81:/raw/bgm_puzzle_1.mp3"
}, },
{ {
"merged": "com.wordpuzzle.hangul.app-debug-79:/mipmap-xxxhdpi_ic_launcher_round.png.flat", "merged": "com.wordpuzzle.hangul.app-debug-79:/raw_bgm_lobby.mp3.flat",
"source": "com.wordpuzzle.hangul.app-main-81:/mipmap-xxxhdpi/ic_launcher_round.png" "source": "com.wordpuzzle.hangul.app-main-81:/raw/bgm_lobby.mp3"
}, },
{ {
"merged": "com.wordpuzzle.hangul.app-debug-79:/xml_word_widget_info.xml.flat", "merged": "com.wordpuzzle.hangul.app-debug-79:/raw_bgm_puzzle_2.mp3.flat",
"source": "com.wordpuzzle.hangul.app-main-81:/xml/word_widget_info.xml" "source": "com.wordpuzzle.hangul.app-main-81:/raw/bgm_puzzle_2.mp3"
}, },
{ {
"merged": "com.wordpuzzle.hangul.app-debug-79:/mipmap-xxhdpi_ic_launcher.png.flat", "merged": "/home/gerd/.gradle/daemon/9.6.0/com.wordpuzzle.hangul.app-debug-79:/raw_sfx_stage_clear.mp3.flat",
"source": "com.wordpuzzle.hangul.app-main-81:/mipmap-xxhdpi/ic_launcher.png" "source": "/home/gerd/.gradle/daemon/9.6.0/com.wordpuzzle.hangul.app-main-81:/raw/sfx_stage_clear.mp3"
}, },
{ {
"merged": "com.wordpuzzle.hangul.app-debug-79:/mipmap-mdpi_ic_launcher.png.flat", "merged": "/home/gerd/.gradle/daemon/9.6.0/com.wordpuzzle.hangul.app-debug-79:/mipmap-xxhdpi_ic_launcher_round.png.flat",
"source": "com.wordpuzzle.hangul.app-main-81:/mipmap-mdpi/ic_launcher.png" "source": "/home/gerd/.gradle/daemon/9.6.0/com.wordpuzzle.hangul.app-main-81:/mipmap-xxhdpi/ic_launcher_round.png"
},
{
"merged": "/home/gerd/.gradle/daemon/9.6.0/com.wordpuzzle.hangul.app-debug-79:/raw_sfx_correct.mp3.flat",
"source": "/home/gerd/.gradle/daemon/9.6.0/com.wordpuzzle.hangul.app-main-81:/raw/sfx_correct.mp3"
},
{
"merged": "/home/gerd/.gradle/daemon/9.6.0/com.wordpuzzle.hangul.app-debug-79:/mipmap-hdpi_ic_launcher_round.png.flat",
"source": "/home/gerd/.gradle/daemon/9.6.0/com.wordpuzzle.hangul.app-main-81:/mipmap-hdpi/ic_launcher_round.png"
},
{
"merged": "/home/gerd/.gradle/daemon/9.6.0/com.wordpuzzle.hangul.app-debug-79:/mipmap-mdpi_ic_launcher.png.flat",
"source": "/home/gerd/.gradle/daemon/9.6.0/com.wordpuzzle.hangul.app-main-81:/mipmap-mdpi/ic_launcher.png"
},
{
"merged": "/home/gerd/.gradle/daemon/9.6.0/com.wordpuzzle.hangul.app-debug-79:/raw_sfx_wrong.mp3.flat",
"source": "/home/gerd/.gradle/daemon/9.6.0/com.wordpuzzle.hangul.app-main-81:/raw/sfx_wrong.mp3"
},
{
"merged": "/home/gerd/.gradle/daemon/9.6.0/com.wordpuzzle.hangul.app-debug-79:/mipmap-xxhdpi_ic_launcher.png.flat",
"source": "/home/gerd/.gradle/daemon/9.6.0/com.wordpuzzle.hangul.app-main-81:/mipmap-xxhdpi/ic_launcher.png"
},
{
"merged": "/home/gerd/.gradle/daemon/9.6.0/com.wordpuzzle.hangul.app-debug-79:/mipmap-mdpi_ic_launcher_round.png.flat",
"source": "/home/gerd/.gradle/daemon/9.6.0/com.wordpuzzle.hangul.app-main-81:/mipmap-mdpi/ic_launcher_round.png"
},
{
"merged": "/home/gerd/.gradle/daemon/9.6.0/com.wordpuzzle.hangul.app-debug-79:/mipmap-xxxhdpi_ic_launcher.png.flat",
"source": "/home/gerd/.gradle/daemon/9.6.0/com.wordpuzzle.hangul.app-main-81:/mipmap-xxxhdpi/ic_launcher.png"
},
{
"merged": "com.wordpuzzle.hangul.app-debug-79:/raw_bgm_puzzle_3.mp3.flat",
"source": "com.wordpuzzle.hangul.app-main-81:/raw/bgm_puzzle_3.mp3"
},
{
"merged": "/home/gerd/.gradle/daemon/9.6.0/com.wordpuzzle.hangul.app-debug-79:/raw_sfx_tile_click.mp3.flat",
"source": "/home/gerd/.gradle/daemon/9.6.0/com.wordpuzzle.hangul.app-main-81:/raw/sfx_tile_click.mp3"
},
{
"merged": "/home/gerd/.gradle/daemon/9.6.0/com.wordpuzzle.hangul.app-debug-79:/mipmap-xxxhdpi_ic_launcher_round.png.flat",
"source": "/home/gerd/.gradle/daemon/9.6.0/com.wordpuzzle.hangul.app-main-81:/mipmap-xxxhdpi/ic_launcher_round.png"
} }
] ]
@@ -59,7 +59,7 @@
</td> </td>
<td> <td>
<div class="infoBox duration"> <div class="infoBox duration">
<div class="counter">0.014s</div> <div class="counter">0.012s</div>
<p>duration</p> <p>duration</p>
</div> </div>
</td> </td>
@@ -95,7 +95,7 @@
<td>1</td> <td>1</td>
<td>0</td> <td>0</td>
<td>0</td> <td>0</td>
<td data-sort-value="9">0.009s</td> <td data-sort-value="8">0.008s</td>
<td class="success" data-sort-value="100">100%</td> <td class="success" data-sort-value="100">100%</td>
</tr> </tr>
</tbody> </tbody>
@@ -112,7 +112,7 @@
<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/> <input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
</label> </label>
</div>Generated by </div>Generated by
<a href="https://www.gradle.org">Gradle 9.6.0</a> at 2026. 9. 21. 오전 2:11:33</p> <a href="https://www.gradle.org">Gradle 9.6.0</a> at 2026. 10. 4. 오후 7:45:09</p>
</div> </div>
</div> </div>
</body> </body>
@@ -59,7 +59,7 @@
</td> </td>
<td> <td>
<div class="infoBox duration"> <div class="infoBox duration">
<div class="counter">0.008s</div> <div class="counter">0.007s</div>
<p>duration</p> <p>duration</p>
</div> </div>
</td> </td>
@@ -95,7 +95,7 @@
<td>1</td> <td>1</td>
<td>0</td> <td>0</td>
<td>0</td> <td>0</td>
<td data-sort-value="8">0.008s</td> <td data-sort-value="7">0.007s</td>
<td class="success" data-sort-value="100">100%</td> <td class="success" data-sort-value="100">100%</td>
</tr> </tr>
</tbody> </tbody>
@@ -112,7 +112,7 @@
<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/> <input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
</label> </label>
</div>Generated by </div>Generated by
<a href="https://www.gradle.org">Gradle 9.6.0</a> at 2026. 9. 21. 오전 2:11:33</p> <a href="https://www.gradle.org">Gradle 9.6.0</a> at 2026. 10. 4. 오후 7:45:09</p>
</div> </div>
</div> </div>
</body> </body>
@@ -59,7 +59,7 @@
</td> </td>
<td> <td>
<div class="infoBox duration"> <div class="infoBox duration">
<div class="counter">0.005s</div> <div class="counter">0.012s</div>
<p>duration</p> <p>duration</p>
</div> </div>
</td> </td>
@@ -95,7 +95,7 @@
<td>1</td> <td>1</td>
<td>0</td> <td>0</td>
<td>0</td> <td>0</td>
<td data-sort-value="2">0.002s</td> <td data-sort-value="9">0.009s</td>
<td class="success" data-sort-value="100">100%</td> <td class="success" data-sort-value="100">100%</td>
</tr> </tr>
<tr> <tr>
@@ -139,7 +139,7 @@
<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/> <input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
</label> </label>
</div>Generated by </div>Generated by
<a href="https://www.gradle.org">Gradle 9.6.0</a> at 2026. 9. 21. 오전 2:11:33</p> <a href="https://www.gradle.org">Gradle 9.6.0</a> at 2026. 10. 4. 오후 7:45:09</p>
</div> </div>
</div> </div>
</body> </body>
@@ -56,7 +56,7 @@
</td> </td>
<td> <td>
<div class="infoBox duration"> <div class="infoBox duration">
<div class="counter">0.472s</div> <div class="counter">0.518s</div>
<p>duration</p> <p>duration</p>
</div> </div>
</td> </td>
@@ -94,7 +94,7 @@
<td>1</td> <td>1</td>
<td>0</td> <td>0</td>
<td>0</td> <td>0</td>
<td data-sort-value="14">0.014s</td> <td data-sort-value="12">0.012s</td>
<td class="success" data-sort-value="100">100%</td> <td class="success" data-sort-value="100">100%</td>
</tr> </tr>
<tr> <tr>
@@ -105,7 +105,7 @@
<td>1</td> <td>1</td>
<td>0</td> <td>0</td>
<td>0</td> <td>0</td>
<td data-sort-value="58">0.058s</td> <td data-sort-value="100">0.100s</td>
<td class="success" data-sort-value="100">100%</td> <td class="success" data-sort-value="100">100%</td>
</tr> </tr>
<tr> <tr>
@@ -116,7 +116,7 @@
<td>1</td> <td>1</td>
<td>0</td> <td>0</td>
<td>0</td> <td>0</td>
<td data-sort-value="8">0.008s</td> <td data-sort-value="7">0.007s</td>
<td class="success" data-sort-value="100">100%</td> <td class="success" data-sort-value="100">100%</td>
</tr> </tr>
<tr> <tr>
@@ -127,7 +127,7 @@
<td>4</td> <td>4</td>
<td>0</td> <td>0</td>
<td>0</td> <td>0</td>
<td data-sort-value="5">0.005s</td> <td data-sort-value="12">0.012s</td>
<td class="success" data-sort-value="100">100%</td> <td class="success" data-sort-value="100">100%</td>
</tr> </tr>
<tr> <tr>
@@ -155,7 +155,7 @@
<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/> <input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
</label> </label>
</div>Generated by </div>Generated by
<a href="https://www.gradle.org">Gradle 9.6.0</a> at 2026. 9. 21. 오전 2:11:33</p> <a href="https://www.gradle.org">Gradle 9.6.0</a> at 2026. 10. 4. 오후 7:45:09</p>
</div> </div>
</div> </div>
</body> </body>
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<testsuite name="com.wordpuzzle.hangul.domain.engine.HangulHelperTest" tests="1" skipped="0" failures="0" errors="0" timestamp="2026-09-20T17:11:33.074Z" hostname="vivoboxx" time="0.012"> <testsuite name="com.wordpuzzle.hangul.domain.engine.HangulHelperTest" tests="1" skipped="0" failures="0" errors="0" timestamp="2026-10-04T10:45:09.160Z" hostname="vivoboxx" time="0.011">
<properties/> <properties/>
<testcase name="isHangulSyllable_validatesCorrectly" classname="com.wordpuzzle.hangul.domain.engine.HangulHelperTest" time="0.009"/> <testcase name="isHangulSyllable_validatesCorrectly" classname="com.wordpuzzle.hangul.domain.engine.HangulHelperTest" time="0.008"/>
<system-out><![CDATA[]]></system-out> <system-out><![CDATA[]]></system-out>
<system-err><![CDATA[]]></system-err> <system-err><![CDATA[]]></system-err>
</testsuite> </testsuite>
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<testsuite name="com.wordpuzzle.hangul.domain.engine.TilePoolGeneratorTest" tests="1" skipped="0" failures="0" errors="0" timestamp="2026-09-20T17:11:33.149Z" hostname="vivoboxx" time="0.008"> <testsuite name="com.wordpuzzle.hangul.domain.engine.TilePoolGeneratorTest" tests="1" skipped="0" failures="0" errors="0" timestamp="2026-10-04T10:45:09.276Z" hostname="vivoboxx" time="0.007">
<properties/> <properties/>
<testcase name="generateLayoutWithStarterLetters_respectsFiftyPercentLimitAndPlacesStarterLettersCorrectly" classname="com.wordpuzzle.hangul.domain.engine.TilePoolGeneratorTest" time="0.008"/> <testcase name="generateLayoutWithStarterLetters_respectsFiftyPercentLimitAndPlacesStarterLettersCorrectly" classname="com.wordpuzzle.hangul.domain.engine.TilePoolGeneratorTest" time="0.007"/>
<system-out><![CDATA[]]></system-out> <system-out><![CDATA[]]></system-out>
<system-err><![CDATA[]]></system-err> <system-err><![CDATA[]]></system-err>
</testsuite> </testsuite>
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<testsuite name="com.wordpuzzle.hangul.domain.usecase.SolveTileUseCaseTest" tests="4" skipped="0" failures="0" errors="0" timestamp="2026-09-20T17:11:33.160Z" hostname="vivoboxx" time="0.005"> <testsuite name="com.wordpuzzle.hangul.domain.usecase.SolveTileUseCaseTest" tests="4" skipped="0" failures="0" errors="0" timestamp="2026-10-04T10:45:09.286Z" hostname="vivoboxx" time="0.012">
<properties/> <properties/>
<testcase name="removeCellChar_restoresTileToPool" classname="com.wordpuzzle.hangul.domain.usecase.SolveTileUseCaseTest" time="0.002"/> <testcase name="removeCellChar_restoresTileToPool" classname="com.wordpuzzle.hangul.domain.usecase.SolveTileUseCaseTest" time="0.002"/>
<testcase name="applyHint_revealsOneCell" classname="com.wordpuzzle.hangul.domain.usecase.SolveTileUseCaseTest" time="0.002"/> <testcase name="applyHint_revealsOneCell" classname="com.wordpuzzle.hangul.domain.usecase.SolveTileUseCaseTest" time="0.009"/>
<testcase name="easyMode_tapTile_automaticallyInsertsIntoCorrectCell_andClears" classname="com.wordpuzzle.hangul.domain.usecase.SolveTileUseCaseTest" time="0.001"/> <testcase name="easyMode_tapTile_automaticallyInsertsIntoCorrectCell_andClears" classname="com.wordpuzzle.hangul.domain.usecase.SolveTileUseCaseTest" time="0.001"/>
<testcase name="normalMode_insertChar_advancesToNextCellInWord_orClosestCell()" classname="com.wordpuzzle.hangul.domain.usecase.SolveTileUseCaseTest" time="0.0"/> <testcase name="normalMode_insertChar_advancesToNextCellInWord_orClosestCell()" classname="com.wordpuzzle.hangul.domain.usecase.SolveTileUseCaseTest" time="0.0"/>
<system-out><![CDATA[]]></system-out> <system-out><![CDATA[]]></system-out>

Some files were not shown because too many files have changed in this diff Show More