#include #include #include int os_main(int ac, char ** av, char ** env) { llgfx_enable_stretchwindow = true; llgfx_SetDisplayMode(1024,768,32,0,0); llgfx_id logo = llgfx_LoadGfx("NeHe.png",LLGFX_COLORKEY); llgfx_id zone = llgfx_LoadGfx("zone.png"); llgfx_id sterne = llgfx_LoadGfx("sterne.png"); llgfx_id geschwader = llgfx_LoadGfx("geschwader.png"); llgfx_id maus = llgfx_LoadGfx("Maus.png",LLGFX_COLORKEY|LLGFX_CENTERORIGIN); llgfx_id wing = llgfx_LoadGfx("wing.png",LLGFX_COLORKEY|LLGFX_CENTERORIGIN); llgfx_id scope = llgfx_LoadGfx("scope.png"); queue spriteQ; queue spriteOld; CFps fps; fps.m_visible=true; llsound_id sid2 = llsound_LoadSnd("thumplo.wav"); llsound_id sid = llsound_CloneSnd( sid2); //llsound_Play(sid,LLSOUND_LOOP); llirq_ResetTime(); while(osmain_endgame==false){ float delta = llirq_GetDeltaTime(); static float tileblitscroll = 0; tileblitscroll -= delta * 300; llgfx_sBLITFX blitfx; blitfx.angle_x = 0; blitfx.angle_y = 0; blitfx.angle_z = 0; //llgfx_ClearScreen(BLACK); // HIntergrund llgfx_TILE_BLIT(0,sterne,0.0f,tileblitscroll,0,0,0); blitfx.scale_x = 0.1; blitfx.scale_y = 0.1; blitfx.angle_z = ll3d::Mod(tileblitscroll*4,360.0f); blitfx.angle_x = 0;//ll3d::Mod(tileblitscroll*16,360.0f); blitfx.angle_y = 0; blitfx.fixalpha = ll3d::Mod(llirq_uptime/10,1.0f); llgfx_SetOrigin( logo, 500, 100); //llgfx_CenterOrigin( logo ); llgfx_BLIT(0,logo,400,400,0,BLIT_SRC_ALPHA|BLIT_STRETCH|BLIT_ROTATE,&blitfx); blitfx.scale_x = 0.5; blitfx.scale_y = 0.5f; //llgfx_TILE_BLIT(0,zone,-tileblitscroll*4,-tileblitscroll*5,0,BLIT_SRC_ALPHA,&blitfx); if(llinput_MouseBtn1 ) for(int i = 0 ; i < 10; i++ ) { CLayerSprite *sp = spriteOld.Get(); if(sp==NULL)sp = new CLayerSprite(); spriteQ.Put(sp); sp->m_gfx = wing; sp->m_valid = true; sp->m_blitflag = BLIT_SRC_ALPHA|BLIT_STRETCH|BLIT_SRC_CENTERED|BLIT_ROTATE; sp->m_blitfx.scale_x=sp->m_blitfx.scale_y=llirq_GetRandF(1.0,4.0f); sp->m_blitfx.angle_x = 0.0f; sp->m_blitfx.angle_y = 0.0f; sp->m_blitfx.angle_z = 0.0f; sp->m_acceleration = sp->m_blitfx.scale_x *sp->m_blitfx.scale_x * 40; sp->m_position.m_u = llinput_MouseX; sp->m_position.m_v = llinput_MouseY; sp->m_lifetime = 10; } while(CLayerSprite *sp = spriteQ.Next()) { sp->m_position.m_v += delta * sp->m_acceleration; if( sp->m_position.m_v > llgfx_displayheight){ sp->m_position.m_v = 0; } if( sp->m_blitfx.scale_x > 1.0){ sp->m_blitfx.scale_x -= delta; sp->m_blitfx.scale_y -= delta; } sp->m_acceleration = sp->m_blitfx.scale_x *sp->m_blitfx.scale_x * 40; sp->m_blitfx.angle_z = 90+ll3d::getDegree(sp->GetAngleToPoint(llinput_MouseX,llinput_MouseY)); sp->Draw(0); sp->m_lifetime -= delta; if(sp->m_lifetime <= 0 ){ spriteQ.Remove(sp); spriteOld.Put(sp); } } /* glViewport(0,0,llgfx_displaywidth,llgfx_displayheight); // Reset The Current Viewport glMatrixMode (GL_PROJECTION); glLoadIdentity (); glOrtho (0, llgfx_displaywidth, llgfx_displayheight, 0, 100000, -10000); glTranslatef(llinput_MouseX,llinput_MouseY,0); static float spin = 0; spin += llirq_GetDeltaTime() * 200; glRotatef(spin,0,0,1 ); glMatrixMode (GL_MODELVIEW); glLoadIdentity (); //glTranslatef(llinput_MouseX,llinput_MouseY,0); glPushMatrix(); int x = 0; int y = 0; int w = 300; int h = 200; glTranslatef(-w/2,-h/2,0); glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D,6); //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,GL_NEAREST); glEnable(GL_BLEND); glDisable(GL_DEPTH_TEST); glBlendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_ONE); glColor4f(1.0f, 1.0f, 1.0f, 0.75f); glBegin(GL_QUADS); // Begin Drawing The Textured Quad glTexCoord2f(0.0f, 0.0f); glVertex3f( x,y, 0.0); glTexCoord2f(1.0f, 0.0f); glVertex3f( x+w,y, 0.0f); glTexCoord2f(1.0f, 1.0f); glVertex3f( x+w,y+h, 0.0f); glTexCoord2f(0.0f, 1.0f); glVertex3f( x,y+h, 0.0f); glEnd(); glPopMatrix(); */ llgfx_sRECT rect = {0,0,200,100}; blitfx.fixalpha = (float)llinput_MouseY / (float)llgfx_displayheight; blitfx.scale_x = 2; blitfx.scale_y = 2; blitfx.angle_z = ll3d::Mod(tileblitscroll,360.0f); blitfx.angle_x = 0; blitfx.angle_y = 0; blitfx.color1 = YELLOW; blitfx.color2 = RED; blitfx.color3 = BLACK; blitfx.color4 = BLACK; llgfx_BLITColor(0,0,0,&rect,BLIT_SRC_CENTERED|BLIT_DST_CENTERED|BLIT_STRETCH|BLIT_ROTATE|BLIT_FXBLEND,&blitfx); blitfx.angle_z = 0; blitfx.scale_x = blitfx.scale_y = 1; llgfx_BLIT(0,maus,llinput_MouseX,llinput_MouseY,0,BLIT_SRC_CKEY|BLIT_STRETCH,&blitfx); blitfx.fixalpha = (float)llinput_MouseY / (float)llgfx_displayheight; llgfx_BLIT(0,scope,0,0,0,BLIT_FXDIFF,&blitfx); fps.Action(delta); fps.Draw(0); llgfx_Printf("Sprites: %d",spriteQ.InQueue()); llgfx_Printf("\n\nA - Exit Game ---"); llgfx_Printf("\n\nALT-RETURN toggle Fullscreen"); llgfx_Printf("\n\n Mouse %d:%d",llinput_MouseX,llinput_MouseY); float l = llsound_GetSndLength(sid); llgfx_Printf( "\nl=%f",l); float p = llsound_GetSndPlaytime(sid); llgfx_Printf( "\np=%f",p); int status = llsound_GetStatus(sid); llgfx_Printf( "\ns=%d",status ); llgfx_Printf( "\nuptime=%f",llirq_uptime); llgfx_Printf( "\ndelta=%f",delta); float xpos = ll3d::Mod((float)tileblitscroll,(float)llgfx_displaywidth); llgfx_DrawCircle(0, xpos,200.0f,(float)llinput_MouseY,YELLOW); llgfx_DrawLine(0,xpos,200.0f,0.0f,(float)llgfx_displayheight,GOLD); if( Justdown(llinput_Keys[LLINPUT_KEY_B]) ){ llsound_Stop(sid); } if( Justdown(llinput_Keys[LLINPUT_KEY_A]) ){ osmain_endgame = true; } if( Justdown(llinput_Keys[LLINPUT_KEY_RETURN]) && down(llinput_Keys[LLINPUT_LMENU]) ){ llgfx_ToggleFullscreen(); } llgfx_SetTextPos(400,300); blitfx.scale_x = ll3d::Mod(llirq_uptime,6); blitfx.scale_y = ll3d::Mod(llirq_uptime,6); blitfx.color1 = BLACK; blitfx.color2 = blitfx.color1; llgfx_DrawText(0,"HELLO",BLIT_STRETCH|BLIT_FXCOLOR,&blitfx); //Frameloop Zeichnen ist fertig, Backbuffer anzeigen llgfx_FlipScreen(1); llsound_Update(delta); llinput_Update(); llirq_Sleep(10); } return 0; }