Exemplo n.º 1
0
        public IHttpActionResult PostPlacementProvider(PlacementProvider placementProvider)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            db.PlacementProviders.Add(placementProvider);

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateException)
            {
                if (PlacementProviderExists(placementProvider.ProviderID))
                {
                    return(Conflict());
                }
                else
                {
                    throw;
                }
            }

            //return CreatedAtRoute("DefaultApi", new { id = placementProvider.ProviderID }, placementProvider);
            return(Ok(placementProvider));
        }
Exemplo n.º 2
0
        public IHttpActionResult PutPlacementProvider(int id, PlacementProvider placementProvider)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != placementProvider.ProviderID)
            {
                return(BadRequest());
            }

            db.Entry(placementProvider).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!PlacementProviderExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
Exemplo n.º 3
0
        /// <summary>
        /// Creates new dungeon.
        /// </summary>
        /// <param name="instanceId"></param>
        /// <param name="dungeonName"></param>
        /// <param name="itemId"></param>
        /// <param name="seed"></param>
        /// <param name="floorPlan"></param>
        /// <param name="creature"></param>
        public Dungeon(long instanceId, string dungeonName, int itemId, int seed, int floorPlan, Creature creature)
        {
            dungeonName = dungeonName.ToLower();

            Log.Debug("Dungeon: Creating '{0}', item id: {1}, seed: {2}, floorPlan: {3}", dungeonName, itemId, seed, floorPlan);

            // Get data
            this.Data = AuraData.DungeonDb.Find(dungeonName);
            if (this.Data == null)
            {
                throw new ArgumentException("Dungeon '" + dungeonName + "' doesn't exist.");
            }

            _treasureChests            = new List <Prop>();
            _treasurePlacementProvider = new PlacementProvider(Placement.Treasure8, 750);
            this.Regions     = new List <DungeonRegion>();
            _clearedSections = new HashSet <int>();

            this.InstanceId = instanceId;
            this.Name       = dungeonName;
            this.ItemId     = itemId;
            this.Seed       = seed;
            this.FloorPlan  = floorPlan;
            this.Options    = XElement.Parse("<option />");

            this.Creators     = new List <long>();
            this.RpCharacters = new List <long>();
            this.PartyLeader  = creature;

            // Only creatures who actually ENTER the dungeon at creation are considered "dungeon founders".
            this.Creators.AddRange(creature.Party.GetCreaturesOnAltar(creature.RegionId).Select(a => a.EntityId));

            // Add the creator to the list if something went wrong on the altar check.
            if (this.Creators.Count == 0)
            {
                this.Creators.Add(creature.EntityId);
            }

            // Get script
            this.Script = ChannelServer.Instance.ScriptManager.DungeonScripts.Get(this.Name);
            if (this.Script == null)
            {
                Log.Warning("Dungeon: No script found for '{0}'.", this.Name);
            }

            // Generate floors
            this.Generator = new DungeonGenerator(this.Name, this.ItemId, this.Seed, this.FloorPlan, this.Options.ToString());

            // Prepare puzzles
            for (int iFloor = 0; iFloor < this.Generator.Floors.Count; ++iFloor)
            {
                this.GeneratePuzzles(iFloor);
            }

            this.GenerateRegions();
        }
Exemplo n.º 4
0
        /// <summary>
        /// Creates new dungeon.
        /// </summary>
        /// <param name="instanceId"></param>
        /// <param name="dungeonName"></param>
        /// <param name="itemId"></param>
        /// <param name="seed"></param>
        /// <param name="floorPlan"></param>
        /// <param name="creature"></param>
        public Dungeon(long instanceId, string dungeonName, int itemId, int seed, int floorPlan, Creature creature)
        {
            dungeonName = dungeonName.ToLower();

            // Get data
            this.Data = AuraData.DungeonDb.Find(dungeonName);
            if (this.Data == null)
            {
                throw new ArgumentException("Dungeon '" + dungeonName + "' doesn't exist.");
            }

            _treasureChests            = new List <TreasureChest>();
            _treasurePlacementProvider = new PlacementProvider(Placement.Treasure8, 750);
            this.Regions = new List <DungeonRegion>();

            this.InstanceId = instanceId;
            this.Name       = dungeonName;
            this.ItemId     = itemId;
            this.Seed       = seed;
            this.FloorPlan  = floorPlan;
            this.Options    = XElement.Parse("<option />");

            this.Party = new List <Creature>();            // = creature.Party; || = party;
            this.Party.Add(creature);
            this.PartyLeader = creature;

            if (creature.IsInParty)
            {
                // Only creatures who actually ENTER the dungeon at creation are considered "dungeon founders".
                this.Party.AddRange(creature.Party.OnAltar());
            }

            // Get script
            this.Script = ChannelServer.Instance.ScriptManager.DungeonScripts.Get(this.Name);
            if (this.Script == null)
            {
                Log.Warning("Dungeon: No script found for '{0}'.", this.Name);
            }

            // Generate floors
            this.Generator = new DungeonGenerator(this.Name, this.ItemId, this.Seed, this.FloorPlan, this.Options.ToString());

            // Prepare puzzles
            for (int iFloor = 0; iFloor < this.Generator.Floors.Count; ++iFloor)
            {
                this.GeneratePuzzles(iFloor);
            }

            this.GenerateRegions();
        }
