Recycle system code - UQdeco2800/2021-ext-studio-2 GitHub Wiki
Relevant Files:
- RecycleDisplay.java: Responsible for displays the itembar UI on the screen.
/* Listen to recycle system events*/
entity.getEvents().addListener("updateRecover", this::updateRecyleIconUI);
Creates recycle system ui styles and adds actors to the stage.
@Override
public void create() {
super.create();
TestBuffForItem.countNumber = 0;
addActors();
entity.getEvents().addListener("updateRecover", this::updateRecyleIconUI);
}
Updates the recycle ui time by time conditions, useing switch
public void updateRecyleIconUI(int dis) {
if(dis > 0){
for(int i = recycleIcon.size() - 1; i >= 0; --i){
table.removeActor(recycleIcon.get(i));
recycleIcon.remove(recycleIcon.get(i));
}
table.reset();
table.bottom().right();
table.setFillParent(true);
table.padBottom(50).padRight(400);
float iconLength = 60f;
if(TestBuffForItem.countNumber >= 0){
{
switch (TestBuffForItem.countNumber){
case 0:{
recycleIcon.add(new Image(ServiceLocator.getResourceService()
.getAsset("images/itembar/recycle/recycle-256px-default.png", Texture.class)));
table.add(recycleIcon.get(0)).size(iconLength).pad(20);
}break;
case 1:{
if(recycleState == RecycleDisplay.recycleState.hp){
recycleIcon.add(new Image(ServiceLocator.getResourceService()
.getAsset("images/itembar/recycle/recycle-256px-bb1.png", Texture.class)));
}else if(recycleState == RecycleDisplay.recycleState.food){
recycleIcon.add(new Image(ServiceLocator.getResourceService()
.getAsset("images/itembar/recycle/recycle-256px-leg1.png", Texture.class)));
}else {
recycleIcon.add(new Image(ServiceLocator.getResourceService()
.getAsset("images/itembar/recycle/recycle-256px-water1.png", Texture.class)));
}
table.add(recycleIcon.get(0)).size(iconLength).pad(20);
}break;
case 2:{
if(recycleState == RecycleDisplay.recycleState.hp){
recycleIcon.add(new Image(ServiceLocator.getResourceService()
.getAsset("images/itembar/recycle/recycle-256px-bb2.png", Texture.class)));
}else if(recycleState == RecycleDisplay.recycleState.food){
recycleIcon.add(new Image(ServiceLocator.getResourceService()
.getAsset("images/itembar/recycle/recycle-256px-leg2.png", Texture.class)));
}else {
recycleIcon.add(new Image(ServiceLocator.getResourceService()
.getAsset("images/itembar/recycle/recycle-256px-water2.png", Texture.class)));
}
table.add(recycleIcon.get(0)).size(iconLength).pad(20);
}break;
case 3:{
if(recycleState == RecycleDisplay.recycleState.hp){
recycleIcon.add(new Image(ServiceLocator.getResourceService()
.getAsset("images/itembar/recycle/recycle-256px-bb3.png", Texture.class)));
}else if(recycleState == RecycleDisplay.recycleState.food){
recycleIcon.add(new Image(ServiceLocator.getResourceService()
.getAsset("images/itembar/recycle/recycle-256px-leg3.png", Texture.class)));
}else {
recycleIcon.add(new Image(ServiceLocator.getResourceService()
.getAsset("images/itembar/recycle/recycle-256px-water3.png", Texture.class)));
}
table.add(recycleIcon.get(0)).size(iconLength).pad(20);
RecycleDisplay.recycleNumber =1;
}
}
}
}
//add images into the screen
stage.addActor(table);
}
}
remove recycleIcon by useing a for loop
@Override
public void dispose() {
super.dispose();
for (int i = 0; i < recycleIcon.size(); ++i){
recycleIcon.remove(i);
}
when player pressed number,if recycleState = hp
then add helth, if recycleState = food
then add food image, if recycleState = water
then add water image
case Keys.NUM_4://consume recycle :add chicken/water/health
RecycleDisplay.isKey =false;
if(RecycleDisplay.recycleNumber ==1){
if(!RecycleDisplay.isKey){
TestBuffForItem.countNumber=0;
RecycleDisplay.recycleNumber =0;
RecycleDisplay.isKey =true;
if(RecycleDisplay.recycleState == RecycleDisplay.recycleState.hp){//add health
MainGameScreen.players.getComponent(CombatStatsComponent.class).setHealth(
MainGameScreen.players.getComponent(CombatStatsComponent.class).getHealth()+10
);
}else if(RecycleDisplay.recycleState == RecycleDisplay.recycleState.food){//add food
FoodDisplay.addOrRemoveImage(1);
}else {//add water
WaterDisplay.addOrRemoveImage(1);
}
}
}
return true;
change recycle state by pressing 5,6,7
case Keys.NUM_5://change recycle state to food
RecycleDisplay.recycleState = RecycleDisplay.recycleState.food;
return true;
case Keys.NUM_6://change recycle state to water
RecycleDisplay.recycleState = RecycleDisplay.recycleState.water;
return true;
case Keys.NUM_7://change recycle state to kits
RecycleDisplay.recycleState = RecycleDisplay.recycleState.hp;
return true;