void DoPanelClose(VehicleDetailsPanelView panelToClose)
    {
        string vid  = panelToClose.GetVehicleId();
        var    disp = panelToClose.Close();

        disp.Subscribe(_ =>
        {
            if (_panels.TryRemove(vid, out var panel))
            {
                panel.Dispose();
                //Debug.Log("dispose pannello _panels.Count: " + _panels.Count);
                _scoreLabel.text = "Panels: " + _panels.Count.ToString();
                RemoveOldPanels();

/*
 *              Vehicle3D vehicle3d = _vehicles3D.GetItem(vid);
 *              _vehicles3D.RemoveItem(vid);
 *              vehicle3d?.Dispose();
 */
            }
        });
    }
    void OpenPanel(PanelOpenSignal signal)
    {
        //Debug.Log("[OpenPanel]");
        var v = signal.SelectedVehicle;

        VehicleDetailsPanelView result = null;

        if (_panels.ContainsKey(v.Id))
        {
            result = _panels[v.Id];
        }

        if (result != null)
        {
            //Debug.Log("panello trovato");

            if (result.Closing())
            {
                //Debug.Log("panello in chiusura, lo riapro");
                result.Show();
            }
            else
            {
                //Debug.Log("panello da chiudere");
                DoPanelClose(result);
            }
        }
        else
        {
            //Debug.Log("panello da creare e aprire");

            //Debug.Log("_panels.Count: " + _panels.Count);

            VehicleDetailsPanelView newPanel = _panelFactory.Create(v);
            newPanel.transform.SetParent(_canvasTransform);
            newPanel.Show();

            System.Random random = new System.Random();
            int           x      = random.Next(-400, 400);
            int           y      = random.Next(-300, 300);
            newPanel.GetComponent <RectTransform>().anchoredPosition = new Vector2(x, y);

            if (_panels.TryAdd(v.Id, newPanel))
            {
                //Debug.Log("panel added");
            }
            //Debug.Log("after Add: _panels.Count=" + _panels.Count);

/*
 *          if(v.Avm)
 *          {
 *              Vehicle3D vehicle3D = null;
 *              if(v.CodiceFamiglia==model.CodiceFamigliaEnum.EXTRAURBANO)
 *                  vehicle3D = _extraurbanoFactory.Create(v);
 *              else
 *                  vehicle3D = _urbanoFactory.Create(v);
 *
 * //                _vehicles3D.AddItem(v.Id, vehicle3D);
 *          }
 */
        }

        _scoreLabel.text = "Panels: " + _panels.Count.ToString();
        RemoveOldPanels();
    }
Exemplo n.º 3
0
 public PanelCloseSignal(VehicleDetailsPanelView panel)
 {
     Panel = panel;
 }