Skip to content

Commit

Permalink
penalties for humanoid league
Browse files Browse the repository at this point in the history
* change "Service/Incapable" to "Pickup/Incapable"
* add "Service" penalty button (sets 60s penalty or adds 30s for upgrade)
* generally differentiate between pickup and service
  • Loading branch information
dseifert committed Mar 2, 2014
1 parent 711cb8c commit 3488e97
Show file tree
Hide file tree
Showing 7 changed files with 99 additions and 46 deletions.
3 changes: 3 additions & 0 deletions src/controller/action/ActionBoard.java
Expand Up @@ -36,6 +36,7 @@
import controller.action.ui.penalty.PickUp;
import controller.action.ui.penalty.PickUpHL;
import controller.action.ui.penalty.Pushing;
import controller.action.ui.penalty.ServiceHL;
import controller.action.ui.penalty.Substitute;
import controller.action.ui.state.Finish;
import controller.action.ui.state.Initial;
Expand Down Expand Up @@ -102,6 +103,7 @@ public class ActionBoard
public static Attack attack;
public static Defense defense;
public static PickUpHL pickUpHL;
public static ServiceHL serviceHL;
public static CoachMotion coachMotion;
public static TeammatePushing teammatePushing;
public static Substitute substitute;
Expand Down Expand Up @@ -175,6 +177,7 @@ public static void init()
attack = new Attack();
defense = new Defense();
pickUpHL = new PickUpHL();
serviceHL = new ServiceHL();
coachMotion = new CoachMotion();
teammatePushing = new TeammatePushing();
substitute = new Substitute();
Expand Down
11 changes: 7 additions & 4 deletions src/controller/action/ui/Robot.java
Expand Up @@ -11,6 +11,7 @@
import controller.action.ui.penalty.Penalty;
import controller.action.ui.penalty.PickUp;
import controller.action.ui.penalty.PickUpHL;
import controller.action.ui.penalty.ServiceHL;
import controller.action.ui.penalty.Substitute;
import data.AdvancedData;
import data.HL;
Expand Down Expand Up @@ -57,15 +58,15 @@ public void perform(AdvancedData data)
ArrayList<Long> playerInfoList = data.penaltyQueueForSubPlayers.get(side);
if (playerInfoList.isEmpty()){
if (Rules.league instanceof HL) {
player.penalty = PlayerInfo.PENALTY_HL_REQUEST_FOR_SERVICE;
player.penalty = PlayerInfo.PENALTY_HL_PICKUP_OR_INCAPABLE;
} else {
player.penalty = PlayerInfo.PENALTY_SPL_REQUEST_FOR_PICKUP;
}
data.whenPenalized[side][number] = data.getTime();
} else {
Long playerInfo = playerInfoList.get(0);
if (Rules.league instanceof HL) {
player.penalty = PlayerInfo.PENALTY_HL_REQUEST_FOR_SERVICE;
player.penalty = PlayerInfo.PENALTY_HL_PICKUP_OR_INCAPABLE;
} else {
player.penalty = PlayerInfo.PENALTY_SPL_REQUEST_FOR_PICKUP;
}
Expand Down Expand Up @@ -103,8 +104,10 @@ public boolean isLegal(AdvancedData data)
&& (data.team[side].player[number].penalty != PlayerInfo.PENALTY_SUBSTITUTE || data.getNumberOfRobotsInPlay(side) < Rules.league.robotsPlaying)
&& !isCoach(data)
|| EventHandler.getInstance().lastUIEvent instanceof PickUpHL
&& data.team[side].player[number].penalty != PlayerInfo.PENALTY_HL_REQUEST_FOR_SERVICE
&& data.team[side].player[number].penalty != PlayerInfo.PENALTY_HL_TEEN_REQUEST_FOR_PICKUP_2_SERVICE
&& data.team[side].player[number].penalty != PlayerInfo.PENALTY_HL_SERVICE
&& data.team[side].player[number].penalty != PlayerInfo.PENALTY_SUBSTITUTE
|| EventHandler.getInstance().lastUIEvent instanceof ServiceHL
&& data.team[side].player[number].penalty != PlayerInfo.PENALTY_HL_SERVICE
&& data.team[side].player[number].penalty != PlayerInfo.PENALTY_SUBSTITUTE
|| (EventHandler.getInstance().lastUIEvent instanceof PickUp && Rules.league instanceof SPL)
&& data.team[side].player[number].penalty != PlayerInfo.PENALTY_SPL_REQUEST_FOR_PICKUP
Expand Down
30 changes: 18 additions & 12 deletions src/controller/action/ui/penalty/PickUpHL.java
Expand Up @@ -9,11 +9,11 @@
*
* @author Michel-Zen
*/
public class PickUpHL extends PickUp
public class PickUpHL extends Penalty
{
/**
* Performs this action`s penalty on a selected player.
*
*
* @param data The current data to work on.
* @param player The player to penalise.
* @param side The side the player is playing on (0:left, 1:right).
Expand All @@ -24,15 +24,21 @@ public void performOn(AdvancedData data, PlayerInfo player, int side, int number
{
if (player.penalty == PlayerInfo.PENALTY_NONE) {
data.whenPenalized[side][number] = data.getTime();
player.penalty = PlayerInfo.PENALTY_HL_REQUEST_FOR_SERVICE;
Log.state(data, "Request for Service "+
Rules.league.teamColorName[data.team[side].teamColor]
+ " " + (number+1));
} else {
player.penalty = PlayerInfo.PENALTY_HL_TEEN_REQUEST_FOR_PICKUP_2_SERVICE;
Log.state(data, "Additional Request for Service "+
Rules.league.teamColorName[data.team[side].teamColor]
+ " " + (number+1));
}

player.penalty = PlayerInfo.PENALTY_HL_PICKUP_OR_INCAPABLE;
Log.state(data, "Request for PickUp / Incapable Player "+ Rules.league.teamColorName[data.team[side].teamColor]+ " " + (number+1));
}

/**
* Checks if this action is legal with the given data (model).
* Illegal actions are not performed by the EventHandler.
*
* @param data The current data to check with.
*/
@Override
public boolean isLegal(AdvancedData data)
{
return true;
}
}
}
38 changes: 38 additions & 0 deletions src/controller/action/ui/penalty/ServiceHL.java
@@ -0,0 +1,38 @@
package controller.action.ui.penalty;

