Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static class GridAnime {
- private static final WeightedRandomPicker<Float> DEGREE_PICKER = new WeightedRandomPicker<>();
- static {
- DEGREE_PICKER.add(0f);
- DEGREE_PICKER.add(90f);
- DEGREE_PICKER.add(180f);
- DEGREE_PICKER.add(270f);
- }
- float maxRadius;
- float duration;
- float elapsed;
- float alphaMult;
- Color color;
- Vector2f loc;
- int index;
- float degree;
- public GridAnime(float maxRadius, float duration, float alphaMult, Color color, Vector2f loc) {
- this.maxRadius = maxRadius;
- this.duration = duration;
- this.alphaMult = alphaMult;
- this.color = color;
- this.loc = new Vector2f(loc);
- this.index = OriMisc.RANDOM.nextInt(2);
- this.degree = DEGREE_PICKER.pick();
- }
- public static void AddNewGridAnime(float maxRadius, float duration, float alphaMult, Color color, Vector2f loc) {
- final RenderMapData data = (RenderMapData) Global.getCombatEngine().getCustomData().get(RENDER_DATA_KEY);
- final List<GridAnime> grids = data.grids;
- grids.add(new GridAnime(maxRadius, duration, alphaMult, color, loc));
- }
- public boolean advance(float amount) {
- elapsed += amount;
- if (elapsed >= duration) {
- elapsed = duration;
- return false;
- }
- return true;
- }
- public void render() {
- float level = Math.min(1f, elapsed / duration);
- float boardRange = maxRadius * 0.1f;
- float size = maxRadius;
- SpriteAPI gridSprite = Global.getSettings().getSprite("fx", "AL_bossgrid_" + index);
- gridSprite.setWidth(size * 2f);
- gridSprite.setHeight(size * 2f);
- gridSprite.setAngle(degree);
- GL11.glColorMask(false, false, false, true);
- GL11.glPushMatrix();
- GL11.glTranslatef(loc.x, loc.y, 0);
- Misc.renderQuadAlpha(0 - size - 1f, 0 - size - 1f, size * 2f + 2f, size * 2f + 2f, Misc.zeroColor, 0f);
- GL11.glDisable(GL11.GL_TEXTURE_2D);
- GL11.glEnable(GL11.GL_BLEND);
- float verts = 60f;
- float radius = level * maxRadius * 0.9f;
- GL11.glBegin(GL11.GL_TRIANGLE_FAN);
- {
- GL11.glColor4f(0, 0, 0f, 0f);
- GL11.glVertex2f(0f, 0f);
- GL11.glColor4f(0f, 0, 0, 1f);
- for (int i = 0; i <= verts; i++) {
- float rad = (float) (360f / verts * i / 180f * Math.PI);
- GL11.glVertex2f((float) (radius * FastTrig.cos(rad)), (float) (radius * FastTrig.sin(rad)));
- }
- }
- GL11.glEnd();
- GL11.glBegin(GL11.GL_QUAD_STRIP);
- {
- for (int i = 0; i <= verts; i++) {
- float rad = (float) (360f / verts * i / 180f * Math.PI);
- float inRadius = radius - 1f;
- float outRadius = radius + boardRange;
- GL11.glColor4f(0f, 0, 0, 1f);
- GL11.glVertex2f((float) (inRadius * FastTrig.cos(rad)), (float) (inRadius * FastTrig.sin(rad)));
- GL11.glColor4f(0f, 0, 0, 0f);
- GL11.glVertex2f((float) (outRadius * FastTrig.cos(rad)), (float) (outRadius * FastTrig.sin(rad)));
- }
- }
- GL11.glEnd();
- gridSprite.setAlphaMult((float) FastTrig.cos(level * 0.5f * Math.PI) * alphaMult);
- gridSprite.setBlendFunc(GL11.GL_DST_ALPHA, GL11.GL_ZERO);
- gridSprite.renderAtCenter(0, 0);
- GL11.glPopMatrix();
- GL11.glColorMask(true, true, true, false);
- gridSprite.setAlphaMult(1f);
- gridSprite.setColor(color);
- gridSprite.setBlendFunc(GL11.GL_DST_ALPHA, GL11.GL_ONE_MINUS_DST_ALPHA);
- gridSprite.renderAtCenter(loc.x, loc.y);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement