📄 seriworld.java
字号:
{ boolean bulletFired = false; Bullet [ ] bullets = ( Bullet [ ] ) modelArrayKeeper.getArray ( Bullet.class ); for ( int i = 0; i < bullets.length; i++ ) { Bullet bullet = bullets [ i ]; if ( !bullet.isActive ( ) && !bullet.isUpdated ( ) ) { bullet.fire ( originX, originY, heading ); bulletFired = true; break; } } if ( !bulletFired ) { createBullet ( originX, originY, heading ); } } public boolean isBlockedByObstacle ( Shape shape ) ////////////////////////////////////////////////////////////////////// { Obstacle [ ] obstacles = getObstacles ( ); for ( int i = 0; i < obstacles.length; i++ ) { Obstacle obstacle = obstacles [ i ]; if ( obstacle.isActive ( ) && ShapeLib.intersects ( shape, obstacle.getShape ( ) ) ) { return true; } } return false; } public boolean isBlocked ( Shape shape, Model model ) ////////////////////////////////////////////////////////////////////// { Impassable [ ] impassables = getImpassables ( ); for ( int i = 0; i < impassables.length; i++ ) { Impassable impassable = impassables [ i ]; if ( ( impassable != model ) && impassable.isActive ( ) && ShapeLib.intersects ( shape, impassable.getShape ( ) ) ) { return true; } } return false; } public boolean isBlocked ( Model model ) ////////////////////////////////////////////////////////////////////// { return isBlocked ( model.getShape ( ), model ); } public PointXY getClosestAmmoDumpCenter ( PointXY pointXY ) ////////////////////////////////////////////////////////////////////// { AmmoDumpAccessor ammoDumpAccessor = ( AmmoDumpAccessor ) getModelClosest ( pointXY, AmmoDumpAccessor.class, null ); if ( ammoDumpAccessor != null ) { return ShapeLib.getCenter ( ammoDumpAccessor.getShape ( ), center ); } return null; } public PointXY getClosestEnemyTankCenter ( PointXY pointXY, Color friendColor ) ////////////////////////////////////////////////////////////////////// { double closestDistance = Double.POSITIVE_INFINITY; int index = -1; TankAccessor [ ] tankAccessors = ( TankAccessor [ ] ) modelArrayKeeper.getArray ( TankAccessor.class ); for ( int i = 0; i < tankAccessors.length; i++ ) { TankAccessor tankAccessor = tankAccessors [ i ]; if ( tankAccessor.isActive ( ) && !tankAccessor.getColor ( ).equals ( friendColor ) ) { double distance = pointXY.distanceXY ( ShapeLib.getCenter ( tankAccessor.getShape ( ), center ) ); if ( distance < closestDistance ) { closestDistance = distance; index = i; } } } if ( index > -1 ) { return ShapeLib.getCenter ( tankAccessors [ index ].getShape ( ), center ); } return null; } public Model getModel ( PointXY pointXY, Class [ ] classes, Model model ) ////////////////////////////////////////////////////////////////////// { double x = pointXY.getX ( ); double y = pointXY.getY ( ); Model [ ] models = getModels ( ); for ( int i = 0; i < models.length; i++ ) { Model otherModel = models [ i ]; if ( ( otherModel != model ) && otherModel.isActive ( ) && otherModel.getShape ( ).contains ( x, y ) ) { for ( int j = 0; j < classes.length; j++ ) { if ( classes [ j ].isInstance ( otherModel ) ) { return otherModel; } } } } return null; } ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// private Model [ ] getModels ( Class c ) ////////////////////////////////////////////////////////////////////// { if ( c == null ) { return ( Model [ ] ) modelArrayKeeper.getArray ( ); } return ( Model [ ] ) modelArrayKeeper.getArray ( c ); } private Model [ ] getModels ( PointXY pointXY, Model [ ] models, Class c ) ////////////////////////////////////////////////////////////////////// { Model [ ] allModels = getModels ( c ); if ( pointXY == null ) { return allModels; } NullArgumentException.check ( models ); double x = pointXY.getX ( ); double y = pointXY.getY ( ); int index = 0; for ( int i = 0; i < allModels.length; i++ ) { Model model = allModels [ i ]; if ( model.isActive ( ) && model.getShape ( ).contains ( x, y ) ) { if ( index < models.length ) { models [ index ] = model; } else { models = ( Model [ ] ) ArrayLib.append ( models, model ); } index++; } } if ( index < models.length ) { models [ index ] = null; } return models; } private Model [ ] getModels ( Shape shape, Model [ ] models, Class c ) ////////////////////////////////////////////////////////////////////// { Model [ ] allModels = getModels ( c ); if ( shape == null ) { return allModels; } NullArgumentException.check ( models ); int index = 0; for ( int i = 0; i < allModels.length; i++ ) { Model model = allModels [ i ]; if ( model.isActive ( ) && ShapeLib.intersects ( shape, model.getShape ( ) ) ) { if ( index < models.length ) { models [ index ] = model; } else { models = ( Model [ ] ) ArrayLib.append ( models, model ); } index++; } } if ( index < models.length ) { models [ index ] = null; } return models; } private Damageable [ ] getDamageables ( ) ////////////////////////////////////////////////////////////////////// { return ( Damageable [ ] ) modelArrayKeeper.getArray ( Damageable.class ); } private Model getModelClosest ( PointXY pointXY, Class c, Model model ) ////////////////////////////////////////////////////////////////////// { int index = -1; double closestDistance = Double.POSITIVE_INFINITY; Model [ ] models = ( Model [ ] ) modelArrayKeeper.getArray ( ); for ( int i = 0; i < models.length; i++ ) { Model otherModel = models [ i ]; if ( ( otherModel != model ) && otherModel.isActive ( ) && c.isInstance ( otherModel ) ) { double distance = ShapeLib.getCenter ( otherModel.getShape ( ), center ).distanceXY ( pointXY ); if ( distance < closestDistance ) { closestDistance = distance; index = i; } } } if ( index > -1 ) { return models [ index ]; } return null; } ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -