private void MinerTick(MinerRemoteData miner, float interval) { switch (miner.MinerState) { case EMinerState.Idle: if (!string.IsNullOrEmpty(ShaftRemoteData.Manager)) { miner.MinerState = EMinerState.WalkingToMine; } break; case EMinerState.WalkingToMine: if ((miner.CurrentLocation += ShaftRemoteData.ShaftLevelData.WalkSpeed * interval) >= _staticDataModel.MetaData.MineLength) { miner.MinerState = EMinerState.Mining; } break; case EMinerState.WalkingToBin: if ((miner.CurrentLocation -= ShaftRemoteData.ShaftLevelData.WalkSpeed * interval) <= 0) { SetBinCash(ShaftRemoteData.BinCash + miner.MinedCash); miner.MinedCash = 0; miner.MinerState = ShaftRemoteData.Manager == null ? EMinerState.Idle : EMinerState.WalkingToMine; } break; case EMinerState.Mining: miner.MinedCash += ShaftRemoteData.ShaftLevelData.MinningSpeed * interval; if (miner.MinedCash >= ShaftRemoteData.ShaftLevelData.WorkerCapacity) { miner.MinedCash = ShaftRemoteData.ShaftLevelData.WorkerCapacity; miner.MinerState = EMinerState.WalkingToBin; } break; } }
private void SetMinerPosition(CarrierView carrierView, MinerRemoteData minerRemoteData) { carrierView.RectTransform.anchoredPosition = new Vector2(_unitDistance * minerRemoteData.CurrentLocation, 0); }