Beispiel #1
0
    public void LoadModel()
    {
        Animate effectAnim;

        //SpriteImage sprite;
        effectAsset = GameLoader.Instance.LoadAssetSync("Resources/Prefabs/fly.prefab");
        effectObj   = effectAsset.GameObjectAsset;
        //if (effectObj.GetComponent<SpriteImage>() != null)
        //{
        //    sprite = effectObj.GetComponent<SpriteImage>();
        //}
        //else
        //{
        //    sprite = effectObj.AddComponent<SpriteImage>();
        //}
        //sprite.OnInit("knight_3.png");
        if (effectObj.GetComponent <Animate>() != null)
        {
            effectAnim = effectObj.GetComponent <Animate>();
        }
        else
        {
            effectAnim = effectObj.AddComponent <Animate>();
        }
        effectAnim.OnInit(AnimationCache.getInstance().getAnimation(effectInfo.effectName));
        effectAnim.startAnimation();
    }
    public SoliderInfo(int soliderIndexId, int soliderId)
    {
        Id           = soliderIndexId;
        charId       = soliderId;
        creatureData = J_Creature.GetData(charId);
        charName     = creatureData._modelName;
        if (charName == null)
        {
            Debug.LogError("SoliderModelName" + charId + " is NULL");
        }
        soliderStateMachine = new StateMachine();
        soliderAtk          = new SoliderAtk(this);
        soliderDead         = new SoliderDead(this);
        soliderIdle         = new SoliderIdle(this);
        soliderMove         = new SoliderMove(this);
        soliderReady        = new SoliderReady(this);

        hpMax        = creatureData._hp;
        hp           = hpMax;
        attackSpeed  = creatureData._attackSpeed;
        attackDamage = creatureData._attackDamage;
        defenceType  = creatureData._defenceType;
        attackSkill  = SkillManager.getInstance().AddSkill(1, this);

        attackTime = AnimationCache.getInstance().getAnimation(charName).getMeshAnimation("attack").getAnimTime();
    }
 public virtual void Clear()
 {
     if (_aniParent == null)
     {
         return;
     }
     if (_curColor != DefaultColor)
     {
         _renderer.color = DefaultColor;
     }
     if (_curScale != DefaultScale)
     {
         _trans.localScale = DefaultScale;
     }
     _spList   = null;
     _renderer = null;
     _trans    = null;
     if (_isDefaultPrefab)
     {
         _aniParent.SetActive(false);
         ObjectsPool.GetInstance().RestorePrefabToPool("AniParent", _aniParent);
     }
     _spList         = null;
     _renderer       = null;
     _trans          = null;
     _aniTf          = null;
     _aniObject      = null;
     _aniParent      = null;
     _completeCBFunc = null;
     _completeCBPara = null;
     _cache          = null;
 }
Beispiel #4
0
        public void AddNewHKXToLoad(string name, byte[] data)
        {
            lock (_lock_animDict)
            {
                if (animHKXsToLoad.ContainsKey(name))
                {
                    animHKXsToLoad.Remove(name);
                }
                animHKXsToLoad.Add(name, data);
            }

            lock (_lock_AdditiveOverlays)
            {
                var overlay = _additiveBlendOverlays.FirstOrDefault(a => a.Name == name);
                if (overlay != null)
                {
                    _additiveBlendOverlays.Remove(overlay);
                }

                if (_additiveBlendOverlayNames.Contains(name))
                {
                    _additiveBlendOverlayNames.Remove(name);
                }
            }

            lock (_lock_animCache)
            {
                if (AnimationCache.ContainsKey(name))
                {
                    AnimationCache.Remove(name);
                }
            }
        }
