public override bool Test(ConditionData data)
    {
        EndPoint endPoint = owner.endPoint;

        Vector3 pointDir = endPoint.transform.forward;

        HashSet<Vector3> takenVoxelsMap = data.takenVoxels;

        Quaternion rotation = Quaternion.AngleAxis((float)data.endPointDirection, Vector3.up);

        float edgeLength = owner.Volume.generatorSize.z;
        for (float i = 0; i < edgeLength; i++)
        {
            Vector3 edgeOffset = rotation * new Vector3(0f, 0f, i);

            Vector3 wallVoxelPosition = data.randomFloorVoxelPos + edgeOffset;

            if (takenVoxelsMap.Contains(wallVoxelPosition.RoundVec3ToInt()))
            {
                return false;
            }
        }

        return true;
    }
예제 #2
0
    public bool checkCondition(int id)
    {
        ConditionData data    = condition[id];
        int           flagNum = 0;

        foreach (var f in data.needFlag)
        {
            if (currentFlag[f])
            {
                flagNum++;
            }
        }
        if (flagNum < data.needFlagVal)
        {
            return(false);
        }

        if (data.needValueName > 0)
        {
            if (values[(GameValueType)data.needValueName] < data.needValueMinVal)
            {
                return(false);
            }
        }

        return(true);
    }
예제 #3
0
    public void SetParameters(ConditionData condition)
    {
        BlurEnabled = condition.BlurInPeripheral;
        InnerRadius = m_WindowSizeConfig.RadiusList[(int)condition.WindowSize].Inner;
        OuterRadius = m_WindowSizeConfig.RadiusList[(int)condition.WindowSize].Outer;

        // TODO: condition.WindowPosition (should be connected to pupil labs)
    }
예제 #4
0
 static void PrintConditionData(ConditionData data)
 {
     Console.Write("Then {0}:{1} ", data.Then.Start.Index, data.Then.End.Index);
     if (data.Else != null)
     {
         Console.Write("Else {0}:{1}", data.Else.Start.Index, data.Else.End.Index);
     }
     Console.WriteLine();
 }
    private static bool PropertyCompare(string[] conditionTable, ConditionData compareObj)
    {
        Type _type = compareObj.GetType();

        FieldInfo[] _fieldInfoArr = _type.GetFields();

        List <bool> orList  = new List <bool>();
        List <bool> andList = new List <bool>();

        for (int i = 0; i < conditionTable.Length; i++)
        {
            if (conditionTable[i] == CHAR_TAG_IGNORE)
            {
                continue;
            }

            object           _compareParam = _fieldInfoArr[i].GetValue(compareObj);
            SubCompareResult _compare      = SpecificCompare(conditionTable[i], _compareParam, _fieldInfoArr[i]);

            switch (_compare.logicTag)
            {
            case LogicalOperator.And:
                andList.Add(_compare.result);
                break;

            case LogicalOperator.Or:
                orList.Add(_compare.result);
                break;
            }
        }

        if ((orList == null || orList.Count <= 0) && (andList == null || andList.Count <= 0))
        {
            return(false);
        }

        for (int i = 0; i < andList.Count; i++)
        {
            if (!andList[i])
            {
                return(false);
            }
        }

        bool _or = false;

        for (int i = 0; i < orList.Count; i++)
        {
            if (orList[i])
            {
                _or = true;
            }
        }

        return(_or);
    }
예제 #6
0
 public Condition(ConditionData conditionData)
 {
     type       = conditionData.type;
     handicaps  = conditionData.handicaps;
     duration   = conditionData.duration;
     endDate    = Time.time + duration;
     retrigger  = conditionData.retrigger;
     cancels    = conditionData.cancels;
     needsReset = conditionData.needsReset;
 }
예제 #7
0
    public ConditionData.UnitCondition GetCondition()
    {
        ConditionData c = GetTopCondition();

        if (c == null)
        {
            return(ConditionData.UnitCondition.none);
        }
        return(c.condition);
    }
예제 #8
0
    public void RemoveCondition(ConditionData conditionData)
    {
        Condition condition = new Condition(conditionData);
        Condition toRemove  = conditions.Find(c => c.type == condition.type);

        if (toRemove != null)
        {
            conditions.Remove(toRemove);
        }
    }
        public bool IsFulfilled(object value, ConditionData data)
        {
            if (value is Minion minion)
            {
                return(minion.HealthAmount >= data.HealthAmount);
            }

            Debug.LogWarning("Value sent to condition is not minion!");
            return(false);
        }
예제 #10
0
    private void Show(ConditionData c)
    {
        if (c.category != GameDataManager.RESOURCE_ID || c.enemy != enemy || c.id != id)
        {
            return;
        }

        deficiency.SetActive(true);

        deficiency.GetComponent <Animator>().SetTrigger("fadein");
    }
예제 #11
0
    private void parseData()
    {
        string[] itemRowsList = ResourceManager.LoadText("main.text");
        text.Clear();

        //Skip first three lines.
        for (int i = 3; i < itemRowsList.Length; ++i)
        {
            string[] itemColumnsList = itemRowsList[i].Split('\t');
            if (itemColumnsList.Length < 3)
            {
                Debug.LogWarning("The source data seems to have an inconsistent number of columns: " + itemColumnsList.Length);
                continue;
            }

            StoryData data = new StoryData(itemColumnsList);
            text.Add(data.id, data);
        }

        itemRowsList = ResourceManager.LoadText("main.selection");
        selection.Clear();

        //Skip first three lines.
        for (int i = 3; i < itemRowsList.Length; ++i)
        {
            string[] itemColumnsList = itemRowsList[i].Split('\t');
            if (itemColumnsList.Length < 3)
            {
                Debug.LogWarning("The source data seems to have an inconsistent number of columns: " + itemColumnsList.Length);
                continue;
            }

            SelectionData data = new SelectionData(itemColumnsList);
            selection.Add(data.id, data);
        }

        itemRowsList = ResourceManager.LoadText("main.condition");
        condition.Clear();

        //Skip first three lines.
        for (int i = 3; i < itemRowsList.Length; ++i)
        {
            string[] itemColumnsList = itemRowsList[i].Split('\t');
            if (itemColumnsList.Length < 3)
            {
                Debug.LogWarning("The source data seems to have an inconsistent number of columns: " + itemColumnsList.Length);
                continue;
            }

            ConditionData data = new ConditionData(itemColumnsList);
            condition.Add(data.id, data);
        }
    }
예제 #12
0
 public void CheckTrait(Card _card, ConditionData _data)
 {
     if (_card.HasTraits(TRAITS.BLOCKER) == true)
     {
         _data.Response = true;
     }
     else
     {
         _data.Response = false;
     }
     // return true;
 }
예제 #13
0
 public void CheckPower(Card _card, ConditionData _data)
 {
     if (_card.GetPower() <= _data.Number)
     {
         _data.Response = true;
     }
     else
     {
         _data.Response = false;
     }
     // return true;
 }
예제 #14
0
        public void OnChangeDirection(SwipeDirection direction)
        {
            leftAvailable  = true;
            rightAvailable = true;

            if (Swipe.state != SwipeState.DRAG || !gameObject.activeSelf)
            {
                return;
            }

            //if (this.me == false)
            //    return;

            List <ConditionData> _conditions = null;

            if (me == true)
            {
                _conditions = direction == SwipeDirection.RIGHT ? this.data.right.conditions : this.data.left.conditions;
            }
            else
            {
                _conditions = direction == SwipeDirection.RIGHT ? this.data.eRight.conditions : this.data.eLeft.conditions;
            }

            int time = GameTime.GetTime();
            List <ConditionData> conditions = Services.data.GetUnavailableConditions(_conditions, time, false, me);

            if (conditions.Count == 0)
            {
                return;
            }

            //sort conditions
            ConditionData one = conditions.Find(c => c.enemy == false);

            if (one == null)
            {
                return;
            }

            if (direction == SwipeDirection.RIGHT)
            {
                rightAvailable = false;
            }
            else
            {
                leftAvailable = false;
            }

            OnUnavailableCondition?.Invoke(one);
        }
예제 #15
0
        private void Update()
        {
            ConditionData conditionData = new ConditionData {
                HealthAmount = 10
            };

            if (ConditionCheckerFactory.ConditionCheckerByType(ConditionType.MinionHasEnoughHealth).IsFulfilled(target, conditionData))
            {
                ActAggressive();
            }
            else
            {
                ActPeacefully();
            }
        }
