Exemple #1
0
    public bool OnCommodityPlaced(Commodity _commodity, bool force = false)
    {
        if (owner != null && (/*(!force && !owner.available) || */ !owner.CheckCanLoad(_commodity)))
        {
            return(false);
        }

        UITarget otherTarget = _commodity.target;

        if (otherTarget != null)
        {
            otherTarget.UnloadCommodity();
        }
        if (loadedCommodity != null)
        {
            Commodity lastLoadedCommodity = loadedCommodity;
            UnloadCommodity();
            if (!force && otherTarget != null)
            {
                otherTarget.OnCommodityPlaced(lastLoadedCommodity);
            }
        }
        if (_commodity.lastTarget == null || stockID != _commodity.target.stockID)
        {
            _commodity.lastTarget = otherTarget;
        }
        _commodity.target = this;
        loadedCommodity   = _commodity;
        onCommodityPlaced?.Invoke(loadedCommodity);
        CommoditiesService.instance.RegisterCommodityPlacement();
        return(true);
    }
Exemple #2
0
    private void FixedUpdate()
    {
        pointerEventData          = new PointerEventData(eventSystem);
        pointerEventData.position = Input.mousePosition;

        List <RaycastResult> results = new List <RaycastResult>();

        UIService.instance.graphicRaycatser.Raycast(pointerEventData, results);

        foreach (RaycastResult result in results)
        {
            if (result.gameObject.CompareTag("Target"))
            {
                UITarget target = result.gameObject.GetComponent <UITarget>();
                if (highlightedTarget != target)
                {
                    if (highlightedTarget != null)
                    {
                        highlightedTarget.SetHighlight(false);
                    }
                    highlightedTarget = target;
                }
                target.SetHighlight(true);
                return;
            }
        }
        if (highlightedTarget != null)
        {
            highlightedTarget.SetHighlight(false);
            highlightedTarget = null;
        }
    }
Exemple #3
0
 public void GetDistributedTo(UITarget _target)
 {
     startDistance    = Vector2.Distance(_target.rect.position, commodity.rect.position);
     startSize        = commodity.rect.sizeDelta;
     commodity.target = _target;
     commodity.StartLerp();
     selfDestructPending = true;
 }
Exemple #4
0
        /// <summary>
        /// 发送终止信号并等待所有任务完成后向窗体发送关闭信号,返回值为窗体的Closing事件参数的Cancel应该发送的值,以确保在所有UI线程完成后再关闭本窗体。
        /// </summary>
        /// <returns>窗体的Closing事件参数的Cancel应该发送的值</returns>
        public bool SingalAllStopAndWaitForClose()
        {
            Task.Factory.StartNew(() =>
            {
                this.SingalAllStopAndWait();
                canClose = true;
                this.DoSafeUIWork(() => UITarget.Close());
            });

            return(!canClose);
        }
Exemple #5
0
    void UpdateGuideAlpha(UITarget target)
    {
        Vector3 targetDir = target.targetTransform.position - mainCamera.transform.position;
        float   angle     = Mathf.Abs(Vector3.SignedAngle(targetDir, mainCamera.transform.forward, Vector3.up));

        Color colour = target.guideTransform.GetComponent <Renderer>().material.color;

        colour.a = Mathf.Clamp((1f / 180f) * angle, 0.02f, 1.0f);

        target.guideTransform.GetComponent <Renderer>().material.color = colour;
    }
Exemple #6
0
    void UpdateGuideTransform(UITarget target)
    {
        //scale
        float scale = Vector3.Distance(target.targetTransform.position, mainCamera.transform.position);

        target.guideTransform.localScale = new Vector3(ScaleMultiplier * scale, ScaleMultiplier / 5f, ScaleMultiplier * scale);

        //position
        Vector3 pos = mainCamera.transform.position;

        pos.y = target.targetTransform.position.y;
        target.guideTransform.position = pos;

        //Rotation
        target.guideTransform.rotation = Quaternion.identity;
    }
