/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ using System; using System.Collections; using System.Collections.Generic; using System.Linq; using MessagePack; using Newtonsoft.Json; using RethinkDb.Driver.Ast; using Unity.Mathematics; using static Unity.Mathematics.math; // [MessagePackObject, JsonObject(MemberSerialization.OptIn), EntityTypeRestriction(HullType.Ship), Order(-100)] // public class WanderControllerData : ControllerData // { // [InspectableField, JsonProperty("randomDockTime"), Key(6)] // public float RandomDockTime = 5; // // public override IBehavior CreateInstance(ItemManager context, Entity entity, EquippedItem item) // { // return new WanderController(context, this, entity, item); // } // } // // public class WanderController : ControllerBase, IBehavior // { // public WanderTarget WanderTarget; // // private WanderControllerData _data; // private EquippedItem Item { get; } // private Guid _target; // private float _dockTime = -1; // // public WanderController(ItemManager itemManager, WanderControllerData data, Entity entity, EquippedItem item) : base(itemManager, data, entity) // { // _data = data; // Item = item; // } // // public new bool Execute(float delta) // { // if (!Moving && _dockTime < 0) // { // NextTarget(); // } // // _dockTime -= delta; // return base.Execute(delta); // } // // private void NextTarget() // { // if (WanderTarget == WanderTarget.Planets) // { // var planets = Zone.Planets.Values.ToArray(); // var randomPlanet = planets[ItemManager.Random.NextInt(planets.Length)]; // MoveTo(() => Zone.GetOrbitPosition(randomPlanet.Orbit), () => Zone.GetOrbitVelocity(randomPlanet.Orbit)); // } // else if (WanderTarget == WanderTarget.Orbitals) // { // var entities = Zone.Entities.Where(e=>e is OrbitalEntity).ToArray(); // var randomEntity = entities[ItemManager.Random.NextInt(entities.Length)]; // MoveTo(randomEntity, true, () => // { // Entity.SetParent(randomEntity); // _dockTime = ItemManager.Random.NextFloat(_data.RandomDockTime); // }); // } // } // } // // public enum WanderTarget // { // Planets, // Orbitals // }