Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package com.dongbat.invasion.system; import com.artemis.Aspect; import com.artemis.ComponentMapper; import com.artemis.Entity; import com.artemis.annotations.Wire; import com.artemis.systems.EntityProcessingSystem; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.Sprite; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.math.MathUtils; import com.badlogic.gdx.math.Vector2; import com.dongbat.invasion.component.Ads; import com.dongbat.invasion.component.DisplayPosition; import com.dongbat.invasion.component.Enemy; import com.dongbat.invasion.util.AdsUtil; import com.dongbat.invasion.util.AssetUtil; import com.dongbat.invasion.util.EntityUtil; import com.dongbat.invasion.util.RenderCameraUtil; /** * * @author password */ @Wire public class AdsRenderSystem extends EntityProcessingSystem { private ComponentMapper<Ads> adsMapper; private ComponentMapper<DisplayPosition> dp; private SpriteBatch spriteBatch; public AdsRenderSystem() { super(Aspect.getAspectForAll(Ads.class)); spriteBatch = new SpriteBatch(); } @Override protected void process(Entity e) { // TODO render offline ads Ads ads = adsMapper.get(e); DisplayPosition displayPosition = dp.get(e); Texture texture = ads.getSprite().getTexture(); Enemy enemy = EntityUtil.getComponent(e, Enemy.class); if (enemy.hasPickedUpAds()) { if (enemy.isAirUnit()) { spriteBatch.draw(texture, displayPosition.getX() + ads.getPosition().x - texture.getWidth() / 2, displayPosition.getY() + ads.getPosition().y - texture.getHeight()); } else { spriteBatch.draw(texture, displayPosition.getX() + ads.getPosition().x - texture.getWidth() / 2, displayPosition.getY() + ads.getPosition().y); } spriteBatch.setProjectionMatrix(RenderCameraUtil.getCamera().combined); } } @Override protected void removed(Entity e) { Ads ads = adsMapper.get(e); if (!ads.isOffline()) { AdsUtil.remove(ads.getId()); } } @Override protected void inserted(Entity e) { Ads ads = adsMapper.get(e); Vector2 position = ads.getPosition(); if (ads.isOffline()) { //set sprite String spriteName = MathUtils.random(10) + ".jpg"; Texture texture = AssetUtil.getTexture(spriteName); Sprite sprite = new Sprite(texture); ads.setSprite(sprite); //set size by texture width, height ads.setSize(new Vector2(texture.getWidth(), texture.getHeight())); } Vector2 size = ads.getSize(); if (size == null) { size = new Vector2(0, 0); } int id = AdsUtil.add(position.x, position.y, size.x, size.y); if (!ads.isOffline()) { ads.setId(id); } } @Override protected void end() { spriteBatch.end(); } @Override protected void begin() { spriteBatch.begin(); } @Override protected void dispose() { spriteBatch.dispose(); } }