示例#1
0
        public virtual void Tick(RealmTime time)
        {
            if (IsLimbo)
            {
                return;
            }

            for (int i = 0; i < Timers.Count; i++)
            {
                if (Timers[i].Tick(this, time))
                {
                    Timers.RemoveAt(i);
                    i--;
                }
            }

            foreach (var i in Players)
            {
                i.Value.Tick(time);
            }

            if (EnemiesCollision != null)
            {
                foreach (var i in EnemiesCollision.GetActiveChunks(PlayersCollision))
                {
                    i.Tick(time);
                }
                foreach (var i in StaticObjects.Where(x => x.Value is Decoy))
                {
                    i.Value.Tick(time);
                }
            }
            else
            {
                foreach (var i in Enemies)
                {
                    i.Value.Tick(time);
                }
                foreach (var i in StaticObjects)
                {
                    i.Value.Tick(time);
                }
            }
            foreach (var i in Projectiles)
            {
                i.Value.Tick(time);
            }

            if (Players.Count != 0 || !closable || !IsDungeon())
            {
                return;
            }
            var vault = this as Vault;

            if (vault != null)
            {
                Manager.RemoveVault(vault.AccountId);
            }
            Manager.RemoveWorld(this);
        }
示例#2
0
 public virtual void LeaveWorld(Entity entity)
 {
     if (entity is Player)
     {
         Player dummy;
         Players.TryRemove(entity.Id, out dummy);
         PlayersCollision.Remove(entity);
     }
     else if (entity is Enemy)
     {
         Enemy dummy;
         Enemies.TryRemove(entity.Id, out dummy);
         EnemiesCollision.Remove(entity);
     }
     else if (entity is Projectile)
     {
         Projectile p = entity as Projectile;
         Projectiles.TryRemove(new Tuple <int, byte>(p.ProjectileOwner.Self.Id, p.ProjectileId), out p);
     }
     else if (entity is StaticObject)
     {
         StaticObject dummy;
         StaticObjects.TryRemove(entity.Id, out dummy);
         if (entity is Decoy)
         {
             PlayersCollision.Remove(entity);
         }
         else
         {
             EnemiesCollision.Remove(entity);
         }
     }
     entity.Owner = null;
 }
示例#3
0
        public int Compare(XElement x, XElement y)
        {
            int cmp1 = x.Attribute("type").Value.CompareTo(y.Attribute("type").Value);

            if (cmp1 != 0)
            {
                return(-cmp1);
            }
            string s1 = StaticObjects.GetField(x, "http://fogid.net/o/from-date");
            string s2 = StaticObjects.GetField(y, "http://fogid.net/o/from-date");

            if (string.IsNullOrEmpty(s1))
            {
                s1 = "_";                          // + x.Attribute("id").Value;
            }
            if (string.IsNullOrEmpty(s2))
            {
                s2 = "_";                // + y.Attribute("id").Value;
            }
            int cmp2 = s1.CompareTo(s2); //string.Compare(s1, s2);

            if (cmp2 != 0)
            {
                return(cmp2);
            }
            return(x.Attribute("id").Value.CompareTo(y.Attribute("id").Value));
        }
示例#4
0
    private void SetGoalObject <type> () where type : StaticObjects
    {
        var           ShortestGoalPosition = new Vector3();
        var           myPosition           = rb.transform.position;
        var           shortestDistFound    = float.MaxValue;
        StaticObjects tempGoalObject       = null;

        foreach (var element in ListOfStaticGameObjects)
        {
            var correctTypeOfStaticObject = element as type;
            if (correctTypeOfStaticObject != null)
            {
                var dist = (correctTypeOfStaticObject.transform.position - myPosition).sqrMagnitude;                            //hvor langt er det fra element til meg

                if (dist < shortestDistFound)                                                                                   //hvis element er nærmere, dvs dist er lavere enn tidligere funnet
                {
                    shortestDistFound    = dist;                                                                                //sett element til å være beste kandidat og sett hittil beste avstand til dist
                    ShortestGoalPosition = correctTypeOfStaticObject.transform.position;
                    tempGoalObject       = correctTypeOfStaticObject;
                }
            }
        }
        if (tempGoalObject != null)
        {
            GoalObject = tempGoalObject;
            GoalPos    = ShortestGoalPosition;
        }
    }
示例#5
0
        public Entity GetEntity(int id)
        {
            Player ret1;

            if (Players.TryGetValue(id, out ret1))
            {
                return(ret1);
            }
            Enemy ret2;

            if (Enemies.TryGetValue(id, out ret2))
            {
                return(ret2);
            }
            StaticObject ret3;

            if (StaticObjects.TryGetValue(id, out ret3))
            {
                return(ret3);
            }
            ItemEntity ret4;

            if (ItemEntities.TryGetValue(id, out ret4))
            {
                return(ret4);
            }
            return(null);
        }
        // Reloads the level and reinitializes Mario to his default state.
        public void Reset()
        {
            Enemies.Clear();
            Blocks.Clear();
            Pipes.Clear();
            Coins.Clear();
            Checkpoints.Clear();
            Flagpoles.Clear();
            levelData.Clear();

            InvisibleBarrier = new InvisibleBarrier(Vector2.Zero);
            CoinRoomPosition = Vector2.Zero;

            DynamicObjects.Clear();
            StaticObjects.Clear();

            PowerUpState = false;

            Mario.Instance.ResetPlayer();

            SoundManager.Instance.gameOverPlayOnce = true;

            levelData = ParseLevelCSV(fileName);
            BuildLevel(levelData);
        }
示例#7
0
        public virtual void LeaveWorld(Entity entity)
        {
            if (entity is Player)
            {
                Player dummy;
                Players.TryRemove(entity.Id, out dummy);
                PlayersCollision.Remove(entity);

                // if in trade, cancel it...
                if (dummy.tradeTarget != null)
                {
                    dummy.CancelTrade();
                }
            }
            else if (entity is Enemy)
            {
                Enemy dummy;
                Enemies.TryRemove(entity.Id, out dummy);
                EnemiesCollision.Remove(entity);
                if (entity.ObjectDesc.Quest)
                {
                    Quests.TryRemove(entity.Id, out dummy);
                }
            }
            else if (entity is Projectile)
            {
                var p = entity as Projectile;
                Projectiles.TryRemove(new Tuple <int, byte>(p.ProjectileOwner.Self.Id, p.ProjectileId), out p);
            }
            else if (entity is StaticObject)
            {
                StaticObject dummy;
                StaticObjects.TryRemove(entity.Id, out dummy);

                if (entity.ObjectDesc?.BlocksSight == true)
                {
                    if (Blocking == 3)
                    {
                        Sight.UpdateRegion(Map, (int)entity.X, (int)entity.Y);
                    }

                    foreach (var plr in Players.Values
                             .Where(p => MathsUtils.DistSqr(p.X, p.Y, entity.X, entity.Y) < Player.RadiusSqr))
                    {
                        plr.Sight.UpdateCount++;
                    }
                }

                if (entity is Decoy)
                {
                    PlayersCollision.Remove(entity);
                }
                else
                {
                    EnemiesCollision.Remove(entity);
                }
            }

            entity.Dispose();
        }
示例#8
0
        public void TickLogic(RealmTime time)
        {
            using (TimedLock.Lock(_deleteLock))
            {
                if (Deleted)
                {
                    return;
                }

                if (EnemiesCollision != null)
                {
                    foreach (var i in EnemiesCollision.GetActiveChunks(PlayersCollision))
                    {
                        i.Tick(time);
                    }
                    foreach (var i in StaticObjects.Where(x => x.Value is Decoy))
                    {
                        i.Value.Tick(time);
                    }
                }
                else
                {
                    foreach (var i in Enemies)
                    {
                        i.Value.Tick(time);
                    }
                    foreach (var i in StaticObjects)
                    {
                        i.Value.Tick(time);
                    }
                }
            }
        }
