Пример #1
0
    private IJob LoadWork(IGenericSaveData workSave)
    {
        Type type = workSave.GetSaveType();

        logger.Log("Loading work");
        if (type == typeof(WalkRandomlyJob))
        {
            logger.Log("Apparently I was WalkingRandomly");
            return(new WalkRandomlyJob(this.actor, workSave, logger));
        }
        else if (type == typeof(MiningJob))
        {
            logger.Log("Apparently I was Mining");
            return(new MiningJob(this.actor, workSave, logger));
        }
        else if (type == typeof(MoveItemJob))
        {
            logger.Log("Apparently I was Moving an item");
            return(new MoveItemJob(this.actor, workSave, logger));
        }
        else
        {
            throw new Exception("Unknown type " + type.ToString());
        }
    }
Пример #2
0
        private State LoadState(IGenericSaveData activeState)
        {
            Type type = activeState.GetSaveType();

            if (type == typeof(AwaitingAstarState))
            {
                return(new AwaitingAstarState(this));
            }
            else if (type == typeof(WaitABitState))
            {
                if (data.astarResult == null)
                {
                    throw new Exception("Can't be in WaitABitState without astar result");
                }
                return(new WaitABitState(this, activeState));
            }
            else if (type == typeof(TakeStepState))
            {
                if (data.astarResult == null)
                {
                    throw new Exception("Can't be in TakeStepState without astar result");
                }
                return(new TakeStepState(this));
            }
            else
            {
                throw new Exception("Unknown type " + type.ToString());
            }
        }
        public void PausedTimerShouldBeSaveAndLoadable()
        {
            int           waitTimeMs = 100;
            bool          elapsed    = false;
            PausableTimer timer      = new PausableTimer(waitTimeMs);

            timer.Elapsed += (a, b) =>
            {
                elapsed = true;
            };
            int margin = Mathf.RoundToInt(waitTimeMs * 0.1f);

            timer.Start();



            // Wait half the time, then save
            System.Threading.Thread.Sleep((waitTimeMs + margin) / 2);
            timer.Pause();
            IGenericSaveData save = timer.GetSave();

            Assert.IsFalse(elapsed);

            timer          = new PausableTimer(save);
            timer.Elapsed += (a, b) =>
            {
                elapsed = true;
            };
            System.Threading.Thread.Sleep((waitTimeMs + margin) / 2);
            Assert.IsFalse(elapsed);

            timer.Resume();
            System.Threading.Thread.Sleep((waitTimeMs + margin) / 2);
            Assert.IsTrue(elapsed);
        }
Пример #4
0
    private State LoadState(GridActor user, IGenericSaveData activeState)
    {
        Type type = activeState.GetSaveType();

        logger.Log("Loading my state");
        if (type == typeof(FindItemState))
        {
            logger.Log("I was in a FindItemState");
            return(new FindItemState(user, activeState, logger));
        }
        else if (type == typeof(WalkToItemState))
        {
            logger.Log("I was in a WalkToItemState");
            return(new WalkToItemState(user, activeState, logger));
        }
        else if (type == typeof(WalkToTargetState))
        {
            logger.Log("I was in a WalkToTargetState");
            return(new WalkToTargetState(user, activeState, logger));
        }
        else
        {
            throw new Exception("Unknown type " + type.ToString());
        }
    }
Пример #5
0
 public DoJobState(GridActor actor, IGenericSaveData save, LilLogger logger) : base(((SaveData)save).parent)
 {
     this.actor  = actor;
     this.logger = logger;
     this.work   = LoadWork(((SaveData)save).workSave);
     logger.Log("Loading my DoJobState");
 }
Пример #6
0
    public void Load(IGenericSaveData data)
    {
        SaveData save = data as SaveData;

        MiningRequestPool.Instance.Load(save.miningRequestPoolSave);
        MoveItemRequestPool.Instance.Load(save.moveItemRequestPoolSave);
    }
Пример #7
0
        public MineBlockState(GridActor user, IGenericSaveData saveData, LilLogger logger) : base(((SaveData)saveData).parent)
        {
            this.user = user;
            SaveData save = saveData as SaveData;

            this.request = save.request;
            logger.Log("Loading MineBlockState with request " + request);
        }
Пример #8
0
    public void Load(IGenericSaveData data)
    {
        SaveData save = (SaveData)data;

        state          = State.LoadingMap;
        generationTask = Task.Run(() => GridMap.Instance.LoadSave(save.gridmap));
        logger.Log("Loaded GridMapComponent");
    }
Пример #9
0
        public WalkToBlockState(GridActor user, IGenericSaveData saveData, LilLogger logger) : base(user, ((SaveData)saveData).parent)
        {
            this.logger = logger;
            SaveData save = saveData as SaveData;

            this.request = save.request;
            logger.Log("Loaded a WalkToBlockState with request " + request);
            Debug.Assert(this.request != null);
        }
Пример #10
0
    public void Load(IGenericSaveData data)
    {
        var save = (SaveData)data;

        transform.position = save.pos;
        transform.rotation = save.rot;
        initialPosition    = save.referencePos;
        rotationAngle      = save.rotationAngle;
    }
Пример #11
0
        public FindItemState(GridActor actor, IGenericSaveData saveData, LilLogger logger) : base(((SaveData)saveData).parent)
        {
            this.actor  = actor;
            this.logger = logger;
            SaveData save = saveData as SaveData;

            this.request = save.request;
            logger.Log("Loaded my FindItemState with request " + request);
        }
