Пример #1
0
        public NewObjectForm(IObjectController controller)
        {
            InitializeComponent();

            rightNextButton.Click      += nextButton_Click;
            middlePreviousButton.Click += previousButton_Click;
            leftCancelButton.Click     += cancelButton_Click;
            middleCancelButton.Click   += cancelButton_Click;
            rightFinishButton.Click    += finishButton_Click;

            _controller = controller;
            objectSelectionPanel.Visible = true;
            featuresPanel.Visible        = false;
            positionPanel.Visible        = false;
            materialPanel.Visible        = false;

            _currentPanel            = objectSelectionPanel;
            _currentPanel.Controller = _controller;

            topLabel.Text = Properties.Strings.AddObjectMessageEmpty;

            SetController();

            controller.UpdateModelFromUI = () => {
                ChooseOrder();
                UpdateForModel();
                materialPanel.UpdateFromModel();
            };
            ChooseOrder();
            foreach (var panel in _order)
            {
                panel.UpdateFromModel();
            }
        }
Пример #2
0
 private void ObjectChosen(IObjectController chosenObject)
 {
     Debug.Log("CC ObjectChosen");
     isChosenObject   = true;
     lastChosenObject = chosenObject;
     ShowCreateButton();
 }
Пример #3
0
    public static IObjectController CreateObjectController(ObjectSettings settings)
    {
        IObjectController result = (settings.PINK ? new PinkObject() : (IObjectController) new BlueObject());

        result.Initialise(settings);
        return(result);
    }
Пример #4
0
 private void SetController(IObjectController controller)
 {
     _controller = controller;
     foreach (var panel in _order)
     {
         panel.Controller = _controller;
     }
 }
Пример #5
0
        public EditObjectForm(IObjectController controller)
        {
            InitializeComponent();

            FormClosed                 += EditObjectForm_FormClosed;
            rightNextButton.Click      += nextButton_Click;
            middlePreviousButton.Click += previousButton_Click;
            leftCancelButton.Click     += cancelButton_Click;
            leftCancelButton.Text       = "OK";
            middleCancelButton.Click   += cancelButton_Click;
            middleCancelButton.Text     = "OK";
            rightFinishButton.Click    += finishButton_Click;

            _controller = controller;

            featuresPanel.Visible = false;
            positionPanel.Visible = false;
            materialPanel.Visible = false;

            var model        = _controller.GetModel();
            var featureTypes = new List <Type> {
                typeof(Cylinder), typeof(Rectangle), typeof(Cuboid)
            };

            if (featureTypes.Contains(model.GetType()))
            {
                _order = new List <IPanelBase> {
                    featuresPanel, positionPanel, materialPanel
                }
            }
            ;
            else
            {
                _order = new List <IPanelBase> {
                    positionPanel, materialPanel
                }
            };

            _currentPanel = _order[0];
            _currentPanel.ShowPanel();

            SetController(controller);
            foreach (var panel in _order)
            {
                panel.UpdateFromModel();
            }

            topLabel.Text = String.Format(Properties.Strings.EditObjectMessage, _controller.GetModel().ToString().ToLower());
        }
Пример #6
0
        Vector3 CalcOffset(IObjectController selfObjectController, IObjectController otherObjectController, Vector3 offset)
        {
            Vector3 forcedOffset = Vector3.zero;

            var otherToSelfOffset = selfObjectController.transform.position - otherObjectController.transform.position;

            if (Mathf.Abs(otherToSelfOffset.x) < Mathf.Abs(offset.x))
            {
                forcedOffset = otherToSelfOffset + new Vector3(offset.x * selfObjectController.GetDirectionInt(), offset.y, offset.z);
            }
                    
            forcedOffset.y = 0;
            forcedOffset.z = 0;
            
            return forcedOffset;
        }
