public override void Initialize(EnemyPoint enemyPoint, Vector3 islePosition, Vector3 navMeshPosition, NavMeshTarget target)
    {
        base.Initialize(enemyPoint, islePosition, navMeshPosition, target);

        canShoot = false;

        StartCoroutine(ShotRythmHandler());
    }
예제 #2
0
    public override void Initialize(EnemyPoint enemyPoint, Vector3 islePosition, Vector3 navMeshPosition, NavMeshTarget target)
    {
        base.Initialize(enemyPoint, islePosition, navMeshPosition, target);

        posBeforeShooting = transform.position;
        loadingShot       = null;

        octopusRythm = StartCoroutine(octopusRythmHandler());
    }
예제 #3
0
    public void TryToMove()
    {
        EnemyPoint pointToMove = _actualPoint.NextWaypoint;

        if (pointToMove != null)
        {
            MoveToNextPoint(pointToMove);
        }
    }
예제 #4
0
 public void Disconnect()
 {
     if (!Mode)
     {
         if (ClientsPool.ContainsKey(EnemyPoint.ToString()))
         {
             SendMessage(ClientsPool[EnemyPoint.ToString()].GetStream(), MessageCode.Fin);
             ClientsPool[EnemyPoint.ToString()].Close();
         }
     }
 }
예제 #5
0
 private void ClearWatingList()
 {
     //clears all waiting users except the choosen one
     Dictionary <string, TcpClient> .KeyCollection Keys = ClientsPool.Keys;
     foreach (string key in Keys)
     {
         if (key != EnemyPoint.ToString())
         {
             ClientsPool.Remove(key);
         }
     }
 }
예제 #6
0
 protected void MoveToPoint(EnemyPoint point, float time)
 {
     _endMovePosition = point.Point.position;
     point.OccupyPoint(this);
     StopOccupyingActualPoint();
     _actualPoint       = point;
     _startMovePosition = transform.position;
     _currentLevelHandler.ChangeStateOfEnemy(Enemy, EnemyBehaviourState.Idle);
     State       = EnemyBehaviourState.MovingToPoint;
     _timeToMove = time;
     _idleTimer  = 0;
     _moveTimer  = 0;
 }
예제 #7
0
    private void MoveToSecondPoint()
    {
        EnemyPoint pointToMove = FindRandomNotOccupiedEnemyPoint(_transforms.CrabSecondMovePositions);
        float      rotation    = Vector2.Angle(transform.position, pointToMove.Point.transform.position);

        transform.Rotate(new Vector3(0, 0, -rotation));

        if (pointToMove != null)
        {
            MoveToNextPoint(pointToMove);
        }

        MovedToSecondPoint = true;
    }
예제 #8
0
    protected EnemyPoint FindRandomNotOccupiedEnemyPoint(EnemyPoint[] points)
    {
        EnemyPoint result = null;

        EnemyPoint[] shuffledPoints = new EnemyPoint[points.Length];
        points.CopyTo(shuffledPoints, 0);
        new System.Random().Shuffle(shuffledPoints);
        for (int i = 0; i < shuffledPoints.Length; i++)
        {
            if (!shuffledPoints[i].IsOccupied)
            {
                return(shuffledPoints[i]);
            }
        }
        return(result);
    }
예제 #9
0
    public virtual void Initialize(EnemyPoint enemyPoint, Vector3 islePosition, Vector3 navMeshPosition, NavMeshTarget target)
    {
        mr          = ObjectPool.getObjectPool();
        player      = mr.getObject(ObjectPool.categorie.essential, (int)ObjectPool.essential.player);
        currentIsle = LevelManager.getLevelManager().currentIsle.IsleObj;

        GetComponent <Stats>().resetStats();

        ghostCopy = GetComponent <GhostCopy>();
        ghostCopy.MovedByGhost = true;

        transform.position = enemyPoint.transform.position;
        gameObject.GetComponent <GhostCopy>().IslePosition = islePosition;

        GameObject slimeGhost = getGhost();

        slimeGhost.GetComponent <NavMeshAgent>().enabled = false;
        slimeGhost.transform.position = navMeshPosition + enemyPoint.getPositionOnIsle();
        slimeGhost.GetComponent <GhostMovement>().NavMashPosition = navMeshPosition;
        slimeGhost.GetComponent <GhostMovement>().target          = target;
        slimeGhost.GetComponent <GhostMovement>().ghostCopy       = ghostCopy;
        slimeGhost.GetComponent <NavMeshAgent>().enabled          = true;
        gameObject.GetComponent <GhostCopy>().ghost = slimeGhost.GetComponent <GhostMovement>();
    }
