示例#1
0
    private OrderButton CreateOrderButton(UnityAction action, UnityAction onHover, string spriteName, string colorHex = "#ffffff", bool isSubButton = true)
    {
        var btn = CreateOrderButton(action, onHover, Loc.GetSpriteStore().GetSprite(spriteName), isSubButton);

        btn.Button.image.color = colorHex.GetColorFromHex();
        return(btn);
    }
示例#2
0
    private void SetZoneCellTile(ZoneBase newZone, string sprite, Cell cell)
    {
        var tile = ScriptableObject.CreateInstance <Tile>();

        tile.sprite = Loc.GetSpriteStore().GetSprite(sprite);
        tile.color  = newZone.ColorString.GetColorFromHex();

        ZoneTilemap.SetTile(new Vector3Int(cell.X, cell.Z, 0), tile);
    }
示例#3
0
    internal List <FilterViewOption> GetAllItemOptions()
    {
        var options = new List <FilterViewOption>();

        foreach (var item in ItemDataReference.Values)
        {
            options.Add(new FilterViewOption(item.Name, Loc.GetSpriteStore().GetSprite(item.Icon), item.Categories));
        }
        return(options);
    }
示例#4
0
        internal void Load(WorkStructureBase structure, WorkDefinition definition, WorkOption option, StructureInfoPanel panel)
        {
            Panel      = panel;
            Structure  = structure;
            Definition = definition;
            Option     = option;

            Image.sprite = Loc.GetSpriteStore().GetSprite(Option.Icon);
            Title.text   = $"{definition.Name}: {option.Name}";
        }
示例#5
0
    public ImageButton AddButton(string spriteName)
    {
        var button = Instantiate(ImageButtonPrefab, ButtonPanel.transform);

        button.SetImage(Loc.GetSpriteStore().GetSprite(spriteName));

        _contextButtons.Add(button);
        button.SetOnClick(() => SetActiveButton(button));
        return(button);
    }
示例#6
0
    private void MoveClicked()
    {
        Loc.Current.Get <CursorController>().SetSelectionPreference(SelectionPreference.Cell);
        Loc.Current.Get <CursorController>().SetSprite(Loc.GetSpriteStore().GetSprite(MoveIcon), (cell) => cell.TravelCost > 0);

        CellClickOrder = cells =>
        {
            var cell = cells[0];
            Loc.GetFactionController().PlayerFaction.AddTask(new Move(cell));
        };
    }
示例#7
0
        internal Texture2D GetTexture()
        {
            if (this._texture != null)
            {
                return(this._texture);
            }
            _texture = new Texture2D(Width * MapController.PixelsPerCell, Height * MapController.PixelsPerCell);

            var z = 0;
            var x = 0;

            foreach (var line in FlippedPlan)
            {
                foreach (var character in line)
                {
                    var startX = x * MapController.PixelsPerCell;
                    var startZ = z * MapController.PixelsPerCell;

                    Texture2D sourceTexture;
                    if (character == '.')
                    {
                        sourceTexture = new Texture2D(1, 1);
                        sourceTexture.SetPixel(0, 0, new Color(0, 0, 0, 0));
                        sourceTexture.Apply();
                    }
                    else
                    {
                        var structure = Loc.GetStructureController().StructureDataReference.Values.First(s => s.Name == GetStructure(character));
                        sourceTexture = Loc.GetSpriteStore().GetSprite(structure.Icon).texture;
                    }
                    var constructTexture = sourceTexture.Clone();
                    constructTexture.ScaleToGridSize(1, 1);

                    for (var subTexX = 0; subTexX < MapController.PixelsPerCell; subTexX++)
                    {
                        for (var subTexY = 0; subTexY < MapController.PixelsPerCell; subTexY++)
                        {
                            var pixel = constructTexture.GetPixel(subTexX, subTexY);
                            _texture.SetPixel(startX + subTexX,
                                              startZ + subTexY,
                                              pixel);
                        }
                    }

                    x++;
                }
                z++;
            }
            _texture.Apply();

            return(_texture);
        }
