442 //////////////////////////////////////////////////////////////////////////////// |
442 //////////////////////////////////////////////////////////////////////////////// |
443 procedure doStepSpeechBubbleWork(Gear: PVisualGear; Steps: Longword); |
443 procedure doStepSpeechBubbleWork(Gear: PVisualGear; Steps: Longword); |
444 begin |
444 begin |
445 if Gear^.Timer > Steps then dec(Gear^.Timer, Steps) else Gear^.Timer:= 0; |
445 if Gear^.Timer > Steps then dec(Gear^.Timer, Steps) else Gear^.Timer:= 0; |
446 |
446 |
447 if (PHedgehog(Gear^.Hedgehog)^.Gear <> nil) then |
447 if (Gear^.Hedgehog^.Gear <> nil) then |
448 begin |
448 begin |
449 Gear^.X:= PHedgehog(Gear^.Hedgehog)^.Gear^.X.QWordValue/4294967296 + (Gear^.Tex^.w div 2 - Gear^.FrameTicks); |
449 Gear^.X:= Gear^.Hedgehog^.Gear^.X.QWordValue/4294967296 + (Gear^.Tex^.w div 2 - Gear^.FrameTicks); |
450 Gear^.Y:= PHedgehog(Gear^.Hedgehog)^.Gear^.Y.QWordValue/4294967296 - (16 + Gear^.Tex^.h); |
450 Gear^.Y:= Gear^.Hedgehog^.Gear^.Y.QWordValue/4294967296 - (16 + Gear^.Tex^.h); |
451 end; |
451 end; |
452 |
452 |
453 if Gear^.Timer = 0 then |
453 if Gear^.Timer = 0 then |
454 begin |
454 begin |
455 if PHedgehog(Gear^.Hedgehog)^.SpeechGear = Gear then |
455 if Gear^.Hedgehog^.SpeechGear = Gear then |
456 PHedgehog(Gear^.Hedgehog)^.SpeechGear:= nil; |
456 Gear^.Hedgehog^.SpeechGear:= nil; |
457 DeleteVisualGear(Gear) |
457 DeleteVisualGear(Gear) |
458 end; |
458 end; |
459 end; |
459 end; |
460 |
460 |
461 procedure doStepSpeechBubble(Gear: PVisualGear; Steps: Longword); |
461 procedure doStepSpeechBubble(Gear: PVisualGear; Steps: Longword); |
462 begin |
462 begin |
463 Steps:= Steps; // avoid compiler hint |
463 Steps:= Steps; // avoid compiler hint |
464 |
464 |
465 with PHedgehog(Gear^.Hedgehog)^ do |
465 with Gear^.Hedgehog^ do |
466 if SpeechGear <> nil then SpeechGear^.Timer:= 0; |
466 if SpeechGear <> nil then SpeechGear^.Timer:= 0; |
467 |
467 |
468 PHedgehog(Gear^.Hedgehog)^.SpeechGear:= Gear; |
468 Gear^.Hedgehog^.SpeechGear:= Gear; |
469 |
469 |
470 Gear^.Timer:= max(Length(Gear^.Text) * 150, 3000); |
470 Gear^.Timer:= max(Length(Gear^.Text) * 150, 3000); |
471 |
471 |
472 Gear^.Tex:= RenderSpeechBubbleTex(Gear^.Text, Gear^.FrameTicks, fnt16); |
472 Gear^.Tex:= RenderSpeechBubbleTex(Gear^.Text, Gear^.FrameTicks, fnt16); |
473 |
473 |
510 |
510 |
511 Gear^.dY:= -0.08; |
511 Gear^.dY:= -0.08; |
512 |
512 |
513 str(Gear^.State, s); |
513 str(Gear^.State, s); |
514 if Gear^.Hedgehog <> nil then |
514 if Gear^.Hedgehog <> nil then |
515 Gear^.Tex:= RenderStringTex(s, PHedgehog(Gear^.Hedgehog)^.Team^.Clan^.Color, fnt16) |
515 Gear^.Tex:= RenderStringTex(s, Gear^.Hedgehog^.Team^.Clan^.Color, fnt16) |
516 else |
516 else |
517 Gear^.Tex:= RenderStringTex(s, cWhiteColor, fnt16); |
517 Gear^.Tex:= RenderStringTex(s, cWhiteColor, fnt16); |
518 |
518 |
519 if round(Gear^.Y) < cWaterLine then |
519 if round(Gear^.Y) < cWaterLine then |
520 Gear^.doStep:= @doStepHealthTagWork |
520 Gear^.doStep:= @doStepHealthTagWork |