start of ai based on kjLotus's code on dsp

This commit is contained in:
Tahir Akhlaq
2017-06-12 03:50:02 +01:00
parent c70cf022b7
commit 04890660c0
9 changed files with 191 additions and 1 deletions

View File

@@ -0,0 +1,32 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using FFXIVClassic_Map_Server.Actors;
using FFXIVClassic_Map_Server.actors.chara.ai.state;
using FFXIVClassic_Map_Server.actors.chara.ai.controllers;
// port of ai code in dsp by kjLotus
namespace FFXIVClassic_Map_Server.actors.chara.ai
{
// todo: actually implement stuff
class AIContainer
{
private Character owner;
private Controller controller;
private List<State> states;
private DateTime latestUpdate;
private DateTime prevUpdate;
public AIContainer(Actors.Character actor)
{
this.owner = actor;
}
public void ChangeController(Controller controller)
{
this.controller = controller;
}
}
}

View File

@@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FFXIVClassic_Map_Server.actors.chara.ai.controllers
{
class Controller
{
}
}

View File

@@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FFXIVClassic_Map_Server.actors.chara.ai.controllers
{
class MobController : Controller
{
}
}

View File

@@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FFXIVClassic_Map_Server.actors.chara.ai.controllers
{
class PlayerController : Controller
{
}
}

View File

@@ -0,0 +1,43 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using FFXIVClassic_Map_Server.Actors;
namespace FFXIVClassic_Map_Server.actors.chara.ai.state
{
class AttackState : State
{
public AttackState(Character owner, Character target) :
base(owner, target)
{
this.startTime = DateTime.Now;
}
public override void OnStart()
{
}
public override void Update(ref DateTime time)
{
}
public override void OnInterrupt()
{
}
public override void OnComplete()
{
}
public override void TryInterrupt()
{
}
}
}

View File

@@ -0,0 +1,48 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using FFXIVClassic_Map_Server.Actors;
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.actors.chara.ai.state
{
class State
{
protected Character owner;
protected Character target;
protected bool canInterrupt;
protected bool interrupt;
protected DateTime startTime;
protected BasePacket errorPacket;
public State(Character owner, Character target)
{
this.owner = owner;
this.target = target;
this.canInterrupt = true;
this.interrupt = false;
}
public virtual void Update(ref DateTime time) { }
public virtual void OnStart() { }
public virtual void OnInterrupt() { }
public virtual void OnComplete() { }
public virtual void TryInterrupt() { }
public bool CanInterrupt()
{
return canInterrupt;
}
public void SetInterrupted(bool interrupt)
{
this.interrupt = interrupt;
}
}
}

View File

@@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using FFXIVClassic_Map_Server.Actors;
namespace FFXIVClassic_Map_Server.actors.chara.ai.utils
{
static class AttackUtils
{
public static int CalculateDamage(ref Character attacker, ref Character defender)
{
int dmg = CalculateBaseDamage(ref attacker, ref defender);
return dmg;
}
public static int CalculateBaseDamage(ref Character attacker, ref Character defender)
{
return 0;
}
}
}