class Enemy { PVector pos; PVector vel; float radius; int type; void draw() { fill(COLORS[type]); noStroke(); ellipse(pos.x, pos.y, radius, radius); } void tick() { pos.add(vel); vel.mult(ENEMY_DRAG); vel.y += ENEMY_GRAVITY; } Enemy(PVector p, int lev) { pos = new PVector(p.x, p.y); vel = new PVector(0, 0); type = lev; radius = ENEMY_RADIUS; } } class Shell extends Enemy { Shell(PVector p, int lev) { super(p, lev); radius = SHELL_RADIUS; } void draw() { noStroke(); if((power_progress_meter > 1 && type <= powerlevel+1) || type <= powerlevel) stroke(COLORS[type]); fill(blendColors(color(0),COLORS[type], 0.3)); ellipse(pos.x, pos.y, radius, radius); noStroke(); fill(blendColors(color(0),COLORS[type], 0.4)); ellipse(pos.x + radius/3, pos.y + radius/3, radius/3, radius/3); fill(blendColors(blendColors(color(0),COLORS[type], 0.3), color(255), 0.3)); ellipse(pos.x - radius/3, pos.y - radius/3, radius/3, radius/3); } } class PlayerBullet { PVector pos; PVector vel; void draw() { noStroke(); fill(255); ellipse(pos.x, pos.y, 3, 3); } PlayerBullet(PVector p) { pos = new PVector(p.x, p.y); vel = new PVector(0, -5); } } class EnemyBullet { }