import common.Log;
import data.AdvancedData;
import data.PlayerInfo;
import data.Rules;

/**
*
* @author Daniel Seifert
*/
public class ServiceHL extends PickUp
{
/**
* Performs this action`s penalty on a selected player.
*
* @param data The current data to work on.
* @param player The player to penalise.
* @param side The side the player is playing on (0:left, 1:right).
* @param number The player`s number, beginning with 0!
*/
@Override
public void performOn(AdvancedData data, PlayerInfo player, int side, int number)
{
if (player.penalty == PlayerInfo.PENALTY_NONE) {
data.whenPenalized[side][number] = data.getTime();
player.penalty = PlayerInfo.PENALTY_HL_SERVICE;
Log.state(data, "Request for Service " +
Rules.league.teamColorName[data.team[side].teamColor]
+ " " + (number+1));
} else {
player.penalty = PlayerInfo.PENALTY_HL_SERVICE;
Log.state(data, "Additional Request for Service " +
Rules.league.teamColorName[data.team[side].teamColor]
+ " " + (number+1));
}
}
}
41 changes: 23 additions & 18 deletions src/controller/ui/GUI.java
Expand Up @@ -170,7 +170,8 @@ public void setText(String text)
private static final String PEN_PHYSICAL = "Physical Contact";
private static final String PEN_DEFENSE = "Illegal Defense";
private static final String PEN_ATTACK = "Illegal Attack";
private static final String PEN_SERVICE = "Service/Incapable";
private static final String PEN_PICKUP_INCAPABLE = "Pickup/Incapable";
private static final String PEN_SERVICE = "Service";
private static final String PEN_SUBSTITUTE = "Substitute";
private static final String PEN_SUBSTITUTE_SHORT = "Sub";
private static final String DROP_BALL = "Dropped Ball";
Expand Down Expand Up @@ -458,13 +459,14 @@ public void windowClosing(WindowEvent e) {
pen[8] = new ToggleButton(data.dropInPlayerMode ? TEAMMATE_PUSHING : PEN_COACH_MOTION);
pen[9] = new ToggleButton(PEN_SUBSTITUTE);
} else if (Rules.league instanceof HL) {
pen = new JToggleButton[6];
pen = new JToggleButton[7];
pen[0] = new ToggleButton(PEN_MANIPULATION);
pen[1] = new ToggleButton(PEN_PHYSICAL);
pen[2] = new ToggleButton(PEN_ATTACK);
pen[3] = new ToggleButton(PEN_DEFENSE);
pen[4] = new ToggleButton(PEN_SERVICE);
pen[5] = new ToggleButton(PEN_SUBSTITUTE);
pen[4] = new ToggleButton(PEN_PICKUP_INCAPABLE);
pen[5] = new ToggleButton(PEN_SERVICE);
pen[6] = new ToggleButton(PEN_SUBSTITUTE);
dropBall = new Button(DROP_BALL);
}
//--bottom--
Expand Down Expand Up @@ -574,13 +576,14 @@ public void windowClosing(WindowEvent e) {
layout.add(.505, .77, .185, .08, pen[9]);
}
} else if (Rules.league instanceof HL) {
layout.add(.31, .38, .185, .11, pen[0]);
layout.add(.505, .38, .185, .11, pen[1]);
layout.add(.31, .50, .185, .11, pen[2]);
layout.add(.505, .50, .185, .11, pen[3]);
layout.add(.31, .62, .185, .11, pen[4]);
layout.add(.505, .62, .185, .11, pen[5]);
layout.add(.31, .77, .38, .09, dropBall);
layout.add(.31, .38, .185, .08, pen[0]);
layout.add(.505, .38, .185, .08, pen[1]);
layout.add(.31, .48, .185, .08, pen[2]);
layout.add(.505, .48, .185, .08, pen[3]);
layout.add(.31, .58, .185, .08, pen[4]);
layout.add(.505, .58, .185, .08, pen[5]);
layout.add(.31, .68, .185, .08, pen[6]);
layout.add(.31, .78, .38, .08, dropBall);
}
layout.add(.08, .88, .84, .11, log);
layout.add(.925, .88, .07, .11, cancelUndo);
Expand Down Expand Up @@ -638,7 +641,8 @@ public void windowClosing(WindowEvent e) {
pen[2].addActionListener(ActionBoard.attack);
pen[3].addActionListener(ActionBoard.defense);
pen[4].addActionListener(ActionBoard.pickUpHL);
pen[5].addActionListener(ActionBoard.substitute);
pen[5].addActionListener(ActionBoard.serviceHL);
pen[6].addActionListener(ActionBoard.substitute);
dropBall.addActionListener(ActionBoard.dropBall);
}
for (int i=0; i<undo.length; i++) {
Expand Down Expand Up @@ -990,9 +994,8 @@ private void updateRobots(AdvancedData data)
boolean pickup = ((Rules.league instanceof SPL &&
data.team[i].player[j].penalty == PlayerInfo.PENALTY_SPL_REQUEST_FOR_PICKUP)
|| (Rules.league instanceof HL &&
( data.team[i].player[j].penalty == PlayerInfo.PENALTY_HL_REQUEST_FOR_PICKUP
|| data.team[i].player[j].penalty == PlayerInfo.PENALTY_HL_REQUEST_FOR_SERVICE
|| data.team[i].player[j].penalty == PlayerInfo.PENALTY_HL_TEEN_REQUEST_FOR_PICKUP_2_SERVICE ))
( data.team[i].player[j].penalty == PlayerInfo.PENALTY_HL_PICKUP_OR_INCAPABLE
|| data.team[i].player[j].penalty == PlayerInfo.PENALTY_HL_SERVICE ))
);
if (seconds == 0) {
if (pickup) {
Expand Down Expand Up @@ -1166,15 +1169,17 @@ private void updatePenaltiesHL(AdvancedData data)
pen[2].setEnabled(ActionBoard.attack.isLegal(data));
pen[3].setEnabled(ActionBoard.defense.isLegal(data));
pen[4].setEnabled(ActionBoard.pickUpHL.isLegal(data));
pen[5].setEnabled(ActionBoard.substitute.isLegal(data));

pen[5].setEnabled(ActionBoard.serviceHL.isLegal(data));
pen[6].setEnabled(ActionBoard.substitute.isLegal(data));

GCAction hightlightEvent = EventHandler.getInstance().lastUIEvent;
pen[0].setSelected(hightlightEvent == ActionBoard.ballManipulation);
pen[1].setSelected(hightlightEvent == ActionBoard.pushing);
pen[2].setSelected(hightlightEvent == ActionBoard.attack);
pen[3].setSelected(hightlightEvent == ActionBoard.defense);
pen[4].setSelected(hightlightEvent == ActionBoard.pickUpHL);
pen[5].setSelected(hightlightEvent == ActionBoard.substitute);
pen[5].setSelected(hightlightEvent == ActionBoard.serviceHL);
pen[6].setSelected(hightlightEvent == ActionBoard.substitute);
}

/**
Expand Down
2 changes: 1 addition & 1 deletion src/data/HL.java
Expand Up @@ -61,7 +61,7 @@ public class HL extends Rules
/** Number of penalty-shoots for each team after full 10minutes playing. */
numberOfPenaltyShotsLong = 5;
/** Time in seconds for each kind of penalty. */
penaltyTime = new int[] {-1, 30, 30, 30, 30, -1, 30, 60};
penaltyTime = new int[] {-1, 30, 30, 30, 30, 30, 60 };
/** if robots should return from penalties when the game state changes. */
returnRobotsInGameStoppages = false;
/** Time in seconds one team has as timeOut. */
Expand Down
20 changes: 9 additions & 11 deletions src/data/PlayerInfo.java
Expand Up @@ -31,10 +31,9 @@ public class PlayerInfo implements Serializable
public static final byte PENALTY_HL_PHYSICAL_CONTACT = 2;
public static final byte PENALTY_HL_ILLEGAL_ATTACK = 3;
public static final byte PENALTY_HL_ILLEGAL_DEFENSE = 4;
public static final byte PENALTY_HL_REQUEST_FOR_PICKUP = 5;
public static final byte PENALTY_HL_REQUEST_FOR_SERVICE = 6;
public static final byte PENALTY_HL_TEEN_REQUEST_FOR_PICKUP_2_SERVICE = 7;

public static final byte PENALTY_HL_PICKUP_OR_INCAPABLE = 5;
public static final byte PENALTY_HL_SERVICE = 6;

public static final byte PENALTY_SUBSTITUTE = 14;
public static final byte PENALTY_MANUAL = 15;

Expand Down Expand Up @@ -92,7 +91,7 @@ public String toString()
case PENALTY_SPL_COACH_MOTION: temp = "coach motion"; break;
case PENALTY_SUBSTITUTE: temp = "substitute"; break;
case PENALTY_MANUAL: temp = "manual"; break;
default: temp = "undefinied("+penalty+")";
default: temp = "undefined("+penalty+")";
}
} else {
switch (penalty) {
Expand All @@ -101,12 +100,11 @@ public String toString()
case PENALTY_HL_PHYSICAL_CONTACT: temp = "pushing"; break;
case PENALTY_HL_ILLEGAL_ATTACK: temp = "illegal attack"; break;
case PENALTY_HL_ILLEGAL_DEFENSE: temp = "illegal defender"; break;
case PENALTY_HL_REQUEST_FOR_PICKUP: temp = "request for pickup"; break;
case PENALTY_HL_REQUEST_FOR_SERVICE: temp = "request for service"; break;
case PENALTY_HL_TEEN_REQUEST_FOR_PICKUP_2_SERVICE: temp = "request for pickup to service"; break;
case PENALTY_MANUAL: temp = "manual"; break;
case PENALTY_SUBSTITUTE: temp = "substitute"; break;
default: temp = "undefinied("+penalty+")";
case PENALTY_HL_PICKUP_OR_INCAPABLE: temp = "pickup/incapable"; break;
case PENALTY_HL_SERVICE: temp = "service"; break;
case PENALTY_MANUAL: temp = "manual"; break;
case PENALTY_SUBSTITUTE: temp = "substitute"; break;
default: temp = "undefined("+penalty+")";
}
}
out += " penalty: "+temp+"\n";
Expand Down

0 comments on commit 3488e97

Please sign in to comment.