Exemple #7
0
    void Start()
    {
        Canvasx = Parent.GetComponent <RectTransform>().rect.width;
        Canvasy = Parent.GetComponent <RectTransform>().rect.height;


        GameObject[] Enemies = GameObject.FindGameObjectsWithTag("Enemy");
        foreach (GameObject enemy in Enemies)
        {
            EnemiesList.Add(enemy);
        }



        foreach (GameObject enemy in EnemiesList)
        {
            OnCameraPosition = cam.WorldToViewportPoint(enemy.transform.position);
            Vector3 OnCanvasPosition = new Vector3(OnCameraPosition.x, OnCameraPosition.y, 0);
            if (OnCameraPosition.x >= 0 && OnCameraPosition.x <= 1 && OnCameraPosition.y >= 0 && OnCameraPosition.y <= 1)
            {
                counter++;
                currentMarker = (Instantiate(uIMarker, Parent.transform, false));
                currentMarker.GetComponent <UiMarkersController>().Identifier = counter;
                UITarget currentUITarget = new UITarget();
                currentUITarget.isActive        = true;
                currentUITarget.standardSprite  = normal;
                currentUITarget.uimarker        = currentMarker;
                currentUITarget.empty           = emptySprite;
                currentUITarget.red             = redSprite;
                currentUITarget.Target          = enemy;
                currentUITarget.cam             = cam;
                currentUITarget.classCanvasx    = Canvasx;
                currentUITarget.classCanvasy    = Canvasy;
                currentUITarget.classIdentifier = counter;
                uIMarkers.Add(currentUITarget);
                currentRectTransform = currentMarker.gameObject.GetComponent <RectTransform>();
                currentRectTransform.SetInsetAndSizeFromParentEdge(RectTransform.Edge.Left, OnCanvasPosition.x * Canvasx - 25, 50);
                currentRectTransform.SetInsetAndSizeFromParentEdge(RectTransform.Edge.Bottom, OnCanvasPosition.y * Canvasy - 25, 50);
                currentRectTransform.localEulerAngles = new Vector3(0, 0, 0);
            }
        }
        DataHandling.forIdentifing = uIMarkers;
    }
Exemple #8
0
        public GameObject RegisterFollowUI(Renderer targetRend, GameObject followerUIObj, Transform targetTrans, float vOffset = 0f)
        {
            var go = Instantiate(followerUIObj) as GameObject;
            var t  = go.GetComponent <RectTransform>();

            var obj = new UITarget()
            {
                followerObj       = go,
                followerTrans     = t,
                followTargetRend  = targetRend,
                followTargetTrans = targetTrans,
                vertOffset        = vOffset,
            };

            t.SetParent(canvasRectT);
            t.localScale = Vector3.one;

            uiTargets.Add(obj);

            return(go);
        }
    public static UITarget GetGazeEnemy()
    {
        float    bAngle = float.MaxValue;
        UITarget ret    = null;

        foreach (UITarget target in targets)
        {
            if (target.type == UITarget.TargetType.Enemy)
            {
                Vector3 vTo   = target.transform.position - Camera.main.transform.position;
                float   angle = Quaternion.Angle(Quaternion.LookRotation(Camera.main.transform.forward), Quaternion.LookRotation(vTo));

                if (angle < bAngle)
                {
                    bAngle = angle;
                    ret    = target;
                }
            }
        }

        return(ret);
    }
Exemple #10
0
    public void OnEndDrag(PointerEventData pointerEventData)
    {
        if (!draggable)
        {
            return;
        }
        List <RaycastResult> results = new List <RaycastResult>();

        UIService.instance.graphicRaycatser.Raycast(pointerEventData, results);

        foreach (RaycastResult result in results)
        {
            if (result.gameObject.CompareTag("Target"))
            {
                UITarget targetScript     = result.gameObject.GetComponent <UITarget>();
                Stock    stockCast        = targetScript.owner as Stock;
                Stock    currentStockCast = target.owner as Stock;
                if ((!ScenarioService.instance.inProductionPhase &&
                     //No direct movement from one base stock to another base stock
                     ((targetScript.stockID != target.stockID && stockCast != null && currentStockCast != null) ||
                      //No direct movement from left to right or from right to left
                      Mathf.Sign(target.stockID) != Mathf.Sign(targetScript.stockID) ||
                      //No direct movement from trade stock to a base stock from which the commodity doesn't orginate
                      (currentStockCast == null && stockCast != null && targetScript.stockID != lastTarget.stockID) ||
                      //No direct movement from base stock to trade stock if another base stock
                      //already has at least one commodity of its own inside
                      (currentStockCast != null && stockCast == null && target.stockID >= 0 &&
                       target.stockID != ExchangeService.instance.otherStockIndex && ExchangeService.instance.otherStockIndex != -1))))
                {
                    break;
                }
                if (targetScript.OnCommodityPlaced(this))
                {
                    break;
                }
            }
        }
        StartLerp();
    }
 void Start()
 {
     currentRectTransform = GetComponent <RectTransform>();
     currentMarker        = gameObject.GetComponent <Image>();
     markerImage          = currentMarker.sprite;
     currentUISprite      = markerImage;
     foreach (UITarget enemy in DataHandling.forIdentifing)
     {
         if (enemy.classIdentifier == Identifier)
         {
             markerImage          = enemy.standardSprite;
             currentMarker.sprite = markerImage;
             currentUISprite      = markerImage;
             forRelist            = enemy;
             Enemy         = enemy.Target;
             cam           = enemy.cam;
             Canvasx       = enemy.classCanvasx;
             Canvasy       = enemy.classCanvasy;
             emptyUISprite = enemy.empty;
             redUISprite   = enemy.red;
         }
     }
 }