en en fi en en en de en en en en es en en en en en en en en en zh sv en fr tt de en de en fr fi fr fa fr ru sv en fr fr ceb en en ja fr en de fi fr en es fr nb fr fr de en en fi en fi sv en de en de fi fr en fi fr en it fr fi de fi fr en fr fr fi fr fi fr fr fr en fr en fr en fi fr fi fr it en fr fi en en fr en de en fr fr en fr fi fr en fr fi fr de fi fr ru fr ceb fr en nl fr he de fi fr kn fr fr fi fr ceb pt en fr en fr fi fr fi de fi da fi fr fi zh kn fr fr fr th en ceb fr fi fr ceb fr it da ceb fr lv fr en fr lv fr sl fr kn fr kn fr uk fr kn en da ml zh ceb fr en de en fr fr en fr fr es fr kn fr da en oc fi oc fi oc en oc fi en ceb en et zh cs zh et fr ceb de fi fr nb fr ceb oc cs fr cs fr kn fr ca fr cs fr kn fr fr en fr fi fr fi fr en fr fi fr ceb fr et fr cs hbs_lat et oc ceb oc fi fr nb zh ceb fr cs fr cs de en oc it oc kn oc ca fr cs oc kn oc ca en fr fi ca en de fi fr ceb fr et fr cs fr et da ceb fr en oc fi fr fi fr ceb fr cs fr cs fr kn de ca fr cs oc kn fr oc en oc fi ca en fr fi fr ceb fr et oc cs fr et de ceb fr en ca fi fr fi fr ceb ca cs fr cs fr en fr it fr kn oc ca fr cs ca kn fr fr fr en oc fi oc en fr fi fr fi oc fi oc en ca ceb fr en fr en fr en oc en fr en fr pt ca en nb kn zh en zh fi zh en zh fi zh fi zh fi zh fi zh en zh ceb fr en zh en ca en oc en oc en fr en oc pt fr en zh kn fr fr fi de ceb fr pt oc en fr fi fr ja fr fi fr en oc en fr en fr en oc fi ca el oc oc fr ru fr en oc ceb oc fi fr ceb oc en oc fi oc fa oc kn fr fa oc kn fr oc he fr ceb fr fi la es oc fi oc kn oc fr zh fr ca fr fi fr ceb fr fi fr fr fi fr fi oc kn oc fr fi fr ceb oc fi fr oc fi oc oc fi fr fi oc fi fr en fr kn fr fr fi fr ceb oc en fr en oc en oc en fr fi fr fi oc oc en oc en fr en oc it fr oc fi fr de fi fr fi fr fi oc fi oc fi oc fi fr fi de fi fr fr fi fr ru oc fi fr fi fr fi de oc en fr de oc de oc fi fr fi fr fi fr oc fi oc fi oc kn fr oc fi de ceb oc lv oc fi oc fi ca fi oc fi oc fi oc fi oc oc fi fr fi oc fi ca uk oc oc lv oc lv fr fi en en fr oc fi fr fi fr fi oc en oc fi fr fi fr fi oc zh fi fr kn fr de fi oc ceb oc en fr fi de pt fr en oc fi ca fi fr sv fr kn da oc fi fr ceb fr fi ca en fr en de en fr en de ceb fr en fr fi oc ca en oc en fr de en oc ca fr fi fr en fr sv fr kn oc oc en fr ceb zh en fr fi oc sv oc fr et de sv de et fr ceb fr en fr fi fr ca fr cs de fr ja fr kn fr de en fr fi oc en fr en da en fr ceb fr en de en fa en fr fr ru ca ceb ca en oc ceb fa en fr kn de kn fr zh en oc fa ca oc es fr lt de oc ru fr ceb en en fr en fr ceb fr en fr it fr kn oc kn de de zh fr kn fr fr ca fi oc ceb oc fi fr es en fr fi fr en oc en fr vi pt oc fr fi fr ceb fr fi ca kn oc ca en fr ceb oc fi fr fi en kn de kn fr fr fi fr ceb fr fi fr ceb fr ca fr en oc uk de kn de ca fr fi fr kn fr kn ca kn da kn fr kn en oc fi fr ceb da fi de fi oc es sv sk fr kn en ca fi fr ceb fr en oc fr en de en eu en ca ru fr nl en fr fr fr fr nb en en it ru ru de ca en ca en ca ur ca uk fr sco oc de en oc ceb vi oc en ca ceb oc en oc oc en fr fr nb oc ceb fr en ml ru fr en oc ceb ca en fr kn oc en ca ceb oc pt oc ru ca en en ceb fr en fr kn oc el it kn de fr fr oc ceb es vi oc nb kk de ceb oc da fr kn fr de fr kn fr kn en kn it kn zh kn vi fr en oc fi oc en fr fi fr ceb de fi en fi oc fi br en mk en nb en fr en de de kn ca de hu de ceb de fi de ta de fr en de oc hbs_lat oc ta fr la fr fr en fr la af la da la oc en ca ceb oc uk pt ca fr de fi fr fi fr fr hu oc kn sv ca fi fr ceb fr fi zh fr hbs_lat oc da fi fa kn fa sk fi ca ceb oc fi oc fr lt ca fi fr fr fi oc de fi fr en de en oc oc fr en fa fi de fi fa kn de fa fi ca ceb ca oc kn ca kn en en en en en en en en
Revision 6406, 19.3 KB checked in by mikrkana, 7 years ago (diff)
public partial class Attack_to_Agora : PhysicsGame
const double HYPPYVOIMA = 1500;
private bool stSequenceSkipped = false;
const double ASEEN_DMG = 25.0;
const double WEAPON_INACCURACY = 20.0;
const double VIHOLLISEN_TORMAYSDMG = 4.0;
const int VIIMEINEN_KENTTA = 18;
Timer.SingleShot(4.0, delegate { taustamusiikki_1.Play(); });
protected override void Update(Time time)
if (taistelija != null && taistelijanAse != null)
double heightReduction = 1080.0 / Window.Height;
double multiplier = Math.Max(widthReduction, heightReduction);
Camera.ZoomFactor = 1 / multiplier;
/// Pimennetään ruutua pikku hiljaa.
public void PimennaRuutua(double nopeus)
Timer ajastin = new Timer();
if (Level.AmbientLight <= 0.0)
/// Pimennetään ruutua pikku hiljaa.
public void PimennaRuutua(double nopeus, Action onFinished)
Timer ajastin = new Timer();
if (Level.AmbientLight <= 0.0)
if (onFinished != null)
/// Kirkastetaan ruutua pikku hiljaa.
public void KirkastaRuutua(double nopeus, double tavoite)
Timer ajastin = new Timer();
//if (Level.AmbientLight > 0.1) return;
if (Level.AmbientLight > tavoite)
/// Kirkastetaan ruutua pikku hiljaa.
public void KirkastaRuutua(double nopeus, double tavoite, Action onFinished)
Timer ajastin = new Timer();
//if (Level.AmbientLight > 0.1) return;
if (Level.AmbientLight > tavoite)
if (onFinished != null)
///  Valojuovan tämänhetkinen sijainti.
///  Kauanko valojuova pysyy kentällä.
void DrawTracers(Vector position, Color color, double lifetimeInSeconds, double brightnessFactor)
color.AlphaComponent = (byte)(32 * brightnessFactor); // 64 toimii
GameObject tracer = new GameObject(2, 2);
///  Olio, josta valojuovat tulevat.
///  Kauanko valojuova pysyy kentällä.
void DrawTracers(PhysicsObject tracingObject, Color color, double lifetimeInSeconds, double brightnessFactor)
color.AlphaComponent = (byte)(32 * brightnessFactor); // 64 toimii
GameObject tracer = new GameObject(90, 2);
GameObject tausta = new GameObject(ajAlku);
Keyboard.Listen(Key.Escape, ButtonState.Pressed, delegate {
void Liikuta(PhysicsObject pelaaja, double suunta)
pelaaja.Velocity = new Vector(suunta, pelaaja.Velocity.Y);
// pelaaja.Tag = "hyppy"; // PYRY MITÄ...rip
pelaaja.Hit(new Vector(0, HYPPYVOIMA * pelaaja.Mass));
Sound pelaajaHyppyAani = hyppy.CreateSound();
Timer.SingleShot(0.1, delegate { pelaajaHyppyAani.Play(); });
// IsFullScreen = true;
Gravity = new Vector(0, -2500);
// Synkataan taustakuvan ja colortilemapin pikselit
Level.Background.Image = LoadImage("kentta" + kenttaNro.ToString());
double kerroin = (double)Level.Background.Image.Width / Level.Background.Image.Height;
Level.Height = Level.Width / kerroin;
Image pohjaLevynKuva = LoadImage("kentta" + kenttaNro.ToString() + "pohja");
ColorTileMap pohjaLevy = new ColorTileMap(pohjaLevynKuva);
// oletuksena 1 pikseli = 1 unit
const double BASE_SIZE = 1.0;
double widthMultiplier = Level.Width / pohjaLevynKuva.Width;
double heightMultiplier = Level.Height / pohjaLevynKuva.Height;
pohjaLevy.Execute(BASE_SIZE * widthMultiplier, BASE_SIZE * heightMultiplier);
PhysicsObject vasenreuna = Level.CreateLeftBorder();
vasenreuna.CollisionIgnoreGroup = 1; // ettei Jouni törmää
PhysicsObject oikeareuna = Level.CreateRightBorder();
void Luotaistelija(Vector paikka, double leveys, double korkeus)
taistelija = new Elava(150, 150, 100.0);
taistelija.Animation = new Animation(chuckinkavely);
//AddCollisionHandler (taistelija, "vihollinen", delegate {
taistelijanAse = new AssaultRifle(20, 10);
ProgressBar elamat = new ProgressBar(532 / 1.5, 49 / 1.5);
elamat.Left = Screen.Left + 40;
elamat.Top = Screen.Top - 40;
void LuoTriggerPalikka(Vector paikka, double leveys, double korkeus)
PhysicsObject trigger = new PhysicsObject(leveys, korkeus);
trigger.Collided += delegate(IPhysicsObject t, IPhysicsObject kohde)
if (kohde.Tag.ToString() == "trigger") return;
if (TriggerAction != null)
GameObject varjo = new GameObject(70, 30);
Timer ajastin = new Timer();
ajastin.Interval = 1.0 / 60.0;
/// Etsii suoraan pelaajan alla olevan lattiapalikan Y-koordinaatin.
Vector rayDown = new Vector(0.0, -2000.0);
List  possibleObjects = GetObjects(x => x != shadowCaster && x is PhysicsObject);
List  objectsBelow = new List ();
for (int i = 0; i < possibleObjects.Count; i++)
if (possibleObjects[i].IsBlocking(new Vector(shadowCaster.X, shadowCaster.Bottom), new Vector(shadowCaster.X, shadowCaster.Bottom) + rayDown))
if (objectsBelow.Count == 0)
double minDistance = double.MaxValue;
int minIndex = -1;
for (int i = 0; i < objectsBelow.Count; i++)
double currentDistance = Math.Abs(shadowCaster.Bottom - objectsBelow[i].Top);
if (currentDistance < minDistance)
void SeuraavaKentta(PhysicsObject tormaaja, PhysicsObject tormatty)
if (kenttaNro > VIIMEINEN_KENTTA)
TriggerAction += delegate { LuoJouniBoss(new Vector(Screen.Left - jouniBoss.Width / 2 - 20, Screen.Bottom + (jouniBoss.Height / 2) - 100), Screen.Left + jouniBoss.Width / 2); };
void LuoPohja(Vector paikka, double leveys, double korkeus)
PhysicsObject pala = PhysicsObject.CreateStaticObject(leveys, korkeus);
List  pItems = new List ();
GameObject knife = new GameObject(LoadImage("rareitem_knife"));
knife.Tag = new object[2] {(object)50.0, (object)ItemType.Knife};
GameObject avain = new GameObject(LoadImage("rareitem_avain_small"));
avain.Tag = new object[2] { (object)50.0, (object)ItemType.Key };
//for (int i = 0; i < 40; i++)
//    GameObject obj = new GameObject(50, 50);
//    obj.Color = RandomGen.NextColor();
//    obj.Tag = 50.0;
GameObject cCaseDialog = new GameObject(cCaseD); // koko debug
Mouse.ListenOn(cCaseDialog, MouseButton.Left, ButtonState.Pressed, delegate
GameObject cCaseFront = new GameObject(cCaseF);
if (forceItem == ItemType.Knife)
ChromaCase cCase = new ChromaCase(pItems, cCaseFront, knife, 20);
cCase.Add(new Vector(0.0, Level.Bottom + cCaseFront.Height / 2), 2);
cCase.ItemReceived += delegate(GameObject o) { GotItemFromCase(o); };
cCase.ItemRelativePosition = new Vector((472 - 467.5), (455 - 204));
ChromaCase cCase = new ChromaCase(pItems, cCaseFront, avain, 20);
cCase.Add(new Vector(0.0, Level.Bottom + cCaseFront.Height / 2), 2);
cCase.ItemReceived += delegate(GameObject o) { GotItemFromCase(o); };
cCase.ItemRelativePosition = new Vector((472 - 467.5), (455 - 204));
ItemType gotType = (ItemType)(((object[])o.Tag)[1]);
/// Asetetaan pelaajalle ohjaimet.
Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, null, taistelija, -NOPEUS);
Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, null, taistelija, NOPEUS);
Keyboard.Listen(Key.W, ButtonState.Pressed, LiikutaYlos, null, taistelija);
Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
Keyboard.Listen(Key.Space, ButtonState.Down, Ammu, null);
Keyboard.Listen(Key.LeftShift, ButtonState.Pressed, delegate { walkBackwards = true; }, null);
Keyboard.Listen(Key.LeftShift, ButtonState.Released, delegate { walkBackwards = false; }, null);
if (taistelijanAse == null)
PhysicsObject ammus = taistelijanAse.Shoot();
if (ammus == null)
ammus.Hit(new Vector(0.0, RandomGen.NextDouble(-WEAPON_INACCURACY, WEAPON_INACCURACY)));
ammus.Updated += delegate(PhysicsObject a)
DrawTracers(a, Color.Yellow, 0.2, 2.0);
AddCollisionHandler (ammus, delegate(PhysicsObject a, PhysicsObject k) { ammus.Destroy(); });
void AmmusOsuuViholliseen(PhysicsObject ammus, PhysicsObject kohde)
Elava vihu = kohde as Elava;
if (vihu == null) return;
kenttaNro -= kenttaNro % 3; // 3 kentän välein checkpoint
if (kenttaNro < 1)
Note: See TracBrowser for help on using the repository browser.
Download in other formats:
Powered by Trac 0.12.5
Visit the Trac open source project at