Beispiel #5
0
    //public void LoadAniCache(string aniId)
    //{
    //    UnitAniCfg cfg = GetUnitAniCfgById(aniId);
    //    string aniName = cfg.aniName;
    //    string textureName = cfg.textureName;
    //    string path = "Animation/" + textureName;
    //    Sprite[] sprites;
    //    int len, i,j;
    //    Dictionary<string, Sprite> aniSpsMap;
    //    // 判断是否已经将该贴图的所有sprites存入map中
    //    if (!_texturesMap.TryGetValue(textureName, out sprites))
    //    {
    //        sprites = Resources.LoadAll<Sprite>(path);
    //        _texturesMap.Add(textureName, sprites);
    //    }
    //    // 提取texture中名字带有aniName的所有sprite,存入aniSpsMap中
    //    aniSpsMap = new Dictionary<string, Sprite>();
    //    _textureSpsMap.Add(aniName, aniSpsMap);
    //    len = sprites.Length;
    //    for (i=0;i<len;i++)
    //    {
    //        if ( sprites[i].name.IndexOf(aniName) != -1 )
    //        {
    //            aniSpsMap.Add(sprites[i].name, sprites[i]);
    //        }
    //    }
    //    // 将对应的sp数组放入aniCache中
    //    Sprite sp;
    //    Dictionary<string, Sprite[]> cacheSps = new Dictionary<string, Sprite[]>();
    //    string[] sliceStrs = cfg.aniData.Split(',');
    //    for (i=0,len=sliceStrs.Length;i<len;i=i+3)
    //    {
    //        string actionName = sliceStrs[i];
    //        int aniLen = int.Parse(sliceStrs[i + 1]);
    //        sprites = new Sprite[aniLen];
    //        for (j=0;j<aniLen;j++)
    //        {
    //            if (aniSpsMap.TryGetValue(aniName + "_" + actionName + "_" + j, out sp))
    //            {
    //                sprites[j] = sp;
    //            }
    //        }
    //        cacheSps.Add(actionName, sprites);
    //    }
    //    // 创建AnimationCache
    //    AnimationCache aniCache = new AnimationCache();
    //    aniCache.AniName = aniName;
    //    aniCache.SetActionSpritesMap(cacheSps);
    //    _aniCacheDic.Add(aniName,aniCache);
    //}

    public void LoadAniCache(string aniId)
    {
        UnitAniCfg cfg         = GetUnitAniCfgById(aniId);
        string     aniName     = cfg.aniName;
        string     textureName = cfg.textureName;

        Sprite[] sprites;
        int      len, i, j;
        Dictionary <string, Sprite[]> cacheSps = new Dictionary <string, Sprite[]>();

        string[] sliceStrs = cfg.aniData.Split(',');
        string   actionAniFrameName;

        for (i = 0, len = sliceStrs.Length; i < len; i = i + 3)
        {
            string actionName = sliceStrs[i];
            int    aniLen     = int.Parse(sliceStrs[i + 1]);
            sprites = new Sprite[aniLen];
            for (j = 0; j < aniLen; j++)
            {
                actionAniFrameName = aniName + "_" + actionName + "_" + j;
                sprites[j]         = ResourceManager.GetInstance().GetSprite(textureName, actionAniFrameName);
            }
            cacheSps.Add(actionName, sprites);
        }
        // 创建AnimationCache
        AnimationCache aniCache = new AnimationCache();

        aniCache.AniName = aniName;
        aniCache.SetActionSpritesMap(cacheSps);
        _aniCacheDic.Add(aniName, aniCache);
    }
Beispiel #6
0
    public AttackTowerInfo(int indexId, int towerId)
    {
        this.Id              = indexId;
        this.charId          = towerId;
        this.eventDispatcher = new MiniEventDispatcher();
        this.towerData       = J_Tower.GetData(towerId);
        this.towerBase       = towerData._towerBase;
        this.shooter         = towerData._Shooter;
        this.towerType       = towerData._towerType;

        towerStateMachine = new StateMachine();
        towerAtk          = new TowerAtk(this);
        towerIdle         = new TowerIdle(this);

        attackSkillList = new List <SkillInfo>();
        attackSkillList.Add(GetSpaceSkillInfo());
        attackSkill = SkillManager.getInstance().AddSkill(2, this);
        //若有弓手,攻击时长为弓手攻击动作
        if (this.shooter != null)
        {
            attackTime = AnimationCache.getInstance().getAnimation(this.shooter).getMeshAnimation("attack").getAnimTime();
        }
        //若没有弓手,攻击时长为塔身攻击动作
        else
        {
            attackTime = AnimationCache.getInstance().getAnimation(this.towerBase).getMeshAnimation("attack").getAnimTime();
        }
    }
Beispiel #7
0
    public MonsterInfo(int creatureIndexId, int creatureId, PathInfo _pathInfo)
    {
        Id           = creatureIndexId;
        charId       = creatureId;
        creatureData = J_Creature.GetData(charId);
        charName     = creatureData._modelName;
        if (charName == null)
        {
            Debug.LogError("MonsterModelName" + charId + " is NULL");
        }

        creatureStateMachine = new StateMachine();
        creatureAtk          = new CreatureAtk(this);
        creatureDead         = new CreatureDead(this);
        creatureIdle         = new CreatureIdle(this);
        creatureMove         = new CreatureMove(this);

        hpMax        = creatureData._hp;
        hp           = hpMax;
        attackSpeed  = creatureData._attackSpeed;
        attackDamage = creatureData._attackDamage;
        defenceType  = creatureData._defenceType;
        attackSkill  = SkillManager.getInstance().AddSkill(1, this);
        pathInfo     = _pathInfo;
        curPathNum   = 0;
        //设置初始位置
        position = pathInfo.GetPoint(curPathNum);

        attackTime = AnimationCache.getInstance().getAnimation(charName).getMeshAnimation("attack").getAnimTime();
    }
