diff --git a/assets/button-cancel.png b/assets/button-cancel.png new file mode 100644 index 0000000..0e642b4 Binary files /dev/null and b/assets/button-cancel.png differ diff --git a/assets/button-ok.png b/assets/button-ok.png new file mode 100644 index 0000000..e72a833 Binary files /dev/null and b/assets/button-ok.png differ diff --git a/assets/name-dialogue.png b/assets/name-dialogue.png new file mode 100644 index 0000000..438a915 Binary files /dev/null and b/assets/name-dialogue.png differ diff --git a/main.hsp b/main.hsp index 73ff7bb..bde69ec 100644 --- a/main.hsp +++ b/main.hsp @@ -1,6 +1,7 @@ #include "hsp3dish.as" #include "config.hsp" + ; 画面サイズ #const global DISPLAY_WIDTH 1080 #const global DISPLAY_HEIGHT 1920 @@ -17,6 +18,8 @@ #enum global BUFFER_NIZIKA ; ニジカ #enum global BUFFER_BG ; https://www.pakutaso.com/20190249044post-18819.html #enum global BUFFER_CHAR ; 文字セット +#enum global BUFFER_NAME_DIALOGUE ; 名前入力欄 +#enum global BUFFER_BUTTON_OK ; OK ボタン ; サウンド #enum global SOUND_MUMUMUMU = 0 ; ムムムム @@ -30,21 +33,23 @@ #const global FPS 30 #const global LOOP_INTERVAL 1000 / FPS + #include "./modules/goatoh.mod.hsp" #include "./modules/chat.mod.hsp" #include "./modules/char.mod.hsp" #include "./modules/keyboard.mod.hsp" #include "./modules/setting.mod.hsp" +#include "./modules/name_dialogue.mod.hsp" #ifdef _DEBUG Screen 0, 540, 960 ; デバッグ時は assets ディレクトリを参照する. - ChDir "assets" + ChDir "/users/matud/projects/goatoh_training_android/assets" #endif ; _DEBUG - Font MSGOTHIC, 96 + Randomize ViewCalc VPTYPE_2D, Double (gInfo_winX) / DISPLAY_WIDTH, Double (gInfo_winY) / DISPLAY_HEIGHT @@ -71,11 +76,19 @@ CelLoad "goatoh-tarso.png", BUFFER_GOATOH_TARSO CelDiv BUFFER_GOATOH_TARSO, 0, 0, 97, 49 + ; 文字 CelLoad "font.png", BUFFER_CHAR CelDiv BUFFER_CHAR, 32, 35, 0, 0 + ; 名前入力ダイアログ + CelLoad "name-dialogue.png", BUFFER_NAME_DIALOGUE + + ; OK ボタン + CelLoad "button-ok.png", BUFFER_BUTTON_OK + CelDiv BUFFER_BUTTON_OK, Null, Null, SIZE_X@MyButton / 2, SIZE_Y@MyButton / 2 + ; ゴートうインスタンス生成 - Goatoh = New@Goatoh (960, 800, DIRECTION_LEFT) + Goatoh = New@Goatoh (Rnd (1080), Rnd (1920), Rnd (2) + 1) ; 設定読込み Load@Setting @@ -90,23 +103,17 @@ GMode GMODE_RGB0 ; アルファあり - Show@Keyboard - - Pos 100, 100 - Text = New@Char ("") - size@Char.Text = 240 + Show@NameDialogue Repeat ReDraw False Pos 0, 0 CelPut BUFFER_BG, 0, Double (DISPLAY_HEIGHT) / 533, Double (DISPLAY_HEIGHT) / 533 - Draw@Goatoh Goatoh - Draw@Char + Draw@Goatoh Draw@Keyboard - - Print GetChar@Keyboard () != False - text@Char.Text = text@Keyboard + Draw@NameDialogue + Draw@Char ReDraw True Await LOOP_INTERVAL diff --git a/modules/char.mod.hsp b/modules/char.mod.hsp index 9e5a37b..3e2a697 100644 --- a/modules/char.mod.hsp +++ b/modules/char.mod.hsp @@ -1,3 +1,6 @@ +#ifndef __CHAR__ +#define __CHAR__ + #module \ Char @@ -6,6 +9,8 @@ Char #defcfunc local \ New \ + int p_posX,\ + int p_posY,\ str p_text If insNum <= 0 { SDim charDict, 384 @@ -16,8 +21,8 @@ New \ text.insNum = p_text - posX.insNum = gInfo_cX - posY.insNum = gInfo_cY + posX.insNum = p_posX + posY.insNum = p_posY size.insNum = CHAR_WIDTH exists.insNum = True @@ -29,7 +34,7 @@ New \ #deffunc local \ Destroy \ int p_insId - exists.insNum = False + exists.p_insId = False Return @@ -100,3 +105,5 @@ MyStrMid \ #global +#endif ; not __CHAR__ + diff --git a/modules/chat.mod.hsp b/modules/chat.mod.hsp index 2c09ae0..62d9878 100644 --- a/modules/chat.mod.hsp +++ b/modules/chat.mod.hsp @@ -1,3 +1,6 @@ +#ifndef __CHAT__ +#define __CHAT__ + #module \ Chat @@ -23,3 +26,5 @@ Send \ #global +#endif ; not __CHAT__ + diff --git a/modules/dialogue.mod.hsp b/modules/dialogue.mod.hsp new file mode 100644 index 0000000..0ddd282 --- /dev/null +++ b/modules/dialogue.mod.hsp @@ -0,0 +1,41 @@ +#ifndef __DIALOGUE__ +#define __DIALOGUE__ + +#module \ +Dialogue + +#const DIALOGUE_WIDTH 840 +#const DIALOGUE_HEIGHT 600 + +#const DIALOGUE_TOP 360 +#const DIALOGUE_BOTTOM (DIALOGUE_TOP + DIALOGUE_HEIGHT) +#const DIALOGUE_LEFT ((DISPLAY_WIDTH - DIALOGUE_WIDTH) / 2) +#const DIALOGUE_RIGHT ((DISPLAY_WIDTH + DIALOGUE_WIDTH) / 2) + +#deffunc local \ +Show + showing = True + + Return + +#deffunc local \ +Hide + showing = False + + Return + +#deffunc local \ +Draw + If showing = False { + Return + } + + Pos DIALOGUE_LEFT, DIALOGUE_TOP + CelPut bufferId + + Return + +#global + +#endif ; not __DIALOGUE__ + diff --git a/modules/goatoh.mod.hsp b/modules/goatoh.mod.hsp index 1e4530b..0754d6e 100644 --- a/modules/goatoh.mod.hsp +++ b/modules/goatoh.mod.hsp @@ -104,72 +104,74 @@ Eat \ Return #deffunc local \ -Draw \ - int p_insId - Pos posX.p_insId - scale.p_insId * 50, posY.p_insId + scale.p_insId * 26 - CelPut BUFFER_GOATOH_LEG, 0, scale.p_insId, scale.p_insId, legArgs.LEG_RF.p_insId +Draw + Repeat insNum + Pos posX.cnt - scale.cnt * 50, posY.cnt + scale.cnt * 26 + CelPut BUFFER_GOATOH_LEG, 0, scale.cnt, scale.cnt, legArgs.LEG_RF.cnt - Pos posX.p_insId + scale.p_insId * 30, posY.p_insId + scale.p_insId * 26 - CelPut BUFFER_GOATOH_LEG, 0, scale.p_insId, scale.p_insId, legArgs.LEG_RH.p_insId + Pos posX.cnt + scale.cnt * 30, posY.cnt + scale.cnt * 26 + CelPut BUFFER_GOATOH_LEG, 0, scale.cnt, scale.cnt, legArgs.LEG_RH.cnt - Pos posX.p_insId + scale.p_insId * 64, posY.p_insId - scale.p_insId * 12 - CelPut BUFFER_GOATOH_TAIL, 0, scale.p_insId, scale.p_insId + Pos posX.cnt + scale.cnt * 64, posY.cnt - scale.cnt * 12 + CelPut BUFFER_GOATOH_TAIL, 0, scale.cnt, scale.cnt - Pos posX.p_insId, posY.p_insId - CelPut BUFFER_GOATOH_TARSO, 0, scale.p_insId, scale.p_insId + Pos posX.cnt, posY.cnt + CelPut BUFFER_GOATOH_TARSO, 0, scale.cnt, scale.cnt - Pos posX.p_insId - scale.p_insId * 30, posY.p_insId + scale.p_insId * 30 - CelPut BUFFER_GOATOH_LEG, 0, scale.p_insId, scale.p_insId, legArgs.LEG_LF.p_insId + Pos posX.cnt - scale.cnt * 30, posY.cnt + scale.cnt * 30 + CelPut BUFFER_GOATOH_LEG, 0, scale.cnt, scale.cnt, legArgs.LEG_LF.cnt - Pos posX.p_insId + scale.p_insId * 50, posY.p_insId + scale.p_insId * 30 - CelPut BUFFER_GOATOH_LEG, 0, scale.p_insId, scale.p_insId, legArgs.LEG_LH.p_insId + Pos posX.cnt + scale.cnt * 50, posY.cnt + scale.cnt * 30 + CelPut BUFFER_GOATOH_LEG, 0, scale.cnt, scale.cnt, legArgs.LEG_LH.cnt - Pos posX.p_insId - scale.p_insId * 64, posY.p_insId - scale.p_insId * 20 - CelPut BUFFER_GOATOH_HEAD, 0, scale.p_insId, scale.p_insId, neckArg.p_insId + Pos posX.cnt - scale.cnt * 64, posY.cnt - scale.cnt * 20 + CelPut BUFFER_GOATOH_HEAD, 0, scale.cnt, scale.cnt, neckArg.cnt - Pos posX.p_insId - scale.p_insId * 64, posY.p_insId - scale.p_insId * 20 - If openingEyes { - If openingMouth { - CelPut BUFFER_GOATOH_FACE_OO, 0, scale.p_insId, scale.p_insId, neckArg.p_insId - } - Else { - CelPut BUFFER_GOATOH_FACE_OC, 0, scale.p_insId, scale.p_insId, neckArg.p_insId - } - } - Else { - If openingMouth { - CelPut BUFFER_GOATOH_FACE_CO, 0, scale.p_insId, scale.p_insId, neckArg.p_insId + Pos posX.cnt - scale.cnt * 64, posY.cnt - scale.cnt * 20 + If openingEyes { + If openingMouth { + CelPut BUFFER_GOATOH_FACE_OO, 0, scale.cnt, scale.cnt, neckArg.cnt + } + Else { + CelPut BUFFER_GOATOH_FACE_OC, 0, scale.cnt, scale.cnt, neckArg.cnt + } } Else { - CelPut BUFFER_GOATOH_FACE_CC, 0, scale.p_insId, scale.p_insId, neckArg.p_insId + If openingMouth { + CelPut BUFFER_GOATOH_FACE_CO, 0, scale.cnt, scale.cnt, neckArg.cnt + } + Else { + CelPut BUFFER_GOATOH_FACE_CC, 0, scale.cnt, scale.cnt, neckArg.cnt + } } - } + Loop - Interval@Goatoh p_insId + Interval@Goatoh Return #deffunc local \ -Interval \ - int p_insId - If walking.p_insId { - Walk@Goatoh p_insId +Interval + Repeat insNum + If walking.cnt { + Walk@Goatoh cnt - If frame.p_insId \ 150 == 30 { - MMPlay SOUND_MUMUMUMU + If frame.cnt \ 150 == 30 { + MMPlay SOUND_MUMUMUMU - openingMouth = True + openingMouth = True + } + } + Else: If running.cnt { + DoRun@Goatoh cnt } - } - Else: If running.p_insId { - DoRun@Goatoh p_insId - } - If eating.p_insId { - Eat@Goatoh p_insId - } + If eating.cnt { + Eat@Goatoh cnt + } - frame.p_insId++ + frame.cnt++ + Loop Return diff --git a/modules/keyboard.mod.hsp b/modules/keyboard.mod.hsp index e6effbc..1680f14 100644 --- a/modules/keyboard.mod.hsp +++ b/modules/keyboard.mod.hsp @@ -1,3 +1,9 @@ +#include "./modules/char.mod.hsp" + + +#ifndef __KEYBOARD__ +#define __KEYBOARD__ + #module \ Keyboard @@ -14,10 +20,10 @@ Hide Return -#defcfunc local \ +#deffunc local \ GetChar if showing = False { - Return "" + Return } MTList getChar_id @@ -25,17 +31,23 @@ GetChar If stat = 0 { touching = False - Return "" + Return } If touching { - Return "" + Return } MTInfo getChar_touchInfo, getChar_id.0 + touching = True + + If Length (getChar_touchInfo) < 4 { + Return + } + If getChar_touchInfo.2 < 1920 - 480 { - Return "" + Return } getChar_charId = (1080 - getChar_touchInfo.1) / 96 * 5 + (getChar_touchInfo.2 - (1920 - 480)) / 96 @@ -45,9 +57,7 @@ GetChar Poke text, getChar_textLength + cnt, Peek (charDict@Char, getChar_charId * 3 + cnt) Loop - touching = True - - Return "" + Return #deffunc local \ Draw @@ -67,3 +77,5 @@ Draw #global +#endif ; not __KEYBOARD__ + diff --git a/modules/my_button.mod.hsp b/modules/my_button.mod.hsp new file mode 100644 index 0000000..2b99beb --- /dev/null +++ b/modules/my_button.mod.hsp @@ -0,0 +1,96 @@ +#ifndef __MY_BUTTON__ +#define __MY_BUTTON__ + +#module \ +MyButton + +#const SIZE_X 240 +#const SIZE_Y 120 + +#const ZOOM 0.8 + +#defcfunc local \ +New \ + int p_posX,\ + int p_posY,\ + int p_bufferId,\ + label p_onClicked + posX.insNum = p_posX + posY.insNum = p_posY + bufferId.insNum = p_bufferId + onClicked.insNum = p_onClicked + touching.insNum = False + + exists.insNum = True + + insNum++ + + Return insNum - 1 + +#deffunc local \ +Destroy \ + int p_insId + exists.p_insId = False + + Return + +#deffunc local \ +Interval \ + int p_insId,\ + local l_id,\ + local l_touchInfo + MTList l_id + + If stat = 0 { + touching.p_insId = False + + Return + } + + If touching.p_insId { + Return + } + + MTInfo l_touchInfo, l_id.0 + + touching.p_insId = True + + If l_touchInfo.1 < posX.p_insId - ZOOM * SIZE_X / 2 { + Return + } + + If l_touchInfo.1 >= posX.p_insId + ZOOM * SIZE_X / 2 { + Return + } + + If l_touchInfo.2 < posY.p_insId - ZOOM * SIZE_Y / 2 { + Return + } + + If l_touchInfo.2 >= posY.p_insId + ZOOM * SIZE_Y / 2 { + Return + } + + GoSub onClicked.p_insId + + Return + +#deffunc local \ +Draw + Repeat insNum + If exists.cnt = False { + Continue + } + + Pos posX.cnt, posY.cnt + CelPut bufferId.cnt, 0, ZOOM, ZOOM + Loop + + Interval + + Return + +#global + +#endif ; not __MY_BUTTON__ + diff --git a/modules/name_dialogue.mod.hsp b/modules/name_dialogue.mod.hsp new file mode 100644 index 0000000..9efe263 --- /dev/null +++ b/modules/name_dialogue.mod.hsp @@ -0,0 +1,67 @@ +#include "./modules/dialogue.mod.hsp" +#include "./modules/my_button.mod.hsp" +#include "./modules/keyboard.mod.hsp" +#include "./modules/char.mod.hsp" +#include "./modules/user.mod.hsp" + + +#ifndef __NAME_DIALOGUE__ +#define __NAME_DIALOGUE__ + +#module \ +NameDialogue + +#const DIALOGUE_TOP DIALOGUE_TOP@Dialogue +#const DIALOGUE_BOTTOM DIALOGUE_BOTTOM@Dialogue +#const DIALOGUE_LEFT DIALOGUE_LEFT@Dialogue +#const DIALOGUE_RIGHT DIALOGUE_RIGHT@Dialogue + +#deffunc local \ +Show + ButtonOk = New@MyButton (DISPLAY_WIDTH / 2, DIALOGUE_BOTTOM@Dialogue - 132, BUFFER_BUTTON_OK, *Ok) + + Char = New@Char (DIALOGUE_LEFT + 168, DIALOGUE_TOP + 272, "") + size@Char.Char = 64 + Show@Keyboard + + bufferId@Dialogue = BUFFER_NAME_DIALOGUE + Show@Dialogue + + Return + +#deffunc local \ +Hide + Destroy@MyButton ButtonOk + Destroy@Char Char + Hide@Keyboard + Hide@Dialogue + + Return + +#deffunc local \ +Interval + GetChar@Keyboard + text@Char.Char = text@Keyboard + + Return + +#deffunc local \ +Draw + Draw@Dialogue + Draw@MyButton + + Interval + + Return + +*Ok + Hide + + Create@User text@Keyboard + + Return + +#global + +#endif ; not __NAME_DIALOGUE__ + diff --git a/modules/user.mod.hsp b/modules/user.mod.hsp index 4948756..03b654c 100644 --- a/modules/user.mod.hsp +++ b/modules/user.mod.hsp @@ -6,8 +6,9 @@ User #deffunc local \ Create \ + str p_name,\ local l_data - HTTPLoad CREATE_URL + HTTPLoad CREATE_URL + "?name=" + p_name HTTPInfo l_data id = 0