public override Pipliz.Vector3Int GetJobLocation(BlockJobInstance instance) { if (!PandaJobFactory.TryGetActiveGoal(instance, out var goal)) { goal = new MiningGoal(instance, this); PandaJobFactory.SetActiveGoal(instance, goal); } return(goal.GetPosition()); }
public void Visit(MiningBuildingModel model) { var goal = new MiningGoal(model.Mining, db, buildingService); var progressRoot = building.Root.gameObject; var progressDuration = TimeSpan.FromMilliseconds(model.Mining.Delay); goal.Mining .Where(isActive => isActive) .Subscribe(_ => progressConstructor.Progress(progressRoot, progressDuration)) .AddTo(building); building.Disabled .Subscribe(_ => goal.Dispose()) .AddTo(building); building.Interactived .Subscribe(_ => goal.Execute()) .AddTo(building); goal.Start(); }