1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
|
// -----------------------------------------------------------------------------
// File: fish.ss
// Description: Fish baddie script
// Author: Alexandre Martins <http://opensurge2d.org>
// License: MIT
// -----------------------------------------------------------------------------
using SurgeEngine.Actor;
using SurgeEngine.Level;
using SurgeEngine.Vector2;
using SurgeEngine.Transform;
using SurgeEngine.Behaviors.Enemy;
using SurgeEngine.Behaviors.DirectionalMovement;
using SurgeEngine.Collisions.Sensor;
// Fish is a baddie that moves left and right
// It only appears if underwater
object "Fish" is "entity", "enemy"
{
public anim = 0;
public speed = 60; // pixels per second
actor = Actor("Fish");
transform = Transform();
enemy = Enemy();
movement = DirectionalMovement();
leftSensor = Sensor(-24, -16, 1, 32);
rightSensor = Sensor(24, -16, 1, 32);
state "main"
{
// setup
movement.direction = randomDirection();
movement.speed = Math.abs(speed);
actor.anim = anim;
actor.hflip = (movement.direction.x < 0);
//leftSensor.visible = rightSensor.visible = true; // debug
state = "hidden";
}
state "hidden"
{
// the fish will stay hidden until it is underwater
if(transform.position.y < Level.waterlevel) {
actor.visible = false;
enemy.enabled = false;
movement.enabled = false;
}
else {
actor.visible = true;
enemy.enabled = true;
movement.enabled = true;
state = "active";
}
}
state "active"
{
// is the fish still underwater?
if(transform.position.y >= Level.waterlevel) {
// set swim direction
if(leftSensor.status == "solid") {
movement.direction = Vector2.right;
actor.hflip = false;
}
else if(rightSensor.status == "solid") {
movement.direction = Vector2.left;
actor.hflip = true;
}
}
else
state = "hidden";
}
fun randomDirection()
{
x = Math.round(Math.random()) * 2 - 1;
return Vector2(x, 0);
}
fun onReset()
{
state = "hidden";
}
}
|