Esempio n. 1
0
 public static ScrollItemWidget Setup(ScrollItemWidget template, Func<bool> isSelected, Action onClick)
 {
     var w = template.Clone() as ScrollItemWidget;
     w.IsVisible = () => true;
     w.IsSelected = isSelected;
     w.OnClick = onClick;
     return w;
 }
Esempio n. 2
0
        void LoadGames(ScrollItemWidget gameTemplate, ScrollItemWidget newTemplate, World world)
        {
            gameList.RemoveChildren();
            if (isSavePanel)
            {
                var item = ScrollItemWidget.Setup(newTemplate,
                                                  () => selectedSave == null,
                                                  () => Select(null),
                                                  () => { });
                gameList.AddChild(item);
            }

            var savePaths = Directory.GetFiles(baseSavePath, "*.orasav", SearchOption.AllDirectories)
                            .OrderByDescending(p => File.GetLastWriteTime(p))
                            .ToList();

            foreach (var savePath in savePaths)
            {
                games.Add(savePath);

                // Create the item manually so the click handlers can refer to itself
                // This simplifies the rename handling (only needs to update ItemKey)
                var item = gameTemplate.Clone() as ScrollItemWidget;
                item.ItemKey    = savePath;
                item.IsVisible  = () => true;
                item.IsSelected = () => selectedSave == item.ItemKey;
                item.OnClick    = () => Select(item.ItemKey);

                if (isSavePanel)
                {
                    item.OnDoubleClick = () => Save(world);
                }
                else
                {
                    item.OnDoubleClick = Load;
                }

                var title = Path.GetFileNameWithoutExtension(savePath);
                var label = item.Get <LabelWithTooltipWidget>("TITLE");
                WidgetUtils.TruncateLabelToTooltip(label, title);

                var date = File.GetLastWriteTime(savePath).ToString("yyyy-MM-dd HH:mm:ss");
                item.Get <LabelWidget>("DATE").GetText = () => date;

                gameList.AddChild(item);
            }
        }