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); }