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());
        }
Beispiel #2
0
        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();
        }