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(); } }
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(); }
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); }
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); } }
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); }