示例#9
0
        private void FromWorldMap(Stream dat)
        {
            var map = new Wmap(Manager.GameData);

            Map        = map;
            entityInc  = 0;
            entityInc += Map.Load(dat, 0);

            int w = Map.Width, h = Map.Height;

            Obstacles = new byte[w, h];
            for (var y = 0; y < h; y++)
            {
                for (var x = 0; x < w; x++)
                {
                    try
                    {
                        var        tile = Map[x, y];
                        ObjectDesc desc;
                        if (Manager.GameData.Tiles[tile.TileId].NoWalk)
                        {
                            Obstacles[x, y] = 3;
                        }
                        if (Manager.GameData.ObjectDescs.TryGetValue(tile.ObjType, out desc))
                        {
                            if (desc.Class == "Wall" ||
                                desc.Class == "ConnectedWall" ||
                                desc.Class == "CaveWall")
                            {
                                Obstacles[x, y] = 2;
                            }
                            else if (desc.OccupySquare || desc.EnemyOccupySquare)
                            {
                                Obstacles[x, y] = 1;
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        Log.Error(ex);
                    }
                }
            }
            EnemiesCollision = new CollisionMap <Entity>(0, w, h);
            PlayersCollision = new CollisionMap <Entity>(1, w, h);

            Projectiles.Clear();
            StaticObjects.Clear();
            Enemies.Clear();
            Players.Clear();
            foreach (var i in Map.InstantiateEntities(Manager))
            {
                if (i.ObjectDesc != null &&
                    (i.ObjectDesc.OccupySquare || i.ObjectDesc.EnemyOccupySquare))
                {
                    Obstacles[(int)(i.X - 0.5), (int)(i.Y - 0.5)] = 2;
                }
                EnterWorld(i);
            }
        }
示例#10
0
 public void Initialize()
 {
     StaticObjects.Clear();
     DynamicObjects.Clear();
     NonCollidableObjects.Clear();
     dynamicLoader.Initialize();
 }
示例#11
0
        public TestHost()
        {
            InitializeComponent();

            string pathForSystem          = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);
            string pathForServiceSettings = pathForSystem + "\\StackHash";

            if (!Directory.Exists(pathForServiceSettings))
            {
                Directory.CreateDirectory(pathForServiceSettings);
            }

            string testModeFileName     = pathForServiceSettings + "\\testmode.xml";
            string testSettingsFileName = pathForServiceSettings + "\\testsettings.xml";
            string settingsFileName     = pathForServiceSettings + "\\settings.xml";

            // Now initialise the controller with those settings.
            if (File.Exists(testModeFileName))
            {
                m_StaticObjects = new StaticObjects(testSettingsFileName, false, true);
            }
            else
            {
                m_StaticObjects = new StaticObjects(settingsFileName, false, false);
            }
        }
示例#12
0
        protected void FromWorldMap(Stream dat)
        {
            log.InfoFormat("Loading map for world {0}({1})...", Id, Name);

            Map        = new Wmap(Manager.GameData);
            entityInc  = 0;
            entityInc += Map.Load(dat, 0);

            int w = Map.Width, h = Map.Height;

            EnemiesCollision = new CollisionMap <Entity>(0, w, h);
            PlayersCollision = new CollisionMap <Entity>(1, w, h);
            PetsCollision    = new CollisionMap <Entity>(1, w, h);

            Projectiles.Clear();
            StaticObjects.Clear();
            Enemies.Clear();
            Players.Clear();
            Pets.Clear();
            foreach (Entity i in Map.InstantiateEntities(Manager))
            {
                EnterWorld(i);
            }
            CheckDisposable();
        }
        public void TickLogic(RealmTime time)
        {
            if (EnemiesCollision != null)
            {
                foreach (var i in EnemiesCollision.GetActiveChunks(PlayersCollision))
                {
                    i.Tick(time);
                }
                foreach (var i in StaticObjects.Where(x => x.Value is Decoy))
                {
                    i.Value.Tick(time);
                }
            }
            else
            {
                foreach (var i in Enemies)
                {
                    i.Value.Tick(time);
                }
                foreach (var i in StaticObjects)
                {
                    i.Value.Tick(time);
                }
            }
            foreach (var i in Enemies.Where(_ => _.Value.ObjectDesc?.Group == "Zombies"))
            {
                i.Value.Tick(time);
            }

            foreach (var i in Pets)
            {
                i.Value.Tick(time);
            }
        }
示例#14
0
        public SM3DWorldScene()
        {
            multiSelect = true;

            StaticObjects.Add(new LinkRenderer(this));

            StaticObjects.Add(new ZonePlacementRenderer(this));
        }
示例#15
0
        /// <summary>
        /// Creates a blank SM3DW Scene
        /// </summary>
        public SM3DWorldScene(SM3DWorldZone zone)
        {
            mainZone = zone;

            multiSelect = true;

            StaticObjects.Add(new LinkRenderer(this));
        }
        public void ClearPlayground()
        {
            var staticObjects = new StaticObjects();

            Console.Clear();

            staticObjects.DrawRoad();
        }
示例#17
0
        public async Task BotInfoAsync(ICommandContext ctx)
        {
            var embed = new EmbedBuilder
            {
                Title = "Status",
                Color = Color.Purple
            };

            embed.AddField("Latest version", Utils.ToDiscordTimestamp(new FileInfo(Assembly.GetEntryAssembly().Location).LastWriteTimeUtc, Utils.TimestampInfo.None), true);
            embed.AddField("Last command received", Utils.ToDiscordTimestamp(StaticObjects.LastMessage, Utils.TimestampInfo.TimeAgo), true);
            embed.AddField("Uptime", Utils.ToDiscordTimestamp(StaticObjects.Started, Utils.TimestampInfo.TimeAgo), true);
            embed.AddField("Guild count", StaticObjects.Client.Guilds.Count, true);

            var options = new ComponentBuilder();

            if (StaticObjects.IsBotOwner(ctx.User))
            {
                options.WithSelectMenu("delCache", StaticObjects.AllGameNames.Select(x => new SelectMenuOptionBuilder(x, StaticObjects.Db.GetCacheName(x))).ToList(), placeholder: "Select a game cache to delete (require bot restart)");
            }
            options.WithButton("Show Global Stats", "globalStats");

            await ctx.ReplyAsync(embed : embed.Build(), components : options.Build(), ephemeral : true);

            embed.AddField("Useful links",
#if NSFW_BUILD
                           " - [Source Code](https://github.com/Xwilarg/Sanara)\n" +
                           " - [Website](https://sanara.zirk.eu/)\n" +
#endif
                           " - [Invitation Link](https://discord.com/api/oauth2/authorize?client_id=" + StaticObjects.ClientId + "&scope=bot%20applications.commands)\n"
#if NSFW_BUILD
                           +
                           " - [Support Server](https://discordapp.com/invite/H6wMRYV)\n" +
                           " - [Top.gg](https://discordbots.org/bot/329664361016721408)"
#endif
                           );
            embed.AddField("Credits",
                           "Programming: [Zirk#0001](https://zirk.eu/)\n" +
                           "With the help of [TheIndra](https://theindra.eu/)\n"
#if NSFW_BUILD
                           +
                           "Profile Picture: [Uikoui](https://www.pixiv.net/en/users/11608780)"
#endif // TODO: Can prob use current pfp for SFW version
                           );

#if NSFW_BUILD
            // Get latests commits
            StringBuilder str  = new();
            var           json = JsonConvert.DeserializeObject <JArray>(await StaticObjects.HttpClient.GetStringAsync("https://api.github.com/repos/Xwilarg/Sanara/commits?per_page=5"));
            foreach (var elem in json)
            {
                var time = Utils.ToDiscordTimestamp(DateTime.ParseExact(elem["commit"]["author"]["date"].Value <string>(), "MM/dd/yyyy HH:mm:ss", CultureInfo.InvariantCulture), Utils.TimestampInfo.None);
                str.AppendLine($"{time}: [{elem["commit"]["message"].Value<string>()}](https://github.com/Xwilarg/Sanara/commit/{elem["sha"].Value<string>()})");
            }
            embed.AddField("Latest changes", str.ToString());

            await ctx.ReplyAsync(embed : embed.Build(), components : options.Build());
#endif
        }
示例#18
0
        public virtual int EnterWorld(Entity entity)
        {
            if (entity is Player)
            {
                entity.Id = GetNextEntityId();
                entity.Init(this);
                Players.TryAdd(entity.Id, entity as Player);
                PlayersCollision.Insert(entity);
                SpawnEntity(entity);
                if (entity.Owner.PvP)
                {
                    (entity as Player).PvP = true;
                    (entity as Player).SendHelp("You have entered a PvP world!");
                }
                else
                {
                    (entity as Player).PvP = false;
                }
            }
            else if (entity is Enemy)
            {
                entity.Id = GetNextEntityId();
                entity.Init(this);
                Enemies.TryAdd(entity.Id, entity as Enemy);
                EnemiesCollision.Insert(entity);
                if (entity.ObjectDesc.Quest)
                {
                    Quests.TryAdd(entity.Id, entity as Enemy);
                }

                if (entity.isPet)
                {
                    Pets.TryAdd(entity.Id, entity);
                }
            }
            else if (entity is Projectile)
            {
                entity.Init(this);
                var prj = entity as Projectile;
                Projectiles[new Tuple <int, byte>(prj.ProjectileOwner.Self.Id, prj.ProjectileId)] = prj;
            }
            else if (entity is StaticObject)
            {
                entity.Id = GetNextEntityId();
                entity.Init(this);
                StaticObjects.TryAdd(entity.Id, entity as StaticObject);
                if (entity is Decoy)
                {
                    PlayersCollision.Insert(entity);
                }
                else
                {
                    EnemiesCollision.Insert(entity);
                }
            }
            return(entity.Id);
        }
示例#19
0
        private void h_FillByFile(int iLevel)
        {
            string sFn = $"../$Data/{iLevel}.csv";

            if (!File.Exists(sFn))
            {
                return;
            }

            string[] arLines = File.ReadAllLines(sFn);
            for (int iY = 0; iY < arLines.Length; iY++)
            {
                string[] arCells = arLines[iY].Split(';');
                for (int iX = 0; iX < arCells.Length; iX++)
                {
                    string s = arCells[iX];
                    // s @ iX, iY
                    switch (s)
                    {
                    case "+":
                    {
                        CPlayerDynamicObject pO =
                            new CPlayerDynamicObject("Player", iX, iY);
                        DynamicObjects.Add(pO);
                        break;
                    }

                    case "*": {
                        CWallStaticObject pO =
                            new CWallStaticObject(iX, iY);
                        StaticObjects.Add(pO);
                        break;
                    }

                    //case "-": {
                    //  CEmptyStaticObject pO =
                    //    new CEmptyStaticObject(iX, iY);
                    //  StaticObjects.Add(pO);
                    //  break;
                    //}
                    case "?": {
                        CBoxDynamicObject pO =
                            new CBoxDynamicObject(iX, iY);
                        DynamicObjects.Add(pO);
                        break;
                    }

                    case "!": {
                        CExitStaticObject pO =
                            new CExitStaticObject(iX, iY);
                        StaticObjects.Add(pO);
                        break;
                    }
                    }
                }
            }
        }
示例#20
0
        static void Main(string[] args)
        {
            LinuxTcpManager.CreateInstance();


            if (StaticObjects.InitObjects())
            {
                Debuger.PrintStr("Init StaticObjects done!", EPRINT_TYPE.NORMAL);
            }
            else
            {
                Debuger.PrintStr("Init StaticObjects faild!", EPRINT_TYPE.ERROR);
                Debuger.ExitProgram();
                return;
            }
            if (SqlWorker.MySqlInit())
            {
                Debuger.PrintStr("Init SqlWorker done!", EPRINT_TYPE.NORMAL);
            }
            else
            {
                //Debuger.PrintStr("Init SqlWorker faild!", EPRINT_TYPE.ERROR);
                //Debuger.ExitProgram();
                //return;
            }
            if (!HttpListenerManager.Instance.Init())
            {
                Debuger.PrintStr("Init HttpListenerManager faild!", EPRINT_TYPE.ERROR);
                Debuger.ExitProgram();
                return;
            }
            else
            {
                Debuger.PrintStr("Init HttpListenerManager done!", EPRINT_TYPE.NORMAL);
            }
            Debuger.PrintStr($"Waiting for client request,time:{DateTime.Now.ToString()}", EPRINT_TYPE.NORMAL);
            if (StaticObjects.IsForceGC)
            {
                Debuger.StartForceGC(StaticObjects.ForceGCInterval);
            }
            HttpRequestHandler.CreateHttpRequestHandler <HttpHandler_ReceiveCommitMsg>("app_commit");
            SmartLockTcpHandlerManager.CreateInstance();

            while (true)
            {
                switch (Debuger.InputCommand())
                {
                case ECOMMAND_TYPE.EXIT:
                    return;

                    break;

                case ECOMMAND_TYPE.NORMAL:
                    break;
                }
            }
        }
示例#21
0
        static void Postfix(bool __result, string ___m_rightItem, ref GameObject ___m_rightItemInstance)
        {
            if (!__result || ___m_rightItemInstance == null)
            {
                return;
            }

            MeshFilter meshFilter = ___m_rightItemInstance.GetComponentInChildren <MeshFilter>();

            if (meshFilter == null)
            {
                return;
            }

            Player player = ___m_rightItemInstance.GetComponentInParent <Player>();

            if (player == null)
            {
                return;
            }

            var vrPlayerSync = player.GetComponent <VRPlayerSync>();

            if (vrPlayerSync != null)
            {
                player.GetComponent <VRPlayerSync>().currentRightWeapon      = meshFilter.gameObject;
                player.GetComponent <VRPlayerSync>().currentRightWeapon.name = ___m_rightItem;
                VrikCreator.resetVrikHandTransform(player);
            }

            if (Player.m_localPlayer != player || !VHVRConfig.UseVrControls())
            {
                return;
            }

            if (StaticObjects.quickSwitch != null)
            {
                StaticObjects.quickSwitch.GetComponent <QuickSwitch>().refreshItems();
                StaticObjects.quickActions.GetComponent <QuickActions>().refreshItems();
            }

            switch (EquipScript.getRight())
            {
            case EquipType.Fishing:
                meshFilter.gameObject.AddComponent <FishingManager>();
                return;

            case EquipType.Spear:
            case EquipType.SpearChitin:
                meshFilter.gameObject.AddComponent <SpearManager>();
                // (no return, we want collider for spear also)
                break;
            }

            StaticObjects.rightWeaponCollider().GetComponent <WeaponCollision>().setColliderParent(meshFilter.transform, ___m_rightItem, true);
            ParticleFix.maybeFix(___m_rightItemInstance);
        }
示例#22
0
 public void Dispose()
 {
     Players.Clear();
     Enemies.Clear();
     Quests.Clear();
     Pets.Clear();
     Projectiles.Clear();
     StaticObjects.Clear();
     Timers.Clear();
 }
示例#23
0
        static bool Prefix(ref Transform __result, ref Humanoid ___m_character)
        {
            if (___m_character != Player.m_localPlayer || !VHVRConfig.UseVrControls())
            {
                return(true);
            }

            __result = StaticObjects.rightWeaponCollider().transform;
            return(false);
        }
示例#24
0
        public virtual void Tick(RealmTime time)
        {
            try
            {
                if (IsLimbo)
                {
                    return;
                }

                for (int i = 0; i < Timers.Count; i++)
                {
                    if (Timers[i].Tick(this, time))
                    {
                        Timers.RemoveAt(i);
                        i--;
                    }
                }

                foreach (var i in Players)
                {
                    i.Value.Tick(time);
                }

                if (EnemiesCollision != null)
                {
                    foreach (Entity i in EnemiesCollision.GetActiveChunks(PlayersCollision))
                    {
                        i.Tick(time);
                    }
                    foreach (var i in StaticObjects.Where(x => x.Value is Decoy))
                    {
                        i.Value.Tick(time);
                    }
                }
                else
                {
                    foreach (var i in Enemies)
                    {
                        i.Value.Tick(time);
                    }
                    foreach (var i in StaticObjects)
                    {
                        i.Value.Tick(time);
                    }
                }
                foreach (var i in Projectiles)
                {
                    i.Value.Tick(time);
                }
            }
            catch (Exception e)
            {
                log.Error(e);
            }
        }
示例#25
0
 public virtual void LeaveWorld(Entity entity)
 {
     if (entity is Player)
     {
         Player dummy;
         if (!Players.TryRemove(entity.Id, out dummy))
         {
             Log.WarnFormat("Could not remove {0} from world {1}", entity.Name, Name);
         }
         PlayersCollision.Remove(entity);
     }
     else if (entity is Enemy)
     {
         Enemy dummy;
         Enemies.TryRemove(entity.Id, out dummy);
         EnemiesCollision.Remove(entity);
         if (entity.ObjectDesc.Quest)
         {
             Quests.TryRemove(entity.Id, out dummy);
         }
     }
     else
     {
         var projectile = entity as Projectile;
         if (projectile != null)
         {
             var p = projectile;
             Projectiles.TryRemove(new Tuple <int, byte>(p.ProjectileOwner.Self.Id, p.ProjectileId), out p);
         }
         else if (entity is StaticObject)
         {
             StaticObject dummy;
             StaticObjects.TryRemove(entity.Id, out dummy);
             if (entity is Decoy)
             {
                 PlayersCollision.Remove(entity);
             }
             else
             {
                 EnemiesCollision.Remove(entity);
             }
         }
         else if (entity is Pet)
         {
             if (entity.IsPet)
             {
                 Pet dummy2;
                 Pets.TryRemove(entity.Id, out dummy2);
                 PlayersCollision.Remove(entity);
             }
         }
     }
     entity.Owner = null;
     entity.Dispose();
 }
示例#26
0
        protected void FromWorldMap(Stream dat)
        {
            log.InfoFormat("Loading map for world {0}({1})...", Id, Name);

            var map = new Wmap();

            Map        = map;
            entityInc  = 0;
            entityInc += Map.Load(dat, 0);

            int w = Map.Width, h = Map.Height;

            Obstacles = new byte[w, h];
            for (var y = 0; y < h; y++)
            {
                for (var x = 0; x < w; x++)
                {
                    var        tile = Map[x, y];
                    ObjectDesc desc;
                    if (XmlDatas.TileDescs[tile.TileId].NoWalk)
                    {
                        Obstacles[x, y] = 3;
                    }
                    if (XmlDatas.ObjectDescs.TryGetValue(tile.ObjType, out desc))
                    {
                        if (desc.Class == "Wall" ||
                            desc.Class == "ConnectedWall" ||
                            desc.Class == "CaveWall")
                        {
                            Obstacles[x, y] = 2;
                        }
                        else if (desc.OccupySquare || desc.EnemyOccupySquare)
                        {
                            Obstacles[x, y] = 3;
                        }
                    }
                }
            }
            EnemiesCollision = new CollisionMap <Entity>(0, w, h);
            PlayersCollision = new CollisionMap <Entity>(1, w, h);

            Projectiles.Clear();
            StaticObjects.Clear();
            Enemies.Clear();
            Players.Clear();
            foreach (var i in Map.InstantiateEntities(Manager))
            {
                if (i.ObjectDesc != null &&
                    (i.ObjectDesc.OccupySquare || i.ObjectDesc.EnemyOccupySquare))
                {
                    Obstacles[(int)(i.X - 0.5), (int)(i.Y - 0.5)] = 2;
                }
                EnterWorld(i);
            }
        }
示例#27
0
 // Use this for initialization
 void Start()
 {
     StaticObjects.Reset();
     MoneyText       = (Text)GameObject.Find("MoneyText").GetComponent <Text> ();
     BulkText        = (Text)GameObject.Find("BulkText").GetComponent <Text> ();
     objectiveStatus = (Text)GameObject.Find("ObjectiveStatusText").GetComponent <Text> ();
     player          = new Player();
     SceneManager.LoadScene("hospital", LoadSceneMode.Additive);
     exitButton           = GameObject.Find("Exit").GetComponent <PointerController> ();
     objectiveStatus.text = "is this ok?";
 }
示例#28
0
 public virtual void Dispose()
 {
     Players.Clear();
     Enemies.Clear();
     Quests.Clear();
     Projectiles.Clear();
     StaticObjects.Clear();
     Timers.Clear();
     EnemiesCollision = null;
     PlayersCollision = null;
 }
示例#29
0
        static void Postfix(bool __result, string ___m_leftItem, GameObject ___m_leftItemInstance)
        {
            if (!__result || ___m_leftItemInstance == null)
            {
                return;
            }

            MeshFilter meshFilter = ___m_leftItemInstance.GetComponentInChildren <MeshFilter>();

            if (meshFilter == null)
            {
                return;
            }

            Player player = ___m_leftItemInstance.GetComponentInParent <Player>();

            if (player == null)
            {
                return;
            }

            var vrPlayerSync = player.GetComponent <VRPlayerSync>();

            if (vrPlayerSync != null)
            {
                player.GetComponent <VRPlayerSync>().currentLeftWeapon = meshFilter.gameObject;
                VrikCreator.resetVrikHandTransform(player);
            }

            if (Player.m_localPlayer != player || !VHVRConfig.UseVrControls())
            {
                return;
            }

            if (StaticObjects.quickSwitch != null)
            {
                StaticObjects.quickSwitch.GetComponent <QuickSwitch>().refreshItems();
                StaticObjects.quickActions.GetComponent <QuickActions>().refreshItems();
            }

            switch (EquipScript.getLeft())
            {
            case EquipType.Bow:
                meshFilter.gameObject.AddComponent <BowLocalManager>();
                return;

            case EquipType.Shield:
                meshFilter.gameObject.AddComponent <ShieldManager>()._name = ___m_leftItem;
                return;
            }

            StaticObjects.leftWeaponCollider().GetComponent <WeaponCollision>().setColliderParent(meshFilter.transform, ___m_leftItem, false);
            ParticleFix.maybeFix(___m_leftItemInstance);
        }
        /// <summary>
        /// Creates a serializable texture
        /// </summary>
        /// <param name="texture">Source</param>
        public SerializableTexture2D(Texture2D texture) : base(texture)
        {
            _imageFilePath = "Textures/" + texture.name + ".png";

            byte[] textureData = Utility.EncodeToPNG(texture);

            _imageFilePath = StaticObjects.Add(_imageFilePath, textureData);

            _alphaIsTransparency = texture.alphaIsTransparency;
            _format      = (int)texture.format;
            _mipMapCount = texture.mipmapCount;
        }
示例#31
0
        public TheGame(MyGame __game)
        {
            _engine = new GameEngine(__game);
            _staticData = StaticObjects.Instance();
            _level = new GameLevel(_engine.gameScene);

            _characters = new Dictionary<string, CharacterLogicController>();
               // _weapons = new Dictionary<string, WeaponLogicController>();

            _hotkeys = new List<HotKey>();
            _hotkeys.Add(new HotKey(new Keys[] { Keys.I }, SwichGunState));

            KeyboardManager.Manager.AddKeyboardUser(this);
        }