public void GameEntityTest()
 {
     WorldEntity gameEntity = null; // TODO: 初始化为适当的值
     WorldEntityEventArgs target = new WorldEntityEventArgs( gameEntity ); // TODO: 初始化为适当的值
     WorldEntity actual;
     actual = target.GameEntity;
     Assert.Inconclusive( "验证此测试方法的正确性。" );
 }
        /// <summary>
        ///
        /// </summary>
        internal void OnDeletedCall(WorldEntity gameEntity)
        {
            EventHandler <WorldEntityEventArgs> tempAfterEventArgs = m_EventDeletedCall;

            if (tempAfterEventArgs != null)
            {
                WorldEntityEventArgs eventArgs = new WorldEntityEventArgs(gameEntity);
                tempAfterEventArgs(this, eventArgs);
            }
        }
Esempio n. 3
0
        /// <summary>
        /// 保存人物的数据
        /// </summary>
        public void Save()
        {
            // 移动物体的数据必须要成功才返回
            m_LockSave.Enter();
            {
                // 保存数据中......
                m_Saving = true;

                EventHandler <WorldEntityEventArgs> tempEventArgs = m_EventSaveWorldEntity;
                // 保存数据
                if (tempEventArgs != null)
                {
                    WorldEntityEventArgs eventArgs = new WorldEntityEventArgs(this);
                    tempEventArgs(this, eventArgs);
                }

                // 保存数据结束......
                m_Saving = false;
            }
            m_LockSave.Exit();
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="eventArgs"></param>
        private void WowCharacterSave( object sender, WorldEntityEventArgs eventArgs )
        {
            XPQuery<CharacterBase> characters = new XPQuery<CharacterBase>( OneDatabase.Session );

            var characterList = from character in characters
                                where character.Oid == m_CharacterAccountGuid
                                select character;

            bool bIsFinde = false;
            foreach ( CharacterBase character in characterList )
            {
                CharacterBase newCharacter = new CharacterBase( OneDatabase.Session );
                this.Serial = newCharacter.Oid;
                newCharacter.CharacterName = this.Name;
                //newCharacter.Account = this.AccountGuid;
                newCharacter.Gender = (byte)this.Gender;
                newCharacter.Skin = (byte)this.Skin;
                newCharacter.Face = (byte)this.Face;
                newCharacter.HairStyle = (byte)this.HairColor;
                newCharacter.HairColor = (byte)this.HairColor;
                newCharacter.FacialHair = (byte)this.FacialHair;
                newCharacter.Race = (byte)this.Race;
                newCharacter.Class = (int)this.Class;
                newCharacter.Level = (int)this.Level;
                newCharacter.MapId = (int)this.MapId;
                newCharacter.ZoneId = (int)this.ZoneId;
                newCharacter.PositionX = this.X;
                newCharacter.PositionY = this.Y;
                newCharacter.PositionZ = this.Z;
                newCharacter.Orientation = this.O;
                newCharacter.Guild = null;
                // 人物的坐骑航线标记点 32位值|32位值|32位值|32位值
                // 00000000000000000000000000000000|...|...|...
                // 以位域标示 1~TaxiId~32| 32~TaxiId~64|65~TaxiId~96|96~TaxiId~128
                newCharacter.TaxiMask = this.TaxiMask;
                newCharacter.IsGhost = false;
                newCharacter.IsCinematic = false;
                newCharacter.IsNeedRename = false;
                newCharacter.TotalTime = 0;
                newCharacter.LevelTime = 0;
                newCharacter.LogoutTime = DateTime.Now;
                newCharacter.CreatingTime = DateTime.Now;
                newCharacter.IsBanned = false;
                newCharacter.IsDelete = false;
                newCharacter.DeleteTime = DateTime.Now;

                CharacterHomeBind newCharacterHomeBind = new CharacterHomeBind( OneDatabase.Session );
                //newCharacterHomeBind.Owner = newCharacter.ID;
                newCharacterHomeBind.MapId = (int)this.BindMapId;
                newCharacterHomeBind.ZoneId = (int)this.BindZoneId;
                newCharacterHomeBind.PositionX = this.BindX;
                newCharacterHomeBind.PositionY = this.BindY;
                newCharacterHomeBind.PositionZ = this.BindZ;

                foreach ( BaseSkill baseSkill in SkillManager.ToArray() )
                {
                    WowSkill wowSkill = baseSkill as WowSkill;
                    if ( wowSkill == null )
                        continue;

                    if ( wowSkill.Serial != 0 )
                        continue;

                    WowSkillTemplate wowSkillTemplate = wowSkill.SkillTemplate as WowSkillTemplate;
                    if ( wowSkillTemplate == null )
                        continue;

                    CharacterSkill newCharactersSkill = new CharacterSkill( OneDatabase.Session );
                    wowSkill.Serial = newCharactersSkill.Oid;

                    //newCharactersSkill.Owner = newCharacter.ID;
                    newCharactersSkill.SkillId = wowSkillTemplate.Serial;
                    newCharactersSkill.Value = wowSkill.Level;
                }

                foreach ( BaseSpell baseSpell in SpellManager.ToArray() )
                {
                    WowSpell wowSpell = baseSpell as WowSpell;
                    if ( wowSpell == null )
                        continue;

                    if ( wowSpell.Serial != 0 )
                        continue;

                    WowSpellTemplate wowSpellTemplate = baseSpell.SpellTemplate as WowSpellTemplate;
                    if ( wowSpellTemplate == null )
                        continue;

                    CharacterSpell newCharacterSpell = new CharacterSpell( OneDatabase.Session );
                    wowSpell.Serial = newCharacterSpell.Oid;

                    //newCharacterSpell.Owner = newCharacter.ID;
                    newCharacterSpell.SpellId = wowSpellTemplate.Serial;
                    //newCharacterSpell.Slot = baseSpell.Slot;
                }

                foreach ( WowActionBar baseActionBar in ActionBarManager.ToArray() )
                {
                    WowActionBar wowActionBar = baseActionBar as WowActionBar;
                    if ( baseActionBar == null )
                        continue;

                    if ( wowActionBar.Serial != 0 )
                        continue;

                    CharacterActionBar newCharactersAction = new CharacterActionBar( OneDatabase.Session );
                    wowActionBar.Serial = newCharactersAction.Oid;

                    //newCharactersAction.Owner = newCharacter.ID;
                    newCharactersAction.Slot = wowActionBar.ActionBarSlotId;
                    newCharactersAction.ActionId = wowActionBar.Action;
                    newCharactersAction.ActionType = wowActionBar.Type;
                }

                foreach ( BaseItem baseItem in BagManager.EquipmentBag.SubItemsToArray() )
                {
                    WowItem wowItem = baseItem as WowItem;
                    if ( wowItem == null )
                        continue;

                    if ( wowItem.Serial != 0 )
                        continue;

                    WowItemTemplate wowItemTemplate = wowItem.ItemTemplate as WowItemTemplate;
                    if ( wowItemTemplate == null )
                        continue;

                    CharacterItem newCharactersItem = new CharacterItem( OneDatabase.Session );
                    wowItem.Serial = newCharactersItem.Oid;

                    //newCharactersItem.Owner = newCharacter.ID;
                    newCharactersItem.ItemTemplateGuid = (ulong)wowItemTemplate.Serial;
                    newCharactersItem.Amount = (int)wowItem.Amount;
                    newCharactersItem.BagId = (int)BagManager.EquipmentBag.Item.SlotId;
                    newCharactersItem.SlotId = (int)wowItem.SlotId;
                }

                foreach ( WowReputation baseReputation in ReputationManager.ToArray() )
                {
                    WowReputation wowReputation = baseReputation as WowReputation;
                    if ( wowReputation == null )
                        continue;

                    if ( wowReputation.Serial != 0 )
                        continue;

                    CharacterReputation newCharacterReputation = new CharacterReputation( OneDatabase.Session );
                    wowReputation.Serial = newCharacterReputation.Oid;

                    //newCharacterReputation.Owner = newCharacter.ID;
                    newCharacterReputation.FactionId = wowReputation.FactionId;
                    newCharacterReputation.Reputation = wowReputation.Reputation;
                    newCharacterReputation.Flag = wowReputation.Flag;
                }

                break;
            }
        }
 /// <summary>
 /// 
 /// </summary>
 internal void OnDeletedCall( WorldEntity gameEntity )
 {
     EventHandler<WorldEntityEventArgs> tempAfterEventArgs = m_EventDeletedCall;
     if ( tempAfterEventArgs != null )
     {
         WorldEntityEventArgs eventArgs = new WorldEntityEventArgs( gameEntity );
         tempAfterEventArgs( this, eventArgs );
     }
 }
 public void WorldEntityEventArgsConstructorTest()
 {
     WorldEntity gameEntity = null; // TODO: 初始化为适当的值
     WorldEntityEventArgs target = new WorldEntityEventArgs( gameEntity );
     Assert.Inconclusive( "TODO: 实现用来验证目标的代码" );
 }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="dt"></param>
 public virtual void OnUpdate( object sender, WorldEntityEventArgs eventArgs )
 {
     // AI 
     // 空闲时走动
     // 如果数据变动就广播数据
 }