1 Star 1 Fork 2

筱程 / Greedy Snake

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
scene.cpp 1.92 KB
一键复制 编辑 原始数据 按行查看 历史
筱程 提交于 2021-07-30 11:42 . init
#include <iostream>
#include "scene.h"
#include "behavior.h"
#include "sceneControll.h"
#include "tools.h"
#include "gameInit.h"
#pragma region
void scene::addBehavior(behavior* be)
{
addBehaviors.emplace_back(be);
}
void scene::removeBehavior(behavior* be)
{
//behaviors.remove(be);
try
{
be->Destroy();
}
catch (const std::exception&)
{
}
//delete be;
delBehaviors.emplace_back(be);
}
behavior* scene::find(const char* p)
{
for (auto& item : behaviors) {
if (strcmp(typeid(item).name(), p)) {
return item;
}
}
return nullptr;
}
void scene::clear() {
for (auto& item : behaviors)
{
item->Destroy();
delBehaviors.emplace_back(item);
}
gameInit::clear();
}
#pragma endregion
#pragma region ѭ
void scene::Start() {
Init();
for (auto& items : behaviors) {
try
{
items->Start();
}
catch (const std::exception&)
{
}
}
}
void scene::Loop(double time) {
if (addBehaviors.size() > 0) {
for (auto& item : addBehaviors) {
item->Start();
behaviors.emplace_back(item);
}
addBehaviors.clear();
}
for (auto& items : behaviors) {
try
{
if (items)
items->Loop(time);
}
catch (const std::exception&)
{
}
}
if (delBehaviors.size() > 0) {
for (auto& items : delBehaviors)
{
behaviors.remove(items);
delete items;
}
delBehaviors.clear();
}
}
void scene::Destroy() {
if (addBehaviors.size() > 0) {
for (auto& item : addBehaviors) {
item->Destroy();
delete item;
}
addBehaviors.clear();
}
if (behaviors.size()) {
for (auto& items : behaviors) {
try
{
items->Destroy();
}
catch (const std::exception&)
{
}
delete items;
}
}
if (delBehaviors.size()) {
for (auto& items : delBehaviors) {
try
{
items->Destroy();
}
catch (const std::exception&)
{
}
delete items;
}
}
behaviors.clear();
delBehaviors.clear();
}
void scene::Init()
{
}
#pragma endregion
C++
1
https://gitee.com/xclike/greedy-snake.git
git@gitee.com:xclike/greedy-snake.git
xclike
greedy-snake
Greedy Snake
master

搜索帮助