Beispiel #8
0
        public static void Initialize()
        {
            LoadSprites();

            AnimationCache.Clear();

            GameBase.OnScreenLayoutChanged += delegate { DisposeDisposable(); };
        }
 public static AnimationCache getInstance()
 {
     if (instance == null)
     {
         instance = new AnimationCache();
     }
     return(instance);
 }
Beispiel #10
0
    public BarrackTowerInfo(int indexId, int barrackId)
        : base(indexId, barrackId)
    {
        soliderId           = towerData._soliderId;
        towerStateMachine   = new StateMachine();
        barrackStart        = new BarrackStart(this);
        barrackIdle         = new BarrackIdle(this);
        barrackConstructing = new BarrackConstructing(this);
        soliderDict         = new Dictionary <int, SoliderInfo>();

        startTime = AnimationCache.getInstance().getAnimation(this.towerBase).getMeshAnimation("start").getAnimTime();
    }
 public void LoadModel()
 {
     charAsset = GameLoader.Instance.LoadAssetSync("Resources/Prefabs/fly.prefab");
     charObj   = charAsset.GameObjectAsset;
     if (charObj.GetComponent <Animate>() != null)
     {
         charAnim = charObj.GetComponent <Animate>();
     }
     else
     {
         charAnim = charObj.AddComponent <Animate>();
     }
     charAnim.OnInit(AnimationCache.getInstance().getAnimation(charInfo.charName));
     charAnim.startAnimation("idle");
 }
Beispiel #12
0
 public void OnInit(string animName = "")
 {
     if (animName == null || animName == "")
     {
         return;
     }
     this.animName = animName;
     this.anim     = AnimationCache.getInstance().getAnimation(this.animName);
     this.mesh     = new Mesh();
     ResetAnimateVariable("", false);
     //mesh关联
     gameObject.GetComponent <MeshFilter>().sharedMesh = this.mesh;
     //根据图片名字加载使用的材质
     gameObject.GetComponent <MeshRenderer>().material = SpriteFrameCache.getInstance().getSpriteTexture(anim.pictName);
 }
        private static void AnimatedSourceChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)
        {
            Image imageControl = o as Image;

            if (imageControl == null)
            {
                return;
            }

            var oldValue = e.OldValue as ImageSource;
            var newValue = e.NewValue as ImageSource;

            if (ReferenceEquals(oldValue, newValue))
            {
                if (imageControl.IsLoaded)
                {
                    var isAnimLoaded = GetIsAnimationLoaded(imageControl);
                    if (!isAnimLoaded)
                    {
                        InitAnimationOrImage(imageControl);
                    }
                }
                return;
            }
            if (oldValue != null)
            {
                imageControl.Loaded   -= ImageControlLoaded;
                imageControl.Unloaded -= ImageControlUnloaded;
                AnimationCache.DecrementReferenceCount(oldValue, GetRepeatBehavior(imageControl));
                var controller = GetAnimationController(imageControl);
                if (controller != null)
                {
                    controller.Dispose();
                }
                imageControl.Source = null;
            }
            if (newValue != null)
            {
                imageControl.Loaded   += ImageControlLoaded;
                imageControl.Unloaded += ImageControlUnloaded;
                if (imageControl.IsLoaded)
                {
                    InitAnimationOrImage(imageControl);
                }
            }
        }
Beispiel #14
0
    public void LoadModel()
    {
        Animate bulletAnim;

        //SpriteImage sprite;
        bulletAsset = GameLoader.Instance.LoadAssetSync("Resources/Prefabs/fly.prefab");
        bulletObj   = bulletAsset.GameObjectAsset;
        if (bulletObj.GetComponent <Animate>() != null)
        {
            bulletAnim = bulletObj.GetComponent <Animate>();
        }
        else
        {
            bulletAnim = bulletObj.AddComponent <Animate>();
        }
        Debug.Log(bulletInfo.bulletName);
        bulletAnim.OnInit(AnimationCache.getInstance().getAnimation(bulletInfo.bulletName));
        bulletAnim.startAnimation();
    }
