public void Production(ScriptRegion region) { float budget = Wealth * 0.01f; float cost = 0; foreach (ResourceAmount resourceAmount in ProductionInputPerSize) { cost += region.ResourceList[resourceAmount.Resource].Price * resourceAmount.Amount * Size; } ActivityProduction = Mathf.Min(budget / cost, 1); Wealth -= cost * ActivityProduction; foreach (ResourceAmount resourceAmount in ProductionInputPerSize) { region.ResourceList[resourceAmount.Resource].Consumption += resourceAmount.Amount * Size * ActivityProduction; } foreach (ResourceAmount resourceAmount in ProductionOutputPerSize) { float production = resourceAmount.Amount * Size * ActivityProduction; print(region.ResourceList.Count); region.ResourceList[resourceAmount.Resource].Production += production; Wealth += region.ResourceList[resourceAmount.Resource].Price * production; } }
private IReadOnlyList <SymbolReference> GetOccurrences(ScriptRegion scriptRegion) { return(SymbolsService.FindOccurrencesInFile( GetScriptFile(scriptRegion), scriptRegion.StartLineNumber, scriptRegion.StartColumnNumber)); }
private Task <ParameterSetSignatures> GetParamSetSignatures(ScriptRegion scriptRegion) { return(symbolsService.FindParameterSetsInFileAsync( GetScriptFile(scriptRegion), scriptRegion.StartLineNumber, scriptRegion.StartColumnNumber)); }
public void Upkeep(ScriptRegion region) { float budget = Wealth * 0.01f; float cost = 0; foreach (ResourceAmount resourceAmount in UpkeepInputPerSize) { cost += region.ResourceList[resourceAmount.Resource].Price * resourceAmount.Amount * Size; } ActivityUpkeep = Mathf.Min(budget / cost, GrowthLimit); Wealth -= cost * ActivityUpkeep; foreach (ResourceAmount resourceAmount in UpkeepInputPerSize) { region.ResourceList[resourceAmount.Resource].Consumption += resourceAmount.Amount * Size * ActivityUpkeep; } foreach (ResourceAmount resourceAmount in UpkeepOutputPerSize) { region.ResourceList[resourceAmount.Resource].Consumption += resourceAmount.Amount * Size * ActivityUpkeep; } Growth = GrowthBase + (GrowthMultiplier * ActivityUpkeep); Size *= Growth; }
private async Task <ParameterSetSignatures> GetParamSetSignatures(ScriptRegion scriptRegion) { return (await this.languageService.FindParameterSetsInFile( GetScriptFile(scriptRegion), scriptRegion.StartLineNumber, scriptRegion.StartColumnNumber)); }
private FindOccurrencesResult GetOccurrences(ScriptRegion scriptRegion) { return (this.languageService.FindOccurrencesInFile( GetScriptFile(scriptRegion), scriptRegion.StartLineNumber, scriptRegion.StartColumnNumber)); }
private Task <IEnumerable <CompletionItem> > GetCompletionResultsAsync(ScriptRegion scriptRegion) { return(completionHandler.GetCompletionsInFileAsync( GetScriptFile(scriptRegion), scriptRegion.StartLineNumber, scriptRegion.StartColumnNumber, CancellationToken.None)); }
private async Task <CompletionResults> GetCompletionResults(ScriptRegion scriptRegion) { // Run the completions request return (await this.completionHandler.GetCompletionsInFileAsync( GetScriptFile(scriptRegion), scriptRegion.StartLineNumber, scriptRegion.StartColumnNumber).ConfigureAwait(false)); }
private async Task <CompletionResults> GetCompletionResults(ScriptRegion scriptRegion) { // Run the completions request return (await this.languageService.GetCompletionsInFile( GetScriptFile(scriptRegion), scriptRegion.StartLineNumber, scriptRegion.StartColumnNumber)); }
private async Task <ParameterSetSignatures> GetParamSetSignatures(ScriptRegion scriptRegion) { return (await this.symbolsService.FindParameterSetsInFileAsync( GetScriptFile(scriptRegion), scriptRegion.StartLineNumber, scriptRegion.StartColumnNumber, powerShellContext).ConfigureAwait(false)); }
public SymbolReference(SymbolType symbolType, IScriptExtent scriptExtent, string symbolName, string filePath, string sourceLine) { // TODO: Verify params SymbolType = symbolType; ScriptRegion = ScriptRegion.Create(scriptExtent); SymbolName = symbolName; FilePath = filePath; SourceLine = sourceLine; // TODO: Make sure end column number usage is correct }
private ScriptFile GetScriptFile(ScriptRegion scriptRegion) { string resolvedPath = Path.Combine( baseSharedScriptPath, scriptRegion.File); return (this.workspace.GetFile( resolvedPath)); }
/// <summary> /// Constructs an instance of a ParameterSetSignatures object /// </summary> /// <param name="commandInfoSet">Collection of parameter set info</param> /// <param name="foundSymbol"> The SymbolReference of the command</param> public ParameterSetSignatures(IEnumerable <CommandParameterSetInfo> commandInfoSet, SymbolReference foundSymbol) { List <ParameterSetSignature> paramSetSignatures = new(); foreach (CommandParameterSetInfo setInfo in commandInfoSet) { paramSetSignatures.Add(new ParameterSetSignature(setInfo)); } Signatures = paramSetSignatures.ToArray(); CommandName = foundSymbol.ScriptRegion.Text; ScriptRegion = foundSymbol.ScriptRegion; }
private Task <SymbolReference> GetDefinition(ScriptRegion scriptRegion) { ScriptFile scriptFile = GetScriptFile(scriptRegion); SymbolReference symbolReference = SymbolsService.FindSymbolAtLocation( scriptFile, scriptRegion.StartLineNumber, scriptRegion.StartColumnNumber); Assert.NotNull(symbolReference); return(symbolsService.GetDefinitionOfSymbolAsync(scriptFile, symbolReference)); }
private ScriptFile GetScriptFile(ScriptRegion scriptRegion) { const string baseSharedScriptPath = @"..\..\..\PowerShellEditorServices.Test.Shared\"; string resolvedPath = Path.Combine( baseSharedScriptPath, scriptRegion.File); return (this.workspace.GetFile( resolvedPath)); }
/// <summary> /// Handle a CodeLens resolve request from VSCode. /// </summary> /// <param name="codeLens">The CodeLens to be resolved/updated.</param> /// <param name="requestContext"></param> private async Task HandleCodeLensResolveRequest( LanguageServer.CodeLens codeLens, RequestContext <LanguageServer.CodeLens> requestContext) { if (codeLens.Data != null) { // TODO: Catch deserializtion exception on bad object CodeLensData codeLensData = codeLens.Data.ToObject <CodeLensData>(); ICodeLensProvider originalProvider = Providers.FirstOrDefault( provider => provider.ProviderId.Equals(codeLensData.ProviderId)); if (originalProvider != null) { ScriptFile scriptFile = _editorSession.Workspace.GetFile( codeLensData.Uri); ScriptRegion region = new ScriptRegion { StartLineNumber = codeLens.Range.Start.Line + 1, StartColumnNumber = codeLens.Range.Start.Character + 1, EndLineNumber = codeLens.Range.End.Line + 1, EndColumnNumber = codeLens.Range.End.Character + 1 }; CodeLens originalCodeLens = new CodeLens( originalProvider, scriptFile, region); var resolvedCodeLens = await originalProvider.ResolveCodeLensAsync( originalCodeLens, CancellationToken.None); await requestContext.SendResult( resolvedCodeLens.ToProtocolCodeLens( _jsonSerializer)); } else { await requestContext.SendError( $"Could not find provider for the original CodeLens: {codeLensData.ProviderId}"); } } }
private Task <List <SymbolReference> > GetReferences(ScriptRegion scriptRegion) { ScriptFile scriptFile = GetScriptFile(scriptRegion); SymbolReference symbolReference = SymbolsService.FindSymbolAtLocation( scriptFile, scriptRegion.StartLineNumber, scriptRegion.StartColumnNumber); Assert.NotNull(symbolReference); return(symbolsService.FindReferencesOfSymbol( symbolReference, workspace.ExpandScriptReferences(scriptFile), workspace)); }
private static Range GetRangeFromScriptRegion(ScriptRegion scriptRegion) { return(new Range { Start = new Position { Line = scriptRegion.StartLineNumber - 1, Character = scriptRegion.StartColumnNumber - 1 }, End = new Position { Line = scriptRegion.EndLineNumber - 1, Character = scriptRegion.EndColumnNumber - 1 } }); }
private async Task <FindReferencesResult> GetReferences(ScriptRegion scriptRegion) { ScriptFile scriptFile = GetScriptFile(scriptRegion); SymbolReference symbolReference = this.languageService.FindSymbolAtLocation( scriptFile, scriptRegion.StartLineNumber, scriptRegion.StartColumnNumber); Assert.NotNull(symbolReference); return (await this.languageService.FindReferencesOfSymbol( symbolReference, this.workspace.ExpandScriptReferences(scriptFile))); }
private async Task <GetDefinitionResult> GetDefinition(ScriptRegion scriptRegion, Workspace workspace) { ScriptFile scriptFile = GetScriptFile(scriptRegion); SymbolReference symbolReference = this.languageService.FindSymbolAtLocation( scriptFile, scriptRegion.StartLineNumber, scriptRegion.StartColumnNumber); Assert.NotNull(symbolReference); return (await this.languageService.GetDefinitionOfSymbol( scriptFile, symbolReference, workspace)); }
/// <summary> /// Constructs and instance of a SymbolReference /// </summary> /// <param name="symbolType">The higher level type of the symbol</param> /// <param name="symbolName">The name of the symbol</param> /// <param name="scriptExtent">The script extent of the symbol</param> /// <param name="filePath">The file path of the symbol</param> /// <param name="sourceLine">The line contents of the given symbol (defaults to empty string)</param> public SymbolReference( SymbolType symbolType, string symbolName, IScriptExtent scriptExtent, string filePath = "", string sourceLine = "") { // TODO: Verify params this.SymbolType = symbolType; this.SymbolName = symbolName; this.ScriptRegion = ScriptRegion.Create(scriptExtent); this.FilePath = filePath; this.SourceLine = sourceLine; // TODO: Make sure end column number usage is correct // Build the display string //this.DisplayString = // string.Format( // "{0} {1}") }
// Update is called once per frame void Update() { if (Input.GetMouseButtonDown(0)) { _isDown = true; } else if (Input.GetMouseButtonUp(0)) { //TODO use different raycasting to also hit ui if (_isDown) { _isDown = false; float rayDistance; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (_groundPlane.Raycast(ray, out rayDistance)) { SelectedRegion = _worldManager.GetRegion(ray.GetPoint(rayDistance)); } } } }
private async Task <GetDefinitionResult> GetDefinition(ScriptRegion scriptRegion) { return(await GetDefinition(scriptRegion, this.workspace)); }
private List <SymbolReference> FindSymbolsInFile(ScriptRegion scriptRegion) => symbolsService.FindSymbolsInFile(GetScriptFile(scriptRegion));
private static Range GetRangeFromScriptRegion(ScriptRegion scriptRegion) { return new Range { Start = new Position { Line = scriptRegion.StartLineNumber - 1, Character = scriptRegion.StartColumnNumber - 1 }, End = new Position { Line = scriptRegion.EndLineNumber - 1, Character = scriptRegion.EndColumnNumber - 1 } }; }
private FindOccurrencesResult FindSymbolsInFile(ScriptRegion scriptRegion) { return this.languageService.FindSymbolsInFile( GetScriptFile(scriptRegion)); }
private FindOccurrencesResult GetOccurrences(ScriptRegion scriptRegion) { return this.languageService.FindOccurrencesInFile( GetScriptFile(scriptRegion), scriptRegion.StartLineNumber, scriptRegion.StartColumnNumber); }
private async Task<FindReferencesResult> GetReferences(ScriptRegion scriptRegion) { ScriptFile scriptFile = GetScriptFile(scriptRegion); SymbolReference symbolReference = this.languageService.FindSymbolAtLocation( scriptFile, scriptRegion.StartLineNumber, scriptRegion.StartColumnNumber); Assert.NotNull(symbolReference); return await this.languageService.FindReferencesOfSymbol( symbolReference, this.workspace.ExpandScriptReferences(scriptFile)); }
private async Task<ParameterSetSignatures> GetParamSetSignatures(ScriptRegion scriptRegion) { return await this.languageService.FindParameterSetsInFile( GetScriptFile(scriptRegion), scriptRegion.StartLineNumber, scriptRegion.StartColumnNumber); }
private async Task<CompletionResults> GetCompletionResults(ScriptRegion scriptRegion) { // Run the completions request return await this.languageService.GetCompletionsInFile( GetScriptFile(scriptRegion), scriptRegion.StartLineNumber, scriptRegion.StartColumnNumber); }
private ScriptFile GetScriptFile(ScriptRegion scriptRegion) { const string baseSharedScriptPath = @"..\..\..\PowerShellEditorServices.Test.Shared\"; string resolvedPath = Path.Combine( baseSharedScriptPath, scriptRegion.File); return this.workspace.GetFile( resolvedPath); }
private FindOccurrencesResult FindSymbolsInFile(ScriptRegion scriptRegion) { return (this.languageService.FindSymbolsInFile( GetScriptFile(scriptRegion))); }
private ScriptFile GetScriptFile(ScriptRegion scriptRegion) => workspace.GetFile(TestUtilities.GetSharedPath(scriptRegion.File));
public override async Task <CommandOrCodeActionContainer> Handle(CodeActionParams request, CancellationToken cancellationToken) { if (cancellationToken.IsCancellationRequested) { _logger.LogDebug($"CodeAction request canceled at range: {request.Range}"); return(Array.Empty <CommandOrCodeAction>()); } IReadOnlyDictionary <string, IEnumerable <MarkerCorrection> > corrections = await _analysisService.GetMostRecentCodeActionsForFileAsync( request.TextDocument.Uri) .ConfigureAwait(false); if (corrections == null) { return(Array.Empty <CommandOrCodeAction>()); } List <CommandOrCodeAction> codeActions = new(); // If there are any code fixes, send these commands first so they appear at top of "Code Fix" menu in the client UI. foreach (Diagnostic diagnostic in request.Context.Diagnostics) { if (string.IsNullOrEmpty(diagnostic.Code?.String)) { _logger.LogWarning( $"textDocument/codeAction skipping diagnostic with empty Code field: {diagnostic.Source} {diagnostic.Message}"); continue; } string diagnosticId = AnalysisService.GetUniqueIdFromDiagnostic(diagnostic); if (corrections.TryGetValue(diagnosticId, out IEnumerable <MarkerCorrection> markerCorrections)) { foreach (MarkerCorrection markerCorrection in markerCorrections) { codeActions.Add(new CodeAction { Title = markerCorrection.Name, Kind = CodeActionKind.QuickFix, Edit = new WorkspaceEdit { DocumentChanges = new Container <WorkspaceEditDocumentChange>( new WorkspaceEditDocumentChange( new TextDocumentEdit { TextDocument = new OptionalVersionedTextDocumentIdentifier { Uri = request.TextDocument.Uri }, Edits = new TextEditContainer(ScriptRegion.ToTextEdit(markerCorrection.Edit)) })) } }); } } } // Add "show documentation" commands last so they appear at the bottom of the client UI. // These commands do not require code fixes. Sometimes we get a batch of diagnostics // to create commands for. No need to create multiple show doc commands for the same rule. HashSet <string> ruleNamesProcessed = new(); foreach (Diagnostic diagnostic in request.Context.Diagnostics) { if ( !diagnostic.Code.HasValue || !diagnostic.Code.Value.IsString || string.IsNullOrEmpty(diagnostic.Code?.String)) { continue; } if (string.Equals(diagnostic.Source, "PSScriptAnalyzer", StringComparison.OrdinalIgnoreCase) && !ruleNamesProcessed.Contains(diagnostic.Code?.String)) { _ = ruleNamesProcessed.Add(diagnostic.Code?.String); string title = $"Show documentation for: {diagnostic.Code?.String}"; codeActions.Add(new CodeAction { Title = title, // This doesn't fix anything, but I'm adding it here so that it shows up in VS Code's // Quick fix UI. The VS Code team is working on a way to support documentation CodeAction's better // but this is good for now until that's ready. Kind = CodeActionKind.QuickFix, Command = new Command { Title = title, Name = "PowerShell.ShowCodeActionDocumentation", Arguments = Newtonsoft.Json.Linq.JArray.FromObject(new[] { diagnostic.Code?.String }) } }); } } return(codeActions); }
private List <SymbolReference> FindSymbolsInFile(ScriptRegion scriptRegion) { return (this.symbolsService.FindSymbolsInFile( GetScriptFile(scriptRegion))); }