Inheritance: Entity
Esempio n. 1
0
        public void AddNewPlayer(string id, string nickname, int x, int y) {
            Log.Print("Spawn player " + id);

            string type = "Mystic";
            switch (new Random().Next(3)) {
                case 0:
                    type = "Reaper";
                    break;
                case 1:
                    type = "Sniper";
                    break;
            }

            // Если нет аккаунта в базе, то создаем, иначе грузим
            AccountState accState;
            int ind = AccountsAll.FindIndex(acc => acc.nickname == nickname);
            if (ind == -1) {
                Log.Print("Creating new account: " + nickname, LogType.Info);
                accState = new AccountState(id, nickname, ServerScene.LocationsDict);
                AccountsAll.Add(accState);
            }
            else {
                //TODO: Переделать...
                AccountsAll[ind].SetLocationsDict(ServerScene.LocationsDict);
                AccountsAll[ind].HeroId = id;
                accState = AccountsAll[ind];
            }

            var player = new Player(id, type, accState) {
                PositionX = x,
                PositionY = y
            };

            ServerScene.GetGameLayer(accState.Location).AddEntity(player);
            ServerScene.Accounts.Add(accState);
            accState.RecalcStats();
        }
Esempio n. 2
0
        // TODO: сделать в конструкторе

        /** AccState - если создается игрок, ему передается для связывания... (что плохо :( )*/

        public void AddEntity(EntityState es, AccountState accState = null) {
            Entity entity = null;

            /* Получаем название объекта по изображению */
            string textureName = es.TextureName;
            textureName = textureName.Replace("\\", "/").Split('/').Last();

            /** TODO: можно ли вынести куда-нибудь? можно ли обойтись без этого? 
                скорее всего в Resources, через словарь */
            switch (textureName) {
                case Resources.ClassMystic:
                case Resources.ClassReaper:
                case Resources.ClassSniper:
                    entity = new Player(es.Id, textureName, accState);
                    break;
                case Resources.ItemGold:
                    entity = new GoldStack(es.Id);
                    break;
                case Resources.ItemGate:
                    entity = new Gate(es.Id);
                    break;
                case Resources.ItemHealpot:
                    entity = new HealPot(es.Id);
                    break;
                case Resources.ObjectSmith:
                    entity = new Smith(es.Id);
                    break;
                case Resources.ProjectileMystic:
                    entity = new MysticProjectile(es.AttackDamage, es.Id);
                    break;
                case Resources.ProjectileLaser:
                case Resources.ProjectileCardinalPulse:
                case Resources.ProjectileCardinalRocket:
                    entity = new EnemyRangeProjectile(es.AttackDamage, textureName, es.Id);
                    break;
                case Resources.ParticleMeleeSweepAttack:
                    entity = new EnemyMeleeProjectile(es.AttackDamage, textureName, es.Id);
                    break;
                case Resources.ParticleMeleeSweepStart:
                    entity = new EnemyMeleeProjectileStart(es.AttackDamage, textureName, es.Id);
                    break;
                case Resources.EnemyMeleeRobot:
                case Resources.EnemyMagicMelee:
                case Resources.EnemyPirate:
                    entity = new MeleeEnemy(textureName, es.Id);
                    break;
                case Resources.EnemyStinger:
                case Resources.EnemyMagicRange:
                    entity = new RangeEnemy(textureName, es.Id);
                    break;
                case Resources.BossEmperor:
                    entity = new Emperor(es.Id);
                    break;
                case Resources.BossCardinal:
                    entity = new Cardinal(es.Id);
                    break;
                case Resources.BossInteritus:
                    entity = new Interitus(es.Id);
                    break;
                case Resources.BossMossorus:
                    entity = new Mossorus(es.Id);
                    break;
            }

            if (entity != null) {
                EntityState.AppendStateToEntity(entity, es);
                AddEntity(entity);
            }
            else {
                Log.Print("Error! Entity isn't created, New entity will not be added. " + textureName, LogType.Error);
            }
        }