Beispiel #15
0
        public static void PurgeUnusedTexture()
        {
            DisposeDisposable();

            var purgable = new List <TextureGl>(SpriteTextureCache.Values);

            foreach (TextureGl p in purgable)
            {
                if (!p.usedSinceLastModeChange && p.Loaded)
                {
#if !DIST
                    Console.WriteLine("unloaded texture " + p.Id);
#endif
                    p.Delete();
                }
            }

            AnimationCache.Clear();
        }
    public BarrackTowerInfo(int indexId, int barrackId)
    {
        this.Id              = indexId;
        this.charId          = barrackId;
        this.eventDispatcher = new MiniEventDispatcher();
        this.towerData       = J_Tower.GetData(barrackId);
        this.towerBase       = towerData._towerBase;
        this.shooter         = towerData._Shooter;
        this.towerType       = towerData._towerType;

        towerStateMachine = new StateMachine();
        barrackStart      = new BarrackStart(this);
        barrackIdle       = new BarrackIdle(this);
        soliderDict       = new Dictionary <int, SoliderInfo>();

        signPos   = new Vector3(0, 0, 0);
        startTime = AnimationCache.getInstance().getAnimation(this.towerBase).getMeshAnimation("start").getAnimTime();
        InitSoliderDict();
    }
        static void ImageControlUnloaded(object sender, RoutedEventArgs e)
        {
            Image imageControl = sender as Image;

            if (imageControl == null)
            {
                return;
            }
            var source = GetAnimatedSource(imageControl);

            if (source != null)
            {
                AnimationCache.DecrementReferenceCount(source, GetRepeatBehavior(imageControl));
            }
            var controller = GetAnimationController(imageControl);

            if (controller != null)
            {
                controller.Dispose();
            }
        }
Beispiel #18
0
    public void LoadFromJSON()
    {
        frames = AnimationCache.GetFrames(fileName);

        if (frames == null)
        {
            frames = new List <LumarcaFrame>();

            TextAsset asset = Resources.Load(fileName) as TextAsset;

            JArray jFrames = JArray.Parse(asset.text);

            foreach (JArray jFrame in jFrames)
            {
                LumarcaFrame lf = LumarcaFrame.LoadFromJSON(jFrame);
                frames.Add(lf);
            }

            AnimationCache.SetFrames(fileName, frames);
        }
    }
Beispiel #19
0
        public void AddNewAnimation(string name, NewHavokAnimation anim)
        {
            lock (_lock_animDict)
            {
                if (animHKXsToLoad.ContainsKey(name))
                {
                    animHKXsToLoad.Remove(name);
                }
            }

            lock (_lock_AdditiveOverlays)
            {
                var overlay = _additiveBlendOverlays.FirstOrDefault(a => a.Name == name);
                if (overlay != null)
                {
                    _additiveBlendOverlays.Remove(overlay);
                }

                if (_additiveBlendOverlayNames.Contains(name))
                {
                    _additiveBlendOverlayNames.Remove(name);
                }

                if (anim.IsAdditiveBlend)
                {
                    _additiveBlendOverlayNames.Add(anim.Name);
                    _additiveBlendOverlays.Add(NewHavokAnimation.Clone(anim));
                }
            }

            lock (_lock_animCache)
            {
                if (AnimationCache.ContainsKey(name))
                {
                    AnimationCache.Remove(name);
                }

                AnimationCache.Add(name, anim);
            }
        }
        private static void RepeatBehaviorChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)
        {
            Image imageControl = o as Image;

            if (imageControl == null)
            {
                return;
            }

            ImageSource source = GetAnimatedSource(imageControl);

            if (source != null)
            {
                if (!Equals(e.OldValue, e.NewValue))
                {
                    AnimationCache.DecrementReferenceCount(source, (RepeatBehavior)e.OldValue);
                }
                if (imageControl.IsLoaded)
                {
                    InitAnimationOrImage(imageControl);
                }
            }
        }
Beispiel #21
0
 public static void DisposeAll()
 {
     UnloadAll();
     AnimationCache.Clear();
 }
Beispiel #22
0
 public CreatureDead(MonsterInfo _monsterInfo)
 {
     monsterInfo     = _monsterInfo;
     curTime         = 0;
     monsterDeadTime = AnimationCache.getInstance().getAnimation(monsterInfo.charName).getMeshAnimation("die").getAnimTime();
 }
 public virtual bool Play(string aniName, AniActionType type, int dir, int interval, bool isLoop = true, int loopCount = int.MaxValue)
 {
     _cache = AnimationManager.GetInstance().GetAnimationCache(aniName);
     return(Play(type, dir, interval, isLoop, loopCount));
 }
