Exemplo n.º 1
0
        private static void WriteMonsterData()
        {
            var inPath   = Path.Combine(path, "Monsters.csv");
            var tempPath = Path.Combine(Path.GetTempPath(), "Monsters.csv");             //copy in case file is locked

            File.Copy(inPath, tempPath, true);

            var monSpawns = GetSpawnEntries();
            var maps      = GetMapList();

            monSpawns = monSpawns.Where(m => maps.Any(m2 => m2.Code == m.Map)).ToList();

            using (var tr = new StreamReader(tempPath) as TextReader)
                using (var csv = new CsvReader(tr, CultureInfo.CurrentCulture))
                {
                    var monsters = csv.GetRecords <CsvMonsterData>().ToList();
                    var mData    = new List <MonsterClassData>(monsters.Count);

                    foreach (var monster in monsters)
                    {
                        if (monster.Id >= 4000 && monSpawns.All(m => m.Class != monster.Code))
                        {
                            continue;
                        }

                        var mc = new MonsterClassData()
                        {
                            Id         = monster.Id,
                            Name       = monster.Name,
                            SpriteName = monster.ClientSprite,
                            Offset     = monster.ClientOffset,
                            ShadowSize = monster.ClientShadow,
                            Size       = monster.ClientSize
                        };

                        mData.Add(mc);
                    }

                    var dbTable = new DatabaseMonsterClassData();
                    dbTable.MonsterClassData = mData;

                    JsonSerializerOptions options = new JsonSerializerOptions();
                    options.SetupExtensions();

                    var json = JsonSerializer.Serialize(dbTable, options);

                    var monsterDir = Path.Combine(outPath, "monsterclass.json");

                    File.WriteAllText(monsterDir, json);
                }

            File.Delete(tempPath);
        }
Exemplo n.º 2
0
        private ServerControllable PrefabMonster(MonsterClassData mData, ref MonsterSpawnParameters param)
        {
            var prefabName = mData.SpriteName.Replace(".prefab", "");
            var split      = prefabName.Split('/');

            prefabName = split.Last();
            //Debug.Log(prefabName);
            var obj     = GameObject.Instantiate(Resources.Load <GameObject>(prefabName));
            var control = obj.AddComponent <ServerControllable>();

            control.CharacterType = CharacterType.NPC;
            control.SpriteMode    = ClientSpriteType.Prefab;
            control.EntityObject  = obj;

            control.ConfigureEntity(param.ServerId, param.Position, param.Facing);

            return(control);
        }