예제 #10
0
            public List <EnemyData> AnalyzeBoard(ColorCrazeBoard.ColorCrazeBoard board, int myX, int myY)
            {
                var enemies = new List <EnemyData>();


                for (var i = 0; i < board.Width; i++)
                {
                    if (i == MyId)
                    {
                        continue;
                    }

                    enemies.Add(new EnemyData {
                        EnemyId = i
                    });
                }

                Parallel.ForEach(enemies, enemy =>
                {
                    var points = new List <EnemyPoint>();

                    for (var i = 0; i < board.Width; i++)
                    {
                        for (var j = 0; j < board.Height; j++)
                        {
                            if (board[i, j].Owner != enemy.EnemyId)
                            {
                                continue;
                            }

                            var point = new EnemyPoint
                            {
                                X  = i,
                                Y  = j,
                                dX = Math.Abs(i - myX),
                                dY = Math.Abs(j - myY)
                            };


                            if (i <= myX && j < myY)
                            {
                                point.RelativeQuadrant = 1;
                            }
                            else if (i > myX && j <= myY)
                            {
                                point.RelativeQuadrant = 2;
                            }
                            else if (i >= myX && j > myY)
                            {
                                point.RelativeQuadrant = 3;
                            }
                            else if (i < myX && j >= myY)
                            {
                                point.RelativeQuadrant = 4;
                            }

                            points.Add(point);
                        }
                    }

                    enemy.Points = points;
                });

                return(enemies);
            }
예제 #11
0
        public byte[] Write()
        {
            MemoryStream       m  = new MemoryStream();
            EndianBinaryWriter er = new EndianBinaryWriter(m, Endianness.LittleEndian);
            int NrSections        = 0;

            if (ObjectInformation != null)
            {
                NrSections++;
            }
            if (Path != null)
            {
                NrSections++;
            }
            if (Point != null)
            {
                NrSections++;
            }
            if (Stage != null)
            {
                NrSections++;
            }
            if (KartPointStart != null)
            {
                NrSections++;
            }
            if (KartPointJugem != null)
            {
                NrSections++;
            }
            if (KartPointSecond != null)
            {
                NrSections++;
            }
            if (KartPointCannon != null)
            {
                NrSections++;
            }
            if (KartPointMission != null)
            {
                NrSections++;
            }
            if (CheckPoint != null)
            {
                NrSections++;
            }
            if (CheckPointPath != null)
            {
                NrSections++;
            }
            if (ItemPoint != null)
            {
                NrSections++;
            }
            if (ItemPath != null)
            {
                NrSections++;
            }
            if (EnemyPoint != null)
            {
                NrSections++;
            }
            if (EnemyPath != null)
            {
                NrSections++;
            }
            if (MiniGameEnemyPoint != null)
            {
                NrSections++;
            }
            if (MiniGameEnemyPath != null)
            {
                NrSections++;
            }
            if (Area != null)
            {
                NrSections++;
            }
            if (Camera != null)
            {
                NrSections++;
            }
            Header.SectionOffsets = new UInt32[NrSections];
            Header.Write(er);

            int SectionIdx = 0;

            if (ObjectInformation != null)
            {
                WriteHeaderInfo(er, SectionIdx);
                ObjectInformation.Write(er);
                SectionIdx++;
            }
            if (Path != null)
            {
                WriteHeaderInfo(er, SectionIdx);
                Path.Write(er);
                SectionIdx++;
            }
            if (Point != null)
            {
                WriteHeaderInfo(er, SectionIdx);
                Point.Write(er);
                SectionIdx++;
            }
            if (Stage != null)
            {
                WriteHeaderInfo(er, SectionIdx);
                Stage.Write(er);
                SectionIdx++;
            }
            if (KartPointStart != null)
            {
                WriteHeaderInfo(er, SectionIdx);
                KartPointStart.Write(er);
                SectionIdx++;
            }
            if (KartPointJugem != null)
            {
                WriteHeaderInfo(er, SectionIdx);
                KartPointJugem.Write(er);
                SectionIdx++;
            }
            if (KartPointSecond != null)
            {
                WriteHeaderInfo(er, SectionIdx);
                KartPointSecond.Write(er);
                SectionIdx++;
            }
            if (KartPointCannon != null)
            {
                WriteHeaderInfo(er, SectionIdx);
                KartPointCannon.Write(er);
                SectionIdx++;
            }
            if (KartPointMission != null)
            {
                WriteHeaderInfo(er, SectionIdx);
                KartPointMission.Write(er);
                SectionIdx++;
            }
            if (CheckPoint != null)
            {
                WriteHeaderInfo(er, SectionIdx);
                CheckPoint.Write(er);
                SectionIdx++;
            }
            if (CheckPointPath != null)
            {
                WriteHeaderInfo(er, SectionIdx);
                CheckPointPath.Write(er);
                SectionIdx++;
            }
            if (ItemPoint != null)
            {
                WriteHeaderInfo(er, SectionIdx);
                ItemPoint.Write(er);
                SectionIdx++;
            }
            if (ItemPath != null)
            {
                WriteHeaderInfo(er, SectionIdx);
                ItemPath.Write(er);
                SectionIdx++;
            }
            if (EnemyPoint != null)
            {
                WriteHeaderInfo(er, SectionIdx);
                EnemyPoint.Write(er);
                SectionIdx++;
            }
            if (EnemyPath != null)
            {
                WriteHeaderInfo(er, SectionIdx);
                EnemyPath.Write(er);
                SectionIdx++;
            }
            if (MiniGameEnemyPoint != null)
            {
                WriteHeaderInfo(er, SectionIdx);
                MiniGameEnemyPoint.Write(er);
                SectionIdx++;
            }
            if (MiniGameEnemyPath != null)
            {
                WriteHeaderInfo(er, SectionIdx);
                MiniGameEnemyPath.Write(er);
                SectionIdx++;
            }
            if (Area != null)
            {
                WriteHeaderInfo(er, SectionIdx);
                Area.Write(er);
                SectionIdx++;
            }
            if (Camera != null)
            {
                WriteHeaderInfo(er, SectionIdx);
                Camera.Write(er);
                SectionIdx++;
            }

            byte[] result = m.ToArray();
            er.Close();
            return(result);
        }
