public Mob FindOrCreateMob(int objectId, int mobType) { if (objectToMobMap.ContainsKey(objectId)) { return(objectToMobMap[objectId]); } if (mobDictionary.ContainsKey(mobType)) { MobDef resType = mobDictionary[mobType]; Mob newMob = new Mob() { MobId = objectId, Name = resType.Name, HarvestableTier = resType.HarvestableTier, HarvestableType = resType.HarvestableType == null ? null : resType.HarvestableType.Type }; objectToMobMap.Add(objectId, newMob); if (MobRemoved != null) { MobEventArgs m = new MobEventArgs(newMob); foreach (System.EventHandler <MobEventArgs> e in MobAdded?.GetInvocationList()) { e.BeginInvoke(this, m, e.EndInvoke, null); } } return(newMob); } return(null); }
public WorldObjects.Instances.BaseVobInstance CreateInstance(byte type) { BaseVobDef def; switch ((VobType)type) { case VobType.Vob: def = new VobDef(); break; case VobType.Mob: def = new MobDef(); break; case VobType.NPC: def = new NPCDef(); break; case VobType.Item: def = new ItemDef(); break; case VobType.Projectile: def = new ProjDef(); break; default: throw new Exception("Unsupported VobType: " + (VobType)type); } return(def.BaseDef); }
public override void _Ready() { if (mobDef == null) { Console.WriteLine($"EntMob had no mob type set - getting default"); mobDef = Main.i.factory.GetMobType(GameFactory.MobType_Humanoid); } _health = mobDef.defaultHealth; // find Godot scene nodes body = GetNode <KinematicWrapper>("actor_base"); body.SetCallbacks(OnHealthChange, OnDeath); body.InitHealth(mobDef.defaultHealth, mobDef.defaultHealth); body.actor = this; if (_entId == 0) { // no id previous set, request one Console.WriteLine($"EntMob - no id set - registering self"); _entId = Main.i.game.ReserveActorId(1); Main.i.game.RegisterActor(this); } prjDef = new ProjectileDef(); prjDef.damage = 10; prjDef.launchSpeed = 100; prjDef.prefabPath = GameFactory.Path_PointProjectile; prjDef.speedMode = ProjectileDef.SpeedMode.Accel; prjDef.maxSpeed = 100; prjDef.minSpeed = 10; prjDef.accelPerSecond = -300; _debugSb.Clear(); _debugSb.Append($"EntMob Id {_entId}"); }
private MobDB() { log.Info("Loading Mobs into memory"); var assembly = Assembly.GetExecutingAssembly(); var resourceName = "AlbionMarshaller.Resources.mobs.xml"; using (Stream stream = assembly.GetManifestResourceStream(resourceName)) using (StreamReader reader = new StreamReader(stream)) { XDocument mobDoc = XDocument.Parse(reader.ReadToEnd()); int index = 0; foreach (XElement mob in mobDoc.Root.Elements()) { String mobName = mob.Attribute("uniquename").Value; String localeName = $"@MOB_{mobName}"; if (mob.Attribute("namelocatag") != null) { localeName = mob.Attribute("namelocatag").Value; } MobDef def = new MobDef() { UniqueName = mobName, Name = Localization.Instance.Find(localeName) }; XElement lootNode = mob.Element("Loot"); if (lootNode != null) { XElement harvestable = lootNode.Element("Harvestable"); if (harvestable != null) { int tier = int.Parse(harvestable.Attribute("tier").Value); String type = harvestable.Attribute("type").Value; def.HarvestableType = ResourceDB.Instance.FindResourceTypeByName(type); def.HarvestableTier = tier; } } if (def.HarvestableType != null && def.HarvestableType.Type != null && def.HarvestableTier > 1) { if (harvestableToMob.ContainsKey(def.HarvestableType.Type)) { harvestableToMob[def.HarvestableType.Type].Add(def.Name); } else { harvestableToMob.Add(def.HarvestableType.Type, new HashSet <string>() { def.Name }); } } mobDictionary.Add(index++, def); } } log.Info("Finished loading Mobs into memory"); }
public EntMob SpawnMob(string mobTypeName = "") { MobDef mobType = GetMobType(mobTypeName); // Pass a null parent as we need to init the mob before adding it to the tree // which will invoke _ready EntMob mob = ZqfGodotUtils.CreateInstance <EntMob>(mobType.prefabPath, null); mob.SetMobType(mobType); _root.AddChild(mob); return(mob); }
private MobDB() { log.Info("Loading Mobs into memory"); XDocument mobDoc = ResourceLoader.LoadResource("mobs"); int index = 0; foreach (XElement mob in mobDoc.Root.Elements()) { String mobName = mob.Attribute("uniquename").Value; String localeName = $"@MOB_{mobName}"; if (mob.Attribute("namelocatag") != null) { localeName = mob.Attribute("namelocatag").Value; } MobDef def = new MobDef() { UniqueName = mobName, Name = Localization.Instance.Find(localeName) }; XElement lootNode = mob.Element("Loot"); if (lootNode != null) { XElement harvestable = lootNode.Element("Harvestable"); if (harvestable != null) { int tier = int.Parse(harvestable.Attribute("tier").Value); String type = harvestable.Attribute("type").Value; def.HarvestableType = ResourceDB.Instance.FindResourceTypeByName(type); def.HarvestableTier = tier; } } if (def.HarvestableType != null && def.HarvestableType.Type != null && def.HarvestableTier > 1) { if (harvestableToMob.ContainsKey(def.HarvestableType.Type)) { harvestableToMob[def.HarvestableType.Type].Add(def.Name); } else { harvestableToMob.Add(def.HarvestableType.Type, new HashSet <string>() { def.Name }); } } mobDictionary.Add(index++, def); } log.Info("Finished loading Mobs into memory"); }
public Mob FindOrCreateMob(int objectId, int mobType) { if (objectToMobMap.ContainsKey(objectId)) { return(objectToMobMap[objectId]); } if (mobDictionary.ContainsKey(mobType)) { MobDef resType = mobDictionary[mobType]; Mob newMob = new Mob() { MobId = objectId, Name = resType.Name, HarvestableTier = resType.HarvestableTier, HarvestableType = resType.HarvestableType == null ? null : resType.HarvestableType.Type }; objectToMobMap.Add(objectId, newMob); MobAdded?.Invoke(this, new MobEventArgs(newMob)); return(newMob); } return(null); }
public MobInst(MobDef def) : this() { this.Definition = def; }
public void SetMobType(MobDef mobType) { mobDef = mobType; }