예제 #16
0
    public List <Card> GetConditionalList(ConditionData _data)
    {
        List <Card> list = new List <Card>();

        for (int i = 0; i < mCardList.Count; ++i)
        {
            _data.GetConditionCallback().Invoke(mCardList[i], _data);
            if (_data.Response == true)
            {
                list.Add(mCardList[i]);
            }
        }

        return(list);
    }
예제 #17
0
    public void AddCondition(ConditionData conditionData)
    {
        Condition condition = new Condition(conditionData);
        Condition similar   = conditions.Find(c => c.type == condition.type);

        if (similar != null)
        {
            if (condition.retrigger == Retrigger.IGNORE)
            {
                return;
            }
            if (condition.retrigger == Retrigger.OVERWRITE)
            {
                conditions.Remove(similar);
                conditions.Add(condition);
                return;
            }
        }

        foreach (Type type in condition.cancels)
        {
            Condition canceled = conditions.Find(c => c.type == type);
            conditions.Remove(canceled);
            int index = (int)canceled.type;
            if (visualizers[index] != null)
            {
                visualizers[index].SetActive(false);
            }
            Debug.Log(canceled.type + " ends");
        }

        conditions.Add(condition);
        int vindex = (int)condition.type;

        if (vindex < visualizers.Length && visualizers[vindex] != null)
        {
            visualizers[vindex].SetActive(true);
        }
        if (condition.needsReset)
        {
            inputRouter.NeedsReset = true;
        }
        foreach (Handicap h in condition.handicaps)
        {
            Handicaps[(int)h] = true;
        }
        // animationManager.CommandMovement = "handicap";
    }
    private static List <NotificationCompareResult> CongruentFilter(int[] indexArray, List <ConditionData> conditions)
    {
        List <NotificationCompareResult> _result = new List <NotificationCompareResult>();

        for (int i = 0; i < indexArray.Length; i++)
        {
            bool _isMatch = true;

            for (int j = 0; j < conditions.Count; j++)
            {
                ConditionData _conditionUnit = conditions[j];
                int           _fieldCount    = conditionClassColumns[_conditionUnit.GetType()].Count;
                string[]      _paramField    = new string[_fieldCount];

                for (int k = 0; k < _fieldCount; k++)
                {
                    int _columnIndex = conditionClassColumns[_conditionUnit.GetType()][k];
                    _paramField[k] = notificationUnitStorage[indexArray[i]][_columnIndex];
                }

                _isMatch = PropertyCompare(_paramField, _conditionUnit);
                if (!_isMatch)
                {
                    break;
                }
            }

            if (_isMatch)
            {
                NotificationCompareResult _compareResult = new NotificationCompareResult();
                FieldInfo[] _fieldInfos = typeof(NotificationCompareResult).GetFields();

                for (int j = 0; j < resultClassColumns.Count; j++)
                {
                    int    _columnIndex = resultClassColumns[j];
                    string _param       = notificationUnitStorage[indexArray[i]][_columnIndex];

                    _fieldInfos[j].SetValue(_compareResult, ConvertData(_param, _fieldInfos[j].FieldType));
                }

                _result.Add(_compareResult);
            }
        }

        return(_result);
    }
예제 #19
0
    public void RemoveCrowdControl(ConditionData.UnitCondition _type)
    {
        ConditionData removeItem = null;

        foreach (ConditionData c in unitConditionList) // 아니라면 foreach를 돌림
        {
            if (c.condition == _type)                  // 만약 군중제어상태가 같은 것이 있다면
            {
                removeItem = c;
                break;
            }
        }
        if (removeItem != null)
        {
            unitConditionList.Remove(removeItem);
            animator.SetInteger("condition", (int)GetCondition());
        }
    }
