public override void HandleInput(UserCommand command) { if (state == EquipHandlerState.AskingDiggerName) { if (string.IsNullOrEmpty(command.FullCommand)) { Game.WriteLine("A name is required!", PcmColor.Red); return; } if (DiggerWithNameExists(FormatDiggerName(command.CommandText))) { Game.WriteLine($"Digger with the name {diggerName} already exists.", PcmColor.Red); return; } diggerName = FormatDiggerName(command.CommandText); } if (claimsAvailable) { if (state != EquipHandlerState.AskingClaimLeaseId) { state = EquipHandlerState.AskingClaimLeaseId; ShowClaims(); GameState.PromptText = "Enter Claim Id: "; return; } if (!int.TryParse(command.CommandText, out int id)) { Game.WriteLine($"\"{command.CommandText}\" is not a number."); return; } if (ClaimWithIdDoesNotExists(id)) { Game.WriteLine($"Claim Lease with {command.CommandText} id doesn't exist."); return; } var claimLease = GameState.Miner.ClaimLeases.GetAll().First(x => x.Id == id); if (claimLease.InUse) { Game.WriteLine($"Claim Lease with {id} id is already in use."); return; } claimLease.AssignDigger(EquipDigger(claimLease.Claim)); GameState.PromptText = null; Game.PopScene(); return; } EquipDigger(GameState.MineClaims.Add(new MineClaimFactory().BuildSite())); GameState.PromptText = null; Game.PopScene(); }
public override void Update(Frame frame) { if (state == EquipHandlerState.Starting) { if (MinerCanNotEquip()) { Game.WriteLine("You can't do equip a digger."); GameState.PromptText = null; Game.PopScene(); return; } if (string.IsNullOrEmpty(diggerName)) { Game.WriteLine("A name is required!", PcmColor.Red); state = EquipHandlerState.AskingDiggerName; GameState.PromptText = "Enter Digger Name: "; return; } if (DiggerWithNameExists(FormatDiggerName(diggerName))) { Game.WriteLine($"Digger with the name {diggerName} already exists.", PcmColor.Red); state = EquipHandlerState.AskingDiggerName; GameState.PromptText = "Enter Digger Name: "; return; } if (claimsAvailable) { if (claimLeaseId <= 0) { ShowClaims(); state = EquipHandlerState.AskingClaimLeaseId; GameState.PromptText = "Enter Claim Id: "; return; } var claimLease = GameState.Miner.ClaimLeases.GetAll().First(x => x.Id == claimLeaseId); if (claimLease.InUse) { ShowClaims(); Game.WriteLine($"Claim Lease with {claimLeaseId} id is already in use."); state = EquipHandlerState.AskingClaimLeaseId; GameState.PromptText = "Enter Claim Id: "; return; } diggerName = FormatDiggerName(diggerName); claimLease.AssignDigger(EquipDigger(claimLease.Claim)); GameState.PromptText = null; Game.PopScene(); return; } diggerName = FormatDiggerName(diggerName); EquipDigger(GameState.MineClaims.Add(new MineClaimFactory().BuildSite())); GameState.PromptText = null; Game.PopScene(); } }