Advertisement
Guest User

Untitled

a guest
Apr 3rd, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Haxe 6.37 KB | None | 0 0
  1. package com.isartdigital.diamant.ui.hud.buttons;
  2. import com.isartdigital.diamant.game.controllers.heroes.HeroesManager;
  3. import com.isartdigital.diamant.game.controllers.heroes.HeroesManager.HeroDescription;
  4. import com.isartdigital.diamant.game.pooling.PoolManager;
  5. import com.isartdigital.diamant.game.pooling.PoolObject;
  6. import com.isartdigital.diamant.tools.JsonHelper;
  7. import com.isartdigital.diamant.tools.ParticleManager;
  8. import com.isartdigital.diamant.tools.UIHelper;
  9. import com.isartdigital.utils.ui.smart.SmartButton;
  10. import com.isartdigital.utils.ui.smart.SmartComponent;
  11. import com.isartdigital.utils.ui.smart.TextSprite;
  12. import com.isartdigital.utils.ui.smart.UIMovie;
  13. import com.isartdigital.utils.ui.smart.UISprite;
  14. import js.Browser;
  15. import pixi.core.display.Container;
  16. import pixi.core.math.Point;
  17. import pixi.interaction.EventTarget;
  18.  
  19. /**
  20.  * ...
  21.  * @author Etienne HECK
  22.  */
  23. class HeroCard extends SmartButton
  24. {
  25.     private static inline var LAYER_OCCUPIED_FLAG:String = "Occupied";
  26.     private static inline var GRADE_LAYER_NAME:String = "GradeIndicator";
  27.     private static inline var SKILL_LAYER_NAME:String = "SkillIndicator";
  28.     private static inline var CLASS_LAYER_NAME:String = "ClassIndicator";
  29.     private static inline var SKILL_TEXT_LAYER_NAME:String = "Skill Text";
  30.     private static inline var NAME_TEXT_LAYER_NAME:String = "Name";
  31.     private static inline var HERO_VIEW_LAYER_NAME:String = "Hero";
  32.     private static inline var HERO_VIEW_LAYER_LOGO:String = "HeroLogo";
  33.     private static inline var SKILL_TEXT_PREFIX:String = "+ ";
  34.     private static inline var SKILL_TEXT_SUFFIX:String = " %";
  35.     private static inline var OCCUPIED_FLAG_TXT:String = "FlagTxt";
  36.    
  37.    
  38.    
  39.     private static inline var HERO_VIEW_BODY_LAYER_NAME:String = "Corps";
  40.     private static inline var HERO_VIEW_HEAD_LAYER_NAME:String = "Tete";
  41.    
  42.     private static inline var HERO_LOGO_WIDTH:Float = 220;
  43.     private static inline var HERO_LOGO_HEIGHT:Float = 230;
  44.    
  45.     private var heroAsset:SmartComponent;
  46.     private var heroHead:UIMovie;
  47.     private var heroBody:UIMovie;
  48.     private var heroLogoContainer:SmartComponent;
  49.     private var heroView:UISprite;
  50.     private var nameTextSprite:TextSprite;
  51.     private var occupiedFlagText:TextSprite;
  52.     private var skillTextSprite:TextSprite;
  53.     private var gradeFrame:Int;
  54.     private var skillFrame:Int;
  55.     private var classFrame:Int;
  56.    
  57.     private var heroFrame:Int;
  58.  
  59.     public var originHero(default,null):HeroDescription;
  60.  
  61.     private var heroAssetSize:Point = new Point();
  62.    
  63.     private var occupiedFlag:UISprite;
  64.     public var heroClickCallBack:HeroDescription->Void;
  65.    
  66.     public function new(pID:String=null)
  67.     {
  68.         super("HeroCard_Face");
  69.        
  70.         occupiedFlag = cast(getChildByName(LAYER_OCCUPIED_FLAG), UISprite);
  71.         occupiedFlagText = cast(getChildByName(OCCUPIED_FLAG_TXT), TextSprite);
  72.         occupiedFlagText.visible = false;
  73.         resetDisplay();
  74.     }
  75.    
  76.     override function _click(pEvent:EventTarget = null):Void
  77.     {
  78.         super._click(pEvent);
  79.         if (heroClickCallBack != null) heroClickCallBack(originHero);
  80.     }
  81.    
  82.    
  83.     private function resetDisplay():Void
  84.     {
  85.         skillTextSprite = cast(getChildByName(SKILL_TEXT_LAYER_NAME), TextSprite);
  86.         nameTextSprite = cast(getChildByName(NAME_TEXT_LAYER_NAME), TextSprite);
  87.         removeGraphicView();
  88.         if (occupiedFlag != null) {
  89.             occupiedFlag.visible = false;
  90.             occupiedFlagText.visible = occupiedFlag.visible;
  91.         }
  92.         interactive = true;
  93.         alpha = 1;
  94.         occupiedFlag.visible = false;
  95.         occupiedFlagText.visible = false;
  96.     }
  97.     private function removeGraphicView():Void
  98.     {
  99.         if (heroAsset != null) {
  100.             if (heroAsset.parent != null)heroAsset.parent.removeChild(heroAsset);
  101.             heroAsset.destroy();
  102.         }
  103.         heroAsset = null;
  104.     }
  105.    
  106.     public function synchronizeWithHero(pHeroDatas:HeroDescription,pFrame:Int=0):Void
  107.     {
  108.         resetDisplay();
  109.         originHero = pHeroDatas;
  110.         changeSkinCallBack = changeSkinFace;
  111.         trace(Browser.navigator.language);
  112.         gradeFrame = JsonHelper.getHeroStats().grades.gradeNames.indexOf(pHeroDatas.grade);
  113.         skillFrame = Reflect.fields(JsonHelper.getHeroStats().skills.chancePerSkill).indexOf(pHeroDatas.skill);
  114.         classFrame = Reflect.fields(JsonHelper.getHeroStats().classes.names).indexOf(pHeroDatas.type);
  115.         //trace(pHeroDatas.name);
  116.         nameTextSprite.text = pHeroDatas.name.split(" ")[0];
  117.         skillTextSprite.text = SKILL_TEXT_PREFIX + HeroesManager.getSkillPercentage(pHeroDatas, 10) + SKILL_TEXT_SUFFIX;
  118.         setHeroAsset (originHero.type);
  119.         setHeroFrame(pFrame);
  120.     }
  121.    
  122.     public function setHeroAsset (pType):Void {
  123.         removeGraphicView();
  124.         heroAsset = new SmartComponent("MCP_Heros_" + originHero.type);
  125.     }
  126.    
  127.     public function setHeroFrame (pFrame:Int = 0):Void {
  128.         heroFrame = pFrame;
  129.         changeSkinFace(this);
  130.         heroAssetSize.set(heroAsset.width, heroAsset.height);
  131.         showHeroFaceScaled();
  132.         if (heroAsset.width > HERO_LOGO_WIDTH + 10 || heroAsset.height > HERO_LOGO_HEIGHT + 10) {
  133.             heroAssetSize.set(heroAsset.width, heroAsset.height);
  134.             showHeroFaceScaled();
  135.         }
  136.     }
  137.    
  138.     private function changeSkinFace(pFaceBtn:SmartButton):Void
  139.     {
  140.         heroLogoContainer = cast(getChildByName(HERO_VIEW_LAYER_LOGO), SmartComponent);
  141.         occupiedFlag = cast(getChildByName(LAYER_OCCUPIED_FLAG), UISprite);
  142.         occupiedFlag.visible = originHero.status == HeroStatus.MISSION ;
  143.         if(occupiedFlag.visible) occupiedFlagText.visible=true;
  144.         cast(pFaceBtn.getChildByName(GRADE_LAYER_NAME), UIMovie).getMovieClipAnim().gotoAndStop(gradeFrame);
  145.         cast(pFaceBtn.getChildByName(CLASS_LAYER_NAME), UIMovie).getMovieClipAnim().gotoAndStop(classFrame);
  146.         cast(pFaceBtn.getChildByName(SKILL_LAYER_NAME), UIMovie).getMovieClipAnim().gotoAndStop(skillFrame);
  147.         showHeroFaceScaled();
  148.     }
  149.     private function showHeroFaceScaled():Void {
  150.         if (heroAsset == null)  return;
  151.         showHeroFace();
  152.         heroAsset.scale=UIHelper.getObjectSizeToScale(heroAssetSize.x,heroAssetSize.y, HERO_LOGO_WIDTH, HERO_LOGO_HEIGHT);
  153.     }
  154.    
  155.     private function showHeroFace():Void {
  156.         if (heroAsset == null)  return;
  157.         heroLogoContainer.addChild(heroAsset);
  158.         cast(heroAsset.getChildByName(HERO_VIEW_HEAD_LAYER_NAME), UIMovie).getMovieClipAnim().gotoAndStop(originHero.appearance.head);
  159.         cast(heroAsset.getChildByName(HERO_VIEW_BODY_LAYER_NAME), UIMovie).getMovieClipAnim().gotoAndStop(originHero.appearance.body);
  160.     }
  161.    
  162.     public function unregisterHero():Void
  163.     {
  164.         resetDisplay();
  165.         heroAsset = null;
  166.         originHero = null;
  167.        
  168.     }
  169.    
  170.    
  171.     public function setInactive():Void
  172.     {
  173.         alpha = 0.6;
  174.         interactive = false;
  175.     }
  176.    
  177. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement