first test

This commit is contained in:
caesarakalaeii 2023-08-12 14:09:27 +02:00
parent 9be594c32b
commit 3c8d342d5a
3 changed files with 144 additions and 36 deletions

15
ActionEnums.cs Normal file
View File

@ -0,0 +1,15 @@
public enum ActionType
{
Heal,
Kill,
Grenade,
Teleport,
Speed,
ChangeAttachement,
ChangeWeapon,
Reveal,
ChangeDamage,
ChangeReceivedDamage,
ChangeAmmo,
}

View File

@ -14,13 +14,13 @@ namespace CommandQueueApp
}
public class Command
{
public string Action { get; set; }
public ActionType Action { get; set; }
public ulong StreamerID { get; set; }
public int Amount { get; set; }
public string Data { get; set;}
public string ExecuterName{ get; set; }
public string ExecutorName{ get; set; }
public Data DataHandler( string data, string Action)
{

View File

@ -2,6 +2,7 @@
using BattleBitAPI.Common;
using BattleBitAPI.Server;
using CommandQueueApp;
using System.Linq;
using System.Threading.Channels;
class Program
@ -9,7 +10,7 @@ class Program
static void Main(string[] args)
{
var listener = new ServerListener<MyPlayer, MyGameServer>();
listener.Start(29294);
listener.Start(55669);
listener.OnPlayerConnected += HandlePlayerConnected;
listener.OnTick += HandleTick;
Thread.Sleep(-1);
@ -17,19 +18,22 @@ class Program
private static async Task<bool> HandleTick(){
private static async Task<bool> HandleTick()
{
return true;
}
private static async Task<bool> HandlePlayerConnected(MyPlayer player)
{
MyGameServer server = player.GameServer;
if(!listed_streamers.contains(player.SteamID)){
if (!listed_streamers.contains(player.SteamID))
{
return true;
}
if(server.connected_streamers.contains(player.SteamID)){
if (server.connected_streamers.contains(player.SteamID))
{
return true;
}
server.connected_streamers.Add(player);
@ -49,11 +53,81 @@ class MyGameServer : GameServer<MyPlayer>
public override async Task<bool> OnPlayerTypedMessage(MyPlayer player, ChatChannel channel, string msg)
{
string[] splits = msg.Split(" ");
var c = new Command(); // just to test replace with argument parsing for now
c.Action.set("heal");
c.Amount.set(10);
c.ExecuterName.set("Tester");
HandleCommand(c);
switch (splits[0])
{
case "heal":
{
c.Action.set(ActionType.Heal);
c.Amount.set(10);
c.ExecutorName.set("Tester");
}
case "kill":
{
c.Action.set(ActionType.Kill);
c.Amount.set(1);
c.ExecutorName.set("Tester");
}
case "grenade":
{
c.Action.set(ActionType.Grenade);
c.Amount.set(1);
c.ExecutorName.set("Tester");
}
case "teleport":
{
c.Action.set(ActionType.Teleport);
c.Amount.set(10);
c.ExecutorName.set("Tester");
}
case "speed":
{
c.Action.set(ActionType.Speed);
c.Amount.set(5);
c.ExecutorName.set("Tester");
}
case "changeAttachement":
{
c.Action.set(ActionType.ChangeAttachement);
c.Amount.set(1);
c.Data(splits.Skip(0).Take(splits.Length()));
c.ExecutorName.set("Tester");
}
case "changeWeapon":
{
c.Action.set(ActionType.ChangeWeapon);
c.Amount.set(1);
c.Data(splits.Skip(0).Take(splits.Length()));
c.ExecutorName.set("Tester");
}
case "reveal":
{
c.Action.set(ActionType.Reveal);
c.Amount.set(10);
c.ExecutorName.set("Tester");
}
case "changeDamage":
{
c.Action.set(ActionType.ChangeDamage);
c.Amount.set(Int32.Parse(splits[1]));
c.ExecutorName.set("Tester");
}
case "changeRecievedDamage":
{
c.Action.set(ActionType.ChangeReceivedDamage);
c.Amount.set(Int32.Parse(splits[1]));
c.ExecutorName.set("Tester");
}
case "changeAmmo":
{
c.Action.set(ActionType.ChangeAmmo);
c.Amount.set(Int32.Parse(splits[1]));
c.ExecutorName.set("Tester");
}
HandleCommand(c);
}
return true;
}
public override async Task OnConnected()
@ -67,42 +141,61 @@ class MyGameServer : GameServer<MyPlayer>
public override async Task OnTick()
{
while(!queue.IsEmpty()){
while (!queue.IsEmpty())
{
Command c = queue.Dequeue();
HandleCommand(c);
}
}
public async Task HandleCommand(Command c){ // need testing if blocking
foreach(MyPlayer player in connectedStreamers){
if(player.SteamID != c.StreamerID){
public async Task HandleCommand(Command c)
{ // need testing if blocking
foreach (MyPlayer player in connectedStreamers)
{
if (player.SteamID != c.StreamerID)
{
continue;
}
switch (c.Action)
{
case "heal":{
player.Heal(c.Amount);
player.Message($"{c.ExecuterName} has healed you for {c.Amount}");
}
case "kill":{
player.Kill();
player.Message($"{c.ExecuterName} has killed you");
}
case "grenade":{
//can't get player pos right now
player.Message($"{c.ExecuterName} has spawned a grenade on you");
}
case "teleport":{
//relative teleport????
player.Message($"{c.ExecuterName} has teleported you {c.Data}");
}
case "speed":{
player.setRunningSpeedMultiplyer(c.Amount);
player.Message($"{c.ExecuterName} has set your speed to {c.Amount}x");
}
case ActionType.Heal:
{
player.Heal(c.Amount);
player.Message($"{c.ExecutorName} has healed you for {c.Amount}");
}
case ActionType.Kill:
{
player.Kill();
player.Message($"{c.ExecutorName} has killed you");
}
case ActionType.Grenade:
{
//can't get player pos right now
player.Message($"{c.ExecutorName} has spawned a grenade on you");
}
case ActionType.Teleport:
{
//relative teleport????
player.Message($"{c.ExecutorName} has teleported you {c.Data}");
}
case ActionType.Speed:
{
player.setRunningSpeedMultiplyer(c.Amount);
player.Message($"{c.ExecutorName} has set your speed to {c.Amount}x");
}
case ActionType.Reveal:
{
//set marker on Map
player.Message($"{c.ExecutorName} has revealed your Position");
}
case ActionType.ChangeAmmo:
{
//set marker on Map
player.Message($"{c.ExecutorName} has set your Ammo to {c.Amount}");
}
}
}
}
}