Add: typing practice app button

This commit is contained in:
2018-06-03 15:15:48 +09:00
parent e3bcd3bb12
commit 024145b609
4 changed files with 136 additions and 16 deletions
+20
View File
@@ -20,9 +20,29 @@ class AppInfoManager {
}
registerAppInfoList() {
// menu
this.registerAppInfo(new AppInfo("test", "테스트", ""));
this.registerAppInfo(new AppInfo("login", "로그인", ""));
this.registerAppInfo(new AppInfo("menu", "메뉴", ""));
// typing
this.registerAppInfo(new AppInfo("korean_basic", "기본 자리", ""));
this.registerAppInfo(new AppInfo("korean_left_upper", "왼손 윗글쇠", ""));
this.registerAppInfo(new AppInfo("korean_second_finger", "검지 글쇠", ""));
this.registerAppInfo(new AppInfo("korean_right_upper", "오른손 윗글쇠", ""));
this.registerAppInfo(new AppInfo("korean_left_lower", "왼손 밑글쇠", ""));
this.registerAppInfo(new AppInfo("korean_right_lower", "오른손 밑글쇠", ""));
this.registerAppInfo(new AppInfo("korean_left_upper_double", "쌍자음", ""));
this.registerAppInfo(new AppInfo("korean_right_upper_double", "쌍모음", ""));
this.registerAppInfo(new AppInfo("english_basic", "기본 자리", ""));
this.registerAppInfo(new AppInfo("english_left_upper", "왼손 윗글쇠", ""));
this.registerAppInfo(new AppInfo("english_second_finger", "검지 글쇠", ""));
this.registerAppInfo(new AppInfo("english_right_upper", "오른손 윗글쇠", ""));
this.registerAppInfo(new AppInfo("english_left_lower", "왼손 밑글쇠", ""));
this.registerAppInfo(new AppInfo("english_right_lower", "오른손 밑글쇠", ""));
// mouse
this.registerAppInfo(new AppInfo("space_invaders", "외계인 침공",
"외계인이 나타났다!\n마우스 왼쪽 버튼으로\n외계인을 클릭해서 물리쳐 주세요."
));
+17
View File
@@ -81,6 +81,23 @@ class DBConnectManager {
xhr.send("maestro_id=" + maestroID);
}
requestTypingPracticeAppList(maestroID, onSucceededListener, onFailedListener) {
let xhr = new XMLHttpRequest();
xhr.open("POST", this.phpPath + "server/app/active_typing_practice_app.php", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = function() {
if(xhr.readyState == 4 && xhr.status == 200) {
let replyJSON = JSON.parse(xhr.responseText);
if(replyJSON != null && replyJSON.length > 0)
onSucceededListener(replyJSON);
else
onFailedListener(replyJSON);
}
};
xhr.send("maestro_id=" + maestroID);
}
requestPlayerHistory(maestroID, date, listener) {
let historyRecordManager = new HistoryRecordManager();
+50 -16
View File
@@ -28,13 +28,13 @@ class MenuTypingPractice {
screenBottom.printBottomRightText(sessionStorageManager.playerName);
this.makeActiveAppButtons();
this.makeActiveTypingPracticeAppButtons();
}
makeActiveAppButtons() {
makeActiveTypingPracticeAppButtons() {
let dbConnectManager = new DBConnectManager();
dbConnectManager.requestActiveAppList(
dbConnectManager.requestTypingPracticeAppList(
sessionStorageManager.maestroID,
self.loginSucceeded,
self.loginFailed
@@ -43,19 +43,25 @@ class MenuTypingPractice {
}
loginSucceeded(replyJSON) {
// console.log(replyJSON);
console.log(replyJSON);
let koreanTypingPracticeAppCount = 1; // self.getAppCount(replyJSON, AppButton.TYPE_MOUSE);
let englishTypingPracticeAppCount = 1; // self.getAppCount(replyJSON, AppButton.TYPE_TYPING);
let buttonWidthGap = MenuTypingPractice.BUTTON_WIDTH + MenuTypingPractice.BUTTON_GAP;
let startX = game.world.width / 2 - (150 * koreanTypingPracticeAppCount / 2) - (150 / 2);
let koreanTypingPracticeAppCount = self.getAppCount(replyJSON, MenuTypingPractice.TYPE_KOREAN);
let englishTypingPracticeAppCount = self.getAppCount(replyJSON, MenuTypingPractice.TYPE_ENGLISH);
let startX = game.world.width / 2 - (buttonWidthGap * koreanTypingPracticeAppCount / 2) - (buttonWidthGap / 2);
let koreanTypingPracticeAppIndex = 0;
for(let i = 0; i < replyJSON.length; i++) {
let activeApp = replyJSON[i];
if(self.isMouseApp(activeApp)) {
if(self.isKoreanApp(activeApp)) {
koreanTypingPracticeAppIndex++;
new TypingPracticeButton(startX + 150 * koreanTypingPracticeAppIndex, 300, TypingPracticeButton.TYPE_ENGLISH,
TypingPracticeButton.NONE_ICON, "양손 기본",
console.log(activeApp);
new TypingPracticeButton(
startX + buttonWidthGap * koreanTypingPracticeAppIndex, 300,
TypingPracticeButton.TYPE_KOREAN,
TypingPracticeButton.NONE_ICON,
appInfoManager.getAppNameKorean(activeApp.AppName),
() => {
sessionStorageManager.playingAppID = activeApp.AppID;
sessionStorageManager.playingAppName = activeApp.AppName;
@@ -65,6 +71,28 @@ class MenuTypingPractice {
}
}
startX = game.world.width / 2 - (buttonWidthGap * koreanTypingPracticeAppCount / 2) - (buttonWidthGap / 2);
let englishTypingPracticeAppIndex = 0;
for(let i = 0; i < replyJSON.length; i++) {
let activeApp = replyJSON[i];
if(!self.isKoreanApp(activeApp)) {
englishTypingPracticeAppIndex++;
console.log(activeApp);
new TypingPracticeButton(
startX + buttonWidthGap * englishTypingPracticeAppIndex, 500,
TypingPracticeButton.TYPE_ENGLISH,
TypingPracticeButton.NONE_ICON,
appInfoManager.getAppNameKorean(activeApp.AppName),
() => {
sessionStorageManager.playingAppID = activeApp.AppID;
sessionStorageManager.playingAppName = activeApp.AppName;
location.href = '../../web/client/start.html';
}
);
}
}
/*
if(englishTypingPracticeAppCount > 0) {
new TypingPracticeButton(game.world.width / 2, 500, TypingPracticeButton.TYPE_KOREAN,
TypingPracticeButton.NONE_ICON, "검지 글쇠",
@@ -75,10 +103,11 @@ class MenuTypingPractice {
}
);
}
*/
}
isMouseApp(app) {
if(app.AppType > 100)
isKoreanApp(app) {
if(app.AppType === MenuTypingPractice.TYPE_KOREAN)
return true;
return false;
@@ -88,9 +117,7 @@ class MenuTypingPractice {
let appCount = 0;
for(let i = 0; i < replyJSON.length; i++) {
let activeApp = replyJSON[i];
if(type == AppButton.TYPE_TYPING && activeApp.AppType <= 100)
appCount++;
else if(type == AppButton.TYPE_MOUSE && activeApp.AppType > 100)
if(activeApp.AppType === type)
appCount++;
}
@@ -101,4 +128,11 @@ class MenuTypingPractice {
console.log('login failed, jsonData : ' + JSON.stringify(replyJSON));
}
}
}
MenuTypingPractice.TYPE_KOREAN = 10;
MenuTypingPractice.TYPE_ENGLISH = 20;
MenuTypingPractice.BUTTON_WIDTH = 200;
MenuTypingPractice.BUTTON_GAP = 20;
@@ -0,0 +1,49 @@
<?php
header('Content-Type: application/json');
include "./../send_error_code.php";
$maestro_id = $_POST["maestro_id"];
include "./../setup/connect_db.php";
$replyJSON = get_active_typing_practice_app_list($maestro_id);
$db_conn->close();
if($replyJSON.length === 0) {
send_error_message($replyJSON, "앱 목록 가져오기 실패");
$db_conn->close();
exit;
}
echo json_encode($replyJSON, JSON_UNESCAPED_UNICODE);
$db_conn->close();
function get_active_typing_practice_app_list($maestro_id) {
global $db_conn;
$query = "
SELECT A.AppID, A.AppName, A.AppType
FROM moty_app AS A
INNER JOIN moty_active_app AS AA ON A.AppType < 50 AND A.AppID = AA.AppID AND AA.MaestroID=?";
$stmt = $db_conn->prepare($query);
$stmt->bind_param('i', $maestro_id);
$stmt->execute();
$stmt->bind_result($app_id, $app_name, $app_type);
$return_array = array();
while($stmt->fetch()) {
$row_array['AppID'] = $app_id;
$row_array['AppName'] = $app_name;
$row_array['AppType'] = $app_type;
array_push($return_array, $row_array);
}
$stmt->close();
return $return_array;
}
?>