@tool class_name BulletPreset extends Resource @export_group("Bullets") ## Behavior used to control the motion and actions of the bullets. @export var behavior: BulletBehavior = null ## Size in pixels of the bullets' hitboxes. @export var hitbox_size: Vector2i = Vector2i.ZERO ## If [code]true[/code], the bullets will rotate to face their direction. @export var face_direction: bool = false ## Array of graphics that will be picked from randomly for ## each bullet and modulated by the picked color. @export var base_graphics: Array[AnimationStrip] = []: set(value): base_graphics = value if base_graphics.size() != overlay_graphics.size(): overlay_graphics.resize(base_graphics.size()) notify_property_list_changed() ## Array of graphics that will be picked based on the chosen graphic from ## [member base_graphics] and drawn over top without being modulated. @export var overlay_graphics: Array[AnimationStrip] = []: set(value): overlay_graphics = value if base_graphics.size() != overlay_graphics.size(): overlay_graphics.resize(base_graphics.size()) notify_property_list_changed() ## Array of colors that will be picked from randomly to ## modulate the graphic chosen from [member base_graphics]. @export var colors: Array[Color] = [Color.WHITE] @export_group("Spawning") ## The pattern to use for positioning each "round" of bullets. @export var pattern: BulletSpawnPattern = null ## How many rounds of bullets to spawn before stopping. @export var rounds: int = 1 ## The time to wait after each "round" of bullets before spawning the next. @export var round_delay: float = 0.0 @export_group("Bullet Set") ## Behavior that controls the movement and actions of the [BulletSet]. @export var set_behavior: BulletSetBehavior = null