Пример #7
0
        public bool Hurt(DamageData damageData, HurtPart hurtPart)
        {
            IObjectController ownerObjectController = damageData.owner.GetComponent<IObjectController>();
            
            // 强制位移 add by TangJian 2019/4/30 10:29
            Vector3 forcedOffset = Vector3.zero;
            if(damageData.useForcedOffset && ownerObjectController != null && ObjectController is RoleController)
            {
                forcedOffset = CalcOffset(ownerObjectController, ObjectController, damageData.forcedOffset);

                // 如果是角色则执行移动 add by TangJian 2019/5/10 17:54
                (ObjectController as RoleController)?.DoMoveBy(forcedOffset, damageData.forcedOffsetDuration).SetEase(Ease.OutSine);
            }
            
            // 播放特效
            if (damageData is HitAble selfHitAble && ObjectController is HurtAble hurtAble)
            {
                Vector3 rendererOffset = Vector3.zero;
                if (damageData.effectOrientation.z > 0)
                {
                    rendererOffset.z += 0.1f;
                }
                else
                {
                    rendererOffset.z -= 0.1f;
                }
                     
                Vector3 worldPos;
                if (TryGetHitPos(out worldPos))
                {
                    // 打击特效
                    BothAnimManager.Instance.PlayHurtEffect(selfHitAble.GetHitEffectType(), hurtPart.MatType, worldPos + rendererOffset + forcedOffset, damageData.direction.x > 0 ? Direction.Right : Direction.Left, 0, damageData.targetMoveBy);   
                }
                else
                {
                    // 打击特效
                    BothAnimManager.Instance.PlayHurtEffect(selfHitAble.GetHitEffectType(), hurtPart.MatType, damageData.collidePoint + rendererOffset + forcedOffset, damageData.direction.x > 0 ? Direction.Right : Direction.Left, 0, damageData.targetMoveBy);
                }
                AudioManager.Instance.PlayEffect(selfHitAble.GetHitEffectType(), hurtPart.MatType, worldPos + rendererOffset + forcedOffset);
            }

            return true;
        }
Пример #8
0
    public void Activate(AttachmentTrigger trigger)
    {
        activated = true;

        if (trigger != null)
        {
            attachedObjectTrigger   = trigger;
            attachedObject          = trigger.GetOwningObject();
            attachedObjectMover     = attachedObject.GetObjectMover();
            attachedObjectGrabbedBy = attachedObjectMover.GetGrabbedBy();
        }

        if (attachedObject != null && attachedObjectMover && attachedObjectGrabbedBy)
        {
            attachedObject.SetBusy(true);
            inlineRot = GetLocalInlineRotation(attachedObjectMover.transform);
            attachedObjectGrabbedBy.Release();
            //attachedObjectMover.SetMoveMode(2);
            //attachedObjectGrabbedBy.Grab(attachedObjectMover);
            moveGuide.SetParent(this.transform);
            moveGuide.SetPositionAndRotation(attachedObjectTrigger.transform.position, attachedObjectTrigger.transform.rotation);
            attachedObject.KillCollision();
            attachedObject.KillPhysics();
            attachedObject.IgnoreCollision(owningObject.GetGameObject().GetComponent <BoxCollider>(), true);
            attachedObjectMover.transform.localRotation = inlineRot;
            //moveObjectOffeset = Vector3.Magnitude(attachedObjectMover.transform.position - attachedObjectGrabbedBy.transform.position);
            attachedObjectMover.transform.SetParent(moveGuide);

            //attachedObjectMover.transform.SetParent(moveGuide);
            tracking = true;
            owningObject.SetBusy(true);
        }
        else
        {
            Deactivate();
        }
    }
Пример #9
0
 public HitAndHurtController(IObjectController objectController)
 {
     this.ObjectController = objectController;
 }
Пример #10
0
 public void Delete(IObjectController someObject)
 {
 }
Пример #11
0
 public void Create(IWallController wall, IObjectController someObject)
 {
     someObject.Init(wall.GetCentre());
 }