public ObjectEventSystem(Level curLevelPointer)
    {
        this.curLevelPointer = curLevelPointer;

        ///TODO: temporally
        SegmentContent[,] matrix = curLevelPointer.map.curSegMatrix;
        for (int i = 0; i < 3; i++)
        {
            for (int j = 0; j < 3; j++)
            {
                if (matrix[i, j].field == null)
                {
                    continue;
                }
                for (int y = 0; y < matrix[i, j].field.Count; y++)
                {
                    for (int x = 0; x < matrix[i, j].field[y].Count; x++)
                    {
                        List <BaseObject> list = matrix[i, j].field[y][x];
                        for (int k = 0; k < list.Count; k++)
                        {
                            if (GlobalData.getObjectTypeById(list[k].id) == 1)
                            {
                                ObjectEventSequence sequence = new ObjectEventSequence();
                                sequence.addEvent("behaviour", new object[] { list[k] });
                                addSequence(sequence, 0);
                            }
                        }
                    }
                }
            }
        }
        ///
    }
    public void addSequence(ObjectEventSequence sequence, double castTime)
    {
        double completionTime = curTime + castTime;

        while (eventsSequence.ContainsKey(completionTime))
        {
            completionTime += (random.NextDouble() - 0.5) % eps;
        }
        eventsSequence.Add(completionTime, sequence);
    }
Example #3
0
    public void baseAI()     //temporarily
    {
        ObjectEventSequence sequence = new ObjectEventSequence();

        for (int i = 0; i < 100; i++)         //temporarily
        {
            int dir = random.Next(8);
            if (isPathPossible(dir8[dir]))
            {
                sequence.addEvent("step", new object[] { dir8[dir], this });
                break;
            }
        }
        sequence.addEvent("behaviour", new object[] { this });
        adr.levelPointer.eventSystem.addSequence(sequence, 1);
        adr.levelPointer.eventSystem.isExecutionAvailable = true;
    }
    private void Update()
    {
        for (int i = 0; i < dirButtons.Length; i++)
        {
            if (Input.GetButtonDown(dirButtons[i]))
            {
                arrow[i] = true;
            }
        }
        for (int i = 0; i < dirButtons.Length; i++)
        {
            if (Input.GetButtonUp(dirButtons[i]))
            {
                remainder[i] = delay;
            }
        }
        int dt = (int)(Time.deltaTime * 1000);

        for (int i = 0; i < dirButtons.Length; i++)
        {
            if (remainder[i] > 0)
            {
                remainder[i] -= dt;
                if (remainder[i] <= 0)
                {
                    arrow[i] = false;
                }
            }
        }

        Pair <int, int> moveVector = new Pair <int, int>();

        if (arrow[0])
        {
            moveVector.second = 1;
        }
        if (arrow[1])
        {
            moveVector.second -= 1;
        }
        if (arrow[3])
        {
            moveVector.first = 1;
        }
        if (arrow[2])
        {
            moveVector.first -= 1;
        }

        bool way = curUnitPointer.isPathPossible(moveVector);

        if (moveVector.Equals(new Pair <int, int>(0, 0)))
        {
            arrowObject.SetActive(false);
        }
        else
        {
            int curArrowX = (curUnitPointer.adr.worldX + moveVector.first) * 24;
            int curArrowY = (curUnitPointer.adr.worldY + moveVector.second) * 24;
            arrowObject.transform.position = new Vector2(curArrowX, curArrowY);
            setEnable(way);
            arrowObject.SetActive(true);
        }

        for (int i = 0; i < dirButtons.Length; i++)
        {
            if (Input.GetButton(dirButtons[i]))
            {
                return;
            }
        }

        for (int i = 0; i < dirButtons.Length; i++)
        {
            arrow[i]     = false;
            remainder[i] = 0;
        }

        if (way && !moveVector.Equals(new Pair <int, int>(0, 0)))
        {
            gameObject.SetActive(false);
            arrowObject.SetActive(false);

            ObjectEventSequence sequence = new ObjectEventSequence();
            sequence.addEvent("step", new object[] { moveVector, curUnitPointer });
            sequence.addEvent("behaviour", new object[] { curUnitPointer });

            curUnitPointer.adr.levelPointer.eventSystem.addSequence(sequence, 1);
            curUnitPointer.adr.levelPointer.eventSystem.isExecutionAvailable = true;
        }
    }