view TurnEngine.h @ 1523:53265d238d94

interaction_distance_limit for 3DModel in DrawStatusText
author Ritor1
date Thu, 05 Sep 2013 13:12:30 +0600
parents 5c95f2246c2a
children 4da5644df18f
line wrap: on
line source

#pragma once


enum TURN_ENGINE_FLAGS
    {
    TE_FLAG_1 =1,
    TE_HAVE_PENDING_ACTIONS =2,
    TE_PLAYER_TURN =4,
    TE_FLAG_8 =8
    };

enum TURN_ENGINE_AI_ACTION
    {
    TE_AI_STAND         =0,
    TE_AI_RANGED_ATTACK =1,
    TE_AI_PURSUE        =2,
    TE_AI_MELEE_ATTACK  =3,
    TE_AI_FLEE          =4
    };



/*  299 */
#pragma pack(push, 1)
struct TurnBased_QueueElem
{
  inline TurnBased_QueueElem()
  {
    uPackedID = 0;
    actor_initiative = 0;
    uActionLength = 0;
    AI_action_type = 0;
  }
  int uPackedID;
  int actor_initiative;  //act first who have less
  int uActionLength;
  int AI_action_type;
};
#pragma pack(pop)

/*  254 */
#pragma pack(push, 1)
struct stru262_TurnBased
{
  inline stru262_TurnBased()
  {
    turns_count = 0;
    turn_stage = 0;
    ai_turn_timer = 0;
    uActorQueueSize = 0;
    turn_initiative = 0;
    uActionPointsLeft = 0;
    field_18 = 0;
    pending_actions = 0;
  }

  void  SortTurnQueue();
  void ApplyPlayerAction();
  void  Start();
  void End(bool bPlaySound);
  void AITurnBasedAction();
  void StartTurn();
  void NextTurn();
  int StepTurnQueue();
  void _406457(int a2);
  void SetAIRecoveryTimes();
  void _4065B0();
  void AIAttacks(unsigned int queue_index);
  void AI_Action_(int queue_index);
  void ActorAISetMovementDecision();
  void ActorAIStopMovement();
  void ActorAIDoAdditionalMove();
  bool ActorMove(signed int a2);
  void ActorAIChooseNewTargets();


  int turns_count;
  int turn_stage;
  int ai_turn_timer;
  int uActorQueueSize; //c
  int turn_initiative;
  int uActionPointsLeft; //14
  int field_18;
  int pending_actions;
  TurnBased_QueueElem pQueue[530]; //20
};
#pragma pack(pop)



extern struct stru262_TurnBased *pTurnEngine;