package ru.dbotthepony.kstarbound.defs.projectile import com.google.gson.stream.JsonWriter import ru.dbotthepony.kstarbound.io.json.IStringSerializable enum class ProjectilePhysics(private vararg val aliases: String) : IStringSerializable { GAS, LASER, BOOMERANG, DEFAULT, BULLET, STICKY_BULLET("STICKYBULLET"), ARROW, UNDERWATER_ARROW("UNDERWATERARROW"), UNDERWATER_ARROW_NO_STICKY("UNDERWATERARROWNOSTICKY"), ROCKET, GRAVITY_BULLET("GRAVITYBULLET"), FLAME, ARROW_NO_STICKY("ARROWNOSTICKY"), SQUIRT, FLYBUG, ROLLER, BOWLDER, SMOOTH_ROLLING_BOULDER("SMOOTHROLLINGBOULDER"), ROLLING_BOULDER("ROLLINGBOULDER"), DRAGON_BONE("DRAGONBONE"), DRAGON_HEAD("DRAGONHEAD"), STICKY, BOWLING_BALL("BOWLINGBALL"), PAPER_PLANE("PAPERPLANE"), BOULDER, STATUS_POD("STATUSPOD"), // ??? ILLUSION, ILLUSION_ROCKET("ROCKETILLUSION"), // ????????????? FRIENDLY_BUBBLE("FRIENDLYBUBBLE"), STICKY_HEAVY_GAS("STICKYHEAVYGAS"), HEAVY_GAS("HEAVYGAS"), BOUNCY_GAS("BOUNCYGAS"), FIREBALL, SLIDER, GOOP, HOVER, BONE_THORN("BONETHORN"), BIG_BUBBLE("BIGBUBBLE"), FIREWORK_FALL("FIREWORKFALL"), LIGHTNING_BOLT("LIGHTNINGBOLT"), SIMPLE_ARC("SIMPLEARC"), LOW_GRAVITY_ARC("LOWGRAVARC"), SPIKE_BALL("SPIKEBALL"), SHRAPNEL, // что WEATHER, FIRE_SPREAD("FIRESPREAD"), GRAPPLE_HOOK("GRAPPLEHOOK"), BALLISTIC_GRAPPLE_HOOK("BALLISTICGRAPPLEHOOK"), FLOATY_STICKY_BOMB("FLOATYSTICKYBOMB"), STICKY_BOMB("STICKYBOMB"), BOUNCY, GRAVITY_BOMB("GRAVITYBOMB"), DISC, HEAVY_BOUNCER("HEAVYBOUNCER"), WALL_STICKY("WALLSTICKY"), FISHING_LURE_SINKING("FISHINGLURESINKING"), FISHING_LURE("FISHINGLURE"), RAIN("RAIN"), PET_BALL("PETBALL"), BOUNCY_BALL("BOUNCYBALL"), BEACH_BALL("BEACHBALL"), NOVELTY_BANANA("NOVELTYBANANA"), SPACE_MINE("SPACEMINE"), MECH_BATTERY("MECHBATTERY"), GRENADE, GRENADE_LARGE("LARGEGRENADE"), GRENADE_Z_BOMB("GRENADEZBOMB"), GRENADE_STICKY("STICKYGRENADE"), GRENADE_SUPER_GRAVITY("SUPERHIGHGRAVGRENADE"), GRENADE_HIGH_GRAVITY_V("VHIGHGRAVGRENADE"), GRENADE_HIGH_GRAVITY("HIGHGRAVGRENADE"), GRENADE_LOW_BOUNCE("GRENADELOWBOUNCE"), GRENADE_NO_BOUNCE("GRENADENOBOUNCE"); override fun match(name: String): Boolean { for (alias in aliases) if (name == alias) return true return name == this.name } override fun write(out: JsonWriter) { out.value(this.name) } }