Example #1
0
void Project::CreateNewWorld(const std::string &worldPath) {
    GameWorld world;
    
    GameObject* root = world.CreateRoot();
    
    GameObject* cube = root->CreateObject();
    cube->AddComponent<Transform>();
    cube->AddComponent<Mesh>()->GetMesh<Vertex>().AddCube(0, 1);
    cube->AddComponent<Renderable>();
    
    std::ofstream file;
    file.open(worldPath);
    root->ToJson(file);
    file.close();
}
 void Initialize() {
     root = world.CreateRoot();
     root->CreateSystem<RenderSystem>();
     root->CreateSystem<FontTextureSystem>();
     root->CreateSystem<FirstPersonMoverSystem>();
     root->CreateSystem<LabelMeshSystem>();
     root->CreateSystem<ColorSystem>();
     
     GameObject* camera = root->CreateObject();
     camera->AddComponent<Camera>();
     camera->AddComponent<Transform>()->Position = {0,0,5};
     camera->AddComponent<FirstPersonMover>();
     
     GameObject* font = root->CreateObject();
     bool succes = font->AddComponent<Font>()->LoadTTF("/Library/Fonts/Times New Roman.ttf");//"/Users/Jeppe/Library/Fonts/NuevaStd-Bold_ttf.ttf");
     if (!succes) {
         std::cout << "Font could not be loaded"<<std::endl;
     }
     //font->GetComponent<Font>()->CharacterSetEverySize = 2;
     font->AddComponent<TextureComponent>();
     font->AddComponent<Renderable>()->BlendMode = BlendModeType::Alpha;
     font->AddComponent<Mesh>()->GetMesh<Vertex>().AddQuad(0, 40, Colour::White());
     //font->AddComponent<Transform>()->Position = {0,0,1};
     
     {
         label = root->CreateObject();
         label->AddComponent<Transform>();
         label->AddComponent<Sizeable>()->Size = {64,64};
         label->AddComponent<Renderable>()->BlendMode = BlendModeType::Alpha;
         label->AddComponent<TextureComponent>(font);
         label->AddComponent<Mesh>();
         label->AddComponent<Font>(font);
         label->AddComponent<Label>()->Text = "Testing";
         label->GetComponent<Label>()->FontSize = 12;
         label->GetComponent<Label>()->WordWrap = false;
         label->GetComponent<Label>()->HAlignment = Font::HAlignment::Center;
         label->GetComponent<Label>()->VAlignment = Font::VAlignment::Middle;
         
         
         
         label->AddComponent<Colorable>()->Color = Colour::Black();
     }
     
     {
         label2 = root->CreateObject();
         label2->AddComponent<Transform>()->Position = {0,12};
         label2->AddComponent<Sizeable>()->Size = {120,64};
         label2->AddComponent<Renderable>()->BlendMode = BlendModeType::Alpha;
         label2->AddComponent<TextureComponent>(font);
         //label2->AddComponent<Mesh>();
         label2->AddComponent<Font>(font);
         //label2->AddComponent<Label>()->Text = "Cubism, is a new puzzle game from Jeppe Nielsen";
         //label2->GetComponent<Label>()->FontSize = 64;
         //label2->GetComponent<Label>()->WordWrap = true;
         
     }
     
     {
     GameObject* cube = root->CreateObject();
     cube->AddComponent<Transform>()->Position = {32,32,-1};
     cube->AddComponent<Mesh>()->GetMesh<Vertex>().AddCube(0, {32,32,0.02f});
     cube->AddComponent<Renderable>();
     }
     {
     GameObject* cube = root->CreateObject();
     cube->AddComponent<Transform>()->Position = {1,0,0};
     cube->AddComponent<Mesh>()->GetMesh<Vertex>().AddCube(0, {0.02f,6.0f,0.02f});
     cube->AddComponent<Renderable>();
     }
     counter = 0;
     timer = 2.0f;
 
     Input.ButtonDown.Bind([font] (std::string button) {
         font->GetComponent<Font>()->Clear();
         //std::string path = "/Projects/PocketEngine/Games/TestFreeType/test.png";
         //font->GetComponent<TextureComponent>()->Texture().SaveToPng(path, GL_RGBA);
     });
 }
