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; }
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); } } }
//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); }
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(); } }
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(); }
public static void Initialize() { LoadSprites(); AnimationCache.Clear(); GameBase.OnScreenLayoutChanged += delegate { DisposeDisposable(); }; }
public static AnimationCache getInstance() { if (instance == null) { instance = new AnimationCache(); } return(instance); }
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"); }
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); } } }
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(); }
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(); } }
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); } }
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); } } }
public static void DisposeAll() { UnloadAll(); AnimationCache.Clear(); }
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)); }
/// <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); }
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"); }
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); }
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); }