private void OnPlaced(PlaceArgs args) { if (service.TryPurchaseBuilding(args.Building, out var user)) { db.UpdateUser(user); Acquired?.Invoke(args); isConstructing = true; } }
private void OnClicked(PlaceArgs args) { OnInputClose(); var grid = fieldContainer.Field.Grid; var cell = grid.GetGridObject(args.Position); if (cell.IsEmpty) { var buildingPosition = grid.GetCellCenter(cell.X, cell.Y); Placed?.Invoke(new PlaceArgs(args.Building, buildingPosition)); } }
private async UniTask ConstructBuildingAsync(PlaceArgs args) { var building = await buildingConstructor.Build(args.Building, args.Position); if (building == null) { return; } var goal = new GoalConstructor(building, db, service, progressConstructor); args.Building.Accept(goal); Constructed?.Invoke(new BuildingArgs(building, args.Position)); }
private static bool TryParsePlaceArgs(string argString, ref InstructionArgs args) { var argParts = argString.Split(','); int x, y; Facing facing; if (argParts.Length != 3 || !TryGetCoordinate(argParts[0], out x) || !TryGetCoordinate(argParts[1], out y) || !TryGetFacingDirection(argParts[2], out facing)) { return(false); } args = new PlaceArgs { X = x, Y = y, Facing = facing, }; return(true); }
private UniTask ConstructBuilding(PlaceArgs args) { return(ConstructBuildingAsync(args)); }
private void OnAcquired(PlaceArgs args) { ConstructBuilding(args); }