예제 #12
0
 private void MoveToNextPoint(EnemyPoint point)
 {
     _movingPoint = !_movingPoint;
     MoveToPoint(point, UnityEngine.Random.Range(_waypointMoveTimeMin, _waypointMoveTimeMax));
 }
예제 #13
0
        public byte[] Write()
        {
            MemoryStream       m  = new MemoryStream();
            EndianBinaryWriter er = new EndianBinaryWriter(m, Endianness.LittleEndian);
            int NrSections        = 0x12;

            Header.SectionOffsets = new UInt32[NrSections];
            Header.Write(er);

            int SectionIdx = 0;

            if (KartPoint != null)
            {
                WriteHeaderInfo(er, SectionIdx);
                KartPoint.Write(er);
                SectionIdx++;
            }
            if (EnemyPoint != null)
            {
                WriteHeaderInfo(er, SectionIdx);
                EnemyPoint.Write(er);
                SectionIdx++;
            }
            if (EnemyPointPath != null)
            {
                WriteHeaderInfo(er, SectionIdx);
                EnemyPointPath.Write(er);
                SectionIdx++;
            }
            if (ItemPoint != null)
            {
                WriteHeaderInfo(er, SectionIdx);
                ItemPoint.Write(er);
                SectionIdx++;
            }
            if (ItemPointPath != null)
            {
                WriteHeaderInfo(er, SectionIdx);
                ItemPointPath.Write(er);
                SectionIdx++;
            }
            if (CheckPoint != null)
            {
                WriteHeaderInfo(er, SectionIdx);
                CheckPoint.Write(er);
                SectionIdx++;
            }
            if (CheckPointPath != null)
            {
                WriteHeaderInfo(er, SectionIdx);
                CheckPointPath.Write(er);
                SectionIdx++;
            }
            if (GlobalObject != null)
            {
                WriteHeaderInfo(er, SectionIdx);
                GlobalObject.Write(er);
                SectionIdx++;
            }
            if (PointInfo != null)
            {
                WriteHeaderInfo(er, SectionIdx);
                PointInfo.Write(er);
                SectionIdx++;
            }
            if (Area != null)
            {
                WriteHeaderInfo(er, SectionIdx);
                Area.Write(er);
                SectionIdx++;
            }
            if (Camera != null)
            {
                WriteHeaderInfo(er, SectionIdx);
                Camera.Write(er);
                SectionIdx++;
            }
            if (JugemPoint != null)
            {
                WriteHeaderInfo(er, SectionIdx);
                JugemPoint.Write(er);
                SectionIdx++;
            }
            if (CannonPoint != null)
            {
                WriteHeaderInfo(er, SectionIdx);
                CannonPoint.Write(er);
                SectionIdx++;
            }
            if (MissionPoint != null)
            {
                WriteHeaderInfo(er, SectionIdx);
                MissionPoint.Write(er);
                SectionIdx++;
            }
            if (StageInfo != null)
            {
                WriteHeaderInfo(er, SectionIdx);
                StageInfo.Write(er);
                SectionIdx++;
            }
            if (CourseSect != null)
            {
                WriteHeaderInfo(er, SectionIdx);
                CourseSect.Write(er);
                SectionIdx++;
            }
            if (GliderPoint != null)
            {
                WriteHeaderInfo(er, SectionIdx);
                GliderPoint.Write(er);
                SectionIdx++;
            }
            if (GliderPointPath != null)
            {
                WriteHeaderInfo(er, SectionIdx);
                GliderPointPath.Write(er);
                SectionIdx++;
            }
            WriteHeaderFileSize(er);
            byte[] result = m.ToArray();
            er.Close();
            return(result);
        }