Example #1
0
    public void CheckMoves(List <MoveLink> moveLinks)
    {
        List <MoveLink> links = new List <MoveLink>();

        links.AddRange(moveLinks);
        if (currentMove != null)
        {
            foreach (MoveLink l in currentMove.links)
            {
                if ((l.minTime <= moveTime) && (l.maxTime >= moveTime))
                {
                    links.Add(l);
                }
            }
        }
        int nextMoveIndex = -1;
        int priority      = -100;

        for (int i = 0; i < links.Count; i++)
        {
            MoveLink currentLink = links[i];
            if (currentLink.priority >= priority)
            {
                bool meetsConditions = false;
                for (int j = 0; j < currentLink.conditions.Count; j++)
                {
                    LinkCondition condition = currentLink.conditions[j];
                    meetsConditions = CheckCondition(condition);
                    if (!meetsConditions)
                    {
                        break;
                    }
                }
                if (meetsConditions)
                {
                    nextMoveIndex = i;
                    priority      = currentLink.priority;
                }
            }
        }
        if (nextMoveIndex != -1)
        {
            foreach (LinkCondition l in links[nextMoveIndex].conditions)
            {
                ExecuteCondition(l);
            }
            StartMove(links[nextMoveIndex].move);
        }
    }
Example #2
0
    public bool CheckMove(MoveLink link)
    {
        bool meetsConditions = false;

        for (int j = 0; j < link.conditions.Count; j++)
        {
            LinkCondition condition = link.conditions[j];
            meetsConditions = CheckCondition(condition);
            if (!meetsConditions)
            {
                break;
            }
        }
        return(meetsConditions);
    }
            public static SheetLinkData FromJson(JObject obj)
            {
                var data = new SheetLinkData()
                {
                    SheetName = (string)obj["sheet"]
                };

                if (obj["project"] == null)
                {
                    data.Projection = new IdentityProjection();
                }
                else
                {
                    data.ProjectedColumnName = (string)obj["project"];
                    data.Projection          = new ColumnProjection()
                    {
                        ProjectedColumnName = data.ProjectedColumnName
                    };
                }

                if (obj["key"] == null)
                {
                    data.RowProducer = new PrimaryKeyRowProducer();
                }
                else
                {
                    data.KeyColumnName = (string)obj["key"];
                    data.RowProducer   = new IndexedRowProducer()
                    {
                        KeyColumnName = data.KeyColumnName
                    };
                }

                var when = obj["when"];

                if (when != null)
                {
                    var condition = new LinkCondition();
                    condition.KeyColumnName = (string)when["key"];
                    condition.Value         = when["value"].ToObject <object>();
                    data.When = condition;
                }

                return(data);
            }
