Я работаю над трехмерной обучающей игрой, которая в основном использует C ++ и Javascript. Я пытаюсь создать систему уведомлений, когда игрок получает информацию, отправленную в его записную книжку.
У меня настроена система, но супервайзер считает, что ее можно улучшить. Вот где мне нужна помощь!
Самый простой путь:
Игрок будет делать что-то, что вызывает информацию для отправки в блокнот. В том же методе, где это произошло, я включил уведомление. Уведомление тогда появилось бы на экране игрока, мигая двумя делениями изображения (делая мигающий эффект). Когда щелкает любой из этих элементов, он показывает игроку записную книжку. Каждый раз, когда проигрыватель просматривает или покидает ноутбук, уведомление отключается.
Теперь вот код, который я использовал:
В основном GameState
int GameModeState::notify(int query)
{
static int notified;
if(query == 1)
{
notified = 1;
return notified;
}
if(query == 2)
{
notified = 0;
return notified;
}
else
{
return notified;
}
}
В функции обновления GameState
// checks if the unviewed information notification needs to be on or off
if(notify(0) == 1) // supposed to be on
{
mScreen->executeJavascript("notebookNotification(1);"); // turns it on
} else {
int nothing = notify(2); // clears out notify to 0
mScreen->executeJavascript("notebookNotification(0);"); // turns it off
}
В моем JS
var intervalID; // Needed to turn off setInterval()
//Function takes in 0 to turn off notification, anything else turns it on
function notebookNotification(setting)
{
if(setting == 0)
{
if(intervalID) {
// clears the blinking darkContainer
window.clearInterval(intervalID);
intervalID = null;
}
// hides both of the images
$("#lightNotificationContainer").hide();
$("#darkNotificationContainer").hide();
}
else
{
$("#lightNotificationContainer").show();
if(!intervalID) {
// "animates" the blinking of the notification; the darkContainer toggles on and off every second, and covers the lightContainer
intervalID = window.setInterval('$("#darkNotificationContainer").toggle()', 1000);
}
}
}
Я бы отключил уведомление, используя GameModeState::notify(2)
Теперь, какую систему лучше использовать, чем эту?