Beispiel #24
0
        /// <summary>
        /// LoadContent will be called once per game and is the place to load
        /// all of your content.
        /// </summary>
        protected override void LoadContent()
        {
            // Create a new SpriteBatch, which can be used to draw textures.
            spriteBatch = new SpriteBatch(GraphicsDevice);

            font = Content.Load <SpriteFont>("Status");
            SpriteSheetLoader loader = new SpriteSheetLoader(Content, _fileReader);
            var ss = loader.Load("fanatiblaster");

            var frame = ss.SpriteList[SpriteNames.Down_spritesheetforthegame_1_0];

            var animationCache = new AnimationCache(ss);

            animationCache.Animations.Add("down", new string[] {
                SpriteNames.Down_spritesheetforthegame_1_1,
                SpriteNames.Down_spritesheetforthegame_1_2,
                SpriteNames.Down_spritesheetforthegame_1_3,
                SpriteNames.Down_spritesheetforthegame_1_4,
                SpriteNames.Down_spritesheetforthegame_1_5,
                SpriteNames.Down_spritesheetforthegame_1_6,
                SpriteNames.Down_spritesheetforthegame_1_7,
                SpriteNames.Down_spritesheetforthegame_1_8
            });

            MovementSystem        movementSystem        = new MovementSystem(_channelManager, 25, new string[] { "default" });
            TextRenderSystem      textRenderSystem      = new TextRenderSystem(spriteBatch, _channelManager, 100, "default");
            TextureRenderSystem   textureRenderSystem   = new TextureRenderSystem(spriteBatch, _channelManager, 101, "default");
            SpriteAnimationSystem spriteAnimationSystem = new SpriteAnimationSystem(animationCache, _channelManager, 30, "default");

            _gameManager.AddSystem(textRenderSystem);
            _gameManager.AddSystem(movementSystem);
            _gameManager.AddSystem(textureRenderSystem);
            _gameManager.AddSystem(spriteAnimationSystem);

            var te = _gameManager.EntityManager.Get("text", new string[] { "default" });

            te.CreateTextRenderEntity("Some Text", Color.Black, new Vector2(100, 100), 5, 1.0f, font);
            var teMove = _gameManager.EntityManager.Get("text2", new string[] { "default" });

            teMove.CreateTextRenderEntity("I'm Moving!", Color.Black, new Vector2(1, 1), 5, 1.0f, font)
            .AddComponent(new VelocityComponent()
            {
                Direction = new Vector2(1, 1), Speed = new Vector2(15, 15)
            });
            var teSprite = _gameManager.EntityManager.Get("sprite");

            teSprite.MakeTextureRenderAspect(new Vector2(150, 150), frame.IsRotated, frame.Origin, frame.SourceRectangle,
                                             frame.Texture, SpriteEffects.None, Color.White, 1.0f, 0.0f)
            .AddComponent(new AnimationComponent()
            {
                Active            = true,
                CurrentAnimation  = "down",
                CurrentFrameIndex = 0,
                ShouldLoop        = true,
                FPS = 8.0f
            });

            _gameManager.AddEntity(te);
            _gameManager.AddEntity(teMove);
            _gameManager.AddEntity(teSprite);
        }
Beispiel #25
0
    void Start()
    {
        J_Map.LoadConfig();
        J_Creature.LoadConfig();
        J_SkillEvent.LoadConfig();
        J_Skill.LoadConfig();
        J_Tower.LoadConfig();
        J_AnimData.LoadConfig();
        J_Effect.LoadConfig();
        J_ModelResource.LoadConfig();

        EntityManager.getInstance();
        EntityViewManager.getInstance();

        //DataPreLoader.getInstance().LoadData("Monsters");
        //根据图片信息txt将图片里帧信息分离出来
        //SpriteFrameCache.getInstance().addSpriteFrameFromFile("Resources/Config/monster1.txt");
        SpriteFrameCache.getInstance().addSpriteFrameFromFile("Resources/Config/Helper.txt");
        SpriteFrameCache.getInstance().addSpriteFrameFromFile("Resources/Config/Monster1.txt");
        SpriteFrameCache.getInstance().addSpriteFrameFromFile("Resources/Config/Monster2.txt");
        SpriteFrameCache.getInstance().addSpriteFrameFromFile("Resources/Config/Solider1.txt");
        SpriteFrameCache.getInstance().addSpriteFrameFromFile("Resources/Config/Tower1.txt");
        SpriteFrameCache.getInstance().addSpriteFrameFromFile("Resources/Config/TowerShooter.txt");
        AnimationCache animCache = AnimationCache.getInstance();

        List <D_AnimData> animList = J_AnimData.ToList();
        int count = animList.Count;

        for (int i = 0; i < count; i++)
        {
            D_AnimData animData = animList[i];
            bool       loop     = (animData._loop == 1?true:false);
            //无动作动画
            if (animData._animName == "")
            {
                animCache.addAnimation(
                    animCache.createAnimation(animData._FrameName, animData._startFrame, animData._endFrame, animData._delta, loop, animData._xoffset, animData._yoffset),
                    animData._modelName
                    );
            }
            else
            {
                animCache.addAnimation(
                    animCache.createAnimation(animData._FrameName, animData._startFrame, animData._endFrame, animData._delta, loop, animData._xoffset, animData._yoffset),
                    animData._modelName,
                    animData._animName
                    );
            }
        }

        GameObject uiroot = GameObject.Find("Canvas").gameObject;

        UiManager.Instance.Init(uiroot);

        PathLoader pathloader = new PathLoader();

        pathloader.LoadPath("level1");
        PathInfo path = pathloader.GetPath("1");

        //path.PrintAllPoint();


        //charInfo.ChangeState("move");
        BattleFingerEvent.getInstance().ChangeState("start");
        //tower = EntityManager.getInstance().AddTower(100);
        //tower.SetPosition(0, 0, 0);
        //tower.ChangeState("idle");
        //CharacterInfo charInfo = EntityManager.getInstance().AddSolider(50001);
        //charInfo.SetPosition(0, 0, 0);
        //monster = EntityManager.getInstance().AddMonster(10001, path);
        //monster.SetPosition(0, 0, 0);
        //tower = EntityManager.getInstance().AddTower(11);
        //tower.SetPosition(0, 0, 0);
        //tower.ChangeState("idle");
        //tower = EntityManager.getInstance().AddTower(12);
        //tower.SetPosition(0, 0, 0);
        //tower.ChangeState("idle");
        //tower = EntityManager.getInstance().AddTower(13);
        //tower.SetPosition(0, 0, 0);
        //tower.ChangeState("idle");
        tower = EntityManager.getInstance().AddTower(15);
        tower.SetPosition(0, 0, 0);
        tower.ChangeState("idle");
        //tower = EntityManager.getInstance().AddTower(15);
        //tower.SetPosition(0, 0, 0);
        //tower.ChangeState("idle");

        baseEffect = EntityManager.getInstance().AddStaticEffect(17, Vector3.zero);


        //GameManager.getInstance().LoadLevel(1);
        //GameManager.getInstance().StartGame();

        monster = EntityManager.getInstance().AddMonster(10001, path);
        monster.SetPosition(100, 5, 0);
        //monster = EntityManager.getInstance().AddMonster(10001, path);
        //monster.SetPosition(250, 0, 0);
        //monster.SetPosition(116, -100, 0);
        //monster.ChangeState("move");

        //CharacterInfo charInfo = EntityManager.getInstance().AddSolider(50001);
        //charInfo.SetPosition(-180, -150, 0);
        //charInfo.DoAction("idle");
        //charInfo = EntityManager.getInstance().AddSolider(50001);
        //charInfo.SetPosition(-170, -150, 0);
        //charInfo.DoAction("idle");
    }
