001package com.fs.starfarer.api.combat; 002 003import java.awt.Color; 004 005import org.lwjgl.util.vector.Vector2f; 006 007 008/** 009 * @author Alex Mosolov 010 * 011 * Copyright 2012 Fractal Softworks, LLC 012 */ 013public interface ShieldAPI { 014 015 public static enum ShieldType {NONE, FRONT, OMNI, PHASE} 016 017 void setType(ShieldType type); 018 ShieldType getType(); 019 020 float getFacing(); 021 022 023 /** 024 * @return maximum arc. 025 */ 026 float getArc(); 027 /** 028 * @return currently open arc (0 if not on) 029 */ 030 float getActiveArc(); 031 void setActiveArc(float activeArc); 032 float getRadius(); 033 boolean isOn(); 034 boolean isOff(); 035 036 /** 037 * @return location of the center of the shield, in engine coordinates. 038 */ 039 Vector2f getLocation(); 040 041 boolean isWithinArc(Vector2f point); 042 043 void toggleOff(); 044 045 /** 046 * Does not include shield damage taken mult, but does include absorbption mult. 047 * @return 048 */ 049 float getFluxPerPointOfDamage(); 050 051 /** 052 * Set the maximum arc. 053 * @param arc 054 */ 055 void setArc(float arc); 056 057 058 void setInnerColor(Color color); 059 void setRingColor(Color ringColor); 060 Color getInnerColor(); 061 Color getRingColor(); 062 063 /** 064 * Flux/second while shield is on. 065 * @return 066 */ 067 float getUpkeep(); 068 void forceFacing(float facing); 069 070 void setRadius(float radius); 071 072 /** 073 * Textures should be already loaded (i.e. via settings.json). 074 * @param radius 075 * @param textureInner 076 * @param textureRing 077 */ 078 void setRadius(float radius, String textureInner, String textureRing); 079 void toggleOn(); 080 float getUnfoldTime(); 081 void setCenter(float x, float y); 082 083 /** 084 * For shield textures, visual only. 085 * @return 086 */ 087 float getInnerRotationRate(); 088 /** 089 * For shield textures, visual only. 090 * @return 091 */ 092 void setInnerRotationRate(float innerRotationRate); 093 /** 094 * For shield textures, visual only. 095 * @return 096 */ 097 float getRingRotationRate(); 098 /** 099 * For shield textures, visual only. 100 * @return 101 */ 102 void setRingRotationRate(float ringRotationRate); 103 boolean isSkipRendering(); 104 void setSkipRendering(boolean skipRendering); 105 void applyShieldEffects(Color innerColor, Color ringColor, float thicknessBonus, float fluctuationBonus, float effectLevel); 106 107 108 109}