예제 #1
0
        private void OnActRescanVolumeActivated(object sender, System.EventArgs args)
        {
            TreeIter iter;

            if (!tvVolumes.GetSelectedIter(out iter))
            {
                return;
            }

            Volume oldVolume = tvVolumes.GetVolume(iter);

            WaitFunc <PlatformIO.DriveInfo> IsVolumeConnected = delegate(out PlatformIO.DriveInfo dinf) {
                foreach (PlatformIO.DriveInfo di in PlatformIO.DriveInfo.GetDrives())
                {
                    if (di.IsReady && di.IsMounted &&
                        (di.DriveType.ToVolumeDriveType() == oldVolume.DriveType) &&
                        (di.VolumeLabel == oldVolume.Title))
                    {
                        dinf = di;
                        return(true);
                    }
                }
                dinf = null;
                return(false);
            };

            bool proceed = true;

            PlatformIO.DriveInfo drive;

            if (!IsVolumeConnected(out drive))
            {
                string message = string.Format(S._("Please insert volume '<b>{0}</b>'."), Util.Escape(oldVolume.Title));
                var    wd      = new WaitingDialog <PlatformIO.DriveInfo>(IsVolumeConnected, message);
                wd.Title = S._("Waiting for volume");
                if (wd.Run() == (int)ResponseType.Ok)
                {
                    proceed = true;
                    drive   = wd.Value;
                }
                else
                {
                    proceed = false;
                }
                wd.Destroy();
            }

            if (proceed)
            {
                VolumeScanner vs = new VolumeScanner(database, drive);
                vs.VolumeEditor.Load(oldVolume);
                // remove old volume from the volume treeview and purge all associated data
                vs.NewVolumeAdded += (object o, NewVolumeAddedEventArgs a) => {
                    PurgeVolume(iter);
                };
                // add new volume to the volume treeview
                AddNewVolumeAddedEventHandler(vs);
            }
        }
예제 #2
0
        public WaitingDialog(WaitFunc <T> waitFunc, string message)
        {
            this.waitFunc = waitFunc;
            this.Value    = default(T);
            this.message  = message;
            this.canceled = false;

            BuildGui();
        }
예제 #3
0
    public void Init(NpcInfo info)
    {
        tr        = GetComponent <Transform>();
        mRenderer = GetComponent <SpriteRenderer>();
        Info      = info;
        mAudio    = GetComponent <AudioSource>();

        PopupHandler += HUD_Guest.GetUI;

        waitFunc = ChkBuyLocate;
    }
예제 #4
0
    public static IEnumerator wait(float waitTime, WaitFunc func, int Repeat = 1)
    {
        for (int i = 0; i < Repeat; i++)
        {
            yield return(new WaitForSeconds(waitTime));

            if (func != null)
            {
                func();
            }
        }
    }
예제 #5
0
 public void UpdateTable()
 {
     if (State == -1)
     {
         var AvaibleLears = Deck.Deck.Where(x => !x.GetComponent <PoolObject>().isPooled).Select(x => x.GetComponent <CardObject>().CardLear).Distinct().ToArray();
         if (AvaibleLears.Length > 0)
         {
             NowLear = AvaibleLears[r.Next(0, AvaibleLears.Length)];//or Lears[r.Next(0, 3)];
         }
         State = IdleAwait;
     }
     if (State == MovementEnd)
     {
         foreach (CardObject card in Deck.Deck)
         {
             if (card.OnTable && card.enabled)
             {
                 WaitFunc Remover = delegate()
                 {
                     EasyObjectPool.instance.ReturnObjectToPool(card.gameObject);
                     var AvaibleLears = Deck.Deck.Where(x => !x.GetComponent <PoolObject>().isPooled).Select(x => x.GetComponent <CardObject>().CardLear).Distinct().ToArray();
                     if (AvaibleLears.Length > 0)
                     {
                         NowLear = AvaibleLears[r.Next(0, AvaibleLears.Length)];//or Lears[r.Next(0, 3)];
                     }
                     State = IdleAwait;
                     Score++;
                     ScoreText.GetComponent <Text>().text = Score.ToString();
                 };
                 StartCoroutine(wait(2f, Remover));
                 Deck.Deck.Remove(card);
                 break;
             }
         }
     }
 }
 public WaitDelegate(WaitFunc func)
 {
     m_func = func;
 }