Skip to content

Commit

Permalink
fix: interactable invisible buttons; fix: crashing if skip speech/aud…
Browse files Browse the repository at this point in the history
…ios with delay

This commit brings a fix for issue that would create a invisible menu button from the scenes, and a fix for a issue that would make the VN crash if went to another scene without waiting for speech/audios with delay to end.
  • Loading branch information
ThePedroo committed Aug 1, 2023
1 parent 1acb491 commit cd1d0c8
Show file tree
Hide file tree
Showing 5 changed files with 78 additions and 21 deletions.
31 changes: 28 additions & 3 deletions android/app/src/main/java/com/perforvnm/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -373,7 +373,7 @@ class MainActivity : ComponentActivity() {
frameLayout.addView(textView2)

val textView3 = TextView(this)
textView3.text = "1.16.1-b.0 (code generator), 1.14.4-b.0 (generated code)"
textView3.text = "1.16.2-b.0 (code generator), 1.14.6-b.0 (generated code)"
textView3.textSize = 15f
textView3.setTextColor(0xFFFFFFFF.toInt())

Expand Down Expand Up @@ -889,6 +889,10 @@ class MainActivity : ComponentActivity() {
mediaPlayer = null
}

handler.removeCallbacksAndMessages(null)

findViewById<FrameLayout>(android.R.id.content).setOnClickListener(null)

mediaPlayer = MediaPlayer.create(this, R.raw.menu_music)

if (mediaPlayer != null) {
Expand Down Expand Up @@ -916,6 +920,9 @@ class MainActivity : ComponentActivity() {
mediaPlayer = null
}

handler.removeCallbacksAndMessages(null)
it.setOnClickListener(null)

scene2(true)
}
}
Expand Down Expand Up @@ -1065,6 +1072,10 @@ class MainActivity : ComponentActivity() {
buttonMenu.layoutParams = layoutParamsMenu

buttonMenu.setOnClickListener {
handler.removeCallbacksAndMessages(null)

findViewById<FrameLayout>(android.R.id.content).setOnClickListener(null)

mediaPlayer = MediaPlayer.create(this, R.raw.menu_music)

if (mediaPlayer != null) {
Expand Down Expand Up @@ -1100,6 +1111,10 @@ class MainActivity : ComponentActivity() {
buttonBack.layoutParams = layoutParamsBack

buttonBack.setOnClickListener {
handler.removeCallbacksAndMessages(null)

findViewById<FrameLayout>(android.R.id.content).setOnClickListener(null)

scene1()
}

Expand All @@ -1108,9 +1123,11 @@ class MainActivity : ComponentActivity() {
setContentView(frameLayout)

findViewById<FrameLayout>(android.R.id.content).setOnClickListener {
scene3()

handler.removeCallbacksAndMessages(null)
findViewById<FrameLayout>(android.R.id.content).setOnClickListener(null)
it.setOnClickListener(null)

scene3()
}
}

Expand Down Expand Up @@ -1227,6 +1244,10 @@ class MainActivity : ComponentActivity() {
buttonMenu.layoutParams = layoutParamsMenu

buttonMenu.setOnClickListener {
handler.removeCallbacksAndMessages(null)

findViewById<FrameLayout>(android.R.id.content).setOnClickListener(null)

mediaPlayer = MediaPlayer.create(this, R.raw.menu_music)

if (mediaPlayer != null) {
Expand Down Expand Up @@ -1262,6 +1283,10 @@ class MainActivity : ComponentActivity() {
buttonBack.layoutParams = layoutParamsBack

buttonBack.setOnClickListener {
handler.removeCallbacksAndMessages(null)

findViewById<FrameLayout>(android.R.id.content).setOnClickListener(null)

scene2(false)
}

Expand Down
45 changes: 35 additions & 10 deletions src/coder.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ import helper from './helper.js'

global.visualNovel = { menu: null, info: null, internalInfo: {}, code: '', scenes: [], customXML: [] }
global.PerforVNM = {
codeGeneratorVersion: '1.16.1-b.0',
generatedCodeVersion: '1.14.4-b.0',
codeGeneratorVersion: '1.16.2-b.0',
generatedCodeVersion: '1.14.6-b.0',
repository: 'https://github.com/PerformanC/PerforVNMaker'
}

Expand Down Expand Up @@ -105,16 +105,41 @@ function finalize() {
for (const scene of visualNovel.scenes) {
if (i != visualNovel.scenes.length - 1) {
const nextScene = visualNovel.scenes[i + 1]
const finishScene = []

if ((scene.effect && !scene.music) || (scene.effect && scene.music)) {
finishScene.push(' if (mediaPlayer != null) {' + '\n' +
' mediaPlayer!!.stop()' + '\n' +
' mediaPlayer!!.release()' + '\n' +
' mediaPlayer = null' + '\n' +
' }' + '\n')
}

if (scene.effect && scene.music) {
finishScene.push(' if (mediaPlayer != null) {' + '\n' +
' mediaPlayer!!.stop()' + '\n' +
' mediaPlayer!!.release()' + '\n' +
' mediaPlayer = null' + '\n' +
' }' + '\n')

finishScene.push(' if (mediaPlayer2 != null) {' + '\n' +
' mediaPlayer2!!.stop()' + '\n' +
' mediaPlayer2!!.release()' + '\n' +
' mediaPlayer2 = null' + '\n' +
' }' + '\n')
}

if (scene.speech || (scene.effect && scene.effect.delay != 0) || (scene.music && scene.music.delay != 0))
finishScene.push(' handler.removeCallbacksAndMessages(null)')

if (i == visualNovel.scenes.length - 2)
finishScene.push(' findViewById<FrameLayout>(android.R.id.content).setOnClickListener(null)')

finishScene.push(' it.setOnClickListener(null)')

const code = '\n\n' + ' findViewById<FrameLayout>(android.R.id.content).setOnClickListener {' + '\n' +
(scene.effect ? ' if (mediaPlayer != null) {' + '\n' +
' mediaPlayer!!.stop()' + '\n' +
' mediaPlayer!!.release()' + '\n' +
' mediaPlayer = null' + '\n' +
' }' + '\n\n' : '') +
finishScene.join('\n') + '\n\n' +
' ' + nextScene.name + '(' + (nextScene.speech && !scene.speech ? 'true' : '') +')' + '\n' +

(i == visualNovel.scenes.length - 2 ? '\n it.setOnClickListener(null)\n' : '') +
' }'

scene.code = scene.code.replace('__PERFORVNM_SCENE_' + scene.name.toUpperCase() + '__', code)
Expand Down Expand Up @@ -161,7 +186,7 @@ function finalize() {
if (visualNovel.internalInfo.needs2Players)
addHeaders += ' private var mediaPlayer2: MediaPlayer? = null' + '\n'

if (visualNovel.menu?.backgroundMusic || visualNovel.internalInfo.hasEffect || visualNovel.internalInfo.hasSpeech || visualNovel.internalInfo.hasSceneMusic) {
if (visualNovel.internalInfo.menuMusic || visualNovel.internalInfo.hasEffect || visualNovel.internalInfo.hasSpeech || visualNovel.internalInfo.hasSceneMusic) {
addHeaders += (visualNovel.menu?.backgroundMusic || visualNovel.internalInfo.hasEffect ? ' private var mediaPlayer: MediaPlayer? = null' + '\n\n' +

' override fun onPause() {' + '\n' +
Expand Down
2 changes: 1 addition & 1 deletion src/menu.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ function make(options) {
process.exit(1)
}

visualNovel.internalInfo.setPlayer = true
visualNovel.internalInfo.menuMusic = true
}

if (!fs.readdirSync(`../android/app/src/main/res/raw`).find((file) => file.startsWith(options.background.image))) {
Expand Down
2 changes: 1 addition & 1 deletion src/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "perforvnm",
"version": "1.16.1-b.0",
"version": "1.16.2-b.0",
"description": "Code generation tool for Visual Novels",
"main": "perforvnm.js",
"type": "module",
Expand Down
19 changes: 13 additions & 6 deletions src/scene.js
Original file line number Diff line number Diff line change
Expand Up @@ -675,32 +675,39 @@ function finalize(scene, options) {
' }' + '\n' +
' }' + '\n' +
' }, ' + scene.effect.delay + 'L)' + '\n'

visualNovel.internalInfo.hasEffect = true
}

const stopPlayers = []
const finishScene = []

if ((scene.effect && !scene.music) || (scene.effect && scene.music)) {
stopPlayers.push(' if (mediaPlayer != null) {' + '\n' +
finishScene.push(' if (mediaPlayer != null) {' + '\n' +
' mediaPlayer!!.stop()' + '\n' +
' mediaPlayer!!.release()' + '\n' +
' mediaPlayer = null' + '\n' +
' }')
}

if (scene.effect && scene.music) {
stopPlayers.push(' if (mediaPlayer != null) {' + '\n' +
finishScene.push(' if (mediaPlayer != null) {' + '\n' +
' mediaPlayer!!.stop()' + '\n' +
' mediaPlayer!!.release()' + '\n' +
' mediaPlayer = null' + '\n' +
' }')

stopPlayers.push(' if (mediaPlayer2 != null) {' + '\n' +
finishScene.push(' if (mediaPlayer2 != null) {' + '\n' +
' mediaPlayer2!!.stop()' + '\n' +
' mediaPlayer2!!.release()' + '\n' +
' mediaPlayer2 = null' + '\n' +
' }')
}

if (scene.speech || (scene.effect && scene.effect.delay != 0) || (scene.music && scene.music.delay != 0))
finishScene.push(' handler.removeCallbacksAndMessages(null)')

finishScene.push(' findViewById<FrameLayout>(android.R.id.content).setOnClickListener(null)')

sceneCode += '\n' + ' val buttonMenu = Button(this)' + '\n' +
' buttonMenu.text = "Menu"' + '\n' +
' buttonMenu.textSize = 10f' + '\n' +
Expand All @@ -717,7 +724,7 @@ function finalize(scene, options) {

' buttonMenu.layoutParams = layoutParamsMenu' + '\n\n' +

(stopPlayers.length != 0 ? ' buttonMenu.setOnClickListener {' + '\n' + stopPlayers.join('\n\n') + '\n' + '__PERFORVNM_START_MUSIC__' + '\n\n' : ' buttonMenu.setOnClickListener {__PERFORVNM_START_MUSIC__' + '\n\n') +
(finishScene.length != 0 ? ' buttonMenu.setOnClickListener {' + '\n' + finishScene.join('\n\n') + '\n' + '__PERFORVNM_START_MUSIC__' + '\n\n' : ' buttonMenu.setOnClickListener {__PERFORVNM_START_MUSIC__' + '\n\n') +

' ' + (visualNovel.menu ? visualNovel.menu.name : '__PERFORVNM_MENU__') + '\n' +
' }' + '\n\n' +
Expand All @@ -740,7 +747,7 @@ function finalize(scene, options) {

' buttonBack.layoutParams = layoutParamsBack' + '\n\n' +

(stopPlayers.length != 0 ? ' buttonBack.setOnClickListener {' + '\n' + stopPlayers.join('\n\n') + '\n\n' : ' buttonBack.setOnClickListener {' + '\n' ) +
(finishScene.length != 0 ? ' buttonBack.setOnClickListener {' + '\n' + finishScene.join('\n\n') + '\n\n' : ' buttonBack.setOnClickListener {' + '\n' ) +

' ' + visualNovel.scenes[visualNovel.scenes.length - 1].name + '(' + (visualNovel.scenes[visualNovel.scenes.length - 1].speech ? 'false' : '' ) + ')' + '\n' +
' }' + '\n\n' +
Expand Down

0 comments on commit cd1d0c8

Please sign in to comment.