我正在开发一款主要使用 C++ 和 Javascript 的基于 3D 学习的游戏。我正在尝试设计一个通知系统,用于通知玩家何时将信息发送到他们的笔记本。
我建立了一个系统,但主管认为它可以做得更好。这就是我需要你们帮助的地方!
非常基本的方式:
玩家会做一些触发信息发送到笔记本的事情。在发生这种情况的相同方法中,我打开了通知。然后,通知将通过闪烁图像的两个 div(产生闪烁效果)显示在播放器的屏幕上。当单击这些 div 中的任何一个时,它会向玩家显示笔记本。每当玩家查看或退出笔记本时,通知都会关闭。
现在这是我使用的代码:
在主游戏状态中
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)
现在,还有什么比这个更好的系统呢?