Exemplo n.º 5
0
        public IHttpActionResult DeletePlacementProvider(int id)
        {
            PlacementProvider placementProvider = db.PlacementProviders.Find(id);

            if (placementProvider == null)
            {
                return(NotFound());
            }

            db.PlacementProviders.Remove(placementProvider);
            db.SaveChanges();

            return(Ok(placementProvider));
        }
Exemplo n.º 6
0
    public void StartPlaying()
    {
        //UIManager.Instance.ShowUI(MainUI);
        if (provider == null)
        {
            if (IsNonXR)
            {
                provider = new NonXRPlacementProvider();
                StartPlacement();
                placingArea = false;
                HelpUI.gameObject.SetActive(false);
                playArea.SetArea();
                provider.FinishInit();
            }
            else
            {
#if UNITY_EDITOR || UNITY_STANDALONE
                if (UseSteamVR && UnityEngine.XR.XRDevice.isPresent)
                {
                    IsUsingSteamVR = true;
                    provider       = new SteamVRPlacementProvider();
                    StartPlacement();
                }
                else
                {
                    provider = new TestPlacementProvider();
                    StartPlacement();
                }
#elif VUFORIA
                provider = new VuforiaPlacementProvider();
                StartPlacement();
#elif UNITY_ANDROID
                StartCoroutine(WaitToStart());
#else
                provider = new ARPlacementProvider();
                StartPlacement();
#endif
            }
        }
        else
        {
            SetArea(AreaType.Play);
            if (placingArea)
            {
                //UIManager.Instance.ShowUI(HelpUI.gameObject);
                LoadingUI.SetActive(false);
                HelpUI.gameObject.SetActive(true);
            }
        }
    }
Exemplo n.º 7
0
        protected void IntersectInflated(List <Vector3I> outHitPositions, MyCubeGrid grid)
        {
            float maxDist         = 2000;
            var   gridSizeInflate = new Vector3I(100, 100, 100);

            if (grid != null)
            {
                PlacementProvider.RayCastGridCells(grid, outHitPositions, gridSizeInflate, maxDist);
            }
            else
            {
                float gridSize = MyDefinitionManager.Static.GetCubeSize(CurrentBlockDefinition.CubeSize);
                MyCubeGrid.RayCastStaticCells(IntersectionStart, IntersectionStart + IntersectionDirection * maxDist, outHitPositions, gridSize, gridSizeInflate);
            }
        }
Exemplo n.º 8
0
    IEnumerator WaitToStart()
    {
        //UIManager.Instance.ShowUI(LoadingUI);
        HelpUI.gameObject.SetActive(false);
        LoadingUI.SetActive(true);

        /*GoogleARCore.AsyncTask<GoogleARCore.ApkAvailabilityStatus> availTask = GoogleARCore.Session.CheckApkAvailability();
         * yield return availTask.WaitForCompletion();
         *
         * if (availTask.Result == GoogleARCore.ApkAvailabilityStatus.SupportedInstalled)
         * {*/
        provider = new ARPlacementProvider();

        /*}
         * else if (availTask.Result == GoogleARCore.ApkAvailabilityStatus.SupportedApkTooOld || availTask.Result == GoogleARCore.ApkAvailabilityStatus.SupportedNotInstalled)
         * {
         *  GoogleARCore.AsyncTask<GoogleARCore.ApkInstallationStatus> installTask = GoogleARCore.Session.RequestApkInstallation(false);
         *  yield return installTask.WaitForCompletion();
         *
         *  if (installTask.Result == GoogleARCore.ApkInstallationStatus.Success)
         *  {
         *      provider = new ARPlacementProvider();
         *  }
         *  else
         *  {
         *      provider = new TestPlacementProvider();
         *  }
         * }
         * else
         * {
         *  provider = new TestPlacementProvider();
         * }*/

        yield return(new WaitUntil(() => provider.IsReady()));

        yield return(new WaitForEndOfFrame());

        StartPlacement();
    }