예제 #20
0
    void UpdateCondition(float deltaTime)
    { // 군중제어기시간 체크용 업데이트문
        ConditionData.UnitCondition bigCondition = ConditionData.UnitCondition.none;
        List <ConditionData>        removes      = new List <ConditionData>();

        if (unitConditionList.Count > 0)
        {
            foreach (ConditionData c in unitConditionList)
            {
                if (c.conditionTIme <= deltaTime)
                {
                    removes.Add(c);
                    if (c.onConditionChangeEvent != null)
                    {
                        c.onConditionChangeEvent();
                    }
                }
                else
                {
                    c.conditionTIme -= deltaTime;
                    if (bigCondition < c.condition)
                    {
                        bigCondition = c.condition;
                    }
                }
            }
            if (removes.Count > 0)
            {
                foreach (ConditionData c in removes)
                {
                    unitConditionList.Remove(c);
                }
                ConditionData topCondition = GetTopCondition();
                if (topCondition != null)
                {
                    animator.SetInteger("condition", (int)topCondition.condition);
                }
                else
                {
                    animator.SetInteger("condition", 0);
                }
            }
        }
    }
예제 #21
0
 public List <Card> GetConditionalList(ConditionData _data)
 {
     if (_data.Targets != TARGETS.ALL)
     {
         Debug.LogWarning("NEIMPLEMENTAT!");
         return(null);
     }
     if (_data.Targets == TARGETS.ALL)
     {
         List <Card> returnList;
         List <Card> list_1 = new List <Card>();
         List <Card> list_2 = new List <Card>();
         list_1 = mBattlezone_One.GetConditionalList(_data);
         list_2 = mBattlezone_Two.GetConditionalList(_data);
         list_1.AddRange(list_2);
         return(list_1);
     }
     return(null);
 }
예제 #22
0
    public ConditionData GetTopCondition()
    {
        /*
         * 가장 우선순위가 높은 군중제어상태를 찾아줌
         */
        if (unitConditionList.Count == 0)
        {
            return(null);
        }
        ConditionData bigCondition = null;

        foreach (ConditionData c in unitConditionList)
        {
            if (bigCondition == null || c.condition > bigCondition.condition)
            {
                bigCondition = c;
            }
        }
        return(bigCondition);
    }
    void Awake()
    {
        if (instance != null)
        {
            Destroy(gameObject);
        }
        instance = this;

        m_ConditionName = CurrentExpSetting.condition;
        m_Condition     = m_ConditionList[(int)m_ConditionName];

        if (!usingGazeInfo)
        {
            gazeManager.SetActive(false);
            visualEffectManager.Init();
        }
        else
        {
            gazeManager.SetActive(true);
        }
    }
    public override bool Test(ConditionData data)
    {
        EndPoint endPoint = owner.endPoint;

        Vector3 rightEndPointDir = endPoint.transform.right.RoundVec3ToInt();
        bool    overlap          = AllPointsNextToWall(data, rightEndPointDir);

        if (overlap)
        {
            return(overlap);
        }

        Vector3 leftEndPointDir = (endPoint.transform.right * -1f).RoundVec3ToInt();

        overlap |= AllPointsNextToWall(data, leftEndPointDir);
        if (overlap)
        {
            return(overlap);
        }

        return(overlap);
    }
예제 #25
0
            static partial void WriteBinaryParameterParsingCustom(MutagenWriter writer, IFunctionConditionDataGetter item)
            {
                var paramTypes = ConditionData.GetParameterTypes(item.Function);

                switch (paramTypes.First.GetCategory())
                {
                case ConditionData.ParameterCategory.None:
                case ConditionData.ParameterCategory.Number:
                    writer.Write(item.ParameterOneNumber);
                    break;

                case ConditionData.ParameterCategory.Form:
                    FormKeyBinaryTranslation.Instance.Write(writer, item.ParameterOneRecord.FormKey);
                    break;

                case ConditionData.ParameterCategory.String:
                default:
                    throw new NotImplementedException();
                }
                switch (paramTypes.Second.GetCategory())
                {
                case ConditionData.ParameterCategory.None:
                case ConditionData.ParameterCategory.Number:
                    writer.Write(item.ParameterTwoNumber);
                    break;

                case ConditionData.ParameterCategory.Form:
                    FormKeyBinaryTranslation.Instance.Write(writer, item.ParameterTwoRecord.FormKey);
                    break;

                case ConditionData.ParameterCategory.String:
                default:
                    throw new NotImplementedException();
                }
                writer.Write(item.Unknown3);
                writer.Write(item.Unknown4);
                writer.Write(item.Unknown5);
            }
