Exemple #1
0
 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,
     });
Exemple #2
0
 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;
 }
Exemple #9
0
        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));
 }