Advertisement
Originem

Effect

Aug 6th, 2018
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.08 KB | None | 0 0
  1. public static class GridAnime {
  2.         private static final WeightedRandomPicker<Float> DEGREE_PICKER = new WeightedRandomPicker<>();
  3.         static {
  4.             DEGREE_PICKER.add(0f);
  5.             DEGREE_PICKER.add(90f);
  6.             DEGREE_PICKER.add(180f);
  7.             DEGREE_PICKER.add(270f);
  8.         }
  9.         float maxRadius;
  10.         float duration;
  11.         float elapsed;
  12.         float alphaMult;
  13.         Color color;
  14.         Vector2f loc;
  15.         int index;
  16.         float degree;
  17.  
  18.  
  19.         public GridAnime(float maxRadius, float duration, float alphaMult, Color color, Vector2f loc) {
  20.             this.maxRadius = maxRadius;
  21.             this.duration = duration;
  22.             this.alphaMult = alphaMult;
  23.             this.color = color;
  24.             this.loc = new Vector2f(loc);
  25.             this.index = OriMisc.RANDOM.nextInt(2);
  26.             this.degree = DEGREE_PICKER.pick();
  27.         }
  28.  
  29.         public static void AddNewGridAnime(float maxRadius, float duration, float alphaMult, Color color, Vector2f loc) {
  30.             final RenderMapData data = (RenderMapData) Global.getCombatEngine().getCustomData().get(RENDER_DATA_KEY);
  31.             final List<GridAnime> grids = data.grids;
  32.             grids.add(new GridAnime(maxRadius, duration, alphaMult, color, loc));
  33.         }
  34.  
  35.         public boolean advance(float amount) {
  36.             elapsed += amount;
  37.             if (elapsed >= duration) {
  38.                 elapsed = duration;
  39.                 return false;
  40.             }
  41.             return true;
  42.         }
  43.  
  44.         public void render() {
  45.             float level = Math.min(1f, elapsed / duration);
  46.             float boardRange = maxRadius * 0.1f;
  47.             float size = maxRadius;
  48.             SpriteAPI gridSprite = Global.getSettings().getSprite("fx", "AL_bossgrid_" + index);
  49.             gridSprite.setWidth(size * 2f);
  50.             gridSprite.setHeight(size * 2f);
  51.             gridSprite.setAngle(degree);
  52.  
  53.             GL11.glColorMask(false, false, false, true);
  54.  
  55.             GL11.glPushMatrix();
  56.             GL11.glTranslatef(loc.x, loc.y, 0);
  57.             Misc.renderQuadAlpha(0 - size - 1f, 0 - size - 1f, size * 2f + 2f, size * 2f + 2f, Misc.zeroColor, 0f);
  58.  
  59.  
  60.             GL11.glDisable(GL11.GL_TEXTURE_2D);
  61.             GL11.glEnable(GL11.GL_BLEND);
  62.             float verts = 60f;
  63.  
  64.             float radius = level * maxRadius * 0.9f;
  65.  
  66.             GL11.glBegin(GL11.GL_TRIANGLE_FAN);
  67.             {
  68.                 GL11.glColor4f(0, 0, 0f, 0f);
  69.                 GL11.glVertex2f(0f, 0f);
  70.                 GL11.glColor4f(0f, 0, 0, 1f);
  71.                 for (int i = 0; i <= verts; i++) {
  72.                     float rad = (float) (360f / verts * i / 180f * Math.PI);
  73.                     GL11.glVertex2f((float) (radius * FastTrig.cos(rad)), (float) (radius * FastTrig.sin(rad)));
  74.                 }
  75.             }
  76.             GL11.glEnd();
  77.             GL11.glBegin(GL11.GL_QUAD_STRIP);
  78.             {
  79.                 for (int i = 0; i <= verts; i++) {
  80.                     float rad = (float) (360f / verts * i / 180f * Math.PI);
  81.                     float inRadius = radius - 1f;
  82.                     float outRadius = radius + boardRange;
  83.                     GL11.glColor4f(0f, 0, 0, 1f);
  84.                     GL11.glVertex2f((float) (inRadius * FastTrig.cos(rad)), (float) (inRadius * FastTrig.sin(rad)));
  85.                     GL11.glColor4f(0f, 0, 0, 0f);
  86.                     GL11.glVertex2f((float) (outRadius * FastTrig.cos(rad)), (float) (outRadius * FastTrig.sin(rad)));
  87.  
  88.                 }
  89.             }
  90.             GL11.glEnd();
  91.             gridSprite.setAlphaMult((float) FastTrig.cos(level * 0.5f * Math.PI) * alphaMult);
  92.             gridSprite.setBlendFunc(GL11.GL_DST_ALPHA, GL11.GL_ZERO);
  93.             gridSprite.renderAtCenter(0, 0);
  94.  
  95.             GL11.glPopMatrix();
  96.  
  97.             GL11.glColorMask(true, true, true, false);
  98.             gridSprite.setAlphaMult(1f);
  99.             gridSprite.setColor(color);
  100.             gridSprite.setBlendFunc(GL11.GL_DST_ALPHA, GL11.GL_ONE_MINUS_DST_ALPHA);
  101.             gridSprite.renderAtCenter(loc.x, loc.y);
  102.         }
  103.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement