Esempio n. 1
0
    public BuildingCoverMaskGroup[,] BuildingCoverMaskMatrix_IncludingPreview; // column, row

    public CityInventory(
        string inventoryName,
        DragAreaIndicator dragAreaIndicator,
        DragProcessor dragProcessor,
        int gridSize,
        int rows,
        int columns,
        bool x_Mirror,
        bool z_Mirror,
        bool unlockedPartialGrids,
        int unlockedGridCount,
        bool dragOutDrop,
        KeyDownDelegate rotateItemKeyDownHandler,
        InstantiatePrefabDelegate instantiateCityInventoryGridHandler,
        InstantiatePrefabDelegate instantiateCityInventoryVirtualOccupationQuadHandler
        ) : base(inventoryName, dragAreaIndicator, gridSize, rows, columns, x_Mirror, z_Mirror, unlockedPartialGrids, unlockedGridCount, dragOutDrop,
                 rotateItemKeyDownHandler,
                 (gridPos) => new GridPosR(gridPos.x + columns / 2, gridPos.z + rows / 2, gridPos.orientation),
                 (gp_matrix) => new GridPosR(gp_matrix.x - columns / 2, gp_matrix.z - rows / 2, gp_matrix.orientation),
                 (gridPos) => new GridPos(gridPos.x, gridPos.z),
                 (gp_matrix) => new GridPos(gp_matrix.x, gp_matrix.z)
                 )
    {
        DragProcessor = dragProcessor;
        InstantiateCityInventoryGridHandler = instantiateCityInventoryGridHandler;
        InstantiateCityInventoryVirtualOccupationQuadHandler = instantiateCityInventoryVirtualOccupationQuadHandler;
        InventoryValidMatrix    = new bool[columns, rows];
        BuildingCoverMaskMatrix = new BuildingCoverMaskGroup[columns, rows];
        BuildingCoverMaskMatrix_IncludingPreview = new BuildingCoverMaskGroup[columns, rows];
    }
Esempio n. 2
0
 /// <summary>
 /// Initialize the uiInventory manager.
 /// </summary>
 /// <param name="inventoryName">The inventory name</param>
 /// <param name="dragAreaIndicator"></param>
 /// <param name="dragProcessor"></param>
 /// <param name="canvasDistance">the distance of canvas</param>
 /// <param name="gridSize">the gridSize of inventory</param>
 /// <param name="rows">how many rows in total</param>
 /// <param name="columns">how many columns in total</param>
 /// <param name="x_Mirror">is X axis mirrored</param>
 /// <param name="z_Mirror">is Z axis mirrored</param>
 /// <param name="unlockedPartialGrids">is there any grid locked at the beginning</param>
 /// <param name="unlockedGridCount">how many grids are locked at the beginning</param>
 /// <param name="dragOutDrop">allows item to be dragged and dropped outside inventory</param>
 /// <param name="enableScreenClamp">enable inventory UI panel's screen-clamping</param>
 /// <param name="enableLog">enable inventory log</param>
 /// <param name="toggleUIInventoryKeyDownHandler">This handler should return a signal which toggles the uiInventory(e.g. return Input.GetKeyDown(KeyCode.B);)</param>
 /// <param name="rotateItemKeyDownHandler">This handler should return a signal which rotates the uiInventory item(e.g. return Input.GetKeyDown(KeyCode.R);)</param>
 /// <param name="instantiateUIInventoryGridHandler">This handler should instantiate a prefab with UIInventoryGrid component.</param>
 /// <param name="instantiateUIInventoryItemHandler">This handler should instantiate a prefab with UIInventoryItem component.</param>
 /// <param name="instantiateUIInventoryItemGridHandler">This handler should instantiate a prefab with UIInventoryItemGrid component.</param>
 /// <param name="instantiateUIInventoryItemVirtualOccupationQuadHandler">This handler should instantiate a image for indicating the occupation.</param>
 public UIInventory(
     string inventoryName,
     DragAreaIndicator dragAreaIndicator,
     DragProcessor dragProcessor,
     float canvasDistance,
     int gridSize, int rows, int columns, bool x_Mirror, bool z_Mirror,
     bool unlockedPartialGrids, int unlockedGridCount, bool dragOutDrop, bool enableScreenClamp, bool enableLog,
     KeyDownDelegate toggleUIInventoryKeyDownHandler,
     KeyDownDelegate rotateItemKeyDownHandler,
     InstantiatePrefabDelegate instantiateUIInventoryGridHandler,
     InstantiatePrefabDelegate instantiateUIInventoryItemHandler,
     InstantiatePrefabDelegate instantiateUIInventoryItemGridHandler,
     InstantiatePrefabDelegate instantiateUIInventoryItemVirtualOccupationQuadHandler
     ) : base(inventoryName, dragAreaIndicator, gridSize, rows, columns, x_Mirror, z_Mirror, unlockedPartialGrids, unlockedGridCount, dragOutDrop, enableLog, rotateItemKeyDownHandler,
              (gridPos) => new GridPosR(gridPos.x, -gridPos.z),
              (gridPos_matrix) => new GridPosR(gridPos_matrix.x, -gridPos_matrix.z),
              (gridPos) => new GridPosR(gridPos.x, -gridPos.z),
              (gridPos_matrix) => new GridPosR(gridPos_matrix.x, -gridPos_matrix.z))
 {
     DragProcessor  = dragProcessor;
     CanvasDistance = canvasDistance;
     ToggleUIInventoryKeyDownHandler       = toggleUIInventoryKeyDownHandler;
     InstantiateUIInventoryGridHandler     = instantiateUIInventoryGridHandler;
     InstantiateUIInventoryItemHandler     = instantiateUIInventoryItemHandler;
     InstantiateUIInventoryItemGridHandler = instantiateUIInventoryItemGridHandler;
     InstantiateUIInventoryItemVirtualOccupationQuadHandler = instantiateUIInventoryItemVirtualOccupationQuadHandler;
     EnableScreenClamp = enableScreenClamp;
 }
Esempio n. 3
0
 public void Init(MechaInfo mechaInfo)
 {
     DragProcessor = DragManager.Instance.GetDragProcessor <MechaComponent>();
     Clear();
     SetShown(false);
     DragArea.DragAreaName = mechaInfo.MechaEditorInventory.DragArea.DragAreaName;
     MechaEditorAreaGridRoot.Init();
 }
Esempio n. 4
0
        public GraphicalComponentUserControl()
        {
            _graphicalComponent = new GraphicalComponent();
            _dragProcessor      = new DragProcessor();

            InitializeComponent();
            /* Handlers for application state modifications from UI changes */
            Loaded      += (_, __) => OnLoaded();
            SizeChanged += (_, __) => OnSizeChanged();
        }
Esempio n. 5
0
 private void InitDragProcessor()
 {
     DragProcessor_UIInventoryItem = new DragProcessor <UIInventoryItem>();
     DragProcessor_UIInventoryItem.Init(
         camera: GameManager.Instance.UICamera,
         layerMask: 1 << UIInventoryItemGridPrefab.layer,
             getScreenMousePositionHandler: (out Vector2 mouseScreenPos) =>
             {
             mouseScreenPos = Input.mousePosition;
             return(true);
             },
             screenMousePositionToWorldHandler: UIInventory_Panel.UIInventoryDragAreaIndicator.GetMousePosOnThisArea,
             onBeginDrag: null,
             onCancelDrag: null);
 }
Esempio n. 6
0
    private void Init()
    {
        foreach (Building buildingPrefab in BuildingPrefabList)
        {
            LevelManager.Instance.BuildingPrefabDict.Add(buildingPrefab.BuildingInfo.buildingKey, buildingPrefab);
            LevelManager.Instance.BuildingInfoDict.Add(buildingPrefab.BuildingInfo.buildingKey, buildingPrefab.BuildingInfo);
        }

        DragProcessor <Building> DragProcessor_Building = new DragProcessor <Building>();

        DragProcessor_Building.Init(
            UIManager.Instance.UICamera,
            BuildingLayerMask.value,
            (out Vector2 mouseScreenPos) =>
        {
            mouseScreenPos = Input.mousePosition;
            return(true);
        },
            City.CityEditAreaIndicator.GetMousePosOnThisArea,
            delegate(Building building, Collider collider, DragProcessor dragProcessor) { },
            delegate(Building building, Collider collider, DragProcessor dragProcessor) { }
            );
        CityInventory = new CityInventory(
            InventoryName,
            City.CityEditAreaIndicator,
            DragProcessor_Building,
            gridSize: ConfigManager.GRID_SIZE, // UI units
            rows: Rows,
            columns: Columns,
            x_Mirror: false,
            z_Mirror: false,
            unlockedPartialGrids: false,
            unlockedGridCount: Rows * Columns,
            dragOutDrop: false,
            rotateItemKeyDownHandler: () => Input.GetKeyDown(KeyCode.R), // Rotate building
            instantiateCityInventoryVirtualOccupationQuadHandler: (parent) => Instantiate(CityInventoryVirtualOccupationQuadPrefab, parent).GetComponent <CityInventoryVirtualOccupationQuad>(),
            instantiateCityInventoryGridHandler: (parent) => Instantiate(CityInventoryGridPrefab, parent).GetComponent <CityInventoryGrid>()
            );

        CityInventory.ToggleDebugKeyDownHandler = () => Input.GetKeyDown(KeyCode.BackQuote); // Toggle debug log
        City.Init(CityInventory, CityConfig);
        CityInventory.City = City;
    }
    public void Init()
    {
        DragManager.Instance.Init(
            () => Input.GetMouseButtonDown(0),
            () => Input.GetMouseButtonUp(0),
            Debug.LogError,
            LayerManager.Instance.LayerMask_DragAreas);
        DragProcessor <Building> dragProcessor_Building = new DragProcessor <Building>(); // building里面不包含draggable组件,因此不响应拖拽事件

        dragProcessor_Building.Init(
            CameraManager.Instance.MainCamera,
            LayerManager.Instance.LayerMask_BuildingHitBox,
            (out Vector2 mouseScreenPos) =>
        {
            mouseScreenPos = Input.mousePosition;
            return(true);
        }
            ,
            ScreenMousePositionToWorld_CityInventory,
            delegate(Building building, Collider collider, DragProcessor dragProcessor) { },
            delegate(Building building, Collider collider, DragProcessor dragProcessor) { }
            );
    }
 public void Init(UIInventory uiInventory)
 {
     UIInventory   = uiInventory;
     DragProcessor = DragManager.Instance.GetDragProcessor <UIInventoryItem>();
 }
        /// <summary>
        /// Add drag gesture on link end
        /// </summary>
        /// <param name="con"></param>
        /// <param name="thumb"></param>
        private void AddGesture(Connection con, UIElement thumb)
        {
            var begsurface = TouchSurfaceWPF.GetOrCreateTouchSurface(thumb);
            var drag = new DragProcessor() { UseMinimalDisplacement = false };
            drag.GestureStart += delegate(object sender, GestureEventArgs arg)
            {

                var data = new Dictionary<string, object>();
                data.Add("connector", con);
                data.Add("thumb", sender);
                var dd = DragAndDrop.StartDragDrop(drag, new DragDropParameters { Data = data }, thumb);

                if (sender == con.BeginThumb)
                {
                    con.Source = null;
                    con.SourceAnchor = new TargetAnchor() { Mode = TargetAnchor.AnchorMode.FreeAnchor, TargetPoint = new SofthinkCore.UI.Controls.Connector.Anchor { Point = arg.Transform.ConvertToVisual(conlayer).Center /*arg.GetCurrentPositionForElement(conlayer)*/ } };
                }
                else
                {
                    con.Sink = null;
                    con.SinkAnchor = new TargetAnchor() { Mode = TargetAnchor.AnchorMode.FreeAnchor, TargetPoint = new SofthinkCore.UI.Controls.Connector.Anchor { Point = arg.Transform.ConvertToVisual(conlayer).Center /*arg.GetCurrentPositionForElement(conlayer)*/ } };
                }

                con.IsHitTestVisible = false;

                dd.Cancel += delegate(object s, DragDropArgs e)
                {
                    con.IsHitTestVisible = true;
                };
            };

            drag.GestureMove += delegate(object sender, GestureEventArgs arg)
            {
                if (sender == con.BeginThumb)
                {
                    con.SourceAnchor.TargetPoint = new SofthinkCore.UI.Controls.Connector.Anchor { Point = arg.Transform.ConvertToVisual(conlayer).Center /*arg.GetCurrentPositionForElement(conlayer)*/ };
                }
                else
                {
                    con.SinkAnchor.TargetPoint = new SofthinkCore.UI.Controls.Connector.Anchor { Point = arg.Transform.ConvertToVisual(conlayer).Center /*arg.GetCurrentPositionForElement(conlayer)*/ };
                }
            };

            begsurface.AddGestureProcessor(drag);
        }
 public void Init(CityInventory cityInventory)
 {
     CityInventory = cityInventory;
     DragProcessor = DragManager.Instance.GetDragProcessor <Building>();
 }
 public void Init(Backpack backpack)
 {
     Backpack      = backpack;
     DragArea      = new DragArea(backpack.DragArea.DragAreaName);
     DragProcessor = DragManager.Instance.GetDragProcessor <BackpackItem>();
 }
    public void Init()
    {
        DragProcessor <BackpackItem> dragProcessor_BackpackItem = new DragProcessor <BackpackItem>();

        dragProcessor_BackpackItem.Init(
            UIManager.Instance.UICamera,
            LayerManager.Instance.LayerMask_BackpackItemGrid,
            (out Vector2 mouseScreenPos) =>
        {
            if (ControlManager.Instance.BuildingInputActionEnabled)
            {
                mouseScreenPos = ControlManager.Instance.Building_MousePosition;
                return(true);
            }
            else
            {
                mouseScreenPos = Vector2.zero;
                return(false);
            }
        },
            ScreenMousePositionToWorld_BackpackDragArea,
            delegate(BackpackItem bi, Collider collider, DragProcessor dragProcessor) { },
            delegate(BackpackItem bi, Collider collider, DragProcessor dragProcessor) { }
            );

        DragProcessor <MechaComponentDropSprite> dragProcessor_MechaComponentDropSprite = new DragProcessor <MechaComponentDropSprite>();

        dragProcessor_MechaComponentDropSprite.Init(
            CameraManager.Instance.MainCamera,
            LayerManager.Instance.LayerMask_ItemDropped,
            (out Vector2 mouseScreenPos) =>
        {
            if (ControlManager.Instance.BuildingInputActionEnabled)
            {
                mouseScreenPos = ControlManager.Instance.Building_MousePosition;
                return(true);
            }
            else
            {
                mouseScreenPos = Vector2.zero;
                return(false);
            }
        },
            ScreenMousePositionToWorld_MechaEditorInventory,
            delegate(MechaComponentDropSprite mcds, Collider collider, DragProcessor dragProcessor)
        {
            Ray ray = CameraManager.Instance.MainCamera.ScreenPointToRay(ControlManager.Instance.Building_MousePosition);
            MechaComponentInfo mci = mcds.MechaComponentInfo.Clone();
            ClientBattleManager.Instance.PlayerMecha.MechaInfo.AddMechaComponentInfo(mci, GridPosR.Zero);
            MechaComponent mc = ClientBattleManager.Instance.PlayerMecha.MechaComponentDict[mci.GUID];
            GridPos gp        = GridUtils.GetGridPosByMousePos(ClientBattleManager.Instance.PlayerMecha.transform, ray, Vector3.up, ConfigManager.GridSize);
            mci.InventoryItem.SetGridPosition(gp);
            DragManager.Instance.CurrentDrag = mc.GetComponent <Draggable>();
            DragManager.Instance.CurrentDrag.SetOnDrag(true, collider, dragProcessor);
            mcds.PoolRecycle();
        },
            delegate(MechaComponentDropSprite mcds, Collider collider, DragProcessor dragProcessor) { }
            );

        DragManager.Instance.Init(
            () => ControlManager.Instance.Building_MouseLeft.Down,
            () => ControlManager.Instance.Building_MouseLeft.Up,
            Debug.LogError,
            LayerManager.Instance.LayerMask_DragAreas);
        DragProcessor <MechaComponent> dragProcessor_MechaComponent = new DragProcessor <MechaComponent>();

        dragProcessor_MechaComponent.Init(
            CameraManager.Instance.MainCamera,
            LayerManager.Instance.LayerMask_ComponentHitBox_Player,
            (out Vector2 mouseScreenPos) =>
        {
            if (ControlManager.Instance.BuildingInputActionEnabled)
            {
                mouseScreenPos = ControlManager.Instance.Building_MousePosition;
                return(true);
            }
            else
            {
                mouseScreenPos = Vector2.zero;
                return(false);
            }
        }
            ,
            ScreenMousePositionToWorld_MechaEditorInventory,
            delegate(MechaComponent mc, Collider collider, DragProcessor dragProcessor) { },
            delegate(MechaComponent mc, Collider collider, DragProcessor dragProcessor) { }
            );
    }