Example #4
0
    public void ExecuteCondition(LinkCondition condition)
    {
        switch (condition.conditionType)
        {
        case ConditionType.inputCondition:
            if (playerInput != null)
            {
                playerInput[condition.buttonIndex].Execute();
            }
            break;

        case ConditionType.weaponCondition:
            if (playerInput != null)
            {
                int ind = PlayerInputHandler.WEAPON1INDEX;
                if (playerInput.Weapon2.Name == condition.weapon)
                {
                    ind = PlayerInputHandler.WEAPON2INDEX;
                }
                playerInput[ind].Execute();
            }
            break;

        case ConditionType.AirJumpCondition:
            if (playerInput != null)
            {
                playerInput.DoubleJump = false;
            }
            break;

        case ConditionType.CanDodge:
            dodgeCount++;
            break;

        case ConditionType.RangeCondition:
            if (targeter != null && targeter.CurrentTarget != null)
            {
                targeter.CurrentTarget.StartAttack(condition.buttonIndex);
            }
            break;
        }
    }
            public static SheetLinkData FromJson(JObject obj)
            {
                SheetLinkData data;

                if (obj["sheet"] != null)
                {
                    data = new SingleSheetLinkData()
                    {
                        SheetName = (string)obj["sheet"]
                    };
                }
                else if (obj["sheets"] != null)
                {
                    data = new MultiSheetLinkData()
                    {
                        SheetNames = ((JArray)obj["sheets"]).Select(t => (string)t).ToArray()
                    };
                }
                else
                {
                    throw new InvalidOperationException("complexlink link must contain either 'sheet' or 'sheets'.");
                }

                if (obj["project"] == null)
                {
                    data.Projection = new IdentityProjection();
                }
                else
                {
                    data.ProjectedColumnName = (string)obj["project"];
                    data.Projection          = new ColumnProjection()
                    {
                        ProjectedColumnName = data.ProjectedColumnName
                    };
                }

                if (obj["key"] == null)
                {
                    data.RowProducer = new PrimaryKeyRowProducer();
                }
                else
                {
                    data.KeyColumnName = (string)obj["key"];
                    data.RowProducer   = new IndexedRowProducer()
                    {
                        KeyColumnName = data.KeyColumnName
                    };
                }

                var when = obj["when"];

                if (when != null)
                {
                    var condition = new LinkCondition();
                    condition.KeyColumnName = (string)when["key"];
                    condition.Value         = when["value"].ToObject <object>();
                    data.When = condition;
                }

                return(data);
            }
Example #6
0
    private bool CheckCondition(LinkCondition condition)
    {
        switch (condition.conditionType)
        {
        case ConditionType.inputCondition:
            return(playerInput != null && playerInput[condition.buttonIndex].CanUse());

        case ConditionType.holdCondition:
            return(playerInput != null && playerInput[condition.buttonIndex].Hold() >= condition.holdNumber);

        case ConditionType.releaseCondition:
            return(playerInput != null && playerInput[condition.buttonIndex].Hold() <= 0);

        case ConditionType.groundCondition:
            if (entityController != null)
            {
                return(entityController.Grounded == condition.boolSetting);
            }
            return(true);

        case ConditionType.weaponCondition:
            if (playerInput != null)
            {
                if (playerInput.Weapon1.Name == condition.weapon)
                {
                    return(playerInput[PlayerInputHandler.WEAPON1INDEX].CanUse());
                }
                else if (playerInput.Weapon2.Name == condition.weapon)
                {
                    return(playerInput[PlayerInputHandler.WEAPON2INDEX].CanUse());
                }
            }
            return(false);

        case ConditionType.weaponHoldCondition:
            if (playerInput != null)
            {
                if (playerInput.Weapon1.Name == condition.weapon)
                {
                    return(playerInput[PlayerInputHandler.WEAPON1INDEX].Hold() >= condition.holdNumber);
                }
                else if (playerInput.Weapon2.Name == condition.weapon)
                {
                    return(playerInput[PlayerInputHandler.WEAPON2INDEX].Hold() >= condition.holdNumber);
                }
            }
            return(false);

        case ConditionType.AirJumpCondition:
            if (playerInput != null)
            {
                return(playerInput.DoubleJump);
            }
            return(false);

        case ConditionType.AttackFlagCondition:
            return(((flagHandler.CommonFlags & CommonFlags.CanAttack) != CommonFlags.None) == condition.boolSetting);

        case ConditionType.CanDodge:
            return(maxDodge <= 0 || dodgeCount < maxDodge);

        case ConditionType.RangeCondition:
            if (targeter != null)
            {
                return((targeter.CurrentTarget != null) && (targeter.CurrentRange == condition.buttonIndex));
            }
            return(false);

        case ConditionType.AttackTimeCondition:
            if (targeter != null)
            {
                return((targeter.CurrentTarget != null) && (targeter.CurrentTarget.LastAttack(condition.buttonIndex) > condition.TimeCondition));
            }
            return(false);

        case ConditionType.MoveTimeCondition:
            return((Time.time - lastMoveTime) > condition.TimeCondition);

        default:
            return(false);
        }
    }