Пример #12
0
    public MiningJob(GridActor actor, IGenericSaveData save, LilLogger logger)
    {
        this.logger = logger;
        SaveData saveData = (SaveData)save;

        if (saveData.activeState != null)
        {
            machine = new StateMachine(LoadState(actor, saveData.activeState));
        }
    }
Пример #13
0
        public WalkToTargetState(GridActor actor, IGenericSaveData saveData, LilLogger logger) : base(actor, ((SaveData)saveData).parent)
        {
            this.actor  = actor;
            this.logger = logger;
            SaveData save = saveData as SaveData;

            this.request = save.request;
            this.item    = save.item;
            logger.Log("Loaded my WalkToTargetState with request " + request);
        }
Пример #14
0
    public DorfController(IGenericSaveData data, GridActor actor, LilLogger logger)
    {
        SaveData save = (SaveData)data;

        name        = save.name;
        this.logger = logger;
        logger.Log("I'm being loaded");
        this.gridActor    = actor;
        this.stateMachine = new StateMachine(LoadState(save.currentStateSave));
    }
Пример #15
0
 public WaitingState(IGenericSaveData saveData) : base(((SaveData)saveData).parent)
 {
     data  = (SaveData)saveData;
     timer = SingletonProvider.MainTimerFactory.GetPausableTimer(data.timerSave);
     if (!data.elapsed)
     {
         timer.Elapsed += ((a, b) => { data.elapsed = true; });
         timer.Start();
     }
 }
Пример #16
0
    public WalkRandomlyJob(GridActor user, IGenericSaveData save, LilLogger logger)
    {
        this.logger = logger;
        SaveData saveData = (SaveData)save;

        logger.Log("Loading a WalkRandomlyJob");
        if (saveData.activeState != null)
        {
            machine = new StateMachine(LoadState(user, saveData.activeState));
        }
    }
Пример #17
0
    public PausableTimer(IGenericSaveData save)
    {
        data     = (SaveData)save;
        Elapsed += OnElapsed;
        bool wasPaused = data.wasPaused;

        Resume();
        if (wasPaused)
        {
            Pause();
        }
    }
Пример #18
0
    IGenericSaveData[] GetSavesFromComponents()
    {
        var saveables = GetSaveableComponents();

        IGenericSaveData[] saves = new IGenericSaveData[saveables.Count];
        int i = 0;

        foreach (var saveable in saveables)
        {
            saves[i] = saveable.Save();
            i++;
        }
        return(saves);
    }
Пример #19
0
        public WalkingState(GridActor user, IGenericSaveData save) : base(((SaveData)save).parent)
        {
            this.user = user;
            this.data = (SaveData)save;

            if (data.activeState != null)
            {
                this.machine = new StateMachine(LoadState(data.activeState));
            }
            else
            {
                Debug.LogWarning("Walkingstate loaded without a state. Terminating.");
                TerminateMachine();
            }
        }
Пример #20
0
    private State LoadState(IGenericSaveData currentStateSave)
    {
        Type type = currentStateSave.GetSaveType();

        if (type == typeof(ChoosingJobState))
        {
            return(new ChoosingJobState(gridActor, currentStateSave, logger));
        }
        else if (type == typeof(DoJobState))
        {
            return(new DoJobState(gridActor, currentStateSave, logger));
        }
        else
        {
            throw new Exception("Unknown state type " + type.ToString());
        }
    }
Пример #21
0
    private State LoadState(GridActor user, IGenericSaveData activeState)
    {
        logger.Log("Loading a WalkRandomlyState");
        Type type = activeState.GetSaveType();

        if (type == typeof(WalkRandomlyState))
        {
            return(new WalkRandomlyState(user, activeState, logger));
        }
        else if (type == typeof(WaitingState))
        {
            return(new WaitState(logger));
        }
        else
        {
            throw new Exception("Unknown type " + type.ToString());
        }
    }
Пример #22
0
    private State LoadState(GridActor actor, IGenericSaveData activeState)
    {
        logger.Log("Loading my state");
        Type type = activeState.GetSaveType();

        if (type == typeof(WalkToBlockState))
        {
            logger.Log("Apparently I was in a WalkToBlockState");
            return(new WalkToBlockState(actor, activeState, logger));
        }
        else if (type == typeof(MineBlockState))
        {
            logger.Log("Apparently I was in a WalkToBlockState");
            return(new MineBlockState(actor, activeState, logger));
        }
        else
        {
            throw new Exception("Unknown type " + type.ToString());
        }
    }
Пример #23
0
 public void Load(IGenericSaveData saveData)
 {
     data = (SaveData)saveData;
 }
Пример #24
0
 public WaitABitState(WalkingState parent, IGenericSaveData save) : base(((SaveData)save).parentSave)
 {
     this.parent = parent;
 }
Пример #25
0
 public TakeStepState(WalkingState parent, IGenericSaveData save) : base(((SaveData)save).parent)
 {
     this.parent = parent;
 }
Пример #26
0
        public State(IGenericSaveData save)
        {
            SaveData saveData = (SaveData)save;

            this.machineTerminated = saveData.machineTerminated;
        }
Пример #27
0
 public ITimer GetPausableTimer(IGenericSaveData save)
 {
     return(new PausableTimer(save));
 }
Пример #28
0
 public ChoosingJobState(GridActor actor, IGenericSaveData save, LilLogger logger) : base(((SaveData)save).parent)
 {
     this.actor  = actor;
     this.logger = logger;
 }
 public void Load(IGenericSaveData data)
 {
     this.data = (SaveData)data;
 }
Пример #30
0
 public WalkRandomlyState(GridActor user, IGenericSaveData save, LilLogger logger) : base(save)
 {
     this.logger = logger;
     this.user   = user;
 }