Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.isartdigital.diamant.ui.hud.buttons;
- import com.isartdigital.diamant.game.controllers.heroes.HeroesManager;
- import com.isartdigital.diamant.game.controllers.heroes.HeroesManager.HeroDescription;
- import com.isartdigital.diamant.game.pooling.PoolManager;
- import com.isartdigital.diamant.game.pooling.PoolObject;
- import com.isartdigital.diamant.tools.JsonHelper;
- import com.isartdigital.diamant.tools.ParticleManager;
- import com.isartdigital.diamant.tools.UIHelper;
- import com.isartdigital.utils.ui.smart.SmartButton;
- import com.isartdigital.utils.ui.smart.SmartComponent;
- import com.isartdigital.utils.ui.smart.TextSprite;
- import com.isartdigital.utils.ui.smart.UIMovie;
- import com.isartdigital.utils.ui.smart.UISprite;
- import js.Browser;
- import pixi.core.display.Container;
- import pixi.core.math.Point;
- import pixi.interaction.EventTarget;
- /**
- * ...
- * @author Etienne HECK
- */
- class HeroCard extends SmartButton
- {
- private static inline var LAYER_OCCUPIED_FLAG:String = "Occupied";
- private static inline var GRADE_LAYER_NAME:String = "GradeIndicator";
- private static inline var SKILL_LAYER_NAME:String = "SkillIndicator";
- private static inline var CLASS_LAYER_NAME:String = "ClassIndicator";
- private static inline var SKILL_TEXT_LAYER_NAME:String = "Skill Text";
- private static inline var NAME_TEXT_LAYER_NAME:String = "Name";
- private static inline var HERO_VIEW_LAYER_NAME:String = "Hero";
- private static inline var HERO_VIEW_LAYER_LOGO:String = "HeroLogo";
- private static inline var SKILL_TEXT_PREFIX:String = "+ ";
- private static inline var SKILL_TEXT_SUFFIX:String = " %";
- private static inline var OCCUPIED_FLAG_TXT:String = "FlagTxt";
- private static inline var HERO_VIEW_BODY_LAYER_NAME:String = "Corps";
- private static inline var HERO_VIEW_HEAD_LAYER_NAME:String = "Tete";
- private static inline var HERO_LOGO_WIDTH:Float = 220;
- private static inline var HERO_LOGO_HEIGHT:Float = 230;
- private var heroAsset:SmartComponent;
- private var heroHead:UIMovie;
- private var heroBody:UIMovie;
- private var heroLogoContainer:SmartComponent;
- private var heroView:UISprite;
- private var nameTextSprite:TextSprite;
- private var occupiedFlagText:TextSprite;
- private var skillTextSprite:TextSprite;
- private var gradeFrame:Int;
- private var skillFrame:Int;
- private var classFrame:Int;
- private var heroFrame:Int;
- public var originHero(default,null):HeroDescription;
- private var heroAssetSize:Point = new Point();
- private var occupiedFlag:UISprite;
- public var heroClickCallBack:HeroDescription->Void;
- public function new(pID:String=null)
- {
- super("HeroCard_Face");
- occupiedFlag = cast(getChildByName(LAYER_OCCUPIED_FLAG), UISprite);
- occupiedFlagText = cast(getChildByName(OCCUPIED_FLAG_TXT), TextSprite);
- occupiedFlagText.visible = false;
- resetDisplay();
- }
- override function _click(pEvent:EventTarget = null):Void
- {
- super._click(pEvent);
- if (heroClickCallBack != null) heroClickCallBack(originHero);
- }
- private function resetDisplay():Void
- {
- skillTextSprite = cast(getChildByName(SKILL_TEXT_LAYER_NAME), TextSprite);
- nameTextSprite = cast(getChildByName(NAME_TEXT_LAYER_NAME), TextSprite);
- removeGraphicView();
- if (occupiedFlag != null) {
- occupiedFlag.visible = false;
- occupiedFlagText.visible = occupiedFlag.visible;
- }
- interactive = true;
- alpha = 1;
- occupiedFlag.visible = false;
- occupiedFlagText.visible = false;
- }
- private function removeGraphicView():Void
- {
- if (heroAsset != null) {
- if (heroAsset.parent != null)heroAsset.parent.removeChild(heroAsset);
- heroAsset.destroy();
- }
- heroAsset = null;
- }
- public function synchronizeWithHero(pHeroDatas:HeroDescription,pFrame:Int=0):Void
- {
- resetDisplay();
- originHero = pHeroDatas;
- changeSkinCallBack = changeSkinFace;
- trace(Browser.navigator.language);
- gradeFrame = JsonHelper.getHeroStats().grades.gradeNames.indexOf(pHeroDatas.grade);
- skillFrame = Reflect.fields(JsonHelper.getHeroStats().skills.chancePerSkill).indexOf(pHeroDatas.skill);
- classFrame = Reflect.fields(JsonHelper.getHeroStats().classes.names).indexOf(pHeroDatas.type);
- //trace(pHeroDatas.name);
- nameTextSprite.text = pHeroDatas.name.split(" ")[0];
- skillTextSprite.text = SKILL_TEXT_PREFIX + HeroesManager.getSkillPercentage(pHeroDatas, 10) + SKILL_TEXT_SUFFIX;
- setHeroAsset (originHero.type);
- setHeroFrame(pFrame);
- }
- public function setHeroAsset (pType):Void {
- removeGraphicView();
- heroAsset = new SmartComponent("MCP_Heros_" + originHero.type);
- }
- public function setHeroFrame (pFrame:Int = 0):Void {
- heroFrame = pFrame;
- changeSkinFace(this);
- heroAssetSize.set(heroAsset.width, heroAsset.height);
- showHeroFaceScaled();
- if (heroAsset.width > HERO_LOGO_WIDTH + 10 || heroAsset.height > HERO_LOGO_HEIGHT + 10) {
- heroAssetSize.set(heroAsset.width, heroAsset.height);
- showHeroFaceScaled();
- }
- }
- private function changeSkinFace(pFaceBtn:SmartButton):Void
- {
- heroLogoContainer = cast(getChildByName(HERO_VIEW_LAYER_LOGO), SmartComponent);
- occupiedFlag = cast(getChildByName(LAYER_OCCUPIED_FLAG), UISprite);
- occupiedFlag.visible = originHero.status == HeroStatus.MISSION ;
- if(occupiedFlag.visible) occupiedFlagText.visible=true;
- cast(pFaceBtn.getChildByName(GRADE_LAYER_NAME), UIMovie).getMovieClipAnim().gotoAndStop(gradeFrame);
- cast(pFaceBtn.getChildByName(CLASS_LAYER_NAME), UIMovie).getMovieClipAnim().gotoAndStop(classFrame);
- cast(pFaceBtn.getChildByName(SKILL_LAYER_NAME), UIMovie).getMovieClipAnim().gotoAndStop(skillFrame);
- showHeroFaceScaled();
- }
- private function showHeroFaceScaled():Void {
- if (heroAsset == null) return;
- showHeroFace();
- heroAsset.scale=UIHelper.getObjectSizeToScale(heroAssetSize.x,heroAssetSize.y, HERO_LOGO_WIDTH, HERO_LOGO_HEIGHT);
- }
- private function showHeroFace():Void {
- if (heroAsset == null) return;
- heroLogoContainer.addChild(heroAsset);
- cast(heroAsset.getChildByName(HERO_VIEW_HEAD_LAYER_NAME), UIMovie).getMovieClipAnim().gotoAndStop(originHero.appearance.head);
- cast(heroAsset.getChildByName(HERO_VIEW_BODY_LAYER_NAME), UIMovie).getMovieClipAnim().gotoAndStop(originHero.appearance.body);
- }
- public function unregisterHero():Void
- {
- resetDisplay();
- heroAsset = null;
- originHero = null;
- }
- public function setInactive():Void
- {
- alpha = 0.6;
- interactive = false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement