Example #1
0
    private void MoveRB(MoveEffect effect)
    {
        if (effect.faceMoveDirection)
        {
            transform.root.localScale = new Vector3(effect.moveDirection.normalized.x, transform.root.localScale.y, transform.root.localScale.z);
        }

        // Set velocity move event
        if (effect.moveType == MoveEffect.MoveType.Velocity)
        {
            Vector2 direction = effect.moveDirection.normalized * effect.speed;
            direction += Vector2.up * effect.movingRB.velocity.y;
            effect.movingRB.velocity = direction;
        }
        else if (effect.moveType == MoveEffect.MoveType.Force)
        {
            effect.movingRB.AddForce(effect.moveDirection.normalized * effect.speed,
                                     ForceMode2D.Force);
        }
        else if (effect.moveType == MoveEffect.MoveType.Impulse)
        {
            effect.movingRB.AddForce(effect.moveDirection.normalized * effect.speed,
                                     ForceMode2D.Impulse);
        }

        // Maybe cap the velocity
        if (effect.capMaxSpeed && effect.movingRB.velocity.magnitude > effect.maxSpeed)
        {
            effect.movingRB.velocity = effect.moveDirection.normalized * effect.maxSpeed + Vector2.up * effect.movingRB.velocity.y;
        }
    }
Example #2
0
        /// <summary>
        /// Handles a move request by a player and signal it to the other processes
        /// </summary>
        /// <param name="moveRequest"></param>
        /// <param name="sender"></param>
        private void HandleMovePlayer(MoveRequest moveRequest, ActorProcess sender)
        {
            // Pessimistically assume the move is going to be denied
            MoveSignal moveSignal = new MoveSignal {
                InitialTile = sender.Position, FinalTile = sender.Position
            };

            // Try to move and update the final position
            MoveEffect effect = map.CheckForMoveEffects(sender.Position, moveRequest.DesiredTile);

            if (effect != MoveEffect.InvalidMove)
            {
                logger.LogMove(sender.Rank, true, sender.Position, moveRequest.DesiredTile);
                switch (effect)
                {
                case MoveEffect.RatCaptured:
                    ActorProcess rat = GetActorProcessByCoordinates(moveRequest.DesiredTile);
                    logger.LogCaptureRat(rat.Rank, sender.Rank);
                    HandleRatRemoval(rat);
                    break;

                case MoveEffect.RatEscaped:
                    logger.LogExitRat(sender.Rank, moveRequest.DesiredTile);
                    HandleRatRemoval(GetActorProcessByCoordinates(sender.Position));
                    break;

                case MoveEffect.CheeseEaten:
                    logger.LogCheeseConsumption(sender.Rank, moveRequest.DesiredTile);
                    break;
                }

                // Move is valid and the destination tile no longer has important information
                map.ApplyMove(sender.Position, moveRequest.DesiredTile);
                sender.Position      = moveRequest.DesiredTile;
                moveSignal.FinalTile = moveRequest.DesiredTile;
            }
            else
            {
                logger.LogMove(sender.Rank, false, sender.Position, moveRequest.DesiredTile);
            }

            moveCount++;
            if (moveCount % MAP_LOG_INTERVAL == 0)
            {
                logger.LogMap(map.ToString());
            }

            if (IsGameOver())
            {
                EndGame();
            }
            else
            {
                // Broadcast the result of the move
                Broadcast(moveSignal);
            }
        }
Example #3
0
    public void DoMove(int moveId)
    {
        Debug.Log("Called to do move" + moveId);
        MoveEffect effect = (MoveEffect)GameObject.Find("Player").GetComponent <PlayerData>().PlayerMoves[moveId].GetComponent(typeof(MoveEffect));

        effect.UseEffect();

        DealDamage();
        playerTurn = false;
        StartCoroutine(HitEnemy());
    }
Example #4
0
        public void testMoveEffect()
        {
            UISceneDZ uiDZ = Ctx.m_instance.m_uiSceneMgr.getSceneUI <UISceneDZ>(UISceneFormID.eUISceneDZ);

            MoveEffect effect = Ctx.m_instance.m_sceneEffectMgr.createAndAdd(EffectType.eMoveEffect, EffectRenderType.eSpriteEffectRender) as MoveEffect;

            effect.setPnt(uiDZ.m_sceneDZData.m_placeHolderGo.m_centerGO);
            effect.setLoop(false);
            effect.setTableID(4);
            effect.srcPos         = new Vector3(-4, 0, 0);
            effect.destPos        = new Vector3(4, 0, 0);
            effect.effectMoveTime = 5;
            effect.play();
        }
Example #5
0
    public override IEnumerator Initialize()
    {
        yield return(new WaitForSeconds(0));

        initialized = true;

        if (spikeManager != null)
        {
            transform.position = spikeManager.transform.position + new Vector3(0, 2, 0);
            colorEffect        = new ColorChangeEffect(textCollider2D, textCollider2D.Color, new Color(textCollider2D.Color.r, textCollider2D.Color.g, textCollider2D.Color.b, 1), 2);
            EffectManager.AddGameEffect(colorEffect);
            moveEffect = new MoveEffect(textCollider2D, spikeManager.transform.position, 2, true);
            EffectManager.AddGameEffect(moveEffect);
        }
    }
Example #6
0
    // Clone
    public static MoveEffect Clone(MoveEffect original)
    {
        MoveEffect cloneEffect = new MoveEffect(
            effectType: original.effectType,
            effectTiming: original.effectTiming,
            effectTargetType: original.effectTargetType,
            effectFilters: original.effectFilters,
            effectChance: original.effectChance,
            forceEffectDisplay: original.forceEffectDisplay,
            boolParams: original.boolParams,
            floatParams: original.floatParams,
            stringParams: original.stringParams,
            sheerForceEffect: original.sheerForceEffect
            );

        return(cloneEffect);
    }
Example #7
0
    private void PerformMoveEffect(MoveEffect effect, KeyType type, int keyEffect, int moveEffect)
    {
        if (!effect.movingRB || effect.onCoolDown)
        {
            return;
        }

        // Must the mech be grounded to perform this effect
        if (effect.mustBeGrounded)
        {
            // Skip iteration if nothing is hit by box cast
            RaycastHit2D hit = CheckOnGround(effect.groundCheckParams);
            if (!hit.collider)
            {
                return;
            }
        }

        // Use energy
        if (partUsesEnergy)
        {
            energy.UseEnergy(effect.energyUsage);
        }

        // Perform cool down
        if (effect.coolDown > 0f && !effect.onCoolDown)
        {
            StartCoroutine(MoveEffectCoolDownTime(type, keyEffect, moveEffect));
        }

        // Play moving animation
        for (int i = 0; i < effect.animationParameters.Length; i++)
        {
            StartCoroutine(PlayAnimation(effect.animationParameters[i]));
        }

        // Delay effect for specified amount of time
        if (effect.effectDelay > 0)
        {
            StartCoroutine(WaitForMoveDelay(effect));
            return;
        }

        MoveRB(effect);
    }
Example #8
0
        private void SelectSwitch(object sender, EventArgs e)
        {
            if (eff == null)
            {
                eff = new MoveEffect();
                eff.AddControl(S1);
                eff.AddControl(S2);
            }
            if (!eff.isIdle())
            {
                return;
            }
            int id = int.Parse((string)(((Control)sender).Tag));

            if (id != lastselectid)
            {
                lastselectid = id;
                if (id == 1)
                {
                    eff.Move(-400, 0);
                    if (ConfigListSelect.Items.Count == 0)
                    {
                        ConfigListSelect.Text = "新配置1";
                    }
                    else
                    {
                        if (ConfigSelect.SelectedIndex != -1)
                        {
                            ConfigListSelect.SelectedIndex = ConfigSelect.SelectedIndex;
                        }
                    }
                }
                else
                {
                    eff.Move(400, 0);
                }
                Color c = bt1.BackColor;
                bt1.BackColor = bt0.BackColor;
                bt0.BackColor = c;
            }
        }
    public void updateMoveY(string d)
    {
        if (d.Length > 0)
        {
            Effect e;
            currentEvent.getEffect(currentEffectIndex, out e);

            switch (e.getEffectType())
            {
            case EffectTypes.moveUnit:
                MoveEffect moveEffect = (MoveEffect)e;
                moveEffect.setY(int.Parse(d));
                break;

            case EffectTypes.enemySpawn:
                EnemyEffect enemyEffect = (EnemyEffect)e;
                enemyEffect.setY(int.Parse(d));
                break;
            }
        }
    }
Example #10
0
 public override Effect GetEffect(EffectMakerPerspective perspective, bool buff)
 {
     if (perspective.Phase == Phase.StartOfGame && perspective.Card.Zone == Zone.PutOff)
     {
         return(new StartInDeckEffect());
     }
     if (state == 0 && perspective.IsPlayed() && !buff)
     {
         ++state;
         return(new AttackEffect(5));
     }
     if (state == 1 && perspective.IsPlayed() && !buff)
     {
         ++state;
         moveEffect = new MoveRandomEffect(Zone.Deck, Zone.Pile);
         return(moveEffect);
     }
     if (state == 2)
     {
         if (stolenMaker == null && moveEffect.Moved != null)
         {
             stolenMaker = moveEffect.Moved.Type.Effects();
         }
         if (perspective.IsEnded())
         {
             state       = 0;
             moveEffect  = null;
             stolenMaker = null;
             return(new EndEffect());
         }
         if (perspective.IsPlayed() && stolenMaker != null)
         {
             return(stolenMaker.GetEffect(perspective, buff));
         }
     }
     return(null);
 }
Example #11
0
 public MoveEffect(MoveEffect other) : base(other)
 {
     this.Direction = other.Direction;
     this.UseBezier = other.useBezier;
 }
Example #12
0
 public Move(string name, MoveEffect effect)
 {
     _name   = name;
     _effect = effect;
 }
Example #13
0
    IEnumerator WaitForMoveDelay(MoveEffect effect)
    {
        yield return(new WaitForSeconds(effect.effectDelay));

        MoveRB(effect);
    }
    public void showEffect(int i)
    {
        if (currentEffectPanel != null)
        {
            currentEffectPanel.SetActive(false);
        }

        Vector2 pos;

        switch ((EffectTypes)i)
        {
        case EffectTypes.test:
            TestEffect effect = (TestEffect)currentEvent.getEffects()[currentEffectIndex];
            currentEffectPanel = transform.FindChild("testPanel").gameObject;
            currentEffectPanel.SetActive(true);

            currentEffectPanel.transform.FindChild("InputField").GetComponent <InputField>().text = "";
            print(effect.getData());
            currentEffectPanel.transform.FindChild("InputField").GetChild(1).GetComponent <Text>().text = effect.getData();
            break;

        case EffectTypes.moveUnit:
            MoveEffect moveEffect = (MoveEffect)currentEvent.getEffects()[currentEffectIndex];
            currentEffectPanel = transform.FindChild("moveUnitPanel").gameObject;
            currentEffectPanel.SetActive(true);

            currentEffectPanel.transform.FindChild("XField").GetComponent <InputField>().text = "";
            currentEffectPanel.transform.FindChild("YField").GetComponent <InputField>().text = "";

            pos = moveEffect.getPosition();
            currentEffectPanel.transform.FindChild("XField").GetChild(1).GetComponent <Text>().text = pos.x.ToString();
            currentEffectPanel.transform.FindChild("YField").GetChild(1).GetComponent <Text>().text = pos.y.ToString();

            break;

        case EffectTypes.enemySpawn:
            EnemyEffect enemyEffect = (EnemyEffect)currentEvent.getEffects()[currentEffectIndex];
            currentEffectPanel = transform.FindChild("EnemyPanel").gameObject;
            currentEffectPanel.SetActive(true);

            currentEffectPanel.transform.FindChild("XField").GetComponent <InputField>().text    = "";
            currentEffectPanel.transform.FindChild("YField").GetComponent <InputField>().text    = "";
            currentEffectPanel.transform.FindChild("UnitIndex").GetComponent <InputField>().text = "";

            pos = enemyEffect.getPosition();
            currentEffectPanel.transform.FindChild("XField").GetChild(1).GetComponent <Text>().text    = pos.x.ToString();
            currentEffectPanel.transform.FindChild("YField").GetChild(1).GetComponent <Text>().text    = pos.y.ToString();
            currentEffectPanel.transform.FindChild("UnitIndex").GetChild(1).GetComponent <Text>().text = enemyEffect.getIndex().ToString();
            break;

        case EffectTypes.enemyConversion:
            ConversationEffect conEffect = (ConversationEffect)currentEvent.getEffects()[currentEffectIndex];
            currentEffectPanel = transform.FindChild("conversationPanel").gameObject;
            currentEffectPanel.SetActive(true);

            currentEffectPanel.transform.FindChild("InputField").GetComponent <InputField>().text = "";
            print(conEffect.getData());
            currentEffectPanel.transform.FindChild("InputField").GetChild(1).GetComponent <Text>().text = conEffect.getData();
            break;

        case EffectTypes.noEffect:
            currentEffectPanel = null;
            break;
        }
    }
Example #15
0
        // 添加移动特效
        public MoveEffect addMoveEffect(int id, Vector3 srcPos, Vector3 destPos, float moveTime, bool bAutoRemove = true, bool bLoop = false, bool bPlay = true)
        {
            MoveEffect effect = Ctx.m_instance.m_sceneEffectMgr.addMoveEffect(id, m_card.m_sceneDZData.m_placeHolderGo.m_centerGO, srcPos, destPos, moveTime, bAutoRemove, bLoop, bPlay) as MoveEffect;

            return(effect);
        }
Example #16
0
    // TODO: Contest Stats / Effects

    // Constructor
    public MoveData(
        string ID,
        string baseID          = null,
        string moveName        = null,
        string moveType        = "",
        bool useSameCategory   = false, MoveCategory category     = MoveCategory.Status,
        bool useSameTargetType = false, MoveTargetType targetType = MoveTargetType.Self,

        bool useSameBasePower = false, bool useSameAccuracy = false, bool useSamePP = false,
        int basePower         = 0, float accuracy = -1, int PP = 5,
        bool useSamePriority  = false,
        int priority          = 0,

        bool combineBaseTags           = false,
        IEnumerable <MoveTag> moveTags = null,

        MoveEffect[] moveEffects = null,

        bool combineBaseEffects = false,
        EffectDatabase.MoveEff.MoveEffect[] effectsNew = null,

        int ZBasePower = 0,
        EffectDatabase.MoveEff.MoveEffect[] ZEffectsNew = null,

        int MaxPower = 0)
    {
        this.ID                = ID;
        this.baseID            = baseID;
        this.moveName          = moveName;
        this.moveType          = moveType;
        this.useSameCategory   = useSameCategory;
        this.category          = category;
        this.useSameTargetType = useSameTargetType;
        this.targetType        = targetType;

        this.useSameBasePower = useSameBasePower;
        this.basePower        = basePower;
        this.useSameAccuracy  = useSameAccuracy;
        this.accuracy         = accuracy;
        this.useSamePP        = useSamePP;
        this.PP = PP;
        this.useSamePriority = useSamePriority;
        this.priority        = priority;

        this.combineBaseTags = combineBaseTags;
        this.moveTags        = new HashSet <MoveTag>();
        if (moveTags != null)
        {
            this.moveTags.UnionWith(moveTags);
        }

        this.moveEffects = new List <MoveEffect>();
        if (moveEffects != null)
        {
            for (int i = 0; i < moveEffects.Length; i++)
            {
                this.moveEffects.Add(MoveEffect.Clone(moveEffects[i]));
            }
        }

        this.combineBaseEffects = combineBaseEffects;
        this.effectsNew         = new List <EffectDatabase.MoveEff.MoveEffect>();
        if (effectsNew != null)
        {
            List <EffectDatabase.MoveEff.MoveEffect> addableEffects = new List <EffectDatabase.MoveEff.MoveEffect>();
            for (int i = 0; i < effectsNew.Length; i++)
            {
                addableEffects.Add(effectsNew[i].Clone());
            }
            this.effectsNew = addableEffects;
        }

        this.ZBasePower  = ZBasePower;
        this.ZEffectsNew = new List <EffectDatabase.MoveEff.MoveEffect>();
        if (ZEffectsNew != null)
        {
            List <EffectDatabase.MoveEff.MoveEffect> addableEffects = new List <EffectDatabase.MoveEff.MoveEffect>();
            for (int i = 0; i < ZEffectsNew.Length; i++)
            {
                addableEffects.Add(ZEffectsNew[i].Clone());
            }
            this.ZEffectsNew = addableEffects;
        }

        this.MaxPower = MaxPower;
    }