Beispiel #26
0
    void Start()
    {
        EntityManager.getInstance();
        EntityViewManager.getInstance();

        //DataPreLoader.getInstance().LoadData("Monsters");
        //根据图片信息txt将图片里帧信息分离出来
        //SpriteFrameCache.getInstance().addSpriteFrameFromFile("Resources/Config/monster1.txt");
        SpriteFrameCache.getInstance().addSpriteFrameFromFile("Resources/Config/Helper.txt");
        SpriteFrameCache.getInstance().addSpriteFrameFromFile("Resources/Config/Monster1.txt");
        SpriteFrameCache.getInstance().addSpriteFrameFromFile("Resources/Config/Monster2.txt");
        SpriteFrameCache.getInstance().addSpriteFrameFromFile("Resources/Config/Solider1.txt");
        SpriteFrameCache.getInstance().addSpriteFrameFromFile("Resources/Config/Tower1.txt");
        SpriteFrameCache.getInstance().addSpriteFrameFromFile("Resources/Config/TowerShooter.txt");
        AnimationCache animCache = AnimationCache.getInstance();

        //第一个参数 createAnimation(参数1-图片名字 参数2-图片开始序号 参数3-图片结束序号 参数4-动画间隔 参数5-是否循环)
        //第二个参数 动画名称
        //第三个参数 动作名称
        animCache.addAnimation(animCache.createAnimation("wulf_", 19, 19, 0.1f, true), "wulf", "idle");
        animCache.addAnimation(animCache.createAnimation("wulf_", 1, 8, 0.1f, true), "wulf", "run1");
        animCache.addAnimation(animCache.createAnimation("wulf_", 9, 18, 0.1f, true), "wulf", "run2");
        animCache.addAnimation(animCache.createAnimation("wulf_", 19, 28, 0.1f, false), "wulf", "attack");
        animCache.addAnimation(animCache.createAnimation("wulf_", 29, 35, 0.1f, false), "wulf", "stuck_start");
        animCache.addAnimation(animCache.createAnimation("wulf_", 35, 40, 0.1f, false), "wulf", "stuck_end");
        animCache.addAnimation(animCache.createAnimation("wulf_", 41, 49, 0.1f, false), "wulf", "die");

        animCache.addAnimation(animCache.createAnimation("knight_", 1, 1, 0.1f, true), "knight", "idle");
        animCache.addAnimation(animCache.createAnimation("knight_", 2, 6, 0.1f, true), "knight", "run1");
        animCache.addAnimation(animCache.createAnimation("knight_", 7, 10, 0.1f, false), "knight", "attack");
        animCache.addAnimation(animCache.createAnimation("knight_", 11, 15, 0.1f, false), "knight", "attack1");
        animCache.addAnimation(animCache.createAnimation("knight_", 16, 33, 0.1f, false), "knight", "skill1");
        animCache.addAnimation(animCache.createAnimation("knight_", 34, 62, 0.1f, false), "knight", "skill2");
        animCache.addAnimation(animCache.createAnimation("knight_", 63, 69, 0.1f, false), "knight", "die");
        //箭塔
        animCache.addAnimation(animCache.createAnimation("arrowTowerlv1Shooter_", 1, 1, 0.1f, false), "arrowTowerlv1Shooter", "idle");
        animCache.addAnimation(animCache.createAnimation("arrowTowerlv1Shooter_", 1, 5, 0.1f, false), "arrowTowerlv1Shooter", "attack");
        animCache.addAnimation(animCache.createAnimation("arrowTowerlv1Shooter_", 6, 10, 0.1f, false), "arrowTowerlv1Shooter", "attack1");
        animCache.addAnimation(animCache.createAnimation("arrowTowerlv2Shooter_", 1, 1, 0.1f, false), "arrowTowerlv2Shooter", "idle");
        animCache.addAnimation(animCache.createAnimation("arrowTowerlv2Shooter_", 1, 5, 0.1f, false), "arrowTowerlv2Shooter", "attack");
        animCache.addAnimation(animCache.createAnimation("arrowTowerlv2Shooter_", 6, 10, 0.1f, false), "arrowTowerlv2Shooter", "attack1");
        animCache.addAnimation(animCache.createAnimation("arrowTowerlv3Shooter_", 1, 1, 0.1f, false), "arrowTowerlv3Shooter", "idle");
        animCache.addAnimation(animCache.createAnimation("arrowTowerlv3Shooter_", 1, 5, 0.1f, false), "arrowTowerlv3Shooter", "attack");
        animCache.addAnimation(animCache.createAnimation("arrowTowerlv3Shooter_", 6, 10, 0.1f, false), "arrowTowerlv3Shooter", "attack1");
        //兵营
        animCache.addAnimation(animCache.createAnimation("barrackTowerlv1_", 1, 1, 0.1f, false), "barrackTowerlv1", "idle");
        animCache.addAnimation(animCache.createAnimation("barrackTowerlv1_", 2, 4, 0.1f, false), "barrackTowerlv1", "start");
        animCache.addAnimation(animCache.createAnimation("barrackTowerlv2_", 1, 1, 0.1f, false), "barrackTowerlv2", "idle");
        animCache.addAnimation(animCache.createAnimation("barrackTowerlv2_", 2, 4, 0.1f, false), "barrackTowerlv2", "start");
        animCache.addAnimation(animCache.createAnimation("barrackTowerlv3_", 1, 1, 0.1f, false), "barrackTowerlv3", "idle");
        animCache.addAnimation(animCache.createAnimation("barrackTowerlv3_", 2, 4, 0.1f, false), "barrackTowerlv3", "start");
        //魔法塔
        animCache.addAnimation(animCache.createAnimation("mageTowerlv1_", 1, 1, 0.1f, false), "mageTowerlv1", "idle");
        animCache.addAnimation(animCache.createAnimation("mageTowerlv1_", 2, 6, 0.1f, false), "mageTowerlv1", "attack");
        animCache.addAnimation(animCache.createAnimation("mageTowerlv2_", 1, 1, 0.1f, false), "mageTowerlv2", "idle");
        animCache.addAnimation(animCache.createAnimation("mageTowerlv2_", 2, 6, 0.1f, false), "mageTowerlv2", "attack");
        animCache.addAnimation(animCache.createAnimation("mageTowerlv3_", 1, 1, 0.1f, false), "mageTowerlv3", "idle");
        animCache.addAnimation(animCache.createAnimation("mageTowerlv3_", 2, 6, 0.1f, false), "mageTowerlv3", "attack");
        animCache.addAnimation(animCache.createAnimation("mageTowerShooter_", 1, 1, 0.1f, false), "mageTowerShooter", "idle");
        animCache.addAnimation(animCache.createAnimation("mageTowerShooter_", 2, 2, 0.1f, false), "mageTowerShooter", "idle1");
        animCache.addAnimation(animCache.createAnimation("mageTowerShooter_", 3, 11, 0.1f, false), "mageTowerShooter", "attack");
        animCache.addAnimation(animCache.createAnimation("mageTowerShooter_", 12, 21, 0.1f, false), "mageTowerShooter", "attack1");
        animCache.addAnimation(animCache.createAnimation("mageTowerNecroShooter_", 1, 1, 0.1f, false), "mageTowerNecroShooter", "idle");
        animCache.addAnimation(animCache.createAnimation("mageTowerNecroShooter_", 2, 2, 0.1f, false), "mageTowerNecroShooter", "idle1");
        animCache.addAnimation(animCache.createAnimation("mageTowerNecroShooter_", 3, 15, 0.1f, false), "mageTowerNecroShooter", "attack");
        animCache.addAnimation(animCache.createAnimation("mageTowerNecroShooter_", 16, 28, 0.1f, false), "mageTowerNecroShooter", "attack1");
        animCache.addAnimation(animCache.createAnimation("mageTowerNecroShooter_", 29, 31, 0.1f, false), "mageTowerNecroShooter", "skill");
        animCache.addAnimation(animCache.createAnimation("mageTowerNecroShooter_", 32, 34, 0.1f, false), "mageTowerNecroShooter", "skill1");
        animCache.addAnimation(animCache.createAnimation("mageTowerMasterShooter_", 1, 1, 0.1f, false), "mageTowerMasterShooter", "idle");
        animCache.addAnimation(animCache.createAnimation("mageTowerMasterShooter_", 2, 2, 0.1f, false), "mageTowerMasterShooter", "idle1");
        animCache.addAnimation(animCache.createAnimation("mageTowerMasterShooter_", 3, 4, 0.1f, false), "mageTowerMasterShooter", "attack");
        animCache.addAnimation(animCache.createAnimation("mageTowerMasterShooter_", 5, 6, 0.1f, false), "mageTowerMasterShooter", "attack1");
        //弓箭特效
        animCache.addAnimation(animCache.createAnimation("arrow", 0, 0, 0.1f, true), "arrow");

        J_Map.LoadConfig();
        J_Creature.LoadConfig();
        J_SkillEvent.LoadConfig();
        J_Skill.LoadConfig();
        J_Tower.LoadConfig();

        GameObject uiroot = GameObject.Find("Canvas").gameObject;

        UiManager.Instance.Init(uiroot);

        //PathLoader pathloader = new PathLoader();
        //pathloader.LoadPath("level1");
        //PathInfo path = pathloader.GetPath("1");
        //path.PrintAllPoint();


        //charInfo.ChangeState("move");
        BattleFingerEvent.getInstance();
        tower = EntityManager.getInstance().AddTower(1);
        tower.SetPosition(250, 0, 0);
        tower.ChangeState("idle");
        GameManager.getInstance().LoadLevel(1);
        GameManager.getInstance().StartGame();
        //monster = EntityManager.getInstance().AddMonster(10002, path);
        //monster.SetPosition(-180, -150, 0);
    }