예제 #26
0
    public void AddCrowdControl(ConditionData.UnitCondition _type, float _ccTime = 1.0f, ConditionData.OnConditionChangeEvent _conditionEvent = null) // 군중제어상태를 추가
    {
        ConditionData condition = new ConditionData();                                                                                                // 컨디션데이터를만들고

        condition.condition              = _type;                                                                                                     // 채워줌
        condition.conditionTIme          = _ccTime;
        condition.onConditionChangeEvent = _conditionEvent;
        foreach (ConditionData c in unitConditionList) // 아니라면 foreach를 돌림
        {
            if (c.condition == _type)                  // 만약 군중제어상태가 같은 것이 있다면
            {
                if (c.conditionTIme < _ccTime)         // 시간을 체크후
                {
                    c.conditionTIme = _ccTime;         // 더 큰시간으로 설정해줌
                    return;
                }
            }
        }
        unitConditionList.Add(condition); // 없다면 새로추가
        ConditionData topCondition = GetTopCondition();

        animator.SetInteger("condition", (int)topCondition.condition);
    }
예제 #27
0
        private void CreateCondition(ConditionData condition)
        {
            // create condition variable
            Add(new Variable("Skill.Framework.AI.Condition", condition.Name, "null"));
            // new condition variable inside CreateTree method
            _CreateTreeMethodBody.AppendLine(string.Format("this.{0} = new Skill.Framework.AI.Condition(\"{1}\",{2});", Variable.GetName(condition.Name), condition.Name, GetConditionHandlerName(condition.Name)));
            // set weight
            SetBehaviorParameters(condition);
            // create condition handler method
            Method m = new Method("bool", GetConditionHandlerName(condition.Name), string.Empty, ConditionHandlerParams)
            {
                IsPartial = _Tree.ExpandMethods
            };

            if (_Tree.ExpandMethods)
            {
                m.Body = CreateMethodBody(condition, "return false;");
            }
            else
            {
                m.Body = string.Format("return OnCondition( Conditions.{0}, sender ,  parameters);", condition.Name);
            }
            Add(m);
        }
    protected bool AllPointsNextToWall(ConditionData data, Vector3 pointDir)
    {
        HashSet <Vector3> wallsVoxelMap = data.blueprint.WallsVoxelMap;

        Quaternion rotation = Quaternion.AngleAxis((float)data.endPointDirection, Vector3.up);

        float edgeLength = owner.Volume.generatorSize.z;

        for (float i = 0; i < edgeLength; i++)
        {
            Vector3 edgeOffset      = rotation * new Vector3(0f, 0f, i);
            Vector3 rotatedPointDir = rotation * pointDir;

            Vector3 wallVoxelPosition = data.randomFloorVoxelPos + rotatedPointDir + edgeOffset;
            wallVoxelPosition = wallVoxelPosition.RoundVec3ToInt();

            if (!wallsVoxelMap.Contains(wallVoxelPosition))
            {
                return(false);
            }
        }

        return(true);
    }
