示例#1
0
        /// <summary>
        /// Gem state change handling
        /// </summary>
        /// <param name="gem">Gem whose state has changed</param>
        /// <param name="lastState">Last gem state</param>
        /// <param name="currentState">Current gem state</param>
        protected virtual void OnChangeGemState(Gem gem, GemState lastState, GemState currentState)
        {
            if ((lastState == GemState.Move || lastState == GemState.Swap) && currentState == GemState.Idle)
            {
                GemOnMove--;
                Recalculate.Add(gem);
                if (GemOnMove == 0 && BoardState == BoardState.Move)
                {
                    var first = Recalculate.FirstOrDefault();
                    var two   = Recalculate.LastOrDefault();
                    BoardState = BoardState.Idle;
                    if (!FindMatchesAndDestroy() && lastState == GemState.Swap)
                    {
                        GemSwap(first, two, GemState.Move);
                    }
                }
            }

            if (lastState == GemState.Destroy && currentState == GemState.Idle)
            {
                GemOnDestroy--;
                Gems[gem.XPosition, gem.YPosition].ChangeGemState -= OnChangeGemState;
                Gems[gem.XPosition, gem.YPosition] = null;
                OnGemDestroy();
                if (Bonuses.Count == 0 && GemOnDestroy == 0 && BoardState == BoardState.Destroy)
                {
                    CreateNew();
                }
            }
        }
示例#2
0
        /// <summary>
        /// Gem state changes
        /// </summary>
        /// <param name="state">State</param>
        private void ChangeState(GemState state)
        {
            var lastState = GemState;

            GemState = state;
            OnChangeGemState(this, lastState, GemState);
        }
示例#3
0
 /// <summary>
 /// Swap gem
 /// </summary>
 /// <param name="gemOne">First gem</param>
 /// <param name="gemTwo">Second gem</param>
 /// <param name="state">Gem states</param>
 protected virtual void GemSwap(Gem gemOne, Gem gemTwo, GemState state)
 {
     Gems[gemOne.XPosition, gemOne.YPosition] = gemTwo;
     Gems[gemTwo.XPosition, gemTwo.YPosition] = gemOne;
     GemOnMove += 2;
     BoardState = BoardState.Move;
     gemOne.Swap(gemTwo, state);
 }
示例#4
0
        /// <summary>
        /// Swapping two gems
        /// </summary>
        /// <param name="gem">Second gem for swap</param>
        /// <param name="state">State gems</param>
        public void Swap(Gem gem, GemState state)
        {
            var endPosition = gem.EndPosition;
            var x           = gem.XPosition;
            var y           = gem.YPosition;

            gem.Move(XPosition, YPosition, EndPosition, state);
            Move(x, y, endPosition, state);
        }
示例#5
0
 public Gem(Texture2D texture2D, Rectangle startPosition, Rectangle endPosition)
 {
     Texture2D   = texture2D;
     EndPosition = endPosition;
     Box         = startPosition;
     Position    = new Vector2(startPosition.X, startPosition.Y);
     GemState    = GemState.Move;
     GemColor    = Color.White;
     Size        = new Vector2(startPosition.Width, startPosition.Height);
     DestroyStep = startPosition.Height * 3f;
 }
示例#6
0
        /// <summary>
        /// Move a gem to a specific position
        /// </summary>
        /// <param name="x">X gem board position</param>
        /// <param name="y">Y gem board position</param>
        /// <param name="position">Coordinate where the gem should be at the end of the path</param>
        /// <param name="state">State gem</param>
        public void Move(int x, int y, Rectangle position, GemState state)
        {
            if (Bonus != null)
            {
                Bonus.XPosition = x;
                Bonus.YPosition = y;
            }

            XPosition   = x;
            YPosition   = y;
            GemState    = state;
            EndPosition = position;
        }
示例#7
0
文件: Gem.cs 项目: ComMouse/Bejeweled
        /// <summary>
        /// Prepare for the animation state after switching to a new state.
        /// </summary>
        protected override void PostTransitState(GemState oldState, GemState newState)
        {
            switch (newState)
            {
            case GemState.Moving:
                break;

            case GemState.Appearing:
                transform.localScale = Vector3.zero;
                break;

            case GemState.Disappearing:
                break;

            case GemState.Disappeared:
                transform.localScale = Vector3.zero;
                break;
            }
        }
示例#8
0
        public void onStateChanged(int state)
        {
            this._state = (GemState)state;

            if (_state == GemState.Connected)
            {
                var sysInfoAndroid = gemWrapper.Call <AndroidJavaObject>("getGemSystemInfo");

                SystemInfo = new GemSystemInfo()
                {
                    Name             = sysInfoAndroid.Get <string>("name"),
                    Address          = sysInfoAndroid.Get <string>("address"),
                    FirmwareRevision = sysInfoAndroid.Get <string>("firmwareRevision"),
                    HardwareRevision = sysInfoAndroid.Get <string>("hardwareRevision")
                };

                SetPedometerActive(isPedometerActive);
            }
            Debug.Log("new connection status is " + ((GemState)state).ToString().ToUpper());
        }
示例#9
0
文件: Gem.cs 项目: ComMouse/Bejeweled
        /// <summary>
        /// Clear the animation state before switching to a new state.
        /// </summary>
        protected override void PreTransitState(GemState oldState, GemState newState)
        {
            switch (oldState)
            {
            case GemState.Moving:
                transform.localPosition = GameManager.Instance.GemMap.GetCoordPos(coord);
                transform.localScale    = originalScale;
                break;

            case GemState.Appearing:
                transform.localScale = originalScale;
                break;

            case GemState.Disappearing:
                transform.localScale    = originalScale;
                transform.localRotation = Quaternion.identity;
                break;

            case GemState.Disappeared:
                transform.localScale = originalScale;
                break;
            }
        }
示例#10
0
        private void StateChanged(NativeWrapper.GemState state)
        {
            Debug.Log("GemSDK: State changed from \"" + addressStr + "\" -> " + state.ToString());

            if (state == NativeWrapper.GemState.Connected)
            {
                State = GemState.Connected;

                if (tapActive)
                {
                    SetTapActive(true);
                }

                if (pedometerActive)
                {
                    SetPedometerActive(true);
                }
            }
            else if (state == NativeWrapper.GemState.Connecting)
            {
                State = GemState.Connecting;
            }
            else if (state == NativeWrapper.GemState.Disconnected)
            {
                GemState lastState = State;
                State = GemState.Disconnected;

                if (lastState == GemState.Connecting)
                {
                    Reconnect();
                }
            }
            else if (state == NativeWrapper.GemState.Disconnecting)
            {
                State = GemState.Disconnecting;
            }
        }
示例#11
0
 // Use this for initialization
 public void SetGem(GemState _state)
 {
     gemState   = _state;
     stateTimer = 0;
 }
示例#12
0
 protected virtual void OnChangeGemState(Gem gem, GemState lastState, GemState currentState)
 {
     ChangeGemState?.Invoke(gem, lastState, currentState);
 }
示例#13
0
 /// <summary>
 /// Destruction of the gem
 /// </summary>
 public void Destroy()
 {
     GemState = GemState.Destroy;
 }
示例#14
0
 public void onStateChanged(int state)
 {
     this._state = (GemState)state;
     Debug.Log("new connection status is " + ((GemState)state).ToString().ToUpper());
 }