Beispiel #27
0
 public bool IsAnimLoaded(string name)
 {
     return(AnimationCache.ContainsKey(name));
 }
        private static ObjectAnimationUsingKeyFrames GetAnimation(Image imageControl, BitmapSource source)
        {
            var animation = AnimationCache.GetAnimation(source, GetRepeatBehavior(imageControl));

            if (animation != null)
            {
                return(animation);
            }
            GifFile gifMetadata;
            var     decoder = GetDecoder(source, imageControl, out gifMetadata) as GifBitmapDecoder;

            if (decoder != null && decoder.Frames.Count > 1)
            {
                var fullSize = GetFullSize(decoder, gifMetadata);
                int index    = 0;
                animation = new ObjectAnimationUsingKeyFrames();
                var          totalDuration = TimeSpan.Zero;
                BitmapSource baseFrame     = null;
                foreach (var rawFrame in decoder.Frames)
                {
                    var metadata = GetFrameMetadata(decoder, gifMetadata, index);

                    var frame    = MakeFrame(fullSize, rawFrame, metadata, baseFrame);
                    var keyFrame = new DiscreteObjectKeyFrame(frame, totalDuration);
                    animation.KeyFrames.Add(keyFrame);

                    totalDuration += metadata.Delay;

                    switch (metadata.DisposalMethod)
                    {
                    case FrameDisposalMethod.None:
                    case FrameDisposalMethod.DoNotDispose:
                        baseFrame = frame;
                        break;

                    case FrameDisposalMethod.RestoreBackground:
                        if (IsFullFrame(metadata, fullSize))
                        {
                            baseFrame = null;
                        }
                        else
                        {
                            baseFrame = ClearArea(frame, metadata);
                        }
                        break;

                    case FrameDisposalMethod.RestorePrevious:
                        // Reuse same base frame
                        break;
                    }

                    index++;
                }
                animation.Duration = totalDuration;

                animation.RepeatBehavior = GetActualRepeatBehavior(imageControl, decoder, gifMetadata);

                AnimationCache.AddAnimation(source, GetRepeatBehavior(imageControl), animation);
                AnimationCache.IncrementReferenceCount(source, GetRepeatBehavior(imageControl));
                return(animation);
            }
            return(null);
        }