예제 #29
0
        private List <ConditionData> AccessDatabase()
        {
            DataLayer            dl     = new DataLayer();
            string               strSQL = "select * from CONDITION";
            OleDbDataReader      dr     = dl.GetDataReader(strSQL);
            List <ConditionData> cList  = new List <ConditionData>();

            while (dr.Read())
            {
                ConditionData cd = new ConditionData();
                if (!String.IsNullOrEmpty(dr["RequestedDate"].ToString()))
                {
                    cd.RequestedDate = DateTime.Parse(dr["RequestedDate"].ToString());
                }
                cd.RequestedBy        = dr["RequestedBy"].ToString();
                cd.Description        = dr["_Description"].ToString();
                cd.ConditionTypeAndNo = dr["_ConditionTypeAndNo"].ToString();

                cList.Add(cd);
            }
            dl.Cleanup();

            return(cList);
        }
    public override bool Test(ConditionData data)
    {
        RoomBlueprint     blueprint     = data.blueprint;
        HashSet <Vector3> wallsVoxelMap = blueprint.WallsVoxelMap;

        Vector3 randomFloorVoxelPos = data.randomFloorVoxelPos;

        Quaternion edgeRotation = EndPoint.GetRoation(data.endPointDirection);

        float   itemLength           = owner.Volume.generatorSize.x;
        Vector3 horizontalEdgeOffset = EndPoint.GetRoation(data.endPointDirection) * new Vector3(itemLength, 0f, 0f);

        float itemHeight = owner.Volume.generatorSize.z;

        for (float i = 0; i < itemHeight; i++)
        {
            Vector3 verticalEdgeOffset = EndPoint.GetRoation(data.endPointDirection) * new Vector3(0f, 0f, i);

            Vector3 wallVoxelPosition = randomFloorVoxelPos + horizontalEdgeOffset + verticalEdgeOffset;
            wallVoxelPosition = wallVoxelPosition.RoundVec3ToInt();

            if (wallsVoxelMap.Contains(wallVoxelPosition))
            {
                GameObject wallVoxelGO = data.blueprint.GetWallVoxelGO(wallVoxelPosition);

                Vector3 directionsDifference = horizontalEdgeOffset + wallVoxelGO.transform.right;

                if (directionsDifference == Vector3.zero)
                {
                    return(false);
                }
            }
        }

        return(true);
    }
		void ProcessConditionBranches (ConditionData data, IfStatement conditional)
		{
			MoveStatementsToBlock (data.Then, conditional.Then);

			if (data.Else != null && !IsElseUnecessary (conditional)) {
				conditional.Else = new BlockStatement ();

				MoveStatementsToBlock (data.Else, conditional.Else);

				if (IsEmptyThenCondition (conditional))
					SwapConditionBranches (conditional);
			}
		}
예제 #32
0
 /// <summary>
 /// Initializes a new instance of the <see cref="Condition"/> class.
 /// </summary>
 /// <param name="client"><see cref="T:TcmCoreService.Client" /></param>
 /// <param name="targetGroupConditionData"><see cref="T:Tridion.ContentManager.CoreService.Client.ConditionData" /></param>
 internal Condition(Client client, ConditionData conditionData)
     : base(client)
 {
     mConditionData = conditionData;
 }
예제 #33
0
		static void PrintConditionData (ConditionData data)
		{
			Console.Write ("Then {0}:{1} ", data.Then.Start.Index, data.Then.End.Index);
			if (data.Else != null)
				Console.Write ("Else {0}:{1}", data.Else.Start.Index, data.Else.End.Index);
			Console.WriteLine ();
		}
예제 #34
0
    private void parseData()
    {
        string[] itemRowsList = ResourceManager.LoadText("main.text");
        text.Clear();

        //Skip first three lines.
        for (int i = 3; i < itemRowsList.Length; ++i)
        {
            string[] itemColumnsList = itemRowsList[i].Split('\t');
            if (itemColumnsList.Length < 3)
            {
                Debug.LogWarning("The source data seems to have an inconsistent number of columns: " + itemColumnsList.Length);
                continue;
            }

            StoryData data = new StoryData(itemColumnsList);
            text.Add(data.id, data);

        }

        itemRowsList = ResourceManager.LoadText("main.selection");
        selection.Clear();

        //Skip first three lines.
        for (int i = 3; i < itemRowsList.Length; ++i)
        {
            string[] itemColumnsList = itemRowsList[i].Split('\t');
            if (itemColumnsList.Length < 3)
            {
                Debug.LogWarning("The source data seems to have an inconsistent number of columns: " + itemColumnsList.Length);
                continue;
            }

            SelectionData data = new SelectionData(itemColumnsList);
            selection.Add(data.id, data);

        }

        itemRowsList = ResourceManager.LoadText("main.condition");
        condition.Clear();

        //Skip first three lines.
        for (int i = 3; i < itemRowsList.Length; ++i)
        {
            string[] itemColumnsList = itemRowsList[i].Split('\t');
            if (itemColumnsList.Length < 3)
            {
                Debug.LogWarning("The source data seems to have an inconsistent number of columns: " + itemColumnsList.Length);
                continue;
            }

            ConditionData data = new ConditionData(itemColumnsList);
            condition.Add(data.id, data);

        }
    }