using System.Collections.Generic; using System.ComponentModel; using Godot; using Godot.Bridge; using Godot.NativeInterop; [GlobalClass] [ScriptPath("res://Scripts/Actions/LookAround.cs")] public partial class LookAround : IBehaviour { public enum Type { Direction, Player, Randomly } [Export(PropertyHint.None, "")] private Type type; [Export(PropertyHint.None, "")] public Entity.Animations anim = Entity.Animations.None; [Export(PropertyHint.None, "")] private Entity.Direction direction; [Export(PropertyHint.None, "")] private float time = 180f; [Export(PropertyHint.None, "")] private float variance = 30f; private float cooldown; public override void Do() { if (anim != Entity.Animations.None) { base.parent.currentAnim = anim; } switch (type) { case Type.Randomly: if (cooldown > 0f) { cooldown -= Main.deltaTime; break; } base.parent.direction = (Entity.Direction)Main.RandomRange(0, 3); cooldown = time + Main.RandomRange(0f - variance, variance); break; case Type.Player: base.parent.LookAt(Player.instance.GlobalPosition); break; case Type.Direction: { Entity.Direction direction = base.parent.direction; base.parent.direction = this.direction; if (this.direction != direction) { base.parent.UpdateAnim(force: true); } break; } } base.parent.current = null; } }