示例#8
0
    public void Start()
    {
        var lightObject    = transform.Find("Light").gameObject;
        var spriteObject   = transform.Find("Sprite").gameObject;
        var particleObject = transform.Find("Particle").gameObject;

        if ((Data.EffectType & EffectType.Light) == EffectType.Light)
        {
            Light = lightObject.GetComponent <Light>();
        }
        else
        {
            lightObject.SetActive(false);
        }

        if ((Data.EffectType & EffectType.Sprite) == EffectType.Sprite)
        {
            Sprite = spriteObject.GetComponent <SpriteRenderer>();
        }
        else
        {
            spriteObject.SetActive(false);
        }

        if ((Data.EffectType & EffectType.Particle) == EffectType.Particle)
        {
            ParticleSystem = particleObject.GetComponent <ParticleSystem>();
        }
        else
        {
            particleObject.SetActive(false);
        }

        if (Data.Properties.ContainsKey("Sprite"))
        {
            Sprite.sprite = Loc.GetSpriteStore().GetSprite(Data.GetProperty("Sprite"));
        }
        if (Data.Properties.ContainsKey("Color"))
        {
            Sprite.color = Data.GetProperty("Color").GetColorFromHex();
        }

        var x = float.Parse(Data.GetProperty("X"));
        var y = float.Parse(Data.GetProperty("Y"));
        var z = float.Parse(Data.GetProperty("Z"));

        transform.position = new Vector3(x, y, z);
    }
示例#9
0
    private void AttackClicked(IEnumerable <CreatureData> creatures)
    {
        Loc.Current.Get <CursorController>().SetSelectionPreference(SelectionPreference.Cell);
        Loc.Current.Get <CursorController>().SetSprite(Loc.GetSpriteStore().GetSprite(OrderSelectionController.AttackIcon),
                                                       (cell) => cell.GetEnemyCreaturesOf(FactionConstants.Player).Any());

        Loc.GetGameController().OrderSelectionController.CellClickOrder = cells =>
        {
            foreach (var creature in creatures)
            {
                foreach (var cell in cells)
                {
                    foreach (var enemy in cell.GetEnemyCreaturesOf(creature.FactionName))
                    {
                        creature.Combatants.Add(enemy);
                        break;
                    }
                }
            }
        };
    }
示例#10
0
    private void RemoveStructureClicked()
    {
        Loc.Current.Get <CursorController>().SetSelectionPreference(SelectionPreference.Cell);
        Loc.Current.Get <CursorController>().SetSprite(Loc.GetSpriteStore().GetSprite(DefaultRemoveIcon), (cell) => cell.Structures != null);

        CellClickOrder = cells =>
        {
            foreach (var cell in cells)
            {
                if (cell.Structures.Count > 0)
                {
                    var structure = cell.Structures.First();

                    if (Loc.GetFactionController().PlayerFaction.AvailableTasks.OfType <RemoveStructure>().Any(t => t.StructureToRemove == structure))
                    {
                        continue;
                    }
                    Loc.GetFactionController().PlayerFaction.AddTask(new RemoveStructure(structure));
                }
            }
        };
    }
示例#11
0
    private void MoveClicked(IEnumerable <CreatureData> creatures)
    {
        Loc.Current.Get <CursorController>().SetSelectionPreference(SelectionPreference.Cell);
        Loc.Current.Get <CursorController>().SetSprite(Loc.GetSpriteStore().GetSprite(OrderSelectionController.MoveIcon), (cell) => cell.TravelCost > 0);

        Loc.GetGameController().OrderSelectionController.CellClickOrder = cells =>
        {
            foreach (var creature in creatures)
            {
                if (creature.InCombat)
                {
                    creature.Combatants.Clear();
                }
                var cell = cells[0];

                var faction = creature.Faction;
                var task    = new Move(cell);
                creature.AbandonTask();
                creature.Task = task;
            }
        };
    }
示例#12
0
 public void Initialize()
 {
     Sprite = Loc.GetSpriteStore().GetSprite(ZoneSprite);
 }
示例#13
0
 private void SetCursorAndSpriteForZone(string sprite)
 {
     Loc.Current.Get <CursorController>().SetSprite(Loc.GetSpriteStore().GetSprite(sprite), CanAddCellToZone);
     Loc.Current.Get <CursorController>().SetSelectionPreference(SelectionPreference.Cell);
 }
示例#14
0
 public void Start()
 {
     Image.sprite   = Loc.GetSpriteStore().GetSprite("Blank");
     Clothes.sprite = Loc.GetSpriteStore().GetSprite("Blank");
     Text.text      = "__";
 }