diff --git a/Faceball2030/Editor.h b/Faceball2030/Editor.h index dd55ffe..e570df0 100644 --- a/Faceball2030/Editor.h +++ b/Faceball2030/Editor.h @@ -16,14 +16,14 @@ enum EnemyID { ISHOOT2, SHOOTME_ARMOR, SONAR, - COIN = 56, - POWERUP_ARMOR = 57, - POWERUP_SPEED = 58, - POWERUP_SHOT = 59, - SPECIAL_CAMO = 60, - SPECIAL_STOP = 61, - SPECIAL_SHIELD = 62, - AREA_MAP = 63, + POWERUP_ARMOR = 56, + POWERUP_SPEED = 57, + POWERUP_SHOT = 58, + SPECIAL_STOP = 59, + SPECIAL_SHIELD = 60, + SPECIAL_CAMO = 61, + AREA_MAP = 62, + COIN = 63, }; /* diff --git a/Faceball2030/assets/Powerup2.mtl b/Faceball2030/assets/Powerup2.mtl index 1c5f44d..d866d25 100644 --- a/Faceball2030/assets/Powerup2.mtl +++ b/Faceball2030/assets/Powerup2.mtl @@ -7,5 +7,5 @@ Kd 1.0 1.0 1.0 Ka 0.0 0.0 0.0 Ks 0.19 0.19 0.19 Ke 0.0 0.0 0.0 -map_Kd octahedron3_auv.png +map_Kd octahedron3_auv2.png diff --git a/Faceball2030/assets/Powerup2.wings b/Faceball2030/assets/Powerup2.wings index 0d1ad06..9ce1e29 100644 Binary files a/Faceball2030/assets/Powerup2.wings and b/Faceball2030/assets/Powerup2.wings differ diff --git a/Faceball2030/assets/map/map1.map b/Faceball2030/assets/map/map1.map index e241d78..bf98687 100644 --- a/Faceball2030/assets/map/map1.map +++ b/Faceball2030/assets/map/map1.map @@ -1,38 +1,44 @@ -6 +7 6 32777 32778 8202 8728 24584 +8200 8204 40965 57753 24584 25104 8192 -16788 +16784 +8196 8197 8193 8192 8194 -8194 +8192 +15632 8196 8193 2 25492 8201 -8204 -8197 +16144 +8192 +15508 8197 8351 8197 8195 8198 -277 +273 +15764 8195 8602 8194 8202 8202 -8198 +16018 +15894 diff --git a/Faceball2030/assets/octahedron3_auv2.png b/Faceball2030/assets/octahedron3_auv2.png new file mode 100644 index 0000000..a470e10 Binary files /dev/null and b/Faceball2030/assets/octahedron3_auv2.png differ diff --git a/Faceball2030/main.cpp b/Faceball2030/main.cpp index f99cbdc..9fcfd46 100644 --- a/Faceball2030/main.cpp +++ b/Faceball2030/main.cpp @@ -163,7 +163,12 @@ bool Powerup::Update(float fElapsedTime) { } void FaceBall::SpawnPowerup(PowerupType type, vec3d pos) { - Mesh& mesh = (type <= PowerupType::SHOTS) ? powerup : powerup2; + Mesh mesh = (type <= PowerupType::SHOTS) ? powerup : powerup2; + for (Triangle& t : mesh.tris) { + t.col[0] = powerupColorData[type]; + t.col[1] = powerupColorData[type]; + t.col[2] = powerupColorData[type]; + } powerups.push_back({ mesh,pos,0,type }); } @@ -198,9 +203,12 @@ void FaceBall::LoadLevel(int level) mapFloor.tris.push_back({ {{(float)x,0,(float)y},{(float)x,0,(float)y + 1},{(float)x + 1,0,(float)y}},{{0,0},{0,1},{1,0}},{WHITE,WHITE,WHITE}, floor_tex }); mapFloor.tris.push_back({ {{(float)x + 1,0,(float)y},{(float)x,0,(float)y + 1},{(float)x + 1,0,(float)y + 1}},{{1,0},{0,1},{1,1}},{WHITE,WHITE,WHITE}, floor_tex }); EnemyID id = mapData[y][x].enemyId; - if (id>=SHOOTME&& id < COIN) { + if (id>=SHOOTME&& id < POWERUP_ARMOR) { enemies.push_back({ id,vec3d{x + 0.5f,0,y + 0.5f},((int)mapData[y][x].facingDir-1)*PI/2,enemyData[id].radius}); } + if (id >= POWERUP_ARMOR) { + SpawnPowerup(PowerupType((int)id-55), vec3d{ x + 0.5f,0,y + 0.5f }); + } if (id == EXIT) { exitCoords = { x,y }; } @@ -846,9 +854,9 @@ void FaceBall::RenderPowerupMesh(mat4x4& matView, std::vector& vecTria triTransformed.uv[0] = tri.uv[0]; triTransformed.uv[1] = tri.uv[1]; triTransformed.uv[2] = tri.uv[2]; - triTransformed.col[0] = tri.col[0]; - triTransformed.col[1] = tri.col[1]; - triTransformed.col[2] = tri.col[2]; + triTransformed.col[0] = tri.col[0] * p.colorCycle; + triTransformed.col[1] = tri.col[1] * p.colorCycle; + triTransformed.col[2] = tri.col[2] * p.colorCycle; triTransformed.tex = tri.tex; vec3d normal, line1, line2; @@ -1135,14 +1143,14 @@ void FaceBall::RenderWorld() { RenderMesh(matView, vecTrianglesToRaster, enemy); } } - for (auto& powerup : powerups) { - RenderPowerupMesh(matView, vecTrianglesToRaster, powerup); - } for (auto& bullet : bullets) { RenderBulletMesh(matView, vecTrianglesToRasterTranslucent, bullet); } RenderMesh(matView, vecTrianglesToRaster, walls); RenderMesh(matView, vecTrianglesToRasterTranslucent, walls, true); + for (auto& powerup : powerups) { + RenderPowerupMesh(matView, vecTrianglesToRasterTranslucent, powerup); + } //std::sort(vecTrianglesToRaster.begin(),vecTrianglesToRaster.end(),[](triangle&t1,triangle&t2){return (t1.p[0].z+t1.p[1].z+t1.p[2].z)/3.0f>(t2.p[0].z+t2.p[1].z+t2.p[2].z)/3.0f;}); ClearBuffer(BLACK, true); @@ -1531,6 +1539,7 @@ bool FaceBall::OnUserCreate() mapFloor.texture = floor_tex; InitializeEnemyData(); + InitializePowerupColors(); LoadLevel(1); diff --git a/Faceball2030/main.h b/Faceball2030/main.h index 65f0461..a0f192c 100644 --- a/Faceball2030/main.h +++ b/Faceball2030/main.h @@ -366,7 +366,6 @@ class FaceBall : public PixelGameEngine bool OnUserUpdate(float fElapsedTime) override; void OnTextEntryComplete(const std::string& sText) override; void InitializeEnemyData(); - void InitializeBulletColors(); void InitializePowerupColors(); void LoadLevel(int level); void RenderBulletMesh(mat4x4& matView, std::vector& vecTrianglesToRaster, Bullet& b,bool translucent=true);