private static ItemList.Item GetItem(ConstructionPrototype recipe, ItemList itemList) { return(new(itemList) { Metadata = recipe, Text = recipe.Name, Icon = recipe.Icon.Frame0(), TooltipEnabled = true, TooltipText = recipe.Description, });
public void Init(ConstructionPrototype prototype) { Prototype = prototype; Stage = 1; if (prototype.Stages[1].Icon != null) { Sprite.AddLayerWithSprite(prototype.Stages[1].Icon); } else { Sprite.AddLayerWithSprite(prototype.Icon); } }
public void SpawnGhost(ConstructionPrototype prototype, GridCoordinates loc, Direction dir) { var entMgr = IoCManager.Resolve <IClientEntityManager>(); var ghost = entMgr.SpawnEntity("constructionghost", loc); var comp = ghost.GetComponent <ConstructionGhostComponent>(); comp.Prototype = prototype; comp.Master = this; comp.GhostID = nextId++; ghost.GetComponent <ITransformComponent>().LocalRotation = dir.ToAngle(); var sprite = ghost.GetComponent <SpriteComponent>(); sprite.LayerSetSprite(0, prototype.Icon); sprite.LayerSetVisible(0, true); Ghosts.Add(comp.GhostID, comp); }
public void DoExamine(FormattedMessage message, ConstructionPrototype prototype, int stage, bool inDetailRange) { var stages = prototype.Stages; if (stage >= 0 && stage < stages.Count) { var curStage = stages[stage]; if (curStage.Backward != null && curStage.Backward is ConstructionStepTool) { var backward = (ConstructionStepTool)curStage.Backward; message.AddText(Loc.GetString("To deconstruct: {0}x {1} Tool", backward.Amount, backward.ToolQuality)); } if (curStage.Forward != null && curStage.Forward is ConstructionStepMaterial) { if (curStage.Backward != null) { message.AddText("\n"); } var forward = (ConstructionStepMaterial)curStage.Forward; message.AddText(Loc.GetString("To construct: {0}x {1}", forward.Amount, forward.Material)); } } }
private static int ComparePrototype(ConstructionPrototype x, ConstructionPrototype y) { return(String.Compare(x.Name, y.Name, StringComparison.Ordinal)); }
public ConstructionPlacementHijack(ConstructionPrototype prototype, ConstructorComponent owner) { Prototype = prototype; Owner = owner; }
public void Init(ConstructionPrototype prototype) { Prototype = prototype; Stage = 1; Sprite.AddLayerWithSprite(prototype.Stages[1].Icon); }
public ConstructionPlacementHijack(ConstructionSystem constructionSystem, ConstructionPrototype prototype) { _constructionSystem = constructionSystem; _prototype = prototype; }
private void PopulateInfo(ConstructionPrototype prototype) { ClearInfo(); var isItem = prototype.Type == ConstructionType.Item; _buildButton.Disabled = false; _buildButton.Text = Loc.GetString(!isItem ? "Place construction ghost" : "Craft"); _targetName.SetMessage(prototype.Name); _targetDescription.SetMessage(prototype.Description); _targetTexture.Texture = prototype.Icon.Frame0(); if (!_prototypeManager.TryIndex(prototype.Graph, out ConstructionGraphPrototype graph)) { return; } var startNode = graph.Nodes[prototype.StartNode]; var targetNode = graph.Nodes[prototype.TargetNode]; var path = graph.Path(startNode.Name, targetNode.Name); var current = startNode; var stepNumber = 1; Texture?GetTextureForStep(ConstructionGraphStep step) { switch (step) { case MaterialConstructionGraphStep materialStep: switch (materialStep.Material) { case StackType.Metal: return(_resourceCache.GetTexture("/Textures/Objects/Materials/sheets.rsi/metal.png")); case StackType.Glass: return(_resourceCache.GetTexture("/Textures/Objects/Materials/sheets.rsi/glass.png")); case StackType.Plasteel: return(_resourceCache.GetTexture("/Textures/Objects/Materials/sheets.rsi/plasteel.png")); case StackType.Phoron: return(_resourceCache.GetTexture("/Textures/Objects/Materials/sheets.rsi/phoron.png")); case StackType.Cable: return(_resourceCache.GetTexture("/Textures/Objects/Tools/cables.rsi/coil-30.png")); case StackType.MetalRod: return(_resourceCache.GetTexture("/Textures/Objects/Materials/materials.rsi/rods.png")); } break; case ToolConstructionGraphStep toolStep: switch (toolStep.Tool) { case ToolQuality.Anchoring: return(_resourceCache.GetTexture("/Textures/Objects/Tools/wrench.rsi/icon.png")); case ToolQuality.Prying: return(_resourceCache.GetTexture("/Textures/Objects/Tools/crowbar.rsi/icon.png")); case ToolQuality.Screwing: return(_resourceCache.GetTexture("/Textures/Objects/Tools/screwdriver.rsi/screwdriver-map.png")); case ToolQuality.Cutting: return(_resourceCache.GetTexture("/Textures/Objects/Tools/wirecutters.rsi/cutters-map.png")); case ToolQuality.Welding: return(_resourceCache.GetTexture("/Textures/Objects/Tools/welder.rsi/welder.png")); case ToolQuality.Multitool: return(_resourceCache.GetTexture("/Textures/Objects/Tools/multitool.rsi/multitool.png")); } break; case ComponentConstructionGraphStep componentStep: return(componentStep.Icon?.Frame0()); case PrototypeConstructionGraphStep prototypeStep: return(prototypeStep.Icon?.Frame0()); case NestedConstructionGraphStep _: return(null); } return(null); } foreach (var node in path) { var edge = current.GetEdge(node.Name); var firstNode = current == startNode; if (firstNode) { _stepList.AddItem(isItem ? Loc.GetString($"{stepNumber++}. To craft this item, you need:") : Loc.GetString($"{stepNumber++}. To build this, first you need:")); } foreach (var step in edge.Steps) { var icon = GetTextureForStep(step); switch (step) { case MaterialConstructionGraphStep materialStep: _stepList.AddItem( !firstNode ? Loc.GetString( "{0}. Add {1}x {2}.", stepNumber++, materialStep.Amount, materialStep.Material) : Loc.GetString(" {0}x {1}", materialStep.Amount, materialStep.Material), icon); break; case ToolConstructionGraphStep toolStep: _stepList.AddItem(Loc.GetString("{0}. Use a {1}.", stepNumber++, toolStep.Tool.GetToolName()), icon); break; case PrototypeConstructionGraphStep prototypeStep: _stepList.AddItem(Loc.GetString("{0}. Add {1}.", stepNumber++, prototypeStep.Name), icon); break; case ComponentConstructionGraphStep componentStep: _stepList.AddItem(Loc.GetString("{0}. Add {1}.", stepNumber++, componentStep.Name), icon); break; case NestedConstructionGraphStep nestedStep: var parallelNumber = 1; _stepList.AddItem(Loc.GetString("{0}. In parallel...", stepNumber++)); foreach (var steps in nestedStep.Steps) { var subStepNumber = 1; foreach (var subStep in steps) { icon = GetTextureForStep(subStep); switch (subStep) { case MaterialConstructionGraphStep materialStep: if (!isItem) { _stepList.AddItem(Loc.GetString(" {0}.{1}.{2}. Add {3}x {4}.", stepNumber, parallelNumber, subStepNumber++, materialStep.Amount, materialStep.Material), icon); } break; case ToolConstructionGraphStep toolStep: _stepList.AddItem(Loc.GetString(" {0}.{1}.{2}. Use a {3}.", stepNumber, parallelNumber, subStepNumber++, toolStep.Tool.GetToolName()), icon); break; case PrototypeConstructionGraphStep prototypeStep: _stepList.AddItem(Loc.GetString(" {0}.{1}.{2}. Add {3}.", stepNumber, parallelNumber, subStepNumber++, prototypeStep.Name), icon); break; case ComponentConstructionGraphStep componentStep: _stepList.AddItem(Loc.GetString(" {0}.{1}.{2}. Add {3}.", stepNumber, parallelNumber, subStepNumber++, componentStep.Name), icon); break; } } parallelNumber++; } break; } } current = node; } }
private static int ComparePrototype(ConstructionPrototype x, ConstructionPrototype y) { return(x.Name.CompareTo(y.Name)); }