void DacSceneFactory::CreateScene(GameManager & manager, GameObject & root)
{
	// Game
	auto gameController = make_shared<GameController>();
	GameObject& bg = root.CreateObject("Background", 0, 0, "BackGround.jpg",gameController );

	// Fuse
	auto fuseController = make_shared<FuseController>();
	fuseController->m_burnTime = TIME_LIMIT;
	fuseController->m_points.push_back(Vector2d(0, 0));
	fuseController->m_points.push_back(Vector2d(-12, -20));
	fuseController->m_points.push_back(Vector2d(-8, -39));
	fuseController->m_points.push_back(Vector2d(-51, -47));
	fuseController->m_points.push_back(Vector2d(-54, -184));
	fuseController->m_points.push_back(Vector2d(-87, -185));

	GameObject& fuse = bg.CreateObject("Fuse", 263, 555, NULL, fuseController);

	// Big Explosion
	auto bigBoomController = make_shared<ParticlesController>();
	bigBoomController->m_controllerLife = -1;
	bigBoomController->m_assetName = "Explosion.png";
	bigBoomController->m_burstSize = 0;
	bigBoomController->m_velocity = 400;
	bigBoomController->m_acceleration = -200;
	bigBoomController->m_life = 3000;
	bigBoomController->m_velocityNoise = 0.8f;
	GameObject& bigBoom = bg.CreateObject("BigBoom", 129, 329, NULL, bigBoomController);
	gameController->m_bigBoom = bigBoomController;


	// Field
	auto fieldController = make_shared<FieldController>();
	fieldController->m_gameController = gameController;
	fieldController->m_fuse = fuseController;
	GameObject& field = bg.CreateObject("Field", 330, 107, NULL, fieldController );
	gameController->m_field = fieldController;

	// Score
	TextRenderer* text = new TextRenderer(manager.GetRenderer());
	text->SetFont(manager.LoadFont("Digital.ttf", 60), { 0xff, 0xff,0xff,0xff });
	text->SetText("000000");
	auto textPtr = shared_ptr<TextRenderer>(text);
	GameObject& score = bg.CreateObject("Score", 20, 50, 180, 70, textPtr, NULL);
	gameController->m_scoreText = textPtr;

	// Timer
	text = new TextRenderer(manager.GetRenderer());
	text->SetFont(manager.LoadFont("Digital.ttf", 70), { 0xff, 0x55,0x00,0xff });
	text->SetText("00");
	auto timerText = shared_ptr<TextRenderer>(text);
	GameObject& timer = bg.CreateObject("Timer", 75, 425, 180, 70, timerText, NULL);
	gameController->m_timerText = timerText;

	// Menu
	SolidRenderer* solid = new SolidRenderer();
	solid->SetColor(0, 0, 0, 220);
	GameObject& menu = root.CreateObject("Menu", 0, 0, manager.SCREEN_WIDTH, manager.SCREEN_HEIGHT,
		shared_ptr<SolidRenderer>(solid),NULL);
	gameController->m_menu = menu.GetSharedPtr();

	// Header text
	text = new TextRenderer(manager.GetRenderer());
	text->SetFont(manager.LoadFont("Digital.ttf", 90), { 0xff, 0xff,0xff,0xff });
	text->SetText("Diamonds&Crystals");
	GameObject& headerText = menu.CreateObject("Header", 20, 30, 0, 0, shared_ptr<TextRenderer>(text), NULL);

	// Sign text
	text = new TextRenderer(manager.GetRenderer());
	text->SetFont(manager.LoadFont("Digital.ttf", 30), { 0xff, 0xff,0xff,0xff });
	text->SetText("by Maxim Machekhin");
	GameObject& signText = menu.CreateObject("Sign", 30, 120, 0, 0, shared_ptr<TextRenderer>(text), NULL);

	// Best score text
	text = new TextRenderer(manager.GetRenderer());
	auto bestScorePtr = shared_ptr<TextRenderer>(text);
	text->SetFont(manager.LoadFont("Digital.ttf", 30), { 0xff, 0xff,0xff,0xff });
	text->SetText("Best score: 000000");
	GameObject& bestScore = menu.CreateObject("BestScore", 120, 230, 0, 0, bestScorePtr, NULL);
	gameController->m_bestScoreText = bestScorePtr;

	// Button
	solid = new SolidRenderer();
	solid->SetColor(0xe0, 0xa0, 0x20, 0xff);
	GameObject& startBtn = menu.CreateObject("StartButton", 280, 400, 200, 100, 
		shared_ptr<SolidRenderer>(solid), make_shared<MouseHoverController>());
	gameController->m_btnStart = startBtn.GetSharedPtr();

	// Button text
	text = new TextRenderer(manager.GetRenderer());
	text->SetFont(manager.LoadFont("Digital.ttf", 90), { 0x00, 0x00,0x00,0xff });
	text->SetText("Start!");
	GameObject& startBtnText = startBtn.CreateObject("StartButtonText", 8, 0, 180, 70, shared_ptr<TextRenderer>(text), NULL);

}