Exemple #1
0
        public void UpdateObservedObjects()
        {
            if (MapsManager.GetMap(mapId, out Map m))
            {
                HashSet <int> removed = Observed.Except(m.objects).ToHashSet();
                HashSet <int> added   = m.objects.Except(Observed).ToHashSet();
                removed.Remove(ObjectId);
                added.Remove(ObjectId);

                foreach (var item in removed)
                {
                    OnUnobserve(item);
                }

                foreach (var item in added)
                {
                    OnObserve(item);
                }

                HashSet <int> all = m.objects.ToHashSet();
                all.Remove(ObjectId);

                Observed = all.ToHashSet();
            }
        }
Exemple #2
0
        public static void Destroy(GameObject g)
        {
            GameObjectsManager.RemoveObject(g.ObjectId);

            if (MapsManager.GetMap(g.mapId, out Map m))
            {
                m.RemovePlayer(g.ObjectId);
            }
        }
        private void LoadManagers()
        {
            var     configJson = File.ReadAllText("data/config.json");
            dynamic config     = JsonConvert.DeserializeObject(configJson);

            MongoCRUD.connString = config.db_string;

            MapsManager    maps      = new MapsManager();
            ItemsManager   items     = new ItemsManager();
            SpawnsManager  spawns    = new SpawnsManager();
            UsersManager   players   = new UsersManager();
            GameController game      = new GameController();
            Respawner      respawner = new Respawner();
        }
Exemple #4
0
        public void TeleportToMap(int newMapId, int posX, int posY)
        {
            MapsManager.GetMap(mapId, out Map oldMap);
            oldMap.RemovePlayer(ObjectId);

            UsersManager.GetUser(ObjectId, out User user);
            mapId = newMapId;

            MapsManager.GetMap(mapId, out Map newMap);
            newMap.AddPlayer(ObjectId);

            this.posX = posX;
            this.posY = posY;

            PacketsSender.TeleportToMap(user, newMapId, posX, posY);
        }
Exemple #5
0
        public SpawnsManager()
        {
            string modelsJson = File.ReadAllText("data/mobModels.json");

            foreach (var item in JsonConvert.DeserializeObject <MobModel[]>(modelsJson))
            {
                mobModels.Add(item.id, item);
            }

            string portalsJson = File.ReadAllText("data/portals.json");

            foreach (var item in JsonConvert.DeserializeObject <PortalData[]>(portalsJson))
            {
                Portal go = GameObject.Instantiate <Portal>(item.x, item.y);
                go.BaseId = 2;
                go.mapId  = item.map;
                go.map    = item.targetMap;
                go.spawnX = item.spawnX;
                go.spawnY = item.spawnY;

                MapsManager.GetMap(item.map, out Map m);
                m.AddPlayer(go.ObjectId);
            }

            string json = File.ReadAllText("data/spawns.json");

            foreach (var item in JsonConvert.DeserializeObject <SpawnData[]>(json))
            {
                GameObject go = GameObject.Instantiate <Character>(item.x, item.y, item);
                go.BaseId      = item.id;
                go.mapId       = item.map;
                go.respawnable = true;
                go.respawnTime = item.time;
                MobModel model = mobModels[go.BaseId];
                go.stats[Stat.LVL]        = model.lvl;
                go.stats[Stat.MAX_HEALTH] = model.health;
                go.stats[Stat.HEALTH]     = model.health;
                go.stats[Stat.DAMAGE]     = model.damage;

                MapsManager.GetMap(item.map, out Map m);
                m.AddPlayer(go.ObjectId);
            }
        }
Exemple #6
0
        private void Instance_OnUpdate()
        {
            HashSet <int> itemsToRemove = new HashSet <int>();

            foreach (var item in objectsToRespawn)
            {
                if (item.Value.respawnTime < Time.time)
                {
                    GameObjectsManager.AddObject(item.Value.id, item.Value.go);
                    if (MapsManager.GetMap(item.Value.go.mapId, out Map m))
                    {
                        m.AddPlayer(item.Value.id);
                    }

                    item.Value.Respawn();
                    itemsToRemove.Add(item.Value.id);
                }
            }

            foreach (var item in itemsToRemove)
            {
                objectsToRespawn.Remove(item);
            }
        }
        public void EnterGame(string hash)
        {
            Console.WriteLine("Enter game: " + hash);
            MongoCRUD c = new MongoCRUD("bridge-mmo");

            var client   = new MongoClient(MongoCRUD.connString);
            var database = client.GetDatabase("bridge-mmo");
            var col      = database.GetCollection <dynamic>("sessions");
            var filter   = Builders <dynamic> .Filter.Eq("session_hash", hash);

            var sessionData = col.Find(filter).First();
            var accountId   = sessionData._id;

            DbCharacter data = c.GetRecordByAccountId <DbCharacter>("characters", accountId);

            if (data == null)
            {
                var newId = c.Increment <dynamic>("counters", "characters");
                int id    = newId.seq + 1;

                data = new DbCharacter()
                {
                    accountId = accountId,
                    id        = id,
                    lvl       = 1,
                    nickname  = "newacc"
                };

                c.InsertRecord <DbCharacter>("characters", data);
            }

            var DatabaseId = data.id;

            Player p = GameObject.Instantiate <Player>(data.x, data.y);

            p.DatabaseId      = DatabaseId;
            ObjectRefId       = p.ObjectId;
            p.mapId           = data.mapId;
            p.stats[Stat.LVL] = data.lvl;
            p.stats[Stat.EXP] = data.exp;

            if (MapsManager.GetMap(data.mapId, out Map m))
            {
                m.AddPlayer(ObjectRefId);
            }

            p.OnObserve     += P_OnObserve;
            p.OnUnobserve   += P_OnUnobserve;
            p.OnStatChanged += P_OnStatChanged;
            p.OnSlotChanged += P_OnSlotChanged;

            PacketsSender.SpawnGameObject(this, p);

            JObject pck2 = new JObject();

            pck2["msgId"] = 3;
            pck2["id"]    = ObjectRefId;
            pck2["mapId"] = data.mapId;
            pck2["lvl"]   = data.lvl;
            pck2["exp"]   = data.exp;

            Send(pck2.ToString());

            UsersManager.AddUser(ObjectRefId, this);

            List <DbUniqueItem> inventory = c.GetCharacterItems <DbUniqueItem>(DatabaseId);

            p.SetItems(inventory);

            PacketsSender.SendItems(this, inventory);
        }