Initial Android commit
This commit is contained in:
commit
1e2b80c13d
8521 changed files with 231475 additions and 0 deletions
343
scripts/Singletons/ProgressAchievementsSingleton.gd
Normal file
343
scripts/Singletons/ProgressAchievementsSingleton.gd
Normal file
|
@ -0,0 +1,343 @@
|
|||
extends Node
|
||||
|
||||
var achievePath = OS.get_user_data_dir() + "/achievements.json";
|
||||
|
||||
var achieveObject = {}
|
||||
|
||||
func _ready():
|
||||
Init();
|
||||
MakeSureArraysExist();
|
||||
|
||||
func Init():
|
||||
var fileObj = File.new();
|
||||
|
||||
if not (fileObj.file_exists(achievePath)):
|
||||
CreateAchieve();
|
||||
else :
|
||||
fileObj.open(achievePath, File.READ);
|
||||
var content = fileObj.get_as_text();
|
||||
Deserialize(content);
|
||||
|
||||
fileObj.close();
|
||||
|
||||
func MakeSureArraysExist():
|
||||
var keys = ["cats", "minigame", "seenCharacters", "profileTexts", "deathAchievements", "sexAchievements", "killerAchievement", "yellowDeathAchievement", "numberDeathAchievement", ]
|
||||
var shouldUpdate = false;
|
||||
for i in keys:
|
||||
if not achieveObject.has(i):
|
||||
achieveObject[i] = [];
|
||||
shouldUpdate = true;
|
||||
|
||||
if shouldUpdate:
|
||||
SaveToFile();
|
||||
|
||||
|
||||
func CreateAchieve():
|
||||
achieveObject = {
|
||||
"cats":[],
|
||||
"minigame":[],
|
||||
"seenCharacters":[],
|
||||
"profileTexts":[],
|
||||
"deathAchievements":[],
|
||||
"sexAchievements":[],
|
||||
"killerAchievement":[],
|
||||
"yellowDeathAchievement":[],
|
||||
"numberDeathAchievement":[],
|
||||
}
|
||||
SaveToFile();
|
||||
|
||||
func Deserialize(fileContent):
|
||||
achieveObject = str2var(fileContent);
|
||||
|
||||
func SaveToFile():
|
||||
var fileObj = File.new()
|
||||
fileObj.open(achievePath, File.WRITE)
|
||||
var content = var2str(achieveObject);
|
||||
fileObj.store_string(content);
|
||||
fileObj.close();
|
||||
|
||||
func AddCat(catNumber:int)->int:
|
||||
if not catNumber in achieveObject["cats"]:
|
||||
achieveObject["cats"].push_back(catNumber);
|
||||
SaveToFile();
|
||||
return achieveObject["cats"].size();
|
||||
|
||||
return - 1;
|
||||
|
||||
func GetMinigameClues():
|
||||
return achieveObject["minigame"];
|
||||
|
||||
func AddMinigameClue(clue:String)->int:
|
||||
if not clue in achieveObject["minigame"]:
|
||||
achieveObject["minigame"].push_back(clue);
|
||||
SaveToFile();
|
||||
return achieveObject["minigame"].size();
|
||||
|
||||
return - 1;
|
||||
|
||||
|
||||
func SetMinigameVariables():
|
||||
isWindowPressed = Dialogic.get_variable("WindowPressed") == "1";
|
||||
isCasketPressed = Dialogic.get_variable("CasketPressed") == "1";
|
||||
isDrawerPressed = Dialogic.get_variable("DrawerPressed") == "1";
|
||||
isBarrelPressed = Dialogic.get_variable("BarrelPressed") == "1";
|
||||
isClosedTrapdoorPressed = Dialogic.get_variable("ClosedTrapdoorPressed") == "1";
|
||||
|
||||
var isWindowPressed:bool = false;
|
||||
func WindowPressed():
|
||||
isWindowPressed = true;
|
||||
Dialogic.set_variable("WindowPressed", "1");
|
||||
|
||||
func IsWindowPressed()->bool:
|
||||
return isWindowPressed;
|
||||
|
||||
var isCasketPressed:bool = false;
|
||||
func CasketPressed():
|
||||
isCasketPressed = true;
|
||||
Dialogic.set_variable("CasketPressed", "1");
|
||||
|
||||
func IsCasketPressed()->bool:
|
||||
return isCasketPressed;
|
||||
|
||||
var isDrawerPressed:bool = false;
|
||||
func DrawerPressed():
|
||||
isDrawerPressed = true;
|
||||
Dialogic.set_variable("DrawerPressed", "1");
|
||||
|
||||
func IsDrawerPressed()->bool:
|
||||
return isDrawerPressed;
|
||||
|
||||
var isBarrelPressed:bool = false;
|
||||
func BarrelPressed():
|
||||
isBarrelPressed = true;
|
||||
Dialogic.set_variable("BarrelPressed", "1");
|
||||
|
||||
func IsBarrelPressed()->bool:
|
||||
return isBarrelPressed;
|
||||
|
||||
var isClosedTrapdoorPressed:bool = false;
|
||||
func ClosedTrapdoorPressed():
|
||||
isClosedTrapdoorPressed = true;
|
||||
Dialogic.set_variable("ClosedTrapdoorPressed", "1");
|
||||
|
||||
func IsClosedTrapdoorPressed()->bool:
|
||||
return isClosedTrapdoorPressed;
|
||||
|
||||
|
||||
func AddSeenCharacter(character:String):
|
||||
if not character in achieveObject["seenCharacters"]:
|
||||
achieveObject["seenCharacters"].push_back(character);
|
||||
SaveToFile();
|
||||
return
|
||||
|
||||
return
|
||||
|
||||
func AddProfileText(stringText:String):
|
||||
if not stringText in achieveObject["profileTexts"]:
|
||||
achieveObject["profileTexts"].push_back(stringText);
|
||||
SaveToFile();
|
||||
return
|
||||
|
||||
return
|
||||
|
||||
func GetSeenCharacters():
|
||||
return achieveObject["seenCharacters"]
|
||||
|
||||
func IsInSeenCharacters(name:String)->bool:
|
||||
return name in achieveObject["seenCharacters"];
|
||||
|
||||
func GetProfileText():
|
||||
return achieveObject["profileTexts"]
|
||||
|
||||
|
||||
var allDeathAch = [
|
||||
"Fall",
|
||||
"Knife",
|
||||
"Electrocute",
|
||||
"Explosion",
|
||||
"Poison",
|
||||
"Stairs",
|
||||
"Pillow",
|
||||
"Drowned",
|
||||
"Shot_boy",
|
||||
"Shot_girl",
|
||||
]
|
||||
|
||||
|
||||
func AddDeathAchievement(achName):
|
||||
# Steam.set_achievement(achName);
|
||||
|
||||
if not achName in achieveObject["deathAchievements"]:
|
||||
achieveObject["deathAchievements"].push_back(achName);
|
||||
SaveToFile();
|
||||
|
||||
|
||||
for i in allDeathAch:
|
||||
if not i in achieveObject["deathAchievements"]:
|
||||
return ;
|
||||
|
||||
# Steam.set_achievement("Immortal");
|
||||
|
||||
var allSexAch = [
|
||||
"Orange_S",
|
||||
"Green_S",
|
||||
"Pink_S",
|
||||
"Blue_S",
|
||||
"Black_S",
|
||||
"Purple_S",
|
||||
]
|
||||
|
||||
|
||||
func AddSexAchievement(achName):
|
||||
# Steam.set_achievement(achName);
|
||||
|
||||
if not achName in achieveObject["sexAchievements"]:
|
||||
achieveObject["sexAchievements"].push_back(achName);
|
||||
SaveToFile();
|
||||
|
||||
|
||||
for i in allSexAch:
|
||||
if not i in achieveObject["sexAchievements"]:
|
||||
return ;
|
||||
|
||||
# Steam.set_achievement("Don_Juan");
|
||||
|
||||
func AddKillersAchievement(killer):
|
||||
if not killer in achieveObject["killerAchievement"]:
|
||||
achieveObject["killerAchievement"].push_back(killer);
|
||||
SaveToFile();
|
||||
|
||||
var killers = ["Blue", "Pink"];
|
||||
for i in killers:
|
||||
if not i in achieveObject["killerAchievement"]:
|
||||
return ;
|
||||
|
||||
# Steam.set_achievement("Two_killer");
|
||||
|
||||
func AddYellowDeathAchievement(achName):
|
||||
if not achName in achieveObject["yellowDeathAchievement"]:
|
||||
achieveObject["yellowDeathAchievement"].push_back(achName);
|
||||
SaveToFile();
|
||||
|
||||
var deaths = ["Electricity", "Fire"];
|
||||
for i in deaths:
|
||||
if not i in achieveObject["yellowDeathAchievement"]:
|
||||
return ;
|
||||
|
||||
# Steam.set_achievement("Boss_death");
|
||||
|
||||
func AddNumberDeathAchievement(death, boy):
|
||||
var achName = str(death, boy);
|
||||
if not achName in achieveObject["numberDeathAchievement"]:
|
||||
achieveObject["numberDeathAchievement"].push_back(achName);
|
||||
SaveToFile();
|
||||
|
||||
var deaths = CreateNumberDeathCheck();
|
||||
for i in deaths:
|
||||
if not i in achieveObject["numberDeathAchievement"]:
|
||||
return ;
|
||||
|
||||
# Steam.set_achievement("Definitely_not_me");
|
||||
|
||||
var numberDeathCheck = [];
|
||||
func CreateNumberDeathCheck()->Array:
|
||||
if numberDeathCheck.size() != 0:
|
||||
return numberDeathCheck;
|
||||
|
||||
var numberDeath = ["3_Death_Electricity", "4_Death_Fire"];
|
||||
var deathBoys = ["Red", "Yellow", "White", "Blue_M", "Gray"];
|
||||
for i in numberDeath:
|
||||
for j in deathBoys:
|
||||
numberDeathCheck.push_back(str(i, j));
|
||||
|
||||
return numberDeathCheck;
|
||||
|
||||
|
||||
|
||||
var slotLocation = [
|
||||
Vector2(1478, 620),
|
||||
Vector2(2004, 700),
|
||||
Vector2(2504, 712),
|
||||
Vector2(1920, 961),
|
||||
Vector2(2440, 1008),
|
||||
Vector2(1256, 1248),
|
||||
Vector2(1876, 1308),
|
||||
Vector2(2454, 1322),
|
||||
Vector2(1036, 1704),
|
||||
Vector2(1676, 1672),
|
||||
Vector2(2328, 1728),
|
||||
]
|
||||
|
||||
var variables = [
|
||||
{"variable":"Garage", "slot":10},
|
||||
{"variable":"Office", "slot":11},
|
||||
{"variable":"Kamin", "slot":8},
|
||||
{"variable":"Room", "slot":3},
|
||||
{"variable":"Smoking", "slot":2},
|
||||
{"variable":"Kitchen", "slot":1},
|
||||
{"variable":"Stairs", "slot":5},
|
||||
{"variable":"Lighthouse", "slot":7},
|
||||
{"variable":"Cliff", "slot":4},
|
||||
{"variable":"Parking", "slot":9},
|
||||
{"variable":"Pristan", "slot":4},
|
||||
{"variable":"Podval", "slot":6},
|
||||
{"variable":"Prichal", "slot":3},
|
||||
{"variable":"Restaurant", "slot":8},
|
||||
{"variable":"Tropa", "slot":9},
|
||||
];
|
||||
|
||||
var cachedEpilog:Array = [];
|
||||
|
||||
func CreateEpilogMinigameImages()->Array:
|
||||
if cachedEpilog.size() != 0:
|
||||
return cachedEpilog;
|
||||
|
||||
|
||||
var available = {};
|
||||
for i in range(1, 12):
|
||||
available[i] = 0;
|
||||
|
||||
|
||||
for i in variables:
|
||||
if Dialogic.get_variable(i["variable"]) == "1":
|
||||
cachedEpilog.push_back({"name":i["variable"], "status":true, "slot":i["slot"]});
|
||||
available[i["slot"]] += 1;
|
||||
|
||||
|
||||
|
||||
for i in available:
|
||||
if available[i] == 1:
|
||||
continue;
|
||||
|
||||
if available[i] == 2:
|
||||
|
||||
var firstAvailableSlot = FirstAvailableSlot(available);
|
||||
available[firstAvailableSlot] = 1;
|
||||
available[i] = 1;
|
||||
|
||||
|
||||
for j in cachedEpilog:
|
||||
if j["slot"] == i:
|
||||
j["slot"] = firstAvailableSlot;
|
||||
j["location"] = slotLocation[firstAvailableSlot - 1];
|
||||
break
|
||||
|
||||
for i in available:
|
||||
if available[i] == 1:
|
||||
continue;
|
||||
|
||||
|
||||
if available[i] == 0:
|
||||
for j in variables:
|
||||
if j["slot"] == i:
|
||||
cachedEpilog.push_back({"name":j["variable"], "status":false, "slot":j["slot"]});
|
||||
break
|
||||
|
||||
return cachedEpilog;
|
||||
|
||||
func FirstAvailableSlot(dict:Dictionary)->int:
|
||||
for i in dict:
|
||||
var value = dict[i];
|
||||
if value == 0:
|
||||
return i;
|
||||
return 1;
|
Loading…
Add table
Add a link
Reference in a new issue