#include "scripts/common.txt"
#include "scripts/bp_common.txt"
#include "scripts/misc/MenuShop.txt"

class ShopBuyAreaLaser : ScriptObject {
    kActor @self;
	bool wasUsed = false;
	MenuShop menu = MenuShop("Pulse Rifle", "Buy", "Cancel", 1250, MenuSelectCallBack(OnBuy));
	//------------------------------------------------------------------------------------------------------------------------
    ShopBuyAreaLaser(kActor @actor) {
        @self = actor;
		self.Pitch() = Math::Deg2Rad(180);
    }
	//------------------------------------------------------------------------------------------------------------------------
	void OnBuy() {
		kVec3 p = Player.Actor().Origin();
		if (Player.HasWeapon(TW_WEAPON_LASERRIFLE)) {
			kActor @ammo = ActorFactory.Spawn("Ammo_LargeCell_Pickup", p.x, p.y, p.z, 0, Player.Actor().SectorIndex()); //Spawn Ammo
			ammo.Scale() = kVec3(0.35f, 0.35f, 0.35f);
		} else {
			kActor @laser = ActorFactory.Spawn("BP_Wpn_LaserRifle", p.x, p.y, p.z, 0, Player.Actor().SectorIndex()); //Spawn Laser Rifle
			laser.Scale() = kVec3(0.35f, 0.35f, 0.35f);
		}
	}
	//------------------------------------------------------------------------------------------------------------------------
	void OnEnterArea() {
		if (Player.HasWeapon(TW_WEAPON_LASERRIFLE)) {
			menu.SetTopText("Large Cell", 50);
		} else {
			menu.SetTopText("Pulse Rifle", 1250);
		}

		SetPlayerFlagNoMovement(true);
		menu.Open();
	}
	//------------------------------------------------------------------------------------------------------------------------
	void OnExitArea() {
	}
	//------------------------------------------------------------------------------------------------------------------------
    void OnTick(void) {
		menu.Update();
			
		if (InRadius(self.Origin(), 50.0f) and Player.Actor().OnGround()) {
			if (!wasUsed) {
				wasUsed = true;
				OnEnterArea();
			}
		} else {
			if (wasUsed) {
				wasUsed = false;
				OnExitArea();
			}
		}
    }
	//------------------------------------------------------------------------------------------------------------------------
    void OnSpawn(void) {		
    }
	//------------------------------------------------------------------------------------------------------------------------
};
