private void fi_BumpIntoShip(CShipEntity _otherShip)
        {
            CPlayer player      = CGameController.Get.mu_PlayerDict[mu_deviceId];
            CPlayer otherPlayer = CGameController.Get.mu_PlayerDict[_otherShip.mu_deviceId];

            player.pu_healthAmount      -= 1;
            otherPlayer.pu_healthAmount -= 1;
        }
 private void fi_TryShootEnemyShip(int _xStep, int _yStep, int _maxSteps)
 {
     for (int mul = 0; mul < _maxSteps; mul++)
     {
         List <AOceanEntity> list = CGameController.Get.mu_ocean.fu_GetListAt(pu_x + _xStep * mul, pu_y + _yStep * mul);
         if (list.Count > 0)
         {
             if (list[0].pu_EntityType == EOceanEntityType.Ship)
             {
                 CShipEntity otherShip   = (CShipEntity)list[0];
                 CPlayer     otherPlayer = CGameController.Get.mu_PlayerDict[otherShip.mu_deviceId];
                 otherPlayer.pu_healthAmount -= 1;
             }
             break;
         }
     }
 }
        public void fu_CreateOcean(int _numRocks, int _numSwirls, int _numStreams)
        {
            // first, distribute some rocks
            UnityEngine.Random.InitState((int)System.DateTime.Now.Ticks);
            AOceanEntity entity = null;
            int          x;
            int          y;

            // make rocks
            for (int i = 0; i < _numRocks; i++)
            {
                do
                {
                    x = UnityEngine.Random.Range((int)0, (int)mu_xSize);
                    y = UnityEngine.Random.Range((int)0, (int)mu_ySize);
                } while (fu_IsPlaceOccupied(x, y));
                entity = new CRockEntity(x, y, EOrientation.North);
                mi_entityList.Add(entity);
            }

            // make ships
            foreach (var kvp in CGameController.Get.mu_PlayerDict)
            {
                Debug.Log("Creating Ship!");

                do
                {
                    x = UnityEngine.Random.Range((int)0, (int)mu_xSize);
                    y = UnityEngine.Random.Range((int)0, (int)mu_ySize);
                } while (fu_IsPlaceOccupied(x, y));

                EOrientation or = (EOrientation)UnityEngine.Random.Range(0, (int)EOrientation.MAX_ORIENTATION);

                int deviceId = kvp.Key;
                entity = new CShipEntity(x, y, or, deviceId);
                mi_entityList.Add(entity);

                Debug.Log("Ship " + entity.ToString() + " created!");
            }

            // make swirls
            for (int i = 0; i < _numSwirls; i++)
            {
                do
                {
                    x = UnityEngine.Random.Range((int)0, (int)mu_xSize);
                    y = UnityEngine.Random.Range((int)0, (int)mu_ySize);
                } while (fi_IsPlaceOccupiedForSwirl(x, y));

                // top row
                entity = new CSwirlClockEntity(x - 1, y - 1, EOrientation.East);
                mi_entityList.Add(entity);
                entity = new CStreamEntity(x, y - 1, EOrientation.East);
                mi_entityList.Add(entity);
                entity = new CSwirlClockEntity(x + 1, y - 1, EOrientation.South);
                mi_entityList.Add(entity);

                // center row
                entity = new CStreamEntity(x - 1, y, EOrientation.North);
                mi_entityList.Add(entity);
                entity = new CSwirlCenterEntity(x, y, EOrientation.MAX_ORIENTATION);
                mi_entityList.Add(entity);
                entity = new CStreamEntity(x + 1, y, EOrientation.South);
                mi_entityList.Add(entity);

                // bottom row
                entity = new CSwirlClockEntity(x - 1, y + 1, EOrientation.North);
                mi_entityList.Add(entity);
                entity = new CStreamEntity(x, y + 1, EOrientation.West);
                mi_entityList.Add(entity);
                entity = new CSwirlClockEntity(x + 1, y + 1, EOrientation.West);
                mi_entityList.Add(entity);
            }

            // make streams
            for (int i = 0; i < _numStreams; i++)
            {
                do
                {
                    x = UnityEngine.Random.Range((int)0, (int)mu_xSize);
                    y = UnityEngine.Random.Range((int)0, (int)mu_ySize);
                } while (fu_IsPlaceOccupied(x, y));

                EOrientation or = (EOrientation)UnityEngine.Random.Range(0, (int)EOrientation.MAX_ORIENTATION);
                entity = new CRockEntity(x, y, or);
                mi_entityList.Add(entity);
            }
        }