Changeset 4822
- Timestamp:
- 2013-11-26 12:20:00 (10 years ago)
- Location:
- 2013/anlakane/Tiernapojat
- Files:
-
- 3 added
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
2013/anlakane/Tiernapojat/Tiernapojat/Tiernapojat/Tiernapojat.cs
r4821 r4822 6 6 using Jypeli.Effects; 7 7 using Jypeli.Widgets; 8 9 public struct TiernapojanKuvat10 {11 public Image vartalo;12 public Image vartaloTakaa;13 public Image polvillaan;14 public Image kasi;15 public Image miekka;16 public Image kahva;17 public Image paa;18 public Image paaTakaa;19 public Image suuAuki;20 }21 22 public class Verho : GameObject23 {24 private bool nostettu = false;25 public bool Nostettu { get { return nostettu; } set { nostettu = value; } }26 public Verho(double leveys, double korkeus, Image kuva)27 : base(leveys, korkeus)28 {29 this.Image = kuva;30 }31 }32 8 33 9 public class Tiernapojat : PhysicsGame … … 223 199 224 200 225 public class Tiernapoika : PlatformCharacter226 {227 // Tiernapojan osat228 private KaantyvaOsa paa;229 private KaantyvaOsa kasi;230 private PhysicsObject miekka;231 private PhysicsObject miekankahva;232 233 234 // Alkuperäiset koot235 private Vector koko;236 private Vector paanKoko;237 private Vector kadenKoko;238 private Vector miekanKoko;239 private Vector miekanKahvanKoko;240 241 private TiernapojanKuvat kuvat;242 243 private Direction suunta;244 245 private PhysicsGame peli;246 247 public KaantyvaOsa Kasi248 {249 get { return kasi; }250 }251 252 public PhysicsObject Miekka253 {254 get { return miekka; }255 }256 257 258 public Tiernapoika(PhysicsGame peli, double leveys, double korkeus, TiernapojanKuvat kuvat)259 : base(leveys, korkeus)260 {261 this.kuvat = kuvat;262 double suhde = korkeus / leveys;263 Image = kuvat.vartalo;264 Height = Width * Image.Height / Image.Width * suhde;265 koko = Size;266 CollisionIgnoreGroup = 1;267 Mass = 5000.0;268 suunta = Direction.Right;269 DirectionChanged += new Action<Direction>(Kaantyi);270 271 paa = new KaantyvaOsa(1, 1);272 paa.Image = kuvat.paa;273 paa.Height = paa.Image.Height * Size.Y / Image.Height;274 paa.Width = paa.Image.Width * Size.X / Image.Width;275 paa.IgnoresGravity = true;276 paa.CollisionIgnoreGroup = 1;277 paanKoko = paa.Size;278 paa.Mass = 10000;279 paa.Suunta = Direction.Left;280 281 Add(paa);282 283 // Pojan oikea käsi284 kasi = new KaantyvaOsa(Height, Height);285 kasi.Image = kuvat.kasi;286 kasi.Height = kasi.Image.Height * Height / Image.Height / suhde;287 kasi.Width = kasi.Height / kasi.Image.Height * kasi.Image.Width * suhde;288 // Poika ja käsi eivät saa törmätä toisiinsa289 kasi.CollisionIgnoreGroup = 1;290 kadenKoko = kasi.Size;291 kasi.Mass = 2000;292 Add(kasi);293 294 295 miekka = new PhysicsObject(Height * 0.7, 1);296 miekka.Image = kuvat.miekka;297 miekka.Height = miekka.Width * miekka.Image.Height / miekka.Image.Width;298 miekka.IgnoresGravity = true;299 miekka.CollisionIgnoreGroup = 1;300 miekanKoko = miekka.Size;301 miekka.Angle = Angle.FromDegrees(10);302 kasi.Add(miekka);303 304 miekankahva = new PhysicsObject(Height * 0.7, 1);305 miekankahva.Image = kuvat.kahva;306 miekankahva.Height = miekankahva.Image.Height * miekanKoko.Y / miekka.Image.Height;307 miekankahva.Width = miekankahva.Image.Width * miekanKoko.X / miekka.Image.Width;308 miekankahva.IgnoresGravity = true;309 miekankahva.CollisionIgnoreGroup = 1;310 miekanKahvanKoko = miekankahva.Size;311 miekankahva.Angle = Angle.FromDegrees(-20);312 Add(miekankahva);313 314 peli.Add(this, 1);315 this.peli = peli;316 MiekkaEsiin();317 SaadaKoko(koko);318 }319 320 private void Kaantyi(Direction suunta)321 {322 double suuntakerroin = 1;323 miekka.StopAngular();324 if (suunta == Direction.Left) suuntakerroin = -1;325 miekka.Angle = Angle.FromDegrees(10 * suuntakerroin);326 miekankahva.Angle = Angle.FromDegrees(-20 * suuntakerroin);327 kasi.Suunta = suunta;328 // paa.Suunta = suunta;329 this.suunta = suunta;330 paa.Tavoite = Angle.FromDegrees(suuntakerroin * 20);331 332 kasi.Position = new Vector(Width / 2 * 0.85 * suuntakerroin, Height * 0.27);333 paa.Position = new Vector(Width * 0.1 * suuntakerroin, Height * 0.3);334 miekankahva.Position = new Vector(0, Height * 0.1);335 miekka.Position = new Vector(kasi.Width / 2 - 10, 0);336 }337 338 339 private void SaadaKoko(Vector uusikoko, bool myosMuut = true)340 {341 Size = uusikoko;342 if (myosMuut)343 {344 double kerroin = Size.Y / koko.Y;345 kasi.Size = kadenKoko * kerroin;346 miekka.Size = miekanKoko * kerroin;347 miekankahva.Size = miekanKahvanKoko * kerroin;348 paa.Size = paanKoko * kerroin;349 }350 Kaantyi(suunta);351 }352 353 354 public void Flip()355 {356 if (suunta == Direction.Left) Walk(0.1);357 else Walk(-0.1);358 }359 360 361 public void Nouse(double nopeus)362 {363 SaadaKoko(koko);364 Kaantyi(suunta);365 Image = kuvat.vartalo;366 paa.Image = kuvat.paa;367 }368 369 public void Polvistu(double nopeus)370 {371 SaadaKoko(new Vector(Width, koko.Y / 2), false);372 MiekkaTuppeen();373 Image = kuvat.polvillaan;374 }375 376 public void Pois(double nopeus)377 {378 if (Height < koko.Y / 2) return;379 if (Image == kuvat.polvillaan) Nouse(1);380 SaadaKoko(Size * 0.99);381 // peli.Remove(this);382 // peli.Add(this, -1);383 if (Image != kuvat.vartaloTakaa)384 {385 Image = kuvat.vartaloTakaa;386 paa.Image = kuvat.paaTakaa;387 Flip();388 miekankahva.IsVisible = false;389 }390 }391 392 public void Takaisin(double nopeus)393 {394 if (Height > koko.Y) Nouse(nopeus);395 SaadaKoko(Size * 1.01);396 // peli.Remove(this);397 // peli.Add(this, 1);398 if (Image != kuvat.vartalo)399 {400 Image = kuvat.vartalo;401 paa.Image = kuvat.paa;402 Flip();403 if (!miekka.IsVisible) miekankahva.IsVisible = true;404 }405 }406 407 public void MiekkaTuppeen()408 {409 miekka.IsVisible = false;410 miekankahva.IsVisible = true;411 Osoita(-125);412 }413 414 public void MiekkaEsiin()415 {416 Osoita(-110);417 miekka.IsVisible = true;418 miekankahva.IsVisible = false;419 }420 421 public void Pyorita()422 {423 miekka.ApplyTorque(100000);424 }425 426 public void MiekkaSwap()427 {428 if (miekka.IsVisible) MiekkaTuppeen(); else MiekkaEsiin();429 }430 431 public void KyykyynYlos(double nopeus)432 {433 if (Height < koko.Y * 0.6) Nouse(nopeus); else Polvistu(nopeus);434 }435 436 public void Osoita(double kulma)437 {438 miekka.StopAngular();439 Kasi.Tavoite = Angle.FromDegrees(kulma);440 }441 442 public void KaannaPaa(double kulma)443 {444 paa.Tavoite = Angle.FromDegrees(kulma);445 }446 447 public void AvaaSuu()448 {449 if (paa.Image == kuvat.paa) paa.Image = kuvat.suuAuki;450 }451 452 public void SuljeSuu()453 {454 if (paa.Image == kuvat.suuAuki) paa.Image = kuvat.paa;455 }456 457 public void Suu(double kulma)458 {459 if (kulma <= 20) SuljeSuu(); else AvaaSuu();460 }461 462 public void Liiku(double speed)463 {464 Walk(speed);465 }466 }467 468 469 /// @author Vesa Lappalainen470 /// @version 16.10.2011471 /// @version 24.11.2013472 /// <summary>473 /// Osa, jolle voidaan asettaa suunta johon se pyrkii.474 /// Suunta käännetään toisinpäin jos ollaan menossa vasemmalle.475 /// </summary>476 public class KaantyvaOsa : PhysicsObject477 {478 private Angle oikea = Angle.FromDegrees(0);479 private Angle vasen = Angle.FromDegrees(180);480 private Angle suuntaero = Angle.FromDegrees(0);481 private int s = 1;482 /// <summary>483 /// Tavoitekulma, johon maila pyrkii osoittamaan484 /// </summary>485 public Angle Tavoite { get { return tavoite; } set { tavoite = value; saavutettu = false; } }486 private Angle tavoite;487 private bool saavutettu = true;488 private Direction suunta = Direction.Right;489 public Direction Suunta490 {491 get { return suunta; }492 set493 {494 if (value != Suunta) FlipImage();495 suunta = value;496 if (value == Direction.Left) { suuntaero = vasen; s = -1; } else { suuntaero = oikea; s = 1; }497 Tavoite = Tavoite;498 }499 }500 501 502 public KaantyvaOsa(double width, double height)503 : base(width, height)504 {505 // MakeStatic();506 Mass = 10000;507 IgnoresGravity = true;508 IsUpdated = true;509 }510 511 512 /// <summary>513 /// Uusi versio Update-metodista, jossa nyt käännetään osaa kohti tavoitekulmaa.514 /// </summary>515 /// <param name="time">Peliaika</param>516 public override void Update(Time time)517 {518 if (saavutettu) { base.Update(time); return; }519 Angle diff = s * Tavoite + suuntaero - Angle;520 double suunta = diff.Degrees;521 double d = 2;522 if (Math.Abs(suunta) > d)523 {524 if (suunta > 180) suunta = 360 - suunta;525 this.StopAngular();526 this.ApplyTorque(10000000 * 35.0 * suunta); // kokeiltu hihavakio527 }528 else529 {530 Stop();531 saavutettu = true;532 }533 base.Update(time);534 }535 }536 -
2013/anlakane/Tiernapojat/Tiernapojat/Tiernapojat/Tiernapojat.csproj
r4803 r4822 113 113 </ItemGroup> 114 114 <ItemGroup> 115 <Compile Include="KaantyvaOsa.cs" /> 115 116 <Compile Include="Ohjelma.cs" /> 117 <Compile Include="Tiernapoika.cs" /> 116 118 <Compile Include="Tiernapojat.cs" /> 117 119 <Compile Include="Properties\AssemblyInfo.cs" /> 120 <Compile Include="Verho.cs" /> 118 121 </ItemGroup> 119 122 <ItemGroup> -
2013/anlakane/Tiernapojat/Tiernapojat/TiernapojatContent
-
Property
svn:ignore
set to
Thumbs.db
-
Property
svn:ignore
set to
-
2013/anlakane/Tiernapojat/Tiernapojat/TiernapojatContent/TiernapojatContent.contentproj
r4821 r4822 234 234 </ItemGroup> 235 235 <ItemGroup> 236 <Compile Include="verho.png">237 <Name>verho</Name>238 <Importer>TextureImporter</Importer>239 <Processor>TextureProcessor</Processor>240 </Compile>241 </ItemGroup>242 <ItemGroup>243 236 <Compile Include="verho2.png"> 244 237 <Name>verho2</Name>
Note: See TracChangeset
for help on using the changeset viewer.